diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CompareModelofE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CompareModelofE2EServiceInstance.groovy
new file mode 100644
index 0000000..880a44c
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CompareModelofE2EServiceInstance.groovy
@@ -0,0 +1,256 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. 
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.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.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.domain.CompareModelsResult
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MsoLogger
+
+import groovy.json.*
+
+
+/**
+ * This groovy class supports the <class>CompareModelofE2EServiceInstance.bpmn</class> process.
+ *
+ * Inputs:
+ * @param - msoRequestId
+ * @param - globalSubscriberId
+ * @param - subscriptionServiceType
+ * @param - serviceInstanceId
+ * @param - modelInvariantIdTarget
+ * @param - modelVersionIdTarget
+
+ *
+ * Outputs:
+ * @param - WorkflowException
+ */
+public class CompareModelofE2EServiceInstance extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CompareModelofE2EServiceInstance.class);
+
+	String Prefix="CMPMDSI_"
+	private static final String DebugFlag = "isDebugEnabled"
+	
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils()
+
+	public void preProcessRequest (DelegateExecution execution) {
+		execution.setVariable("prefix",Prefix)
+		String msg = ""
+		
+		msoLogger.trace("preProcessRequest Request ")
+	
+		try {
+			// check for incoming json message/input
+			String siRequest = execution.getVariable("bpmnRequest")
+			msoLogger.debug(siRequest)
+			
+	
+			String requestId = execution.getVariable("mso-request-id")
+			execution.setVariable("msoRequestId", requestId)
+			msoLogger.info("Input Request:" + siRequest + " reqId:" + requestId)
+			
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			if (isBlank(serviceInstanceId)) {
+				msg = "Input serviceInstanceId' is null"
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}	
+
+			//subscriberInfo
+			String globalSubscriberId = jsonUtil.getJsonValue(siRequest, "globalSubscriberId")
+			if (isBlank(globalSubscriberId)) {
+				msg = "Input globalSubscriberId' is null"
+				utils.log("INFO", msg, isDebugEnabled)
+			} else {
+				execution.setVariable("globalSubscriberId", globalSubscriberId)
+			}
+	
+			//subscriptionServiceType
+			String subscriptionServiceType = jsonUtil.getJsonValue(siRequest, "serviceType")
+			if (isBlank(subscriptionServiceType)) {
+				msg = "Input subscriptionServiceType is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else {
+				execution.setVariable("serviceType", subscriptionServiceType)
+			}
+	
+			//modelInvariantIdTarget
+			String modelInvariantIdTarget = jsonUtil.getJsonValue(siRequest, "modelInvariantIdTarget")
+			if (isBlank(modelInvariantIdTarget)) {
+				msg = "Input modelInvariantIdTarget' is null"
+				utils.log("INFO", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else {
+				execution.setVariable("modelInvariantIdTarget", modelInvariantIdTarget)
+			}
+	
+			//modelVersionIdTarget
+			String modelVersionIdTarget = jsonUtil.getJsonValue(siRequest, "modelVersionIdTarget")
+			if (isBlank(modelVersionIdTarget)) {
+				msg = "Input modelVersionIdTarget is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else {
+				execution.setVariable("modelVersionIdTarget", modelVersionIdTarget)
+				}
+
+			execution.setVariable("operationType", "CompareModel") 
+	
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit preProcessRequest ")
+	}
+
+	public void sendSyncResponse (DelegateExecution execution) {
+		msoLogger.trace("sendSyncResponse  ")
+
+		try {
+			CompareModelsResult compareModelsResult = execution.getVariable("compareModelsResult")
+			
+			// RESTResponse (for API Handler(APIH) Reply Task)
+			String syncResponse = compareModelsResult.toJsonStringNoRootName()
+			msoLogger.info(" sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse)
+			sendWorkflowResponse(execution, 202, syncResponse)
+
+		} catch (Exception ex) {
+			String msg  = "Exception in sendSyncResponse: " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit sendSyncResopnse ")
+	}
+	
+	public void sendSyncError (DelegateExecution execution) {
+		msoLogger.trace("sendSyncError ")
+
+		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.onap/so/workflow/schema/v1">
+					<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+					<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+				   </aetgt:WorkflowException>"""
+
+			msoLogger.debug(buildworkflowException)
+			sendWorkflowResponse(execution, 500, buildworkflowException)
+
+		} catch (Exception ex) {
+			msoLogger.info(" Sending Sync Error Activity Failed. " + "\n" + ex.getMessage())
+		}
+
+	}
+	
+	public void prepareCompletionRequest (DelegateExecution execution) {
+		msoLogger.trace("prepareCompletion ")
+
+		try {
+			String requestId = execution.getVariable("msoRequestId")
+			String source = execution.getVariable("source")
+			String msoCompletionRequest =
+			"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+								xmlns:ns="http://org.onap/so/request/types/v1">
+						<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+							<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+							<action>COMPAREMODEL</action>
+							<source>${MsoUtils.xmlEscape(source)}</source>
+			   			</request-info>
+						<aetgt:status-message>E2E Service Instance Compare model successfully.</aetgt:status-message>
+			   			<aetgt:mso-bpel-name>CompareModelofE2EServiceInstance</aetgt:mso-bpel-name>
+					</aetgt:MsoCompletionRequest>"""
+
+			// Format Response
+			String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+
+			execution.setVariable("completionRequest", xmlMsoCompletionRequest)
+			msoLogger.info(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest)
+
+		} catch (Exception ex) {
+			String msg = " Exception in prepareCompletion:" + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit prepareCompletionRequest ")
+	}
+	
+	public void prepareFalloutRequest(DelegateExecution execution){
+		msoLogger.trace("prepareFalloutRequest ")
+
+		try {
+			WorkflowException wfex = execution.getVariable("WorkflowException")
+			msoLogger.info(" Input Workflow Exception: " + wfex.toString())
+			String requestId = execution.getVariable("msoRequestId")
+			String source = execution.getVariable("source")
+			String requestInfo =
+			"""<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>COMPAREMODEL</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+
+			String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo)
+			execution.setVariable("falloutRequest", falloutRequest)
+		} catch (Exception ex) {
+			msoLogger.info("Exception prepareFalloutRequest:" + ex.getMessage())
+			String errorException = "  Bpmn error encountered in CompareModelofE2EServiceInstance flow. FalloutHandlerRequest,  buildErrorResponse() - " + ex.getMessage()
+			String requestId = execution.getVariable("msoRequestId")
+			String falloutRequest =
+			"""<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+					                             xmlns:ns="http://org.onap/so/request/types/v1"
+					                             xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
+					   <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					      <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					      <action>COMPAREMODEL</action>
+					      <source>UUI</source>
+					   </request-info>
+						<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+							<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage>
+							<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+						</aetgt:WorkflowException>
+					</aetgt:FalloutHandlerRequest>"""
+
+			execution.setVariable("falloutRequest", falloutRequest)
+		}
+		msoLogger.trace("Exit prepareFalloutRequest ")
+	}
+
+}
+	
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy
new file mode 100644
index 0000000..1034fa2
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy
@@ -0,0 +1,331 @@
+/*-
+ * ============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.onap.so.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.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.springframework.web.util.UriUtils
+
+import groovy.json.*
+
+/**
+ * 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()
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateCustomE2EServiceInstance.class);
+	
+
+	public void preProcessRequest (DelegateExecution execution) {
+		msoLogger.trace("start preProcessRequest")
+		execution.setVariable("prefix",Prefix)
+		String msg = ""
+
+		try {
+			String siRequest = execution.getVariable("bpmnRequest")
+			msoLogger.debug(siRequest)
+
+			String requestId = execution.getVariable("mso-request-id")
+			execution.setVariable("msoRequestId", requestId)
+			msoLogger.debug("Input Request:" + siRequest + " reqId:" + requestId)
+
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			if (isBlank(serviceInstanceId)) {
+				serviceInstanceId = UUID.randomUUID().toString()
+			}
+			msoLogger.debug("Generated new Service Instance:" + serviceInstanceId)
+			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"
+				msoLogger.debug(msg)
+				//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"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else
+			{
+				execution.setVariable("serviceModelInfo", serviceModelInfo)
+			}
+
+			msoLogger.debug("modelInfo: " + serviceModelInfo)
+
+			//requestParameters
+			String subscriptionServiceType = jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.subscriptionServiceType")
+			if (isBlank(subscriptionServiceType)) {
+				msg = "Input subscriptionServiceType is null"
+				msoLogger.debug(msg)
+				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 userParamsList = reqMap.requestDetails?.requestParameters?.userParams
+
+			Map<String, String> inputMap = [:]
+			if (userParamsList) {
+				for (def i=0; i<userParamsList.size(); i++) {
+					def userParams1 = userParamsList.get(i)
+					userParams1.each { param -> inputMap.put(param.key, param.value)}
+				}
+			}
+			
+			msoLogger.debug("User Input Parameters map: " + inputMap.toString())
+			execution.setVariable("serviceInputParams", inputMap)
+			execution.setVariable("uuiRequest", inputMap.get("UUIRequest"))
+			execution.setVariable("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()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("finished preProcessRequest")
+	}
+
+	public void sendSyncResponse (DelegateExecution execution) {
+		msoLogger.trace("start sendSyncResponse")
+		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()
+			msoLogger.debug(" sendSyncResponse to APIH:" + "\n" + createServiceRestRequest)
+			sendWorkflowResponse(execution, 202, createServiceRestRequest)
+			execution.setVariable("sentSyncResponse", true)
+		} catch (Exception ex) {
+			String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("finished sendSyncResponse")
+	}
+
+
+	public void sendSyncError (DelegateExecution execution) {
+		msoLogger.trace("start sendSyncError")
+		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.onap/so/workflow/schema/v1">
+					<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+					<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+				   </aetgt:WorkflowException>"""
+
+			msoLogger.debug(buildworkflowException)
+			sendWorkflowResponse(execution, 500, buildworkflowException)
+
+		} catch (Exception ex) {
+			msoLogger.debug("Sending Sync Error Activity Failed. " + "\n" + ex.getMessage())
+		}
+		msoLogger.trace("finished sendSyncError")
+	}
+
+	public void prepareCompletionRequest (DelegateExecution execution) {
+		msoLogger.trace("start prepareCompletionRequest")
+		try {
+			String requestId = execution.getVariable("msoRequestId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String source = execution.getVariable("source")
+			
+			String msoCompletionRequest =
+					"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+								xmlns:ns="http://org.onap/so/request/types/v1">
+						<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+							<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+							<action>CREATE</action>
+							<source>${MsoUtils.xmlEscape(source)}</source>
+			   			</request-info>
+						<status-message>Service Instance was created successfully.</status-message>
+						<serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
+			   			<mso-bpel-name>CreateGenericALaCarteServiceInstance</mso-bpel-name>
+					</aetgt:MsoCompletionRequest>"""
+
+			// Format Response
+			String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+
+			execution.setVariable("completionRequest", xmlMsoCompletionRequest)
+			msoLogger.debug("Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest)
+
+		} catch (Exception ex) {
+			String msg = " Exception in prepareCompletion:" + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("finished prepareCompletionRequest")
+	}
+
+	public void prepareFalloutRequest(DelegateExecution execution){
+		msoLogger.trace("start prepareFalloutRequest")
+		try {
+			WorkflowException wfex = execution.getVariable("WorkflowException")
+			msoLogger.debug("Input Workflow Exception: " + wfex.toString())
+			String requestId = execution.getVariable("msoRequestId")
+			String source = execution.getVariable("source")
+			String requestInfo =
+					"""<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>CREATE</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+
+			String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo)
+			execution.setVariable("falloutRequest", falloutRequest)
+		} catch (Exception ex) {
+			msoLogger.debug("Exception prepareFalloutRequest:" + ex.getMessage())
+			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.onap/so/workflow/schema/v1"
+					                             xmlns:ns="http://org.onap/so/request/types/v1"
+					                             xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
+					   <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					      <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					      <action>CREATE</action>
+					      <source>UUI</source>
+					   </request-info>
+						<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+							<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage>
+							<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+						</aetgt:WorkflowException>
+					</aetgt:FalloutHandlerRequest>"""
+
+			execution.setVariable("falloutRequest", falloutRequest)
+		}
+		msoLogger.trace("finished prepareFalloutRequest")
+	}
+	
+	/**
+	 * Init the service Operation Status
+	 */
+	public void prepareInitServiceOperationStatus(DelegateExecution execution){
+		msoLogger.trace("start prepareInitServiceOperationStatus")
+        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"
+            msoLogger.debug("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId)
+            serviceId = UriUtils.encode(serviceId,"UTF-8")
+            execution.setVariable("serviceInstanceId", serviceId)
+            execution.setVariable("operationId", operationId)
+            execution.setVariable("operationType", operationType)
+
+            def dbAdapterEndpoint = UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint",execution)
+            execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint)
+            msoLogger.debug("DB Adapter Endpoint is: " + dbAdapterEndpoint)
+
+            String payload =
+                """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                        <soapenv:Header/>
+                        <soapenv:Body>
+                            <ns:updateServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
+                            <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
+                            <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                            <operationType>${MsoUtils.xmlEscape(operationType)}</operationType>
+                            <userId>${MsoUtils.xmlEscape(userId)}</userId>
+                            <result>${MsoUtils.xmlEscape(result)}</result>
+                            <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent>
+                            <progress>${MsoUtils.xmlEscape(progress)}</progress>
+                            <reason>${MsoUtils.xmlEscape(reason)}</reason>
+                        </ns:updateServiceOperationStatus>
+                    </soapenv:Body>
+                </soapenv:Envelope>"""
+
+            payload = utils.formatXml(payload)
+            execution.setVariable("CVFMI_updateServiceOperStatusRequest", payload)
+            msoLogger.debug("Outgoing updateServiceOperStatusRequest: \n" + payload)
+            msoLogger.debug("CreateVfModuleInfra Outgoing updateServiceOperStatusRequest Request: " + payload)
+
+        }catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing prepareInitServiceOperationStatus.", "BPMN", MsoLogger.getServiceName(),
+				MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+            execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during prepareInitServiceOperationStatus Method:\n" + e.getMessage())
+        }
+		msoLogger.trace("finished prepareInitServiceOperationStatus")
+	}
+	
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateGenericALaCarteServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateGenericALaCarteServiceInstance.groovy
new file mode 100644
index 0000000..4405718
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateGenericALaCarteServiceInstance.groovy
@@ -0,0 +1,357 @@
+/*-
+ * ============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.onap.so.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.json.JSONException;
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MsoLogger
+import org.springframework.web.util.UriUtils
+
+import groovy.json.*
+
+/**
+ * This groovy class supports the <class>CreateGenericALaCarteServiceInstance.bpmn</class> process.
+ * AlaCarte flow for 1702 ServiceInstance Create
+ *
+ */
+public class CreateGenericALaCarteServiceInstance extends AbstractServiceTaskProcessor {
+	String Prefix="CRESI_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateGenericALaCarteServiceInstance.class);
+
+	public void preProcessRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		String msg = ""
+
+		try {
+
+			String siRequest = execution.getVariable("bpmnRequest")
+			msoLogger.debug(siRequest)
+
+			String requestId = execution.getVariable("mso-request-id")
+			execution.setVariable("msoRequestId", requestId)
+			msoLogger.debug("Input Request:" + siRequest + " reqId:" + requestId)
+
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			if (isBlank(serviceInstanceId)) {
+				serviceInstanceId = UUID.randomUUID().toString()
+				msoLogger.debug("Generated new Service Instance ID:" + serviceInstanceId)
+			} else {
+				msoLogger.debug("Using provided Service Instance ID:" + serviceInstanceId)
+			}
+
+			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 = null;
+			try { 
+				productFamilyId = jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.productFamilyId")
+			} catch (JSONException e) {
+				productFamilyId = null;
+			}
+			if (isBlank(productFamilyId))
+			{
+				msg = "Input productFamilyId is null"
+				msoLogger.debug(msg)
+				//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"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else
+			{
+				execution.setVariable("serviceModelInfo", serviceModelInfo)
+			}
+
+			msoLogger.debug("modelInfo" + serviceModelInfo)
+		
+			//requestParameters
+			String subscriptionServiceType = jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.subscriptionServiceType")
+			if (isBlank(subscriptionServiceType)) {
+				msg = "Input subscriptionServiceType is null"
+				msoLogger.debug(msg)
+				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())
+				}
+			}
+			
+			msoLogger.debug("User Input Parameters map: " + userParams.toString())
+			execution.setVariable("serviceInputParams", inputMap)
+			
+			//TODO
+			//execution.setVariable("failExists", true)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit preProcessRequest")
+	}
+
+	public void sendSyncResponse (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("Start sendSyncResponse")
+
+		try {
+			String requestId = execution.getVariable("msoRequestId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			// RESTResponse for API Handler (APIH) Reply Task
+			String createServiceRestRequest = """{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim()
+			msoLogger.debug(" sendSyncResponse to APIH:" + "\n" + createServiceRestRequest)
+			sendWorkflowResponse(execution, 202, createServiceRestRequest)
+			execution.setVariable("sentSyncResponse", true)
+
+		} catch (Exception ex) {
+			String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit sendSyncResopnse")
+	}
+
+
+	public void sendSyncError (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("Start sendSyncError")
+
+		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.onap/so/workflow/schema/v1">
+					<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+					<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+				   </aetgt:WorkflowException>"""
+
+			msoLogger.debug(buildworkflowException)
+			sendWorkflowResponse(execution, 500, buildworkflowException)
+
+		} catch (Exception ex) {
+			msoLogger.debug(" Sending Sync Error Activity Failed. " + "\n" + ex.getMessage())
+		}
+
+	}
+
+	// *******************************
+	//
+	// *******************************
+	public void prepareDecomposeService(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("Inside prepareDecomposeService of CreateGenericALaCarteServiceInstance ")
+		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)
+		}
+		msoLogger.trace("Completed prepareDecomposeService of CreateGenericALaCarteServiceInstance")
+	 }
+	 
+	 
+	 // *******************************
+	 //
+	 // *******************************
+	 public void prepareCreateServiceInstance(DelegateExecution execution) {
+		 def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+ 
+		 try {
+			 msoLogger.trace("Inside prepareCreateServiceInstance of CreateGenericALaCarteServiceInstance")
+ 
+			 /*
+			  * 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)
+				 }
+			 }
+			 
+			 msoLogger.debug("User Input Parameters map: " + userParams.toString())
+			 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())
+			 msoLogger.debug("serviceDecomposition.serviceInstanceName: " + serviceDecomposition.getServiceInstance().getInstanceName())
+			 			 
+			 msoLogger.trace("Completed prepareCreateServiceInstance of CreateGenericALaCarteServiceInstance ***** ")
+		 } 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")
+		msoLogger.trace("prepareCompletion *** ")
+
+		try {
+			String requestId = execution.getVariable("msoRequestId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String source = execution.getVariable("source")
+			
+			String msoCompletionRequest =
+					"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+								xmlns:ns="http://org.onap/so/request/types/v1">
+						<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+							<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+							<action>CREATE</action>
+							<source>${MsoUtils.xmlEscape(source)}</source>
+			   			</request-info>
+						<status-message>Service Instance was created successfully.</status-message>
+						<serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
+			   			<mso-bpel-name>CreateGenericALaCarteServiceInstance</mso-bpel-name>
+					</aetgt:MsoCompletionRequest>"""
+
+			// Format Response
+			String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+
+			execution.setVariable("completionRequest", xmlMsoCompletionRequest)
+			msoLogger.debug(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest)
+
+		} catch (Exception ex) {
+			String msg = " Exception in prepareCompletion:" + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit prepareCompletionRequest")
+	}
+
+	public void prepareFalloutRequest(DelegateExecution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("prepareFalloutRequest")
+
+		try {
+			WorkflowException wfex = execution.getVariable("WorkflowException")
+			msoLogger.debug(" Input Workflow Exception: " + wfex.toString())
+			String requestId = execution.getVariable("msoRequestId")
+			String source = execution.getVariable("source")
+			String requestInfo =
+					"""<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>CREATE</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+
+			String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo)
+			execution.setVariable("falloutRequest", falloutRequest)
+		} catch (Exception ex) {
+			msoLogger.debug("Exception prepareFalloutRequest:" + ex.getMessage())
+			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.onap/so/workflow/schema/v1"
+					                             xmlns:ns="http://org.onap/so/request/types/v1"
+					                             xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
+					   <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					      <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					      <action>CREATE</action>
+					      <source>VID</source>
+					   </request-info>
+						<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+							<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage>
+							<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+						</aetgt:WorkflowException>
+					</aetgt:FalloutHandlerRequest>"""
+
+			execution.setVariable("falloutRequest", falloutRequest)
+		}
+		msoLogger.trace("Exit prepareFalloutRequest")
+	}
+}
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateNetworkInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateNetworkInstance.groovy
new file mode 100644
index 0000000..d665de2
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateNetworkInstance.groovy
@@ -0,0 +1,455 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts;
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MsoLogger
+
+import groovy.json.*
+
+/**
+ * This groovy class supports the <class>CreateNetworkInstance.bpmn</class> process.
+ *
+ */
+public class CreateNetworkInstance extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateNetworkInstance.class);
+
+	String Prefix="CRENI_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	
+	public InitializeProcessVariables(DelegateExecution execution){
+		
+		execution.setVariable(Prefix + "source", "")
+		execution.setVariable(Prefix + "Success", false)
+				
+		execution.setVariable(Prefix + "CompleteMsoProcessRequest", "")
+		execution.setVariable(Prefix + "FalloutHandlerRequest", "")
+		execution.setVariable(Prefix + "isSilentSuccess", false)
+		
+	}
+	
+	
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>CreateNetworkInstance.bpmn</class> process.
+	 * @param execution
+	 */
+
+	// **************************************************
+	//     Pre or Prepare Request Section
+	// **************************************************
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>CreateNetworkInstance.bpmn</class> process.
+	 * @param execution
+	 */
+	public void preProcessRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Start preProcessRequest")
+	
+		try {
+			// initialize flow variables
+			InitializeProcessVariables(execution)
+			
+			String sdncVersion = execution.getVariable("sdncVersion")
+			if (sdncVersion == null || sdncVersion == '1610') {				
+				// 'a-la-cart' default, sdncVersion = '1610' 
+				execution.setVariable("sdncVersion", "1610")
+				String bpmnRequest = execution.getVariable("bpmnRequest")
+				// set 'disableRollback'
+				if (bpmnRequest != null) {                                        
+					String disableRollback = jsonUtil.getJsonValue(bpmnRequest, "requestDetails.requestInfo.suppressRollback")
+					if (disableRollback != null) {
+					   execution.setVariable("disableRollback", disableRollback)
+					   msoLogger.debug("Received 'suppressRollback': " + disableRollback )
+					} else {
+					   execution.setVariable("disableRollback", false)
+					}   
+					msoLogger.debug(" Set 'disableRollback' : " + execution.getVariable("disableRollback") )
+				} else {
+					String dataErrorMessage = " Invalid 'bpmnRequest' request."
+					msoLogger.debug(dataErrorMessage)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+				}
+				
+			} else {
+			    // 'macro' TEST ONLY, sdncVersion = '1702'
+			    msoLogger.debug(" 'disableRollback' : " + execution.getVariable("disableRollback") )
+			}	
+			
+			// get/set 'msoRequestId' and 'mso-request-id'
+			String requestId = execution.getVariable("msoRequestId")
+			if (requestId != null) {
+				execution.setVariable("mso-request-id", requestId)
+			} else {
+				requestId = execution.getVariable("mso-request-id")
+			}
+			execution.setVariable(Prefix + "requestId", requestId)
+			
+			// get/set 'requestId'
+			if (execution.getVariable("requestId") == null) {
+				execution.setVariable("requestId", requestId)
+			}
+			
+			//Place holder for additional code.
+
+			// TODO ???
+			// userParams???  1) pre-loads indicator, 2) 'auto-activation'  
+			// Tag/Value parameters
+			//
+			// Map: 'networkInputParams': 'auto-activation''
+			// Sample format? 
+			// "requestParameters": {
+  			//     "userParams": [	
+            //          {
+			//	         "name": "someUserParam1",
+			//	         "value": "someValue1"
+			//          }
+            //     ]
+		    //   }
+			// 
+			// String userParams = //use json util to extract "userParams"// 
+	        // execution.setVariable("networkInputParams", userParams)
+			// else: execution.setVariable("networkInputParams", null)
+			//
+			
+		} catch (BpmnError e) {
+		    throw e;
+			
+		} catch (Exception ex){
+			sendSyncError(execution)
+			 // caught exception
+			String exceptionMessage = "Exception Encountered in CreateNetworkInstance, PreProcessRequest() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+	}
+
+	public void sendSyncResponse (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Start sendSyncResponse")
+
+		try {
+			String requestId = execution.getVariable("mso-request-id")
+
+			// RESTResponse (for API Handler (APIH) Reply Task)
+			String createNetworkRestRequest = """{"requestReferences":{"instanceId":"","requestId":"${requestId}"}}""".trim()
+
+			msoLogger.debug(" sendSyncResponse to APIH - " + "\n" + createNetworkRestRequest)
+			sendWorkflowResponse(execution, 202, createNetworkRestRequest)
+
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in CreateNetworkInstance flow. sendSyncResponse() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+
+	}
+	
+	
+	public void getNetworkModelInfo (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Start getNetworkModelInfo")
+		
+		try {
+			
+			// For Ala-Carte (sdnc = 1610): 
+			// 1. the Network ModelInfo is expected to be sent 
+			//     via requestDetails.modelInfo (modelType = network).
+			// 2. the Service ModelInfo is expected to be sent but will be IGNORE 
+			//     via requestDetails.relatedInstanceList.relatedInstance.modelInfo (modelType = service)
+										 
+		} catch (Exception ex) {
+			sendSyncError(execution)
+		   String exceptionMessage = "Bpmn error encountered in CreateNetworkInstance flow. getNetworkModelInfo() - " + ex.getMessage()
+		   msoLogger.debug(exceptionMessage)
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+			
+		}
+
+	}
+	
+	
+	public void sendSyncError (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Start sendSyncError")
+		
+		try {
+
+			String requestId = execution.getVariable("mso-request-id")
+
+			// REST Error (for API Handler (APIH) Reply Task)
+			String syncError = """{"requestReferences":{"instanceId":"","requestId":"${requestId}"}}""".trim()
+
+			sendWorkflowResponse(execution, 500, syncError)
+
+		} catch (Exception ex) {
+			msoLogger.debug(" Bpmn error encountered in CreateNetworkInstance flow. sendSyncError() - " + ex.getMessage())
+		}
+
+	}
+
+	public void prepareDBRequestError (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+
+		try {
+			msoLogger.trace("Start prepareDBRequestError")
+
+			// set DB Header Authorization
+			setBasicDBAuthHeader(execution, isDebugEnabled)
+			
+			String statusMessage = ""
+			WorkflowException wfe = null
+			if (execution.getVariable("WorkflowException") instanceof WorkflowException) {
+				wfe = execution.getVariable("WorkflowException")
+				statusMessage = wfe.getErrorMessage()
+			}
+			
+			String requestId = execution.getVariable(Prefix + "requestId")
+			String networkName = execution.getVariable("networkName") !=null ? execution.getVariable("networkName") : ""
+			String networkId = execution.getVariable("networkId") !=null ? execution.getVariable("networkId") : ""
+			String dbRequest =
+					"""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+						<soapenv:Header/>
+						<soapenv:Body>
+							<ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb">
+								<requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+								<lastModifiedBy>BPMN</lastModifiedBy>
+								<statusMessage>${MsoUtils.xmlEscape(statusMessage)}</statusMessage>
+								<responseBody></responseBody>
+								<requestStatus>FAILED</requestStatus>
+								<vnfOutputs>&lt;network-id&gt;${MsoUtils.xmlEscape(networkId)}&lt;/network-id&gt;&lt;network-name&gt;${MsoUtils.xmlEscape(networkName)}&lt;/network-names&gt;</vnfOutputs>
+							</ns:updateInfraRequest>
+					   	</soapenv:Body>
+					   </soapenv:Envelope>"""
+
+		   execution.setVariable(Prefix + "createDBRequest", dbRequest)
+		   msoLogger.debug(" DB Adapter Request - " + "\n" + dbRequest)
+		   msoLogger.debug(dbRequest)
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in CreateNetworkInstance flow. prepareDBRequestError() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	 }
+	
+	public void prepareCompletion (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Start prepareCompletion")
+
+		try {
+
+			String requestId = execution.getVariable("mso-request-id")
+			String source = execution.getVariable(Prefix + "source")
+
+			String msoCompletionRequest =
+				"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+								xmlns:ns="http://org.onap/so/request/types/v1">
+						<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+							<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+							<action>CREATE</action>
+							<source>VID</source>
+			   			</request-info>
+						<aetgt:status-message>Network has been created successfully.</aetgt:status-message>
+			   			<aetgt:mso-bpel-name>BPMN Network action: CREATE</aetgt:mso-bpel-name>
+					</aetgt:MsoCompletionRequest>"""
+
+				// Format Response
+			String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+
+			// normal path
+			execution.setVariable(Prefix + "Success", true)
+			execution.setVariable(Prefix + "CompleteMsoProcessRequest", xmlMsoCompletionRequest)
+			msoLogger.debug(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest)
+		
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in CreateNetworkInstance flow. prepareCompletion() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+
+	}
+
+	
+	
+	
+	// **************************************************
+	//     Post or Validate Response Section
+	// **************************************************
+
+	public void postProcessResponse (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+	
+		msoLogger.trace("Start postProcessResponse")
+		
+		try {
+			
+			if (execution.getVariable("CMSO_ResponseCode") == "200") {
+				execution.setVariable(Prefix + "Success", true)
+				msoLogger.trace("CreateNetworkInstance Success ****")
+				//   Place holder for additional code.
+				
+			 } else {
+				execution.setVariable(Prefix + "Success", false)
+				msoLogger.trace("CreateNetworkInstance Failed in CompletionMsoProces flow!. ****")
+			 
+			 }
+				
+	
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in CreateNetworkInstance flow. postProcessResponse() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+	
+	    }
+	
+	}
+
+
+	// *******************************
+	//     Build Error Section
+	// *******************************
+
+	public void processRollbackData (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Start processRollbackData")
+	
+		try {
+			//execution.getVariable("orchestrationStatus")
+			//execution.getVariable("networkId")
+			//execution.getVariable("networkName")
+			//networkOutputParams
+			//rollbackData
+			//rolledBack
+
+		} catch (Exception ex) {
+			msoLogger.debug(" Bpmn error encountered in CreateNetworkInstance flow. callDBCatalog() - " + ex.getMessage())
+		}
+		
+	}
+	
+	// Prepare for FalloutHandler
+	public void buildErrorResponse (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.debug("DB updateInfraRequest ResponseCode: " + execution.getVariable(Prefix + "dbReturnCode"))
+		msoLogger.debug("DB updateInfraRequest Response: " + execution.getVariable(Prefix + "createDBResponse"))
+		
+		msoLogger.trace("Prepare for FalloutHandler. FAILURE - prepare request for sub-process FalloutHandler.")
+
+		String falloutHandlerRequest = ""
+		String requestId = execution.getVariable("mso-request-id")
+
+		try {
+			
+			WorkflowException wfe = execution.getVariable("WorkflowException")
+			String errorCode = String.valueOf(wfe.getErrorCode())
+			String errorMessage = wfe.getErrorMessage()
+			falloutHandlerRequest =
+				"""<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+					                             xmlns:ns="http://org.onap/so/request/types/v1"
+					                             xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
+					   <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					      <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					      <action>CREATE</action>
+					      <source>VID</source>
+					   </request-info>
+						<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+							<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+							<aetgt:ErrorCode>${MsoUtils.xmlEscape(errorCode)}</aetgt:ErrorCode>
+						</aetgt:WorkflowException>
+					</aetgt:FalloutHandlerRequest>"""
+
+			msoLogger.debug(falloutHandlerRequest)
+			execution.setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequest)
+			msoLogger.debug("  Overall Error Response going to FalloutHandler: " + "\n" + falloutHandlerRequest)
+
+		} catch (Exception ex) {
+			String errorException = "  Bpmn error encountered in CreateNetworkInstance flow. FalloutHandlerRequest,  buildErrorResponse()"
+			msoLogger.debug("Exception error in CreateNetworkInstance flow,  buildErrorResponse(): "  + ex.getMessage())
+			falloutHandlerRequest =
+			"""<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+					                             xmlns:ns="http://org.onap/so/request/types/v1"
+					                             xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
+					   <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					      <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					      <action>CREATE</action>
+					      <source>VID</source>
+					   </request-info>
+						<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+							<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage>
+							<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+						</aetgt:WorkflowException>
+					</aetgt:FalloutHandlerRequest>"""
+
+			execution.setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequest)
+			msoLogger.debug("  Overall Error Response going to FalloutHandler: " + "\n" + falloutHandlerRequest)
+
+		}
+
+	}
+	
+	public void processJavaException(DelegateExecution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		try{
+			msoLogger.debug("Caught a Java Exception in " + Prefix)
+			msoLogger.debug("Started processJavaException Method")
+			msoLogger.debug("Variables List: " + execution.getVariables())
+			execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
+			
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during processJavaException Method: " + e)
+			execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix)
+		}
+		msoLogger.debug("Completed processJavaException Method in " + Prefix)
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy
new file mode 100644
index 0000000..1c0975f
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy
@@ -0,0 +1,327 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.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.json.JSONObject
+import org.json.XML;
+import org.onap.so.bpmn.common.recipe.ResourceInput;
+import org.onap.so.bpmn.common.resource.ResourceRequestBuilder 
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor 
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MsoLogger
+
+import groovy.json.*
+
+/**
+ * This groovy class supports the <class>CreateSDNCCNetworkResource.bpmn</class> process.
+ * flow for SDNC Network Resource Create
+ */
+public class CreateSDNCNetworkResource extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateSDNCNetworkResource.class);
+
+    String Prefix="CRESDNCRES_"
+            
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+    JsonUtils jsonUtil = new JsonUtils()
+    
+    public void preProcessRequest(DelegateExecution execution){
+        msoLogger.trace("Started preProcessRequest ")
+        try {           
+            
+            //get bpmn inputs from resource request.
+            String requestId = execution.getVariable("mso-request-id")
+            String requestAction = execution.getVariable("requestAction")
+            msoLogger.info("The requestAction is: " + requestAction)
+            String recipeParamsFromRequest = execution.getVariable("recipeParams")
+            msoLogger.info("The recipeParams is: " + recipeParamsFromRequest)
+            String resourceInput = execution.getVariable("resourceInput")
+            msoLogger.info("The resourceInput is: " + resourceInput)
+            //Get ResourceInput Object
+            ResourceInput resourceInputObj = ResourceRequestBuilder.getJsonObject(resourceInput, ResourceInput.class)
+            execution.setVariable(Prefix + "resourceInput", resourceInputObj)
+            
+            //Deal with recipeParams
+            String recipeParamsFromWf = execution.getVariable("recipeParamXsd")
+            String resourceName = resourceInputObj.getResourceInstanceName()            
+            //For sdnc requestAction default is "createNetworkInstance"
+            String operationType = "Network"    
+            if(!StringUtils.isBlank(recipeParamsFromRequest)){
+                //the operationType from worflow(first node) is second priority.
+                operationType = jsonUtil.getJsonValue(recipeParamsFromRequest, "operationType")
+            }
+            if(!StringUtils.isBlank(recipeParamsFromWf)){
+                //the operationType from worflow(first node) is highest priority.
+                operationType = jsonUtil.getJsonValue(recipeParamsFromWf, "operationType")
+            }
+            
+            
+            //For sdnc, generate svc_action and request_action
+            String sdnc_svcAction = "create"
+            if(StringUtils.containsIgnoreCase(resourceInputObj.getResourceInstanceName(), "overlay")){
+                //This will be resolved in R3.
+                sdnc_svcAction ="activate"
+                operationType = "NCINetwork"        
+            }
+            if(StringUtils.containsIgnoreCase(resourceInputObj.getResourceInstanceName(), "underlay")){
+                //This will be resolved in R3.
+                operationType ="Network"
+            }        
+            String sdnc_requestAction = StringUtils.capitalize(sdnc_svcAction) + operationType +"Instance"                    
+            execution.setVariable(Prefix + "svcAction", sdnc_svcAction)        
+            execution.setVariable(Prefix + "requestAction", sdnc_requestAction)
+            execution.setVariable(Prefix + "serviceInstanceId", resourceInputObj.getServiceInstanceId())
+            execution.setVariable("mso-request-id", requestId)
+            execution.setVariable("mso-service-instance-id", resourceInputObj.getServiceInstanceId())
+            //TODO Here build networkrequest
+            
+        } catch (BpmnError e) {
+            throw e;
+        } catch (Exception ex){
+            msg = "Exception in preProcessRequest " + ex.getMessage()
+            msoLogger.debug(msg)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+        }
+    }
+    
+    String customizeResourceParam(String netowrkInputParametersJson) {
+        List<Map<String, Object>> paramList = new ArrayList();
+        JSONObject jsonObject = new JSONObject(netowrkInputParametersJson);
+        Iterator iterator = jsonObject.keys();
+        while (iterator.hasNext()) {
+            String key = iterator.next();
+            HashMap<String, String> hashMap = new HashMap();
+            hashMap.put("name", key);
+            hashMap.put("value", jsonObject.get(key))
+            paramList.add(hashMap)
+        }
+        Map<String, List<Map<String, Object>>> paramMap = new HashMap();
+        paramMap.put("param", paramList);
+
+        return  new JSONObject(paramMap).toString();
+    }
+    
+    /**
+     * Pre Process the BPMN Flow Request
+     * Inclouds:
+     * generate the nsOperationKey
+     * generate the nsParameters
+     */
+    public void prepareSDNCRequest (DelegateExecution execution) {
+        msoLogger.trace("Started prepareSDNCRequest ")
+
+        try {
+            // get variables
+            String sdnc_svcAction = execution.getVariable(Prefix + "svcAction")        
+            String sdnc_requestAction = execution.getVariable(Prefix + "requestAction")
+            String sdncCallback = execution.getVariable("URN_mso_workflow_sdncadapter_callback")
+            String createNetworkInput = execution.getVariable(Prefix + "networkRequest")
+
+            String hdrRequestId = execution.getVariable("mso-request-id")
+            String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")
+            String source = execution.getVariable("source")
+            String sdnc_service_id = execution.getVariable(Prefix + "sdncServiceId")
+            ResourceInput resourceInputObj = execution.getVariable(Prefix + "resourceInput")
+            String serviceType = resourceInputObj.getServiceType()
+            String serviceModelInvariantUuid = resourceInputObj.getServiceModelInfo().getModelInvariantUuid()
+            String serviceModelUuid = resourceInputObj.getServiceModelInfo().getModelUuid()
+            String serviceModelVersion = resourceInputObj.getServiceModelInfo().getModelVersion()
+            String serviceModelName = resourceInputObj.getServiceModelInfo().getModelName()
+            String globalCustomerId = resourceInputObj.getGlobalSubscriberId()
+            String modelInvariantUuid = resourceInputObj.getResourceModelInfo().getModelInvariantUuid();
+            String modelCustomizationUuid = resourceInputObj.getResourceModelInfo().getModelCustomizationUuid()
+            String modelUuid = resourceInputObj.getResourceModelInfo().getModelUuid()
+            String modelName = resourceInputObj.getResourceModelInfo().getModelName()
+            String modelVersion = resourceInputObj.getResourceModelInfo().getModelVersion()
+            String resourceInputPrameters = resourceInputObj.getResourceParameters()
+            String netowrkInputParametersJson = jsonUtil.getJsonValue(resourceInputPrameters, "requestInputs")
+            //here convert json string to xml string
+            String netowrkInputParameters = XML.toString(new JSONObject(customizeResourceParam(netowrkInputParametersJson)))
+            // 1. prepare assign topology via SDNC Adapter SUBFLOW call
+            String sndcTopologyCreateRequest =
+                    """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+                                                              xmlns:sdncadapter="http://org.onap.so/workflow/sdnc/adapter/schema/v1" 
+                                                              xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1">
+                                 <sdncadapter:RequestHeader>
+                                    <sdncadapter:RequestId>${MsoUtils.xmlEscape(hdrRequestId)}</sdncadapter:RequestId>
+                                    <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId>
+                                    <sdncadapter:SvcAction>${MsoUtils.xmlEscape(sdnc_svcAction)}</sdncadapter:SvcAction>
+                                    <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+                                    <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+                                    <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+                                 </sdncadapter:RequestHeader>
+                                 <sdncadapterworkflow:SDNCRequestData>
+                                     <request-information>
+                                        <request-id>${MsoUtils.xmlEscape(hdrRequestId)}</request-id>
+                                        <request-action>${MsoUtils.xmlEscape(sdnc_requestAction)}</request-action>
+                                        <source>${MsoUtils.xmlEscape(source)}</source>
+                                        <notification-url></notification-url>
+                                        <order-number></order-number>
+                                        <order-version></order-version>
+                                     </request-information>
+                                     <service-information>
+                                        <service-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-id>
+                                        <subscription-service-type>${MsoUtils.xmlEscape(serviceType)}</subscription-service-type>
+                                        <onap-model-information>
+                                             <model-invariant-uuid>${MsoUtils.xmlEscape(serviceModelInvariantUuid)}</model-invariant-uuid>
+                                             <model-uuid>${MsoUtils.xmlEscape(serviceModelUuid)}</model-uuid>
+                                             <model-version>${MsoUtils.xmlEscape(serviceModelVersion)}</model-version>
+                                             <model-name>${MsoUtils.xmlEscape(serviceModelName)}</model-name>
+                                        </onap-model-information>
+                                        <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+                                        <global-customer-id>${MsoUtils.xmlEscape(globalCustomerId)}</global-customer-id>
+                                     </service-information>
+                                     <network-information>
+                                        <onap-model-information>
+                                             <model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-uuid>
+                                             <model-customization-uuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</model-customization-uuid>
+                                             <model-uuid>${MsoUtils.xmlEscape(modelUuid)}</model-uuid>
+                                             <model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version>
+                                             <model-name>${MsoUtils.xmlEscape(modelName)}</model-name>
+                                        </onap-model-information>
+                                     </network-information>
+                                     <network-request-input>
+                                       <network-input-parameters>${MsoUtils.xmlEscape(netowrkInputParameters)}</network-input-parameters>
+                                     </network-request-input>
+                                </sdncadapterworkflow:SDNCRequestData>
+                             </aetgt:SDNCAdapterWorkflowRequest>""".trim()
+            
+            String sndcTopologyCreateRequesAsString = utils.formatXml(sndcTopologyCreateRequest)
+            msoLogger.debug(sndcTopologyCreateRequesAsString)
+            execution.setVariable("sdncAdapterWorkflowRequest", sndcTopologyCreateRequesAsString)
+            msoLogger.debug("sdncAdapterWorkflowRequest - " + "\n" +  sndcTopologyCreateRequesAsString)
+
+        } catch (Exception ex) {
+            String exceptionMessage = " Bpmn error encountered in CreateSDNCCNetworkResource flow. prepareSDNCRequest() - " + ex.getMessage()
+            msoLogger.debug(exceptionMessage)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+        }
+       msoLogger.trace("Exit prepareSDNCRequest ")
+	}
+
+    private void setProgressUpdateVariables(DelegateExecution execution, String body) {
+        def dbAdapterEndpoint = execution.getVariable("URN_mso_adapters_openecomp_db_endpoint")
+        execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint)
+        execution.setVariable("CVFMI_updateResOperStatusRequest", body)
+    }
+
+    public void prepareUpdateBeforeCreateSDNCResource(DelegateExecution execution) {
+        ResourceInput resourceInputObj = execution.getVariable(Prefix + "resourceInput")
+        String operType = resourceInputObj.getOperationType()
+        String resourceCustomizationUuid = resourceInputObj.getResourceModelInfo().getModelCustomizationUuid()
+        String ServiceInstanceId = resourceInputObj.getServiceInstanceId()
+        String operationId = resourceInputObj.getOperationId()
+        String progress = "20"
+        String status = "processing"
+        String statusDescription = "SDCN resource creation invoked"
+
+        execution.getVariable("operationId")
+
+        String body = """
+                <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                        <soapenv:Header/>
+                <soapenv:Body>
+                    <ns:updateResourceOperationStatus>
+                               <operType>${MsoUtils.xmlEscape(operType)}</operType>
+                               <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                               <progress>${MsoUtils.xmlEscape(progress)}</progress>
+                               <resourceTemplateUUID>${MsoUtils.xmlEscape(resourceCustomizationUuid)}</resourceTemplateUUID>
+                               <serviceId>${MsoUtils.xmlEscape(ServiceInstanceId)}</serviceId>
+                               <status>${MsoUtils.xmlEscape(status)}</status>
+                               <statusDescription>${MsoUtils.xmlEscape(statusDescription)}</statusDescription>
+                    </ns:updateResourceOperationStatus>
+                </soapenv:Body>
+                </soapenv:Envelope>""";
+
+        setProgressUpdateVariables(execution, body)
+
+    }
+
+    public void prepareUpdateAfterCreateSDNCResource(execution) {
+        ResourceInput resourceInputObj = execution.getVariable(Prefix + "resourceInput")
+        String operType = resourceInputObj.getOperationType()
+        String resourceCustomizationUuid = resourceInputObj.getResourceModelInfo().getModelCustomizationUuid()
+        String ServiceInstanceId = resourceInputObj.getServiceInstanceId()
+        String operationId = resourceInputObj.getOperationId()
+        String progress = "100"
+        String status = "finished"
+        String statusDescription = "SDCN resource creation completed"
+
+        execution.getVariable("operationId")
+
+        String body = """
+                <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                        <soapenv:Header/>
+                <soapenv:Body>
+                    <ns:updateResourceOperationStatus>
+                               <operType>${MsoUtils.xmlEscape(operType)}</operType>
+                               <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                               <progress>${MsoUtils.xmlEscape(progress)}</progress>
+                               <resourceTemplateUUID>${MsoUtils.xmlEscape(resourceCustomizationUuid)}</resourceTemplateUUID>
+                               <serviceId>${MsoUtils.xmlEscape(ServiceInstanceId)}</serviceId>
+                               <status>${MsoUtils.xmlEscape(status)}</status>
+                               <statusDescription>${MsoUtils.xmlEscape(statusDescription)}</statusDescription>
+                    </ns:updateResourceOperationStatus>
+                </soapenv:Body>
+                </soapenv:Envelope>""";
+
+        setProgressUpdateVariables(execution, body)
+    }
+
+    public void postCreateSDNCCall(DelegateExecution execution){
+        msoLogger.trace("Started prepareSDNCRequest ")
+        String responseCode = execution.getVariable(Prefix + "sdncCreateReturnCode")
+        String responseObj = execution.getVariable(Prefix + "SuccessIndicator")
+        
+        msoLogger.info("response from sdnc, response code :" + responseCode + "  response object :" + responseObj)
+        msoLogger.trace("Exit prepareSDNCRequest ")
+    }
+    
+	public void sendSyncResponse (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** sendSyncResponse *** ", isDebugEnabled)
+
+		try {
+			String operationStatus = "finished"
+			// RESTResponse for main flow
+			String resourceOperationResp = """{"operationStatus":"${operationStatus}"}""".trim()
+			utils.log("DEBUG", " sendSyncResponse to APIH:" + "\n" + resourceOperationResp, isDebugEnabled)
+			sendWorkflowResponse(execution, 202, resourceOperationResp)
+			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)
+	}
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy
new file mode 100644
index 0000000..26f1283
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy
@@ -0,0 +1,326 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - SO
+ * ================================================================================
+ * 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.onap.so.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.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor 
+import org.onap.so.bpmn.common.scripts.ExceptionUtil 
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.json.JsonUtils 
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.onap.so.rest.RESTClient 
+import org.onap.so.rest.RESTConfig
+
+import groovy.json.*
+
+/**
+ * This groovy class supports the <class>DoCreateVFCNetworkServiceInstance.bpmn</class> process.
+ * flow for VFC Network Service Create
+ */
+public class CreateVFCNSResource extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateVFCNSResource.class);
+
+
+    String vfcUrl = "/vfc/rest/v1/vfcadapter"
+            
+    String host = "http://mso.mso.testlab.openecomp.org:8080"
+    
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+    JsonUtils jsonUtil = new JsonUtils()
+
+    /**
+     * CreateVFCNSResource
+     * Pre Process the BPMN Flow Request
+     * Inclouds:
+     * generate the nsOperationKey
+     * generate the nsParameters
+     */
+    public void preProcessRequest (DelegateExecution execution) {
+        JsonUtils jsonUtil = new JsonUtils()
+
+       String msg = ""
+       msoLogger.trace("preProcessRequest() ")
+       try {
+           //deal with nsName and Description
+           String resourceInput = execution.getVariable("resourceInput")
+
+           String resourceParameters = jsonUtil.getJsonValue(resourceInput, "resourceParameters")
+           // get service name
+           String resourceName = jsonUtil.getJsonValue(resourceInput, "resourceInstanceName")
+           execution.setVariable("nsServiceName", resourceName)
+
+           String nsServiceDescription = execution.getVariable("nsServiceDescription")
+           msoLogger.info("nsServiceName:" + resourceName + " nsServiceDescription:" + nsServiceDescription)
+           //deal with operation key
+           String globalSubscriberId = jsonUtil.getJsonValue(resourceInput, "globalSubscriberId")
+           msoLogger.info("globalSubscriberId:" + globalSubscriberId)
+           //set local globalSubscriberId variable
+           execution.setVariable("globalSubscriberId", globalSubscriberId);
+           String serviceType = execution.getVariable("serviceType")
+           msoLogger.info("serviceType:" + serviceType)
+
+           String serviceId = execution.getVariable("serviceInstanceId")
+           msoLogger.info("serviceId:" + serviceId)
+
+           String operationId = jsonUtil.getJsonValue(resourceInput, "operationId")
+           msoLogger.info("serviceType:" + serviceType)
+
+           String nodeTemplateUUID = jsonUtil.getJsonValue(resourceInput, "resourceModelInfo.modelCustomizationUuid")
+           String nsServiceModelUUID = jsonUtil.getJsonValue(resourceParameters, "requestInputs.nsd0_providing_service_uuid")
+           msoLogger.info("nodeTemplateUUID:" + nodeTemplateUUID)
+           /*
+            * segmentInformation needed as a object of segment
+            * {
+            *     "domain":"",
+            *     "nodeTemplateName":"",
+            *     "nodeType":"",
+            *     "nsParameters":{
+            *       //this is the nsParameters sent to VF-C
+            *     }
+            * }
+            */
+           String nsParameters = jsonUtil.getJsonValue(resourceInput, "resourceParameters")
+           msoLogger.info("nsParameters:" + nsParameters)
+           String nsOperationKey = """{
+                   "globalSubscriberId":"${globalSubscriberId}",
+                   "serviceType":"${serviceType}",
+                   "serviceId":"${serviceId}",
+                   "operationId":"${operationId}",
+                   "nodeTemplateUUID":"${nodeTemplateUUID}"
+                    }"""
+           execution.setVariable("nsOperationKey", nsOperationKey);
+           execution.setVariable("nsParameters", nsParameters)
+           execution.setVariable("nsServiceModelUUID", nsServiceModelUUID);
+           
+
+       } catch (BpmnError e) {
+           throw e;
+       } catch (Exception ex){
+           msg = "Exception in preProcessRequest " + ex.getMessage()
+           msoLogger.info(msg)
+           exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+       }
+       msoLogger.trace("Exit preProcessRequest ")
+	}
+
+    /**
+     * create NS task
+     */
+    public void createNetworkService(DelegateExecution execution) {
+        msoLogger.trace("createNetworkService ")
+        String nsOperationKey = execution.getVariable("nsOperationKey");
+        String nsServiceModelUUID = execution.getVariable("nsServiceModelUUID");
+        String nsParameters = execution.getVariable("nsParameters");
+        String nsServiceName = execution.getVariable("nsServiceName")
+        String nsServiceDescription = execution.getVariable("nsServiceDescription")
+        String locationConstraints = jsonUtil.getJsonValue(nsParameters, "locationConstraints")
+        String requestInputs = jsonUtil.getJsonValue(nsParameters, "requestInputs")
+        String reqBody ="""{
+                "nsServiceName":"${nsServiceName}",
+                "nsServiceDescription":"${nsServiceDescription}",
+                "nsServiceModelUUID":"${nsServiceModelUUID}",
+                "nsOperationKey":${nsOperationKey},
+                "nsParameters":{
+                     "locationConstraints":${locationConstraints},
+                     "additionalParamForNs":${requestInputs}
+                }
+               }"""
+        APIResponse apiResponse = postRequest(execution, host + vfcUrl + "/ns", reqBody)
+        String returnCode = apiResponse.getStatusCode()
+        String aaiResponseAsString = apiResponse.getResponseBodyAsString()
+        String nsInstanceId = "";
+        if(returnCode== "200" || returnCode == "201"){
+            nsInstanceId =  jsonUtil.getJsonValue(aaiResponseAsString, "nsInstanceId")
+        }
+        execution.setVariable("nsInstanceId", nsInstanceId)
+        msoLogger.info(" *****Exit  createNetworkService *****")
+    }
+
+    /**
+     * instantiate NS task
+     */
+    public void instantiateNetworkService(DelegateExecution execution) {
+        msoLogger.trace("instantiateNetworkService ")
+        String nsOperationKey = execution.getVariable("nsOperationKey");
+        String nsParameters = execution.getVariable("nsParameters");
+        String nsServiceName = execution.getVariable("nsServiceName")
+        String nsServiceDescription = execution.getVariable("nsServiceDescription")
+        String reqBody ="""{
+        "nsServiceName":"${nsServiceName}",
+        "nsServiceDescription":"${nsServiceDescription}",
+        "nsOperationKey":${nsOperationKey},
+        "nsParameters":${nsParameters}
+       }"""
+        String nsInstanceId = execution.getVariable("nsInstanceId")
+        String url = host + vfcUrl + "/ns/" +nsInstanceId + "/instantiate"
+        APIResponse apiResponse = postRequest(execution, url, reqBody)
+        String returnCode = apiResponse.getStatusCode()
+        String aaiResponseAsString = apiResponse.getResponseBodyAsString()
+        String jobId = "";
+        if(returnCode== "200"|| returnCode == "201"){
+            jobId =  jsonUtil.getJsonValue(aaiResponseAsString, "jobId")
+        }
+        execution.setVariable("jobId", jobId)
+        msoLogger.info(" *****Exit  instantiateNetworkService *****")
+    }
+
+    /**
+     * query NS task
+     */
+    public void queryNSProgress(DelegateExecution execution) {
+        msoLogger.trace("queryNSProgress ")
+        String jobId = execution.getVariable("jobId")
+        String nsOperationKey = execution.getVariable("nsOperationKey");
+        String url = host + vfcUrl + "/jobs/" + jobId
+        APIResponse apiResponse = postRequest(execution, url, nsOperationKey)
+        String returnCode = apiResponse.getStatusCode()
+        String aaiResponseAsString = apiResponse.getResponseBodyAsString()
+        String operationStatus = "error"
+        if(returnCode== "200"|| returnCode == "201"){
+            operationStatus = jsonUtil.getJsonValue(aaiResponseAsString, "responseDescriptor.status")
+        }
+        execution.setVariable("operationStatus", operationStatus)
+        msoLogger.info(" *****Exit  queryNSProgress *****")
+    }
+
+    /**
+     * delay 5 sec 
+     */
+    public void timeDelay(DelegateExecution execution) {
+        try {
+            Thread.sleep(5000);
+        } catch(InterruptedException e) {           
+            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Time Delay exception" + e , "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "");
+        }
+    }
+
+    /**
+     * finish NS task
+     */
+    public void addNSRelationship(DelegateExecution execution) {
+        msoLogger.trace("addNSRelationship ")
+        String nsInstanceId = execution.getVariable("nsInstanceId")
+        if(nsInstanceId == null || nsInstanceId == ""){
+            msoLogger.info(" create NS failed, so do not need to add relationship")
+            return
+        }
+        String globalSubscriberId = execution.getVariable("globalSubscriberId")
+        String serviceType = execution.getVariable("serviceType")
+        String serviceId = execution.getVariable("serviceInstanceId")
+        String addRelationPayload = """<relationship xmlns="http://org.openecomp.aai.inventory/v11">
+                                            <related-to>service-instance</related-to>
+                                            <related-link>/aai/v11/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${serviceType}/service-instances/service-instance/${nsInstanceId}</related-link>
+                                            <relationship-data>
+                                                <relationship-key>customer.global-customer-id</relationship-key>
+                                                <relationship-value>${MsoUtils.xmlEscape(globalSubscriberId)}</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>service-subscription.service-type</relationship-key>
+                                                <relationship-value>${MsoUtils.xmlEscape(serviceType)}</relationship-value>
+                                            </relationship-data>
+                                           <relationship-data>
+                                                <relationship-key>service-instance.service-instance-id</relationship-key>
+                                                <relationship-value>${MsoUtils.xmlEscape(nsInstanceId)}</relationship-value>
+                                            </relationship-data>           
+                                        </relationship>"""
+        String endpoint = execution.getVariable("URN_aai_endpoint")  
+        msoLogger.info("Add Relationship req:\n" + addRelationPayload)
+        String url = endpoint + "/aai/v11/business/customers/customer/" + globalSubscriberId + "/service-subscriptions/service-subscription/" + serviceType + "/service-instances/service-instance/" + serviceId + "/relationship-list/relationship"
+        APIResponse aaiRsp = executeAAIPutCall(execution, url, addRelationPayload)
+        msoLogger.info("aai response status code:" + aaiRsp.getStatusCode())
+        msoLogger.info("aai response content:" + aaiRsp.getResponseBodyAsString())
+        msoLogger.info(" *****Exit addNSRelationship *****")
+    }
+    
+    public APIResponse executeAAIPutCall(DelegateExecution execution, String url, String payload){
+        msoLogger.trace("Started Execute AAI Put Process ") 
+        APIResponse apiResponse = null
+        try{
+            String uuid = utils.getRequestID()
+            msoLogger.info("Generated uuid is: " + uuid) 
+            msoLogger.info("URL to be used is: " + url) 
+            String userName = execution.getVariable("URN_aai_auth")
+            String password = execution.getVariable("URN_mso_msoKey")
+            String basicAuthCred = utils.getBasicAuth(userName,password)
+            RESTConfig config = new RESTConfig(url);
+            RESTClient client = new RESTClient(config).addHeader("X-FromAppId", "MSO").addHeader("X-TransactionId", uuid).addHeader("Content-Type", "application/xml").addHeader("Accept","application/xml");
+            if (basicAuthCred != null && !"".equals(basicAuthCred)) {
+                client.addAuthorizationHeader(basicAuthCred)
+            }
+            apiResponse = client.httpPut(payload)
+            msoLogger.trace("Completed Execute AAI Put Process ") 
+        }catch(Exception e){
+            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception occured while executing AAI Put Call.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, e); 
+            throw new BpmnError("MSOWorkflowException")
+        }
+        return apiResponse
+    }
+
+    /**
+     * post request
+     * url: the url of the request
+     * requestBody: the body of the request
+     */
+    private APIResponse postRequest(DelegateExecution execution, String url, String requestBody){
+        msoLogger.trace("Started Execute VFC adapter Post Process ")
+        msoLogger.info("url:"+url +"\nrequestBody:"+ requestBody)
+        APIResponse apiResponse = null
+        try{
+            RESTConfig config = new RESTConfig(url);
+            RESTClient client = new RESTClient(config).addHeader("Content-Type", "application/json").addHeader("Accept","application/json").addHeader("Authorization","Basic QlBFTENsaWVudDpwYXNzd29yZDEk");
+            apiResponse = client.httpPost(requestBody)
+            msoLogger.info("response code:"+ apiResponse.getStatusCode() +"\nresponse body:"+ apiResponse.getResponseBodyAsString())    
+            msoLogger.trace("Completed Execute VF-C adapter Post Process ")
+        }catch(Exception e){
+            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception occured while executing AAI Post Call.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, e);
+            throw new BpmnError("MSOWorkflowException")
+        }        
+        return apiResponse
+    }
+    
+	public void sendSyncResponse (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** sendSyncResponse *** ", isDebugEnabled)
+
+		try {
+			String operationStatus = execution.getVariable("operationStatus")
+			// RESTResponse for main flow
+			String resourceOperationResp = """{"operationStatus":"${operationStatus}"}""".trim()
+			utils.log("DEBUG", " sendSyncResponse to APIH:" + "\n" + resourceOperationResp, isDebugEnabled)
+			sendWorkflowResponse(execution, 202, resourceOperationResp)
+			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)
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy
new file mode 100644
index 0000000..308c935
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy
@@ -0,0 +1,620 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts;
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.aai.domain.yang.v12.GenericVnf;
+import org.onap.appc.client.lcm.model.Action
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor;
+import org.onap.so.bpmn.common.scripts.ExceptionUtil;
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils;
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.bpmn.infrastructure.aai.AAICreateResources;
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
+
+public class CreateVfModuleInfra extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateVfModuleInfra.class);
+
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	private AbstractServiceTaskProcessor taskProcessor
+	
+	public SDNCAdapterUtils(AbstractServiceTaskProcessor taskProcessor) {
+		this.taskProcessor = taskProcessor
+	}	
+
+	/**
+	 * Validates the request message and sets up the workflow.
+	 * @param execution the execution
+	 */
+	public void preProcessRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessRequest(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.debug('Started ' + method)
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		
+		execution.setVariable("CVFMI_sentSyncResponse", false)
+		
+		def prefix = 'CVFMI_'
+		execution.setVariable('prefix', prefix)
+		execution.setVariable("isVidRequest", "false")
+
+		def rollbackData = execution.getVariable("RollbackData")
+		if (rollbackData == null) {
+			rollbackData = new RollbackData()
+		}
+		execution.setVariable("RollbackData", rollbackData)
+		
+		def incomingRequest = execution.getVariable('bpmnRequest')
+		msoLogger.debug("Incoming Infra Request: " + incomingRequest)
+		msoLogger.debug("CreateVfModule Infra incoming Request: " + incomingRequest)
+
+		setBasicDBAuthHeader(execution, isDebugLogEnabled)
+		
+		// check if request is xml or json
+		try {
+			def jsonSlurper = new JsonSlurper()
+			def jsonOutput = new JsonOutput()
+			Map reqMap = jsonSlurper.parseText(incomingRequest)
+			msoLogger.debug(" Request is in JSON format.")
+
+			def serviceInstanceId = execution.getVariable('serviceInstanceId')
+			def vnfId = execution.getVariable('vnfId')
+			
+			execution.setVariable(prefix + 'serviceInstanceId', serviceInstanceId)
+			execution.setVariable(prefix+'vnfId', vnfId)
+			execution.setVariable("isVidRequest", "true")
+			
+			def vnfName = ''
+			def asdcServiceModelVersion = ''
+			def serviceModelInfo = null
+			def vnfModelInfo = null
+			
+			def relatedInstanceList = reqMap.requestDetails?.relatedInstanceList
+						
+			if (relatedInstanceList != null) {
+				relatedInstanceList.each {
+					if (it.relatedInstance.modelInfo?.modelType == 'service') {
+						asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion
+						serviceModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo)
+						
+					}
+					if (it.relatedInstance.modelInfo.modelType == 'vnf') {
+						vnfName = it.relatedInstance.instanceName ?: ''
+						vnfModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo)
+					}
+				}
+			}
+			
+			execution.setVariable(prefix + 'vnfName', vnfName)
+			execution.setVariable(prefix + 'asdcServiceModelVersion', asdcServiceModelVersion)
+			execution.setVariable(prefix + 'serviceModelInfo', serviceModelInfo)
+			execution.setVariable(prefix + 'vnfModelInfo', vnfModelInfo)
+			
+			
+			def vnfType = execution.getVariable('vnfType')
+			execution.setVariable(prefix + 'vnfType', vnfType)	
+			def vfModuleId = execution.getVariable('vfModuleId')
+			execution.setVariable(prefix + 'vfModuleId', vfModuleId)
+			def volumeGroupId = execution.getVariable('volumeGroupId')
+			execution.setVariable(prefix + 'volumeGroupId', volumeGroupId)
+			def userParams = reqMap.requestDetails?.requestParameters?.userParams					
+			
+			Map<String, String> userParamsMap = [:]
+			if (userParams != null) {
+				userParams.each { userParam ->
+					userParamsMap.put(userParam.name, userParam.value.toString())
+				}							
+			}		
+						
+			msoLogger.debug('Processed user params: ' + userParamsMap)		
+			
+			execution.setVariable(prefix + 'vfModuleInputParams', userParamsMap)
+			
+			def isBaseVfModule = "false"
+			if (execution.getVariable('isBaseVfModule') == true) {
+				isBaseVfModule = "true"
+			}			
+			
+			execution.setVariable(prefix + 'isBaseVfModule', isBaseVfModule)
+						
+			def requestId = execution.getVariable("mso-request-id")
+			execution.setVariable(prefix + 'requestId', requestId)
+			
+			def vfModuleModelInfo = jsonOutput.toJson(reqMap.requestDetails?.modelInfo)
+			execution.setVariable(prefix + 'vfModuleModelInfo', vfModuleModelInfo)
+			
+			def suppressRollback = reqMap.requestDetails?.requestInfo?.suppressRollback
+			
+			
+			def backoutOnFailure = ""
+			if(suppressRollback != null){
+				if ( suppressRollback == true) {
+					backoutOnFailure = "false"
+				} else if ( suppressRollback == false) {
+					backoutOnFailure = "true"
+				}
+			}
+			
+			execution.setVariable('disableRollback', suppressRollback)
+			
+			def vfModuleName = reqMap.requestDetails?.requestInfo?.instanceName ?: null
+			execution.setVariable(prefix + 'vfModuleName', vfModuleName)
+			
+			def serviceId = reqMap.requestDetails?.requestParameters?.serviceId ?: ''
+			execution.setVariable(prefix + 'serviceId', serviceId)
+			
+			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)
+			def tenantId = cloudConfiguration.tenantId
+			execution.setVariable(prefix + 'tenantId', tenantId)
+			
+			def globalSubscriberId = reqMap.requestDetails?.subscriberInfo?.globalSubscriberId ?: ''
+			execution.setVariable(prefix + 'globalSubscriberId', globalSubscriberId)
+			
+			execution.setVariable(prefix + 'sdncVersion', '1702')
+
+			execution.setVariable("CreateVfModuleInfraSuccessIndicator", false)
+			execution.setVariable("RollbackCompleted", false)
+			
+			execution.setVariable("isDebugLogEnabled", isDebugLogEnabled)
+			
+			
+			def source = reqMap.requestDetails?.requestInfo?.source
+			execution.setVariable("CVFMI_source", source)
+			
+			//For Completion Handler & Fallout Handler
+			String requestInfo =
+			"""<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>CREATE</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+			
+			execution.setVariable("CVFMI_requestInfo", requestInfo)
+			
+			//backoutOnFailure
+			
+			execution.setVariable("CVFMI_originalWorkflowException", null)
+			
+
+			def newVfModuleId = UUID.randomUUID().toString()
+			execution.setVariable("newVfModuleId", newVfModuleId)
+			execution.setVariable(prefix + 'vfModuleId', newVfModuleId)
+			execution.setVariable('actionHealthCheck', Action.HealthCheck)
+			execution.setVariable('actionConfigScaleOut', Action.ConfigScaleOut)
+			execution.setVariable('controllerType', "APPC")
+			def controllerType = execution.getVariable('controllerType')
+			execution.setVariable(prefix + 'controllerType', controllerType)
+			execution.setVariable('healthCheckIndex0', 0)
+
+			msoLogger.debug('RequestInfo: ' + execution.getVariable("CVFMI_requestInfo"))			
+			
+			msoLogger.debug('rollbackEnabled: ' + execution.getVariable("CVFMI_rollbackEnabled"))
+
+			msoLogger.trace('Finished ' + method)
+		} catch (BpmnError bpmnError) {
+			throw bpmnError
+		}
+		catch(groovy.json.JsonException je) {
+			msoLogger.debug("Request is not in JSON format.")
+			exceptionUtil.buildAndThrowWorkflowException(execution, 400, "Internal Error - During PreProcessRequest")
+		}
+		catch(Exception e) {
+			String restFaultMessage = e.getMessage()
+			//execution.setVariable("CVFMODVOL2_RESTFault", restFaultMessage)
+			//execution.setVariable("CVFMODVOL2_isDataOk", false)
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered - " + "\n" + restFaultMessage, "BPMN", MsoLogger.getServiceName(),
+				MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 400, "Internal Error - During PreProcessRequest")
+		}
+
+	}
+
+	/**
+	 * Validates a workflow response.
+	 * @param execution the execution
+	 * @param responseVar the execution variable in which the response is stored
+	 * @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(DelegateExecution execution, String responseVar,
+			String responseCodeVar, String errorResponseVar) {
+		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+		sdncAdapterUtils.validateSDNCResponse(execution, responseVar, responseCodeVar, errorResponseVar)
+	}
+
+
+	/**
+	 * Sends the empty, synchronous response back to the API Handler.
+	 * @param execution the execution
+	 */
+	public void sendResponse(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.sendResponse(' +
+			'execution=' + execution.getId() +
+			')'
+		
+		msoLogger.trace('Started ' + method)
+
+		try {
+			def requestInfo = execution.getVariable('CVFMI_requestInfo')
+			def requestId = execution.getVariable('CVFMI_requestId')
+			def source = execution.getVariable('CVFMI_source')			
+			
+			// RESTResponse (for API Handler (APIH) Reply Task)
+			def newVfModuleId = execution.getVariable("newVfModuleId")
+			String synchResponse = """{"requestReferences":{"instanceId":"${newVfModuleId}","requestId":"${requestId}"}}""".trim()
+
+			sendWorkflowResponse(execution, 200, synchResponse)
+
+			execution.setVariable("CVFMI_sentSyncResponse", true)
+			msoLogger.debug("CreateVfModule Infra Response: " + synchResponse)
+			msoLogger.trace('Finished ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered ", "BPMN", MsoLogger.getServiceName(),
+				MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Query AAI for vnf orchestration status to determine if health check and config scaling should be run
+	 */
+	public void queryAAIForVnfOrchestrationStatus(DelegateExecution execution) {
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		def vnfId = execution.getVariable("CVFMI_vnfId")
+		execution.setVariable("runHealthCheck", false);
+		execution.setVariable("runConfigScaleOut", false);
+		AAICreateResources aaiCreateResources = new AAICreateResources();
+		Optional<GenericVnf> vnf = aaiCreateResources.getVnfInstance(vnfId);
+		if(vnf.isPresent()){
+			def vnfOrchestrationStatus = vnf.get().getOrchestrationStatus();
+			if("active".equalsIgnoreCase(vnfOrchestrationStatus)){
+				execution.setVariable("runHealthCheck", false);
+				execution.setVariable("runConfigScaleOut", true);
+			}
+		}
+	}
+	
+	/**
+	 * Retrieve data for ConfigScaleOut from SDNC topology
+	 */
+	
+	public void retreiveConfigScaleOutData(DelegateExecution execution){
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		def vfModuleId = execution.getVariable("CVFMI_vfModuleId")
+		String ipAddress = "";
+		String oamIpAddress = "";
+		String vnfHostIpAddress = "";
+
+		String vnfGetSDNC = execution.getVariable("DCVFM_getSDNCAdapterResponse");
+
+		String data = utils.getNodeXml(vnfGetSDNC, "response-data")
+		data = data.replaceAll("&lt;", "<")
+		data = data.replaceAll("&gt;", ">")
+
+		InputSource source = new InputSource(new StringReader(data));
+		DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
+		docFactory.setNamespaceAware(true)
+		DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
+		Document responseXml = docBuilder.parse(source)
+
+		NodeList paramsList = responseXml.getElementsByTagNameNS("*", "vnf-parameters")
+		for (int z = 0; z < paramsList.getLength(); z++) {
+			Node node = paramsList.item(z)
+			Element eElement = (Element) node
+			String vnfParameterName = utils.getElementText(eElement, "vnf-parameter-name")
+			String vnfParameterValue = utils.getElementText(eElement, "vnf-parameter-value")
+			if (vnfParameterName.equals("vlb_private_ip_1")) {
+				vnfHostIpAddress = vnfParameterValue
+			}
+			else if (vnfParameterName.equals("vdns_private_ip_0")) {
+				ipAddress = vnfParameterValue
+			}
+			else if (vnfParameterName.equals("vdns_private_ip_1")) {			
+				oamIpAddress = vnfParameterValue
+			}
+		}
+
+		String payload = "{\"request-parameters\":{\"vnf-host-ip-address\":\"" + vnfHostIpAddress + "\",\"vf-module-id\":\"" + vfModuleId + "\"},\"configuration-parameters\":{\"ip-addr\":\"" + ipAddress +"\", \"oam-ip-addr\":\""+ oamIpAddress +"\",\"enabled\":\"true\"}}"
+		execution.setVariable("payload", payload);
+	}
+
+	/**
+	 *
+	 * @param execution the execution
+	 */
+	public void postProcessResponse(DelegateExecution execution){
+		msoLogger.trace("STARTED PostProcessResponse Process")
+		try{			
+			def requestInfo = execution.getVariable("CVFMI_requestInfo")
+			def action = utils.getNodeText(requestInfo, "action")
+
+			msoLogger.debug("requestInfo is: " + requestInfo)
+			msoLogger.debug("action is: " + action)
+
+			String payload =
+					"""  <aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+                               xmlns:ns="http://org.onap/so/request/types/v1"
+                               xmlns:ns8="http://org.onap/so/workflow/schema/v1">
+			<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+			${requestInfo}
+			</request-info>
+			<ns8:status-message>Vf Module has been created successfully.</ns8:status-message>
+			<ns8:mso-bpel-name>BPMN</ns8:mso-bpel-name>
+			</aetgt:MsoCompletionRequest>"""
+
+			payload = utils.formatXml(payload)
+			execution.setVariable("CVFMI_SuccessFlag", true)
+			execution.setVariable("CVFMI_msoCompletionRequest", payload)
+			msoLogger.debug("CreateVfModuleInfra completion request: " + payload)
+			msoLogger.debug("Outgoing MsoCompletionRequest: \n" + payload)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Occured Processing PostProcessResponse - " + "\n", "BPMN", MsoLogger.getServiceName(),
+				MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			execution.setVariable("CVFMI_ErrorResponse", "Error Occured during PostProcessResponse Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED PostProcessResponse Process")
+	}
+
+
+
+
+
+	/**
+	 * Validates the request, request id and service instance id.  If a problem is found,
+	 * a WorkflowException is generated and an MSOWorkflowException event is thrown. This
+	 * method also sets up the log context for the workflow.
+	 * @param execution the execution
+	 * @return the validated request
+	 */
+	public String validateInfraRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.validateInfraRequest(' +
+			'execution=' + execution.getId() +
+			')'
+		
+		msoLogger.trace('Started ' + method)
+
+		String processKey = getProcessKey(execution);
+		def prefix = execution.getVariable("prefix")
+
+		if (prefix == null) {
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " prefix is null")
+		}
+
+		try {
+			def request = execution.getVariable(prefix + 'Request')
+
+			if (request == null) {
+				request = execution.getVariable(processKey + 'Request')
+
+				if (request == null) {
+					request = execution.getVariable('bpmnRequest')
+				}
+
+				setVariable(execution, processKey + 'Request', null);
+				setVariable(execution, 'bpmnRequest', null);
+				setVariable(execution, prefix + 'Request', request);
+			}
+
+			if (request == null) {
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request is null")
+			}
+
+			/*
+
+			def requestId = execution.getVariable("mso-request-id")
+
+			if (requestId == null) {
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request has no mso-request-id")
+			}
+
+			setVariable(execution, prefix + 'requestId', requestId)
+
+			def serviceInstanceId = execution.getVariable("mso-service-instance-id")
+
+			if (serviceInstanceId == null) {
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request message has no mso-service-instance-id")
+			}
+
+			utils.logContext(requestId, serviceInstanceId)
+			*/
+			msoLogger.debug("CreateVfModule incoming request: " + request)
+			msoLogger.debug('Incoming message: ' + System.lineSeparator() + request)
+			msoLogger.trace('Finished ' + method)
+			return request
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Caught exception in " + method , "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Invalid Message")
+		}
+	}
+
+	public void prepareUpdateInfraRequest(DelegateExecution execution){
+		msoLogger.trace("STARTED prepareUpdateInfraRequest Process")
+		try{
+			
+			String requestInfo = execution.getVariable("CVFMI_requestInfo")			
+			def aicCloudRegion	= execution.getVariable("CVFMI_lcpCloudRegionId")
+			def tenantId = execution.getVariable("CVFMI_tenantId")
+			def requestId = utils.getNodeText(requestInfo, "request-id")
+			def vnfId = execution.getVariable("CVFMI_vnfId")
+			def vfModuleId = execution.getVariable("CVFMI_vfModuleId")
+			// vfModuleName may be generated by DoCreateVfModule subprocess if it is not specified on the input
+			def vfModuleName = execution.getVariable("CVFMI_vfModuleName")
+
+			def dbAdapterEndpoint = UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint",execution)
+			execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint)
+			msoLogger.debug("DB Adapter Endpoint is: " + dbAdapterEndpoint)
+
+			String payload =
+				"""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+						xmlns:ns="http://org.onap.so/requestsdb">
+						<soapenv:Header/>
+						<soapenv:Body>
+							<ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb">
+							<requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+							<lastModifiedBy>BPMN</lastModifiedBy>
+							<statusMessage>VF Module successfully created</statusMessage>
+							<responseBody></responseBody>
+							<requestStatus>COMPLETE</requestStatus>
+							<progress>100</progress>
+							<vnfOutputs>&lt;vnf-outputs xmlns="http://org.onap/so/infra/vnf-request/v1" xmlns:aetgt="http://org.onap/so/infra/vnf-request/v1" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"&gt;&lt;vnf-id&gt;${MsoUtils.xmlEscape(vnfId)}&lt;/vnf-id&gt;&lt;vf-module-id&gt;${MsoUtils.xmlEscape(vfModuleId)}&lt;/vf-module-id&gt;&lt;/vnf-outputs&gt;</vnfOutputs>
+							<vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId>
+							<vfModuleName>${MsoUtils.xmlEscape(vfModuleName)}</vfModuleName>
+						</ns:updateInfraRequest>
+					</soapenv:Body>
+				</soapenv:Envelope>"""
+
+			payload = utils.formatXml(payload)
+			execution.setVariable("CVFMI_updateInfraRequest", payload)
+			msoLogger.debug("Outgoing UpdateInfraRequest: \n" + payload)
+			msoLogger.debug("CreateVfModuleInfra Outgoing UpdateInfra Request: " + payload)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing prepareUpdateInfraRequest.", "BPMN", MsoLogger.getServiceName(),
+				MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during prepareUpdateInfraRequest Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED prepareUpdateInfraRequest Process")
+	}
+
+	/**
+	 * 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 +
+			')'
+		
+		msoLogger.trace("Started " + method)
+
+
+		try {
+			def WorkflowException workflowException = execution.getVariable("WorkflowException")			
+			def requestInformation = execution.getVariable("CVFMI_requestInfo")
+			def errorResponseCode = workflowException.getErrorCode()
+			def errorResponseMsg = workflowException.getErrorMessage()
+			def encErrorResponseMsg = ""
+			if (errorResponseMsg != null) {
+				encErrorResponseMsg = errorResponseMsg
+			}
+
+			String content = """
+				<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+						xmlns:reqtype="http://org.onap/so/request/types/v1"
+						xmlns:msoservtypes="http://org.onap/so/request/types/v1"
+						xmlns:structuredtypes="http://org.onap/so/structured/types/v1">
+						${requestInformation}
+					<aetgt:WorkflowException>
+						<aetgt:ErrorMessage>${MsoUtils.xmlEscape(encErrorResponseMsg)}</aetgt:ErrorMessage>
+						<aetgt:ErrorCode>${MsoUtils.xmlEscape(errorResponseCode)}</aetgt:ErrorCode>
+					</aetgt:WorkflowException>
+				</aetgt:FalloutHandlerRequest>
+			"""
+
+			msoLogger.debug("CONTENT before translation: " + content)
+			content = utils.formatXml(content)
+			msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content)
+			msoLogger.debug("CreateVfModuleInfra FallOutHander Request: " + content)
+			execution.setVariable(resultVar, content)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Caught exception in " + method , "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildWorkflowException(execution, 2000, 'Internal Error')
+		}
+	}
+
+	public void logAndSaveOriginalException(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.validateRollbackResponse(' +
+			'execution=' + execution.getId() +
+			')'
+		msoLogger.trace('Entered ' + method)
+
+		logWorkflowException(execution, 'CreateVfModuleInfra caught an event')
+		saveWorkflowException(execution, 'CVFMI_originalWorkflowException')
+	}
+
+	public void validateRollbackResponse(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.validateRollbackResponse(' +
+			'execution=' + execution.getId() +
+			')'
+		msoLogger.trace('Entered ' + method)
+		def originalException = execution.getVariable("CVFMI_originalWorkflowException")
+		execution.setVariable("WorkflowException", originalException)
+
+		execution.setVariable("RollbackCompleted", true)
+
+	}
+	
+	public void sendErrorResponse(DelegateExecution execution){
+		msoLogger.trace("STARTED CreateVfModulenfra sendErrorResponse Process")
+		try {
+			def sentSyncResponse = execution.getVariable("CVFMI_sentSyncResponse")
+			if(sentSyncResponse == false){
+				WorkflowException wfex = execution.getVariable("WorkflowException")
+				String response = exceptionUtil.buildErrorResponseXml(wfex)
+				msoLogger.debug(response)
+				sendWorkflowResponse(execution, 500, response)
+			}else{
+				msoLogger.debug("Not Sending Error Response.  Sync Response Already Sent")
+			}
+
+		} catch (Exception ex) {
+			msoLogger.debug("Error Occured in CreateVfModuleInfra sendErrorResponse Process " + ex.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in CreateVfModuleInfra sendErrorResponse Process")
+		}
+		msoLogger.trace("COMPLETED CreateVfModuleInfra sendErrorResponse Process")
+	}
+
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy
new file mode 100644
index 0000000..aa56965
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy
@@ -0,0 +1,356 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.onap.so.bpmn.common.scripts.AaiUtil;
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor;
+import org.onap.so.bpmn.common.scripts.ExceptionUtil;
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+
+import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
+
+class CreateVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor {
+	
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateVfModuleVolumeInfraV1.class);
+	public static final String  prefix='CVMVINFRAV1_'
+
+	/**
+	 * Perform initial processing, such as request validation, initialization of variables, etc.
+	 * * @param execution
+	 */
+	public void preProcessRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		setBasicDBAuthHeader(execution, isDebugEnabled)
+		preProcessRequest(execution, isDebugEnabled)
+	}
+
+
+	/**
+	 * Perform initial processing, such as request validation, initialization of variables, etc.
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void preProcessRequest (DelegateExecution execution, isDebugEnabled) {
+
+		execution.setVariable("prefix",prefix)
+		setSuccessIndicator(execution, false)
+		execution.setVariable(prefix+'syncResponseSent', false)
+
+		String createVolumeIncoming = validateRequest(execution, 'vnfId')
+		msoLogger.debug(createVolumeIncoming)
+
+		try {
+			def jsonSlurper = new JsonSlurper()
+			Map reqMap = jsonSlurper.parseText(createVolumeIncoming)
+			setupVariables(execution, reqMap, isDebugEnabled)
+			msoLogger.debug("XML request:\n" + createVolumeIncoming)
+		}
+		catch(groovy.json.JsonException je) {
+			(new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, 'Request is not a valid JSON document')
+		}
+
+		// For rollback in this flow
+		setBasicDBAuthHeader(execution, isDebugEnabled)
+		setRollbackEnabled(execution, isDebugEnabled)
+	}
+
+	
+	/**
+	 * Set up variables that will be passed to the BB DoCreatevfModuleVolume flow 
+	 * @param execution
+	 * @param requestMap
+	 * @param serviceInstanceId
+	 * @param isDebugLogEnabled
+	 */
+	public void setupVariables(DelegateExecution execution, Map requestMap, isDebugLogEnabled) {
+		
+		def jsonOutput = new JsonOutput()
+		
+		// volumeGroupId - is generated
+		String volumeGroupId = UUID.randomUUID()
+		execution.setVariable('volumeGroupId', volumeGroupId)
+		msoLogger.debug("Generated volumeGroupId: " + volumeGroupId)
+		
+		// volumeGroupName
+		def volGrpName = requestMap.requestDetails.requestInfo?.instanceName ?: ''
+		execution.setVariable('volumeGroupName', volGrpName)
+
+		// vfModuleModelInfo
+		def vfModuleModelInfo = jsonOutput.toJson(requestMap.requestDetails?.modelInfo)
+		execution.setVariable('vfModuleModelInfo', vfModuleModelInfo)
+		
+		// lcpCloudRegonId
+		def lcpCloudRegionId = requestMap.requestDetails.cloudConfiguration.lcpCloudRegionId
+		execution.setVariable('lcpCloudRegionId', lcpCloudRegionId)
+		
+		// tenant
+		def tenantId = requestMap.requestDetails.cloudConfiguration.tenantId
+		execution.setVariable('tenantId', tenantId)
+		
+		// source
+		def source = requestMap.requestDetails.requestInfo.source
+		execution.setVariable(prefix+'source', source)
+		
+		// vnfType and asdcServiceModelVersion
+		
+		def serviceName = ''
+		def asdcServiceModelVersion = ''
+		def modelCustomizationName = ''
+		
+		def relatedInstanceList = requestMap.requestDetails.relatedInstanceList
+		relatedInstanceList.each {
+			if (it.relatedInstance.modelInfo?.modelType == 'service') {
+				serviceName = it.relatedInstance.modelInfo?.modelName
+				asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion
+			}
+			if (it.relatedInstance.modelInfo?.modelType == 'vnf') {
+				modelCustomizationName = it.relatedInstance.modelInfo?.modelCustomizationName
+			}
+		}
+		
+		def vnfType = serviceName + '/' + modelCustomizationName
+		execution.setVariable('vnfType', vnfType)
+		execution.setVariable('asdcServiceModelVersion', asdcServiceModelVersion)
+		
+		// vfModuleInputParams
+		def userParams = requestMap.requestDetails?.requestParameters?.userParams
+		Map<String, String> vfModuleInputMap = [:]
+		
+		userParams.each { userParam ->
+			vfModuleInputMap.put(userParam.name, userParam.value.toString())
+		}
+		execution.setVariable('vfModuleInputParams', vfModuleInputMap)
+
+		// disableRollback (true or false)
+		def disableRollback = requestMap.requestDetails.requestInfo.suppressRollback
+		execution.setVariable('disableRollback', disableRollback)
+		msoLogger.debug('disableRollback (suppressRollback) from request: ' + disableRollback)
+		
+	}
+
+	
+	
+	public void sendSyncResponse (DelegateExecution execution, isDebugEnabled) {
+		def volumeGroupId = execution.getVariable('volumeGroupId')
+		def requestId = execution.getVariable("mso-request-id")
+		def serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+		String syncResponse = """{"requestReferences":{"instanceId":"${volumeGroupId}","requestId":"${requestId}"}}""".trim()
+
+		msoLogger.debug("Sync Response: " + "\n" + syncResponse)
+		sendWorkflowResponse(execution, 200, syncResponse)
+
+		execution.setVariable(prefix+'syncResponseSent', true)
+	}
+
+
+	public void sendSyncError (DelegateExecution execution, isDebugEnabled) {
+		WorkflowException we = execution.getVariable('WorkflowException')
+		def errorCode = we?.getErrorCode()
+		def errorMessage = we?.getErrorMessage()
+		//default to 400 since only invalid request will trigger this method
+		sendWorkflowResponse(execution, 400, errorMessage)
+	}
+
+
+	/**
+	 * Create a WorkflowException
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void buildWorkflowException(DelegateExecution execution, int errorCode, errorMessage, isDebugEnabled) {
+		msoLogger.debug(errorMessage)
+		(new ExceptionUtil()).buildWorkflowException(execution, 2500, errorMessage)
+	}
+
+
+	/**
+	 * Build Infra DB Request
+	 * @param execution
+	 * @param 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."
+		def requestStatus = "COMPLETED"
+		def progress = "100"
+		
+		/*
+		from: $gVolumeGroup/aai:volume-group-id/text()
+		to: vnfreq:volume-outputs/vnfreq:volume-group-id
+		*/
+		// for now assume, generated volumeGroupId is accepted
+		def volumeGroupId = execution.getVariable(prefix+'volumeGroupId')
+
+		String dbRequest =
+			"""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+				<soapenv:Header/>
+				<soapenv:Body>
+					<ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb">
+						<requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+						<lastModifiedBy>BPMN</lastModifiedBy>
+						<statusMessage>${MsoUtils.xmlEscape(statusMessage)}</statusMessage>
+						<responseBody></responseBody>
+						<requestStatus>${MsoUtils.xmlEscape(requestStatus)}</requestStatus>
+						<progress>${MsoUtils.xmlEscape(progress)}</progress>
+						<vnfOutputs>${MsoUtils.xmlEscape(dbVnfOutputs)}</vnfOutputs>
+						<volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId>
+					</ns:updateInfraRequest>
+			   	</soapenv:Body>
+			   </soapenv:Envelope>"""
+
+		String buildDBRequestAsString = utils.formatXml(dbRequest)
+		execution.setVariable(prefix+"createDBRequest", buildDBRequestAsString)
+		msoLogger.debug("DB Infra Request: " + buildDBRequestAsString)
+	}
+
+
+	/**
+	 * Build CommpleteMsoProcess request
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void postProcessResponse (DelegateExecution execution, isDebugEnabled) {
+
+		def dbReturnCode = execution.getVariable(prefix+'dbReturnCode')
+		def createDBResponse =  execution.getVariable(prefix+'createDBResponse')
+
+		msoLogger.debug('DB return code: ' + dbReturnCode)
+		msoLogger.debug('DB response: ' + createDBResponse)
+
+		def requestId = execution.getVariable("mso-request-id")
+		def source = execution.getVariable(prefix+'source')
+
+		String msoCompletionRequest =
+			"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+							xmlns:ns="http://org.onap/so/request/types/v1">
+					<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+						<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+						<action>CREATE</action>
+						<source>${MsoUtils.xmlEscape(source)}</source>
+		   			</request-info>
+					<aetgt:status-message>Volume Group has been created successfully.</aetgt:status-message>
+		   			<aetgt:mso-bpel-name>BPMN VF Module Volume action: CREATE</aetgt:mso-bpel-name>
+				</aetgt:MsoCompletionRequest>"""
+
+		String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+
+		execution.setVariable(prefix+'Success', true)
+		execution.setVariable(prefix+'CompleteMsoProcessRequest', xmlMsoCompletionRequest)
+		msoLogger.debug(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest)
+
+	}
+
+	public void prepareFalloutHandlerRequest(DelegateExecution execution, isDebugEnabled) {
+
+		WorkflowException we = execution.getVariable('WorkflowException')
+		def errorCode = we?.getErrorCode()
+		def errorMessage = we?.getErrorMessage()
+
+		def requestId = execution.getVariable("mso-request-id")
+		def source = execution.getVariable(prefix+'source')
+
+		String falloutHandlerRequest =
+			"""<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+				                             xmlns:ns="http://org.onap/so/request/types/v1"
+				                             xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
+				   <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+				      <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+				      <action>CREATE</action>
+				      <source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>
+					   <aetgt:WorkflowException>
+					      <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+					      <aetgt:ErrorCode>${MsoUtils.xmlEscape(errorCode)}</aetgt:ErrorCode>
+						</aetgt:WorkflowException>
+
+				</aetgt:FalloutHandlerRequest>"""
+
+		// Format Response
+		String xmlHandlerRequest = utils.formatXml(falloutHandlerRequest)
+
+		execution.setVariable(prefix+'FalloutHandlerRequest', xmlHandlerRequest)
+		msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Overall Error Response going to FalloutHandler", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "\n" + xmlHandlerRequest);
+	}
+
+
+	/**
+	 * Query AAI service instance
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void callRESTQueryAAIServiceInstance(DelegateExecution execution, isDebugEnabled) {
+
+		def request = execution.getVariable(prefix+"Request")
+		def serviceInstanceId = utils.getNodeText(request, "service-instance-id")
+
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aaiEndpoint = aaiUtil.getSearchNodesQueryEndpoint(execution)
+
+		def String queryAAIRequest = aaiEndpoint + "?search-node-type=service-instance&filter=service-instance-id:EQUALS:" + serviceInstanceId
+		msoLogger.debug("AAI query service instance request: " + queryAAIRequest)
+
+		APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIRequest)
+
+		String returnCode = response.getStatusCode()
+		String aaiResponseAsString = response.getResponseBodyAsString()
+
+		msoLogger.debug("AAI query service instance return code: " + returnCode)
+		msoLogger.debug("AAI query service instance response: " + aaiResponseAsString)
+
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+		if (returnCode=='200') {
+			msoLogger.debug('Service instance ' + serviceInstanceId + ' found in AAI.')
+		} else {
+			if (returnCode=='404') {
+				def message = 'Service instance ' + serviceInstanceId + ' was not found in AAI. Return code: 404.'
+				msoLogger.debug(message)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, message)
+			} else {
+				WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}
+	}
+	
+	public void logAndSaveOriginalException(DelegateExecution execution, isDebugLogEnabled) {
+		logWorkflowException(execution, 'CreateVfModuleVolumeInfraV1 caught an event')
+		saveWorkflowException(execution, 'CVMVINFRAV1_originalWorkflowException')
+	}
+	
+	public void validateRollbackResponse(DelegateExecution execution, isDebugLogEnabled) {
+
+		def originalException = execution.getVariable("CVMVINFRAV1_originalWorkflowException")
+		execution.setVariable("WorkflowException", originalException)
+		execution.setVariable("RollbackCompleted", true)
+
+	}
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVnfInfra.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVnfInfra.groovy
new file mode 100644
index 0000000..9c25a57
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVnfInfra.groovy
@@ -0,0 +1,542 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import static org.apache.commons.lang3.StringUtils.*;
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor;
+import org.onap.so.bpmn.common.scripts.CatalogDbUtils;
+import org.onap.so.bpmn.common.scripts.ExceptionUtil;
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils;
+import org.onap.so.bpmn.common.scripts.VidUtils;
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.domain.VnfResource
+import org.onap.so.bpmn.core.json.JsonUtils;
+import org.onap.so.bpmn.infrastructure.aai.groovyflows.AAICreateResources;
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+
+/**
+ * This class supports the CreateVnfInfra Flow
+ * with the creation of a generic vnf for
+ * infrastructure.
+ */
+class CreateVnfInfra extends AbstractServiceTaskProcessor {
+	
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateVnfInfra.class);
+	
+
+	String Prefix="CREVI_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils(this)
+	CatalogDbUtils cutils = new CatalogDbUtils()
+	AAICreateResources aaiCR = new AAICreateResources()
+
+	/**
+	 * This method gets and validates the incoming
+	 * request.
+	 *
+	 * @param - execution
+	 *
+	 */
+	public void preProcessRequest(DelegateExecution execution) {
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		msoLogger.trace("STARTED CreateVnfInfra PreProcessRequest Process")
+		
+		setBasicDBAuthHeader(execution, isDebugEnabled)
+		execution.setVariable("CREVI_sentSyncResponse", false)
+
+		try{
+			// Get Variables
+			String createVnfRequest = execution.getVariable("bpmnRequest")
+			execution.setVariable("CREVI_createVnfRequest", createVnfRequest)
+			msoLogger.debug("Incoming CreateVnfInfra Request is: \n" + createVnfRequest)
+
+			if(createVnfRequest != null){
+
+				String requestId = execution.getVariable("mso-request-id")
+				execution.setVariable("CREVI_requestId", requestId)
+				msoLogger.debug("Incoming Request Id is: " + requestId)
+
+				String serviceInstanceId = execution.getVariable("serviceInstanceId")
+				execution.setVariable("CREVI_serviceInstanceId", serviceInstanceId)
+				msoLogger.debug("Incoming Service Instance Id is: " + serviceInstanceId)
+
+				String vnfType = execution.getVariable("vnfType")
+				execution.setVariable("CREVI_vnfType", vnfType)
+				msoLogger.debug("Incoming Vnf Type is: " + vnfType)
+
+				String vnfName = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.requestInfo.instanceName")
+				execution.setVariable("CREVI_vnfName", vnfName)
+				msoLogger.debug("Incoming Vnf Name is: " + vnfName)
+
+				String serviceId = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.requestInfo.productFamilyId")
+				execution.setVariable("CREVI_serviceId", serviceId)
+				msoLogger.debug("Incoming Service Id is: " + serviceId)
+
+				String source = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.requestInfo.source")
+				execution.setVariable("CREVI_source", source)
+				msoLogger.debug("Incoming Source is: " + source)
+
+				String suppressRollback = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.requestInfo.suppressRollback")
+				execution.setVariable("CREVI_suppressRollback", suppressRollback)
+				msoLogger.debug("Incoming Suppress Rollback is: " + suppressRollback)
+				
+				def vnfModelInfo = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.modelInfo")
+				execution.setVariable("CREVI_vnfModelInfo", vnfModelInfo)
+
+				String modelInvariantId = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.modelInfo.modelInvariantUuid")
+				execution.setVariable("CREVI_modelInvariantId", modelInvariantId)
+				msoLogger.debug("Incoming Invariant Id is: " + modelInvariantId)
+
+				String modelVersion = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.modelInfo.modelVersion")
+				execution.setVariable("CREVI_modelVersion", modelVersion)
+				msoLogger.debug("Incoming Model Version is: " + modelVersion)
+				
+				def cloudConfiguration = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.cloudConfiguration")
+				execution.setVariable("CREVI_cloudConfiguration", cloudConfiguration)
+				
+				String cloudSiteId = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.cloudConfiguration.lcpCloudRegionId")
+				execution.setVariable("CREVI_cloudSiteId", cloudSiteId)
+				msoLogger.debug("Incoming Cloud Site Id is: " + cloudSiteId)
+				
+				String tenantId = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.cloudConfiguration.tenantId")
+				execution.setVariable("CREVI_tenantId", tenantId)
+				msoLogger.debug("Incoming Tenant Id is: " + tenantId)
+
+				//For Completion Handler & Fallout Handler
+				String requestInfo =
+				"""<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>CREATE</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+
+				execution.setVariable("CREVI_requestInfo", requestInfo)
+
+				//TODO: Orch Status - TBD, will come from SDN-C Response in 1702
+				String orchStatus = "Created"
+				execution.setVariable("CREVI_orchStatus", orchStatus)
+
+				//TODO: Equipment Role - Should come from SDN-C Response in 1702
+				String equipmentRole = " "
+				execution.setVariable("CREVI_equipmentRole", equipmentRole)
+
+				String vnfId = execution.getVariable("testVnfId") // for junits
+				if(isBlank(vnfId)){
+					vnfId = UUID.randomUUID().toString()
+					msoLogger.debug("Generated Vnf Id is: " + vnfId)
+				}
+				execution.setVariable("CREVI_vnfId", vnfId)
+
+				// Setting for Sub Flow Calls
+				execution.setVariable("CREVI_type", "generic-vnf")
+				execution.setVariable("GENGS_type", "service-instance")
+				
+				String sdncCallbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+				if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) {
+					def msg = 'Required variable \'mso.workflow.sdncadapter.callback\' is missing'
+					msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, msg, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError);
+					
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)
+				}
+				execution.setVariable("CREVI_sdncCallbackUrl", sdncCallbackUrl)
+				
+				def vnfInputParameters = null
+				try {
+					vnfInputParameters = jsonUtil.getJsonValue(createVnfRequest, "requestDetails.requestParameters.userParams")
+				}
+				catch (Exception e) {
+					msoLogger.debug("userParams are not present in the request")
+				}
+				execution.setVariable("CREVI_vnfInputParameters", vnfInputParameters)
+				
+				
+				msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl)
+			}else{
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Incoming Bpmn Request is Null.")
+			}
+
+		}catch(BpmnError b){
+			msoLogger.debug("Rethrowing MSOWorkflowException")
+			throw b
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Error Occurred in CreateVnfInfra PreProcessRequest method", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occurred in CreateVnfInfra PreProcessRequest")
+
+		}
+		msoLogger.trace("COMPLETED CreateVnfInfra PreProcessRequest Process")
+	}
+
+	public void sendSyncResponse (DelegateExecution execution) {
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("STARTED CreateVnfInfra SendSyncResponse Process")
+
+		try {
+			String requestId = execution.getVariable("CREVI_requestId")
+			String vnfId = execution.getVariable("CREVI_vnfId")
+
+			String createVnfResponse = """{"requestReferences":{"instanceId":"${vnfId}","requestId":"${requestId}"}}""".trim()
+
+			msoLogger.debug("CreateVnfInfra Sync Response is: \n"  + createVnfResponse)
+
+			sendWorkflowResponse(execution, 202, createVnfResponse)
+
+			execution.setVariable("CREVI_sentSyncResponse", true)
+
+		} catch (Exception ex) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Error Occurred in CreateVnfInfra SendSyncResponse Process", "BPMN", MsoLogger.getServiceName(),
+				MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in CreateVnfInfra SendSyncResponse Process")
+
+		}
+		msoLogger.trace("COMPLETED CreateVnfInfra SendSyncResponse Process")
+	}
+
+	
+	public void preProcessSDNCAssignRequest(DelegateExecution execution){
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessSDNCAssignRequest")
+		def vnfId = execution.getVariable("CREVI_vnfId")		
+		def serviceInstanceId = execution.getVariable("CREVI_serviceInstanceId")
+		msoLogger.debug("NEW VNF ID: " + vnfId)
+
+		try{
+			//Build SDNC Request
+			
+			String assignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "assign")
+
+			assignSDNCRequest = utils.formatXml(assignSDNCRequest)
+			execution.setVariable("CREVI_assignSDNCRequest", assignSDNCRequest)
+			msoLogger.debug("Outgoing AssignSDNCRequest is: \n" + assignSDNCRequest)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCAssignRequest", "BPMN", MsoLogger.getServiceName(),
+				MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during prepareProvision Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED preProcessSDNCAssignRequest")
+	}
+	
+	public void preProcessSDNCActivateRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessSDNCActivateRequest(' +
+			'execution=' + execution.getId() +
+			')'
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessSDNCActivateRequest Process")
+		try{
+			String vnfId = execution.getVariable("CREVI_vnfId")			
+			String serviceInstanceId = execution.getVariable("CREVI_serviceInstanceId")
+
+			String activateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "activate")
+
+			execution.setVariable("CREVI_activateSDNCRequest", activateSDNCRequest)
+			msoLogger.debug("Outgoing CommitSDNCRequest is: \n" + activateSDNCRequest)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessSDNCActivateRequest", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during  preProcessSDNCActivateRequest Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED  preProcessSDNCActivateRequest Process")
+	}
+	
+	public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
+		
+				String uuid = execution.getVariable('testReqId') // for junits
+				if(uuid==null){
+					uuid = execution.getVariable("mso-request-id") + "-" +  	System.currentTimeMillis()
+				}
+				def callbackURL = execution.getVariable("CREVI_sdncCallbackUrl")
+				def requestId = execution.getVariable("CREVI_requestId")
+				def serviceId = execution.getVariable("CREVI_serviceId")
+				def vnfType = execution.getVariable("CREVI_vnfType")
+				def vnfName = execution.getVariable("CREVI_vnfName")
+				def tenantId = execution.getVariable("CREVI_tenantId")
+				def source = execution.getVariable("CREVI_source")				
+				def vnfId = execution.getVariable("CREVI_vnfId")
+				def cloudSiteId = execution.getVariable("CREVI_cloudSiteId")
+		
+				String sdncVNFParamsXml = ""
+		
+				if(execution.getVariable("CREVI_vnfParamsExistFlag") == true){
+					sdncVNFParamsXml = buildSDNCParamsXml(execution)
+				}else{
+					sdncVNFParamsXml = ""
+				}
+		
+				String sdncRequest =
+				"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+	   <sdncadapter:RequestHeader>
+				<sdncadapter:RequestId>${MsoUtils.xmlEscape(requestId)}</sdncadapter:RequestId>
+				<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId>
+				<sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction>
+				<sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation>
+				<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl>
+		</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+		<request-information>
+			<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+			<request-action>VNFActivateRequest</request-action>
+			<source>${MsoUtils.xmlEscape(source)}</source>
+			<notification-url/>
+		</request-information>
+		<service-information>
+			<service-id>${MsoUtils.xmlEscape(serviceId)}</service-id>
+			<service-type>${MsoUtils.xmlEscape(serviceId)}</service-type>
+			<service-instance-id>${MsoUtils.xmlEscape(svcInstId)}</service-instance-id>
+			<subscriber-name>notsurewecare</subscriber-name>
+		</service-information>
+		<vnf-request-information>			
+			<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+			<vnf-name>${MsoUtils.xmlEscape(vnfName)}</vnf-name>
+			<vnf-type>${MsoUtils.xmlEscape(vnfType)}</vnf-type>
+			<aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region>
+			<tenant>${MsoUtils.xmlEscape(tenantId)}</tenant>
+		${sdncVNFParamsXml}
+		</vnf-request-information>
+	</sdncadapterworkflow:SDNCRequestData>
+	</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+		
+			msoLogger.debug("sdncRequest:  " + sdncRequest)
+			return sdncRequest		
+	}
+		
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method){
+		execution.setVariable("prefix",Prefix)
+		msoLogger.debug("STARTED ValidateSDNCResponse Process")
+
+		WorkflowException workflowException = execution.getVariable("WorkflowException")
+		boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+
+		msoLogger.debug("workflowException: " + workflowException)
+
+		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+		sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+		msoLogger.debug("SDNCResponse: " + response)
+
+		String sdncResponse = response
+		if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+			msoLogger.trace("Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + sdncResponse)
+			
+		}else{
+			msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.")
+			throw new BpmnError("MSOWorkflowException")
+		}
+		msoLogger.trace("COMPLETED ValidateSDNCResponse Process")
+	}
+
+	public void prepareCompletionHandlerRequest(DelegateExecution execution){
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("STARTED CreateVnfInfra PrepareCompletionHandlerRequest Process")
+
+		try {
+			String requestInfo = execution.getVariable("CREVI_requestInfo")
+			String vnfId = execution.getVariable("CREVI_vnfId")
+			requestInfo = utils.removeXmlPreamble(requestInfo)
+
+			String request =
+				"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+									xmlns:ns="http://org.onap/so/request/types/v1">
+							${requestInfo}
+							<status-message>Vnf has been created successfully.</status-message>
+							<vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId>
+							<mso-bpel-name>CreateVnfInfra</mso-bpel-name>
+						</aetgt:MsoCompletionRequest>"""
+
+			execution.setVariable("CREVI_completionHandlerRequest", request)
+			msoLogger.debug("Completion Handler Request is: " + request)
+
+			execution.setVariable("WorkflowResponse", "Success") // for junits
+
+		} catch (Exception ex) {
+			msoLogger.debug("Error Occured in CreateVnfInfra PrepareCompletionHandlerRequest Process " + ex.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in CreateVnfInfra PrepareCompletionHandlerRequest Process")
+
+		}
+		msoLogger.trace("COMPLETED CreateVnfInfra PrepareCompletionHandlerRequest Process")
+	}
+
+	public void sendErrorResponse(DelegateExecution execution){
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("STARTED CreateVnfInfra sendErrorResponse Process")
+		try {
+			def sentSyncResponse = execution.getVariable("CREVI_sentSyncResponse")
+			if(sentSyncResponse == false){
+				WorkflowException wfex = execution.getVariable("WorkflowException")
+				String response = exceptionUtil.buildErrorResponseXml(wfex)
+
+				msoLogger.debug(response)
+				sendWorkflowResponse(execution, 500, response)
+			}else{
+				msoLogger.debug("Not Sending Error Response.  Sync Response Already Sent")
+			}
+
+		} catch (Exception ex) {
+			msoLogger.debug("Error Occured in CreateVnfInfra sendErrorResponse Process " + ex.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in CreateVnfInfra sendErrorResponse Process")
+
+		}
+		msoLogger.trace("COMPLETED CreateVnfInfra sendErrorResponse Process")
+	}
+
+	public void prepareFalloutRequest(DelegateExecution execution){
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("STARTED CreateVnfInfra prepareFalloutRequest Process")
+
+		try {
+			WorkflowException wfex = execution.getVariable("WorkflowException")
+			msoLogger.debug(" Incoming Workflow Exception: " + wfex.toString())
+			String requestInfo = execution.getVariable("CREVI_requestInfo")
+			msoLogger.debug(" Incoming Request Info: " + requestInfo)
+
+			String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo)
+
+			execution.setVariable("CREVI_falloutRequest", falloutRequest)
+
+
+		} catch (Exception ex) {
+			msoLogger.debug("Error Occured in CreateVnfInfra prepareFalloutRequest Process " + ex.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in CreateVnfInfra prepareFalloutRequest Process")
+
+		}
+		msoLogger.trace("COMPLETED CreateVnfInfra prepareFalloutRequest Process")
+	}
+
+	
+	public void queryCatalogDB (DelegateExecution execution) {
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("STARTED CreateVnfInfra QueryCatalogDB Process")
+		try {
+			//Get Vnf Info
+			String vnfModelInfo = execution.getVariable("CREVI_vnfModelInfo")
+			String vnfModelCustomizationUuid = jsonUtil.getJsonValueForKey(vnfModelInfo, "modelCustomizationUuid")
+			msoLogger.debug("querying Catalog DB by vnfModelCustomizationUuid: " + vnfModelCustomizationUuid)
+						
+			JSONArray vnfs = cutils.getAllVnfsByVnfModelCustomizationUuid(execution,
+							vnfModelCustomizationUuid, "v2")
+			msoLogger.debug("obtained VNF list: " + vnfs)
+			
+			if (vnfs == null) {
+				msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "No matching VNFs in Catalog DB for vnfModelCustomizationUuid=" + vnfModelCustomizationUuid, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "");
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "No matching VNFs in Catalog DB for vnfModelCustomizationUuid=" + vnfModelCustomizationUuid)
+			}
+			
+			// Only one match here
+			JSONObject vnf = vnfs.get(0)
+			
+			if (vnf == null) {
+				msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "No matching VNF in Catalog DB for vnfModelCustomizationUuid=" + vnfModelCustomizationUuid, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "");
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "No matching VNF in Catalog DB for vnfModelCustomizationUuid=" + vnfModelCustomizationUuid)
+			}			
+			
+			VnfResource vnfResource = new VnfResource()
+			String nfType = jsonUtil.getJsonValueForKey(vnf, "nfType")
+			vnfResource.setNfType(nfType)
+			String nfRole = jsonUtil.getJsonValueForKey(vnf, "nfRole")
+			vnfResource.setNfRole(nfRole)
+			String nfFunction = jsonUtil.getJsonValueForKey(vnf, "nfFunction")
+			vnfResource.setNfFunction(nfFunction)
+			String nfNamingCode = jsonUtil.getJsonValueForKey(vnf, "nfNamingCode")
+			vnfResource.setNfNamingCode(nfNamingCode)
+			
+			execution.setVariable("CREVI_vnfResourceDecomposition", vnfResource)
+			
+		}catch(BpmnError e) {
+			throw e;			
+		}catch(Exception ex) {
+			msoLogger.debug("Error Occurred in CreateVnfInfra QueryCatalogDB Process " + ex.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occurred in CreateVnfInfra QueryCatalogDB Process")
+		}
+		
+		
+		msoLogger.trace("COMPLETED CreateVnfInfra QueryCatalogDb Process")
+	}
+	public void createPlatform (DelegateExecution execution) {
+		msoLogger.trace("START createPlatform")
+		
+		String request = execution.getVariable("bpmnRequest")
+		String platformName = jsonUtil.getJsonValue(request, "requestDetails.platform.platformName")
+		String vnfId = execution.getVariable("CREVI_vnfId")
+	
+		msoLogger.debug("Platform NAME: " + platformName)
+		msoLogger.debug("VnfID: " + vnfId)
+		
+		if(platformName == null||platformName.equals("")){
+			String msg = "Exception in createPlatform. platformName was not found in the request.";
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}else{
+			msoLogger.debug("platformName was found.")
+			try{
+				AAICreateResources aaiCR = new AAICreateResources()
+				aaiCR.createAAIPlatform(platformName, vnfId)
+			}catch(Exception ex){
+				String msg = "Exception in createPlatform. " + ex.getMessage();
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+			}
+		}
+		msoLogger.trace("Exit createPlatform")
+	}
+	public void createLineOfBusiness (DelegateExecution execution) {
+		msoLogger.trace("START createLineOfBusiness")
+		
+		String request = execution.getVariable("bpmnRequest")
+		String lineOfBusiness = jsonUtil.getJsonValue(request, "requestDetails.lineOfBusiness.lineOfBusinessName")
+		String vnfId = execution.getVariable("CREVI_vnfId")
+	
+		msoLogger.debug("LineOfBusiness NAME: " + lineOfBusiness)
+		msoLogger.debug("VnfID: " + vnfId)
+		
+		if(lineOfBusiness == null || lineOfBusiness.equals("")){
+			msoLogger.debug("LineOfBusiness was not found. Continuing on with flow...")
+		}else{
+			msoLogger.debug("LineOfBusiness was found.")
+			try{
+				AAICreateResources aaiCR = new AAICreateResources()
+				aaiCR.createAAILineOfBusiness(lineOfBusiness, vnfId)
+			}catch(Exception ex){
+				String msg = "Exception in LineOfBusiness. " + ex.getMessage();
+				msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, msg, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+			}
+		}
+		msoLogger.trace("Exit createLineOfBusiness")
+	}
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstance.groovy
new file mode 100644
index 0000000..cbbc518
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstance.groovy
@@ -0,0 +1,386 @@
+/*-
+
+ * ============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.onap.so.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.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MsoLogger
+import org.springframework.web.util.UriUtils;
+
+import groovy.json.*
+
+/**
+ * This groovy class supports the <class>DelE2EServiceInstance.bpmn</class> process.
+ *
+ */
+public class DeleteCustomE2EServiceInstance extends AbstractServiceTaskProcessor {
+
+	String Prefix="DELSI_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils()
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DeleteCustomE2EServiceInstance.class);
+	
+	public void preProcessRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		String msg = ""
+		
+		msoLogger.info("Starting preProcessRequest")
+
+		try {
+			// check for incoming json message/input
+			String siRequest = execution.getVariable("bpmnRequest")
+			msoLogger.debug(siRequest)
+			
+			
+			String requestId = execution.getVariable("mso-request-id")
+			execution.setVariable("msoRequestId", requestId)
+			msoLogger.info("Input Request:" + siRequest + " reqId:" + requestId)
+			
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			if (isBlank(serviceInstanceId)) {
+				msg = "Input serviceInstanceId' is null"
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+		
+				
+			//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, "source")
+			execution.setVariable("source", source)
+			
+			//subscriberInfo
+			String globalSubscriberId = jsonUtil.getJsonValue(siRequest, "globalSubscriberId")
+			if (isBlank(globalSubscriberId)) {
+				msg = "Input globalSubscriberId' is null"
+				msoLogger.info(msg)
+			} else {
+				execution.setVariable("globalSubscriberId", globalSubscriberId)
+			}
+			
+			//requestParameters
+			String subscriptionServiceType = jsonUtil.getJsonValue(siRequest, "serviceType")
+			if (isBlank(subscriptionServiceType)) {
+				msg = "Input subscriptionServiceType is null"
+				msoLogger.debug(msg)
+				//exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else {
+				execution.setVariable("subscriptionServiceType", subscriptionServiceType)
+			}
+			String operationId = jsonUtil.getJsonValue(siRequest, "operationId")
+			execution.setVariable("operationId", operationId)
+			
+			execution.setVariable("operationType", "DELETE") 
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit preProcessRequest")
+	}
+
+	public void sendSyncResponse (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("Staring sendSyncResponse")
+
+		try {
+			String operationId = execution.getVariable("operationId")
+			String syncResponse = """{"operationId":"${operationId}"}""".trim()
+			msoLogger.info("sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse)
+			sendWorkflowResponse(execution, 202, syncResponse)
+
+		} catch (Exception ex) {
+			String msg  = "Exception in sendSyncResponse: " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+		msoLogger.trace("Exit sendSyncResopnse")
+	}
+	
+	public void sendSyncError (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.info("Starting sendSyncError")
+
+		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.onap/so/workflow/schema/v1">
+					<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+					<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+				   </aetgt:WorkflowException>"""
+
+			msoLogger.info(buildworkflowException)
+			sendWorkflowResponse(execution, 500, buildworkflowException)
+
+		} catch (Exception ex) {
+			msoLogger.info("Sending Sync Error Activity Failed. " + "\n" + ex.getMessage())
+		}
+
+	}
+	
+	public void prepareCompletionRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("Starting prepareCompletion")
+
+		try {
+			String requestId = execution.getVariable("msoRequestId")
+			String source = execution.getVariable("source")
+			String msoCompletionRequest =
+			"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+								xmlns:ns="http://org.onap/so/request/types/v1">
+						<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+							<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+							<action>DELETE</action>
+							<source>${MsoUtils.xmlEscape(source)}</source>
+			   			</request-info>
+						<aetgt:status-message>E2E Service Instance was deleted successfully.</aetgt:status-message>
+			   			<aetgt:mso-bpel-name>DeleteCustomE2EServiceInstance</aetgt:mso-bpel-name>
+					</aetgt:MsoCompletionRequest>"""
+
+			// Format Response
+			String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+
+			execution.setVariable("completionRequest", xmlMsoCompletionRequest)
+			msoLogger.info(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest)
+
+		} catch (Exception ex) {
+			String msg = " Exception in prepareCompletion:" + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit prepareCompletionRequest")
+	}
+	
+	public void prepareFalloutRequest(DelegateExecution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("Starting prepareFalloutRequest ")
+
+		try {
+			WorkflowException wfex = execution.getVariable("WorkflowException")
+			msoLogger.info(" Input Workflow Exception: " + wfex.toString())
+			String requestId = execution.getVariable("msoRequestId")
+			String source = execution.getVariable("source")
+			String requestInfo =
+			"""<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>DELETE</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+
+			String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo)
+			execution.setVariable("falloutRequest", falloutRequest)
+		} catch (Exception ex) {
+			msoLogger.info("Exception prepareFalloutRequest:" + ex.getMessage())
+			String errorException = "  Bpmn error encountered in CreateServiceInstance flow. FalloutHandlerRequest,  buildErrorResponse() - " + ex.getMessage()
+			String requestId = execution.getVariable("msoRequestId")
+			String falloutRequest =
+			"""<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+					                             xmlns:ns="http://org.onap/so/request/types/v1"
+					                             xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
+					   <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					      <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					      <action>DELETE</action>
+					      <source>VID</source>
+					   </request-info>
+						<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+							<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage>
+							<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+						</aetgt:WorkflowException>
+					</aetgt:FalloutHandlerRequest>"""
+
+			execution.setVariable("falloutRequest", falloutRequest)
+		}
+		msoLogger.trace("Exit prepareFalloutRequest")
+	}
+	
+
+	// *******************************
+	//     Build DB request Section
+	// *******************************
+	public void prepareDBRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+
+		try {
+			msoLogger.info("Starting prepareDBRequest")
+
+			String requestId = execution.getVariable("DELSI_requestId")
+			String statusMessage = "E2E Service Instance successfully deleted."
+
+			//TODO - verify the format for Service Instance Delete,
+			String dbRequest =
+					"""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+						<soapenv:Header/>
+						<soapenv:Body>
+							<ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb">
+								<requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+								<lastModifiedBy>BPMN</lastModifiedBy>
+								<statusMessage>${MsoUtils.xmlEscape(statusMessage)}</statusMessage>
+								<responseBody></responseBody>
+								<requestStatus>COMPLETED</requestStatus>
+								<progress>100</progress>
+							</ns:updateInfraRequest>
+						   </soapenv:Body>
+					   </soapenv:Envelope>"""
+
+		   String buildDeleteDBRequestAsString = utils.formatXml(dbRequest)
+		   execution.setVariable("DELSI_createDBRequest", buildDeleteDBRequestAsString)
+		  msoLogger.info(buildDeleteDBRequestAsString)
+
+		} catch (Exception ex) {
+			// try error in method block
+			String exceptionMessage = "Bpmn error encountered in DeleteCustomE2EServiceInstance flow. Unexpected Error from method prepareDBRequest() - " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	 }
+
+	// *******************************
+	//     Build Error Section
+	// *******************************
+	public void prepareDBRequestError (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Start prepareDBRequestError")
+
+		try {
+			String requestId = execution.getVariable("DELSI_requestId")
+			String statusMessage = ""
+			if (execution.getVariable("WorkflowException") instanceof WorkflowException) {
+				WorkflowException wfe = execution.getVariable("WorkflowException")
+				statusMessage = wfe.getErrorMessage()
+
+			} else {
+				statusMessage = "Encountered Error during DeleteCustomE2EServiceInstance proccessing. "
+			}
+
+			//TODO - verify the format for Service Instance Create,
+			String dbRequest =
+					"""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+						<soapenv:Header/>
+						<soapenv:Body>
+							<ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb">
+								<requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+								<lastModifiedBy>BPMN</lastModifiedBy>
+								<statusMessage>${MsoUtils.xmlEscape(statusMessage)}</statusMessage>
+								<responseBody></responseBody>
+								<requestStatus>FAILED</requestStatus>
+							</ns:updateInfraRequest>
+						   </soapenv:Body>
+					   </soapenv:Envelope>"""
+
+		   String buildDBRequestAsString = utils.formatXml(dbRequest)
+		   execution.setVariable("DELSI_createDBInfraErrorRequest", buildDBRequestAsString)
+		   msoLogger.info(buildDBRequestAsString)
+
+		} catch (Exception ex) {
+			// try error in method block
+			String exceptionMessage = "Bpmn error encountered in DeleteCustomE2EServiceInstance flow. Unexpected Error from method prepareDBRequestError() - " + ex.getMessage()
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	 }
+
+	public void processJavaException(DelegateExecution execution) {
+		//TODO:
+	}
+
+	/**
+	 * 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 = execution.getVariable("operationId")
+			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")
+
+			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.onap.so/requestsdb">
+                        <soapenv:Header/>
+                        <soapenv:Body>
+                            <ns:updateServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
+                            <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
+                            <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                            <operationType>DELETE</operationType>
+                            <userId>${MsoUtils.xmlEscape(userId)}</userId>
+                            <result>${MsoUtils.xmlEscape(result)}</result>
+                            <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent>
+                            <progress>${MsoUtils.xmlEscape(progress)}</progress>
+                            <reason>${MsoUtils.xmlEscape(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)
+
+		}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/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteGenericALaCarteServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteGenericALaCarteServiceInstance.groovy
new file mode 100644
index 0000000..b43a96b
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteGenericALaCarteServiceInstance.groovy
@@ -0,0 +1,362 @@
+/*-
+ * ============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.onap.so.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.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MsoLogger
+
+import groovy.json.*
+
+/**
+ * This groovy class supports the <class>DelServiceInstance.bpmn</class> process.
+ *
+ */
+public class DeleteGenericALaCarteServiceInstance extends AbstractServiceTaskProcessor {
+
+	String Prefix="DELSI_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils()
+	
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DeleteGenericALaCarteServiceInstance.class);
+	
+	public void preProcessRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		String msg = ""
+		
+		msoLogger.trace("Start preProcessRequest")
+
+		try {
+			// check for incoming json message/input
+			String siRequest = execution.getVariable("bpmnRequest")
+			
+			String requestId = execution.getVariable("mso-request-id")
+			execution.setVariable("msoRequestId", requestId)
+			msoLogger.debug("Input Request:" + siRequest + " reqId:" + requestId)
+			
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			if (isBlank(serviceInstanceId)) {
+				msg = "Input serviceInstanceId' is null"
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+		
+			//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"
+				msoLogger.debug(msg)
+			} else
+			{
+				execution.setVariable("serviceModelInfo", serviceModelInfo)
+				//msoLogger.debug("modelInfo" + serviceModelInfo)
+			}
+			
+			//requestInfo
+			String productFamilyId = jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.productFamilyId")
+			if (isBlank(productFamilyId))
+			{
+				msg = "Input productFamilyId is null"
+				msoLogger.debug(msg)
+				//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, "requestDetails.subscriberInfo.globalSubscriberId")
+			if (isBlank(globalSubscriberId)) {
+				msg = "Input globalSubscriberId' is null"
+				msoLogger.debug(msg)
+			} else {
+				execution.setVariable("globalSubscriberId", globalSubscriberId)
+			}
+			
+			//requestParameters
+			String subscriptionServiceType = jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.subscriptionServiceType")
+			if (isBlank(subscriptionServiceType)) {
+				msg = "Input subscriptionServiceType is null"
+				msoLogger.debug(msg)
+				//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())
+				}
+			}
+			
+			msoLogger.debug("User Input Parameters map: " + userParams.toString())
+			execution.setVariable("serviceInputParams", inputMap)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit preProcessRequest")
+	}
+
+	public void sendSyncResponse (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("Start sendSyncResponse")
+
+		try {
+			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()
+			msoLogger.debug(" sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse)
+			sendWorkflowResponse(execution, 202, syncResponse)
+
+		} catch (Exception ex) {
+			String msg  = "Exception in sendSyncResponse: " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+		msoLogger.trace("Exit sendSyncResopnse")
+	}
+	
+	public void sendSyncError (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("Start sendSyncError")
+
+		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.onap/so/workflow/schema/v1">
+					<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+					<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+				   </aetgt:WorkflowException>"""
+
+			MsoLogger.info(buildworkflowException)
+			sendWorkflowResponse(execution, 500, buildworkflowException)
+
+		} catch (Exception ex) {
+			msoLogger.debug(" Sending Sync Error Activity Failed. " + "\n" + ex.getMessage())
+		}
+
+	}
+	
+	public void prepareCompletionRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("Start prepareCompletion")
+
+		try {
+			String requestId = execution.getVariable("msoRequestId")
+			String source = execution.getVariable("source")
+			String msoCompletionRequest =
+			"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+								xmlns:ns="http://org.onap/so/request/types/v1">
+						<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+							<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+							<action>DELETE</action>
+							<source>${MsoUtils.xmlEscape(source)}</source>
+			   			</request-info>
+						<aetgt:status-message>Service Instance was deleted successfully.</aetgt:status-message>
+			   			<aetgt:mso-bpel-name>DeleteGenericALaCarteServiceInstance</aetgt:mso-bpel-name>
+					</aetgt:MsoCompletionRequest>"""
+
+			// Format Response
+			String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+
+			execution.setVariable("completionRequest", xmlMsoCompletionRequest)
+			msoLogger.debug(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest)
+
+		} catch (Exception ex) {
+			String msg = " Exception in prepareCompletion:" + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit prepareCompletionRequest")
+	}
+	
+	public void prepareFalloutRequest(DelegateExecution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("Start prepareFalloutRequest")
+
+		try {
+			WorkflowException wfex = execution.getVariable("WorkflowException")
+			msoLogger.debug(" Input Workflow Exception: " + wfex.toString())
+			String requestId = execution.getVariable("msoRequestId")
+			String source = execution.getVariable("source")
+			String requestInfo =
+			"""<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>DELETE</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+
+			String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo)
+			execution.setVariable("falloutRequest", falloutRequest)
+		} catch (Exception ex) {
+			msoLogger.debug("Exception prepareFalloutRequest:" + ex.getMessage())
+			String errorException = "  Bpmn error encountered in CreateServiceInstance flow. FalloutHandlerRequest,  buildErrorResponse() - " + ex.getMessage()
+			String requestId = execution.getVariable("msoRequestId")
+			String falloutRequest =
+			"""<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+					                             xmlns:ns="http://org.onap/so/request/types/v1"
+					                             xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
+					   <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					      <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					      <action>DELETE</action>
+					      <source>VID</source>
+					   </request-info>
+						<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+							<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage>
+							<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+						</aetgt:WorkflowException>
+					</aetgt:FalloutHandlerRequest>"""
+
+			execution.setVariable("falloutRequest", falloutRequest)
+		}
+		msoLogger.trace("Exit prepareFalloutRequest ")
+	}
+	
+
+	// *******************************
+	//     Build DB request Section
+	// *******************************
+	public void prepareDBRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+
+		try {
+			msoLogger.trace("Inside prepareDBRequest of DeleteGenericALaCarteServiceInstance ")
+
+			String requestId = execution.getVariable("DELSI_requestId")
+			String statusMessage = "Service Instance successfully deleted."
+
+			//TODO - verify the format for Service Instance Delete,
+			String dbRequest =
+					"""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+						<soapenv:Header/>
+						<soapenv:Body>
+							<ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb">
+								<requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+								<lastModifiedBy>BPMN</lastModifiedBy>
+								<statusMessage>${MsoUtils.xmlEscape(statusMessage)}</statusMessage>
+								<responseBody></responseBody>
+								<requestStatus>COMPLETED</requestStatus>
+								<progress>100</progress>
+							</ns:updateInfraRequest>
+						   </soapenv:Body>
+					   </soapenv:Envelope>"""
+
+		   String buildDeleteDBRequestAsString = utils.formatXml(dbRequest)
+		   execution.setVariable("DELSI_createDBRequest", buildDeleteDBRequestAsString)
+		   msoLogger.info(buildDeleteDBRequestAsString)
+
+		} catch (Exception ex) {
+			// try error in method block
+			String exceptionMessage = "Bpmn error encountered in DeleteGenericALaCarteServiceInstance flow. Unexpected Error from method prepareDBRequest() - " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	 }
+
+	// *******************************
+	//     Build Error Section
+	// *******************************
+	public void prepareDBRequestError (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside prepareDBRequestError of DeleteGenericALaCarteServiceInstance ")
+
+		try {
+			String requestId = execution.getVariable("DELSI_requestId")
+			String statusMessage = ""
+			if (execution.getVariable("WorkflowException") instanceof WorkflowException) {
+				WorkflowException wfe = execution.getVariable("WorkflowException")
+				statusMessage = wfe.getErrorMessage()
+
+			} else {
+				statusMessage = "Encountered Error during DeleteGenericALaCarteServiceInstance proccessing. "
+			}
+
+			//TODO - verify the format for Service Instance Create,
+			String dbRequest =
+					"""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+						<soapenv:Header/>
+						<soapenv:Body>
+							<ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb">
+								<requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+								<lastModifiedBy>BPMN</lastModifiedBy>
+								<statusMessage>${MsoUtils.xmlEscape(statusMessage)}</statusMessage>
+								<responseBody></responseBody>
+								<requestStatus>FAILED</requestStatus>
+							</ns:updateInfraRequest>
+						   </soapenv:Body>
+					   </soapenv:Envelope>"""
+
+		   String buildDBRequestAsString = utils.formatXml(dbRequest)
+		   execution.setVariable("DELSI_createDBInfraErrorRequest", buildDBRequestAsString)
+		   msoLogger.info(buildDBRequestAsString)
+
+		} catch (Exception ex) {
+			// try error in method block
+			String exceptionMessage = "Bpmn error encountered in DeleteGenericALaCarteServiceInstance flow. Unexpected Error from method prepareDBRequestError() - " + ex.getMessage()
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	 }
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteNetworkInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteNetworkInstance.groovy
new file mode 100644
index 0000000..816ba85
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteNetworkInstance.groovy
@@ -0,0 +1,420 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts;
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.NetworkUtils
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils;
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+import groovy.json.*
+
+public class DeleteNetworkInstance extends AbstractServiceTaskProcessor {
+	String Prefix="DELNI_"
+	String groovyClassName = "DeleteNetworkInstance"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils(this)
+	NetworkUtils networkUtils = new NetworkUtils()
+
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DeleteNetworkInstance.class);
+	
+
+	public InitializeProcessVariables(DelegateExecution execution){
+		
+		execution.setVariable(Prefix + "Success", false)
+		
+		execution.setVariable(Prefix + "CompleteMsoProcessRequest", "")
+		execution.setVariable(Prefix + "FalloutHandlerRequest", "")
+		execution.setVariable(Prefix + "isSilentSuccess", false)
+		
+	}
+	
+	// **************************************************
+	//     Pre or Prepare Request Section
+	// **************************************************
+
+	public void preProcessRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside preProcessRequest() of " + groovyClassName + "")
+
+		try {
+			// initialize flow variables
+			InitializeProcessVariables(execution)
+							
+			String sdncVersion = execution.getVariable("sdncVersion")
+			if (sdncVersion == null || sdncVersion == '1610') {				
+				// 'a-la-cart' default, sdncVersion = '1610' 
+				execution.setVariable("sdncVersion", "1610")
+				String bpmnRequest = execution.getVariable("bpmnRequest")
+				// set 'disableRollback'
+				if (bpmnRequest != null) {
+					String disableRollback = jsonUtil.getJsonValue(bpmnRequest, "requestDetails.requestInfo.suppressRollback")
+					if (disableRollback != null) {
+						execution.setVariable("disableRollback", disableRollback)
+						msoLogger.debug("Received 'suppressRollback': " + disableRollback )
+					} else {
+					    execution.setVariable("disableRollback", false)
+					}
+					msoLogger.debug(" Set 'disableRollback' : " + execution.getVariable("disableRollback") )
+				} else {
+					String dataErrorMessage = " Invalid 'bpmnRequest' request."
+					msoLogger.debug(dataErrorMessage)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+				}
+
+			} else {
+			    // 'macro' test ONLY, sdncVersion = '1702'
+			    msoLogger.debug(" 'disableRollback' : " + execution.getVariable("disableRollback") )
+			}	
+			
+			// get/set 'msoRequestId' and 'mso-request-id'
+			String requestId = execution.getVariable("msoRequestId")
+			if (requestId != null) {
+				execution.setVariable("mso-request-id", requestId)
+			} else {
+				requestId = execution.getVariable("mso-request-id")
+			}
+			execution.setVariable(Prefix + "requestId", requestId)
+			
+			// get/set 'requestId' 
+		    if (execution.getVariable("requestId") == null) {
+				execution.setVariable("requestId", requestId)
+			}
+			
+			// set action to "DELETE"
+			execution.setVariable("action", "DELETE")
+			
+			//Place holder for additional code.
+
+			// TODO ???
+			// userParams???  1) pre-loads indicator, 2) 'auto-activation'  
+			// Tag/Value parameters
+			//
+			// Map: 'networkInputParams': 'auto-activation''
+			// Sample format? 
+			// "requestParameters": {
+  			//     "userParams": [	
+            //          {
+			//	         "name": "someUserParam1",
+			//	         "value": "someValue1"
+			//          }
+            //     ]
+		    //   }
+			// 
+			// String userParams = //use json util to extract "userParams"// 
+	        // execution.setVariable("networkInputParams", userParams)
+			// else: execution.setVariable("networkInputParams", null)
+			//
+
+
+		} catch (Exception ex){
+			sendSyncError(execution)
+			String exceptionMessage = "Exception Encountered in " + groovyClassName + ", PreProcessRequest() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void getNetworkModelInfo (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside getNetworkModelInfo() of DeleteNetworkInstance")
+		
+		try {
+			
+			// For Ala-Carte (sdnc = 1610): 
+			// 1. the Network ModelInfo is expected to be sent 
+			//     via requestDetails.modelInfo (modelType = network), ex: modelCustomizationId.
+			// 2. the Service ModelInfo is expected to be sent but will be IGNORE 
+			//     via requestDetails.relatedInstanceList.relatedInstance.modelInfo (modelType = service)
+										 
+		} catch (Exception ex) {
+			sendSyncError(execution)
+		   String exceptionMessage = "Bpmn error encountered in DeleteNetworkInstance flow. getNetworkModelInfo() - " + ex.getMessage()
+		   msoLogger.debug(exceptionMessage)
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+			
+		}
+
+	}
+	
+	public void sendSyncResponse (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside sendSyncResponse() of DeleteNetworkInstance")
+
+		try {
+			String requestId = execution.getVariable("mso-request-id")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+			// RESTResponse (for API Handler (APIH) Reply Task)
+			String deleteNetworkRestRequest = """{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim()
+
+			msoLogger.debug(" sendSyncResponse to APIH - " + "\n" + deleteNetworkRestRequest)
+
+			sendWorkflowResponse(execution, 202, deleteNetworkRestRequest)
+
+		} catch (Exception ex) {
+			 // caught exception
+			String exceptionMessage = "Exception Encountered in  DeleteNetworkInstance, sendSyncResponse() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void prepareCompletion (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside prepareCompletion() of CreateNetworkInstance")
+
+		try {
+
+			String requestId = execution.getVariable("mso-request-id")
+			String source = execution.getVariable(Prefix + "source")
+
+			String msoCompletionRequest =
+				"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+								xmlns:ns="http://org.onap/so/request/types/v1">
+						<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+							<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+							<action>DELETE</action>
+							<source>VID</source>
+			   			</request-info>
+						<aetgt:status-message>Network has been deleted successfully.</aetgt:status-message>
+			   			<aetgt:mso-bpel-name>BPMN Network action: DELETE</aetgt:mso-bpel-name>
+					</aetgt:MsoCompletionRequest>"""
+
+				// Format Response
+			String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+
+			// normal path
+			execution.setVariable(Prefix + "CompleteMsoProcessRequest", xmlMsoCompletionRequest)
+			msoLogger.debug(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest)
+		
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in CreateNetworkInstance flow. prepareCompletion() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+
+	}
+	
+	public void prepareDBRequestError (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+
+		try {
+			msoLogger.trace("Inside prepareDBRequestError of DeleteNetworkInstance")
+			
+			// set DB Header Authorization 
+			setBasicDBAuthHeader(execution, isDebugEnabled)
+			
+			WorkflowException wfe = execution.getVariable("WorkflowException")
+			String statusMessage = wfe.getErrorMessage()
+			String requestId = execution.getVariable(Prefix +"requestId")
+
+			String dbRequest =
+					"""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+						<soapenv:Header/>
+						<soapenv:Body>
+							<ns:updateInfraRequest xmlns:ns="http://org.onap.so/requestsdb">
+								<requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+								<lastModifiedBy>BPMN</lastModifiedBy>
+								<statusMessage>${MsoUtils.xmlEscape(statusMessage)}</statusMessage>
+								<responseBody></responseBody>
+								<requestStatus>FAILED</requestStatus>
+								<progress></progress>
+								<vnfOutputs>&lt;network-outputs xmlns="http://org.onap/so/infra/vnf-request/v1" xmlns:aetgt="http://org.onap/so/infra/vnf-request/v1" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"/&gt;</vnfOutputs>
+							</ns:updateInfraRequest>
+					   	</soapenv:Body>
+					   </soapenv:Envelope>"""
+
+		   execution.setVariable(Prefix + "deleteDBRequest", dbRequest)
+		   msoLogger.debug(" DB Adapter Request - " + "\n" + dbRequest)
+
+		} catch (Exception ex) {
+			// caught exception
+			String exceptionMessage = "Bpmn error encountered in  DeleteNetworkInstance, prepareDBRequestError() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	 }
+
+	// **************************************************
+	//     Post or Validate Response Section
+	// **************************************************
+
+	public void postProcessResponse (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+	
+		msoLogger.trace("Inside postProcessResponse() of DeleteNetworkInstance")
+		
+		try {
+			if (execution.getVariable("CMSO_ResponseCode") == "200") {
+			   execution.setVariable(Prefix + "Success", true)
+			   msoLogger.trace("DeleteNetworkInstance Success")
+			   //   Place holder for additional code.
+			   
+			} else {
+			   execution.setVariable(Prefix + "Success", false)
+			   msoLogger.trace("DeleteNetworkInstance Failed in CompletionMsoProces flow!.")
+			
+			}   
+			
+	
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DeleteNetworkInstance flow. postProcessResponse() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+	
+	    }
+	
+	}
+
+
+	// *******************************
+	//     Build Error Section
+	// *******************************
+
+	// Prepare for FalloutHandler
+	public void buildErrorResponse (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Prepare for FalloutHandler. FAILURE - prepare request for sub-process FalloutHandler.")
+
+		String dbReturnCode = execution.getVariable(Prefix + "dbReturnCode")
+		msoLogger.debug("DB Update Response Code  : " + dbReturnCode)
+		msoLogger.debug("DB Update Response String: " + '\n' + execution.getVariable(Prefix + "deleteDBResponse"))
+
+		String falloutHandlerRequest = ""
+		String requestId = execution.getVariable("mso-request-id")
+		String source = execution.getVariable(Prefix + "source")
+		execution.setVariable(Prefix + "Success", false)
+		try {
+			WorkflowException wfe = execution.getVariable("WorkflowException")
+			String errorCode = String.valueOf(wfe.getErrorCode())
+			String errorMessage = wfe.getErrorMessage()
+
+			falloutHandlerRequest =
+			    """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+					                             xmlns:ns="http://org.onap/so/request/types/v1"
+					                             xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
+					   <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					      <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					      <action>DELETE</action>
+					      <source>${MsoUtils.xmlEscape(source)}</source>
+					   </request-info>
+						<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+							<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+							<aetgt:ErrorCode>${MsoUtils.xmlEscape(errorCode)}</aetgt:ErrorCode>
+						</aetgt:WorkflowException>
+					</aetgt:FalloutHandlerRequest>"""
+
+			msoLogger.debug(falloutHandlerRequest)
+			execution.setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequest)
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG,"Overall Error Response going to FalloutHandler: " + "\n" + falloutHandlerRequest,"BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "")
+
+		} catch (Exception ex) {
+			// caught exception
+			String exceptionMessage = "Bpmn error encountered in DeleteNetworkInstance, buildErrorResponse() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			falloutHandlerRequest =
+			"""<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+					                             xmlns:ns="http://org.onap/so/request/types/v1"
+					                             xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
+					   <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					      <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					      <action>DELEtE</action>
+					      <source>${MsoUtils.xmlEscape(source)}</source>
+					   </request-info>
+						<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+							<aetgt:ErrorMessage>${MsoUtils.xmlEscape(exceptionMessage)}</aetgt:ErrorMessage>
+							<aetgt:ErrorCode>9999</aetgt:ErrorCode>
+						</aetgt:WorkflowException>
+					</aetgt:FalloutHandlerRequest>"""
+			execution.setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequest)
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG,"Overall Error Response going to FalloutHandler: " + "\n" + falloutHandlerRequest,"BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex)
+		}
+	}
+
+
+	public void sendSyncError (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+
+		try {
+			String requestId = execution.getVariable("mso-request-id")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+			// RESTResponse (for API Handler (APIH) Reply Task)
+			String deleteNetworkRestError = """{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim()
+
+			msoLogger.debug(" sendSyncResponse to APIH - " + "\n" + deleteNetworkRestError)
+
+			sendWorkflowResponse(execution, 500, deleteNetworkRestError)
+
+		} catch (Exception ex) {
+			msoLogger.debug(" Sending Sync Error Activity Failed -  DeleteNetworkInstance, sendSyncError(): " + "\n" + ex.getMessage())
+		}
+	}
+
+	public void processJavaException(DelegateExecution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		try{
+			msoLogger.debug("Caught a Java Exception")
+			msoLogger.debug("Started processJavaException Method")
+			msoLogger.debug("Variables List: " + execution.getVariables())
+			execution.setVariable("UnexpectedError", "Caught a Java Lang Exception")  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
+			
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during processJavaException Method: " + e)
+			execution.setVariable("UnexpectedError", "Exception in processJavaException method")  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method")
+		}
+		msoLogger.debug("Completed processJavaException Method of " + Prefix)
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy
new file mode 100644
index 0000000..ab55006
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteSDNCNetworkResource.groovy
@@ -0,0 +1,308 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.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.onap.so.bpmn.common.recipe.ResourceInput;
+import org.onap.so.bpmn.common.resource.ResourceRequestBuilder 
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor 
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.core.json.JsonUtils
+
+import groovy.json.*
+
+/**
+ * This groovy class supports the <class>DeleteSDNCCNetworkResource.bpmn</class> process.
+ * flow for SDNC Network Resource 
+ */
+public class DeleteSDNCNetworkResource extends AbstractServiceTaskProcessor {
+
+    String Prefix="DELSDNCRES_"
+            
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+    JsonUtils jsonUtil = new JsonUtils()
+
+    SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
+    
+    public void preProcessRequest(DelegateExecution execution){
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO"," ***** Started preProcessRequest *****",  isDebugEnabled)
+        try {           
+            
+            //get bpmn inputs from resource request.
+            String requestId = execution.getVariable("mso-request-id")
+            String requestAction = execution.getVariable("requestAction")
+            utils.log("INFO","The requestAction is: " + requestAction,  isDebugEnabled)
+            String recipeParamsFromRequest = execution.getVariable("recipeParams")
+            utils.log("INFO","The recipeParams is: " + recipeParamsFromRequest,  isDebugEnabled)
+            String resourceInput = execution.getVariable("resourceInput")
+            utils.log("INFO","The resourceInput is: " + resourceInput,  isDebugEnabled)
+            //Get ResourceInput Object
+            ResourceInput resourceInputObj = ResourceRequestBuilder.getJsonObject(resourceInput, ResourceInput.class)
+            execution.setVariable(Prefix + "resourceInput", resourceInputObj)
+            
+            //Deal with recipeParams
+            String recipeParamsFromWf = execution.getVariable("recipeParamXsd")
+            String resourceModelName = resourceInputObj.getResourceModelInfo().getModelName()            
+            //For sdnc requestAction default is "NetworkInstance"
+            String operationType = "Network"    
+            if(!StringUtils.isBlank(recipeParamsFromRequest) && "null" != recipeParamsFromRequest){
+                //the operationType from worflow(first node) is second priority.
+                operationType = jsonUtil.getJsonValue(recipeParamsFromRequest, "operationType")
+            }
+            if(!StringUtils.isBlank(recipeParamsFromWf)){
+                //the operationType from worflow(first node) is highest priority.
+                operationType = jsonUtil.getJsonValue(recipeParamsFromWf, "operationType")
+            }
+            
+            
+            //For sdnc, generate svc_action and request_action
+            String sdnc_svcAction = "delete"
+            if(StringUtils.containsIgnoreCase(resourceModelName, "overlay")){
+                //This will be resolved in R3.
+                sdnc_svcAction ="deactivate"
+                operationType = "NCINetwork"        
+            }
+            if(StringUtils.containsIgnoreCase(resourceModelName, "underlay")){
+                //This will be resolved in R3.
+                operationType ="Network"
+            }        
+            String sdnc_requestAction = StringUtils.capitalize(sdnc_svcAction) + operationType +"Instance"                    
+            execution.setVariable(Prefix + "svcAction", sdnc_svcAction)        
+            execution.setVariable(Prefix + "requestAction", sdnc_requestAction)
+            execution.setVariable(Prefix + "serviceInstanceId", resourceInputObj.getServiceInstanceId())
+            execution.setVariable("mso-request-id", requestId)
+            execution.setVariable("mso-service-instance-id", resourceInputObj.getServiceInstanceId())
+            //TODO Here build networkrequest
+            
+        } catch (BpmnError e) {
+            throw e;
+        } catch (Exception ex){
+            msg = "Exception in preProcessRequest " + ex.getMessage()
+            utils.log("DEBUG", msg, isDebugEnabled)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+        }
+    }
+    
+    /**
+     * Pre Process the BPMN Flow Request
+     * Inclouds:
+     * generate the nsOperationKey
+     * generate the nsParameters
+     */
+    public void prepareSDNCRequest (DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO"," ***** Started prepareSDNCRequest *****",  isDebugEnabled)
+
+        try {
+            // get variables
+            String sdnc_svcAction = execution.getVariable(Prefix + "svcAction")        
+            String sdnc_requestAction = execution.getVariable(Prefix + "requestAction")
+            String sdncCallback = execution.getVariable("URN_mso_workflow_sdncadapter_callback")
+            String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
+
+            String hdrRequestId = execution.getVariable("mso-request-id")
+            String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")
+            String source = execution.getVariable("source")
+            String sdnc_service_id = execution.getVariable(Prefix + "sdncServiceId")
+            ResourceInput resourceInputObj = execution.getVariable(Prefix + "resourceInput")
+            String serviceType = resourceInputObj.getServiceType()
+            String serviceModelInvariantUuid = resourceInputObj.getServiceModelInfo().getModelInvariantUuid()
+            String serviceModelUuid = resourceInputObj.getServiceModelInfo().getModelUuid()
+            String serviceModelVersion = resourceInputObj.getServiceModelInfo().getModelVersion()
+            String serviceModelName = resourceInputObj.getServiceModelInfo().getModelName()
+            String globalCustomerId = resourceInputObj.getGlobalSubscriberId()
+            String modelInvariantUuid = resourceInputObj.getResourceModelInfo().getModelInvariantUuid();
+            String modelCustomizationUuid = resourceInputObj.getResourceModelInfo().getModelCustomizationUuid()
+            String modelUuid = resourceInputObj.getResourceModelInfo().getModelUuid()
+            String modelName = resourceInputObj.getResourceModelInfo().getModelName()
+            String modelVersion = resourceInputObj.getResourceModelInfo().getModelVersion()
+            // 1. prepare assign topology via SDNC Adapter SUBFLOW call
+            String sndcTopologyDeleteRequest =
+                    """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+                                                              xmlns:sdncadapter="http://org.onap.so/workflow/sdnc/adapter/schema/v1" 
+                                                              xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1">
+                                 <sdncadapter:RequestHeader>
+                                    <sdncadapter:RequestId>${MsoUtils.xmlEscape(hdrRequestId)}</sdncadapter:RequestId>
+                                    <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId>
+                                    <sdncadapter:SvcAction>${MsoUtils.xmlEscape(sdnc_svcAction)}</sdncadapter:SvcAction>
+                                    <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+                                    <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+                                    <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+                                 </sdncadapter:RequestHeader>
+                                 <sdncadapterworkflow:SDNCRequestData>
+                                     <request-information>
+                                        <request-id>${MsoUtils.xmlEscape(hdrRequestId)}</request-id>
+                                        <request-action>${MsoUtils.xmlEscape(sdnc_requestAction)}</request-action>
+                                        <source>${MsoUtils.xmlEscape(source)}</source>
+                                        <notification-url></notification-url>
+                                        <order-number></order-number>
+                                        <order-version></order-version>
+                                     </request-information>
+                                     <service-information>
+                                        <service-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-id>
+                                        <subscription-service-type>${MsoUtils.xmlEscape(serviceType)}</subscription-service-type>
+                                        <onap-model-information>
+                                             <model-invariant-uuid>${MsoUtils.xmlEscape(serviceModelInvariantUuid)}</model-invariant-uuid>
+                                             <model-uuid>${MsoUtils.xmlEscape(serviceModelUuid)}</model-uuid>
+                                             <model-version>${MsoUtils.xmlEscape(serviceModelVersion)}</model-version>
+                                             <model-name>${MsoUtils.xmlEscape(serviceModelName)}</model-name>
+                                        </onap-model-information>
+                                        <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+                                        <global-customer-id>${MsoUtils.xmlEscape(globalCustomerId)}</global-customer-id>
+                                     </service-information>
+                                     <network-information>
+                                        <onap-model-information>
+                                             <model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-uuid>
+                                             <model-customization-uuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</model-customization-uuid>
+                                             <model-uuid>${MsoUtils.xmlEscape(modelUuid)}</model-uuid>
+                                             <model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version>
+                                             <model-name>${MsoUtils.xmlEscape(modelName)}</model-name>
+                                        </onap-model-information>
+                                     </network-information>
+                                     <network-request-input>
+                                       <network-input-parameters></network-input-parameters>
+                                     </network-request-input>
+                                </sdncadapterworkflow:SDNCRequestData>
+                             </aetgt:SDNCAdapterWorkflowRequest>""".trim()
+            
+            String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
+            utils.logAudit(sndcTopologyDeleteRequesAsString)
+            execution.setVariable("sdncAdapterWorkflowRequest", sndcTopologyDeleteRequesAsString)
+            utils.log("INFO","sdncAdapterWorkflowRequest - " + "\n" +  sndcTopologyDeleteRequesAsString, isDebugEnabled)
+
+        } catch (Exception ex) {
+            String exceptionMessage = " Bpmn error encountered in DeleteSDNCCNetworkResource flow. prepareSDNCRequest() - " + ex.getMessage()
+            utils.log("DEBUG", exceptionMessage, isDebugEnabled)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+        }
+       utils.log("INFO"," ***** Exit prepareSDNCRequest *****",  isDebugEnabled)
+	}
+
+    private void setProgressUpdateVariables(DelegateExecution execution, String body) {
+        def dbAdapterEndpoint = execution.getVariable("URN_mso_adapters_openecomp_db_endpoint")
+        execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint)
+        execution.setVariable("CVFMI_updateResOperStatusRequest", body)
+    }
+
+    public void prepareUpdateBeforeDeleteSDNCResource(DelegateExecution execution) {
+        ResourceInput resourceInputObj = execution.getVariable(Prefix + "resourceInput")
+        String operType = resourceInputObj.getOperationType()
+        String resourceCustomizationUuid = resourceInputObj.getResourceModelInfo().getModelCustomizationUuid()
+        String serviceInstanceId = resourceInputObj.getServiceInstanceId()
+        String operationId = resourceInputObj.getOperationId()
+        String progress = "20"
+        String status = "processing"
+        String statusDescription = "SDCN resource delete invoked"
+
+        //String operationId = execution.getVariable("operationId")
+
+        String body = """
+                <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                        <soapenv:Header/>
+                <soapenv:Body>
+                    <ns:updateResourceOperationStatus>
+                               <operType>${MsoUtils.xmlEscape(operType)}</operType>
+                               <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                               <progress>${MsoUtils.xmlEscape(progress)}</progress>
+                               <resourceTemplateUUID>${MsoUtils.xmlEscape(resourceCustomizationUuid)}</resourceTemplateUUID>
+                               <serviceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceId>
+                               <status>${MsoUtils.xmlEscape(status)}</status>
+                               <statusDescription>${MsoUtils.xmlEscape(statusDescription)}</statusDescription>
+                    </ns:updateResourceOperationStatus>
+                </soapenv:Body>
+                </soapenv:Envelope>""";
+
+        setProgressUpdateVariables(execution, body)
+
+    }
+
+    public void prepareUpdateAfterDeleteSDNCResource(DelegateExecution execution) {
+        ResourceInput resourceInputObj = execution.getVariable(Prefix + "resourceInput")
+        String operType = resourceInputObj.getOperationType()
+        String resourceCustomizationUuid = resourceInputObj.getResourceModelInfo().getModelCustomizationUuid()
+        String serviceInstanceId = resourceInputObj.getServiceInstanceId()
+        String operationId = resourceInputObj.getOperationId()
+        String progress = "100"
+        String status = "finished"
+        String statusDescription = "SDCN resource delete completed"
+
+        //String operationId = execution.getVariable("operationId")
+
+        String body = """
+                <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                        <soapenv:Header/>
+                <soapenv:Body>
+                    <ns:updateResourceOperationStatus>
+                               <operType>${MsoUtils.xmlEscape(operType)}</operType>
+                               <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                               <progress>${MsoUtils.xmlEscape(progress)}</progress>
+                               <resourceTemplateUUID>${MsoUtils.xmlEscape(resourceCustomizationUuid)}</resourceTemplateUUID>
+                               <serviceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceId>
+                               <status>${MsoUtils.xmlEscape(status)}</status>
+                               <statusDescription>${MsoUtils.xmlEscape(statusDescription)}</statusDescription>
+                    </ns:updateResourceOperationStatus>
+                </soapenv:Body>
+                </soapenv:Envelope>""";
+
+        setProgressUpdateVariables(execution, body)
+    }
+
+    public void postDeleteSDNCCall(DelegateExecution execution){
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO"," ***** Started prepareSDNCRequest *****",  isDebugEnabled)
+        String responseCode = execution.getVariable(Prefix + "sdncDeleteReturnCode")
+        String responseObj = execution.getVariable(Prefix + "SuccessIndicator")
+        
+        utils.log("INFO","response from sdnc, response code :" + responseCode + "  response object :" + responseObj,  isDebugEnabled)
+        utils.log("INFO"," ***** Exit prepareSDNCRequest *****",  isDebugEnabled)
+    }
+    
+	public void sendSyncResponse (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** sendSyncResponse *** ", isDebugEnabled)
+
+		try {
+			String operationStatus = "finished"
+			// RESTResponse for main flow
+			String resourceOperationResp = """{"operationStatus":"${operationStatus}"}""".trim()
+			utils.log("DEBUG", " sendSyncResponse to APIH:" + "\n" + resourceOperationResp, isDebugEnabled)
+			sendWorkflowResponse(execution, 202, resourceOperationResp)
+			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)
+	}
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVFCNSResource.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVFCNSResource.groovy
new file mode 100644
index 0000000..536783b
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVFCNSResource.groovy
@@ -0,0 +1,87 @@
+
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.bpmn.infrastructure.scripts
+
+import com.fasterxml.jackson.databind.ObjectMapper
+import org.onap.so.bpmn.common.recipe.ResourceInput
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+
+
+public class DeleteVFCNSResource extends AbstractServiceTaskProcessor {
+
+    String Prefix = "DCUSE_"
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+    JsonUtils jsonUtil = new JsonUtils()
+
+    public void preProcessRequest (DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO"," ***** start preProcessRequest *****",  isDebugEnabled)
+
+        String resourceInputStr = execution.getVariable("resourceInput")
+        ResourceInput resourceInput = new ObjectMapper().readValue(resourceInputStr, ResourceInput.class)
+
+        String globalSubscriberId = resourceInput.getGlobalSubscriberId()
+        String serviceType = execution.getVariable("serviceType")
+        String operationId = resourceInput.getOperationId()
+        String resourceModeluuid = resourceInput.getResourceModelInfo().getModelCustomizationUuid()
+        String resourceInstanceId = resourceInput.getResourceInstancenUuid()
+
+
+        execution.setVariable("globalSubscriberId",globalSubscriberId)
+        execution.setVariable("serviceType", serviceType)
+        execution.setVariable("operationId", operationId)
+        execution.setVariable("resourceTemplateId", resourceModeluuid)
+        execution.setVariable("resourceInstanceId", resourceInstanceId)
+
+        utils.log("INFO"," ***** end preProcessRequest *****",  isDebugEnabled)
+    }
+
+    public void postProcessRequest (DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO"," ***** start postProcessRequest *****",  isDebugEnabled)
+
+        utils.log("INFO"," ***** end postProcessRequest *****",  isDebugEnabled)
+    }
+
+    public void sendSyncResponse (DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+        utils.log("DEBUG", " *** sendSyncResponse *** ", isDebugEnabled)
+
+        try {
+            String nsInstanceId = execution.getVariable("nsInstanceId")
+            String operationStatus = execution.getVariable("operationStatus")
+            // RESTResponse for main flow
+            String createVFCResourceRestRsp = """{"nsInstanceId":"${nsInstanceId}","operationStatus":"${operationStatus}"}""".trim()
+            utils.log("DEBUG", " sendSyncResponse to APIH:" + "\n" + createVFCResourceRestRsp, isDebugEnabled)
+            sendWorkflowResponse(execution, 202, createVFCResourceRestRsp)
+            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)
+    }
+}
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleInfra.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleInfra.groovy
new file mode 100644
index 0000000..682421e
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleInfra.groovy
@@ -0,0 +1,367 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor;
+import org.onap.so.bpmn.common.scripts.ExceptionUtil;
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.VidUtils;
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils;
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+import groovy.json.JsonSlurper
+
+
+
+public class DeleteVfModuleInfra extends AbstractServiceTaskProcessor {
+
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DeleteVfModuleInfra.class);
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	/**
+	 * Initialize the flow's variables.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void initProcessVariables(DelegateExecution execution) {
+		execution.setVariable('prefix', 'DELVfModI_')
+		execution.setVariable('DELVfModI_requestInfo', null)
+		execution.setVariable('DELVfModI_requestId', null)
+		execution.setVariable('DELVfModI_source', null)
+		execution.setVariable('DELVfModI_vnfInputs', null)
+		execution.setVariable('DELVfModI_vnfId', null)
+		execution.setVariable('DELVfModI_vfModuleId', null)
+		execution.setVariable('DELVfModI_tenantId', null)
+		execution.setVariable('DELVfModI_volumeGroupId', null)
+		execution.setVariable('DELVfModI_vnfParams', null)
+		execution.setVariable('DELVfModI_updateInfraRequest', null)
+		execution.setVariable('DeleteVfModuleRequest', null)
+		execution.setVariable('DeleteVfModuleSuccessIndicator', false)
+	}
+
+	/**
+	 * Process the incoming DELETE_VF_MODULE vnf-request.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void preProcessRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessRequest(' +
+			'execution=' + execution.getId() +
+			')'
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("isVidRequest", "false")
+		initProcessVariables(execution)
+
+		def prefix = execution.getVariable('prefix')
+
+		def incomingRequest = execution.getVariable('bpmnRequest')
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		
+		msoLogger.debug("Incoming Infra Request: " + incomingRequest)
+
+		// check if request is xml or json
+		try {
+			def jsonSlurper = new JsonSlurper()
+			Map reqMap = jsonSlurper.parseText(incomingRequest)
+			msoLogger.debug(" Request is in JSON format.")
+
+			def serviceInstanceId = execution.getVariable('serviceInstanceId')
+			msoLogger.debug("serviceInstanceId is: " + serviceInstanceId)
+			def vnfId = execution.getVariable('vnfId')
+			msoLogger.debug("vnfId is: " + vnfId)
+			def cloudConfiguration = jsonUtil.getJsonValue(incomingRequest, "requestDetails.cloudConfiguration")
+			execution.setVariable("cloudConfiguration", cloudConfiguration)
+			msoLogger.debug("CloudConfiguration is: " + cloudConfiguration)
+			def vfModuleModelInfo = jsonUtil.getJsonValue(incomingRequest, "requestDetails.modelInfo")
+
+			execution.setVariable("vfModuleModelInfo", vfModuleModelInfo)
+			msoLogger.debug("VfModuleModelInfo is: " + vfModuleModelInfo)
+			
+			// 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)
+
+			msoLogger.debug(" Request in XML format: " + requestInXmlFormat)
+
+			setBasicDBAuthHeader(execution, isDebugLogEnabled)
+			
+			execution.setVariable(prefix + 'Request', requestInXmlFormat)
+			execution.setVariable(prefix+'vnfId', vnfId)
+			execution.setVariable("isVidRequest", "true")
+
+		}
+		catch(groovy.json.JsonException je) {
+			msoLogger.debug(" Request is not in JSON format.")
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Internal Error - During PreProcess Request")
+
+		}
+		catch(Exception e) {
+			String restFaultMessage = e.getMessage()
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG,"Caught exception", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Internal Error - During PreProcess Request")
+		}
+
+
+		try {
+
+			String request = validateRequest(execution)
+			execution.setVariable('DeleteVfModuleRequest', request)
+			msoLogger.debug("DeleteVfModuleInfra Request: " + request)
+
+			def requestInfo = getRequiredNodeXml(execution, request, 'request-info')
+			execution.setVariable('DELVfModI_requestInfo', requestInfo)
+			execution.setVariable('DELVfModI_requestId', getRequiredNodeText(execution, requestInfo, 'request-id'))
+			execution.setVariable('DELVfModI_source', getNodeTextForce(requestInfo, 'source'))
+
+			def vnfInputs = getRequiredNodeXml(execution, request, 'vnf-inputs')
+			execution.setVariable('DELVfModI_vnfInputs', vnfInputs)
+			execution.setVariable('DELVfModI_vnfId', getRequiredNodeText(execution, vnfInputs, 'vnf-id'))
+			execution.setVariable('DELVfModI_vfModuleId', getRequiredNodeText(execution, vnfInputs, 'vf-module-id'))
+			execution.setVariable('DELVfModI_vfModuleName', getNodeTextForce(vnfInputs, 'vf-module-name'))
+			execution.setVariable('DELVfModI_tenantId', getRequiredNodeText(execution, vnfInputs, 'tenant-id'))
+			execution.setVariable('DELVfModI_volumeGroupId', getNodeTextForce(vnfInputs, 'volume-group-id'))
+
+			def vnfParams = utils.getNodeXml(request, 'vnf-params')
+			execution.setVariable('DELVfModI_vnfParams', vnfParams)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG,"Caught exception in "+method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preProcessRequest(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Sends the 'IN_PROGRESS' synchronous response.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void sendSynchResponse(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.sendResponse(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def requestInfo = execution.getVariable('DELVfModI_requestInfo')
+			def requestId = execution.getVariable('DELVfModI_requestId')
+			def source = execution.getVariable('DELVfModI_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 vfModuleId = execution.getVariable('DELVfModI_vfModuleId')
+			String synchResponse = """{"requestReferences":{"instanceId":"${vfModuleId}","requestId":"${requestId}"}}""".trim()
+
+			msoLogger.debug("DeleteVfModuleInfra Synch Response: " + synchResponse)
+			sendWorkflowResponse(execution, 200, synchResponse)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG,"Caught exception in "+method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Currently passing the entire DELETE_VF_MODULE vnf-request to DoDeleteVfModule.
+	 * 'DeleteVfModuleRequest' is now being set in preProcessRequest().
+	 * TBD: may want to eventually create a specific request that only contains the needed fields.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepDoDeleteVfModule(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepDoDeleteVfModule(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		msoLogger.trace('Entered ' + method)
+
+		try {
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepDoDeleteVfModule(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare the DB update to add an entry for the Vf Module request.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepUpdateInfraRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepUpdateInfraRequest(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def requestId = execution.getVariable('DELVfModI_requestId')
+			def vnfId = execution.getVariable('DELVfModI_vnfId')
+			def vfModuleId = execution.getVariable('DELVfModI_vfModuleId')
+			def tenantId = execution.getVariable('DELVfModI_tenantId')
+			def volumeGroupId = execution.getVariable('DELVfModI_volumeGroupId')
+
+			String updateInfraRequest = """
+				<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+					xmlns:req="http://org.onap.so/requestsdb">
+					<soapenv:Header/>
+					<soapenv:Body>
+						<req:updateInfraRequest>
+							<requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+							<lastModifiedBy>BPMN</lastModifiedBy>
+							<requestStatus>COMPLETED</requestStatus>
+							<progress>100</progress>
+						</req:updateInfraRequest>
+					</soapenv:Body>
+				</soapenv:Envelope>
+			"""
+
+			updateInfraRequest = utils.formatXml(updateInfraRequest)
+			execution.setVariable('DELVfModI_updateInfraRequest', updateInfraRequest)
+			msoLogger.debug('Request for Update Infra Request:\n' + updateInfraRequest)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepInfraRequest(): ' + 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(DelegateExecution execution, String resultVar) {
+		def method = getClass().getSimpleName() + '.completionHandlerPrep(' +
+			'execution=' + execution.getId() +
+			', resultVar=' + resultVar +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def request = execution.getVariable("DeleteVfModuleRequest")
+			def requestInfo = utils.getNodeXml(request, 'request-info', false)
+			def action = utils.getNodeText(requestInfo, "action")
+
+			String content =
+					"""  <aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+						   xmlns:ns="http://org.onap/so/request/types/v1"
+						   xmlns:ns8="http://org.onap/so/workflow/schema/v1">
+		<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+			${requestInfo}
+			</request-info>
+			<ns8:status-message>Vf Module has been deleted successfully.</ns8:status-message>
+			<ns8:mso-bpel-name>BPMN</ns8:mso-bpel-name>
+			</aetgt:MsoCompletionRequest>"""
+
+			content = utils.formatXml(content)
+			msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content)
+			execution.setVariable(resultVar, content)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2000, 'Internal Error')
+		}
+	}
+
+	/**
+	 * 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')
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def prefix = execution.getVariable('prefix')
+			def request = execution.getVariable("DeleteVfModuleRequest")
+			def requestInfo = utils.getNodeXml(request, 'request-info', false)
+			def WorkflowException workflowException = execution.getVariable("WorkflowException")
+			def errorResponseCode = workflowException.getErrorCode()
+			def errorResponseMsg = workflowException.getErrorMessage()
+			def encErrorResponseMsg = ""
+			if (errorResponseMsg != null) {
+				encErrorResponseMsg = errorResponseMsg
+			}
+
+			String content = """
+			<sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+					xmlns:reqtype="http://org.onap/so/request/types/v1"
+					xmlns:msoservtypes="http://org.onap/so/request/types/v1"
+					xmlns:structuredtypes="http://org.onap/so/structured/types/v1">
+					${requestInfo}
+					<sdncadapterworkflow:WorkflowException>
+						<sdncadapterworkflow:ErrorMessage>${MsoUtils.xmlEscape(encErrorResponseMsg)}</sdncadapterworkflow:ErrorMessage>
+						<sdncadapterworkflow:ErrorCode>${MsoUtils.xmlEscape(errorResponseCode)}</sdncadapterworkflow:ErrorCode>
+					</sdncadapterworkflow:WorkflowException>
+				</sdncadapterworkflow:FalloutHandlerRequest>
+			"""
+			content = utils.formatXml(content)
+			msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content)
+			execution.setVariable(resultVar, content)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildWorkflowException(execution, 2000, 'Internal Error')
+		}
+	}
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy
new file mode 100644
index 0000000..2cbfeac
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy
@@ -0,0 +1,545 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts;
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AaiUtil;
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor;
+import org.onap.so.bpmn.common.scripts.ExceptionUtil;
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.VidUtils;
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.springframework.web.util.UriUtils
+
+import groovy.json.JsonSlurper
+
+/**
+ * This groovy class supports the <class>DeleteVfModuleVolume.bpmn</class> process.
+ */
+public class DeleteVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DeleteVfModuleVolumeInfraV1.class);
+
+	private XmlParser xmlParser = new XmlParser()
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>DeleteVfModuleVolume.bpmn</class> process.
+	 * @param execution
+	 */
+	public InitializeProcessVariables(DelegateExecution execution){
+		execution.setVariable('prefix', 'DELVfModVol_')
+		execution.setVariable("DELVfModVol_volumeRequest", null)
+		execution.setVariable('DELVfModVol_requestInfo', null)
+		execution.setVariable('DELVfModVol_requestId', null)
+		execution.setVariable('DELVfModVol_source', null)
+		execution.setVariable('DELVfModVol_volumeInputs', null)
+		execution.setVariable('DELVfModVol_volumeOutputs', null)
+		execution.setVariable('DELVfModVol_volumeGroupId', null)
+		execution.setVariable('DELVfModVol_vnfType', null)
+		execution.setVariable('DELVfModVol_serviceId', null)
+		execution.setVariable('DELVfModVol_cloudRegion', null)
+		execution.setVariable('DELVfModVol_tenantId', null)
+		execution.setVariable('DELVfModVol_volumeParams', null)
+		execution.setVariable('DELVfModVol_volumeGroupHeatStackId', null)
+		execution.setVariable('DELVfModVol_volumeGroupTenantId', null)
+		execution.setVariable("DELVfModVol_queryAAIVolGrpResponse", null)
+		execution.setVariable('DELVfModVol_messageId', null)
+		execution.setVariable('DELVfModVol_deleteVnfARequest', null)
+		execution.setVariable('DELVfModVol_updateInfraRequest', null)
+		execution.setVariable('DELVfModVol_CompleteMsoProcessRequest', null)
+		execution.setVariable('DELVfModVol_WorkflowException', null)
+		execution.setVariable('DELVfModVol_TransactionSuccessIndicator', false)
+		execution.setVariable("DELVfModVol_isErrorMessageException", false)
+		execution.setVariable('DELVfModVol_syncResponseSent', false)
+	}
+
+	/**
+	 * Perform initial processing, such as request validation, initialization of variables, etc.
+	 * * @param execution
+	 */
+	public void preProcessRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		preProcessRequest(execution, isDebugEnabled)
+	}
+
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>DeleteVfModuleVolume.bpmn</class> process.
+	 * @param execution
+	 */
+	public void preProcessRequest (DelegateExecution execution, isDebugLogEnabled) {
+
+		InitializeProcessVariables(execution)
+
+		String createVolumeIncoming = validateRequest(execution)
+
+		// check if request is xml or json
+		try {
+			def jsonSlurper = new JsonSlurper()
+			Map reqMap = jsonSlurper.parseText(createVolumeIncoming)
+			msoLogger.debug(" Request is in JSON format.")
+
+			def serviceInstanceId = execution.getVariable('serviceInstanceId')
+			def volumeGroupId = execution.getVariable('volumeGroupId')
+			def vidUtils = new VidUtils(this)
+			createVolumeIncoming = vidUtils.createXmlVolumeRequest(reqMap, 'DELETE_VF_MODULE_VOL', serviceInstanceId, volumeGroupId)
+			execution.setVariable("DELVfModVol_isVidRequest", true)
+		}
+		catch(groovy.json.JsonException je) {
+			msoLogger.debug(" Request is in XML format.")
+			// assume request is in XML format - proceed as usual to process XML request
+		}
+
+		String request = utils.getNodeXml(createVolumeIncoming, "volume-request").drop(38).trim().replace("tag0:","").replace(":tag0","")
+		execution.setVariable("DELVfModVol_volumeRequest", request)
+
+		def requestInfo = getRequiredNodeXml(execution, request, 'request-info')
+		execution.setVariable('DELVfModVol_requestInfo', requestInfo)
+		String requestId = execution.getVariable("mso-request-id")
+		if (requestId == null || requestId == "") {
+			requestId = getRequiredNodeText(execution, requestInfo, 'request-id')
+		}
+		execution.setVariable('DELVfModVol_requestId', requestId)
+		execution.setVariable('DELVfModVol_source', getNodeTextForce(requestInfo, 'source'))
+
+		def volumeInputs = getRequiredNodeXml(execution, request, 'volume-inputs')
+		execution.setVariable('DELVfModVol_volumeInputs', volumeInputs)
+		execution.setVariable('DELVfModVol_volumeGroupId', getRequiredNodeText(execution, volumeInputs, 'volume-group-id'))
+		execution.setVariable('DELVfModVol_vnfType', getRequiredNodeText(execution, volumeInputs, 'vnf-type'))
+		execution.setVariable('DELVfModVol_serviceId', utils.getNodeText(volumeInputs, 'service-id'))
+		execution.setVariable('DELVfModVol_tenantId', getRequiredNodeText(execution, volumeInputs, 'tenant-id'))
+		execution.setVariable('DELVfModVol_messageId', UUID.randomUUID().toString())
+		execution.setVariable('DELVfModVol_volumeOutputs', utils.getNodeXml(request, 'volume-outputs', false))
+		execution.setVariable('DELVfModVol_volumeParams', utils.getNodeXml(request, 'volume-params'))
+		execution.setVariable('DELVfModVol_cloudRegion', utils.getNodeText(request, 'aic-cloud-region'))
+
+		setBasicDBAuthHeader(execution, isDebugLogEnabled)
+		
+		msoLogger.debug('Request: ' + createVolumeIncoming)
+	}
+
+	public void sendSyncResponse (DelegateExecution execution, isDebugEnabled) {
+
+		String volumeRequest = execution.getVariable("DELVfModVol_volumeRequest")
+		msoLogger.debug(" DELVfModVol_volumeRequest - " + "\n" + volumeRequest)
+		// RESTResponse (for API Handler (APIH) Reply Task)
+		String deleteVolumeRequest =
+				"""<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd" statusCode="200">
+                <rest:payload xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+                          contentType="text/xml">
+			        ${volumeRequest}
+                </rest:payload>
+		       </rest:RESTResponse>""".trim()
+
+		def isVidRequest = execution.getVariable('DELVfModVol_isVidRequest')
+		def syncResponse = ''
+
+		if(isVidRequest) {
+			def serviceInstanceId = execution.getVariable('serviceInstanceId')
+			def volumeGroupId = execution.getVariable('volumeGroupId')
+			def requestId = execution.getVariable('DELVfModVol_requestId')
+			syncResponse = """{"requestReferences":{"instanceId":"${volumeGroupId}","requestId":"${requestId}"}}""".trim()
+		}
+		else {
+			syncResponse = utils.formatXml(deleteVolumeRequest)
+		}
+
+		execution.setVariable('DELVfModVol_syncResponseSent', true)
+
+		sendWorkflowResponse(execution, 200, syncResponse)
+	}
+
+
+	public void sendSyncError (DelegateExecution execution, isDebugEnabled) {
+		WorkflowException we = execution.getVariable('WorkflowException')
+		def errorCode = we?.getErrorCode()
+		def errorMessage = we?.getErrorMessage()
+		//default to 400 since only invalid request will trigger this method
+		sendWorkflowResponse(execution, 400, errorMessage)
+	}
+
+
+	public void callRESTQueryAAICloudRegion (DelegateExecution execution, isDebugEnabled) {
+
+		String cloudRegion = execution.getVariable('DELVfModVol_cloudRegion')
+
+		String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aai_uri = aaiUtil.getCloudInfrastructureCloudRegionUri(execution)
+		String queryCloudRegionRequest = "${aai_endpoint}${aai_uri}/" + cloudRegion
+		execution.setVariable("DELVfModVol_queryCloudRegionRequest", queryCloudRegionRequest)
+		msoLogger.debug(" DELVfModVol_queryCloudRegionRequest - " + "\n" + queryCloudRegionRequest)
+
+		cloudRegion = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "PO", cloudRegion)
+
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+		if ((cloudRegion != "ERROR")) {
+			if(execution.getVariable("DELVfModVol_queryCloudRegionReturnCode") == "404"){
+				execution.setVariable("DELVfModVol_aicCloudRegion", "AAIAIC25")
+			}else{
+				execution.setVariable("DELVfModVol_aicCloudRegion", cloudRegion)
+			}
+			execution.setVariable("DELVfModVol_cloudRegion", cloudRegion)
+			execution.setVariable("DELVfModVol_isCloudRegionGood", true)
+
+		} else {
+			msoLogger.debug("AAI Query Cloud Region Unsuccessful.")
+			execution.setVariable("DELVfModVol_isCloudRegionGood", false)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "AAI Query Cloud Region Unsuccessful. Return Code: " + execution.getVariable("DELVfModVol_queryCloudRegionReturnCode"))
+		}
+
+		msoLogger.debug(" is Cloud Region Good: " + execution.getVariable("DELVfModVol_isCloudRegionGood"))
+	}
+
+	/**
+	 * Query volume group by id
+	 * @param execution
+	 */
+	public void queryAAIForVolumeGroup(DelegateExecution execution, isDebugLogEnabled) {
+
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+		def volumeGroupId = execution.getVariable('DELVfModVol_volumeGroupId')
+		if(volumeGroupId == null) {
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, 'volume-group-id is not provided in the request')
+			throw new Exception('volume-group-id is not provided in the request')
+		}
+		String cloudRegion = execution.getVariable('DELVfModVol_aicCloudRegion')
+
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+		String queryAAIVolumeGroupRequest = aaiEndpoint + '/' + URLEncoder.encode(cloudRegion, "UTF-8") + "/volume-groups/volume-group/" + UriUtils.encode(volumeGroupId, "UTF-8")
+
+		msoLogger.debug('Query AAI volume group by ID: ' + queryAAIVolumeGroupRequest)
+
+		APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIVolumeGroupRequest)
+
+		String returnCode = response.getStatusCode()
+		String aaiResponseAsString = response.getResponseBodyAsString()
+
+		msoLogger.debug("AAI query volume group by id return code: " + returnCode)
+		msoLogger.debug("AAI query volume group by id response: " + aaiResponseAsString)
+
+		execution.setVariable("DELVfModVol_queryAAIVolGrpResponse", aaiResponseAsString)
+
+		if (returnCode=='200' || returnCode == '204') {
+
+			def heatStackId = getNodeTextForce(aaiResponseAsString, 'heat-stack-id')
+			execution.setVariable('DELVfModVol_volumeGroupHeatStackId', heatStackId)
+
+			if(hasVfModuleRelationship(aaiResponseAsString)){
+				msoLogger.debug('Volume Group ' + volumeGroupId + ' currently in use')
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume Group ${volumeGroupId} currently in use - found vf-module relationship.")
+			}
+
+			def volumeGroupTenantId = getTenantIdFromVolumeGroup(aaiResponseAsString)
+			if (volumeGroupTenantId == null) {
+				msoLogger.debug("Could not find Tenant Id element in Volume Group with Volume Group Id ${volumeGroupId}")
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Could not find Tenant Id element in Volume Group with Volume Group Id ${volumeGroupId}")
+			}
+
+			execution.setVariable('DELVfModVol_volumeGroupTenantId', volumeGroupTenantId)
+			msoLogger.debug('Received Tenant Id ' + volumeGroupTenantId + ' from AAI for Volume Group with Volume Group Id ' + volumeGroupId )
+		}
+		else {
+			if (returnCode=='404') {
+				msoLogger.debug("Volume Group ${volumeGroupId} not found in AAI")
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume Group ${volumeGroupId} not found in AAI. Response code: 404")
+			}
+			else {
+				WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}
+	}
+
+	/**
+	 * Extract the Tenant Id from the Volume Group information returned by AAI.
+	 *
+	 * @param volumeGroupXml Volume Group XML returned by AAI.
+	 * @return the Tenant Id extracted from the Volume Group information. 'null' is returned if
+	 * the Tenant Id is missing or could not otherwise be extracted.
+	 */
+	private String getTenantIdFromVolumeGroup(String volumeGroupXml) {
+		def Node volumeGroupNode = xmlParser.parseText(volumeGroupXml)
+		def Node relationshipList = utils.getChildNode(volumeGroupNode, 'relationship-list')
+		if (relationshipList != null) {
+			def NodeList relationships = utils.getIdenticalChildren(relationshipList, 'relationship')
+			for (Node relationship in relationships) {
+				def Node relatedTo = utils.getChildNode(relationship, 'related-to')
+				if ((relatedTo != null) && (relatedTo.text().equals('tenant'))) {
+					def NodeList relationshipDataList = utils.getIdenticalChildren(relationship, 'relationship-data')
+					for (Node relationshipData in relationshipDataList) {
+						def Node relationshipKey = utils.getChildNode(relationshipData, 'relationship-key')
+						if ((relationshipKey != null) && (relationshipKey.text().equals('tenant.tenant-id'))) {
+							def Node relationshipValue = utils.getChildNode(relationshipData, 'relationship-value')
+							if (relationshipValue != null) {
+								return relationshipValue.text()
+							}
+						}
+					}
+				}
+			}
+		}
+		return null
+	}
+
+	private boolean hasVnfRelationship(String volumeGroupXml) {
+		def Node volumeGroupNode = xmlParser.parseText(volumeGroupXml)
+		def Node relationshipList = utils.getChildNode(volumeGroupNode, 'relationship-list')
+		if (relationshipList != null) {
+			def NodeList relationships = utils.getIdenticalChildren(relationshipList, 'relationship')
+			for (Node relationship in relationships) {
+				def Node relatedTo = utils.getChildNode(relationship, 'related-to')
+				if ((relatedTo != null) && (relatedTo.text().equals('generic-vnf'))) {
+					def Node relatedLink = utils.getChildNode(relationship, 'related-link')
+					if (relatedLink !=null && relatedLink.text() != null){
+						return true
+					}
+				}
+			}
+		}
+		return false
+	}
+
+	private boolean hasVfModuleRelationship(String volumeGroupXml) {
+		def Node volumeGroupNode = xmlParser.parseText(volumeGroupXml)
+		def Node relationshipList = utils.getChildNode(volumeGroupNode, 'relationship-list')
+		if (relationshipList != null) {
+			def NodeList relationships = utils.getIdenticalChildren(relationshipList, 'relationship')
+			for (Node relationship in relationships) {
+				def Node relatedTo = utils.getChildNode(relationship, 'related-to')
+				if ((relatedTo != null) && (relatedTo.text().equals('vf-module'))) {
+					def Node relatedLink = utils.getChildNode(relationship, 'related-link')
+					if (relatedLink !=null && relatedLink.text() != null){
+						return true
+					}
+				}
+			}
+		}
+		return false
+	}
+
+	public void prepareVnfAdapterDeleteRequest(DelegateExecution execution, isDebugLogEnabled) {
+		def cloudRegion = execution.getVariable('DELVfModVol_cloudRegion')
+		def tenantId = execution.getVariable('DELVfModVol_tenantId')
+		def volumeGroupId = execution.getVariable('DELVfModVol_volumeGroupId')
+		def volumeGroupHeatStackId = execution.getVariable('DELVfModVol_volumeGroupHeatStackId')
+		def requestId = execution.getVariable('DELVfModVol_requestId')
+		def serviceId = execution.getVariable('DELVfModVol_serviceId')
+
+		def messageId = execution.getVariable('DELVfModVol_messageId')
+		def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId) 
+		def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host", execution)
+		if ('true'.equals(useQualifiedHostName)) {
+				notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
+		}
+
+		String vnfAdapterRestRequest = """
+			<deleteVolumeGroupRequest>
+				<cloudSiteId>${MsoUtils.xmlEscape(cloudRegion)}</cloudSiteId>
+				<tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
+				<volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId>
+				<volumeGroupStackId>${MsoUtils.xmlEscape(volumeGroupHeatStackId)}</volumeGroupStackId>
+				<skipAAI>true</skipAAI>
+			    <msoRequest>
+			        <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+			        <serviceInstanceId>${MsoUtils.xmlEscape(serviceId)}</serviceInstanceId>
+			    </msoRequest>
+			    <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
+			    <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
+			</deleteVolumeGroupRequest>
+		"""
+		vnfAdapterRestRequest = utils.formatXml(vnfAdapterRestRequest)
+		execution.setVariable('DELVfModVol_deleteVnfARequest', vnfAdapterRestRequest)
+		msoLogger.debug('Request for VNFAdapter Rest:\n' + vnfAdapterRestRequest)
+	}
+
+
+	public void deleteVolGrpId(DelegateExecution execution, isDebugEnabled) {
+
+		// get variables
+		String queryAAIVolGrpIdResponse = execution.getVariable("DELVfModVol_queryAAIVolGrpResponse")
+		String groupId = utils.getNodeText(queryAAIVolGrpIdResponse, "volume-group-id")
+		String resourceVersion = utils.getNodeText(queryAAIVolGrpIdResponse, "resource-version")
+		String messageId = execution.getVariable('DELVfModVol_messageId')
+		String cloudRegion = execution.getVariable('DELVfModVol_aicCloudRegion')
+
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+		String deleteAAIVolumeGrpIdRequest = aaiEndpoint + '/' + URLEncoder.encode(cloudRegion, "UTF-8")  + "/volume-groups/volume-group/" +  UriUtils.encode(groupId, "UTF-8")
+
+		if(resourceVersion !=null){
+			deleteAAIVolumeGrpIdRequest = deleteAAIVolumeGrpIdRequest +'?resource-version=' + UriUtils.encode(resourceVersion, 'UTF-8')
+		}
+
+		msoLogger.debug("Delete AAI volume group : " + deleteAAIVolumeGrpIdRequest)
+
+		APIResponse response = aaiUtil.executeAAIDeleteCall(execution, deleteAAIVolumeGrpIdRequest)
+
+		String returnCode = response.getStatusCode()
+		String aaiResponseAsString = response.getResponseBodyAsString()
+
+		msoLogger.debug("AAI delete volume group return code: " + returnCode)
+		msoLogger.debug("AAI delete volume group response: " + aaiResponseAsString)
+
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+		if (returnCode=='200' || (returnCode == '204')) {
+			msoLogger.debug("Volume group $groupId deleted.")
+		} else {
+			if (returnCode=='404') {
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume group $groupId not found for delete in AAI Response code: 404")
+			} else {
+				WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}
+	}
+
+
+	public void prepareDBRequest (DelegateExecution execution, isDebugLogEnabled) {
+
+		WorkflowException workflowExceptionObj = execution.getVariable("WorkflowException")
+		ExceptionUtil exceptionUtil = new ExceptionUtil();
+		def requestId = execution.getVariable('DELVfModVol_requestId')
+		def volOutputs = execution.getVariable('DELVfModVol_volumeOutputs')
+		def statusMessage = "VolumeGroup successfully deleted"
+		def progress = "100"
+		def requestStatus = "COMPLETE"
+
+		if (workflowExceptionObj != null) {
+			statusMessage = (workflowExceptionObj.getErrorMessage())
+			execution.setVariable("DELVfModVol_WorkflowExceptionMessage", statusMessage)
+			execution.setVariable("DELVfModVol_WorkflowExceptionCode", workflowExceptionObj.getErrorCode())
+			requestStatus = "FAILURE"
+			progress = ""
+		}
+		
+		String updateInfraRequest = """
+			<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+					xmlns:req="http://org.onap.so/requestsdb">
+				<soapenv:Header/>
+				<soapenv:Body>
+					<req:updateInfraRequest>
+						<requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+						<lastModifiedBy>BPMN</lastModifiedBy>
+						<statusMessage>${MsoUtils.xmlEscape(statusMessage)}</statusMessage>
+						<requestStatus>${MsoUtils.xmlEscape(requestStatus)}</requestStatus>
+						<progress>${MsoUtils.xmlEscape(progress)}</progress>
+						<vnfOutputs>${MsoUtils.xmlEscape(volOutputs)}</vnfOutputs>
+					</req:updateInfraRequest>
+				</soapenv:Body>
+			</soapenv:Envelope>
+		"""
+
+		updateInfraRequest = utils.formatXml(updateInfraRequest)
+		execution.setVariable('DELVfModVol_updateInfraRequest', updateInfraRequest)
+		msoLogger.debug('Request for Update Infra Request:\n' + updateInfraRequest)
+
+	}
+
+
+	public void prepareCompletionHandlerRequest (DelegateExecution execution, isDebugLogEnabled) {
+		def requestId = execution.getVariable("mso-request-id")
+		def source = execution.getVariable("DELVfModVol_source")
+
+		String msoCompletionRequest =
+			"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+							xmlns:ns="http://org.onap/so/request/types/v1">
+					<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+						<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+						<action>DELETE</action>
+						<source>${MsoUtils.xmlEscape(source)}</source>
+		   			</request-info>
+					<aetgt:status-message>Volume Group has been deleted successfully.</aetgt:status-message>
+		   			<aetgt:mso-bpel-name>BPMN VF Module Volume action: DELETE</aetgt:mso-bpel-name>
+				</aetgt:MsoCompletionRequest>"""
+
+		String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+		execution.setVariable('DELVfModVol_CompleteMsoProcessRequest', xmlMsoCompletionRequest)
+		msoLogger.debug(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest)
+
+	}
+
+
+
+	public void prepareFalloutHandler (DelegateExecution execution, isDebugEnabled) {
+
+		execution.setVariable("DELVfModVol_Success", false)
+		String requestId = execution.getVariable("DELVfModVol_requestId")
+		String source = execution.getVariable("DELVfModVol_source")
+
+		WorkflowException workflowExceptionObj = execution.getVariable("WorkflowException")
+		def errorMessage = workflowExceptionObj.getErrorMessage()
+		def errorCode =  workflowExceptionObj.getErrorCode()
+
+		String falloutHandlerRequest =
+		    """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+				                             xmlns:ns="http://org.onap/so/request/types/v1"
+				                             xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
+				   <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+				      <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+				      <action>DELETE</action>
+				      <source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>
+					<aetgt:WorkflowException>
+				      <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+				      <aetgt:ErrorCode>${MsoUtils.xmlEscape(errorCode)}</aetgt:ErrorCode>
+					</aetgt:WorkflowException>
+				</aetgt:FalloutHandlerRequest>"""
+
+		// Format Response
+		String xmlHandlerRequest = utils.formatXml(falloutHandlerRequest)
+		msoLogger.debug(xmlHandlerRequest)
+
+		execution.setVariable("DELVfModVol_FalloutHandlerRequest", xmlHandlerRequest)
+		msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "  Overall Error Response going to FalloutHandler", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "\n" + xmlHandlerRequest);
+
+	}
+
+
+	/**
+	 * Create a WorkflowException for the error case where the Tenant Id from
+	 * AAI did not match the Tenant Id in the incoming request.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void handleTenantIdMismatch(DelegateExecution execution, isDebugLogEnabled) {
+
+		def volumeGroupId = execution.getVariable('DELVfModVol_volumeGroupId')
+		def aicCloudRegion = execution.getVariable('DELVfModVol_aicCloudRegion')
+		def tenantId = execution.getVariable('DELVfModVol_tenantId')
+		def volumeGroupTenantId = execution.getVariable('DELVfModVol_volumeGroupTenantId')
+
+		def String errorMessage = 'TenantId ' + tenantId + ' in incoming request does not match Tenant Id ' + volumeGroupTenantId +
+			' retrieved from AAI for Volume Group Id ' + volumeGroupId
+		msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Error in DeleteVfModuleVolume: " + "\n" + errorMessage, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError);
+
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+		exceptionUtil.buildWorkflowException(execution, 5000, errorMessage)
+
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVnfInfra.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVnfInfra.groovy
new file mode 100644
index 0000000..9dfb910
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DeleteVnfInfra.groovy
@@ -0,0 +1,207 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor;
+import org.onap.so.bpmn.common.scripts.ExceptionUtil;
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.VidUtils;
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils;
+import org.onap.so.logger.MsoLogger
+
+
+/**
+ * This class supports the DeleteVnfInfra Flow
+ * with the Deletion of a generic vnf for
+ * infrastructure.
+ */
+class DeleteVnfInfra extends AbstractServiceTaskProcessor {
+
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DeleteVnfInfra.class);
+	
+	String Prefix="DELVI_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils(this)
+
+	/**
+	 * This method gets and validates the incoming
+	 * request.
+	 *
+	 * @param - execution
+	 */
+	public void preProcessRequest(DelegateExecution execution) {
+		execution.setVariable("prefix",Prefix)
+		msoLogger.trace("STARTED DeleteVnfInfra PreProcessRequest Process")
+
+		execution.setVariable("DELVI_SuccessIndicator", false)
+		execution.setVariable("DELVI_vnfInUse", false)
+
+		try{
+			// Get Variables
+			String deleteVnfRequest = execution.getVariable("bpmnRequest")
+			execution.setVariable("DELVI_DeleteVnfRequest", deleteVnfRequest)
+			msoLogger.debug("Incoming DeleteVnfInfra Request is: \n" + deleteVnfRequest)
+
+			if(deleteVnfRequest != null){
+
+				String requestId = execution.getVariable("mso-request-id")
+				execution.setVariable("DELVI_requestId", requestId)
+
+				String serviceInstanceId = execution.getVariable("serviceInstanceId")
+				execution.setVariable("DELVI_serviceInstanceId", serviceInstanceId)
+				msoLogger.debug("Incoming Service Instance Id is: " + serviceInstanceId)
+
+				String vnfId = execution.getVariable("vnfId")
+				execution.setVariable("DELVI_vnfId", vnfId)
+				msoLogger.debug("Incoming Vnf(Instance) Id is: " + vnfId)
+
+				String source = jsonUtil.getJsonValue(deleteVnfRequest, "requestDetails.requestInfo.source")
+				execution.setVariable("DELVI_source", source)
+				msoLogger.debug("Incoming Source is: " + source)
+				
+				def cloudConfiguration = jsonUtil.getJsonValue(deleteVnfRequest, "requestDetails.cloudConfiguration")
+				execution.setVariable("DELVI_cloudConfiguration", cloudConfiguration)
+				
+				boolean cascadeDelete = false
+				Boolean cascadeDeleteObj = jsonUtil.getJsonRawValue(deleteVnfRequest, "requestDetails.requestParameters.cascadeDelete")
+				if(cascadeDeleteObj!=null){
+					cascadeDelete = cascadeDeleteObj.booleanValue()
+				}
+				execution.setVariable("DELVI_cascadeDelete", cascadeDelete)
+				msoLogger.debug("Incoming cascadeDelete is: " + cascadeDelete)
+
+				//For Completion Handler & Fallout Handler
+				String requestInfo =
+				"""<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>DELETE</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+
+				execution.setVariable("DELVI_requestInfo", requestInfo)
+
+				// Setting for sub flow calls
+				execution.setVariable("DELVI_type", "generic-vnf")
+
+			}else{
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Incoming Bpmn Request is Null.")
+			}
+
+		}catch(BpmnError b){
+			msoLogger.debug("Rethrowing MSOWorkflowException")
+			throw b
+		}catch(Exception e){
+			msoLogger.debug(" Error Occured in DeleteVnfInfra PreProcessRequest method!" + e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DeleteVnfInfra PreProcessRequest")
+
+		}
+		msoLogger.trace("COMPLETED DeleteVnfInfra PreProcessRequest Process")
+	}
+
+	public void sendSyncResponse (DelegateExecution execution) {
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("STARTED DeleteVnfInfra SendSyncResponse Process")
+
+		try {
+			String requestId = execution.getVariable("DELVI_requestId")
+			String vnfId = execution.getVariable("DELVI_vnfId")
+
+			String DeleteVnfResponse = """{"requestReferences":{"instanceId":"${vnfId}","requestId":"${requestId}"}}""".trim()
+
+			msoLogger.debug("DeleteVnfInfra Sync Response is: \n"  + DeleteVnfResponse)
+			execution.setVariable("DELVI_sentSyncResponse", true)
+
+			sendWorkflowResponse(execution, 202, DeleteVnfResponse)
+
+		} catch (Exception ex) {
+			msoLogger.debug("Error Occured in DeleteVnfInfra SendSyncResponse Process " + ex.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DeleteVnfInfra SendSyncResponse Process")
+
+		}
+		msoLogger.trace("COMPLETED DeleteVnfInfra SendSyncResponse Process")
+	}
+
+	public void prepareCompletionHandlerRequest(DelegateExecution execution){
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("STARTED DeleteVnfInfra PrepareCompletionHandlerRequest Process")
+
+		try {
+			String requestInfo = execution.getVariable("DELVI_requestInfo")
+			requestInfo = utils.removeXmlPreamble(requestInfo)
+			String vnfId = execution.getVariable("DELVI_vnfId")
+
+			String request =
+				"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+									xmlns:ns="http://org.onap/so/request/types/v1">
+							${requestInfo}
+							<status-message>Vnf has been deleted successfully.</status-message>
+							<vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId>
+							<mso-bpel-name>DeleteVnfInfra</mso-bpel-name>
+						</aetgt:MsoCompletionRequest>"""
+
+			execution.setVariable("DELVI_completionHandlerRequest", request)
+			msoLogger.debug("Completion Handler Request is: " + request)
+
+			execution.setVariable("WorkflowResponse", "Success") // for junits
+
+		} catch (Exception ex) {
+			msoLogger.debug("Error Occured in DeleteVnfInfra PrepareCompletionHandlerRequest Process " + ex.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DeleteVnfInfra PrepareCompletionHandlerRequest Process")
+
+		}
+		msoLogger.trace("COMPLETED DeleteVnfInfra PrepareCompletionHandlerRequest Process")
+	}
+
+	public void sendErrorResponse(DelegateExecution execution){
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("STARTED DeleteVnfInfra sendErrorResponse Process")
+		try {
+			def sentSyncResponse = execution.getVariable("DELVI_sentSyncResponse")
+			if(sentSyncResponse == false){
+				msoLogger.debug("Sending a Sync Error Response")
+				WorkflowException wfex = execution.getVariable("WorkflowException")
+				String response = exceptionUtil.buildErrorResponseXml(wfex)
+
+				msoLogger.debug(response)
+				sendWorkflowResponse(execution, 500, response)
+			}else{
+				msoLogger.debug("A Sync Response has already been sent. Skipping Send Sync Error Response.")
+			}
+
+		} catch(Exception ex) {
+			msoLogger.debug("Error Occured in DeleteVnfInfra sendErrorResponse Process " + ex.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DeleteVnfInfra sendErrorResponse Process")
+		}
+		msoLogger.trace("COMPLETED DeleteVnfInfra sendErrorResponse Process")
+	}
+
+
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareModelVersions.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareModelVersions.groovy
new file mode 100644
index 0000000..98605fe
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareModelVersions.groovy
@@ -0,0 +1,258 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. 
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.bpmn.infrastructure.scripts;
+
+import static org.apache.commons.lang3.StringUtils.*;
+import groovy.xml.XmlUtil
+import groovy.json.*
+
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.bpmn.core.domain.ServiceInstance
+import org.onap.so.bpmn.core.domain.ModelInfo
+import org.onap.so.bpmn.core.domain.Resource
+import org.onap.so.bpmn.core.domain.AllottedResource
+import org.onap.so.bpmn.core.domain.NetworkResource
+import org.onap.so.bpmn.core.domain.VnfResource
+import org.onap.so.bpmn.common.recipe.ResourceInput
+import org.onap.so.bpmn.common.recipe.BpmnRestClient
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.common.scripts.CatalogDbUtils;
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.rest.APIResponse;
+import org.onap.so.rest.RESTClient
+import org.onap.so.rest.RESTConfig
+
+import java.util.List;
+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.*
+import org.apache.commons.codec.binary.Base64;
+import org.springframework.web.util.UriUtils;
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+
+
+/**
+ * This groovy class supports the <class>DoCompareModelVersions.bpmn</class> process.
+ *
+ * Inputs:
+ * @param - model-invariant-id-target
+ * @param - model-version-id-target
+ * @param - model-invariant-id-original
+ * @param - model-version-id-original
+ *
+ * Outputs:
+ * @param - addResourceList
+ * @param - delResourceList
+ *
+ */
+public class DoCompareModelVersions extends AbstractServiceTaskProcessor {
+
+	String Prefix="DCMPMDV_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	CatalogDbUtils cutils = new CatalogDbUtils()
+
+	public void preProcessRequest (DelegateExecution execution) {
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("INFO"," ***** preProcessRequest *****",  isDebugEnabled)
+
+		try {
+			execution.setVariable("prefix", Prefix)
+			
+			//Inputs
+			String modelInvariantUuid_target = execution.getVariable("model-invariant-id-target")
+			if (isBlank(modelInvariantUuid_target)) {
+				msg = "Input model-invariant-id-target is null"
+				utils.log("INFO", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}			
+			
+            String modelUuid_target = execution.getVariable("model-version-id-target")
+            if (isBlank(modelUuid_target)) {
+				msg = "Input model-version-id-target is null"
+				utils.log("INFO", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+            
+            String modelInvariantUuid_original = execution.getVariable("model-invariant-id-original")
+            if (isBlank(modelInvariantUuid_original)) {
+				msg = "Input model-invariant-id-original is null"
+				utils.log("INFO", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+            
+            String modelUuid_original = execution.getVariable("model-version-id-original")
+            if (isBlank(modelUuid_original)) {
+				msg = "Input model-version-id-original is null"
+				utils.log("INFO", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}  
+			
+			// Target and original modelInvariantUuid must to be the same
+			if(modelInvariantUuid_target != modelInvariantUuid_original){
+				msg = "Input model-invariant-id-target and model-invariant-id-original must to be the same"
+				utils.log("INFO", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)      
+			}
+			
+			// Target and original modelUuid must not to be the same
+			if(modelUuid_target == modelUuid_original){
+				msg = "Input model-version-id-target and model-version-id-original must not to be the same"
+				utils.log("INFO", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)      
+			}
+
+		} 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 prepareDecomposeService_Target(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+        try {
+            utils.log("DEBUG", " ***** Inside prepareDecomposeService_Target of update generic e2e service ***** ", isDebugEnabled)
+            String modelInvariantUuid = execution.getVariable("model-invariant-id-target")
+            String modelUuid = execution.getVariable("model-version-id-target")
+            //here modelVersion is not set, we use modelUuid to decompose the service.
+            String serviceModelInfo = """{
+            "modelInvariantUuid":"${modelInvariantUuid}",
+            "modelUuid":"${modelUuid}",
+            "modelVersion":""
+             }"""
+            
+            execution.setVariable("serviceModelInfo_Target", serviceModelInfo)
+
+            utils.log("DEBUG", " ***** Completed prepareDecomposeService_Target of update generic e2e service ***** ", isDebugEnabled)
+        } catch (Exception ex) {
+            // try error in method block
+            String exceptionMessage = "Bpmn error encountered in update generic e2e service flow. Unexpected Error from method prepareDecomposeService_Target() - " + ex.getMessage()
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+     }
+
+    public void processDecomposition_Target(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+    
+        utils.log("DEBUG", " ***** Inside processDecomposition_Target() of update generic e2e service flow ***** ", isDebugEnabled)    
+        try {
+            ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+            execution.setVariable("serviceDecomposition_Target", serviceDecomposition)
+        } catch (Exception ex) {
+            String exceptionMessage = "Bpmn error encountered in update generic e2e service flow. Unexpected Error from method processDecomposition_Target() - " + ex.getMessage()
+            utils.log("DEBUG", exceptionMessage, isDebugEnabled)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    }
+ 
+   public void prepareDecomposeService_Original(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+        try {
+            utils.log("DEBUG", " ***** Inside prepareDecomposeService_Original of update generic e2e service ***** ", isDebugEnabled)
+            String modelInvariantUuid = execution.getVariable("model-invariant-id-original")
+            String modelUuid = execution.getVariable("model-version-id-original")
+            //here modelVersion is not set, we use modelUuid to decompose the service.
+            String serviceModelInfo = """{
+            "modelInvariantUuid":"${modelInvariantUuid}",
+            "modelUuid":"${modelUuid}",
+            "modelVersion":""
+             }"""
+            
+            execution.setVariable("serviceModelInfo_Original", serviceModelInfo)
+
+            utils.log("DEBUG", " ***** Completed prepareDecomposeService_Original of update generic e2e service ***** ", isDebugEnabled)
+        } catch (Exception ex) {
+            // try error in method block
+            String exceptionMessage = "Bpmn error encountered in update generic e2e service flow. Unexpected Error from method prepareDecomposeService_Original() - " + ex.getMessage()
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+     }
+
+    public void processDecomposition_Original(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+    
+        utils.log("DEBUG", " ***** Inside processDecomposition_Original() of update generic e2e service flow ***** ", isDebugEnabled)    
+        try {
+            ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+            execution.setVariable("serviceDecomposition_Original", serviceDecomposition)
+        } catch (Exception ex) {
+            String exceptionMessage = "Bpmn error encountered in update generic e2e service flow. processDecomposition_Original() - " + ex.getMessage()
+            utils.log("DEBUG", exceptionMessage, isDebugEnabled)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    } 	
+
+	public void doCompareModelVersions(DelegateExecution execution){
+	    def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO", "======== Start doCompareModelVersions Process ======== ", isDebugEnabled)          
+
+        ServiceDecomposition serviceDecomposition_Target = execution.getVariable("serviceDecomposition_Target")
+        ServiceDecomposition serviceDecomposition_Original = execution.getVariable("serviceDecomposition_Original")
+        
+        List<Resource> allSR_target = serviceDecomposition_Target.getServiceResources();
+        List<Resource> allSR_original = serviceDecomposition_Original.getServiceResources();
+        
+        List<Resource> addResourceList = new ArrayList<String>()
+        List<Resource> delResourceList = new ArrayList<String>()
+        
+        addResourceList.addAll(allSR_target)
+        delResourceList.addAll(allSR_original)
+        
+        //Compare
+        for (Resource rc_t : allSR_target){
+            String muuid = rc_t.getModelInfo().getModelUuid()
+            String mIuuid = rc_t.getModelInfo().getModelInvariantUuid()
+            String mCuuid = rc_t.getModelInfo().getModelCustomizationUuid()
+            for (Resource rc_o : allSR_original){
+                if(rc_o.getModelInfo().getModelUuid() == muuid 
+                && rc_o.getModelInfo().getModelInvariantUuid() == mIuuid 
+                && rc_o.getModelInfo().getModelCustomizationUuid() == mCuuid) {
+                    addResourceList.remove(rc_t);
+                    delResourceList.remove(rc_o);
+                }
+            }         
+        }
+
+        execution.setVariable("addResourceList", addResourceList)
+        execution.setVariable("delResourceList", delResourceList)
+        utils.log("INFO", "addResourceList: " + addResourceList, isDebugEnabled)  
+        utils.log("INFO", "delResourceList: " + delResourceList, isDebugEnabled)
+        
+        utils.log("INFO", "======== COMPLETED doCompareModelVersions Process ======== ", isDebugEnabled)  
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareModelofE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareModelofE2EServiceInstance.groovy
new file mode 100644
index 0000000..eceba5a
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareModelofE2EServiceInstance.groovy
@@ -0,0 +1,260 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. 
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.bpmn.infrastructure.scripts;
+
+import static org.apache.commons.lang3.StringUtils.*;
+import groovy.xml.XmlUtil
+import groovy.json.*
+
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.bpmn.core.domain.ServiceInstance
+import org.onap.so.bpmn.core.domain.ModelInfo
+import org.onap.so.bpmn.core.domain.Resource
+import org.onap.so.bpmn.core.domain.CompareModelsResult
+import org.onap.so.bpmn.core.domain.ResourceModelInfo
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.common.resource.ResourceRequestBuilder
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.rest.APIResponse;
+import org.onap.so.rest.RESTClient
+import org.onap.so.rest.RESTConfig
+
+
+import java.util.List
+import java.util.Map
+import java.util.UUID;
+import javax.xml.parsers.DocumentBuilder
+import javax.xml.parsers.DocumentBuilderFactory
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.json.JSONObject;
+import org.json.JSONArray;
+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
+/**
+ * This groovy class supports the <class>DoCompareModelofE2EServiceInstance.bpmn</class> process.
+ *
+ * Inputs:
+ * @param - msoRequestId
+ * @param - globalSubscriberId
+ * @param - subscriptionServiceType
+ * @param - serviceInstanceId
+ * @param - modelInvariantIdTarget
+ * @param - modelVersionIdTarget
+ *
+ * Outputs:
+ * @param - compareModelsResult CompareModelsResult
+
+ */
+public class DoCompareModelofE2EServiceInstance extends AbstractServiceTaskProcessor {
+
+	String Prefix="DCMPMDSI_"
+	private static final String DebugFlag = "isDebugEnabled"
+	
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	public void preProcessRequest (DelegateExecution execution) {
+
+		def method = getClass().getSimpleName() + '.preProcessRequest(' +'execution=' + execution.getId() +')'
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO","Entered " + method, isDebugEnabled)
+		String msg = ""
+		utils.log("INFO"," ***** Enter DoCompareModelofE2EServiceInstance preProcessRequest *****",  isDebugEnabled)
+
+		execution.setVariable("prefix", Prefix)
+		//Inputs
+		
+		//subscriberInfo. for AAI GET
+		String globalSubscriberId = execution.getVariable("globalSubscriberId")
+		utils.log("INFO"," ***** globalSubscriberId *****" + globalSubscriberId,  isDebugEnabled)
+		
+		String serviceType = execution.getVariable("serviceType")
+		utils.log("INFO"," ***** serviceType *****" + serviceType,  isDebugEnabled)
+
+		if (isBlank(globalSubscriberId)) {
+			msg = "Input globalSubscriberId is null"
+			utils.log("INFO", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+		}
+
+		if (isBlank(serviceType)) {
+			msg = "Input serviceType is null"
+			utils.log("INFO", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+		}
+
+		String serviceInstanceId = execution.getVariable("serviceInstanceId")
+		if (isBlank(serviceInstanceId)){
+			msg = "Input serviceInstanceId is null"
+			utils.log("INFO", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+		}
+
+		String modelInvariantUuid = execution.getVariable("modelInvariantIdTarget")
+		if (isBlank(modelInvariantUuid)){
+			msg = "Input modelInvariantUuid is null"
+			utils.log("INFO", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+		}
+
+		String modelUuid = execution.getVariable("modelVersionIdTarget")
+		if (isBlank(modelUuid)){
+			msg = "Input modelUuid is null"
+			utils.log("INFO", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+		}
+
+		// Set Target Template info
+		execution.setVariable("model-invariant-id-target", modelInvariantUuid)
+		execution.setVariable("model-version-id-target", modelUuid)
+
+
+		utils.log("INFO", "Exited " + method, isDebugEnabled)
+	}
+	
+	public void postProcessAAIGET(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO"," ***** postProcessAAIGET ***** ", isDebugEnabled)
+		String msg = ""
+
+		try {
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator")
+			String serviceType = ""
+
+			if(foundInAAI){
+				utils.log("INFO","Found Service-instance in AAI", isDebugEnabled)
+
+				String siData = execution.getVariable("GENGS_service")
+				utils.log("INFO", "SI Data", isDebugEnabled)
+				if (isBlank(siData))
+				{
+					msg = "Could not retrive ServiceInstance data from AAI, Id:" + serviceInstanceId
+					utils.log("INFO", msg, isDebugEnabled)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+				}
+				else
+				{
+					utils.log("INFO", "SI Data" + siData, isDebugEnabled)
+					
+					// Get Template uuid and version
+					if (utils.nodeExists(siData, "model-invariant-id") && utils.nodeExists(siData, "model-version-id") ) {
+					    utils.log("INFO", "SI Data model-invariant-id and model-version-id exist", isDebugEnabled)
+						
+					    def modelInvariantId  = utils.getNodeText(siData, "model-invariant-id")
+					    def modelVersionId  = utils.getNodeText(siData, "model-version-id")
+					    
+					    // Set Original Template info
+					    execution.setVariable("model-invariant-id-original", modelInvariantId)
+					    execution.setVariable("model-version-id-original", modelVersionId)					
+					}					
+				}
+			}else{
+				boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")
+				if(!succInAAI){
+					utils.log("INFO","Error getting Service-instance from AAI", + serviceInstanceId, isDebugEnabled)
+					WorkflowException workflowException = execution.getVariable("WorkflowException")
+					utils.logAudit("workflowException: " + workflowException)
+					if(workflowException != null){
+						exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+					}
+					else
+					{
+						msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI
+						utils.log("INFO", msg, isDebugEnabled)
+						exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+					}
+				}
+
+				utils.log("INFO","Service-instance NOT found in AAI. Silent Success", isDebugEnabled)
+			}
+		}catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoDeleteE2EServiceInstance.postProcessAAIGET. " + ex.getMessage()
+			utils.log("INFO", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit postProcessAAIGET ")
+	}
+
+	public void postCompareModelVersions(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+				
+		List<Resource> addResourceList = execution.getVariable("addResourceList")
+		List<Resource> delResourceList = execution.getVariable("delResourceList")
+		
+		CompareModelsResult cmpResult = new CompareModelsResult()
+		List<ResourceModelInfo> addedResourceList = new ArrayList<ResourceModelInfo>()
+		List<ResourceModelInfo> deletedResourceList = new ArrayList<ResourceModelInfo>()
+		
+		
+		String serviceModelUuid = execution.getVariable("model-version-id-target")
+        List<String> requestInputs = new ArrayList<String>()
+		ModelInfo mi = null;
+		for(Resource rc : addResourceList) {
+			mi = rc.getModelInfo()
+			String resourceCustomizationUuid = mi.getModelCustomizationUuid()
+			ResourceModelInfo rmodel = new ResourceModelInfo()
+			rmodel.setResourceName(mi.getModelName())
+			rmodel.setResourceInvariantUuid(mi.getModelInvariantUuid())
+			rmodel.setResourceUuid(mi.getModelUuid())
+			rmodel.setResourceCustomizationUuid(resourceCustomizationUuid)
+			addedResourceList.add(rmodel)
+			
+			Map<String, Object> resourceParameters = ResourceRequestBuilder.buildResouceRequest(serviceModelUuid, resourceCustomizationUuid, null)
+			requestInputs.addAll(resourceParameters.keySet())			
+		}
+		
+		for(Resource rc : delResourceList) {
+			mi = rc.getModelInfo()
+			String resourceCustomizationUuid = mi.getModelCustomizationUuid()
+			ResourceModelInfo rmodel = new ResourceModelInfo()
+			rmodel.setResourceName(mi.getModelName())
+			rmodel.setResourceInvariantUuid(mi.getModelInvariantUuid())
+			rmodel.setResourceUuid(mi.getModelUuid())
+			rmodel.setResourceCustomizationUuid(resourceCustomizationUuid)
+			deletedResourceList.add(rmodel)			
+		}
+		
+		cmpResult.setAddedResourceList(addedResourceList)
+		cmpResult.setDeletedResourceList(deletedResourceList)
+		cmpResult.setRequestInputs(requestInputs)	
+
+		execution.setVariable("compareModelsResult", cmpResult)
+	}
+	
+}
+	
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstance.groovy
new file mode 100644
index 0000000..bb48671
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstance.groovy
@@ -0,0 +1,451 @@
+/*-
+ * ============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.onap.so.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.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.CatalogDbUtils;
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.domain.Resource
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.springframework.web.util.UriUtils;
+
+import groovy.json.*
+
+
+
+/**
+ * This groovy class supports the <class>DoCreateServiceInstance.bpmn</class> process.
+ *
+ * Inputs:
+ * @param - msoRequestId
+ * @param - globalSubscriberId
+ * @param - subscriptionServiceType
+ * @param - serviceInstanceId
+ * @param - serviceInstanceName - O
+ * @param - serviceModelInfo
+ * @param - productFamilyId
+ * @param - disableRollback
+ * @param - failExists - TODO
+ * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM)
+ * @param - sdncVersion ("1610")
+ * @param - serviceDecomposition - Decomposition for R1710 
+ * (if macro provides serviceDecompsition then serviceModelInfo, serviceInstanceId & serviceInstanceName will be ignored)
+ *
+ * Outputs:
+ * @param - rollbackData (localRB->null)
+ * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true)
+ * @param - WorkflowException
+ * @param - serviceInstanceName - (GET from AAI if null in input)
+ *
+ */
+public class DoCreateE2EServiceInstance extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateE2EServiceInstance.class);
+
+
+	String Prefix="DCRESI_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	CatalogDbUtils cutils = new CatalogDbUtils()
+
+	public void preProcessRequest (DelegateExecution execution) {
+		String msg = ""
+		msoLogger.trace("preProcessRequest ")
+
+		try {
+			execution.setVariable("prefix", Prefix)
+			//Inputs
+			//requestDetails.subscriberInfo. for AAI GET & PUT & SDNC assignToplology
+			String globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId
+			msoLogger.info(" ***** globalSubscriberId *****" + globalSubscriberId)
+			//requestDetails.requestParameters. for AAI PUT & SDNC assignTopology
+			String serviceType = execution.getVariable("serviceType")
+			msoLogger.info(" ***** serviceType *****" + serviceType)
+			//requestDetails.requestParameters. for SDNC assignTopology
+			String productFamilyId = execution.getVariable("productFamilyId") //AAI productFamilyId
+
+			if (isBlank(globalSubscriberId)) {
+				msg = "Input globalSubscriberId is null"
+				msoLogger.info(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			
+			if (isBlank(serviceType)) {
+				msg = "Input serviceType is null"
+				msoLogger.info(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			
+			if (productFamilyId == null) {
+				execution.setVariable("productFamilyId", "")
+			}
+			
+			String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback')
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "URN_mso_workflow_sdncadapter_callback is null"
+				msoLogger.info(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			msoLogger.info("SDNC Callback URL: " + sdncCallbackUrl)
+
+			//requestDetails.modelInfo.for AAI PUT servieInstanceData 			
+			//requestDetails.requestInfo. for AAI GET/PUT serviceInstanceData 
+			String serviceInstanceName = execution.getVariable("serviceInstanceName")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String uuiRequest = execution.getVariable("uuiRequest")
+			String modelInvariantUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceInvariantUuid")
+			String modelUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceUuid")
+			String serviceModelName = jsonUtil.getJsonValue(uuiRequest, "service.parameters.templateName")
+			execution.setVariable("serviceModelName", serviceModelName)
+			//aai serviceType and Role can be setted as fixed value now.
+			String aaiServiceType = "E2E Service"
+			String aaiServiceRole = "E2E Service"
+			
+			execution.setVariable("modelInvariantUuid", modelInvariantUuid)
+			execution.setVariable("modelUuid", modelUuid)
+
+			//AAI PUT
+			String oStatus = execution.getVariable("initialStatus") ?: ""
+			if ("TRANSPORT".equalsIgnoreCase(serviceType))
+			{
+				oStatus = "Created"
+			}
+
+			String statusLine = isBlank(oStatus) ? "" : "<orchestration-status>${MsoUtils.xmlEscape(oStatus)}</orchestration-status>"
+				
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String aai_uri = aaiUriUtil.getBusinessCustomerUri(execution)
+			String namespace = aaiUriUtil.getNamespaceFromUri(aai_uri)
+			String serviceInstanceData =
+					"""<service-instance xmlns=\"${namespace}\">
+			        <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+			        <service-instance-name>${MsoUtils.xmlEscape(serviceInstanceName)}</service-instance-name>
+					<service-type>${MsoUtils.xmlEscape(aaiServiceType)}</service-type>
+					<service-role>${MsoUtils.xmlEscape(aaiServiceRole)}</service-role>
+					${statusLine}
+				    <model-invariant-id>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-id>
+				    <model-version-id>${MsoUtils.xmlEscape(modelUuid)}</model-version-id>
+					</service-instance>""".trim()					
+			execution.setVariable("serviceInstanceData", serviceInstanceData)
+			msoLogger.debug(serviceInstanceData)
+			msoLogger.info(" aai_uri " + aai_uri + " namespace:" + namespace)
+			msoLogger.info(" 'payload' to create Service Instance in AAI - " + "\n" + serviceInstanceData)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit preProcessRequest ")
+	}
+	
+   public void prepareDecomposeService(DelegateExecution execution) {
+        try {
+            msoLogger.trace("Inside prepareDecomposeService of create generic e2e service ")
+            String modelInvariantUuid = execution.getVariable("modelInvariantUuid")
+            String modelUuid = execution.getVariable("modelUuid")
+            //here modelVersion is not set, we use modelUuid to decompose the service.
+            String serviceModelInfo = """{
+            "modelInvariantUuid":"${modelInvariantUuid}",
+            "modelUuid":"${modelUuid}",
+            "modelVersion":""
+             }"""
+            execution.setVariable("serviceModelInfo", serviceModelInfo)
+
+            msoLogger.trace("Completed prepareDecomposeService of  create generic e2e service ")
+        } catch (Exception ex) {
+            // try error in method block
+            String exceptionMessage = "Bpmn error encountered in  create generic e2e service flow. Unexpected Error from method prepareDecomposeService() - " + ex.getMessage()
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+     }
+
+    public void processDecomposition(DelegateExecution execution) {
+        msoLogger.trace("Inside processDecomposition() of  create generic e2e service flow ")    
+        try {
+            ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+        } catch (Exception ex) {
+            String exceptionMessage = "Bpmn error encountered in  create generic e2e service flow. processDecomposition() - " + ex.getMessage()
+            msoLogger.debug(exceptionMessage)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    }
+    
+    public void doServicePreOperation(DelegateExecution execution){
+       //we need a service plugin platform here. 
+    	ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+    	String uuiRequest = execution.getVariable("uuiRequest")		
+    	String newUuiRequest = ServicePluginFactory.getInstance().preProcessService(serviceDecomposition, uuiRequest);
+    	execution.setVariable("uuiRequest", newUuiRequest)	
+    }
+    
+    public void doServiceHoming(DelegateExecution execution) {
+    	//we need a service plugin platform here. 
+    	ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+    	String uuiRequest = execution.getVariable("uuiRequest")		
+    	String newUuiRequest = ServicePluginFactory.getInstance().doServiceHoming(serviceDecomposition, uuiRequest);
+    	execution.setVariable("uuiRequest", newUuiRequest)	
+    }
+    
+	public void postProcessAAIGET(DelegateExecution execution) {
+		msoLogger.trace("postProcessAAIGET ")
+		String msg = ""
+
+		try {
+			String serviceInstanceName = execution.getVariable("serviceInstanceName")
+			boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")
+			if(!succInAAI){
+				msoLogger.info("Error getting Service-instance from AAI", + serviceInstanceName)
+				WorkflowException workflowException = execution.getVariable("WorkflowException")
+				msoLogger.debug("workflowException: " + workflowException)
+				if(workflowException != null){
+					exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+				}
+				else
+				{
+					msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI
+					msoLogger.info(msg)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+				}
+			}
+			else
+			{
+				boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator")
+				if(foundInAAI){
+					msoLogger.info("Found Service-instance in AAI")
+					msg = "ServiceInstance already exists in AAI:" + serviceInstanceName
+					msoLogger.info(msg)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+				}
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoCreateServiceInstance.postProcessAAIGET. " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit postProcessAAIGET ")
+	}
+
+	public void postProcessAAIPUT(DelegateExecution execution) {
+		msoLogger.trace("postProcessAAIPUT ")
+		String msg = ""
+		try {
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			boolean succInAAI = execution.getVariable("GENPS_SuccessIndicator")
+			if(!succInAAI){
+				msoLogger.info("Error putting Service-instance in AAI", + serviceInstanceId)
+				WorkflowException workflowException = execution.getVariable("WorkflowException")
+				msoLogger.debug("workflowException: " + workflowException)
+				if(workflowException != null){
+					exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+				}
+			}
+			else
+			{
+				//start rollback set up
+				RollbackData rollbackData = new RollbackData()
+				def disableRollback = execution.getVariable("disableRollback")
+				rollbackData.put("SERVICEINSTANCE", "disableRollback", disableRollback.toString())
+				rollbackData.put("SERVICEINSTANCE", "rollbackAAI", "true")
+				rollbackData.put("SERVICEINSTANCE", "serviceInstanceId", serviceInstanceId)
+				rollbackData.put("SERVICEINSTANCE", "subscriptionServiceType", execution.getVariable("subscriptionServiceType"))
+				rollbackData.put("SERVICEINSTANCE", "globalSubscriberId", execution.getVariable("globalSubscriberId"))
+				execution.setVariable("rollbackData", rollbackData)
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoCreateServiceInstance.postProcessAAIDEL. " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit postProcessAAIPUT ")
+	}
+	
+	public void postProcessAAIGET2(DelegateExecution execution) {
+		msoLogger.trace("postProcessAAIGET2 ")
+		String msg = ""
+
+		try {
+			String serviceInstanceName = execution.getVariable("serviceInstanceName")
+			boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")
+			if(!succInAAI){
+				msoLogger.info("Error getting Service-instance from AAI in postProcessAAIGET2", + serviceInstanceName)
+				WorkflowException workflowException = execution.getVariable("WorkflowException")
+				msoLogger.debug("workflowException: " + workflowException)
+				if(workflowException != null){
+					exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+				}
+				else
+				{
+					msg = "Failure in postProcessAAIGET2 GENGS_SuccessIndicator:" + succInAAI
+					msoLogger.info(msg)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+				}
+			}
+			else
+			{
+				boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator")
+				if(foundInAAI){
+					String aaiService = execution.getVariable("GENGS_service")
+					if (!isBlank(aaiService) && (utils.nodeExists(aaiService, "service-instance-name"))) {
+						execution.setVariable("serviceInstanceName",  utils.getNodeText(aaiService, "service-instance-name"))
+						msoLogger.info("Found Service-instance in AAI.serviceInstanceName:" + execution.getVariable("serviceInstanceName"))
+					}
+				}
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoCreateServiceInstance.postProcessAAIGET2 " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit postProcessAAIGET2 ")
+	}
+
+	public void preProcessRollback (DelegateExecution execution) {
+		msoLogger.trace("preProcessRollback ")
+		try {
+			
+			Object workflowException = execution.getVariable("WorkflowException");
+
+			if (workflowException instanceof WorkflowException) {
+				msoLogger.info("Prev workflowException: " + workflowException.getErrorMessage())
+				execution.setVariable("prevWorkflowException", workflowException);
+				//execution.setVariable("WorkflowException", null);
+			}
+		} catch (BpmnError e) {
+			msoLogger.info("BPMN Error during preProcessRollback")
+		} catch(Exception ex) {
+			String msg = "Exception in preProcessRollback. " + ex.getMessage()
+			msoLogger.info(msg)
+		}
+		msoLogger.trace("Exit preProcessRollback ")
+	}
+
+	public void postProcessRollback (DelegateExecution execution) {
+		msoLogger.trace("postProcessRollback ")
+		String msg = ""
+		try {
+			Object workflowException = execution.getVariable("prevWorkflowException");
+			if (workflowException instanceof WorkflowException) {
+				msoLogger.info("Setting prevException to WorkflowException: ")
+				execution.setVariable("WorkflowException", workflowException);
+			}
+			execution.setVariable("rollbackData", null)
+		} catch (BpmnError b) {
+			msoLogger.info("BPMN Error during postProcessRollback")
+			throw b;
+		} catch(Exception ex) {
+			msg = "Exception in postProcessRollback. " + ex.getMessage()
+			msoLogger.info(msg)
+		}
+		msoLogger.trace("Exit postProcessRollback ")
+	}
+
+	public void preInitResourcesOperStatus(DelegateExecution execution){
+        msoLogger.trace("STARTED preInitResourcesOperStatus Process ")
+        try{
+            String serviceId = execution.getVariable("serviceInstanceId")
+            String operationId = execution.getVariable("operationId")
+            String operationType = execution.getVariable("operationType")
+            String resourceTemplateUUIDs = ""
+            String result = "processing"
+            String progress = "0"
+            String reason = ""
+            String operationContent = "Prepare service creation"
+            msoLogger.info("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId + " operationType:" + operationType)
+            serviceId = UriUtils.encode(serviceId,"UTF-8")
+            execution.setVariable("serviceInstanceId", serviceId)
+            execution.setVariable("operationId", operationId)
+            execution.setVariable("operationType", operationType)
+            ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+            List<Resource>  resourceList = serviceDecomposition.getServiceResources()
+            
+            for(Resource resource : resourceList){
+                    resourceTemplateUUIDs  = resourceTemplateUUIDs + resource.getModelInfo().getModelCustomizationUuid() + ":"
+            }           
+
+            def dbAdapterEndpoint = "http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter"
+            execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint)
+            msoLogger.info("DB Adapter Endpoint is: " + dbAdapterEndpoint)
+
+            String payload =
+                """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                        <soapenv:Header/>
+                        <soapenv:Body>
+                            <ns:initResourceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
+								<serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
+								<operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+								<operationType>${MsoUtils.xmlEscape(operationType)}</operationType>
+								<resourceTemplateUUIDs>${MsoUtils.xmlEscape(resourceTemplateUUIDs)}</resourceTemplateUUIDs>
+                            </ns:initResourceOperationStatus>
+                    	</soapenv:Body>
+                	</soapenv:Envelope>"""
+
+            payload = utils.formatXml(payload)
+            execution.setVariable("CVFMI_initResOperStatusRequest", payload)
+            msoLogger.info("Outgoing initResourceOperationStatus: \n" + payload)
+            msoLogger.debug("CreateVfModuleInfra Outgoing initResourceOperationStatus Request: " + payload)
+
+        }catch(Exception e){
+            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preInitResourcesOperStatus.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, e);
+            execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during preInitResourcesOperStatus Method:\n" + e.getMessage())
+        }
+        msoLogger.trace("COMPLETED preInitResourcesOperStatus Process ")  
+	}
+
+	// prepare input param for using DoCreateResources.bpmn
+	public void preProcessForAddResource(DelegateExecution execution) {
+		msoLogger.trace("STARTED preProcessForAddResource Process ")
+		
+		ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+		List<Resource> addResourceList = serviceDecomposition.getServiceResources()
+		execution.setVariable("addResourceList", addResourceList)
+		
+		msoLogger.trace("COMPLETED preProcessForAddResource Process ")
+	}
+
+	public void postProcessForAddResource(DelegateExecution execution) {
+		// do nothing now
+	
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceRollback.groovy
new file mode 100644
index 0000000..05a0ea8
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceRollback.groovy
@@ -0,0 +1,268 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+
+import static org.apache.commons.lang3.StringUtils.*;
+
+import groovy.xml.XmlUtil
+import groovy.json.*
+
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.rest.APIResponse;
+import org.onap.so.rest.RESTClient
+import org.onap.so.rest.RESTConfig
+import org.onap.so.logger.MsoLogger
+import org.onap.so.logger.MessageEnum
+
+import org.onap.so.client.aai.entities.uri.AAIResourceUri
+import org.onap.so.client.aai.entities.uri.AAIUriFactory
+import org.onap.so.client.aai.AAIObjectType
+import org.onap.so.client.aai.AAIResourcesClient
+
+import java.util.UUID;
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.json.JSONObject;
+import org.apache.commons.lang3.*
+import org.apache.commons.codec.binary.Base64;
+import org.springframework.web.util.UriUtils;
+/**
+ * This groovy class supports the <class>DoCreateServiceInstanceRollback.bpmn</class> process.
+ *
+ * Inputs:
+ * @param - msoRequestId
+ * @param - rollbackData with
+ *          globalCustomerId
+ * 			subscriptionServiceType
+ * 			serviceInstanceId
+ * 			disableRollback
+ * 			rollbackAAI
+ * 			rollbackSDNC
+ * 			sdncRollbackRequest
+ *
+ *
+ * Outputs:
+ * @param - rollbackError
+ * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true)
+ *
+ */
+public class DoCreateE2EServiceInstanceRollback extends AbstractServiceTaskProcessor{
+
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateE2EServiceInstanceRollback.class);
+	String Prefix="DCRESIRB_"
+
+	public void preProcessRequest(DelegateExecution execution) {
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		String msg = ""
+		msoLogger.trace("Start preProcessRequest")
+		execution.setVariable("rollbackAAI",false)
+		execution.setVariable("rollbackSDNC",false)
+
+		try {
+			def rollbackData = execution.getVariable("rollbackData")
+			msoLogger.debug("RollbackData:" + rollbackData)
+
+			if (rollbackData != null) {
+				if (rollbackData.hasType("SERVICEINSTANCE")) {
+
+					def serviceInstanceId = rollbackData.get("SERVICEINSTANCE", "serviceInstanceId")
+					execution.setVariable("serviceInstanceId", serviceInstanceId)
+
+					def subscriptionServiceType = rollbackData.get("SERVICEINSTANCE", "subscriptionServiceType")
+					execution.setVariable("subscriptionServiceType", subscriptionServiceType)
+
+					def globalSubscriberId  = rollbackData.get("SERVICEINSTANCE", "globalSubscriberId")
+					execution.setVariable("globalSubscriberId", globalSubscriberId)
+
+					def rollbackAAI = rollbackData.get("SERVICEINSTANCE", "rollbackAAI")
+					if ("true".equals(rollbackAAI))
+					{
+						execution.setVariable("rollbackAAI",true)
+					}
+
+					def rollbackSDNC = rollbackData.get("SERVICEINSTANCE", "rollbackSDNC")
+					if ("true".equals(rollbackSDNC))
+					{
+						execution.setVariable("rollbackSDNC", true)
+					}
+
+					if (execution.getVariable("rollbackAAI") != true && execution.getVariable("rollbackSDNC") != true)
+					{
+						execution.setVariable("skipRollback", true)
+					}
+
+					def sdncDelete = rollbackData.get("SERVICEINSTANCE", "sdncDelete")
+					execution.setVariable("sdncDelete", sdncDelete)
+					def sdncDeactivate = rollbackData.get("SERVICEINSTANCE", "sdncDeactivate")
+					execution.setVariable("sdncDeactivate", sdncDeactivate)
+					msoLogger.debug("sdncDeactivate:\n" + sdncDeactivate)
+					msoLogger.debug("sdncDelete:\n" + sdncDelete)
+				}
+				else {
+					execution.setVariable("skipRollback", true)
+				}
+			}
+			else {
+				execution.setVariable("skipRollback", true)
+			}
+			if (execution.getVariable("disableRollback").equals("true" ))
+			{
+				execution.setVariable("skipRollback", true)
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in Create ServiceInstance Rollback preProcessRequest " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg) //TODO how does this even compile without exceptionUtil being declared
+		}
+		msoLogger.trace("Exit preProcessRequest ")
+	}
+
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method) {
+
+		msoLogger.trace("validateSDNCResponse")
+		String msg = ""
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			msoLogger.debug("SDNCResponse: " + response)
+			msoLogger.debug("workflowException: " + workflowException)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				msg = "SDNC Adapter service-instance rollback successful for " + method
+				msoLogger.debug(msg)
+			}else{
+				execution.setVariable("rolledBack", false)
+				msg =  "Error Response from SDNC Adapter service-instance rollback for " + method
+				execution.setVariable("rollbackError", msg)
+				msoLogger.debug(msg)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in Create ServiceInstance rollback for "  + method  + " Exception:" + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit validateSDNCResponse ")
+	}
+
+	/**
+	 * Deletes the service instance in aai
+	 */
+	public void deleteServiceInstance(DelegateExecution execution) {
+		msoLogger.trace("Started Delete Service Instance")
+		try {
+			String globalCustId = execution.getVariable("globalSubscriberId")
+			String serviceType = execution.getVariable("subscriptionServiceType")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+			AAIResourcesClient resourceClient = new AAIResourcesClient();
+			AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustId, serviceType, serviceInstanceId)
+			resourceClient.delete(serviceInstanceUri)
+
+			msoLogger.trace("Completed Delete Service Instance")
+		}catch(Exception e){
+			msoLogger.debug("Error occured within deleteServiceInstance method: " + e)
+		}
+	}
+
+	public void postProcessRequest(DelegateExecution execution) {
+
+		msoLogger.trace("postProcessRequest")
+		String msg = ""
+		try {
+			execution.setVariable("rollbackData", null)
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			boolean rollbackAAI = execution.getVariable("rollbackAAI")
+			boolean rollbackSDNC = execution.getVariable("rollbackSDNC")
+			if (rollbackAAI || rollbackSDNC)
+			{
+				execution.setVariable("rolledBack", true)
+			}
+			if (rollbackAAI)
+			{
+				boolean succInAAI = execution.getVariable("GENDS_SuccessIndicator")
+				if(!succInAAI){
+					execution.setVariable("rolledBack", false) //both sdnc and aai must be successful to declare rollback Succesful
+					execution.setVariable("rollbackError", "Error deleting service-instance in AAI for rollback")
+					msoLogger.debug("Error deleting service-instance in AAI for rollback", + serviceInstanceId)
+				}
+			}
+			msoLogger.trace("Exit postProcessRequest ")
+
+		} catch (BpmnError e) {
+			msg = "Exception in Create ServiceInstance Rollback postProcessRequest. " + e.getMessage()
+			msoLogger.debug(msg)
+		} catch (Exception ex) {
+			msg = "Exception in Create ServiceInstance Rollback postProcessRequest. " + ex.getMessage()
+			msoLogger.debug(msg)
+		}
+
+	}
+
+	public void processRollbackException(DelegateExecution execution){
+
+		msoLogger.trace("processRollbackException")
+		try{
+			msoLogger.debug("Caught an Exception in DoCreateServiceInstanceRollback")
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rollbackError", "Caught exception in ServiceInstance Create Rollback")
+			execution.setVariable("WorkflowException", null)
+
+		}catch(BpmnError b){
+			msoLogger.debug("BPMN Error during processRollbackExceptions Method: ")
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during processRollbackExceptions Method: " + e.getMessage())
+		}
+
+		msoLogger.trace(" Exit processRollbackException")
+	}
+
+	public void processRollbackJavaException(DelegateExecution execution){
+
+		msoLogger.trace("processRollbackJavaException")
+		try{
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rollbackError", "Caught Java exception in ServiceInstance Create Rollback")
+			msoLogger.debug("Caught Exception in processRollbackJavaException")
+
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception in processRollbackJavaException " + e.getMessage())
+		}
+		msoLogger.trace("Exit processRollbackJavaException")
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy
new file mode 100644
index 0000000..4bbaef8
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy
@@ -0,0 +1,1680 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts;
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.NetworkUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse;
+import org.springframework.web.util.UriUtils
+
+import groovy.json.*
+import groovy.xml.XmlUtil
+
+
+/**
+ * This groovy class supports the <class>DoCreateNetworkInstance.bpmn</class> process.
+ *
+ */
+public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateNetworkInstance.class);
+	
+	String Prefix="CRENWKI_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils(this)
+	NetworkUtils networkUtils = new NetworkUtils()
+	SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
+
+	def className = getClass().getSimpleName()
+	
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>DoCreateNetworkInstance.bpmn</class> process.
+	 * @param execution
+	 */
+	public InitializeProcessVariables(DelegateExecution execution){
+		/* Initialize all the process variables in this block */
+
+		execution.setVariable(Prefix + "networkRequest", "")
+		execution.setVariable(Prefix + "rollbackEnabled", null)
+		execution.setVariable(Prefix + "networkInputs", "")
+		//execution.setVariable(Prefix + "requestId", "")
+		execution.setVariable(Prefix + "messageId", "")
+		execution.setVariable(Prefix + "source", "")
+		execution.setVariable("BasicAuthHeaderValuePO", "")
+		execution.setVariable("BasicAuthHeaderValueSDNC", "")
+		execution.setVariable(Prefix + "serviceInstanceId","")
+		execution.setVariable("GENGS_type", "")
+		execution.setVariable(Prefix + "rsrc_endpoint", null)
+		execution.setVariable(Prefix + "networkOutputs", "")
+		execution.setVariable(Prefix + "networkId","")
+		execution.setVariable(Prefix + "networkName","")
+		
+		// AAI query Name
+		execution.setVariable(Prefix + "queryNameAAIRequest","")
+		execution.setVariable(Prefix + "queryNameAAIResponse", "")
+		execution.setVariable(Prefix + "aaiNameReturnCode", "")
+		execution.setVariable(Prefix + "isAAIqueryNameGood", false)
+
+		// AAI query Cloud Region
+		execution.setVariable(Prefix + "queryCloudRegionRequest","")
+		execution.setVariable(Prefix + "queryCloudRegionReturnCode","")
+		execution.setVariable(Prefix + "queryCloudRegionResponse","")
+		execution.setVariable(Prefix + "cloudRegionPo","")
+		execution.setVariable(Prefix + "cloudRegionSdnc","")
+		execution.setVariable(Prefix + "isCloudRegionGood", false)
+
+		// AAI query Id
+		execution.setVariable(Prefix + "queryIdAAIRequest","")
+		execution.setVariable(Prefix + "queryIdAAIResponse", "")
+		execution.setVariable(Prefix + "aaiIdReturnCode", "")
+
+		// AAI query vpn binding
+		execution.setVariable(Prefix + "queryVpnBindingAAIRequest","")
+		execution.setVariable(Prefix + "queryVpnBindingAAIResponse", "")
+		execution.setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "")
+		execution.setVariable(Prefix + "vpnBindings", null)
+		execution.setVariable(Prefix + "vpnCount", 0)
+		execution.setVariable(Prefix + "routeCollection", "")
+
+		// AAI query network policy
+		execution.setVariable(Prefix + "queryNetworkPolicyAAIRequest","")
+		execution.setVariable(Prefix + "queryNetworkPolicyAAIResponse", "")
+		execution.setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", "")
+		execution.setVariable(Prefix + "networkPolicyUriList", null)
+		execution.setVariable(Prefix + "networkPolicyCount", 0)
+		execution.setVariable(Prefix + "networkCollection", "")
+
+		// AAI query route table reference
+		execution.setVariable(Prefix + "queryNetworkTableRefAAIRequest","")
+		execution.setVariable(Prefix + "queryNetworkTableRefAAIResponse", "")
+		execution.setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", "")
+		execution.setVariable(Prefix + "networkTableRefUriList", null)
+		execution.setVariable(Prefix + "networkTableRefCount", 0)
+		execution.setVariable(Prefix + "tableRefCollection", "")
+
+		// AAI requery Id
+		execution.setVariable(Prefix + "requeryIdAAIRequest","")
+		execution.setVariable(Prefix + "requeryIdAAIResponse", "")
+		execution.setVariable(Prefix + "aaiRequeryIdReturnCode", "")
+
+		// AAI update contrail
+		execution.setVariable(Prefix + "updateContrailAAIUrlRequest","")
+		execution.setVariable(Prefix + "updateContrailAAIPayloadRequest","")
+		execution.setVariable(Prefix + "updateContrailAAIResponse", "")
+		execution.setVariable(Prefix + "aaiUpdateContrailReturnCode", "")
+
+		execution.setVariable(Prefix + "createNetworkRequest", "")
+		execution.setVariable(Prefix + "createNetworkResponse", "")
+		execution.setVariable(Prefix + "rollbackNetworkRequest", "")
+		//execution.setVariable(Prefix + "rollbackNetworkResponse", "")
+		execution.setVariable(Prefix + "networkReturnCode", "")
+		//execution.setVariable(Prefix + "rollbackNetworkReturnCode", "")
+		execution.setVariable(Prefix + "isNetworkRollbackNeeded", false)
+
+		execution.setVariable(Prefix + "assignSDNCRequest", "")
+		execution.setVariable(Prefix + "assignSDNCResponse", "")
+		execution.setVariable(Prefix + "rollbackSDNCRequest", "")
+		//execution.setVariable(Prefix + "rollbackSDNCResponse", "")
+		execution.setVariable(Prefix + "sdncReturnCode", "")
+		//execution.setVariable(Prefix + "rollbackSDNCReturnCode", "")
+		execution.setVariable(Prefix + "isSdncRollbackNeeded", false)
+		execution.setVariable(Prefix + "sdncResponseSuccess", false)
+		
+		execution.setVariable(Prefix + "activateSDNCRequest", "")
+		execution.setVariable(Prefix + "activateSDNCResponse", "")
+		execution.setVariable(Prefix + "rollbackActivateSDNCRequest", "")
+		//execution.setVariable(Prefix + "rollbackActivateSDNCResponse", "")
+		execution.setVariable(Prefix + "sdncActivateReturnCode", "")
+		//execution.setVariable(Prefix + "rollbackActivateSDNCReturnCode", "")
+		execution.setVariable(Prefix + "isSdncActivateRollbackNeeded", false)
+		execution.setVariable(Prefix + "sdncActivateResponseSuccess", false)
+
+		execution.setVariable(Prefix + "orchestrationStatus", "")
+		execution.setVariable(Prefix + "isVnfBindingPresent", false)
+		execution.setVariable(Prefix + "Success", false)
+
+		execution.setVariable(Prefix + "isException", false)
+		
+	}
+
+	// **************************************************
+	//     Pre or Prepare Request Section
+	// **************************************************
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>DoCreateNetworkInstance.bpmn</class> process.
+	 * @param execution
+	 */
+	public void preProcessRequest (DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)		
+		msoLogger.trace("Inside preProcessRequest() of " + className + ".groovy")
+		
+		try {
+			// initialize flow variables
+			InitializeProcessVariables(execution)
+			
+			// GET Incoming request & validate 3 kinds of format.
+			execution.setVariable("action", "CREATE")
+			String networkRequest = execution.getVariable("bpmnRequest")
+			if (networkRequest != null) {
+				if (networkRequest.contains("requestDetails")) {
+					// JSON format request is sent, create xml 
+					try {
+						def prettyJson = JsonOutput.prettyPrint(networkRequest.toString())
+						msoLogger.debug(" Incoming message formatted . . . : " + '\n' + prettyJson)
+						networkRequest =  vidUtils.createXmlNetworkRequestInfra(execution, networkRequest)
+		
+					} catch (Exception ex) {
+						String dataErrorMessage = " Invalid json format Request - " + ex.getMessage()
+						msoLogger.debug(dataErrorMessage)
+						exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+					}
+				} else {
+  				   // XML format request is sent
+				   
+				}
+			} else {
+				// vIPR format request is sent, create xml from individual variables
+				networkRequest = vidUtils.createXmlNetworkRequestInstance(execution)
+			}
+				
+			networkRequest = utils.formatXml(networkRequest)
+			execution.setVariable(Prefix + "networkRequest", networkRequest)
+			msoLogger.debug(Prefix + "networkRequest - " + '\n' + networkRequest)
+			
+			// validate 'backout-on-failure' to override 'mso.rollback'
+			boolean rollbackEnabled = networkUtils.isRollbackEnabled(execution, networkRequest)
+			execution.setVariable(Prefix + "rollbackEnabled", rollbackEnabled)
+			msoLogger.debug(Prefix + "rollbackEnabled - " + rollbackEnabled)
+										
+			String networkInputs = utils.getNodeXml(networkRequest, "network-inputs", false).replace("tag0:","").replace(":tag0","")
+			execution.setVariable(Prefix + "networkInputs", networkInputs)
+			msoLogger.debug(Prefix + "networkInputs - " + '\n' + networkInputs)
+			
+			// prepare messageId
+			String messageId = execution.getVariable("testMessageId")  // for testing
+			if (messageId == null || messageId == "") {
+				messageId = UUID.randomUUID()
+				msoLogger.debug(Prefix + "messageId, random generated: " + messageId)
+			} else {
+				msoLogger.debug(Prefix + "messageId, pre-assigned: " + messageId)
+			}
+			execution.setVariable(Prefix + "messageId", messageId)
+			
+			String source = utils.getNodeText(networkRequest, "source")
+			execution.setVariable(Prefix + "source", source)
+			msoLogger.debug(Prefix + "source - " + source)
+			
+			// validate cloud region 
+			String lcpCloudRegionId = utils.getNodeText(networkRequest, "aic-cloud-region")
+			if ((lcpCloudRegionId == null) || (lcpCloudRegionId == "") || (lcpCloudRegionId == "null")) {
+				String dataErrorMessage = "Missing value/element: 'lcpCloudRegionId' or 'cloudConfiguration' or 'aic-cloud-region'."
+				msoLogger.debug(" Invalid Request - " + dataErrorMessage)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+			}
+
+			// validate service instance id
+			String serviceInstanceId = utils.getNodeText(networkRequest, "service-instance-id") 
+			if ((serviceInstanceId == null) || (serviceInstanceId == "") || (serviceInstanceId == "null")) {
+				String dataErrorMessage = "Missing value/element: 'serviceInstanceId'."
+				msoLogger.debug(" Invalid Request - " + dataErrorMessage)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+			}
+
+			// PO Authorization Info / headers Authorization=
+			String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth",execution)
+			
+			try {
+				def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey",execution))
+				execution.setVariable("BasicAuthHeaderValuePO",encodedString)
+				execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
+	
+			} catch (IOException ex) {
+				String exceptionMessage = "Exception Encountered in DoCreateNetworkInstance, PreProcessRequest() - "
+				String dataErrorMessage = exceptionMessage + " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
+				msoLogger.debug(dataErrorMessage)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+			}
+
+			// Set variables for Generic Get Sub Flow use
+			execution.setVariable(Prefix + "serviceInstanceId", serviceInstanceId)
+			msoLogger.debug(Prefix + "serviceInstanceId - " + serviceInstanceId)
+
+			execution.setVariable("GENGS_type", "service-instance")
+			msoLogger.debug("GENGS_type - " + "service-instance")
+			msoLogger.debug(" Url for SDNC adapter: " + UrnPropertiesReader.getVariable("mso.adapters.sdnc.endpoint",execution))
+			
+			String sdncVersion = execution.getVariable("sdncVersion")
+			msoLogger.debug("sdncVersion? : " + sdncVersion)
+			
+			// build 'networkOutputs'			
+			String networkId = utils.getNodeText(networkRequest, "network-id")
+			if ((networkId == null) || (networkId == "null")) {
+				networkId = ""
+			}
+			String networkName = utils.getNodeText(networkRequest, "network-name")
+			if ((networkName == null) || (networkName == "null")) {
+				networkName = ""
+			}
+			String networkOutputs =
+			   """<network-outputs>
+	                   <network-id>${MsoUtils.xmlEscape(networkId)}</network-id>
+	                   <network-name>${MsoUtils.xmlEscape(networkName)}</network-name>
+	                 </network-outputs>"""
+			execution.setVariable(Prefix + "networkOutputs", networkOutputs)
+			msoLogger.debug(Prefix + "networkOutputs - " + '\n' + networkOutputs)
+			execution.setVariable(Prefix + "networkId", networkId)
+			execution.setVariable(Prefix + "networkName", networkName)
+		
+		} catch (BpmnError e) {
+		throw e;
+		
+		} catch (Exception ex) {
+			sendSyncError(execution)
+			// caught exception
+			String exceptionMessage = "Exception Encountered in PreProcessRequest() of " + className + ".groovy ***** : " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		
+		}
+
+	}
+	
+	public void callRESTQueryAAINetworkName (DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+		
+		msoLogger.debug(" ***** Inside callRESTQueryAAINetworkName() of DoCreateNetworkInstance ***** " )
+
+		// get variables
+		String networkInputs  = execution.getVariable(Prefix + "networkInputs")
+		String networkName   = utils.getNodeText(networkInputs, "network-name")
+		networkName = UriUtils.encode(networkName,"UTF-8")
+
+		// Prepare AA&I url with network-name
+		String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+		AaiUtil aaiUriUtil = new AaiUtil(this)
+		String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
+		String queryAAINameRequest = "${aai_endpoint}${aai_uri}" + "?network-name=" + networkName
+		execution.setVariable(Prefix + "queryNameAAIRequest", queryAAINameRequest)
+		msoLogger.debug(Prefix + "queryNameAAIRequest - " + "\n" + queryAAINameRequest)
+
+		try {
+			APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryAAINameRequest)
+			String returnCode = response.getStatusCode()
+			execution.setVariable(Prefix + "aaiNameReturnCode", returnCode)
+			msoLogger.debug(" ***** AAI Query Name Response Code  : " + returnCode)
+
+			String aaiResponseAsString = response.getResponseBodyAsString()
+			msoLogger.debug(" ***** AAI Query Name Response : " +'\n'+ aaiResponseAsString)
+
+			if (returnCode=='200') {
+				execution.setVariable(Prefix + "queryNameAAIResponse", aaiResponseAsString)
+				execution.setVariable(Prefix + "isAAIqueryNameGood", true)
+				String orchestrationStatus = ""
+				try {
+					// response is NOT empty
+					orchestrationStatus = utils.getNodeText(aaiResponseAsString, "orchestration-status")
+					execution.setVariable(Prefix + "orchestrationStatus", orchestrationStatus.toUpperCase())
+					msoLogger.debug(Prefix + "orchestrationStatus - " + orchestrationStatus.toUpperCase())
+					execution.setVariable("orchestrationStatus", orchestrationStatus)
+					
+				} catch (Exception ex) {
+				    // response is empty
+					execution.setVariable(Prefix + "orchestrationStatus", orchestrationStatus)
+					msoLogger.debug(Prefix + "orchestrationStatus - " + orchestrationStatus)
+				}
+
+			} else {
+			    if (returnCode=='404') {
+					msoLogger.debug(" QueryAAINetworkName return code = '404' (Not Found).  Proceed with the Create !!! ")
+
+			    } else {
+ 			        // aai all errors
+					String dataErrorMessage = "Unexpected Error Response from QueryAAINetworkName - " + returnCode
+					msoLogger.debug(dataErrorMessage)
+					exceptionUtil.buildWorkflowException(execution, 2500, dataErrorMessage)
+
+		      }
+
+			}
+
+			msoLogger.debug(Prefix + "isAAIqueryNameGood? : " + execution.getVariable(Prefix + "isAAIqueryNameGood"))
+
+		} catch (BpmnError e) {
+		throw e;
+
+		} catch (Exception ex) {
+			// try error
+			String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow - callRESTQueryAAINetworkName() -  " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void callRESTQueryAAICloudRegion (DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+				
+		msoLogger.debug(" ***** Inside callRESTQueryAAICloudRegion() of DoCreateNetworkInstance ***** " )
+
+		try {
+			String networkInputs  = execution.getVariable(Prefix + "networkInputs")
+			String cloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
+			cloudRegion = UriUtils.encode(cloudRegion,"UTF-8")
+
+			// Prepare AA&I url
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUtil = new AaiUtil(this)
+			String aai_uri = aaiUtil.getCloudInfrastructureCloudRegionUri(execution)
+			String queryCloudRegionRequest = "${aai_endpoint}${aai_uri}/" + cloudRegion
+			execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest)
+			msoLogger.debug(Prefix + "queryCloudRegionRequest - " + "\n" + queryCloudRegionRequest)
+
+			String cloudRegionPo = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "PO", cloudRegion)
+			String cloudRegionSdnc = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "SDNC", cloudRegion)
+
+			if ((cloudRegionPo != "ERROR") && (cloudRegionSdnc != "ERROR")) {
+				execution.setVariable(Prefix + "cloudRegionPo", cloudRegionPo)
+				execution.setVariable(Prefix + "cloudRegionSdnc", cloudRegionSdnc)
+				execution.setVariable(Prefix + "isCloudRegionGood", true)
+
+			} else {
+			    String dataErrorMessage = "QueryAAICloudRegion Unsuccessful. Return Code: " + execution.getVariable(Prefix + "queryCloudRegionReturnCode")
+			    msoLogger.debug(dataErrorMessage)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+			}
+
+			msoLogger.debug(" is Cloud Region Good: " + execution.getVariable(Prefix + "isCloudRegionGood"))
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			// try error
+			String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow - callRESTQueryAAICloudRegion() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void callRESTQueryAAINetworkId(DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.debug(" ***** Inside callRESTQueryAAINetworkId() of DoCreateNetworkInstance ***** " )
+
+		try {
+			// get variables
+			String networkId = ""
+			String assignSDNCResponse = execution.getVariable(Prefix + "assignSDNCResponse")
+			if (execution.getVariable("sdncVersion") != "1610") {
+			   String networkResponseInformation = ""
+			   try {	
+			      networkResponseInformation = utils.getNodeXml(assignSDNCResponse, "network-response-information", false).replace("tag0:","").replace(":tag0","")
+				  networkId = utils.getNodeText(networkResponseInformation, "instance-id")
+			   } catch (Exception ex) {
+			      String dataErrorMessage = " SNDC Response network validation for 'instance-id' (network-id) failed: Empty <network-response-information>"
+			      msoLogger.debug(dataErrorMessage)
+				  exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+			   } 	  
+			   	  
+			} else {
+			   networkId = utils.getNodeText(assignSDNCResponse, "network-id")
+			}
+			if (networkId == null || networkId == "null") {
+				String dataErrorMessage = "SNDC Response did not contains 'instance-id' or 'network-id' element, or the value is null."
+				msoLogger.debug(dataErrorMessage)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+			} else {
+			   msoLogger.debug(" SNDC Response network validation for 'instance-id' (network-id)' is good: " + networkId)
+			}
+
+    
+			execution.setVariable(Prefix + "networkId", networkId)
+			String networkName   = utils.getNodeText(assignSDNCResponse, "network-name")
+			execution.setVariable(Prefix + "networkName", networkName)
+			
+			networkId = UriUtils.encode(networkId,"UTF-8")
+
+			// Prepare AA&I url
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
+			String queryIdAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all"
+			execution.setVariable(Prefix + "queryIdAAIRequest", queryIdAAIRequest)
+			msoLogger.debug(Prefix + "queryIdAAIRequest - " + "\n" + queryIdAAIRequest)
+
+			APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryIdAAIRequest)
+			String returnCode = response.getStatusCode()
+			execution.setVariable(Prefix + "aaiIdReturnCode", returnCode)
+
+			msoLogger.debug(" ***** AAI Response Code  : " + returnCode)
+
+			String aaiResponseAsString = response.getResponseBodyAsString()
+
+			if (returnCode=='200') {
+				execution.setVariable(Prefix + "queryIdAAIResponse", aaiResponseAsString)
+				msoLogger.debug(" QueryAAINetworkId Success REST Response - " + "\n" + aaiResponseAsString)
+				
+				String netId   = utils.getNodeText(aaiResponseAsString, "network-id")
+				execution.setVariable(Prefix + "networkId", netId)
+				String netName   = utils.getNodeText(aaiResponseAsString, "network-name")
+				execution.setVariable(Prefix + "networkName", netName)
+
+			} else {
+				if (returnCode=='404') {
+					String dataErrorMessage = "Response Error from QueryAAINetworkId is 404 (Not Found)."
+					msoLogger.debug(" AAI Query Failed. " + dataErrorMessage)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+				} else {
+				   if (aaiResponseAsString.contains("RESTFault")) {
+					   WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+					   execution.setVariable("WorkflowException", exceptionObject)
+					   throw new BpmnError("MSOWorkflowException")
+
+				   } else {
+							// aai all errors
+							String dataErrorMessage = "Unexpected Response from QueryAAINetworkId - " + returnCode
+							msoLogger.debug("Unexpected Response from QueryAAINetworkId - " + dataErrorMessage)
+							exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+				  }
+				}
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTQueryAAINetworkId() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void callRESTReQueryAAINetworkId(DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.debug(" ***** Inside callRESTReQueryAAINetworkId() of DoCreateNetworkInstance ***** " )
+
+		try {
+			// get variables
+			String networkId   = execution.getVariable(Prefix + "networkId")
+			String netId = networkId 
+			networkId = UriUtils.encode(networkId,"UTF-8")
+
+			// Prepare AA&I url
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
+			String requeryIdAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all"
+			execution.setVariable(Prefix + "requeryIdAAIRequest", requeryIdAAIRequest)
+			msoLogger.debug(Prefix + "requeryIdAAIRequest - " + "\n" + requeryIdAAIRequest)
+
+			APIResponse response = aaiUriUtil.executeAAIGetCall(execution, requeryIdAAIRequest)
+			String returnCode = response.getStatusCode()
+			execution.setVariable(Prefix + "aaiRequeryIdReturnCode", returnCode)
+			msoLogger.debug(" ***** AAI ReQuery Response Code  : " + returnCode)
+
+			String aaiResponseAsString = response.getResponseBodyAsString()
+
+			if (returnCode=='200') {
+				execution.setVariable(Prefix + "requeryIdAAIResponse", aaiResponseAsString)
+				msoLogger.debug(" ReQueryAAINetworkId Success REST Response - " + "\n" + aaiResponseAsString)
+
+				String netName = utils.getNodeText(aaiResponseAsString, "network-name")
+				String networkOutputs =
+				   """<network-outputs>
+                   <network-id>${MsoUtils.xmlEscape(netId)}</network-id>
+                   <network-name>${MsoUtils.xmlEscape(netName)}</network-name>
+                 </network-outputs>"""
+				execution.setVariable(Prefix + "networkOutputs", networkOutputs)
+				msoLogger.debug(" networkOutputs - " + '\n' + networkOutputs)
+
+			} else {
+				if (returnCode=='404') {
+					String dataErrorMessage = "Response Error from ReQueryAAINetworkId is 404 (Not Found)."
+					msoLogger.debug(" AAI ReQuery Failed. - " + dataErrorMessage)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+				} else {
+				   if (aaiResponseAsString.contains("RESTFault")) {
+					   WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+					   execution.setVariable("WorkflowException", exceptionObject)
+					   throw new BpmnError("MSOWorkflowException")
+
+					   } else {
+							// aai all errors
+							String dataErrorMessage = "Unexpected Response from ReQueryAAINetworkId - " + returnCode
+							msoLogger.debug(dataErrorMessage)
+							exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+					}
+				}
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTReQueryAAINetworkId() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void callRESTQueryAAINetworkVpnBinding(DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.debug(" ***** Inside callRESTQueryAAINetworkVpnBinding() of DoCreateNetworkInstance ***** " )
+
+		try {
+
+			// get variables
+			String queryIdAAIResponse   = execution.getVariable(Prefix + "queryIdAAIResponse").replace('<?xml version="1.0" encoding="UTF-8"?>', "")
+			String relationship = networkUtils.getFirstNodeXml(queryIdAAIResponse, "relationship-list").trim().replace("tag0:","").replace(":tag0","")
+			msoLogger.debug(" relationship - " + relationship)
+
+			// Check if Vnf Binding is present, then build a List of vnfBinding
+			List vpnBindingUri = networkUtils.getVnfBindingObject(relationship)
+			int vpnCount = vpnBindingUri.size()
+			execution.setVariable(Prefix + "vpnCount", vpnCount)
+			msoLogger.debug(Prefix + "vpnCount - " + vpnCount)
+
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+
+			if (vpnCount > 0) {
+				execution.setVariable(Prefix + "vpnBindings", vpnBindingUri)
+				msoLogger.debug(" vpnBindingUri List - " + vpnBindingUri)
+
+				String routeTargets = ""
+				// AII loop call using list vpnBindings
+				for (i in 0..vpnBindingUri.size()-1) {
+
+					int counting = i+1
+
+					// prepare url using vpnBinding
+					String queryVpnBindingAAIRequest = ""
+					String aai_uri = aaiUriUtil.getNetworkVpnBindingUri(execution)
+
+					// Note: By default, the vpnBinding url is found in 'related-link' of the response,
+					//       so, the default in URN mappings for this is set to "" (ie, space), unless forced to use the URN mapping.
+					if (aai_uri == null || aai_uri == "") {
+						// using value of 'related-link' from response
+						if (vpnBindingUri[i].charAt(vpnBindingUri[i].length()-1) == '/') {
+						    queryVpnBindingAAIRequest = "${aai_endpoint}" + vpnBindingUri[i].substring(0, vpnBindingUri[i].length()-1) + "?depth=all"
+						} else {
+						    queryVpnBindingAAIRequest = "${aai_endpoint}" + vpnBindingUri[i] + "?depth=all"
+						}
+
+					} else {
+					    // using uri value in URN mapping
+						String vpnBindingId = vpnBindingUri[i].substring(vpnBindingUri[i].indexOf("/vpn-binding/")+13, vpnBindingUri[i].length())
+						if (vpnBindingId.charAt(vpnBindingId.length()-1) == '/') {
+							vpnBindingId = vpnBindingId.substring(0, vpnBindingId.length()-1)
+						}
+					    queryVpnBindingAAIRequest = "${aai_endpoint}${aai_uri}/" + vpnBindingId + "?depth=all"
+					}
+
+					execution.setVariable(Prefix + "queryVpnBindingAAIRequest", queryVpnBindingAAIRequest)
+					msoLogger.debug(Prefix + "queryVpnBindingAAIRequest, , vpnBinding #" + counting + " : " + "\n" + queryVpnBindingAAIRequest)
+
+					APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryVpnBindingAAIRequest)
+					String returnCode = response.getStatusCode()
+					execution.setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", returnCode)
+					msoLogger.debug(" ***** AAI query vpn binding Response Code, vpnBinding #" + counting + " : " + returnCode)
+
+					String aaiResponseAsString = response.getResponseBodyAsString()
+
+					if (returnCode=='200') {
+						execution.setVariable(Prefix + "queryVpnBindingAAIResponse", aaiResponseAsString)
+						msoLogger.debug(" AAI Query Vpn Binding Success REST Response, , vpnBinding #" + counting + " : " + "\n" + aaiResponseAsString)
+
+						String routeTarget = ""
+						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.getNodeText(XmlUtil.serialize(aaiRouteTarget[j]), "global-route-target")
+								routeRole  = utils.getNodeText(XmlUtil.serialize(aaiRouteTarget[j]), "route-target-role")
+								routeTargets += "<routeTargets>" + '\n' +
+								                " <routeTarget>" + routeTarget + "</routeTarget>" + '\n' +
+												" <routeTargetRole>" + routeRole + "</routeTargetRole>" + '\n' +
+												"</routeTargets>" + '\n'
+							}
+						}
+
+					} else {
+						if (returnCode=='404') {
+							String dataErrorMessage = "Response Error from AAINetworkVpnBinding is 404 (Not Found)."
+							msoLogger.debug(dataErrorMessage)
+							exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+						} else {
+						   if (aaiResponseAsString.contains("RESTFault")) {
+							   WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+							   execution.setVariable("WorkflowException", exceptionObject)
+							   throw new BpmnError("MSOWorkflowException")
+
+							   } else {
+									// aai all errors
+									String dataErrorMessage = " Unexpected Response from AAINetworkVpnBinding - " + returnCode
+									msoLogger.debug(dataErrorMessage)
+									exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+							  }
+						}
+					}
+
+				} // end loop
+
+				execution.setVariable(Prefix + "routeCollection", routeTargets)
+				msoLogger.debug(Prefix + "routeCollection - " + '\n' + routeTargets)
+
+			} else {
+				// reset return code to success
+				execution.setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "200")
+			    String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
+				String schemaVersion = aaiUriUtil.getNamespaceFromUri(execution, aai_uri)
+			    String aaiStubResponse =
+					"""	<rest:payload contentType="text/xml" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd">
+							<vpn-binding xmlns="${schemaVersion}">
+						      <global-route-target/>
+							</vpn-binding>
+						</rest:payload>"""
+				String aaiStubResponseAsXml = utils.formatXml(aaiStubResponse)
+				execution.setVariable(Prefix + "queryVpnBindingAAIResponse", aaiStubResponseAsXml)
+				execution.setVariable(Prefix + "routeCollection", "<routeTargets/>")
+				msoLogger.debug(" No vpnBinding, using this stub as response - " + '\n' + aaiStubResponseAsXml)
+
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTQueryAAINetworkVpnBinding() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void callRESTQueryAAINetworkPolicy(DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.debug(" ***** Inside callRESTQueryAAINetworkPolicy() of DoCreateNetworkInstance ***** " )
+
+		try {
+			// get variables
+			String queryIdAAIResponse   = execution.getVariable(Prefix + "queryIdAAIResponse").replace('<?xml version="1.0" encoding="UTF-8"?>', "")
+			String relationship = networkUtils.getFirstNodeXml(queryIdAAIResponse, "relationship-list").trim().replace("tag0:","").replace(":tag0","")
+			msoLogger.debug(" relationship - " + relationship)
+
+			// Check if Network Policy is present, then build a List of network policy
+			List networkPolicyUriList = networkUtils.getNetworkPolicyObject(relationship)
+			int networkPolicyCount = networkPolicyUriList.size()
+			execution.setVariable(Prefix + "networkPolicyCount", networkPolicyCount)
+			msoLogger.debug(Prefix + "networkPolicyCount - " + networkPolicyCount)
+
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+
+			if (networkPolicyCount > 0) {
+				execution.setVariable(Prefix + "networkPolicyUriList", networkPolicyUriList)
+				msoLogger.debug(" networkPolicyUri List - " + networkPolicyUriList)
+
+				String networkPolicies = ""
+				// AII loop call using list vpnBindings
+				for (i in 0..networkPolicyUriList.size()-1) {
+
+					int counting = i+1
+
+					// prepare url using vpnBinding
+					String queryNetworkPolicyAAIRequest = ""
+
+					String aai_uri = aaiUriUtil.getNetworkPolicyUri(execution)
+
+					// Note: By default, the network policy url is found in 'related-link' of the response,
+					//       so, the default in URN mappings for this is set to "" (ie, space), unless forced to use the URN mapping.
+					if (aai_uri == null || aai_uri == "") {
+						// using value of 'related-link' from response
+						if (networkPolicyUriList[i].charAt(networkPolicyUriList[i].length()-1) == '/') {
+							queryNetworkPolicyAAIRequest = "${aai_endpoint}" + networkPolicyUriList[i].substring(0, networkPolicyUriList[i].length()-1) + "?depth=all"
+						} else {
+							queryNetworkPolicyAAIRequest = "${aai_endpoint}" + networkPolicyUriList[i] + "?depth=all"
+						}
+					} else {
+						// using uri value in URN mapping
+						String networkPolicyId = networkPolicyUriList[i].substring(networkPolicyUriList[i].indexOf("/network-policy/")+16, networkPolicyUriList[i].length())
+						println " networkPolicyId - " + networkPolicyId
+						if (networkPolicyId.charAt(networkPolicyId.length()-1) == '/') {
+							networkPolicyId = networkPolicyId.substring(0, networkPolicyId.length()-1)
+						}
+						queryNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + networkPolicyId + "?depth=all"
+
+					}
+
+
+					execution.setVariable(Prefix + "queryNetworkPolicyAAIRequest", queryNetworkPolicyAAIRequest)
+					msoLogger.debug(Prefix + "queryNetworkPolicyAAIRequest, , NetworkPolicy #" + counting + " : " + "\n" + queryNetworkPolicyAAIRequest)
+
+					APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryNetworkPolicyAAIRequest)
+					String returnCode = response.getStatusCode()
+					execution.setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", returnCode)
+					msoLogger.debug(" ***** AAI query network policy Response Code, NetworkPolicy #" + counting + " : " + returnCode)
+
+					String aaiResponseAsString = response.getResponseBodyAsString()
+
+					if (returnCode=='200') {
+						execution.setVariable(Prefix + "queryNetworkPolicyAAIResponse", aaiResponseAsString)
+						msoLogger.debug(" QueryAAINetworkPolicy Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsString)
+
+						String networkPolicy = ""
+						if (utils.nodeExists(aaiResponseAsString, "network-policy-fqdn")) {
+							networkPolicy  = utils.getNodeText(aaiResponseAsString, "network-policy-fqdn")
+							networkPolicies += "<policyFqdns>" + networkPolicy + "</policyFqdns>" + '\n'
+						}
+
+					} else {
+						if (returnCode=='404') {
+							String dataErrorMessage = "Response Error from QueryAAINetworkPolicy is 404 (Not Found)."
+							msoLogger.debug(dataErrorMessage)
+							exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+						} else {
+						   if (aaiResponseAsString.contains("RESTFault")) {
+							   WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+							   execution.setVariable("WorkflowException", exceptionObject)
+							   throw new BpmnError("MSOWorkflowException")
+
+							   } else {
+									// aai all errors
+									String dataErrorMessage = "Unexpected Response from QueryAAINetworkPolicy - " + returnCode
+									msoLogger.debug(dataErrorMessage)
+									exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+							  }
+						}
+					}
+
+				} // end loop
+
+				execution.setVariable(Prefix + "networkCollection", networkPolicies)
+				msoLogger.debug(Prefix + "networkCollection - " + '\n' + networkPolicies)
+
+			} else {
+				// reset return code to success
+				execution.setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", "200")
+				String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
+				String schemaVersion = aaiUriUtil.getNamespaceFromUri(execution, aai_uri)
+				String aaiStubResponse =
+					"""	<rest:payload contentType="text/xml" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd">
+							<network-policy xmlns="${schemaVersion}">
+							  <network-policy-fqdn/>
+                            </network-policy>
+						</rest:payload>"""
+				String aaiStubResponseAsXml = utils.formatXml(aaiStubResponse)
+				execution.setVariable(Prefix + "queryNetworkPolicyAAIResponse", aaiStubResponseAsXml)
+				execution.setVariable(Prefix + "networkCollection", "<policyFqdns/>")
+				msoLogger.debug(" No net policies, using this stub as response - " + '\n' + aaiStubResponseAsXml)
+
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTQueryAAINetworkPolicy() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void callRESTQueryAAINetworkTableRef(DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.debug(" ***** Inside callRESTQueryAAINetworkTableRef() of DoCreateNetworkInstance ***** " )
+
+		try {
+			// get variables
+			String queryIdAAIResponse   = execution.getVariable(Prefix + "queryIdAAIResponse").replace('<?xml version="1.0" encoding="UTF-8"?>', "")
+			String relationship = networkUtils.getFirstNodeXml(queryIdAAIResponse, "relationship-list").trim().replace("tag0:","").replace(":tag0","")
+			msoLogger.debug(" relationship - " + relationship)
+
+			// Check if Network TableREf is present, then build a List of network policy
+			List networkTableRefUriList = networkUtils.getNetworkTableRefObject(relationship)
+			int networkTableRefCount = networkTableRefUriList.size()
+			execution.setVariable(Prefix + "networkTableRefCount", networkTableRefCount)
+			msoLogger.debug(Prefix + "networkTableRefCount - " + networkTableRefCount)
+
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+
+			if (networkTableRefCount > 0) {
+				execution.setVariable(Prefix + "networkTableRefUriList", networkTableRefUriList)
+				msoLogger.debug(" networkTableRefUri List - " + networkTableRefUriList)
+
+				// AII loop call using list vpnBindings
+				String networkTableRefs = ""
+				for (i in 0..networkTableRefUriList.size()-1) {
+
+					int counting = i+1
+
+					// prepare url using tableRef
+					String queryNetworkTableRefAAIRequest = ""
+
+					String aai_uri = aaiUriUtil.getNetworkTableReferencesUri(execution)
+
+					// Note: By default, the network policy url is found in 'related-link' of the response,
+					//       so, the default in URN mappings for this is set to "" (ie, space), unless forced to use the URN mapping.
+					if (aai_uri == null || aai_uri == "") {
+						// using value of 'related-link' from response
+						if (networkTableRefUriList[i].charAt(networkTableRefUriList[i].length()-1) == '/') {
+							queryNetworkTableRefAAIRequest = "${aai_endpoint}" + networkTableRefUriList[i].substring(0, networkTableRefUriList[i].length()-1) + "?depth=all"
+						} else {
+							queryNetworkTableRefAAIRequest = "${aai_endpoint}" + networkTableRefUriList[i] + "?depth=all"
+						}
+					} else {
+						// using uri value in URN mapping
+						String networkTableRefId = networkTableRefUriList[i].substring(networkTableRefUriList[i].indexOf("/route-table-reference/")+23, networkTableRefUriList[i].length())
+
+						if (networkTableRefId.charAt(networkTableRefId.length()-1) == '/') {
+							networkTableRefId = networkTableRefId.substring(0, networkTableRefId.length()-1)
+						}
+						queryNetworkTableRefAAIRequest = "${aai_endpoint}${aai_uri}/" + networkTableRefId + "?depth=all"
+
+					}
+
+
+					execution.setVariable(Prefix + "queryNetworkTableRefAAIRequest", queryNetworkTableRefAAIRequest)
+					msoLogger.debug(Prefix + "queryNetworkTableRefAAIRequest, , NetworkTableRef #" + counting + " : " + "\n" + queryNetworkTableRefAAIRequest)
+
+					APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryNetworkTableRefAAIRequest)
+					String returnCode = response.getStatusCode()
+					execution.setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", returnCode)
+					msoLogger.debug(" ***** AAI query network Table Reference Response Code, NetworkTableRef #" + counting + " : " + returnCode)
+
+					String aaiResponseAsString = response.getResponseBodyAsString()
+
+					if (returnCode=='200') {
+						execution.setVariable(Prefix + "queryNetworkTableRefAAIResponse", aaiResponseAsString)
+						msoLogger.debug(" QueryAAINetworkTableRef Success REST Response, , NetworkTableRef #" + counting + " : " + "\n" + aaiResponseAsString)
+
+						String networkTableRef = ""
+						if (utils.nodeExists(aaiResponseAsString, "route-table-reference-fqdn")) {
+							networkTableRef  = utils.getNodeText(aaiResponseAsString, "route-table-reference-fqdn")
+							networkTableRefs += "<routeTableFqdns>" + networkTableRef + "</routeTableFqdns>" + '\n'
+						}
+
+					} else {
+						if (returnCode=='404') {
+							String dataErrorMessage = "Response Error from QueryAAINetworkTableRef is 404 (Not Found)."
+							msoLogger.debug(dataErrorMessage)
+							exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+						} else {
+						   if (aaiResponseAsString.contains("RESTFault")) {
+							   WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+							   execution.setVariable("WorkflowException", exceptionObject)
+							   throw new BpmnError("MSOWorkflowException")
+
+							   } else {
+									// aai all errors
+									String dataErrorMessage = "Unexpected Response from QueryAAINetworkTableRef - " + returnCode
+									msoLogger.debug(dataErrorMessage)
+									exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+							  }
+						}
+					}
+
+				} // end loop
+
+				execution.setVariable(Prefix + "tableRefCollection", networkTableRefs)
+				msoLogger.debug(Prefix + "tableRefCollection - " + '\n' + networkTableRefs)
+
+			} else {
+				// reset return code to success
+				execution.setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", "200")
+				String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
+				String schemaVersion = aaiUriUtil.getNamespaceFromUri(execution, aai_uri)
+				String aaiStubResponse =
+					"""	<rest:payload contentType="text/xml" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd">
+							<route-table-references xmlns="${schemaVersion}">
+							  <route-table-reference-fqdn/>
+                            </route-table-references>
+						</rest:payload>"""
+				String aaiStubResponseAsXml = utils.formatXml(aaiStubResponse)
+				execution.setVariable(Prefix + "queryNetworkTableRefAAIResponse", aaiStubResponseAsXml)
+				execution.setVariable(Prefix + "tableRefCollection", "<routeTableFqdns/>")
+				msoLogger.debug(" No net table references, using this stub as response - " + '\n' + aaiStubResponseAsXml)
+
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTQueryAAINetworkTableRef() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+
+	public void callRESTUpdateContrailAAINetwork(DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.debug(" ***** Inside callRESTUpdateContrailAAINetwork() of DoCreateNetworkInstance ***** " )
+
+		try {
+			// get variables
+			String networkId   = execution.getVariable(Prefix + "networkId")
+			networkId = UriUtils.encode(networkId,"UTF-8")
+			String requeryIdAAIResponse   = execution.getVariable(Prefix + "requeryIdAAIResponse")
+			String createNetworkResponse   = execution.getVariable(Prefix + "createNetworkResponse")
+
+			// Prepare url
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
+			String updateContrailAAIUrlRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all"
+
+			execution.setVariable(Prefix + "updateContrailAAIUrlRequest", updateContrailAAIUrlRequest)
+			msoLogger.debug(Prefix + "updateContrailAAIUrlRequest - " + "\n" + updateContrailAAIUrlRequest)
+
+			//Prepare payload (PUT)
+			String schemaVersion = aaiUriUtil.getNamespaceFromUri(execution, aai_uri)
+			String payload = networkUtils.ContrailNetworkCreatedUpdate(requeryIdAAIResponse, createNetworkResponse, schemaVersion)
+			String payloadXml = utils.formatXml(payload)
+			execution.setVariable(Prefix + "updateContrailAAIPayloadRequest", payloadXml)
+			msoLogger.debug(" 'payload' to Update Contrail - " + "\n" + payloadXml)
+
+			APIResponse response = aaiUriUtil.executeAAIPutCall(execution, updateContrailAAIUrlRequest, payloadXml)
+						
+			String returnCode = response.getStatusCode()
+			execution.setVariable(Prefix + "aaiUpdateContrailReturnCode", returnCode)
+			msoLogger.debug(" ***** AAI Update Contrail Response Code  : " + returnCode)
+			String aaiUpdateContrailResponseAsString = response.getResponseBodyAsString()
+			if (returnCode=='200') {
+				execution.setVariable(Prefix + "updateContrailAAIResponse", aaiUpdateContrailResponseAsString)
+				msoLogger.debug(" AAI Update Contrail Success REST Response - " + "\n" + aaiUpdateContrailResponseAsString)
+				// Point-of-no-return is set to false, rollback not needed.
+				String rollbackEnabled = execution.getVariable(Prefix + "rollbackEnabled")
+				if (rollbackEnabled == "true") {
+				   execution.setVariable(Prefix + "isPONR", false)
+				} else {
+				   execution.setVariable(Prefix + "isPONR", true)
+				}  
+				msoLogger.debug(Prefix + "isPONR" + ": " + execution.getVariable(Prefix + "isPONR"))
+			} else {
+				if (returnCode=='404') {
+					String dataErrorMessage = " Response Error from UpdateContrailAAINetwork is 404 (Not Found)."
+					msoLogger.debug(dataErrorMessage)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+				} else {
+				   if (aaiUpdateContrailResponseAsString.contains("RESTFault")) {
+					   WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiUpdateContrailResponseAsString, execution)
+					   execution.setVariable("WorkflowException", exceptionObject)
+					   throw new BpmnError("MSOWorkflowException")
+
+					   } else {
+							// aai all errors
+							String errorMessage = "Unexpected Response from UpdateContrailAAINetwork - " + returnCode
+							msoLogger.debug(errorMessage)
+							exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
+					  }
+				}
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. callRESTUpdateContrailAAINetwork() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void prepareCreateNetworkRequest (DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside prepareCreateNetworkRequest() of DoCreateNetworkInstance")
+
+		try {
+
+			// get variables
+			String requestId = execution.getVariable("msoRequestId")
+			if (requestId == null) {
+				requestId = execution.getVariable("mso-request-id") 
+			}
+			String messageId = execution.getVariable(Prefix + "messageId")
+			String source    = execution.getVariable(Prefix + "source")
+
+			String requestInput = execution.getVariable(Prefix + "networkRequest")
+			String queryIdResponse = execution.getVariable(Prefix + "queryIdAAIResponse")
+			String cloudRegionId = execution.getVariable(Prefix + "cloudRegionPo")
+			String backoutOnFailure = execution.getVariable(Prefix + "rollbackEnabled")
+			
+			// Prepare Network request
+			String routeCollection = execution.getVariable(Prefix + "routeCollection")
+			String policyCollection = execution.getVariable(Prefix + "networkCollection")
+			String tableCollection = execution.getVariable(Prefix + "tableRefCollection")
+			String createNetworkRequest = networkUtils.CreateNetworkRequestV2(execution, requestId, messageId, requestInput, queryIdResponse, routeCollection, policyCollection, tableCollection, cloudRegionId, backoutOnFailure, source )
+			// Format Response
+			String buildDeleteNetworkRequestAsString = utils.formatXml(createNetworkRequest)
+			buildDeleteNetworkRequestAsString = buildDeleteNetworkRequestAsString.replace(":w1aac13n0", "").replace("w1aac13n0:", "")
+
+			execution.setVariable(Prefix + "createNetworkRequest", buildDeleteNetworkRequestAsString)
+			msoLogger.debug(Prefix + "createNetworkRequest - " + "\n" +  buildDeleteNetworkRequestAsString)
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareCreateNetworkRequest() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void prepareSDNCRequest (DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside prepareSDNCRequest() of DoCreateNetworkInstance")
+
+		try {
+			// get variables
+			String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			String createNetworkInput = execution.getVariable(Prefix + "networkRequest")
+			String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
+
+			String networkId = execution.getVariable(Prefix + "networkId")
+			String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")
+
+			// get/set 'msoRequestId' and 'mso-request-id'
+			String requestId = execution.getVariable("msoRequestId")
+			if (requestId != null) {
+				execution.setVariable("mso-request-id", requestId)
+			} else {
+			    requestId = execution.getVariable("mso-request-id")
+			} 	
+			execution.setVariable(Prefix + "requestId", requestId)
+			
+			// 1. prepare assign topology via SDNC Adapter SUBFLOW call
+ 		   	String sndcTopologyCreateRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, createNetworkInput, serviceInstanceId, sdncCallback, "assign", "NetworkActivateRequest", cloudRegionId, networkId, null, null)
+
+			String sndcTopologyCreateRequesAsString = utils.formatXml(sndcTopologyCreateRequest)
+			execution.setVariable(Prefix + "assignSDNCRequest", sndcTopologyCreateRequesAsString)
+			msoLogger.debug(Prefix + "assignSDNCRequest - " + "\n" +  sndcTopologyCreateRequesAsString)
+
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareSDNCRequest() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void prepareRpcSDNCRequest (DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside prepareRpcSDNCRequest() of DoCreateNetworkInstance")
+
+		try {
+			// get variables
+			
+			String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			String createNetworkInput = execution.getVariable(Prefix + "networkRequest")
+			String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
+
+			String networkId = execution.getVariable(Prefix + "networkId")
+			String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")
+			
+			// 1. prepare assign topology via SDNC Adapter SUBFLOW call
+			String sndcTopologyCreateRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, createNetworkInput, serviceInstanceId, sdncCallback, "assign", "CreateNetworkInstance", cloudRegionId, networkId, null)
+
+			String sndcTopologyCreateRequesAsString = utils.formatXml(sndcTopologyCreateRequest)
+			execution.setVariable(Prefix + "assignSDNCRequest", sndcTopologyCreateRequesAsString)
+			msoLogger.debug(Prefix + "assignSDNCRequest - " + "\n" +  sndcTopologyCreateRequesAsString)
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareRpcSDNCRequest() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+	
+	public void prepareRpcSDNCActivateRequest (DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+		
+		msoLogger.trace("Inside prepareRpcSDNCActivateRequest() of DoCreateNetworkInstance")
+
+		try {
+			// get variables
+			String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			String createNetworkInput = execution.getVariable(Prefix + "networkRequest")
+			String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
+			String networkId = execution.getVariable(Prefix + "networkId")
+			String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")
+			
+			// 1. prepare assign topology via SDNC Adapter SUBFLOW call
+			String sndcTopologyCreateRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, createNetworkInput, serviceInstanceId, sdncCallback, "activate", "CreateNetworkInstance", cloudRegionId, networkId, null)
+
+			String sndcTopologyCreateRequesAsString = utils.formatXml(sndcTopologyCreateRequest)
+			execution.setVariable(Prefix + "activateSDNCRequest", sndcTopologyCreateRequesAsString)
+			msoLogger.debug(Prefix + "activateSDNCRequest - " + "\n" +  sndcTopologyCreateRequesAsString)
+
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareRpcSDNCActivateRequest() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+	
+
+
+
+	// **************************************************
+	//     Post or Validate Response Section
+	// **************************************************
+
+	public void validateCreateNetworkResponse (DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside validateNetworkResponse() of DoCreateNetworkInstance")
+
+		try {
+			String returnCode = execution.getVariable(Prefix + "networkReturnCode")
+			String networkResponse = execution.getVariable(Prefix + "createNetworkResponse")
+			if (networkResponse==null)	{
+				networkResponse="" // reset
+			}
+
+			msoLogger.debug(" Network Adapter create responseCode: " + returnCode)
+
+			String errorMessage = ""
+			if (returnCode == "200") {
+				execution.setVariable(Prefix + "isNetworkRollbackNeeded", true)
+				execution.setVariable(Prefix + "createNetworkResponse", networkResponse)
+				msoLogger.debug(" Network Adapter create Success Response - " + "\n" + networkResponse)
+
+				// prepare rollback data
+				String rollbackData = utils.getNodeXml(networkResponse, "rollback", false).replace("tag0:","").replace(":tag0","")
+				rollbackData = rollbackData.replace("rollback>", "networkRollback>")
+  				String rollbackNetwork =
+					"""<rollbackNetworkRequest>
+							${rollbackData}
+						</rollbackNetworkRequest>"""
+				String rollbackNetworkXml = utils.formatXml(rollbackNetwork)
+				execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkXml)
+				msoLogger.debug(" Network Adapter rollback data - " + "\n" + rollbackNetworkXml)
+
+			} else { // network error
+			   if (returnCode.toInteger() > 399 && returnCode.toInteger() < 600) {   //4xx, 5xx
+				   if (networkResponse.contains("createNetworkError")) {
+					   networkResponse = networkResponse.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', '')
+					   errorMessage = utils.getNodeText(networkResponse, "message")
+					   errorMessage  = "Received error from Network Adapter: " + errorMessage
+					   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
+
+				   } else { // CatchAll exception
+				   	   if (returnCode == "500") {
+						   errorMessage = "JBWEB000065: HTTP Status 500."
+				       } else {
+					       errorMessage = "Return code is " + returnCode
+				       }
+					   errorMessage  = "Received error from Network Adapter: " + errorMessage
+					   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
+
+				   }
+
+			   } else { // CatchAll exception
+				   String dataErrorMessage  = "Received error from Network Adapter. Return code is: " + returnCode
+				   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+			   }
+
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. validateCreateNetworkResponse() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+
+	}
+
+	public void validateSDNCResponse (DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside validateSDNCResponse() of DoCreateNetworkInstance")
+
+		String response = execution.getVariable(Prefix + "assignSDNCResponse")
+		boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+		WorkflowException workflowException = execution.getVariable("WorkflowException")
+		
+		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+		sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+		// reset variable
+		String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "assignSDNCResponse")
+		assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
+		execution.setVariable(Prefix + "assignSDNCResponse", assignSDNCResponseDecodeXml)
+
+		if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) {  // from sdnc util, Prefix+'sdncResponseSuccess'
+			execution.setVariable(Prefix + "isSdncRollbackNeeded", true)
+			msoLogger.debug("Successfully Validated SDNC Response")
+
+		} else {
+			msoLogger.debug("Did NOT Successfully Validated SDNC Response")
+			throw new BpmnError("MSOWorkflowException")
+		}
+
+	}
+
+	public void validateRpcSDNCActivateResponse (DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside validateRpcSDNCActivateResponse() of DoCreateNetworkInstance")
+
+		String response = execution.getVariable(Prefix + "activateSDNCResponse")
+		boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+		WorkflowException workflowException = execution.getVariable("WorkflowException")
+
+		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+		sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+		// reset variable
+		String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "activateSDNCResponse")
+		assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
+		execution.setVariable(Prefix + "activateSDNCResponse", assignSDNCResponseDecodeXml)
+
+		if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) {  // from sdnc util, Prefix+'sdncResponseSuccess'
+			execution.setVariable(Prefix + "isSdncActivateRollbackNeeded", true)
+			msoLogger.debug("Successfully Validated Rpc SDNC Activate Response")
+
+		} else {
+			msoLogger.debug("Did NOT Successfully Validated Rpc SDNC Activate Response")
+			throw new BpmnError("MSOWorkflowException")
+		}
+		
+	}
+
+
+	public void prepareSDNCRollbackRequest (DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside prepareSDNCRollbackRequest() of DoCreateNetworkInstance")
+
+		try {
+			// get variables
+			String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			String createNetworkInput = execution.getVariable(Prefix + "networkRequest")
+			String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
+			String assignSDNCResponse = execution.getVariable(Prefix + "assignSDNCResponse")
+			String networkId = execution.getVariable(Prefix + "networkId")
+			if (networkId == 'null') {networkId = ""}
+			String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")
+			
+			// 2. prepare rollback topology via SDNC Adapter SUBFLOW call
+			String sndcTopologyRollbackRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, createNetworkInput, serviceInstanceId, sdncCallback, "rollback", "NetworkActivateRequest", cloudRegionId, networkId, null, null)
+			String sndcTopologyRollbackRequestAsString = utils.formatXml(sndcTopologyRollbackRequest)
+			execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyRollbackRequestAsString)
+			msoLogger.debug(" Preparing request for SDNC Topology 'rollback-NetworkActivateRequest' rollback . . . - " + "\n" +  sndcTopologyRollbackRequestAsString)
+
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareSDNCRollbackRequest() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void prepareRpcSDNCRollbackRequest (DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside prepareRpcSDNCRollbackRequest() of DoCreateNetworkInstance")
+
+		try {
+			// get variables
+			String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			String createNetworkInput = execution.getVariable(Prefix + "networkRequest")
+			String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
+			String assignSDNCResponse = execution.getVariable(Prefix + "assignSDNCResponse")
+			String networkId = execution.getVariable(Prefix + "networkId")
+			if (networkId == 'null') {networkId = ""}
+			String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")
+
+			// 2. prepare rollback topology via SDNC Adapter SUBFLOW call
+			String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, createNetworkInput, serviceInstanceId, sdncCallback, "unassign", "DeleteNetworkInstance", cloudRegionId, networkId, null)
+			String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
+			execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
+			msoLogger.debug(" Preparing request for SDNC Topology 'unassign-DeleteNetworkInstance' rollback . . . - " + "\n" +  sndcTopologyRollbackRpcRequestAsString)
+
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareRpcSDNCRollbackRequest() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+	
+	public void prepareRpcSDNCActivateRollback(DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside prepareRpcSDNCActivateRollback() of DoCreateNetworkInstance")
+
+		try {
+		
+			// get variables
+			String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			String createNetworkInput = execution.getVariable(Prefix + "networkRequest")
+			String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
+			String activateSDNCResponse = execution.getVariable(Prefix + "activateSDNCResponse")
+			String networkId = execution.getVariable(Prefix + "networkId")
+			if (networkId == 'null') {networkId = ""}
+			String serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")
+
+			// 2. prepare rollback topology via SDNC Adapter SUBFLOW call
+			String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, createNetworkInput, serviceInstanceId, sdncCallback, "deactivate", "DeleteNetworkInstance", cloudRegionId, networkId, null)
+			String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
+			execution.setVariable(Prefix + "rollbackActivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
+			msoLogger.debug(" Preparing request for RPC SDNC Topology 'deactivate-DeleteNetworkInstance' rollback . . . - " + "\n" +  sndcTopologyRollbackRpcRequestAsString)
+
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareRpcSDNCActivateRollback() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+	
+	public void prepareRollbackData(DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+		
+		msoLogger.trace("Inside prepareRollbackData() of DoCreateNetworkInstance")
+		
+		try {
+			
+			Map<String, String> rollbackData = new HashMap<String, String>();
+			String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
+			if (rollbackSDNCRequest != null) { 
+				if (rollbackSDNCRequest != "") {
+			        rollbackData.put("rollbackSDNCRequest", execution.getVariable(Prefix + "rollbackSDNCRequest"))
+			    }
+			}	
+			String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
+			if (rollbackNetworkRequest != null) {
+				if (rollbackNetworkRequest != "") { 	 
+			        rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
+				}	
+			}
+			String rollbackActivateSDNCRequest = execution.getVariable(Prefix + "rollbackActivateSDNCRequest")
+			if (rollbackActivateSDNCRequest != null) {
+				if (rollbackActivateSDNCRequest != "") {	 
+			        rollbackData.put("rollbackActivateSDNCRequest", execution.getVariable(Prefix + "rollbackActivateSDNCRequest"))
+				}	
+			}
+			execution.setVariable("rollbackData", rollbackData)
+			msoLogger.debug("** rollbackData : " + rollbackData)
+			
+			execution.setVariable("WorkflowException", execution.getVariable(Prefix + "WorkflowException"))
+			msoLogger.debug("** WorkflowException : " + execution.getVariable("WorkflowException"))
+			
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareRollbackData() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+		
+		}
+		
+	}
+	
+	public void postProcessResponse(DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+		
+		msoLogger.trace("Inside postProcessResponse() of DoCreateNetworkInstance")
+		
+		try {
+			
+			//Conditions:
+			// 1. Silent Success: execution.getVariable("CRENWKI_orchestrationStatus") == "ACTIVE"  
+			// 2. Success: execution.getVariable("WorkflowException") == null (NULL)
+			// 3. WorkflowException: execution.getVariable("WorkflowException") != null (NOT NULL) 
+			
+			msoLogger.debug(" ***** Is Exception Encountered (isException)? : " + execution.getVariable(Prefix + "isException"))
+			// successful flow
+			if (execution.getVariable(Prefix + "isException") == false) {  
+				// set rollback data
+				execution.setVariable("orchestrationStatus", "")
+				execution.setVariable("networkId", execution.getVariable(Prefix + "networkId"))
+				execution.setVariable("networkName", execution.getVariable(Prefix + "networkName"))
+				prepareSuccessRollbackData(execution) // populate rollbackData  
+				execution.setVariable("WorkflowException", null)
+				execution.setVariable(Prefix + "Success", true)
+				msoLogger.debug(" ***** postProcessResponse(), GOOD !!!")
+			} else {
+   			   // inside sub-flow logic
+				execution.setVariable(Prefix + "Success", false) 
+				execution.setVariable("rollbackData", null)
+				String exceptionMessage = " Exception encountered in MSO Bpmn. "
+				if (execution.getVariable("workflowException") != null) {  // Output of Rollback flow.
+				   msoLogger.debug(" ***** workflowException: " + execution.getVariable("workflowException"))
+				   WorkflowException wfex = execution.getVariable("workflowException")
+				   exceptionMessage = wfex.getErrorMessage()
+   				} else {
+			       if (execution.getVariable(Prefix + "WorkflowException") != null) {
+				      WorkflowException pwfex = execution.getVariable(Prefix + "WorkflowException")
+				      exceptionMessage = pwfex.getErrorMessage()
+			       }   
+   				}
+			    // going to the Main flow: a-la-carte or macro
+			    msoLogger.debug(" ***** postProcessResponse(), BAD !!!")
+			    exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+				throw new BpmnError("MSOWorkflowException")
+			}
+							
+		} catch(BpmnError b){
+		     msoLogger.debug("Rethrowing MSOWorkflowException")
+		     throw b
+			
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. postProcessResponse() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+			throw new BpmnError("MSOWorkflowException")
+		
+		}
+		
+		
+		
+	}
+	
+	public void prepareSuccessRollbackData(DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+		
+		msoLogger.trace("Inside prepareSuccessRollbackData() of DoCreateNetworkInstance")
+		
+		try {
+			
+			if (execution.getVariable("sdncVersion") != '1610') {
+			    prepareRpcSDNCRollbackRequest(execution)
+				prepareRpcSDNCActivateRollback(execution)
+			} else {
+			    prepareSDNCRollbackRequest(execution)
+			} 	
+			
+			Map<String, String> rollbackData = new HashMap<String, String>();
+			String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
+			if (rollbackSDNCRequest != null) {
+				if (rollbackSDNCRequest != "") {
+					rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
+				}
+			}
+			String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
+			if (rollbackNetworkRequest != null) {
+				if (rollbackNetworkRequest != "") {
+					rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
+				}
+			}
+			String rollbackActivateSDNCRequest = execution.getVariable(Prefix + "rollbackActivateSDNCRequest")
+			if (rollbackActivateSDNCRequest != null) {
+				if (rollbackActivateSDNCRequest != "") {
+					rollbackData.put("rollbackActivateSDNCRequest", rollbackActivateSDNCRequest)
+				}
+			}
+			execution.setVariable("rollbackData", rollbackData)
+			
+			msoLogger.debug("** 'rollbackData' for Full Rollback : " + rollbackData)
+			execution.setVariable("WorkflowException", null)
+
+			
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstance flow. prepareSuccessRollbackData() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+		
+		}
+		
+	}
+
+	public void setExceptionFlag(DelegateExecution execution){
+		
+		execution.setVariable("prefix",Prefix)
+		
+		msoLogger.trace("Inside setExceptionFlag() of DoCreateNetworkInstance")
+		
+		try {
+			
+			execution.setVariable(Prefix + "isException", true)
+			
+			if (execution.getVariable("SavedWorkflowException1") != null) {
+				execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1"))
+			} else {
+				execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
+			}
+			msoLogger.debug(Prefix + "WorkflowException - " +execution.getVariable(Prefix + "WorkflowException"))
+			
+		} catch(Exception ex){
+		  	String exceptionMessage = "Bpmn error encountered in DoCreateNetworkInstance flow. setExceptionFlag(): " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+		}  
+		
+	}
+	
+	
+	// *******************************
+	//     Build Error Section
+	// *******************************
+
+
+	
+	public void processJavaException(DelegateExecution execution){
+		
+		execution.setVariable("prefix",Prefix)
+		
+		try{
+			msoLogger.debug( "Caught a Java Exception in " + Prefix)
+			msoLogger.debug("Started processJavaException Method")
+			msoLogger.debug("Variables List: " + execution.getVariables())
+			execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
+			
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during processJavaException Method: " + e)
+			execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix)
+		}
+		msoLogger.debug( "Completed processJavaException Method in " + Prefix)
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollback.groovy
new file mode 100644
index 0000000..7e00f05
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollback.groovy
@@ -0,0 +1,393 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts;
+
+import groovy.xml.XmlUtil
+
+import groovy.json.*
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MsoLogger
+import org.onap.so.logger.MessageEnum
+
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.NetworkUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.rest.APIResponse;
+import org.onap.so.rest.RESTClient
+import org.onap.so.rest.RESTConfig
+
+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>DoCreateNetworkInstance.bpmn</class> process.
+ *
+ */
+public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateNetworkInstanceRollback.class);
+
+	String Prefix="CRENWKIR_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils(this)
+	NetworkUtils networkUtils = new NetworkUtils()
+	SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
+
+	def className = getClass().getSimpleName()
+	
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>DoCreateNetworkInstanceRollback.bpmn</class> process.
+	 * @param execution
+	 */
+	public InitializeProcessVariables(DelegateExecution execution){
+		/* Initialize all the process variables in this block */
+
+		execution.setVariable(Prefix + "rollbackNetworkRequest", null)
+		execution.setVariable(Prefix + "rollbackSDNCRequest", null)
+		execution.setVariable(Prefix + "rollbackActivateSDNCRequest", null)
+		execution.setVariable(Prefix + "WorkflowException", null)
+		
+		execution.setVariable(Prefix + "rollbackNetworkRequest", "")
+		execution.setVariable(Prefix + "rollbackNetworkResponse", "")
+		execution.setVariable(Prefix + "rollbackNetworkReturnCode", "")
+
+		execution.setVariable(Prefix + "rollbackSDNCRequest", "")
+		execution.setVariable(Prefix + "rollbackSDNCResponse", "")
+		execution.setVariable(Prefix + "rollbackSDNCReturnCode", "")
+		
+		execution.setVariable(Prefix + "rollbackActivateSDNCRequest", "")
+		execution.setVariable(Prefix + "rollbackActivateSDNCResponse", "")
+		execution.setVariable(Prefix + "rollbackActivateSDNCReturnCode", "")
+
+		execution.setVariable(Prefix + "Success", false)
+		execution.setVariable(Prefix + "fullRollback", false)
+		execution.setVariable(Prefix + "networkId", "")
+		execution.setVariable(Prefix + "urlRollbackPoNetwork", "")
+
+	}
+
+	// **************************************************
+	//     Pre or Prepare Request Section
+	// **************************************************
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>DoCreateNetworkInstanceRollback.bpmn</class> process.
+	 * @param execution
+	 */
+	public void preProcessRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		
+		msoLogger.trace("Inside preProcessRequest() of " + className + ".groovy")
+
+		try {
+			// initialize flow variables
+			InitializeProcessVariables(execution)
+			
+			// GET Incoming request/variables
+			String rollbackNetworkRequest = null
+			String rollbackSDNCRequest = null
+			String rollbackActivateSDNCRequest = null
+			
+			// Partial Rollback
+			Map<String, String> rollbackData = execution.getVariable("rollbackData")
+			if (rollbackData != null && rollbackData instanceof Map) {
+
+					if(rollbackData.containsKey("rollbackSDNCRequest")) {
+					   rollbackSDNCRequest = rollbackData["rollbackSDNCRequest"]
+					}
+					
+					if(rollbackData.containsKey("rollbackNetworkRequest")) {
+						rollbackNetworkRequest = rollbackData["rollbackNetworkRequest"]
+					}
+
+					if(rollbackData.containsKey("rollbackActivateSDNCRequest")) {
+					   rollbackActivateSDNCRequest = rollbackData["rollbackActivateSDNCRequest"]
+					}
+					
+			}
+			
+			execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkRequest)
+			execution.setVariable(Prefix + "rollbackSDNCRequest", rollbackSDNCRequest)
+			execution.setVariable(Prefix + "rollbackActivateSDNCRequest", rollbackActivateSDNCRequest)
+			msoLogger.debug("'rollbackData': " + '\n' + execution.getVariable("rollbackData"))
+			
+			String sdncVersion = execution.getVariable("sdncVersion")
+			msoLogger.debug("sdncVersion? : " + sdncVersion)
+
+			// PO Authorization Info / headers Authorization=
+			String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth",execution)
+			try {
+				def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution))
+				execution.setVariable("BasicAuthHeaderValuePO",encodedString)
+				execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
+	
+			} catch (IOException ex) {
+				String exceptionMessage = "Exception Encountered in DoCreateNetworkInstance, PreProcessRequest() - "
+				String dataErrorMessage = exceptionMessage + " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
+				msoLogger.debug(dataErrorMessage )
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+			}
+
+			if (execution.getVariable("SavedWorkflowException1") != null) {
+				execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1"))
+			} else {
+				execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
+			}
+			msoLogger.debug("*** WorkflowException : " + execution.getVariable(Prefix + "WorkflowException"))
+			if(execution.getVariable(Prefix + "WorkflowException") != null) {
+				// called by: DoCreateNetworkInstance, partial rollback
+				execution.setVariable(Prefix + "fullRollback", false)
+
+			} else {
+			   // called by: Macro - Full Rollback, WorkflowException = null
+			   execution.setVariable(Prefix + "fullRollback", true)
+			
+			}
+			msoLogger.debug("*** fullRollback? : " + execution.getVariable(Prefix + "fullRollback"))
+			
+		
+		} catch (BpmnError e) {
+		throw e;
+		
+		} catch (Exception ex) {
+			// caught exception
+			String exceptionMessage = "Exception Encountered in PreProcessRequest() of " + className + ".groovy ***** : " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		
+		}
+
+	}
+	
+	public void callPONetworkAdapter (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside callPONetworkAdapter() of " + className + "")
+		
+		try {
+			String poUrl = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint",execution)
+			String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
+			String networkId = utils.getNodeText(rollbackSDNCRequest, "network-id")
+		
+			String rollbackNetworkRequest  = execution.getVariable(Prefix + "rollbackNetworkRequest")
+
+			String urlRollbackPoNetwork = poUrl+ "/" + networkId + "/rollback"
+			msoLogger.debug("'urlRollbackPoNetwork': " + urlRollbackPoNetwork)
+			execution.setVariable(Prefix + "urlRollbackPoNetwork", urlRollbackPoNetwork)
+
+			RESTConfig config = new RESTConfig(urlRollbackPoNetwork)
+			RESTClient client = new RESTClient(config).
+									     addHeader("Content-Type", "application/xml").
+									  addAuthorizationHeader(execution.getVariable("BasicAuthHeaderValuePO"));
+
+		    APIResponse response = client.httpDelete(rollbackNetworkRequest)
+			String responseCode = response.getStatusCode()
+			String responseBody = response.getResponseBodyAsString() 
+		
+			execution.setVariable(Prefix + "rollbackNetworkReturnCode", responseCode)
+			execution.setVariable(Prefix + "rollbackNetworkResponse", responseBody)
+		
+			msoLogger.debug(" Network Adapter rollback responseCode: " + responseCode)
+			msoLogger.debug(" Network Adapter rollback responseBody: " + responseBody)
+		
+			
+		} catch (Exception ex) {
+			String exceptionMessage = "Exception Encountered in callPONetworkAdapter() of DoCreateNetworkInstanceRollback flow - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+		
+	}
+	
+	
+	public void validateRollbackResponses (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside validateRollbackResponses() of DoCreateNetworkInstanceRollback")
+		
+		try {
+			// validate PO network rollback response
+			String rollbackNetworkErrorMessages = ""
+			String rollbackNetworkReturnCode = "200"
+			if (execution.getVariable(Prefix + "rollbackNetworkRequest") != null) {
+				rollbackNetworkReturnCode = execution.getVariable(Prefix + "rollbackNetworkReturnCode")
+				String rollbackNetworkResponse = execution.getVariable(Prefix + "rollbackNetworkResponse")
+				msoLogger.debug(" NetworkRollback Code - " + rollbackNetworkReturnCode)
+				msoLogger.debug(" NetworkRollback Response - " + rollbackNetworkResponse)
+				if (rollbackNetworkReturnCode != "200") {
+					rollbackNetworkErrorMessages = " + PO Network rollback failed. "
+				} else {
+					rollbackNetworkErrorMessages = " + PO Network rollback completed."
+				}
+			}
+			
+			// validate SDNC rollback response
+			String rollbackSdncErrorMessages = ""
+			String rollbackSDNCReturnCode = "200"
+			if (execution.getVariable(Prefix + "rollbackSDNCRequest") != null) {
+				rollbackSDNCReturnCode = execution.getVariable(Prefix + "rollbackSDNCReturnCode")
+				String rollbackSDNCResponse = execution.getVariable(Prefix + "rollbackSDNCResponse")
+				String rollbackSDNCReturnInnerCode = ""
+				SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+				rollbackSDNCResponse = rollbackSDNCResponse
+				rollbackSDNCResponse = rollbackSDNCResponse.replace('$', '').replace('<?xml version="1.0" encoding="UTF-8"?>', "")
+				if (rollbackSDNCReturnCode == "200") {
+					if (utils.nodeExists(rollbackSDNCResponse, "response-code")) {
+						rollbackSDNCReturnInnerCode = utils.getNodeText(rollbackSDNCResponse, "response-code")
+						if (rollbackSDNCReturnInnerCode == "200" || rollbackSDNCReturnInnerCode == "" || rollbackSDNCReturnInnerCode == "0") {
+						    rollbackSdncErrorMessages = " + SNDC assign rollback completed."
+						} else {
+							rollbackSdncErrorMessages = " + SDNC assign rollback failed. "
+						}
+					} else {
+						  rollbackSdncErrorMessages = " + SNDC assign rollback completed."
+					}  
+				 } else {
+					  rollbackSdncErrorMessages = " + SDNC assign rollback failed. "
+			     }
+				msoLogger.debug(" SDNC assign rollback Code - " + rollbackSDNCReturnCode)
+				msoLogger.debug(" SDNC assign rollback  Response - " + rollbackSDNCResponse)
+			}	
+
+			// validate SDNC activate rollback response
+			String rollbackActivateSdncErrorMessages = ""
+			String rollbackActivateSDNCReturnCode = "200"
+			if (execution.getVariable(Prefix + "rollbackActivateSDNCRequest") != null) {
+				rollbackActivateSDNCReturnCode = execution.getVariable(Prefix + "rollbackActivateSDNCReturnCode")
+				String rollbackActivateSDNCResponse = execution.getVariable(Prefix + "rollbackActivateSDNCResponse")
+				String rollbackActivateSDNCReturnInnerCode = ""
+				rollbackActivateSDNCResponse = rollbackActivateSDNCResponse
+				rollbackActivateSDNCResponse = rollbackActivateSDNCResponse.replace('$', '').replace('<?xml version="1.0" encoding="UTF-8"?>', "")
+				if (rollbackActivateSDNCReturnCode == "200") {
+					if (utils.nodeExists(rollbackActivateSDNCResponse, "response-code")) {
+						rollbackActivateSDNCReturnInnerCode = utils.getNodeText(rollbackActivateSDNCResponse, "response-code")
+						if (rollbackActivateSDNCReturnInnerCode == "200" || rollbackActivateSDNCReturnInnerCode == "" || rollbackActivateSDNCReturnInnerCode == "0") {
+						   rollbackActivateSdncErrorMessages = " + SNDC activate rollback completed."
+						} else {
+							rollbackActivateSdncErrorMessages = " + SDNC activate rollback failed. "
+						}
+					} else {
+						 rollbackActivateSdncErrorMessages = " + SNDC activate rollback completed."
+					}
+				} else {
+					  rollbackActivateSdncErrorMessages = " + SDNC activate rollback failed. "
+				}
+				msoLogger.debug(" SDNC activate rollback Code - " + rollbackActivateSDNCReturnCode)
+				msoLogger.debug(" SDNC activate rollback  Response - " + rollbackActivateSDNCResponse)
+			}	
+
+
+			String statusMessage = ""
+			int errorCode = 7000
+			msoLogger.debug("*** fullRollback? : " + execution.getVariable(Prefix + "fullRollback"))
+			if (execution.getVariable(Prefix + "fullRollback") == false) { 
+				// original WorkflowException, 
+				WorkflowException wfe = execution.getVariable(Prefix + "WorkflowException") 
+				if (wfe != null) {
+				   // rollback due to failure in DoCreate - Partial rollback
+				   statusMessage = wfe.getErrorMessage()
+				   errorCode = wfe.getErrorCode()
+				} else {
+				   statusMessage = "See Previous Camunda flows for cause of Error: Undetermined Exception."
+				   errorCode = '7000'
+			    }
+
+				// set if all rolledbacks are successful
+				if (rollbackNetworkReturnCode == "200" && rollbackSDNCReturnCode == "200" && rollbackActivateSDNCReturnCode == "200") {
+					execution.setVariable("rolledBack", true)
+					execution.setVariable("wasDeleted", true)
+					
+				} else {
+					execution.setVariable("rolledBack", false)
+					execution.setVariable("wasDeleted", true)
+				}
+
+				statusMessage = statusMessage + rollbackActivateSdncErrorMessages + rollbackNetworkErrorMessages + rollbackSdncErrorMessages
+				msoLogger.debug("Final DoCreateNetworkInstanceRollback status message: " + statusMessage)
+				String processKey = getProcessKey(execution);
+				WorkflowException exception = new WorkflowException(processKey, errorCode, statusMessage);
+				execution.setVariable("workflowException", exception);
+				
+			} else { 
+				// rollback due to failures in Main flow (Macro) - Full rollback
+				// WorkflowException = null
+			    if (rollbackNetworkReturnCode == "200" && rollbackSDNCReturnCode == "200" && rollbackActivateSDNCReturnCode == "200") {
+					execution.setVariable("rollbackSuccessful", true)
+					execution.setVariable("rollbackError", false)
+			    } else {
+				    String exceptionMessage = "Network Create Rollback was not Successful. "
+                    msoLogger.debug(exceptionMessage)
+					execution.setVariable("rollbackSuccessful", false)
+				    execution.setVariable("rollbackError", true)
+					exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+					throw new BpmnError("MSOWorkflowException")
+			    }
+				  
+			} 
+			
+
+		} catch (Exception ex) {
+			String errorMessage = "See Previous Camunda flows for cause of Error: Undetermined Exception."
+			String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstanceRollback flow. validateRollbackResponses() - " + errorMessage + ": " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	// *******************************
+	//     Build Error Section
+	// *******************************
+
+
+	
+	public void processJavaException(DelegateExecution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		
+		try{
+			msoLogger.debug("Caught a Java Exception in " + Prefix)
+			msoLogger.debug("Started processJavaException Method")
+			msoLogger.debug("Variables List: " + execution.getVariables())
+			execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
+			
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during processJavaException Method: " + e)
+			execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix)
+		}
+		msoLogger.debug("Completed processJavaException Method in " + Prefix)
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateResources.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateResources.groovy
new file mode 100644
index 0000000..f7c5c1b
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateResources.groovy
@@ -0,0 +1,279 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+ 
+package org.onap.so.bpmn.infrastructure.scripts
+
+import org.codehaus.jackson.map.ObjectMapper
+import org.onap.so.bpmn.infrastructure.properties.BPMNProperties
+
+import java.util.ArrayList
+import java.util.Iterator
+import java.util.List
+import org.apache.commons.lang3.StringUtils
+import org.apache.http.HttpResponse
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.codehaus.groovy.runtime.ArrayUtil
+import org.codehaus.groovy.runtime.ScriptBytecodeAdapter
+import org.codehaus.groovy.runtime.callsite.CallSite
+import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation
+import org.codehaus.groovy.runtime.typehandling.ShortTypeHandling
+import org.json.JSONArray
+import org.json.JSONObject
+import org.onap.so.bpmn.common.recipe.BpmnRestClient
+import org.onap.so.bpmn.common.recipe.ResourceInput
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.CatalogDbUtils
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.core.domain.AllottedResource
+import org.onap.so.bpmn.core.domain.NetworkResource
+import org.onap.so.bpmn.core.domain.Resource
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.bpmn.core.domain.VnfResource
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.bpmn.common.resource.ResourceRequestBuilder
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+
+
+/**
+ * This groovy class supports the <class>DoCreateResources.bpmn</class> process.
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - globalSubscriberId - O
+ * @param - subscriptionServiceType - O
+ * @param - serviceInstanceId
+ * @param - serviceInstanceName - O
+ * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM)
+ * @param - sdncVersion 
+ *
+ * @param - addResourceList
+ *
+ * Outputs:
+ * @param - WorkflowException
+
+ */
+public class DoCreateResources extends AbstractServiceTaskProcessor{
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateResources.class);
+
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	CatalogDbUtils cutils = new CatalogDbUtils()
+
+    public void preProcessRequest(DelegateExecution execution)
+    {
+		msoLogger.trace("preProcessRequest ")
+		String msg = ""
+		
+        List addResourceList = execution.getVariable("addResourceList")
+        if (addResourceList == null)
+        {
+            msg = "Input addResourceList is null"
+            msoLogger.info(msg)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)  
+        }
+        else if (addResourceList.size() == 0)
+        {
+            msg = "No resource in addResourceList"
+            msoLogger.info(msg)
+        }
+        msoLogger.trace("Exit preProcessRequest ")
+    }
+    
+    public void sequenceResoure(DelegateExecution execution)
+    {
+        msoLogger.trace("Start sequenceResoure Process ")
+        
+        String serviceModelUUID = execution.getVariable("modelUuid")      
+               
+        List<Resource> addResourceList = execution.getVariable("addResourceList")        
+
+        List<NetworkResource> networkResourceList = new ArrayList<NetworkResource>()
+
+        List<Resource> sequencedResourceList = new ArrayList<Resource>()
+
+        String serviceDecompose = execution.getVariable("serviceDecomposition")
+        String serviceModelName = jsonUtil.getJsonValue(serviceDecompose, "serviceResources.modelInfo.modelName")
+        def resourceSequence = BPMNProperties.getResourceSequenceProp(serviceModelName)
+
+        if(resourceSequence != null) {
+            // sequence is defined in config file
+        for (resourceType in resourceSequence) {
+            for (resource in addResourceList) {
+                if (StringUtils.containsIgnoreCase(resource.getModelInfo().getModelName(), resourceType)) {
+                    sequencedResourceList.add(resource)
+
+                    if (resource instanceof NetworkResource) {
+                        networkResourceList.add(resource)
+                    }
+                }
+            }
+        }        
+        } else {
+        
+        //define sequenced resource list, we deploy vf first and then network and then ar
+        //this is defaule sequence
+        List<VnfResource> vnfResourceList = new ArrayList<VnfResource>()
+        List<AllottedResource> arResourceList = new ArrayList<AllottedResource>()
+
+        for (Resource rc : addResourceList){
+            if (rc instanceof VnfResource) {
+                vnfResourceList.add(rc)
+            } else if (rc instanceof NetworkResource) {
+                networkResourceList.add(rc)
+            } else if (rc instanceof AllottedResource) {
+                arResourceList.add(rc)
+            }
+        }
+        sequencedResourceList.addAll(vnfResourceList)
+        sequencedResourceList.addAll(networkResourceList)
+        sequencedResourceList.addAll(arResourceList)
+        }
+
+        String isContainsWanResource = networkResourceList.isEmpty() ? "false" : "true"
+        execution.setVariable("isContainsWanResource", isContainsWanResource)
+        execution.setVariable("currentResourceIndex", 0)
+        execution.setVariable("sequencedResourceList", sequencedResourceList)
+        msoLogger.info("sequencedResourceList: " + sequencedResourceList) 
+        msoLogger.trace("COMPLETED sequenceResoure Process ")
+    }   
+   
+    public prepareServiceTopologyRequest(DelegateExecution execution) {
+
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO", "======== Start prepareServiceTopologyRequest Process ======== ", isDebugEnabled)
+
+        String serviceDecompose = execution.getVariable("serviceDecomposition")
+
+        execution.setVariable("operationType", "create")
+        execution.setVariable("resourceType", "")
+
+        String serviceInvariantUuid = jsonUtil.getJsonValue(serviceDecompose, "serviceResources.modelInfo.modelInvariantUuid")
+        String serviceUuid = jsonUtil.getJsonValue(serviceDecompose, "serviceResources.modelInfo.modelUuid")
+        String serviceModelName = jsonUtil.getJsonValue(serviceDecompose, "serviceResources.modelInfo.modelName")
+
+        execution.setVariable("modelInvariantUuid", serviceInvariantUuid)
+        execution.setVariable("modelUuid", serviceUuid)
+        execution.setVariable("serviceModelName", serviceModelName)
+
+        utils.log("INFO", "======== End prepareServiceTopologyRequest Process ======== ", isDebugEnabled)
+    }
+   
+    public void getCurrentResoure(DelegateExecution execution){
+	    msoLogger.trace("Start getCurrentResoure Process ")    
+	    def currentIndex = execution.getVariable("currentResourceIndex")
+	    List<Resource> sequencedResourceList = execution.getVariable("sequencedResourceList")  
+	    Resource currentResource = sequencedResourceList.get(currentIndex)
+        execution.setVariable("resourceType", currentResource.getModelInfo().getModelName())
+	    msoLogger.info("Now we deal with resouce:" + currentResource.getModelInfo().getModelName())  
+        msoLogger.trace("COMPLETED getCurrentResoure Process ")  
+    }
+    
+    public void parseNextResource(DelegateExecution execution){
+        msoLogger.trace("Start parseNextResource Process ")    
+        def currentIndex = execution.getVariable("currentResourceIndex")
+        def nextIndex =  currentIndex + 1
+        execution.setVariable("currentResourceIndex", nextIndex)
+        List<String> sequencedResourceList = execution.getVariable("sequencedResourceList")    
+        if(nextIndex >= sequencedResourceList.size()){
+            execution.setVariable("allResourceFinished", "true")
+        }else{
+            execution.setVariable("allResourceFinished", "false")
+        }
+        msoLogger.trace("COMPLETED parseNextResource Process ")       
+    }    
+
+	 public void prepareResourceRecipeRequest(DelegateExecution execution){
+		 msoLogger.trace("Start prepareResourceRecipeRequest Process ")
+		 ResourceInput resourceInput = new ResourceInput()
+		 String serviceInstanceName = execution.getVariable("serviceInstanceName")
+         String resourceType = execution.getVariable("resourceType")
+		 String resourceInstanceName = resourceType + "_" + serviceInstanceName
+		 resourceInput.setResourceInstanceName(resourceInstanceName)
+		 msoLogger.info("Prepare Resource Request resourceInstanceName:" + resourceInstanceName)
+		 String globalSubscriberId = execution.getVariable("globalSubscriberId")
+		 String serviceType = execution.getVariable("serviceType")
+		 String serviceInstanceId = execution.getVariable("serviceInstanceId")
+		 String operationId = execution.getVariable("operationId")
+		 String operationType = "createInstance"
+		 resourceInput.setGlobalSubscriberId(globalSubscriberId)
+		 resourceInput.setServiceType(serviceType)
+		 resourceInput.setServiceInstanceId(serviceInstanceId)
+		 resourceInput.setOperationId(operationId)
+		 resourceInput.setOperationType(operationType);
+		 def currentIndex = execution.getVariable("currentResourceIndex")
+		 List<Resource> sequencedResourceList = execution.getVariable("sequencedResourceList")
+		 Resource currentResource = sequencedResourceList.get(currentIndex)
+		 resourceInput.setResourceModelInfo(currentResource.getModelInfo());
+		 ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+		 resourceInput.setServiceModelInfo(serviceDecomposition.getModelInfo());
+		 
+		 String incomingRequest = execution.getVariable("uuiRequest")
+		 //set the requestInputs from tempalte  To Be Done
+		 String serviceModelUuid = jsonUtil.getJsonValue(incomingRequest,"service.serviceUuid")
+		 String serviceParameters = jsonUtil.getJsonValue(incomingRequest, "service.parameters")
+		 String resourceParameters = ResourceRequestBuilder.buildResourceRequestParameters(execution, serviceModelUuid, resourceCustomizationUuid, serviceParameters)
+		 resourceInput.setResourceParameters(resourceParameters)
+		 execution.setVariable("resourceInput", resourceInput)
+		 msoLogger.trace("COMPLETED prepareResourceRecipeRequest Process ")
+	 }
+	 
+	 public void executeResourceRecipe(DelegateExecution execution){
+		 msoLogger.trace("Start executeResourceRecipe Process ")
+		 
+		 try {
+			 String requestId = execution.getVariable("msoRequestId")
+			 String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			 String serviceType = execution.getVariable("serviceType")
+			 ResourceInput resourceInput = execution.getVariable("resourceInput")
+			 
+			 // requestAction is action, not opertiontype
+			 //String requestAction = resourceInput.getOperationType()
+			 String requestAction = "createInstance"
+			 JSONObject resourceRecipe = cutils.getResourceRecipe(execution, resourceInput.getResourceModelInfo().getModelUuid(), requestAction)
+
+	         if (resourceRecipe != null) {
+		         String recipeURL = BPMNProperties.getProperty("bpelURL", "http://mso:8080") + resourceRecipe.getString("orchestrationUri")
+				 int recipeTimeOut = resourceRecipe.getInt("recipeTimeout")
+				 String recipeParamXsd = resourceRecipe.get("paramXSD")
+				 HttpResponse resp = BpmnRestClient.post(recipeURL, requestId, recipeTimeOut, requestAction, serviceInstanceId, serviceType, resourceInput.toString(), recipeParamXsd)
+	         } else {
+	             String exceptionMessage = "Resource receipe is not found for resource modeluuid: " +
+	                     resourceInput.getResourceModelInfo().getModelUuid()
+	             utils.log("ERROR", exceptionMessage, isDebugEnabled)
+	             exceptionUtil.buildAndThrowWorkflowException(execution, 500, exceptionMessage)
+	         }
+
+	         msoLogger.trace("======== end executeResourceRecipe Process ======== ")
+		 }catch(BpmnError b){
+			 msoLogger.debug("Rethrowing MSOWorkflowException")
+			 throw b
+		 }catch(Exception e){
+			 msoLogger.debug("Error occured within DoCreateResources executeResourceRecipe method: " + e)
+			 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured during DoCreateResources executeResourceRecipe Catalog")
+		 }
+	 }
+	 
+     public void postConfigRequest(DelegateExecution execution){
+         //now do noting
+     }
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy
new file mode 100644
index 0000000..93a260a
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy
@@ -0,0 +1,795 @@
+/*-
+ * ============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.onap.so.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.onap.aai.domain.yang.OwningEntity
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.CatalogDbUtils
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.domain.ModelInfo
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.bpmn.core.domain.ServiceInstance
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.bpmn.infrastructure.aai.groovyflows.AAICreateResources
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.springframework.web.util.UriUtils
+
+import groovy.json.*
+
+/**
+ * This groovy class supports the <class>DoCreateServiceInstance.bpmn</class> process.
+ *
+ * Inputs:
+ * @param - msoRequestId
+ * @param - globalSubscriberId
+ * @param - subscriptionServiceType
+ * @param - serviceInstanceId
+ * @param - serviceInstanceName - O
+ * @param - serviceModelInfo
+ * @param - productFamilyId
+ * @param - disableRollback
+ * @param - failExists - TODO
+ * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM)
+ * @param - sdncVersion ("1610")
+ * @param - serviceDecomposition - Decomposition for R1710 
+ * (if macro provides serviceDecompsition then serviceModelInfo, serviceInstanceId & serviceInstanceName will be ignored)
+ *
+ * Outputs:
+ * @param - rollbackData (localRB->null)
+ * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true)
+ * @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 {
+
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateServiceInstance.class);
+	String Prefix="DCRESI_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	CatalogDbUtils cutils = new CatalogDbUtils()
+
+	public void preProcessRequest (DelegateExecution execution) {
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		msoLogger.trace("preProcessRequest")
+
+		try {
+			String requestId = execution.getVariable("msoRequestId")
+			execution.setVariable("prefix", Prefix)
+			
+			setBasicDBAuthHeader(execution, isDebugEnabled)
+			//Inputs
+			//requestDetails.subscriberInfo. for AAI GET & PUT & SDNC assignToplology
+			String globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId
+
+			//requestDetails.requestParameters. for AAI PUT & SDNC assignTopology
+			String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+
+			//requestDetails.requestParameters. for SDNC assignTopology
+			String productFamilyId = execution.getVariable("productFamilyId") //AAI productFamilyId
+
+			if (isBlank(globalSubscriberId)) {
+				msg = "Input globalSubscriberId is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			
+			if (isBlank(subscriptionServiceType)) {
+				msg = "Input subscriptionServiceType is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			
+			if (productFamilyId == null) {
+				execution.setVariable("productFamilyId", "")
+			}
+			
+			String sdncCallbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "mso.workflow.sdncadapter.callback is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl)
+
+			//requestDetails.modelInfo.for AAI PUT servieInstanceData & SDNC assignTopology
+			String modelInvariantUuid = ""
+			String modelVersion = ""
+			String modelUuid = ""
+			String modelName = ""
+			String serviceInstanceName = "" 
+			//Generated in parent.for AAI PUT
+			String serviceInstanceId = ""
+			String serviceType = ""
+			String serviceRole = ""
+					
+			ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("serviceDecomposition")
+			if (serviceDecomp != null)
+			{
+				serviceType = serviceDecomp.getServiceType() ?: ""
+				msoLogger.debug("serviceType:" + serviceType)
+				serviceRole = serviceDecomp.getServiceRole() ?: ""
+				
+				ServiceInstance serviceInstance = serviceDecomp.getServiceInstance()
+				if (serviceInstance != null)
+				{
+					serviceInstanceId = serviceInstance.getInstanceId() ?: ""
+					serviceInstanceName = serviceInstance.getInstanceName() ?: ""
+					execution.setVariable("serviceInstanceId", serviceInstanceId)
+					execution.setVariable("serviceInstanceName", serviceInstanceName)
+				}
+				
+				ModelInfo modelInfo = serviceDecomp.getModelInfo()
+				if (modelInfo != null)
+				{
+					modelInvariantUuid = modelInfo.getModelInvariantUuid() ?: ""
+					modelVersion = modelInfo.getModelVersion() ?: ""
+					modelUuid = modelInfo.getModelUuid() ?: ""
+					modelName = modelInfo.getModelName() ?: ""
+				}
+				else 
+				{
+					msg = "Input serviceModelInfo is null"
+					msoLogger.debug(msg)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+				}
+			}
+			else
+			{
+				//requestDetails.requestInfo. for AAI GET/PUT serviceInstanceData & SDNC assignToplology
+				serviceInstanceName = execution.getVariable("serviceInstanceName") ?: ""
+				serviceInstanceId = execution.getVariable("serviceInstanceId") ?: ""
+				
+				String serviceModelInfo = execution.getVariable("serviceModelInfo")
+				if (isBlank(serviceModelInfo)) {
+					msg = "Input serviceModelInfo is null"
+					msoLogger.debug(msg)
+					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") ?: ""
+				//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)
+			
+			//alacarte SIs are NOT sent to sdnc. exceptions are listed in config variable
+			String svcTypes = UrnPropertiesReader.getVariable("sdnc.si.svc.types",execution) ?: ""
+			msoLogger.debug("SDNC SI serviceTypes:" + svcTypes)
+			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"
+						msoLogger.debug(msg)
+						exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+					}
+				}
+			}
+			
+			msoLogger.debug("isSdncService: " + isSdncService)
+			msoLogger.debug("Send To SDNC: " + execution.getVariable("sendToSDNC"))
+			msoLogger.debug("Service Type: " + execution.getVariable("serviceType"))
+			
+			//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"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			
+			
+			StringBuilder sbParams = new StringBuilder()
+			Map<String, String> paramsMap = execution.getVariable("serviceInputParams")
+			if (paramsMap != null)
+			{
+				sbParams.append("<service-input-parameters>")
+				for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
+					String paramsXml
+					String paramName = entry.getKey()
+					String paramValue = entry.getValue()
+					paramsXml =
+							"""	<param>
+							<name>${MsoUtils.xmlEscape(paramName)}</name>
+							<value>${MsoUtils.xmlEscape(paramValue)}</value>
+							</param>
+							"""
+					sbParams.append(paramsXml)
+				}
+				sbParams.append("</service-input-parameters>")
+			}
+			String siParamsXml = sbParams.toString()
+			if (siParamsXml == null)
+				siParamsXml = ""
+			execution.setVariable("siParamsXml", siParamsXml)
+
+			//AAI PUT
+			String oStatus = execution.getVariable("initialStatus") ?: "Active"
+			if ("TRANSPORT".equalsIgnoreCase(serviceType))
+			{
+				oStatus = "Created"
+			}
+
+			String statusLine = isBlank(oStatus) ? "" : "<orchestration-status>${MsoUtils.xmlEscape(oStatus)}</orchestration-status>"
+			String serviceTypeLine = isBlank(serviceType) ? "" : "<service-type>${MsoUtils.xmlEscape(serviceType)}</service-type>"
+			String serviceRoleLine = isBlank(serviceRole) ? "" : "<service-role>${MsoUtils.xmlEscape(serviceRole)}</service-role>"
+				
+			//QUERY CATALOG DB AND GET WORKLOAD / ENVIRONMENT CONTEXT
+			String environmentContext = ""
+			String workloadContext =""
+			
+			try{
+				 String json = cutils.getServiceResourcesByServiceModelInvariantUuidString(execution,modelInvariantUuid )
+				 
+				 msoLogger.debug("JSON IS: "+json)
+				 				 
+				 environmentContext = jsonUtil.getJsonValue(json, "serviceResources.environmentContext") ?: ""
+				 workloadContext = jsonUtil.getJsonValue(json, "serviceResources.workloadContext") ?: ""
+				 msoLogger.debug("Env Context is: "+ environmentContext)
+				 msoLogger.debug("Workload Context is: "+ workloadContext)
+			}catch(BpmnError e){
+				throw e
+			} catch (Exception ex){
+				msg = "Exception in preProcessRequest " + ex.getMessage()
+				msoLogger.debug(msg)
+				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)
+			String serviceInstanceData =
+					"""<service-instance xmlns=\"${namespace}\">
+					<service-instance-name>${MsoUtils.xmlEscape(serviceInstanceName)}</service-instance-name>
+					${serviceTypeLine}
+					${serviceRoleLine}
+					${statusLine}
+				    <model-invariant-id>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-id>
+				    <model-version-id>${MsoUtils.xmlEscape(modelUuid)}</model-version-id>
+					<environment-context>${MsoUtils.xmlEscape(environmentContext)}</environment-context>
+					<workload-context>${MsoUtils.xmlEscape(workloadContext)}</workload-context>
+					</service-instance>""".trim()
+
+			execution.setVariable("serviceInstanceData", serviceInstanceData)
+			msoLogger.debug(" 'payload' to create Service Instance in AAI - " + "\n" + serviceInstanceData)
+				
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit preProcessRequest")
+	}
+
+	//TODO: Will be able to replace with call to GenericGetService
+	public void getAAICustomerById (DelegateExecution execution) {
+		// https://{aaiEP}/aai/v8/business/customers/customer/{globalCustomerId}
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		try {
+
+			String globalCustomerId = execution.getVariable("globalSubscriberId") //VID to AAI name map
+			msoLogger.debug(" ***** getAAICustomerById ***** globalCustomerId:" + globalCustomerId)
+
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String aai_uri = aaiUriUtil.getBusinessCustomerUri(execution)
+			if (isBlank(aai_endpoint) || isBlank(aai_uri))
+			{
+				msg = "AAI URL is invalid. Endpoint:" + aai_endpoint + aai_uri
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			String getAAICustomerUrl = "${aai_endpoint}${aai_uri}/" + UriUtils.encode(globalCustomerId,"UTF-8")
+
+			msoLogger.debug("getAAICustomerById Url:" + getAAICustomerUrl)
+			APIResponse response = aaiUriUtil.executeAAIGetCall(execution, getAAICustomerUrl)
+			String returnCode = response.getStatusCode()
+			String aaiResponseAsString = response.getResponseBodyAsString()
+
+			msg = "getAAICustomerById ResponseCode:" + returnCode + " ResponseString:" + aaiResponseAsString
+			msoLogger.debug(msg)
+
+			if (returnCode=='200') {
+				// Customer found by ID. FLow to proceed.
+				msoLogger.debug(msg)
+
+				//TODO Deferred
+				//we might verify that service-subscription with matching name exists
+				//and throw error if not. If not checked, we will get exception in subsequent step on Create call
+				//in 1610 we assume both customer & service subscription were pre-created
+
+			} else {
+				if (returnCode=='404') {
+					msg = "GlobalCustomerId:" + globalCustomerId + " not found (404) in AAI"
+					msoLogger.debug(msg)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+
+				} else {
+					if (aaiResponseAsString.contains("RESTFault")) {
+						msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, aaiResponseAsString, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "");
+						WorkflowException workflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+						execution.setVariable("WorkflowException", workflowException)
+						throw new BpmnError("MSOWorkflowException")
+
+					} else {
+						// aai all errors
+						msg = "Error in getAAICustomerById ResponseCode:" + returnCode
+						msoLogger.debug(msg)
+						exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+					}
+				}
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in getAAICustomerById. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit getAAICustomerById")
+
+	}
+
+	public void postProcessAAIGET(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("postProcessAAIGET")
+		String msg = ""
+
+		try {
+			String serviceInstanceName = execution.getVariable("serviceInstanceName")
+			boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")
+			if(!succInAAI){
+				msoLogger.debug("Error getting Service-instance from AAI", + serviceInstanceName)
+				WorkflowException workflowException = execution.getVariable("WorkflowException")
+				if(workflowException != null){
+					exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+				}
+				else
+				{
+					msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI
+					msoLogger.debug(msg)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+				}
+			}
+			else
+			{
+				boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator")
+				if(foundInAAI){
+					msoLogger.debug("Found Service-instance in AAI")
+					msg = "ServiceInstance already exists in AAI:" + serviceInstanceName
+					msoLogger.debug(msg)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+				}
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoCreateServiceInstance.postProcessAAIGET. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit postProcessAAIGET")
+	}
+
+	public void postProcessAAIPUT(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("postProcessAAIPUT")
+		String msg = ""
+		try {
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			boolean succInAAI = execution.getVariable("GENPS_SuccessIndicator")
+			if(!succInAAI){
+				msoLogger.debug("Error putting Service-instance in AAI", + serviceInstanceId)
+				WorkflowException workflowException = execution.getVariable("WorkflowException")
+				msoLogger.debug("workflowException: " + workflowException)
+				if(workflowException != null){
+					exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+				}
+			}
+			else
+			{
+				//start rollback set up
+				RollbackData rollbackData = new RollbackData()
+				def disableRollback = execution.getVariable("disableRollback")
+				rollbackData.put("SERVICEINSTANCE", "disableRollback", disableRollback.toString())
+				rollbackData.put("SERVICEINSTANCE", "rollbackAAI", "true")
+				rollbackData.put("SERVICEINSTANCE", "serviceInstanceId", serviceInstanceId)
+				rollbackData.put("SERVICEINSTANCE", "subscriptionServiceType", execution.getVariable("subscriptionServiceType"))
+				rollbackData.put("SERVICEINSTANCE", "globalSubscriberId", execution.getVariable("globalSubscriberId"))
+				execution.setVariable("rollbackData", rollbackData)
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoCreateServiceInstance.postProcessAAIDEL. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit postProcessAAIPUT")
+	}
+
+	public void preProcessSDNCAssignRequest(DelegateExecution execution) {
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		msoLogger.trace("preProcessSDNCAssignRequest")
+
+		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 msoAction = ""
+
+			def modelInvariantUuid = execution.getVariable("modelInvariantUuid")
+			def modelVersion = execution.getVariable("modelVersion")
+			def modelUuid = execution.getVariable("modelUuid")
+			def modelName = execution.getVariable("modelName")
+			
+			def sdncRequestId = UUID.randomUUID().toString()
+			
+			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.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+				   <sdncadapter:RequestHeader>
+							<sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId>
+							<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId>
+							<sdncadapter:SvcAction>assign</sdncadapter:SvcAction>
+							<sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation>
+							<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl>
+							<sdncadapter:MsoAction>${MsoUtils.xmlEscape(msoAction)}</sdncadapter:MsoAction>
+					</sdncadapter:RequestHeader>
+				<sdncadapterworkflow:SDNCRequestData>
+					<request-information>
+						<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+						<source>MSO</source>
+						<notification-url/>
+						<order-number/>
+						<order-version/>
+						<request-action>CreateServiceInstance</request-action>
+					</request-information>
+					<service-information>
+						<service-id>${MsoUtils.xmlEscape(serviceId)}</service-id>
+						<subscription-service-type>${MsoUtils.xmlEscape(subscriptionServiceType)}</subscription-service-type>
+						<onap-model-information>
+					         <model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-uuid>
+					         <model-uuid>${MsoUtils.xmlEscape(modelUuid)}</model-uuid>
+					         <model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version>
+					         <model-name>${MsoUtils.xmlEscape(modelName)}</model-name>
+					    </onap-model-information>
+						<service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+						<subscriber-name/>
+						<global-customer-id>${MsoUtils.xmlEscape(globalSubscriberId)}</global-customer-id>
+					</service-information>
+					<service-request-input>
+						<service-instance-name>${MsoUtils.xmlEscape(serviceInstanceName)}</service-instance-name>
+						${siParamsXml}
+					</service-request-input>
+				</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			msoLogger.debug("sdncAssignRequest:\n" + sdncAssignRequest)
+			sdncAssignRequest = utils.formatXml(sdncAssignRequest)
+			execution.setVariable("sdncAssignRequest", sdncAssignRequest)
+			msoLogger.debug("sdncAssignRequest:  " + sdncAssignRequest)
+
+			def sdncRequestId2 = UUID.randomUUID().toString()
+			String sdncDelete = sdncAssignRequest.replace(">assign<", ">delete<").replace(">CreateServiceInstance<", ">DeleteServiceInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<")
+			def sdncRequestId3 = UUID.randomUUID().toString()
+			String sdncDeactivate = sdncDelete.replace(">delete<", ">deactivate<").replace(">${sdncRequestId2}<", ">${sdncRequestId3}<")
+			def rollbackData = execution.getVariable("rollbackData")
+			rollbackData.put("SERVICEINSTANCE", "sdncDeactivate", sdncDeactivate)
+			rollbackData.put("SERVICEINSTANCE", "sdncDelete", sdncDelete)
+			execution.setVariable("rollbackData", rollbackData)
+			
+			msoLogger.debug("rollbackData:\n" + rollbackData.toString())
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCAssignRequest. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit preProcessSDNCAssignRequest")
+	}
+	
+	public void postProcessSDNCAssign (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("postProcessSDNCAssign")
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			msoLogger.debug("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+
+			String response = execution.getVariable("sdncAdapterResponse")
+			msoLogger.debug("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				msoLogger.debug("Good response from SDNC Adapter for service-instance  topology assign: \n" + response)
+
+				def rollbackData = execution.getVariable("rollbackData")
+				rollbackData.put("SERVICEINSTANCE", "rollbackSDNC", "true")
+				execution.setVariable("rollbackData", rollbackData)
+
+			}else{
+				msoLogger.debug("Bad Response from SDNC Adapter for service-instance assign")
+				throw new BpmnError("MSOWorkflowException")
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in postProcessSDNCAssign. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit postProcessSDNCAssign")
+	}
+	
+	public void postProcessAAIGET2(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("postProcessAAIGET2")
+		String msg = ""
+
+		try {
+			String serviceInstanceName = execution.getVariable("serviceInstanceName")
+			boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")
+			if(!succInAAI){
+				msoLogger.debug("Error getting Service-instance from AAI in postProcessAAIGET2", + serviceInstanceName)
+				WorkflowException workflowException = execution.getVariable("WorkflowException")
+				msoLogger.debug("workflowException: " + workflowException)
+				if(workflowException != null){
+					exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+				}
+				else
+				{
+					msg = "Failure in postProcessAAIGET2 GENGS_SuccessIndicator:" + succInAAI
+					msoLogger.debug(msg)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+				}
+			}
+			else
+			{
+				boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator")
+				if(foundInAAI){
+					String aaiService = execution.getVariable("GENGS_service")
+					if (!isBlank(aaiService) && (utils.nodeExists(aaiService, "service-instance-name"))) {
+						execution.setVariable("serviceInstanceName",  utils.getNodeText(aaiService, "service-instance-name"))
+						msoLogger.debug("Found Service-instance in AAI.serviceInstanceName:" + execution.getVariable("serviceInstanceName"))
+					}
+				}
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoCreateServiceInstance.postProcessAAIGET2 " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit postProcessAAIGET2")
+	}
+
+	public void preProcessRollback (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("preProcessRollback")
+		try {
+			
+			Object workflowException = execution.getVariable("WorkflowException");
+
+			if (workflowException instanceof WorkflowException) {
+				msoLogger.debug("Prev workflowException: " + workflowException.getErrorMessage())
+				execution.setVariable("prevWorkflowException", workflowException);
+				//execution.setVariable("WorkflowException", null);
+			}
+		} catch (BpmnError e) {
+			msoLogger.debug("BPMN Error during preProcessRollback")
+		} catch(Exception ex) {
+			String msg = "Exception in preProcessRollback. " + ex.getMessage()
+			msoLogger.debug(msg)
+		}
+		msoLogger.trace("Exit preProcessRollback")
+	}
+
+	public void postProcessRollback (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("postProcessRollback")
+		String msg = ""
+		try {
+			Object workflowException = execution.getVariable("prevWorkflowException");
+			if (workflowException instanceof WorkflowException) {
+				msoLogger.debug("Setting prevException to WorkflowException: ")
+				execution.setVariable("WorkflowException", workflowException);
+			}
+			execution.setVariable("rollbackData", null)
+		} catch (BpmnError b) {
+			msoLogger.debug("BPMN Error during postProcessRollback")
+			throw b;
+		} catch(Exception ex) {
+			msg = "Exception in postProcessRollback. " + ex.getMessage()
+			msoLogger.debug(msg)
+		}
+		msoLogger.trace("Exit postProcessRollback")
+	}
+	
+	public void createProject(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("createProject")
+
+		String bpmnRequest = execution.getVariable("requestJson")	
+		String projectName = jsonUtil.getJsonValue(bpmnRequest, "requestDetails.project.projectName")		
+		String serviceInstance = execution.getVariable("serviceInstanceId")
+		
+		msoLogger.debug("BPMN REQUEST IS: "+ bpmnRequest)
+		msoLogger.debug("PROJECT NAME: " + projectName)
+		msoLogger.debug("Service Instance: " + serviceInstance)
+			
+		if(projectName == null||projectName.equals("")){
+			msoLogger.debug("Project Name was not found in input. Skipping task...")
+		}else{
+			try{
+				AAICreateResources aaiCR = new AAICreateResources()
+				aaiCR.createAAIProject(projectName, serviceInstance)
+			}catch(Exception ex){
+				String msg = "Exception in createProject. " + ex.getMessage();
+				msoLogger.debug(msg)
+				msoLogger.error(ex);
+				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+			}
+		}	
+		msoLogger.trace("Exit createProject")
+	}
+	
+	public void createOwningEntity(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		msoLogger.trace("createOwningEntity")
+		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")
+			
+		msoLogger.debug("owningEntity: " + owningEntityId)
+		msoLogger.debug("OwningEntityName: "+ owningEntityName)
+		msoLogger.debug("Service Instance: " + serviceInstance)
+		
+		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{
+						Optional<OwningEntity> owningEntity = aaiCR.getOwningEntityNames(owningEntityName);
+						if(owningEntity.isPresent()){
+							msg = "Exception in createOwningEntity. Can't create OwningEntity as name already exists in AAI associated with a different owning-entity-id (name must be unique).";
+							throw new IllegalStateException();
+						} else {
+							aaiCR.createAAIOwningEntity(owningEntityId, owningEntityName, serviceInstance)
+						}
+					}
+				}
+			}
+		}catch(Exception ex){
+			msoLogger.debug(msg)
+			msoLogger.error(ex);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit createOwningEntity")
+	}
+	
+	// *******************************
+	//     Build Error Section
+	// *******************************
+
+	public void processJavaException(DelegateExecution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		
+		try{
+			msoLogger.debug("Caught a Java Exception in DoCreateServiceInstance")
+			msoLogger.debug("Started processJavaException Method")
+			msoLogger.debug("Variables List: " + execution.getVariables())
+			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){
+			msoLogger.debug("Caught Exception during processJavaException Method: " + e)
+			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")
+		}
+		msoLogger.trace("Completed processJavaException Method in DoCreateServiceInstance")
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollback.groovy
new file mode 100644
index 0000000..dd56b8f
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollback.groovy
@@ -0,0 +1,242 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+
+import static org.apache.commons.lang3.StringUtils.*;
+import groovy.xml.XmlUtil
+import groovy.json.*
+
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.rest.APIResponse;
+import org.onap.so.rest.RESTClient
+import org.onap.so.rest.RESTConfig
+import org.onap.so.logger.MsoLogger
+import org.onap.so.logger.MessageEnum
+
+import java.util.UUID;
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.json.JSONObject;
+import org.apache.commons.lang3.*
+import org.apache.commons.codec.binary.Base64;
+import org.springframework.web.util.UriUtils;
+/**
+ * This groovy class supports the <class>DoCreateServiceInstanceRollback.bpmn</class> process.
+ *
+ * Inputs:
+ * @param - msoRequestId
+ * @param - rollbackData with
+ *          globalCustomerId
+ * 			subscriptionServiceType
+ * 			serviceInstanceId
+ * 			disableRollback
+ * 			rollbackAAI
+ * 			rollbackSDNC
+ * 			sdncRollbackRequest
+ * 
+ *
+ * Outputs:
+ * @param - rollbackError
+ * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true)
+ *
+ */
+public class DoCreateServiceInstanceRollback extends AbstractServiceTaskProcessor{
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateServiceInstanceRollback.class);
+	
+
+	String Prefix="DCRESIRB_"
+
+	public void preProcessRequest(DelegateExecution execution) {
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		String msg = ""
+		msoLogger.trace("preProcessRequest")
+		execution.setVariable("rollbackAAI",false)
+		execution.setVariable("rollbackSDNC",false)
+
+		try {
+			def rollbackData = execution.getVariable("rollbackData")
+			msoLogger.debug("RollbackData:" + rollbackData)
+
+			if (rollbackData != null) {
+				if (rollbackData.hasType("SERVICEINSTANCE")) {
+
+					def serviceInstanceId = rollbackData.get("SERVICEINSTANCE", "serviceInstanceId")
+					execution.setVariable("serviceInstanceId", serviceInstanceId)
+
+					def subscriptionServiceType = rollbackData.get("SERVICEINSTANCE", "subscriptionServiceType")
+					execution.setVariable("subscriptionServiceType", subscriptionServiceType)
+
+					def globalSubscriberId  = rollbackData.get("SERVICEINSTANCE", "globalSubscriberId")
+					execution.setVariable("globalSubscriberId", globalSubscriberId)
+
+					def rollbackAAI = rollbackData.get("SERVICEINSTANCE", "rollbackAAI")
+					if ("true".equals(rollbackAAI))
+					{
+						execution.setVariable("rollbackAAI",true)
+					}
+
+					def rollbackSDNC = rollbackData.get("SERVICEINSTANCE", "rollbackSDNC")
+					if ("true".equals(rollbackSDNC))
+					{
+						execution.setVariable("rollbackSDNC", true)
+					}
+
+					if (execution.getVariable("rollbackAAI") != true && execution.getVariable("rollbackSDNC") != true)
+					{
+						execution.setVariable("skipRollback", true)
+					}
+
+					def sdncDelete = rollbackData.get("SERVICEINSTANCE", "sdncDelete")
+					execution.setVariable("sdncDelete", sdncDelete)
+					def sdncDeactivate = rollbackData.get("SERVICEINSTANCE", "sdncDeactivate")
+					execution.setVariable("sdncDeactivate", sdncDeactivate)
+					msoLogger.debug("sdncDeactivate:\n" + sdncDeactivate)
+					msoLogger.debug("sdncDelete:\n" + sdncDelete)
+				}
+				else {
+					execution.setVariable("skipRollback", true)
+				}
+			}
+			else {
+				execution.setVariable("skipRollback", true)
+			}
+			if (execution.getVariable("disableRollback").equals("true" ))
+			{
+				execution.setVariable("skipRollback", true)
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in Create ServiceInstance Rollback preProcessRequest " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit preProcessRequest")
+	}
+
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method) {
+		
+		msoLogger.trace("validateSDNCResponse")
+		String msg = ""
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			msoLogger.debug("SDNCResponse: " + response)
+			msoLogger.debug("workflowException: " + workflowException)
+			
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				msg = "SDNC Adapter service-instance rollback successful for " + method
+				msoLogger.debug(msg)
+			}else{
+				execution.setVariable("rolledBack", false)
+				msg =  "Error Response from SDNC Adapter service-instance rollback for " + method
+				execution.setVariable("rollbackError", msg)
+				msoLogger.debug(msg)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in Create ServiceInstance rollback for "  + method  + " Exception:" + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit validateSDNCResponse")
+	}
+
+	public void postProcessRequest(DelegateExecution execution) {
+		
+		msoLogger.trace("postProcessRequest")
+		String msg = ""
+		try {
+			execution.setVariable("rollbackData", null)
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			boolean rollbackAAI = execution.getVariable("rollbackAAI")
+			boolean rollbackSDNC = execution.getVariable("rollbackSDNC")
+			if (rollbackAAI || rollbackSDNC)
+			{
+				execution.setVariable("rolledBack", true)
+			}
+			if (rollbackAAI)
+			{
+				boolean succInAAI = execution.getVariable("GENDS_SuccessIndicator")
+				if(!succInAAI){
+					execution.setVariable("rolledBack", false) //both sdnc and aai must be successful to declare rollback Succesful
+					execution.setVariable("rollbackError", "Error deleting service-instance in AAI for rollback")
+					msoLogger.debug("Error deleting service-instance in AAI for rollback", + serviceInstanceId)
+				}
+			}
+			msoLogger.trace("Exit postProcessRequest")
+
+		} catch (BpmnError e) {
+			msg = "Exception in Create ServiceInstance Rollback postProcessRequest. " + e.getMessage()
+			msoLogger.debug(msg)
+		} catch (Exception ex) {
+			msg = "Exception in Create ServiceInstance Rollback postProcessRequest. " + ex.getMessage()
+			msoLogger.debug(msg)
+		}
+
+	}
+
+	public void processRollbackException(DelegateExecution execution){
+		
+		msoLogger.trace("processRollbackException")
+		try{
+			msoLogger.debug("Caught an Exception in DoCreateServiceInstanceRollback")
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rollbackError", "Caught exception in ServiceInstance Create Rollback")
+			execution.setVariable("WorkflowException", null)
+
+		}catch(BpmnError b){
+			msoLogger.debug("BPMN Error during processRollbackExceptions Method: ")
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during processRollbackExceptions Method: " + e.getMessage())
+		}
+
+		msoLogger.debug("Exit processRollbackException")
+	}
+
+	public void processRollbackJavaException(DelegateExecution execution){
+		
+		msoLogger.trace("processRollbackJavaException")
+		try{
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rollbackError", "Caught Java exception in ServiceInstance Create Rollback")
+			msoLogger.debug("Caught Exception in processRollbackJavaException")
+
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception in processRollbackJavaException " + e.getMessage())
+		}
+		msoLogger.trace("Exit processRollbackJavaException")
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollbackV2.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollbackV2.groovy
new file mode 100644
index 0000000..6e1a5dc
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollbackV2.groovy
@@ -0,0 +1,72 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.camunda.bpm.engine.runtime.Execution
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.client.orchestration.AAIServiceInstanceResources
+import org.onap.so.logger.MsoLogger
+
+
+public class DoCreateServiceInstanceRollbackV2 extends AbstractServiceTaskProcessor{
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateServiceInstanceRollbackV2.class);
+	
+	@Override
+	public void preProcessRequest(DelegateExecution execution) {
+		
+	}
+	
+	public void aaiServiceInstanceRollback (DelegateExecution execution) {
+		def aaiServiceInstanceRollback = execution.getVariable("aaiServiceInstanceRollback")
+		if(aaiServiceInstanceRollback){
+			msoLogger.trace("Started aaiServiceInstanceRollback")
+			try{
+				ServiceDecomposition serviceDecomp = execution.getVariable("ServiceDecomposition")
+				AAIServiceInstanceResources aaiO = new AAIServiceInstanceResources()
+				aaiO.deleteServiceInstance(serviceDecomp)
+			}catch (Exception ex) {
+				String msg =  "Error Response from AAI for aaiServiceInstanceRollback"
+				execution.setVariable("rollbackError", msg)
+				msoLogger.debug(msg)
+				throw new BpmnError("MSOWorkflowException")
+			}
+			msoLogger.trace("Completed aaiServiceInstanceRollback")
+		}else{
+			msoLogger.trace("SKIPPING A&AI ROLLBACK")
+		}
+	}
+	
+	public void rollbackError (DelegateExecution execution) {
+		msoLogger.trace("rollbackError")
+		try{
+			msoLogger.debug("Caught an Exception in DoCreateServiceInstanceRollbackV2")
+		}catch(BpmnError b){
+			msoLogger.debug("BPMN Error during rollbackError: " + b.getMessage())
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during rollbackError: " + e.getMessage())
+		}
+		msoLogger.debug(" Exit processRollbackException")
+	}
+	
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceV2.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceV2.groovy
new file mode 100644
index 0000000..8af8e6b
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceV2.groovy
@@ -0,0 +1,104 @@
+/*-
+ * ============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.onap.so.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.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.client.orchestration.AAIServiceInstanceResources
+import org.onap.so.client.orchestration.SDNCServiceInstanceResources
+import org.onap.so.logger.MsoLogger
+import org.onap.so.logger.MessageEnum
+
+import groovy.json.*
+
+/**
+ * This groovy class supports the <class>DoCreateServiceInstanceV2.bpmn</class> process.
+ *
+*/
+
+public class DoCreateServiceInstanceV2 extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateServiceInstanceV2.class);
+	AAIServiceInstanceResources aaiO = new AAIServiceInstanceResources()
+	SDNCServiceInstanceResources sdncO = new SDNCServiceInstanceResources()
+	
+	@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/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy
new file mode 100644
index 0000000..10f6acd
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy
@@ -0,0 +1,282 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - SO
+ * ================================================================================
+ * 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.onap.so.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.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor 
+import org.onap.so.bpmn.common.scripts.ExceptionUtil 
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.UrnPropertiesReader;
+import org.onap.so.bpmn.core.json.JsonUtils 
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.onap.so.rest.RESTClient 
+import org.onap.so.rest.RESTConfig
+
+import groovy.json.*
+
+/**
+ * This groovy class supports the <class>DoCreateVFCNetworkServiceInstance.bpmn</class> process.
+ * flow for VFC Network Service Create
+ */
+public class DoCreateVFCNetworkServiceInstance extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateVFCNetworkServiceInstance.class);
+
+    String vfcUrl = "/vfc/rest/v1/vfcadapter"
+            
+    String host = "http://mso.mso.testlab.openecomp.org:8080"
+    
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+    JsonUtils jsonUtil = new JsonUtils()
+
+    /**
+     * Pre Process the BPMN Flow Request
+     * Inclouds:
+     * generate the nsOperationKey
+     * generate the nsParameters
+     */
+    public void preProcessRequest (DelegateExecution execution) {
+       String msg = ""
+       msoLogger.trace("preProcessRequest()")
+       try {
+           //deal with nsName and Description
+           String nsServiceName = execution.getVariable("nsServiceName")
+           String nsServiceDescription = execution.getVariable("nsServiceDescription")
+           msoLogger.debug("nsServiceName:" + nsServiceName + " nsServiceDescription:" + nsServiceDescription)
+           //deal with operation key
+           String globalSubscriberId = execution.getVariable("globalSubscriberId")
+           msoLogger.debug("globalSubscriberId:" + globalSubscriberId)
+           String serviceType = execution.getVariable("serviceType")
+           msoLogger.debug("serviceType:" + serviceType)
+           String serviceId = execution.getVariable("serviceId")
+           msoLogger.debug("serviceId:" + serviceId)
+           String operationId = execution.getVariable("operationId")
+           msoLogger.debug("serviceType:" + serviceType)
+           String nodeTemplateUUID = execution.getVariable("resourceUUID")
+           msoLogger.debug("nodeTemplateUUID:" + nodeTemplateUUID)
+           /*
+            * segmentInformation needed as a object of segment
+            * {
+            *     "domain":"",
+            *     "nodeTemplateName":"",
+            *     "nodeType":"",
+            *     "nsParameters":{
+            *       //this is the nsParameters sent to VF-C
+            *     }
+            * }
+            */
+           String nsParameters = execution.getVariable("resourceParameters")
+           msoLogger.debug("nsParameters:" + nsParameters)
+           String nsOperationKey = """{
+                   "globalSubscriberId":"${globalSubscriberId}",
+                   "serviceType":"${serviceType}",
+                   "serviceId":"${serviceId}",
+                   "operationId":"${operationId}",
+                   "nodeTemplateUUID":"${nodeTemplateUUID}"
+                    }"""
+           execution.setVariable("nsOperationKey", nsOperationKey);
+           execution.setVariable("nsParameters", nsParameters)
+           
+
+       } catch (BpmnError e) {
+           throw e;
+       } catch (Exception ex){
+           msg = "Exception in preProcessRequest " + ex.getMessage()
+           msoLogger.debug(msg)
+           exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+       }
+       msoLogger.trace("Exit preProcessRequest")
+	}
+
+    /**
+     * create NS task
+     */
+    public void createNetworkService(DelegateExecution execution) {
+        msoLogger.trace("createNetworkService")
+        String nsOperationKey = execution.getVariable("nsOperationKey");
+        String nsParameters = execution.getVariable("nsParameters");
+        String nsServiceName = execution.getVariable("nsServiceName")
+        String nsServiceDescription = execution.getVariable("nsServiceDescription")
+        String reqBody ="""{
+                "nsServiceName":"${nsServiceName}",
+                "nsServiceDescription":"${nsServiceDescription}",
+                "nsOperationKey":${nsOperationKey},
+                "nsParameters":${nsParameters}
+               }"""
+        APIResponse apiResponse = postRequest(execution, host + vfcUrl + "/ns", reqBody)
+        String returnCode = apiResponse.getStatusCode()
+        String aaiResponseAsString = apiResponse.getResponseBodyAsString()
+        String nsInstanceId = "";
+        if(returnCode== "200" || returnCode == "201"){
+            nsInstanceId =  jsonUtil.getJsonValue(aaiResponseAsString, "nsInstanceId")
+        }
+        execution.setVariable("nsInstanceId", nsInstanceId)
+        msoLogger.trace("Exit  createNetworkService")
+    }
+
+    /**
+     * instantiate NS task
+     */
+    public void instantiateNetworkService(DelegateExecution execution) {
+        msoLogger.trace("instantiateNetworkService")
+        String nsOperationKey = execution.getVariable("nsOperationKey");
+        String nsParameters = execution.getVariable("nsParameters");
+        String nsServiceName = execution.getVariable("nsServiceName")
+        String nsServiceDescription = execution.getVariable("nsServiceDescription")
+        String reqBody ="""{
+        "nsServiceName":"${nsServiceName}",
+        "nsServiceDescription":"${nsServiceDescription}",
+        "nsOperationKey":${nsOperationKey},
+        "nsParameters":${nsParameters}
+       }"""
+        String nsInstanceId = execution.getVariable("nsInstanceId")
+        String url = host + vfcUrl + "/ns/" +nsInstanceId + "/instantiate"
+        APIResponse apiResponse = postRequest(execution, url, reqBody)
+        String returnCode = apiResponse.getStatusCode()
+        String aaiResponseAsString = apiResponse.getResponseBodyAsString()
+        String jobId = "";
+        if(returnCode== "200"|| returnCode == "201"){
+            jobId =  jsonUtil.getJsonValue(aaiResponseAsString, "jobId")
+        }
+        execution.setVariable("jobId", jobId)
+        msoLogger.trace("Exit  instantiateNetworkService")
+    }
+
+    /**
+     * query NS task
+     */
+    public void queryNSProgress(DelegateExecution execution) {
+        msoLogger.trace("queryNSProgress")
+        String jobId = execution.getVariable("jobId")
+        String nsOperationKey = execution.getVariable("nsOperationKey");
+        String url = host + vfcUrl + "/jobs/" + jobId
+        APIResponse apiResponse = postRequest(execution, url, nsOperationKey)
+        String returnCode = apiResponse.getStatusCode()
+        String aaiResponseAsString = apiResponse.getResponseBodyAsString()
+        String operationStatus = "error"
+        if(returnCode== "200"|| returnCode == "201"){
+            operationStatus = jsonUtil.getJsonValue(aaiResponseAsString, "responseDescriptor.status")
+        }
+        execution.setVariable("operationStatus", operationStatus)
+        msoLogger.trace("Exit  queryNSProgress")
+    }
+
+    /**
+     * delay 5 sec 
+     */
+    public void timeDelay(DelegateExecution execution) {
+        try {
+            Thread.sleep(5000);
+        } catch(InterruptedException e) {           
+           msoLogger.debug("Time Delay exception" + e )
+        }
+    }
+
+    /**
+     * finish NS task
+     */
+    public void addNSRelationship(DelegateExecution execution) {
+        msoLogger.trace("addNSRelationship")
+        String nsInstanceId = execution.getVariable("nsInstanceId")
+        if(nsInstanceId == null || nsInstanceId == ""){
+            msoLogger.debug(" create NS failed, so do not need to add relationship")
+            return
+        }
+        String globalSubscriberId = execution.getVariable("globalSubscriberId")
+        String serviceType = execution.getVariable("serviceType")
+        String serviceId = execution.getVariable("serviceId")
+        String addRelationPayload = """<relationship xmlns="http://org.openecomp.aai.inventory/v11">
+                                            <related-to>service-instance</related-to>
+                                            <related-link>/aai/v11/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${serviceType}/service-instances/service-instance/${nsInstanceId}</related-link>
+                                            <relationship-data>
+                                                <relationship-key>customer.global-customer-id</relationship-key>
+                                                <relationship-value>${MsoUtils.xmlEscape(globalSubscriberId)}</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>service-subscription.service-type</relationship-key>
+                                                <relationship-value>${MsoUtils.xmlEscape(serviceType)}</relationship-value>
+                                            </relationship-data>
+                                           <relationship-data>
+                                                <relationship-key>service-instance.service-instance-id</relationship-key>
+                                                <relationship-value>${MsoUtils.xmlEscape(nsInstanceId)}</relationship-value>
+                                            </relationship-data>           
+                                        </relationship>"""
+        String endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+        msoLogger.debug("Add Relationship req:\n" + addRelationPayload)
+        String url = endpoint + "/aai/v11/business/customers/customer/" + globalSubscriberId + "/service-subscriptions/service-subscription/" + serviceType + "/service-instances/service-instance/" + serviceId + "/relationship-list/relationship"
+        APIResponse aaiRsp = executeAAIPutCall(execution, url, addRelationPayload)
+        msoLogger.debug("aai response status code:" + aaiRsp.getStatusCode())
+        msoLogger.debug("aai response content:" + aaiRsp.getResponseBodyAsString())
+        msoLogger.trace("Exit addNSRelationship")
+    }
+    
+    public APIResponse executeAAIPutCall(DelegateExecution execution, String url, String payload){
+        msoLogger.trace("Started Execute AAI Put Process") 
+        APIResponse apiResponse = null
+        try{
+            String uuid = utils.getRequestID()
+            msoLogger.debug("Generated uuid is: " + uuid) 
+            msoLogger.debug("URL to be used is: " + url) 
+            String userName = UrnPropertiesReader.getVariable("aai.auth", execution)
+            String password = UrnPropertiesReader.getVariable("mso.msoKey", execution)
+            String basicAuthCred = utils.getBasicAuth(userName,password)
+            RESTConfig config = new RESTConfig(url);
+            RESTClient client = new RESTClient(config).addHeader("X-FromAppId", "MSO").addHeader("X-TransactionId", uuid).addHeader("Content-Type", "application/xml").addHeader("Accept","application/xml");
+            if (basicAuthCred != null && !"".equals(basicAuthCred)) {
+                client.addAuthorizationHeader(basicAuthCred)
+            }
+            apiResponse = client.httpPut(payload)
+            msoLogger.trace("Completed Execute AAI Put Process") 
+        }catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception occured while executing AAI Put Call", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+            throw new BpmnError("MSOWorkflowException")
+        }
+        return apiResponse
+    }
+
+    /**
+     * post request
+     * url: the url of the request
+     * requestBody: the body of the request
+     */
+    private APIResponse postRequest(DelegateExecution execution, String url, String requestBody){
+        msoLogger.trace("Started Execute VFC adapter Post Process")
+        msoLogger.debug("url:"+url +"\nrequestBody:"+ requestBody)
+        APIResponse apiResponse = null
+        try{
+            RESTConfig config = new RESTConfig(url);
+            RESTClient client = new RESTClient(config).addHeader("Content-Type", "application/json").addHeader("Accept","application/json").addHeader("Authorization","Basic QlBFTENsaWVudDpwYXNzd29yZDEk");
+            apiResponse = client.httpPost(requestBody)
+            msoLogger.debug("response code:"+ apiResponse.getStatusCode() +"\nresponse body:"+ apiResponse.getResponseBodyAsString())    
+            msoLogger.trace("Completed Execute VF-C adapter Post Process")
+        }catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception occured while executing AAI Post Call", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+            throw new BpmnError("MSOWorkflowException")
+        }        
+        return apiResponse
+    }
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy
new file mode 100644
index 0000000..59d38bf
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy
@@ -0,0 +1,2133 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+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.delegate.DelegateExecution
+import org.json.JSONArray
+import org.json.JSONObject
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.CatalogDbUtils
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.NetworkUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.common.scripts.VfModuleBase
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.domain.CloudFlavor
+import org.onap.so.bpmn.core.domain.VnfResource
+import org.onap.so.bpmn.core.json.DecomposeJsonUtil
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.client.aai.AAIObjectType;
+import org.onap.so.client.aai.AAIResourcesClient
+import org.onap.so.client.aai.entities.AAIResultWrapper
+import org.onap.so.client.aai.entities.uri.AAIUri
+import org.onap.so.client.aai.entities.uri.AAIUriFactory;
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.onap.so.rest.RESTClient
+import org.onap.so.rest.RESTConfig
+import org.springframework.web.util.UriUtils
+import org.w3c.dom.Document
+import org.w3c.dom.Element
+import org.w3c.dom.NamedNodeMap
+import org.w3c.dom.Node
+import org.w3c.dom.NodeList
+import org.xml.sax.InputSource
+
+import com.fasterxml.jackson.databind.ObjectMapper
+
+
+
+public class DoCreateVfModule extends VfModuleBase {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateVfModule.class);
+	
+	String Prefix="DCVFM_"
+	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(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessRequest(' +
+			'execution=' + execution.getId() +
+			')'
+		
+		msoLogger.trace('Entered ' + method)
+
+		execution.setVariable('prefix', Prefix)
+		try{
+			def rollbackData = execution.getVariable("rollbackData")
+			if (rollbackData == null) {
+				rollbackData = new RollbackData()
+			}
+
+			execution.setVariable("DCVFM_vnfParamsExistFlag", false)
+			execution.setVariable("DCVFM_oamManagementV4Address", "")
+			execution.setVariable("DCVFM_oamManagementV6Address", "")
+
+			String request = execution.getVariable("DoCreateVfModuleRequest")
+
+			if (request == null || request.isEmpty()) {
+				// Building Block-type request
+
+				String vfModuleModelInfo = execution.getVariable("vfModuleModelInfo")		
+				
+				def serviceModelInfo = execution.getVariable("serviceModelInfo")
+				msoLogger.debug("serviceModelInfo: " + serviceModelInfo)
+				String modelInvariantUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantUuid")
+				msoLogger.debug("modelInvariantUuid: " + modelInvariantUuid)
+				
+				def vnfModelInfo = execution.getVariable("vnfModelInfo")
+
+				//tenantId
+				def tenantId = execution.getVariable("tenantId")
+				execution.setVariable("DCVFM_tenantId", tenantId)
+				rollbackData.put("VFMODULE", "tenantid", tenantId)
+				//volumeGroupId
+				def volumeGroupId = execution.getVariable("volumeGroupId")
+				execution.setVariable("DCVFM_volumeGroupId", volumeGroupId)
+				//volumeGroupName
+				def volumeGroupName = execution.getVariable("volumeGroupName")
+				execution.setVariable("DCVFM_volumeGroupName", volumeGroupName)
+				//cloudSiteId
+				def cloudSiteId = execution.getVariable("lcpCloudRegionId")
+				execution.setVariable("DCVFM_cloudSiteId", cloudSiteId)
+				rollbackData.put("VFMODULE", "aiccloudregion", cloudSiteId)
+				msoLogger.debug("cloudSiteId: " + cloudSiteId)
+				//vnfType
+				def vnfType = execution.getVariable("vnfType")
+				execution.setVariable("DCVFM_vnfType", vnfType)
+				rollbackData.put("VFMODULE", "vnftype", vnfType)
+				msoLogger.debug("vnfType: " + vnfType)
+				//vnfName
+				def vnfName = execution.getVariable("vnfName")
+				execution.setVariable("DCVFM_vnfName", vnfName)
+				rollbackData.put("VFMODULE", "vnfname", vnfName)
+				msoLogger.debug("vnfName: " + vnfName)
+				//vnfId
+				def vnfId = execution.getVariable("vnfId")
+				execution.setVariable("DCVFM_vnfId", vnfId)
+				rollbackData.put("VFMODULE", "vnfid", vnfId)
+				msoLogger.debug("vnfId: " + vnfId)
+				//vfModuleName
+				def vfModuleName = execution.getVariable("vfModuleName")
+				execution.setVariable("DCVFM_vfModuleName", vfModuleName)
+				rollbackData.put("VFMODULE", "vfmodulename", vfModuleName)
+				msoLogger.debug("vfModuleName: " + vfModuleName)
+				//vfModuleModelName
+				def vfModuleModelName = jsonUtil.getJsonValue(vfModuleModelInfo, "modelName")
+				execution.setVariable("DCVFM_vfModuleModelName", vfModuleModelName)
+				rollbackData.put("VFMODULE", "vfmodulemodelname", vfModuleModelName)
+				msoLogger.debug("vfModuleModelName: " + vfModuleModelName)
+				//modelCustomizationUuid
+				def modelCustomizationUuid = jsonUtil.getJsonValue(vfModuleModelInfo, "modelCustomizationUuid")
+				execution.setVariable("DCVFM_modelCustomizationUuid", modelCustomizationUuid)
+				rollbackData.put("VFMODULE", "modelcustomizationuuid", modelCustomizationUuid)
+				msoLogger.debug("modelCustomizationUuid: " + modelCustomizationUuid)
+				//vfModuleId
+				def vfModuleId = execution.getVariable("vfModuleId")
+				execution.setVariable("DCVFM_vfModuleId", vfModuleId)
+				msoLogger.debug("vfModuleId: " + vfModuleId)
+				def requestId = execution.getVariable("msoRequestId")
+				execution.setVariable("DCVFM_requestId", requestId)
+				msoLogger.debug("requestId: " + requestId)
+				rollbackData.put("VFMODULE", "msorequestid", requestId)
+				// Set mso-request-id to request-id for VNF Adapter interface
+				execution.setVariable("mso-request-id", requestId)
+				//serviceId
+				def serviceId = execution.getVariable("serviceId")
+				execution.setVariable("DCVFM_serviceId", serviceId)
+				msoLogger.debug("serviceId: " + serviceId)
+				//serviceInstanceId
+				def serviceInstanceId = execution.getVariable("serviceInstanceId")
+				execution.setVariable("DCVFM_serviceInstanceId", serviceInstanceId)
+				rollbackData.put("VFMODULE", "serviceInstanceId", serviceInstanceId)
+				msoLogger.debug("serviceInstanceId: " + serviceInstanceId)
+				//flavorList
+				ArrayList<CloudFlavor> flavorList = execution.getVariable(cloudSiteId + "_flavorList")
+				if (flavorList != null) {
+					execution.setVariable("DCVFM_flavorList", flavorList)
+					logDebug("flavorList is: " + flavorList, isDebugLogEnabled)
+				}
+				//source - HARDCODED
+				def source = "VID"
+				execution.setVariable("DCVFM_source", source)
+				rollbackData.put("VFMODULE", "source", source)
+				msoLogger.debug("source: " + source)
+				//backoutOnFailure
+				def disableRollback = execution.getVariable("disableRollback")
+				def backoutOnFailure = true
+				if (disableRollback != null && disableRollback == true) {
+					backoutOnFailure = false
+				}
+				execution.setVariable("DCVFM_backoutOnFailure", backoutOnFailure)
+				msoLogger.debug("backoutOnFailure: " + backoutOnFailure)
+				//isBaseVfModule
+				def isBaseVfModule = execution.getVariable("isBaseVfModule")
+				execution.setVariable("DCVFM_isBaseVfModule", isBaseVfModule)
+				msoLogger.debug("isBaseVfModule: " + isBaseVfModule)
+				//asdcServiceModelVersion
+				def asdcServiceModelVersion = execution.getVariable("asdcServiceModelVersion")
+				execution.setVariable("DCVFM_asdcServiceModelVersion", asdcServiceModelVersion)
+				msoLogger.debug("asdcServiceModelVersion: " + asdcServiceModelVersion)
+				//personaModelId
+				execution.setVariable("DCVFM_personaModelId", jsonUtil.getJsonValue(vfModuleModelInfo, "modelInvariantUuid"))			
+				//personaModelVersion
+				execution.setVariable("DCVFM_personaModelVersion", jsonUtil.getJsonValue(vfModuleModelInfo, "modelUuid"))
+				//vfModuleLabel
+				def vfModuleLabel = execution.getVariable("vfModuleLabel")
+				if (vfModuleLabel != null) {
+					execution.setVariable("DCVFM_vfModuleLabel", vfModuleLabel)
+					msoLogger.debug("vfModuleLabel: " + vfModuleLabel)
+				}
+				//Get or Generate UUID
+				String uuid = execution.getVariable("DCVFM_uuid")
+				if(uuid == null){
+					uuid = UUID.randomUUID()
+					msoLogger.debug("Generated messageId (UUID) is: " + uuid)
+				}else{
+					msoLogger.debug("Found messageId (UUID) is: " + uuid)
+				}
+				//isVidRequest
+				String isVidRequest = execution.getVariable("isVidRequest")
+				// default to true
+				if (isVidRequest == null || isVidRequest.isEmpty()) {
+					execution.setVariable("isVidRequest", "true")
+				}
+				//globalSubscriberId
+				String globalSubscriberId = execution.getVariable("globalSubscriberId")
+				execution.setVariable("DCVFM_globalSubscriberId", globalSubscriberId)
+				msoLogger.debug("globalSubsrciberId: " + globalSubscriberId)				
+				Map<String,String> vfModuleInputParams = execution.getVariable("vfModuleInputParams")
+				if (vfModuleInputParams != null) {
+					execution.setVariable("DCVFM_vnfParamsMap", vfModuleInputParams)
+					execution.setVariable("DCVFM_vnfParamsExistFlag", true)
+				}
+				//usePreload
+				def usePreload = execution.getVariable("usePreload")
+				execution.setVariable("DCVFM_usePreload", usePreload)
+				msoLogger.debug("usePreload: " + usePreload)
+				//aLaCarte
+				def aLaCarte = execution.getVariable("aLaCarte")				
+				execution.setVariable("DCVFM_aLaCarte", aLaCarte)
+				msoLogger.debug("aLaCarte: " + aLaCarte)
+				
+				//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()
+					msoLogger.debug(msg)
+					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) {
+					msoLogger.debug("Error retreiving parent service instance information")
+				}
+				
+				execution.setVariable("DCVFM_environmentContext",environmentContext)
+				execution.setVariable("DCVFM_workloadContext",workloadContext)
+											  
+			}
+			else {
+				// The info is inside the request - DEAD CODE
+				msoLogger.debug("DoCreateVfModule request: " + request)
+
+				//tenantId
+				def tenantId = ""
+				if (utils.nodeExists(request, "tenant-id")) {
+					tenantId = utils.getNodeText(request, "tenant-id")
+				}
+				execution.setVariable("DCVFM_tenantId", tenantId)
+				rollbackData.put("VFMODULE", "tenantid", tenantId)
+				//volumeGroupId
+				def volumeGroupId = ""
+				if (utils.nodeExists(request, "volume-group-id")) {
+					volumeGroupId = utils.getNodeText(request, "volume-group-id")
+				}
+				execution.setVariable("DCVFM_volumeGroupId", volumeGroupId)
+				//volumeGroupId
+				def volumeGroupName = ""
+				if (utils.nodeExists(request, "volume-group-name")) {
+					volumeGroupName = utils.getNodeText(request, "volume-group-name")
+				}
+				execution.setVariable("DCVFM_volumeGroupName", volumeGroupName)
+				//cloudSiteId
+				def cloudSiteId = ""
+				if (utils.nodeExists(request, "aic-cloud-region")) {
+					cloudSiteId = utils.getNodeText(request, "aic-cloud-region")
+				}
+				execution.setVariable("DCVFM_cloudSiteId", cloudSiteId)
+				rollbackData.put("VFMODULE", "aiccloudregion", cloudSiteId)
+				msoLogger.debug("cloudSiteId: " + cloudSiteId)
+				//vnfType
+				def vnfType = ""
+				if (utils.nodeExists(request, "vnf-type")) {
+					vnfType = utils.getNodeText(request, "vnf-type")
+				}
+				execution.setVariable("DCVFM_vnfType", vnfType)
+				rollbackData.put("VFMODULE", "vnftype", vnfType)
+				msoLogger.debug("vnfType: " + vnfType)
+				//vnfName
+				def vnfName = ""
+				if (utils.nodeExists(request, "vnf-name")) {
+					vnfName = utils.getNodeText(request, "vnf-name")
+				}
+				execution.setVariable("DCVFM_vnfName", vnfName)
+				rollbackData.put("VFMODULE", "vnfname", vnfName)
+				msoLogger.debug("vnfName: " + vnfName)
+				//vnfId
+				def vnfId = ""
+				if (utils.nodeExists(request, "vnf-id")) {
+					vnfId = utils.getNodeText(request, "vnf-id")
+				}
+				execution.setVariable("DCVFM_vnfId", vnfId)
+				rollbackData.put("VFMODULE", "vnfid", vnfId)
+				msoLogger.debug("vnfId: " + vnfId)
+				//vfModuleName
+				def vfModuleName = ""
+				if (utils.nodeExists(request, "vf-module-name")) {
+					vfModuleName = utils.getNodeText(request, "vf-module-name")
+				}
+				execution.setVariable("DCVFM_vfModuleName", vfModuleName)
+				rollbackData.put("VFMODULE", "vfmodulename", vfModuleName)
+				msoLogger.debug("vfModuleName: " + vfModuleName)
+				//vfModuleModelName
+				def vfModuleModelName = ""
+				if (utils.nodeExists(request, "vf-module-model-name")) {
+					vfModuleModelName = utils.getNodeText(request, "vf-module-model-name")
+				}
+				execution.setVariable("DCVFM_vfModuleModelName", vfModuleModelName)
+				rollbackData.put("VFMODULE", "vfmodulemodelname", vfModuleModelName)
+				msoLogger.debug("vfModuleModelName: " + vfModuleModelName)
+				//modelCustomizationUuid
+				def modelCustomizationUuid = ""
+				if (utils.nodeExists(request, "model-customization-id")) {
+					modelCustomizationUuid = utils.getNodeText(request, "model-customization-id")
+				}
+				execution.setVariable("DCVFM_modelCustomizationUuid", modelCustomizationUuid)
+				rollbackData.put("VFMODULE", "modelcustomizationuuid", modelCustomizationUuid)
+				msoLogger.debug("modelCustomizationUuid: " + modelCustomizationUuid)
+				//vfModuleId
+				def vfModuleId = ""
+				if (utils.nodeExists(request, "vf-module-id")) {
+					vfModuleId = utils.getNodeText(request, "vf-module-id")
+				}
+				execution.setVariable("DCVFM_vfModuleId", vfModuleId)
+				msoLogger.debug("vfModuleId: " + vfModuleId)
+				def requestId = ""
+				if (utils.nodeExists(request, "request-id")) {
+					requestId = utils.getNodeText(request, "request-id")
+				}
+				execution.setVariable("DCVFM_requestId", requestId)
+				msoLogger.debug("requestId: " + requestId)
+				//serviceId
+				def serviceId = ""
+				if (utils.nodeExists(request, "service-id")) {
+					serviceId = utils.getNodeText(request, "service-id")
+				}
+				execution.setVariable("DCVFM_serviceId", serviceId)
+				msoLogger.debug("serviceId: " + serviceId)
+				//serviceInstanceId
+				def serviceInstanceId = ""
+				if (utils.nodeExists(request, "service-instance-id")) {
+					serviceInstanceId = utils.getNodeText(request, "service-instance-id")
+				}
+				execution.setVariable("DCVFM_serviceInstanceId", serviceInstanceId)
+				rollbackData.put("VFMODULE", "serviceInstanceId", serviceInstanceId)
+				msoLogger.debug("serviceInstanceId: " + serviceInstanceId)
+				//source
+				def source = ""
+				if (utils.nodeExists(request, "source")) {
+					source = utils.getNodeText(request, "source")
+				}
+				execution.setVariable("DCVFM_source", source)
+				rollbackData.put("VFMODULE", "source", source)
+				msoLogger.debug("source: " + source)
+				//backoutOnFailure
+				NetworkUtils networkUtils = new NetworkUtils()
+				def backoutOnFailure = networkUtils.isRollbackEnabled(execution,request)
+				execution.setVariable("DCVFM_backoutOnFailure", backoutOnFailure)
+				msoLogger.debug("backoutOnFailure: " + backoutOnFailure)
+				//isBaseVfModule
+				def isBaseVfModule = "false"
+				if (utils.nodeExists(request, "is-base-vf-module")) {
+					isBaseVfModule = utils.getNodeText(request, "is-base-vf-module")
+				}
+				execution.setVariable("DCVFM_isBaseVfModule", isBaseVfModule)
+				msoLogger.debug("isBaseVfModule: " + isBaseVfModule)				
+				//asdcServiceModelVersion
+				def asdcServiceModelVersion = ""
+				if (utils.nodeExists(request, "asdc-service-model-version")) {
+					asdcServiceModelVersion = utils.getNodeText(request, "asdc-service-model-version")
+				}
+				execution.setVariable("DCVFM_asdcServiceModelVersion", asdcServiceModelVersion)
+				msoLogger.debug("asdcServiceModelVersion: " + asdcServiceModelVersion)
+
+				//personaModelId
+				def personaModelId = ""
+				if (utils.nodeExists(request, "persona-model-id")) {
+					personaModelId = utils.getNodeText(request, "persona-model-id")
+				}
+				execution.setVariable("DCVFM_personaModelId", personaModelId)
+				msoLogger.debug("personaModelId: " + personaModelId)
+
+				//personaModelVersion
+				def personaModelVersion = ""
+				if (utils.nodeExists(request, "persona-model-version")) {
+					personaModelVersion = utils.getNodeText(request, "persona-model-version")
+				}
+				execution.setVariable("DCVFM_personaModelVersion", personaModelVersion)
+				msoLogger.debug("personaModelVersion: " + personaModelVersion)
+
+				// Process the parameters
+
+						String vnfParamsChildNodes = utils.getChildNodes(request, "vnf-params")
+						if(vnfParamsChildNodes == null || vnfParamsChildNodes.length() < 1){
+								msoLogger.debug("Request contains NO VNF Params")
+						}else{
+								msoLogger.debug("Request does contain VNF Params")
+								execution.setVariable("DCVFM_vnfParamsExistFlag", true)
+
+								InputSource xmlSource = new InputSource(new StringReader(request));
+								DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
+								docFactory.setNamespaceAware(true)
+								DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
+								Document xml = docBuilder.parse(xmlSource)
+								//Get params, build map
+								Map<String, String> paramsMap = new HashMap<String, String>()
+								NodeList paramsList = xml.getElementsByTagNameNS("*", "param")
+
+								for (int z = 0; z < paramsList.getLength(); z++) {
+									Node node = paramsList.item(z)
+									String paramValue = node.getTextContent()
+									NamedNodeMap e = node.getAttributes()
+									String paramName = e.getNamedItem("name").getTextContent()
+									paramsMap.put(paramName, paramValue)
+								}
+								execution.setVariable("DCVFM_vnfParamsMap", paramsMap)
+							}
+			}
+
+			//Get or Generate UUID
+			String uuid = execution.getVariable("DCVFM_uuid")
+			if(uuid == null){
+				uuid = UUID.randomUUID()
+				msoLogger.debug("Generated messageId (UUID) is: " + uuid)
+			}else{
+				msoLogger.debug("Found messageId (UUID) is: " + uuid)
+			}
+			// Get sdncVersion, default to empty
+			String sdncVersion = execution.getVariable("sdncVersion")
+			if (sdncVersion == null) {
+				sdncVersion = ""
+			}
+			msoLogger.debug("sdncVersion: " + sdncVersion)
+			execution.setVariable("DCVFM_sdncVersion", sdncVersion)
+			
+			execution.setVariable("DCVFM_uuid", uuid)
+			execution.setVariable("DCVFM_baseVfModuleId", "")
+			execution.setVariable("DCVFM_baseVfModuleHeatStackId", "")
+			execution.setVariable("DCVFM_heatStackId", "")
+			execution.setVariable("DCVFM_contrailServiceInstanceFqdn", "")
+			execution.setVariable("DCVFM_volumeGroupStackId", "")
+			execution.setVariable("DCVFM_cloudRegionForVolume", "")
+			execution.setVariable("DCVFM_contrailNetworkPolicyFqdnList", "")
+			execution.setVariable("DCVFM_vnfTypeToQuery", "generic-vnf")
+			rollbackData.put("VFMODULE", "rollbackPrepareUpdateVfModule", "false")
+			rollbackData.put("VFMODULE", "rollbackUpdateAAIVfModule", "false")
+			rollbackData.put("VFMODULE", "rollbackVnfAdapterCreate", "false")
+			rollbackData.put("VFMODULE", "rollbackSDNCRequestActivate", "false")
+			rollbackData.put("VFMODULE", "rollbackSDNCRequestAssign", "false")
+			rollbackData.put("VFMODULE", "rollbackCreateAAIVfModule", "false")
+			rollbackData.put("VFMODULE", "rollbackCreateNetworkPoliciesAAI", "false")
+			rollbackData.put("VFMODULE", "rollbackUpdateVnfAAI", "false")
+			rollbackData.put("VFMODULE", "heatstackid", "")
+
+			String sdncCallbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+				if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) {
+					def msg = 'Required variable \'mso.workflow.sdncadapter.callback\' is missing'
+					msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, msg, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, msg);
+
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)
+				}
+				execution.setVariable("DCVFM_sdncCallbackUrl", sdncCallbackUrl)
+			    msoLogger.debug("SDNC Callback URL is: " + sdncCallbackUrl)
+
+
+			execution.setVariable("rollbackData", rollbackData)
+		}catch(BpmnError b){
+			throw b
+		}catch(Exception e){
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error encountered in PreProcess method!")
+		}
+
+		msoLogger.trace('Exited ' + method)
+	}
+
+	/**
+	 * Validates a workflow response.
+	 * @param execution the execution
+	 * @param responseVar the execution variable in which the response is stored
+	 * @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(DelegateExecution execution, String responseVar,
+			String responseCodeVar, String errorResponseVar) {
+		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+		sdncAdapterUtils.validateSDNCResponse(execution, responseVar, responseCodeVar, errorResponseVar)
+	}
+
+
+	/**
+	 * Sends the empty, synchronous response back to the API Handler.
+	 * @param execution the execution
+	 */
+	public void sendResponse(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.sendResponse(' +
+			'execution=' + execution.getId() +
+			')'
+		
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			sendWorkflowResponse(execution, 200, "")
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Internal Error')
+		}
+	}
+
+	/**
+	 * Using the received vnfId and vfModuleId, query AAI to get the corresponding VNF info.
+	 * A 200 response is expected with the VNF info in the response body. Will find out the base module info
+	 * and existing VNF's name for add-on modules
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void postProcessCreateAAIVfModule(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.getVfModule(' +
+			'execution=' + execution.getId() +
+			')'
+		
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def createResponse = execution.getVariable('DCVFM_createVfModuleResponse')
+			msoLogger.debug("createVfModule Response: " + createResponse)
+
+			def rollbackData = execution.getVariable("rollbackData")
+			String vnfName = utils.getNodeText(createResponse, 'vnf-name')
+			if (vnfName != null) {
+				execution.setVariable('DCVFM_vnfName', vnfName)
+				msoLogger.debug("vnfName retrieved from AAI is: " + vnfName)
+				rollbackData.put("VFMODULE", "vnfname", vnfName)
+			}
+			String vnfId = utils.getNodeText(createResponse, 'vnf-id')
+			execution.setVariable('DCVFM_vnfId', vnfId)
+			msoLogger.debug("vnfId is: " + vnfId)
+			String vfModuleId = utils.getNodeText(createResponse, 'vf-module-id')
+			execution.setVariable('DCVFM_vfModuleId', vfModuleId)
+			msoLogger.debug("vfModuleId is: " + vfModuleId)
+			String vfModuleIndex= utils.getNodeText(createResponse, 'vf-module-index')
+			execution.setVariable('DCVFM_vfModuleIndex', vfModuleIndex)
+			msoLogger.debug("vfModuleIndex is: " + vfModuleIndex)
+			rollbackData.put("VFMODULE", "vnfid", vnfId)
+			rollbackData.put("VFMODULE", "vfmoduleid", vfModuleId)
+			rollbackData.put("VFMODULE", "rollbackCreateAAIVfModule", "true")
+			rollbackData.put("VFMODULE", "rollbackPrepareUpdateVfModule", "true")
+			execution.setVariable("rollbackData", rollbackData)
+		} catch (Exception ex) {
+				ex.printStackTrace()
+				msoLogger.debug('Exception occurred while postProcessing CreateAAIVfModule request:' + ex.getMessage())
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Bad response from CreateAAIVfModule' + ex.getMessage())
+		}
+		msoLogger.trace('Exited ' + method)
+	}
+
+
+	/**
+	 * Using the received vnfId and vfModuleId, query AAI to get the corresponding VNF info.
+	 * A 200 response is expected with the VNF info in the response body. Will find out the base module info.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void queryAAIVfModule(DelegateExecution execution) {
+		
+		def method = getClass().getSimpleName() + '.getVfModule(' +
+			'execution=' + execution.getId() +
+			')'
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def vnfId = execution.getVariable('DCVFM_vnfId')
+			def vfModuleId = execution.getVariable('DCVFM_vfModuleId')
+
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String  aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution)
+			msoLogger.debug('AAI URI is: ' + aai_uri)
+
+			String endPoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + "?depth=1"
+
+			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');
+				msoLogger.debug('sending GET to AAI endpoint \'' + endPoint + '\'')
+				APIResponse response = client.httpGet()
+
+				responseData = response.getResponseBodyAsString()
+				if (responseData != null) {
+					msoLogger.debug("Received generic VNF data: " + responseData)
+
+				}
+
+				execution.setVariable('DCVFM_queryAAIVfModuleResponseCode', response.getStatusCode())
+				execution.setVariable('DCVFM_queryAAIVfModuleResponse', responseData)
+				msoLogger.debug('Response code:' + response.getStatusCode())
+				msoLogger.debug('Response:' + System.lineSeparator() + responseData)
+				if (response.getStatusCode() == 200) {
+					// Parse the VNF record from A&AI to find base module info
+					msoLogger.debug('Parsing the VNF data to find base module info')
+					if (responseData != null) {
+						def vfModulesText = utils.getNodeXml(responseData, "vf-modules")
+						def xmlVfModules= new XmlSlurper().parseText(vfModulesText)
+						def vfModules = xmlVfModules.'**'.findAll {it.name() == "vf-module"}
+						int vfModulesSize = 0
+						for (i in 0..vfModules.size()-1) {
+							def vfModuleXml = groovy.xml.XmlUtil.serialize(vfModules[i])
+							def isBaseVfModule = utils.getNodeText(vfModuleXml, "is-base-vf-module")
+
+							if (isBaseVfModule == "true") {
+							    String baseModuleId = utils.getNodeText(vfModuleXml, "vf-module-id")
+							    execution.setVariable("DCVFM_baseVfModuleId", baseModuleId)
+							    msoLogger.debug('Received baseVfModuleId: ' + baseModuleId)
+							    String baseModuleHeatStackId = utils.getNodeText(vfModuleXml, "heat-stack-id")
+							    execution.setVariable("DCVFM_baseVfModuleHeatStackId", baseModuleHeatStackId)
+							    msoLogger.debug('Received baseVfModuleHeatStackId: ' + baseModuleHeatStackId)
+							}
+						}
+					}
+				}
+			} catch (Exception ex) {
+				ex.printStackTrace()
+				msoLogger.debug('Exception occurred while executing AAI GET:' + ex.getMessage())
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage())
+			}
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			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 method = getClass().getSimpleName() + '.queryAAIVfModuleForStatus(' +
+			'execution=' + execution.getId() +
+			')'
+		msoLogger.trace('Entered ' + method)
+		
+		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)
+			msoLogger.debug('AAI URI is: ' + aai_uri)
+
+			String endPoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") +
+					"/vf-modules/vf-module?vf-module-name=" + UriUtils.encode(vfModuleName, "UTF-8")
+			msoLogger.debug("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');
+				msoLogger.debug('sending GET to AAI endpoint \'' + endPoint + '\'')
+				APIResponse response = client.httpGet()
+				msoLogger.debug("createVfModule - invoking httpGet() to AAI")
+
+				responseData = response.getResponseBodyAsString()
+				if (responseData != null) {
+					msoLogger.debug("Received generic VNF data: " + responseData)
+
+				}
+
+				execution.setVariable('DCVFM_queryAAIVfModuleForStatusResponseCode', response.getStatusCode())
+				execution.setVariable('DCVFM_queryAAIVfModuleForStatusResponse', responseData)
+				msoLogger.debug('Response code:' + response.getStatusCode())
+				msoLogger.debug('Response:' + System.lineSeparator() + responseData)
+				// 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
+					msoLogger.debug('Parsing the VNF data to find orchestration status')
+					if (responseData != null) {
+						def vfModuleText = utils.getNodeXml(responseData, "vf-module")
+						//def xmlVfModule= new XmlSlurper().parseText(vfModuleText)
+						def orchestrationStatus = utils.getNodeText(vfModuleText, "orchestration-status")
+						execution.setVariable("DCVFM_orchestrationStatus", orchestrationStatus)
+						// Also retrieve vfModuleId
+						def vfModuleId = utils.getNodeText(vfModuleText, "vf-module-id")
+						execution.setVariable("DCVFM_vfModuleId", vfModuleId)
+						msoLogger.debug("Received orchestration status from A&AI: " + orchestrationStatus)
+						
+					}
+				}
+			} catch (Exception ex) {
+				ex.printStackTrace()
+				msoLogger.debug('Exception occurred while executing AAI GET:' + ex.getMessage())
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage())
+			}
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModuleForStatus(): ' + e.getMessage())
+		}
+	}
+
+
+	public void preProcessSDNCAssignRequest(DelegateExecution execution){
+		
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessSDNCAssignRequest")
+		def vnfId = execution.getVariable("DCVFM_vnfId")
+		def vfModuleId = execution.getVariable("DCVFM_vfModuleId")
+		def serviceInstanceId = execution.getVariable("DCVFM_serviceInstanceId")
+		msoLogger.debug("NEW VNF ID: " + vnfId)
+
+		try{
+
+			//Build SDNC Request
+
+			def svcInstId = ""
+			if (serviceInstanceId == null || serviceInstanceId.isEmpty()) {
+				svcInstId = vfModuleId
+			}
+			else {
+				svcInstId = serviceInstanceId
+			}
+
+			String assignSDNCRequest = buildSDNCRequest(execution, svcInstId, "assign")
+
+			assignSDNCRequest = utils.formatXml(assignSDNCRequest)
+			execution.setVariable("DCVFM_assignSDNCRequest", assignSDNCRequest)
+			msoLogger.debug("Outgoing AssignSDNCRequest is: \n" + assignSDNCRequest)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Occurred Processing preProcessSDNCAssignRequest", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);			
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during prepareProvision Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED preProcessSDNCAssignRequest")
+	}
+
+	public void preProcessSDNCGetRequest(DelegateExecution execution, String element){
+		
+		String sdncVersion = execution.getVariable("DCVFM_sdncVersion")
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessSDNCGetRequest Process")
+		try{
+			def serviceInstanceId = execution.getVariable('DCVFM_serviceInstanceId')
+			
+			String uuid = execution.getVariable('testReqId') // for junits
+			if(uuid==null){
+				uuid = execution.getVariable("mso-request-id") + "-" +  System.currentTimeMillis()
+			}
+					
+			def callbackUrl = execution.getVariable("DCVFM_sdncCallbackUrl")
+			msoLogger.debug("callbackUrl:" + callbackUrl)
+			
+			def vfModuleId = execution.getVariable('DCVFM_vfModuleId')
+			
+			def svcInstId = ""
+			if (serviceInstanceId == null || serviceInstanceId.isEmpty()) {
+				svcInstId = vfModuleId
+			}
+			else {
+				svcInstId = serviceInstanceId
+			}
+			
+			def msoAction = ""
+			if (!sdncVersion.equals("1707")) {
+				msoAction = "mobility"
+			}
+			else {
+				msoAction = "vfmodule"
+			}
+			// For VNF, serviceOperation (URI for topology GET) will be retrieved from "selflink" element 
+			// in the response from GenericGetVnf
+			// For VF Module, in 1707 serviceOperation will be retrieved from "object-path" element
+			// in SDNC Assign Response
+			// For VF Module for older versions, serviceOperation is constructed using vfModuleId
+			
+			String serviceOperation = ""
+			if (element.equals("vnf")) {
+				def vnfQueryResponse = execution.getVariable("DCVFM_vnfQueryResponse")
+				serviceOperation = utils.getNodeText(vnfQueryResponse, "selflink")
+				msoLogger.debug("VNF - service operation: " + serviceOperation)
+			}
+			else if (element.equals("vfmodule")) {
+				String response = execution.getVariable("DCVFM_assignSDNCAdapterResponse")
+				msoLogger.debug("DCVFM_assignSDNCAdapterResponse is: \n" + response)							
+			
+				if (!sdncVersion.equals("1707")) {
+					serviceOperation = "/VNF-API:vnfs/vnf-list/" + vfModuleId
+					msoLogger.debug("VF Module with sdncVersion before 1707 - service operation: " + serviceOperation)
+				}
+				else {				
+					String data = utils.getNodeXml(response, "response-data")					
+					msoLogger.debug("responseData: " + data)
+					serviceOperation = utils.getNodeText(data, "object-path")
+					msoLogger.debug("VF Module with sdncVersion of 1707 - service operation: " + serviceOperation)
+				}				
+			}		
+
+			//!!!! TEMPORARY WORKAROUND FOR SDNC REPLICATION ISSUE
+			sleep(5000)
+
+			String SDNCGetRequest =
+					"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+											xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+											xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+					<sdncadapter:RequestHeader>
+					<sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId>
+					<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId>
+					<sdncadapter:SvcAction>query</sdncadapter:SvcAction>
+					<sdncadapter:SvcOperation>${MsoUtils.xmlEscape(serviceOperation)}</sdncadapter:SvcOperation>
+					<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl>
+					<sdncadapter:MsoAction>${MsoUtils.xmlEscape(msoAction)}</sdncadapter:MsoAction>
+				</sdncadapter:RequestHeader>
+					<sdncadapterworkflow:SDNCRequestData></sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			execution.setVariable("DCVFM_getSDNCRequest", SDNCGetRequest)
+			msoLogger.debug("Outgoing GetSDNCRequest is: \n" + SDNCGetRequest)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCGetRequest", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);			
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during prepareProvision Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED preProcessSDNCGetRequest Process")
+	}
+
+
+	public void preProcessVNFAdapterRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.VNFAdapterCreateVfModule(' +
+			'execution=' + execution.getId() +
+			')'
+		
+		msoLogger.trace('Entered ' + method)
+
+		//def xml = execution.getVariable("DoCreateVfModuleRequest")
+		//msoLogger.debug('VNF REQUEST is: ' + xml)
+
+		//Get variables
+		//cloudSiteId
+		def cloudSiteId = execution.getVariable("DCVFM_cloudSiteId")
+		//tenantId
+		def tenantId = execution.getVariable("DCVFM_tenantId")
+		//vnfType
+		def vnfType = execution.getVariable("DCVFM_vnfType")
+		//vnfName
+		def vnfName = execution.getVariable("DCVFM_vnfName")
+		//vnfId
+		def vnfId = execution.getVariable("DCVFM_vnfId")
+		//vfModuleName
+		def vfModuleName = execution.getVariable("DCVFM_vfModuleName")
+		//vfModuleModelName
+		def vfModuleModelName = execution.getVariable("DCVFM_vfModuleModelName")
+		//vfModuleId
+		def vfModuleId = execution.getVariable("DCVFM_vfModuleId")
+		//vfModuleIndex
+		def vfModuleIndex = execution.getVariable("DCVFM_vfModuleIndex")
+		//requestId
+		def requestId = execution.getVariable("DCVFM_requestId")
+		//serviceId
+		def serviceId = execution.getVariable("DCVFM_serviceId")
+		//serviceInstanceId
+		def serviceInstanceId = execution.getVariable("DCVFM_serviceInstanceId")
+		//flavorList
+		ArrayList<CloudFlavor> flavorList = execution.getVariable("DCVFM_flavorList")
+		//backoutOnFailure
+		def backoutOnFailure = execution.getVariable("DCVFM_backoutOnFailure")
+		//volumeGroupId
+		def volumeGroupId = execution.getVariable("DCVFM_volumeGroupId")
+		// baseVfModuleId
+		def baseVfModuleId = execution.getVariable("DCVFM_baseVfModuleId")
+		// baseVfModuleStackId
+		def baseVfModuleStackId = execution.getVariable("DCVFM_baseVfModuleHeatStackId")
+		// asdcServiceModelVersion
+		def asdcServiceModelVersion = execution.getVariable("DCVFM_asdcServiceModelVersion")
+		//volumeGroupStackId
+		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")
+		msoLogger.debug("workloadContext: " + workloadContext)
+		msoLogger.debug("environmentContext: " + environmentContext)
+		
+		def messageId = execution.getVariable('mso-request-id') + '-' +
+                                System.currentTimeMillis()
+
+		def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
+		def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution)
+
+		msoLogger.debug("notificationUrl: " + notificationUrl)
+		msoLogger.debug("QualifiedHostName: " + useQualifiedHostName)
+
+		if ('true'.equals(useQualifiedHostName)) {
+			notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
+		}
+
+		Map<String, String> vnfParamsMap = execution.getVariable("DCVFM_vnfParamsMap")
+		// Add flavorLabel List to vnfParamsMap
+		flavorList.each { cloudFlavor ->
+			vnfParamsMap.put("label_" + cloudFlavor.getFlavorLabel(), cloudFlavor.getFlavor())
+		}
+		String vfModuleParams = ""
+		//Get SDNC Response Data for VF Module Topology
+		String vfModuleSdncGetResponse = execution.getVariable('DCVFM_getSDNCAdapterResponse')
+		msoLogger.debug("sdncGetResponse: " + vfModuleSdncGetResponse)
+		def sdncVersion = execution.getVariable("sdncVersion")
+		
+		if (!sdncVersion.equals("1707")) {
+						
+			vfModuleParams = buildVfModuleParams(vnfParamsMap, vfModuleSdncGetResponse, vnfId, vnfName,
+				vfModuleId, vfModuleName, vfModuleIndex, environmentContext, workloadContext)
+		}
+		else {
+			//Get SDNC Response Data for Vnf Topology
+			String vnfSdncGetResponse = execution.getVariable('DCVFM_getVnfSDNCAdapterResponse')
+			msoLogger.debug("vnfSdncGetResponse: " + vnfSdncGetResponse)
+			
+			vfModuleParams = buildVfModuleParamsFromCombinedTopologies(vnfParamsMap, vnfSdncGetResponse, vfModuleSdncGetResponse, vnfId, vnfName,
+				vfModuleId, vfModuleName, vfModuleIndex, environmentContext, workloadContext)			
+		}
+
+		def svcInstId = ""
+		if (serviceInstanceId == null || serviceInstanceId.isEmpty()) {
+				svcInstId = serviceId
+		}
+		else {
+			svcInstId = serviceInstanceId
+		}
+
+		def createVnfARequest = """
+		<createVfModuleRequest>
+		<cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId>
+		<tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
+		<vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId>
+		<vnfName>${MsoUtils.xmlEscape(vnfName)}</vnfName>
+		<vfModuleName>${MsoUtils.xmlEscape(vfModuleName)}</vfModuleName>
+		<vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId>
+		<vnfType>${MsoUtils.xmlEscape(vnfType)}</vnfType>
+		<vfModuleType>${MsoUtils.xmlEscape(vfModuleModelName)}</vfModuleType>
+		<vnfVersion>${MsoUtils.xmlEscape(asdcServiceModelVersion)}</vnfVersion>
+		<modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</modelCustomizationUuid>
+		<requestType></requestType>
+		<volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId>
+    	<volumeGroupStackId>${MsoUtils.xmlEscape(volumeGroupStackId)}</volumeGroupStackId>
+    	<baseVfModuleId>${MsoUtils.xmlEscape(baseVfModuleId)}</baseVfModuleId>
+    	<baseVfModuleStackId>${MsoUtils.xmlEscape(baseVfModuleStackId)}</baseVfModuleStackId>
+    	<skipAAI>true</skipAAI>
+    	<backout>${MsoUtils.xmlEscape(backoutOnFailure)}</backout>
+    	<failIfExists>true</failIfExists>
+		<vfModuleParams>
+		${vfModuleParams}
+		</vfModuleParams>
+		<msoRequest>
+			<requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+			<serviceInstanceId>${MsoUtils.xmlEscape(svcInstId)}</serviceInstanceId>
+		</msoRequest>
+		<messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
+		<notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
+		</createVfModuleRequest>"""
+
+		msoLogger.debug("Create VfModule Request to VNF Adapter: " + createVnfARequest)
+		execution.setVariable("DCVFM_createVnfARequest", createVnfARequest)
+	}
+
+	/**
+	 * Validates the request, request id and service instance id.  If a problem is found,
+	 * a WorkflowException is generated and an MSOWorkflowException event is thrown. This
+	 * method also sets up the log context for the workflow.
+	 * @param execution the execution
+	 * @return the validated request
+	 */
+	public String validateInfraRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.validateInfraRequest(' +
+			'execution=' + execution.getId() +
+			')'
+		
+		msoLogger.trace('Entered ' + method)
+
+		String processKey = getProcessKey(execution);
+		def prefix = execution.getVariable("prefix")
+
+		if (prefix == null) {
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " prefix is null")
+		}
+
+		try {
+			def request = execution.getVariable(prefix + 'Request')
+
+			if (request == null) {
+				request = execution.getVariable(processKey + 'Request')
+
+				if (request == null) {
+					request = execution.getVariable('bpmnRequest')
+				}
+
+				setVariable(execution, processKey + 'Request', null);
+				setVariable(execution, 'bpmnRequest', null);
+				setVariable(execution, prefix + 'Request', request);
+			}
+
+			if (request == null) {
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request is null")
+			}
+			msoLogger.debug("DoCreateVfModule Request: " + request)
+
+			/*
+
+			def requestId = execution.getVariable("mso-request-id")
+
+			if (requestId == null) {
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request has no mso-request-id")
+			}
+
+			def serviceInstanceId = execution.getVariable("mso-service-instance-id")
+
+			if (serviceInstanceId == null) {
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request message has no mso-service-instance-id")
+			}
+
+			utils.logContext(requestId, serviceInstanceId)
+			*/
+			msoLogger.debug('Incoming message: ' + System.lineSeparator() + request)
+			msoLogger.trace('Exited ' + method)
+			return request
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Invalid Message")
+		}
+	}
+
+	public boolean isVolumeGroupIdPresent(DelegateExecution execution) {
+
+		def method = getClass().getSimpleName() + '.isVolumeGroupIdPresent(' +
+			'execution=' + execution.getId() +
+			')'
+		
+		msoLogger.trace('Entered ' + method)
+
+		def request = execution.getVariable('DoCreateVfModuleRequest')
+		String volumeGroupId = utils.getNodeText(request, "volume-group-id")
+		if (volumeGroupId == null || volumeGroupId.isEmpty()) {
+			msoLogger.debug('No volume group id is present')
+			return false
+		}
+		else {
+			msoLogger.debug('Volume group id is present')
+			return true
+		}
+
+	}
+
+	public boolean isVolumeGroupNamePresent(DelegateExecution execution) {
+
+		def method = getClass().getSimpleName() + '.isVolumeGroupNamePresent(' +
+			'execution=' + execution.getId() +
+			')'
+		
+		msoLogger.trace('Entered ' + method)
+
+		def request = execution.getVariable('DoCreateVfModuleRequest')
+		String volumeGroupName = utils.getNodeText(request, "volume-group-name")
+		if (volumeGroupName == null || volumeGroupName.isEmpty()) {
+			msoLogger.debug('No volume group name is present')
+			return false
+		}
+		else {
+			msoLogger.debug('Volume group name is present')
+			return true
+		}
+
+	}
+
+	public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
+
+		String uuid = execution.getVariable('testReqId') // for junits
+		if(uuid==null){
+			uuid = execution.getVariable("mso-request-id") + "-" +  	System.currentTimeMillis()
+		}
+		def callbackURL = execution.getVariable("DCVFM_sdncCallbackUrl")
+		def requestId = execution.getVariable("DCVFM_requestId")
+		def serviceId = execution.getVariable("DCVFM_serviceId")
+		def vnfType = execution.getVariable("DCVFM_vnfType")
+		def vnfName = execution.getVariable("DCVFM_vnfName")
+		def tenantId = execution.getVariable("DCVFM_tenantId")
+		def source = execution.getVariable("DCVFM_source")
+		def backoutOnFailure = execution.getVariable("DCVFM_backoutOnFailure")
+		def vfModuleId = execution.getVariable("DCVFM_vfModuleId")
+		def vfModuleName = execution.getVariable("DCVFM_vfModuleName")
+		def vfModuleModelName = execution.getVariable("DCVFM_vfModuleModelName")
+		def vnfId = execution.getVariable("DCVFM_vnfId")
+		def cloudSiteId = execution.getVariable("DCVFM_cloudSiteId")
+		def sdncVersion = execution.getVariable("DCVFM_sdncVersion")
+		def serviceModelInfo = execution.getVariable("serviceModelInfo")
+		def vnfModelInfo = execution.getVariable("vnfModelInfo")
+		def vfModuleModelInfo = execution.getVariable("vfModuleModelInfo")
+		String serviceEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(serviceModelInfo)
+		String vnfEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(vnfModelInfo)
+		String vfModuleEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(vfModuleModelInfo)
+		def globalSubscriberId = execution.getVariable("DCVFM_globalSubscriberId")
+		boolean usePreload = execution.getVariable("DCVFM_usePreload")
+		String usePreloadToSDNC = usePreload ? "Y" : "N"
+		def modelCustomizationUuid = execution.getVariable("DCVFM_modelCustomizationUuid")
+		def modelCustomizationUuidString = ""
+		if (!usePreload) {
+			modelCustomizationUuidString = "<model-customization-uuid>" + modelCustomizationUuid + "</model-customization-uuid>"
+		}
+
+		String sdncVNFParamsXml = ""
+
+		if(execution.getVariable("DCVFM_vnfParamsExistFlag") == true){
+			if (!sdncVersion.equals("1707")) {
+				sdncVNFParamsXml = buildSDNCParamsXml(execution)
+			}
+			else {
+				sdncVNFParamsXml = buildCompleteSDNCParamsXml(execution)
+			}
+		}else{
+			sdncVNFParamsXml = ""
+		}
+		
+		String sdncRequest = ""
+		
+		if (!sdncVersion.equals("1707")) {
+
+			sdncRequest =
+		"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+	   <sdncadapter:RequestHeader>
+				<sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId>
+				<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId>
+				<sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction>
+				<sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation>
+				<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl>
+		</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+		<request-information>
+			<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+			<request-action>VNFActivateRequest</request-action>
+			<source>${MsoUtils.xmlEscape(source)}</source>
+			<notification-url/>
+		</request-information>
+		<service-information>
+			<service-id>${MsoUtils.xmlEscape(serviceId)}</service-id>
+			<service-type>${MsoUtils.xmlEscape(serviceId)}</service-type>
+			<service-instance-id>${MsoUtils.xmlEscape(svcInstId)}</service-instance-id>
+			<subscriber-name>notsurewecare</subscriber-name>
+		</service-information>
+		<vnf-request-information>
+			<vnf-id>${MsoUtils.xmlEscape(vfModuleId)}</vnf-id>
+			<vnf-type>${MsoUtils.xmlEscape(vfModuleModelName)}</vnf-type>
+			<vnf-name>${MsoUtils.xmlEscape(vfModuleName)}</vnf-name>
+			<generic-vnf-id>${MsoUtils.xmlEscape(vnfId)}</generic-vnf-id>
+			<generic-vnf-name>${MsoUtils.xmlEscape(vnfName)}</generic-vnf-name>
+			<generic-vnf-type>${MsoUtils.xmlEscape(vnfType)}</generic-vnf-type>
+			<aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region>
+			<tenant>${MsoUtils.xmlEscape(tenantId)}</tenant>
+			${modelCustomizationUuidString}
+			<use-preload>${MsoUtils.xmlEscape(usePreloadToSDNC)}</use-preload>
+		${sdncVNFParamsXml}
+		</vnf-request-information>
+	</sdncadapterworkflow:SDNCRequestData>
+	</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+		
+		}
+		else {	
+			
+			sdncRequest =
+			"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+	   <sdncadapter:RequestHeader>
+				<sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId>
+				<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId>
+				<sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction>
+				<sdncadapter:SvcOperation>vf-module-topology-operation</sdncadapter:SvcOperation>
+				<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl>
+				<sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+		</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+		<request-information>
+			<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+			<request-action>CreateVfModuleInstance</request-action>
+			<source>${MsoUtils.xmlEscape(source)}</source>
+			<notification-url/>
+		</request-information>
+		<service-information>
+			<service-id>${MsoUtils.xmlEscape(serviceId)}</service-id>
+			<subscription-service-type>${MsoUtils.xmlEscape(serviceId)}</subscription-service-type>
+			${serviceEcompModelInformation}
+			<service-instance-id>${MsoUtils.xmlEscape(svcInstId)}</service-instance-id>
+			<global-customer-id>${MsoUtils.xmlEscape(globalSubscriberId)}</global-customer-id>			
+		</service-information>		
+		<vnf-information>
+			<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+			<vnf-type>${MsoUtils.xmlEscape(vnfType)}</vnf-type>
+			${vnfEcompModelInformation}			
+		</vnf-information>
+		<vf-module-information>
+			<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+			<vf-module-type>${MsoUtils.xmlEscape(vfModuleModelName)}</vf-module-type>
+			${vfModuleEcompModelInformation}			
+		</vf-module-information>
+		<vf-module-request-input>			
+			<vf-module-name>${MsoUtils.xmlEscape(vfModuleName)}</vf-module-name>
+			<tenant>${MsoUtils.xmlEscape(tenantId)}</tenant>
+			<aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region>			
+		${sdncVNFParamsXml}
+		</vf-module-request-input>
+	  </sdncadapterworkflow:SDNCRequestData>
+	</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+			
+			
+			/*
+			sdncRequest =
+			"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+	   <sdncadapter:RequestHeader>
+				<sdncadapter:RequestId>${MsoUtils.xmlEscape(requestId)}</sdncadapter:RequestId>
+				<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId>
+				<sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction>
+				<sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation>
+				<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl>
+		</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+		<request-information>
+			<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+			<request-action>CreateVfModuleInstance</request-action>
+			<source>${MsoUtils.xmlEscape(source)}</source>
+			<notification-url/>
+		</request-information>
+		<service-information>
+			<service-id>${MsoUtils.xmlEscape(serviceId)}</service-id>
+			<service-type>${MsoUtils.xmlEscape(serviceId)}</service-type>
+			${serviceEcompModelInformation}			
+			<service-instance-id>${MsoUtils.xmlEscape(svcInstId)}</service-instance-id>
+			<global-customer-id>${MsoUtils.xmlEscape(globalSubscriberId)}</global-customer-id>
+		</service-information>
+		<vnf-information>
+			<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+			<vnf-type>${MsoUtils.xmlEscape(vnfType)}</vnf-type>
+			${vnfEcompModelInformation}			
+		</vnf-information>
+		<vf-module-information>
+			<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+			<vf-module-type>${MsoUtils.xmlEscape(vfModuleModelName)}</vf-module-type>
+			${vfModuleEcompModelInformation}			
+		</vf-module-information>
+		<vf-module-request-input>			
+			<vf-module-name>${MsoUtils.xmlEscape(vfModuleName)}</vf-module-name>
+			<tenant>${MsoUtils.xmlEscape(tenantId)}</tenant>
+			<aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region>				
+		${sdncVNFParamsXml}
+		</vf-module-request-input>		
+	</sdncadapterworkflow:SDNCRequestData>
+	</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+			*/
+			
+		}
+
+	msoLogger.debug("sdncRequest:  " + sdncRequest)
+	return sdncRequest
+
+	}
+
+	public void preProcessSDNCActivateRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessSDNCActivateRequest(' +
+			'execution=' + execution.getId() +
+			')'
+		
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessSDNCActivateRequest Process")
+		try{
+			String vnfId = execution.getVariable("DCVFM_vnfId")
+			String vfModuleId = execution.getVariable("DCVFM_vfModuleId")
+			String serviceInstanceId = execution.getVariable("DCVFM_serviceInstanceId")
+
+			def svcInstId = ""
+			if (serviceInstanceId == null || serviceInstanceId.isEmpty()) {
+				svcInstId = vfModuleId
+			}
+			else {
+				svcInstId = serviceInstanceId
+			}
+			String activateSDNCRequest = buildSDNCRequest(execution, svcInstId, "activate")
+
+			execution.setVariable("DCVFM_activateSDNCRequest", activateSDNCRequest)
+			msoLogger.debug("Outgoing CommitSDNCRequest is: \n" + activateSDNCRequest)
+
+		}catch(Exception e){
+			msoLogger.debug("Exception Occured Processing preProcessSDNCActivateRequest. Exception is:\n" + e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during  preProcessSDNCActivateRequest Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED  preProcessSDNCActivateRequest Process")
+	}
+
+	public void postProcessVNFAdapterRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.postProcessVNFAdapterRequest(' +
+			'execution=' + execution.getId() +
+			')'
+		
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix",Prefix)
+		try{
+		msoLogger.debug("STARTED postProcessVNFAdapterRequest Process")
+
+		String vnfResponse = execution.getVariable("DCVFM_createVnfAResponse")
+		msoLogger.debug("VNF Adapter Response is: " + vnfResponse)
+
+		RollbackData rollbackData = execution.getVariable("rollbackData")
+		if(vnfResponse != null){
+
+			if(vnfResponse.contains("createVfModuleResponse")){
+				msoLogger.debug("Received a Good Response from VNF Adapter for CREATE_VF_MODULE Call.")
+				execution.setVariable("DCVFM_vnfVfModuleCreateCompleted", true)
+				String heatStackId = utils.getNodeText(vnfResponse, "vfModuleStackId")
+				execution.setVariable("DCVFM_heatStackId", heatStackId)
+				msoLogger.debug("Received heat stack id from VNF Adapter: " + heatStackId)
+				rollbackData.put("VFMODULE", "heatstackid", heatStackId)
+				// Parse vnfOutputs for network_fqdn
+				if (vnfResponse.contains("vfModuleOutputs")) {
+					def vfModuleOutputsXml = utils.getNodeXml(vnfResponse, "vfModuleOutputs")
+					InputSource source = new InputSource(new StringReader(vfModuleOutputsXml));
+			DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
+			docFactory.setNamespaceAware(true)
+			DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
+			Document outputsXml = docBuilder.parse(source)
+
+					NodeList entries = outputsXml.getElementsByTagNameNS("*", "entry")
+					List contrailNetworkPolicyFqdnList = []
+					for (int i = 0; i< entries.getLength(); i++) {
+						Node node = entries.item(i)
+						if (node.getNodeType() == Node.ELEMENT_NODE) {
+							Element element = (Element) node
+							String key = element.getElementsByTagNameNS("*", "key").item(0).getTextContent()
+							if (key.equals("contrail-service-instance-fqdn")) {
+								String contrailServiceInstanceFqdn = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
+								msoLogger.debug("Obtained contrailServiceInstanceFqdn: " + contrailServiceInstanceFqdn)
+								execution.setVariable("DCVFM_contrailServiceInstanceFqdn", contrailServiceInstanceFqdn)
+							}
+							else if (key.endsWith("contrail_network_policy_fqdn")) {
+								String contrailNetworkPolicyFqdn = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
+								msoLogger.debug("Obtained contrailNetworkPolicyFqdn: " + contrailNetworkPolicyFqdn)
+								contrailNetworkPolicyFqdnList.add(contrailNetworkPolicyFqdn)
+							}
+							else if (key.equals("oam_management_v4_address")) {
+								String oamManagementV4Address = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
+								msoLogger.debug("Obtained oamManagementV4Address: " + oamManagementV4Address)
+								execution.setVariable("DCVFM_oamManagementV4Address", oamManagementV4Address)
+							}
+							else if (key.equals("oam_management_v6_address")) {
+								String oamManagementV6Address = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
+								msoLogger.debug("Obtained oamManagementV6Address: " + oamManagementV6Address)
+								execution.setVariable("DCVFM_oamManagementV6Address", oamManagementV6Address)
+							}
+
+						}
+					}
+					if (!contrailNetworkPolicyFqdnList.isEmpty()) {
+						execution.setVariable("DCVFM_contrailNetworkPolicyFqdnList", contrailNetworkPolicyFqdnList)
+					}
+				}
+			}else{
+				msoLogger.debug("Received a BAD Response from VNF Adapter for CREATE_VF_MODULE Call.")
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "VNF Adapter Error")
+			}
+		}else{
+			msoLogger.debug("Response from VNF Adapter is Null for CREATE_VF_MODULE Call.")
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Empty response from VNF Adapter")
+		}
+
+		rollbackData.put("VFMODULE", "rollbackVnfAdapterCreate", "true")
+		execution.setVariable("rollbackData", rollbackData)
+
+		}catch(BpmnError b){
+			throw b
+		}catch(Exception e){
+			msoLogger.debug("Internal Error Occured in PostProcess Method")
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Internal Error Occured in PostProcess Method")
+		}
+		msoLogger.trace("COMPLETED postProcessVnfAdapterResponse Process")
+	}
+
+
+	public void preProcessUpdateAAIVfModuleRequestOrch(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessUpdateAAIVfModuleRequestOrch(' +
+			'execution=' + execution.getId() +
+			')'
+		
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessUpdateAAIVfModuleRequestOrch")
+
+		try{
+
+			//Build UpdateAAIVfModule Request
+			boolean setContrailServiceInstanceFqdn = false
+			def contrailServiceInstanceFqdn = execution.getVariable("DCVFM_contrailServiceInstanceFqdn")
+			if (!contrailServiceInstanceFqdn.equals("")) {
+				setContrailServiceInstanceFqdn = true
+			}
+			
+			execution.setVariable("DCVFM_orchestrationStatus", "Created")
+
+			String updateAAIVfModuleRequest = buildUpdateAAIVfModuleRequest(execution, false, true, true, setContrailServiceInstanceFqdn)
+
+			updateAAIVfModuleRequest = utils.formatXml(updateAAIVfModuleRequest)
+			execution.setVariable("DCVFM_updateAAIVfModuleRequest", updateAAIVfModuleRequest)
+			msoLogger.debug("Outgoing UpdateAAIVfModuleRequest is: \n" + updateAAIVfModuleRequest)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessUpdateAAIVfModuleRequestOrch", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);			
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessUpdateAAIVfModuleRequestOrch Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED preProcessUpdateAAIVfModuleRequestOrch")
+
+	}
+	
+	public void preProcessUpdateAAIVfModuleRequestStatus(DelegateExecution execution, String status) {
+		def method = getClass().getSimpleName() + '.preProcessUpdateAAIVfModuleStatus(' +
+			'execution=' + execution.getId() +
+			')'
+		
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessUpdateAAIVfModuleStatus")
+
+		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)
+			msoLogger.debug("Outgoing UpdateAAIVfModuleRequest is: \n" + updateAAIVfModuleRequest)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessUpdateAAIVfModuleStatus", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessUpdateAAIVfModuleStatus Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED preProcessUpdateAAIVfModuleStatus")
+
+	}
+
+
+	public void preProcessUpdateAAIVfModuleRequestGroup(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessUpdateAAIVfModuleRequestGroup(' +
+			'execution=' + execution.getId() +
+			')'
+		
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessUpdateAAIVfModuleRequestGroup")
+
+		try{
+
+			//Build UpdateAAIVfModule Request
+
+			String updateAAIVfModuleRequest = buildUpdateAAIVfModuleRequest(execution, true, false, false, false)
+
+			updateAAIVfModuleRequest = utils.formatXml(updateAAIVfModuleRequest)
+			execution.setVariable("DCVFM_updateAAIVfModuleRequest", updateAAIVfModuleRequest)
+			msoLogger.debug("Outgoing UpdateAAIVfModuleRequest is: \n" + updateAAIVfModuleRequest)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessUpdateAAIVfModuleRequestGroup", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);			
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessUpdateAAIVfModuleRequestGroup Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED  preProcessUpdateAAIVfModuleRequestGroup")
+
+	}
+
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method){
+		
+		execution.setVariable("prefix",Prefix)
+		msoLogger.debug("STARTED ValidateSDNCResponse Process")
+
+		WorkflowException workflowException = execution.getVariable("WorkflowException")
+		boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+
+		msoLogger.debug("workflowException: " + workflowException)
+
+		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+		sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+		String sdncResponse = response
+		if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+			msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + sdncResponse)
+			RollbackData rollbackData = execution.getVariable("rollbackData")
+
+			if(method.equals("assign")){
+				rollbackData.put("VFMODULE", "rollbackSDNCRequestAssign", "true")
+				execution.setVariable("CRTGVNF_sdncAssignCompleted", true)
+			}
+			else if (method.equals("activate")) {
+				rollbackData.put("VFMODULE", "rollbackSDNCRequestActivate", "true")
+			}
+			execution.setVariable("rollbackData", rollbackData)
+		}else{
+			msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.")
+			throw new BpmnError("MSOWorkflowException")
+		}
+		msoLogger.trace("COMPLETED ValidateSDNCResponse Process")
+	}
+
+	public void preProcessUpdateAfterCreateRequest(DelegateExecution execution){
+		
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessRequest Process")
+		try{
+			String response = execution.getVariable("DCVFM_assignSDNCAdapterResponse")
+			msoLogger.debug("DCVFM_assignSDNCAdapterResponse: " + response)
+
+			String data = utils.getNodeXml(response, "response-data")
+			String vnfId = utils.getNodeText(data, "vnf-id")
+
+			String uuid = execution.getVariable('testReqId') // for junits
+			if(uuid==null){
+				uuid = execution.getVariable("mso-request-id") + "-" +  	System.currentTimeMillis()
+			}
+
+			String serviceOperation = "/VNF-API:vnfs/vnf-list/" + vnfId
+			def callbackUrl = execution.getVariable("DCVFM_sdncCallbackUrl")
+			msoLogger.debug("callbackUrl: " + callbackUrl)
+
+			String SDNCGetRequest =
+					"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+											xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+											xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+					<sdncadapter:RequestHeader>
+					<sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId>
+					<sdncadapter:SvcAction>query</sdncadapter:SvcAction>
+					<sdncadapter:SvcOperation>${MsoUtils.xmlEscape(serviceOperation)}</sdncadapter:SvcOperation>
+					<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl>
+					<sdncadapter:MsoAction>mobility</sdncadapter:MsoAction>
+				</sdncadapter:RequestHeader>
+					<sdncadapterworkflow:SDNCRequestData></sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			execution.setVariable("DCVFM_getSDNCRequest", SDNCGetRequest)
+			msoLogger.debug("Outgoing GetSDNCRequest is: \n" + SDNCGetRequest)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessSDNCGetRequest", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during prepareProvision Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED preProcessSDNCGetRequest Process")
+	}
+
+	public String buildUpdateAAIVfModuleRequest(DelegateExecution execution, boolean updateVolumeGroupId,
+		boolean updateOrchestrationStatus, boolean updateHeatStackId, boolean updateContrailFqdn){
+
+		def vnfId = execution.getVariable("DCVFM_vnfId")
+		def vfModuleId = execution.getVariable("DCVFM_vfModuleId")
+		def volumeGroupIdString = ""
+		if (updateVolumeGroupId) {
+			volumeGroupIdString = "<volume-group-id>" + execution.getVariable("DCVFM_volumeGroupId") +
+					"</volume-group-id>"
+		}
+		def orchestrationStatusString = ""
+		if (updateOrchestrationStatus) {
+			orchestrationStatusString = "<orchestration-status>" + execution.getVariable("DCVFM_orchestrationStatus") + "</orchestration-status>"
+		}
+		def heatStackIdString = ""
+		if (updateHeatStackId) {
+			heatStackIdString = "<heat-stack-id>" + execution.getVariable("DCVFM_heatStackId") + "</heat-stack-id>"
+		}
+		def contrailFqdnString = ""
+		if (updateContrailFqdn) {
+			contrailFqdnString = "<contrail-service-instance-fqdn>" + execution.getVariable("DCVFM_contrailServiceInstanceFqdn") +
+				"</contrail-service-instance-fqdn>"
+		}
+
+		String updateAAIVfModuleRequest =
+			"""<UpdateAAIVfModuleRequest>
+				<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+				<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+				${heatStackIdString}
+				${orchestrationStatusString}
+				${volumeGroupIdString}
+				${contrailFqdnString}
+			</UpdateAAIVfModuleRequest>"""
+
+	msoLogger.trace("updateAAIVfModule Request: " + updateAAIVfModuleRequest)
+	return updateAAIVfModuleRequest
+
+	}
+
+	public String buildSDNCParamsXml(DelegateExecution execution){
+
+		String params = ""
+		StringBuilder sb = new StringBuilder()
+		Map<String, String> paramsMap = execution.getVariable("DCVFM_vnfParamsMap")
+
+		for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
+			String paramsXml
+			String key = entry.getKey();
+			if(key.endsWith("_network")){
+				String requestKey = key.substring(0, key.indexOf("_network"))
+				String requestValue = entry.getValue()
+				paramsXml =
+"""<vnf-networks>
+	<network-role>{ functx:substring-before-match(data($param/@name), '_network') }</network-role>
+	<network-name>{ $param/text() }</network-name>
+</vnf-networks>"""
+			}else{
+			paramsXml = ""
+			}
+			params = sb.append(paramsXml)
+		}
+		return params
+	}
+	
+	public String buildCompleteSDNCParamsXml(DelegateExecution execution){
+		
+		String params = ""
+		StringBuilder sb = new StringBuilder()
+		Map<String, String> paramsMap = execution.getVariable("DCVFM_vnfParamsMap")
+		
+		for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
+			String paramsXml
+			String key = entry.getKey();					
+			String value = entry.getValue()
+			paramsXml =	"""<${key}>$value</$key>"""	
+			params = sb.append(paramsXml)
+		}
+		return params
+	}
+
+   public void queryCloudRegion (DelegateExecution execution) {
+		
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED queryCloudRegion")
+
+		try {
+			String cloudRegion = execution.getVariable("DCVFM_cloudSiteId")
+
+			// Prepare AA&I url
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUtil = new AaiUtil(this)
+			String aai_uri = aaiUtil.getCloudInfrastructureCloudRegionUri(execution)
+			String queryCloudRegionRequest = "${aai_endpoint}${aai_uri}/" + cloudRegion
+
+			execution.setVariable("DCVFM_queryCloudRegionRequest", queryCloudRegionRequest)
+			msoLogger.debug("DCVFM_queryCloudRegionRequest - " + "\n" + queryCloudRegionRequest)
+
+			cloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "PO", cloudRegion)
+
+			if ((cloudRegion != "ERROR")) {
+				if(execution.getVariable("DCVFM_queryCloudRegionReturnCode") == "404"){
+					execution.setVariable("DCVFM_cloudRegionForVolume", "AAIAIC25")
+				}else{
+				execution.setVariable("DCVFM_cloudRegionForVolume", cloudRegion)
+				}
+				execution.setVariable("DCVFM_isCloudRegionGood", true)
+			} else {
+				String errorMessage = "AAI Query Cloud Region Unsuccessful. AAI Response Code: " + execution.getVariable("DCVFM_queryCloudRegionReturnCode")
+				msoLogger.debug(errorMessage)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
+				execution.setVariable("DCVFM_isCloudRegionGood", false)
+			}
+			msoLogger.debug(" is Cloud Region Good: " + execution.getVariable("DCVFM_isCloudRegionGood"))
+
+		} catch(BpmnError b){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Rethrowing MSOWorkflowException", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + b.getMessage());
+			throw b
+		}catch (Exception ex) {
+			// try error
+			String errorMessage = "Bpmn error encountered in CreateVfModule flow. Unexpected Response from AAI - " + ex.getMessage()
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "AAI Query Cloud Region Failed "+errorMessage, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception occured during queryCloudRegion method")
+		}
+	}
+
+   /**
+    *
+    *This method occurs when an MSOWorkflowException is caught.  It logs the
+    *variables and ensures that the "WorkflowException" Variable is set.
+    *
+    */
+   public void processBPMNException(DelegateExecution execution){
+
+	   execution.setVariable("prefix",Prefix)
+	   try{
+		   msoLogger.debug("Caught a BPMN Exception")
+		   msoLogger.debug("Started processBPMNException Method")
+		   msoLogger.debug("Variables List: " + execution.getVariables())
+		   if(execution.getVariable("WorkflowException") == null){
+			   exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception occured during DoCreateVfModule Sub Process")
+		   }
+
+	   }catch(Exception e){
+		   msoLogger.debug("Caught Exception during processBPMNException Method: " + e)
+	   }
+	   msoLogger.debug("Completed processBPMNException Method")
+   }
+
+   public void prepareCreateAAIVfModuleVolumeGroupRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepareCreateAAIVfModuleVolumeGroupRequest(' +
+			'execution=' + execution.getId() +
+			')'
+		
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED prepareCreateAAIVfModuleVolumeGroupRequest")
+
+		try{
+
+			//Build CreateAAIVfModuleVolumeGroup Request
+
+			def vnfId = execution.getVariable("DCVFM_vnfId")
+			def vfModuleId = execution.getVariable("DCVFM_vfModuleId")
+			def volumeGroupId = execution.getVariable("DCVFM_volumeGroupId")
+			//def aicCloudRegion = execution.getVariable("DCVFM_cloudSiteId")
+			def aicCloudRegion = execution.getVariable("DCVFM_cloudRegionForVolume")
+			String createAAIVfModuleVolumeGroupRequest =
+			"""<CreateAAIVfModuleVolumeGroupRequest>
+				<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+				<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+				<volume-group-id>${MsoUtils.xmlEscape(volumeGroupId)}</volume-group-id>
+				<aic-cloud-region>${MsoUtils.xmlEscape(aicCloudRegion)}</aic-cloud-region>
+			</CreateAAIVfModuleVolumeGroupRequest>"""
+
+			createAAIVfModuleVolumeGroupRequest = utils.formatXml(createAAIVfModuleVolumeGroupRequest)
+			execution.setVariable("DCVFM_createAAIVfModuleVolumeGroupRequest", createAAIVfModuleVolumeGroupRequest)
+			msoLogger.debug("Outgoing CreateAAIVfModuleVolumeGroupRequest is: \n" + createAAIVfModuleVolumeGroupRequest)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Exception Occured Processing prepareCreateAAIVfModuleVolumeGroupRequest', "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during prepareCreateAAIVfModuleVolumeGroupRequest Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED  prepareCreateAAIVfModuleVolumeGroupRequest")
+
+	}
+
+   public void createNetworkPoliciesInAAI(DelegateExecution execution) {
+	   def method = getClass().getSimpleName() + '.createNetworkPoliciesInAAI(' +
+	   'execution=' + execution.getId() +
+	   ')'
+	   
+	   msoLogger.trace('Entered ' + method)
+	   execution.setVariable("prefix", Prefix)
+	   msoLogger.trace("STARTED createNetworkPoliciesInAAI")
+
+	   try {
+		   // get variables
+		   List fqdnList = execution.getVariable("DCVFM_contrailNetworkPolicyFqdnList")
+		   int fqdnCount = fqdnList.size()
+		   def rollbackData = execution.getVariable("rollbackData")
+
+		   execution.setVariable("DCVFM_networkPolicyFqdnCount", fqdnCount)
+		   msoLogger.debug("DCVFM_networkPolicyFqdnCount - " + fqdnCount)
+
+		   String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+		   AaiUtil aaiUriUtil = new AaiUtil(this)
+		   String aai_uri = aaiUriUtil.getNetworkPolicyUri(execution)
+
+		   if (fqdnCount > 0) {
+
+			   // AII loop call over contrail network policy fqdn list
+			   for (i in 0..fqdnCount-1) {
+
+				   int counting = i+1
+				   String fqdn = fqdnList[i]
+
+				   // Query AAI for this network policy FQDN
+
+				   String queryNetworkPolicyByFqdnAAIRequest = "${aai_endpoint}${aai_uri}?network-policy-fqdn=" + UriUtils.encode(fqdn, "UTF-8")
+
+				   def aaiRequestId = UUID.randomUUID().toString()
+				   RESTConfig config = new RESTConfig(queryNetworkPolicyByFqdnAAIRequest);
+				   RESTClient client = new RESTClient(config).addHeader("X-TransactionId", aaiRequestId)
+															 .addHeader("X-FromAppId", "MSO")
+															 .addHeader("Content-Type", "application/xml")
+															 .addHeader("Accept","application/xml");
+				   APIResponse response = client.get()
+				   int returnCode = response.getStatusCode()
+				   execution.setVariable("DCVFM_aaiQqueryNetworkPolicyByFqdnReturnCode", returnCode)
+				   msoLogger.debug(" ***** AAI query network policy Response Code, NetworkPolicy #" + counting + " : " + returnCode)
+
+				   String aaiResponseAsString = response.getResponseBodyAsString()
+
+				   if (isOneOf(returnCode, 200, 201)) {
+					   msoLogger.debug("The return code is: "  + returnCode)
+					   // This network policy FQDN already exists in AAI
+					   execution.setVariable("DCVFM_queryNetworkPolicyByFqdnAAIResponse", aaiResponseAsString)
+					   msoLogger.debug(" QueryAAINetworkPolicyByFQDN Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsString)
+
+				   } else {
+					   if (returnCode == 404) {
+						   // This network policy FQDN is not in AAI yet. Add it now
+						   msoLogger.debug("The return code is: "  + returnCode)
+						   msoLogger.debug("This network policy FQDN is not in AAI yet: " + fqdn)
+						   // Add the network policy with this FQDN to AAI
+						   def networkPolicyId = UUID.randomUUID().toString()
+						   msoLogger.debug("Adding network-policy with network-policy-id " + networkPolicyId)
+
+						   String aaiNamespace = aaiUriUtil.getNamespaceFromUri(execution, aai_uri)
+						   msoLogger.debug('AAI namespace is: ' + aaiNamespace)
+						   String payload = """<network-policy xmlns="${aaiNamespace}">
+							   	<network-policy-id>${MsoUtils.xmlEscape(networkPolicyId)}</network-policy-id>
+								<network-policy-fqdn>${MsoUtils.xmlEscape(fqdn)}</network-policy-fqdn>
+								<heat-stack-id>${MsoUtils.xmlEscape(execution.getVariable("DCVFM_heatStackId"))}</heat-stack-id>
+								</network-policy>""" as String
+
+						   execution.setVariable("DCVFM_addNetworkPolicyAAIRequestBody", payload)
+
+						   String addNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + UriUtils.encode(networkPolicyId, "UTF-8")
+						   msoLogger.debug("AAI request endpoint: " + addNetworkPolicyAAIRequest)
+
+						   def aaiRequestIdPut = UUID.randomUUID().toString()
+						   RESTConfig configPut = new RESTConfig(addNetworkPolicyAAIRequest);
+						   RESTClient clientPut = new RESTClient(configPut).addHeader("X-TransactionId", aaiRequestIdPut)
+																	 .addHeader("X-FromAppId", "MSO")
+																	 .addHeader("Content-Type", "application/xml")
+																	 .addHeader("Accept","application/xml");
+						   msoLogger.debug("invoking PUT call to AAI with payload:"+System.lineSeparator()+payload)
+						   APIResponse responsePut = clientPut.httpPut(payload)
+						   int returnCodePut = responsePut.getStatusCode()
+						   execution.setVariable("DCVFM_aaiAddNetworkPolicyReturnCode", returnCodePut)
+						   msoLogger.debug(" ***** AAI add network policy Response Code, NetworkPolicy #" + counting + " : " + returnCodePut)
+
+						   String aaiResponseAsStringPut = responsePut.getResponseBodyAsString()
+						   if (isOneOf(returnCodePut, 200, 201)) {
+							   msoLogger.debug("The return code from adding network policy is: "  + returnCodePut)
+							   // This network policy was created in AAI successfully
+							   execution.setVariable("DCVFM_addNetworkPolicyAAIResponse", aaiResponseAsStringPut)
+							   msoLogger.debug(" AddAAINetworkPolicy Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsStringPut)
+							   rollbackData.put("VFMODULE", "rollbackCreateNetworkPoliciesAAI", "true")
+							   rollbackData.put("VFMODULE", "contrailNetworkPolicyFqdn" + i, fqdn)
+							   execution.setVariable("rollbackData", rollbackData)
+
+						   } else {
+						   		// aai all errors
+						   		String putErrorMessage = "Unable to add network-policy to AAI createNetworkPoliciesInAAI - " + returnCodePut
+								msoLogger.debug(putErrorMessage)
+								exceptionUtil.buildAndThrowWorkflowException(execution, 2500, putErrorMessage)
+						   }
+
+					   } else {
+						  if (aaiResponseAsString.contains("RESTFault")) {
+							  WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+							  execution.setVariable("WorkflowException", exceptionObject)
+							  throw new BpmnError("MSOWorkflowException")
+
+							  } else {
+								   // aai all errors
+								   String dataErrorMessage = "Unexpected Response from createNetworkPoliciesInAAI - " + returnCode
+								   msoLogger.debug(dataErrorMessage)
+								   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+							 }
+					   }
+				   }
+
+			   } // end loop
+
+
+		   } else {
+		   	   msoLogger.debug("No contrail network policies to query/create")
+
+		   }
+
+	   } catch (BpmnError e) {
+		   throw e;
+
+	   } catch (Exception ex) {
+		   String exceptionMessage = "Bpmn error encountered in DoCreateVfModule flow. createNetworkPoliciesInAAI() - " + ex.getMessage()
+		   msoLogger.debug(exceptionMessage)
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+	   }
+
+   }
+
+   /**
+	* Prepare a Request for invoking the UpdateAAIGenericVnf subflow.
+	*
+	* @param execution The flow's execution instance.
+	*/
+   public void prepUpdateAAIGenericVnf(DelegateExecution execution) {
+	   def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' +
+		   'execution=' + execution.getId() +
+		   ')'
+	   
+	   msoLogger.trace('Entered ' + method)
+
+	   try {
+		   def rollbackData = execution.getVariable("rollbackData")
+		   def vnfId = execution.getVariable('DCVFM_vnfId')
+		   def oamManagementV4Address = execution.getVariable("DCVFM_oamManagementV4Address")
+		   def oamManagementV6Address = execution.getVariable("DCVFM_oamManagementV6Address")
+		   def ipv4OamAddressElement = ''
+		   def managementV6AddressElement = ''
+
+		   if (oamManagementV4Address != null && !oamManagementV4Address.isEmpty()) {
+			   ipv4OamAddressElement = '<ipv4-oam-address>' + oamManagementV4Address + '</ipv4-oam-address>'
+		   }
+
+		   if (oamManagementV6Address != null && !oamManagementV6Address.isEmpty()) {
+			   managementV6AddressElement = '<management-v6-address>' + oamManagementV6Address + '</management-v6-address>'
+		   }
+
+		   rollbackData.put("VFMODULE", "oamManagementV4Address", oamManagementV4Address)
+
+
+		   String updateAAIGenericVnfRequest = """
+					<UpdateAAIGenericVnfRequest>
+						<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+						${ipv4OamAddressElement}
+						${managementV6AddressElement}
+					</UpdateAAIGenericVnfRequest>
+				"""
+			   updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest)
+			   execution.setVariable('DCVM_updateAAIGenericVnfRequest', updateAAIGenericVnfRequest)
+			   msoLogger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest)
+
+
+		   msoLogger.trace('Exited ' + method)
+	   } catch (BpmnError e) {
+		   throw e;
+	   } catch (Exception e) {
+		   msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered in " + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateAAIGenericVnf(): ' + e.getMessage())
+	   }
+   }
+
+   /**
+	* Post process a result from invoking the UpdateAAIGenericVnf subflow.
+	*
+	* @param execution The flow's execution instance.
+	*/
+   public void postProcessUpdateAAIGenericVnf(DelegateExecution execution) {
+	   def method = getClass().getSimpleName() + '.postProcessUpdateAAIGenericVnf(' +
+		   'execution=' + execution.getId() +
+		   ')'
+	   
+	   msoLogger.trace('Entered ' + method)
+
+	   try {
+		   def rollbackData = execution.getVariable("rollbackData")
+
+		   rollbackData.put("VFMODULE", "rollbackUpdateVnfAAI", "true")
+
+		   def vnfId = execution.getVariable('DCVFM_vnfId')
+		   def oamManagementV4Address = execution.getVariable("DCVFM_oamManagementV4Address")
+		   def oamManagementV6Address = execution.getVariable("DCVFM_oamManagementV6Address")
+		   def ipv4OamAddressElement = ''
+		   def managementV6AddressElement = ''
+
+		   if (oamManagementV4Address != null && !oamManagementV4Address.isEmpty()) {
+			   rollbackData.put("VFMODULE", "oamManagementV4Address", oamManagementV4Address)
+		   }
+
+		   if (oamManagementV6Address != null && !oamManagementV6Address.isEmpty()) {
+			   rollbackData.put("VFMODULE", "oamManagementV6Address", oamManagementV6Address)
+		   }
+
+		   execution.setVariable("rollbackData", rollbackData)
+
+		   msoLogger.trace('Exited ' + method)
+	   } catch (BpmnError e) {
+		   throw e;
+	   } catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in postProcessUpdateAAIGenericVnf(): ' + e.getMessage())
+	   }
+   }
+   
+   public void queryCatalogDB (DelegateExecution execution) {
+	  
+	   String msg = ""
+	   msoLogger.trace("queryCatalogDB ")
+
+	   try {
+		   boolean twoPhaseDesign = false
+		   // check for input
+		   
+		   String vfModuleModelName = execution.getVariable("DCVFM_vfModuleModelName")
+		   msoLogger.debug("vfModuleModelName: " + vfModuleModelName)
+		   def vnfModelInfo = execution.getVariable("vnfModelInfo")
+		   def vnfModelCustomizationUuid = jsonUtil.getJsonValue(vnfModelInfo, "modelCustomizationUuid")
+		  
+		   msoLogger.debug("vnfModelCustomizationUuid: " + vnfModelCustomizationUuid)		   
+		
+		   JSONArray vnfs = catalog.getAllVnfsByVnfModelCustomizationUuid(execution, vnfModelCustomizationUuid, "v2")
+		   
+		   msoLogger.debug("Incoming Query Catalog DB for Vnf Response is: " + vnfModelCustomizationUuid) 
+		   // 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()
+				   msoLogger.debug("multiStageDesign value from Catalog DB is: " + multiStageDesignValue)
+				   if (multiStageDesignValue != null) {
+					   if (multiStageDesignValue.equalsIgnoreCase("true")) {
+			   				twoPhaseDesign = true
+					   }
+				   }
+			   }
+		   }
+		   
+		   msoLogger.debug("setting twoPhaseDesign flag to: " + twoPhaseDesign)
+		   
+		   execution.setVariable("DCVFM_twoPhaseDesign", twoPhaseDesign)		
+	   } catch (BpmnError e) {
+		   throw e;
+	   } catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in queryCatalogDB', "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryCatalogDB(): ' + e.getMessage())
+	   }
+   }
+	
+   
+   public void preProcessRollback (DelegateExecution execution) {
+
+	   msoLogger.trace("preProcessRollback")
+	   try {
+		   
+		   Object workflowException = execution.getVariable("WorkflowException");
+
+		   if (workflowException instanceof WorkflowException) {
+			   msoLogger.debug("Prev workflowException: " + workflowException.getErrorMessage())
+			   execution.setVariable("prevWorkflowException", workflowException);
+			   //execution.setVariable("WorkflowException", null);
+		   }
+	   } catch (BpmnError e) {
+		   msoLogger.debug("BPMN Error during preProcessRollback")
+	   } catch(Exception ex) {
+		   String msg = "Exception in preProcessRollback. " + ex.getMessage()
+		   msoLogger.debug(msg)
+	   }
+	   msoLogger.trace("Exit preProcessRollback")
+   }
+
+   public void postProcessRollback (DelegateExecution execution) {
+
+	   msoLogger.trace("postProcessRollback")
+	   String msg = ""
+	   try {
+		   Object workflowException = execution.getVariable("prevWorkflowException");
+		   if (workflowException instanceof WorkflowException) {
+			   msoLogger.debug("Setting prevException to WorkflowException: ")
+			   execution.setVariable("WorkflowException", workflowException);
+		   }
+		   execution.setVariable("rollbackData", null)
+	   } catch (BpmnError b) {
+		   msoLogger.debug("BPMN Error during postProcessRollback")
+		   throw b;
+	   } catch(Exception ex) {
+		   msg = "Exception in postProcessRollback. " + ex.getMessage()
+		   msoLogger.debug(msg)
+	   }
+	   msoLogger.trace("Exit postProcessRollback")
+   }
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy
new file mode 100644
index 0000000..a0b7dab
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy
@@ -0,0 +1,666 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.springframework.web.util.UriUtils
+
+
+
+public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateVfModuleRollback.class);
+	
+	def Prefix="DCVFMR_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	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(DelegateExecution execution) {
+		
+
+		initProcessVariables(execution)
+
+		try {
+
+			execution.setVariable("rolledBack", null)
+			execution.setVariable("rollbackError", null)
+			
+			def rollbackData = execution.getVariable("rollbackData")
+			msoLogger.debug("RollbackData:" + rollbackData)
+			
+			if (rollbackData != null) {
+			String vnfId = rollbackData.get("VFMODULE", "vnfid")
+			execution.setVariable("DCVFMR_vnfId", vnfId)
+			String vfModuleId = rollbackData.get("VFMODULE", "vfmoduleid")
+			execution.setVariable("DCVFMR_vfModuleId", vfModuleId)
+			String source = rollbackData.get("VFMODULE", "source")
+			execution.setVariable("DCVFMR_source", source)
+			String serviceInstanceId = rollbackData.get("VFMODULE", "serviceInstanceId")
+			execution.setVariable("DCVFMR_serviceInstanceId", serviceInstanceId)
+			String serviceId = rollbackData.get("VFMODULE", "service-id")
+			execution.setVariable("DCVFMR_serviceId", serviceId)
+			String vnfType = rollbackData.get("VFMODULE", "vnftype")
+			execution.setVariable("DCVFMR_vnfType", vnfType)
+			String vnfName = rollbackData.get("VFMODULE", "vnfname")
+			execution.setVariable("DCVFMR_vnfName", vnfName)
+			String tenantId = rollbackData.get("VFMODULE", "tenantid")
+			execution.setVariable("DCVFMR_tenantId", tenantId)
+			String vfModuleName = rollbackData.get("VFMODULE", "vfmodulename")
+			execution.setVariable("DCVFMR_vfModuleName", vfModuleName)
+			String vfModuleModelName = rollbackData.get("VFMODULE", "vfmodulemodelname")
+			execution.setVariable("DCVFMR_vfModuleModelName", vfModuleModelName)
+			String cloudSiteId = rollbackData.get("VFMODULE", "aiccloudregion")
+			execution.setVariable("DCVFMR_cloudSiteId", cloudSiteId)
+			String heatStackId = rollbackData.get("VFMODULE", "heatstackid")
+			execution.setVariable("DCVFMR_heatStackId", heatStackId)
+			String requestId = rollbackData.get("VFMODULE", "msorequestid")
+			execution.setVariable("DCVFMR_requestId", requestId)
+			// Set mso-request-id to request-id for VNF Adapter interface
+			execution.setVariable("mso-request-id", requestId)
+			List createdNetworkPolicyFqdnList = []
+			int i = 0
+			while (i < 100) {
+				String fqdn = rollbackData.get("VFMODULE", "contrailNetworkPolicyFqdn" + i)
+				if (fqdn == null) {
+					break
+				}
+				createdNetworkPolicyFqdnList.add(fqdn)
+				msoLogger.debug("got fqdn # " + i + ": " + fqdn)
+				i = i + 1
+	
+			}
+	
+			execution.setVariable("DCVFMR_createdNetworkPolicyFqdnList", createdNetworkPolicyFqdnList)
+			String oamManagementV4Address = rollbackData.get("VFMODULE", "oamManagementV4Address")
+			execution.setVariable("DCVFMR_oamManagementV4Address", oamManagementV4Address)
+			String oamManagementV6Address = rollbackData.get("VFMODULE", "oamManagementV6Address")
+			execution.setVariable("DCVFMR_oamManagementV6Address", oamManagementV6Address)
+			//String serviceInstanceId = rollbackData.get("VFMODULE", "msoserviceinstanceid")
+			//execution.setVariable("DCVFMR_serviceInstanceId", serviceInstanceId)
+			execution.setVariable("DCVFMR_rollbackPrepareUpdateVfModule", rollbackData.get("VFMODULE", "rollbackPrepareUpdateVfModule"))
+			execution.setVariable("DCVFMR_rollbackUpdateAAIVfModule", rollbackData.get("VFMODULE", "rollbackUpdateAAIVfModule"))
+			execution.setVariable("DCVFMR_rollbackVnfAdapterCreate", rollbackData.get("VFMODULE", "rollbackVnfAdapterCreate"))
+			execution.setVariable("DCVFMR_rollbackSDNCRequestAssign", rollbackData.get("VFMODULE", "rollbackSDNCRequestAssign"))
+			execution.setVariable("DCVFMR_rollbackSDNCRequestActivate", rollbackData.get("VFMODULE", "rollbackSDNCRequestActivate"))
+			execution.setVariable("DCVFMR_rollbackCreateAAIVfModule", rollbackData.get("VFMODULE", "rollbackCreateAAIVfModule"))
+			execution.setVariable("DCVFMR_rollbackCreateNetworkPoliciesAAI", rollbackData.get("VFMODULE", "rollbackCreateNetworkPoliciesAAI"))
+			execution.setVariable("DCVFMR_rollbackUpdateVnfAAI", rollbackData.get("VFMODULE", "rollbackUpdateVnfAAI"))
+	
+			// formulate the request for PrepareUpdateAAIVfModule
+			String request = """<PrepareUpdateAAIVfModuleRequest>
+									<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+									<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+									<orchestration-status>pending-delete</orchestration-status>
+								</PrepareUpdateAAIVfModuleRequest>""" as String
+			msoLogger.debug("PrepareUpdateAAIVfModuleRequest :" + request)
+			execution.setVariable("PrepareUpdateAAIVfModuleRequest", request)
+		} else {
+			execution.setVariable("skipRollback", true)
+		}
+		
+		if (execution.getVariable("disableRollback").equals("true" )) {
+			execution.setVariable("skipRollback", true)
+		}
+		
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			def msg = "Exception in DoCreateVfModuleRollback preProcessRequest " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+	}
+
+	// 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(DelegateExecution execution) {
+		
+		String srvInstId = execution.getVariable("DCVFMR_serviceInstanceId")
+
+		String uuid = execution.getVariable('testReqId') // for junits
+		if(uuid==null){
+			uuid = execution.getVariable("DCVFMR_requestId") + "-" +  	System.currentTimeMillis()
+		}
+		
+		def callbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+
+		String source = execution.getVariable("DCVFMR_source")
+		String serviceId = execution.getVariable("DCVFMR_serviceId")
+		String vnfId = execution.getVariable("DCVFMR_vnfId")
+		String vnfType = execution.getVariable("DCVFMR_vnfType")
+		String vnfName = execution.getVariable("DCVFMR_vnfName")
+		String tenantId = execution.getVariable("DCVFMR_tenantId")
+		String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
+		String vfModuleName = execution.getVariable("DCVFMR_vfModuleName")
+		String vfModuleModelName = execution.getVariable("DCVFMR_vfModuleModelName")
+		String cloudSiteId = execution.getVariable("DCVFMR_cloudSiteId")
+		String requestId = execution.getVariable("DCVFMR_requestId")
+
+		String serviceInstanceIdToSdnc = ""
+		if (srvInstId != null && !srvInstId.isEmpty()) {
+			serviceInstanceIdToSdnc = srvInstId
+		} else {
+		    serviceInstanceIdToSdnc = vfModuleId
+		}
+
+		def doSDNCActivateRollback = execution.getVariable("DCVFMR_rollbackSDNCRequestActivate")
+		def doSDNCAssignRollback = execution.getVariable("DCVFMR_rollbackSDNCRequestAssign")
+
+		def action = ""
+		def requestAction = ""
+
+		if (doSDNCActivateRollback.equals("true")) {
+			action = "delete"
+			requestAction = "DisconnectVNFRequest"
+		}
+		else if (doSDNCAssignRollback.equals("true")) {
+			action = "rollback"
+			requestAction = "VNFActivateRequest"
+		}
+		else
+			return
+
+
+		String request = """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+						      <sdncadapter:RequestHeader>
+						         <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId>
+						         <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(vfModuleId)}</sdncadapter:SvcInstanceId>
+						         <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction>
+						         <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation>
+						         <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl>
+						      </sdncadapter:RequestHeader>
+						      <sdncadapterworkflow:SDNCRequestData>
+						         <request-information>
+						            <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+						            <request-action>${MsoUtils.xmlEscape(requestAction)}</request-action>
+						            <source>${MsoUtils.xmlEscape(source)}</source>
+						            <notification-url/>
+						            <order-number/>
+						            <order-version/>
+						         </request-information>
+						         <service-information>
+						            <service-id>${MsoUtils.xmlEscape(serviceId)}</service-id>
+									<service-type>${MsoUtils.xmlEscape(serviceId)}</service-type>
+						            <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceIdToSdnc)}</service-instance-id>
+						            <subscriber-name>notsurewecare</subscriber-name>
+						         </service-information>
+						         <vnf-request-information>
+						         	<vnf-id>${MsoUtils.xmlEscape(vfModuleId)}</vnf-id>
+									<vnf-type>${MsoUtils.xmlEscape(vfModuleModelName)}</vnf-type>
+                                    <vnf-name>${MsoUtils.xmlEscape(vfModuleName)}</vnf-name>
+									<generic-vnf-id>${MsoUtils.xmlEscape(vnfId)}</generic-vnf-id>
+                                    <generic-vnf-name>${MsoUtils.xmlEscape(vnfName)}</generic-vnf-name>
+									<generic-vnf-type>${MsoUtils.xmlEscape(vnfType)}</generic-vnf-type>
+									<aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region>
+									<tenant>${MsoUtils.xmlEscape(tenantId)}</tenant>
+						         </vnf-request-information>
+						      </sdncadapterworkflow:SDNCRequestData>
+						   </sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+		msoLogger.debug("sdncAdapterWorkflowRequest: " + request)
+		execution.setVariable("sdncAdapterWorkflowRequest", request)
+	}
+
+	public void preProcessSDNCDeactivateRequest(DelegateExecution execution){
+		
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessSDNCDeactivateRequest")
+		
+		def serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId")
+	
+		try{
+			//Build SDNC Request
+			
+			String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate")
+	
+			deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest)
+			execution.setVariable("DCVFMR_deactivateSDNCRequest", deactivateSDNCRequest)
+			msoLogger.debug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest)
+	
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessSDNCDeactivateRequest.", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED preProcessSDNCDeactivateRequest")
+	}
+
+	public void preProcessSDNCUnassignRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessSDNCUnassignRequest Process")
+		try{
+			String serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId")
+	
+			String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign")
+	
+			execution.setVariable("DCVFMR_unassignSDNCRequest", unassignSDNCRequest)
+			msoLogger.debug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest)
+	
+		}catch(Exception e){
+			msoLogger.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during  preProcessSDNCUnassignRequest Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED  preProcessSDNCUnassignRequest Process")
+	}
+
+	public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
+	
+			String uuid = execution.getVariable('testReqId') // for junits
+			if(uuid==null){
+				uuid = execution.getVariable("DCVFMR_requestId") + "-" +  	System.currentTimeMillis()
+			}
+			def callbackURL = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			def requestId = execution.getVariable("DCVFMR_requestId")
+			def serviceId = execution.getVariable("DCVFMR_serviceId")
+			def serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId")
+			def vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
+			def source = execution.getVariable("DCVFMR_source")
+			def vnfId = execution.getVariable("DCVFMR_vnfId")
+				
+			def sdncVersion = execution.getVariable("sdncVersion")
+			
+			String sdncRequest =
+			"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap.so/workflow/sdnc/adapter/schema/v1">
+	   <sdncadapter:RequestHeader>
+				<sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId>
+				<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId>
+				<sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction>
+				<sdncadapter:SvcOperation>vf-module-topology-operation</sdncadapter:SvcOperation>
+				<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl>
+				<sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+		</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+		<request-information>
+			<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+			<request-action>DeleteVfModuleInstance</request-action>
+			<source>${MsoUtils.xmlEscape(source)}</source>
+			<notification-url/>
+			<order-number/>
+			<order-version/>
+		</request-information>
+		<service-information>
+			<service-id/>
+			<subscription-service-type/>			
+			<service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+			<global-customer-id/>
+		</service-information>
+		<vnf-information>
+			<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+			<vnf-type/>			
+		</vnf-information>
+		<vf-module-information>
+			<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+		</vf-module-information>
+		<vf-module-request-input/>		
+	</sdncadapterworkflow:SDNCRequestData>
+	</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+	
+		msoLogger.debug("sdncRequest:  " + sdncRequest)
+		return sdncRequest
+	}
+	
+	// parse the incoming DELETE_VF_MODULE request
+	// and formulate the outgoing VnfAdapterDeleteV1 request
+	public void prepVNFAdapterRequest(DelegateExecution execution) {
+		
+		String requestId = UUID.randomUUID().toString()
+		String origRequestId = execution.getVariable("DCVFMR_requestId")
+		String srvInstId = execution.getVariable("DCVFMR_serviceInstanceId")
+		String aicCloudRegion = execution.getVariable("DCVFMR_cloudSiteId")
+		String vnfId = execution.getVariable("DCVFMR_vnfId")
+		String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
+		String vfModuleStackId = execution.getVariable("DCVFMR_heatStackId")
+		String tenantId = execution.getVariable("DCVFMR_tenantId")
+		def messageId = execution.getVariable('mso-request-id') + '-' +
+			System.currentTimeMillis()
+		def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
+		def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution)
+		if ('true'.equals(useQualifiedHostName)) {
+			notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
+		}
+
+		String request = """
+			<deleteVfModuleRequest>
+			    <cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId>
+			    <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
+			    <vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId>
+			    <vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId>
+			    <vfModuleStackId>${MsoUtils.xmlEscape(vfModuleStackId)}</vfModuleStackId>
+			    <skipAAI>true</skipAAI>
+			    <msoRequest>
+			        <requestId>${MsoUtils.xmlEscape(origRequestId)}</requestId>
+			        <serviceInstanceId>${MsoUtils.xmlEscape(srvInstId)}</serviceInstanceId>
+			    </msoRequest>
+			    <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
+			    <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
+			</deleteVfModuleRequest>
+			""" as String
+
+		msoLogger.debug("vnfAdapterRestV1Request: " + request)
+		execution.setVariable("vnfAdapterRestV1Request", request)
+	}
+
+	// parse the incoming DELETE_VF_MODULE request
+	// and formulate the outgoing UpdateAAIVfModuleRequest request
+	public void prepUpdateAAIVfModule(DelegateExecution execution) {
+		
+		String vnfId = execution.getVariable("DCVFMR_vnfId")
+		String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
+		// formulate the request for UpdateAAIVfModule
+		String request = """<UpdateAAIVfModuleRequest>
+								<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+								<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+								<heat-stack-id>DELETE</heat-stack-id>
+								<orchestration-status>deleted</orchestration-status>
+							</UpdateAAIVfModuleRequest>""" as String
+		msoLogger.debug("UpdateAAIVfModuleRequest :" + request)
+		execution.setVariable("UpdateAAIVfModuleRequest", request)
+	}
+	
+	// parse the incoming DELETE_VF_MODULE request
+	// and formulate the outgoing UpdateAAIVfModuleRequest request
+	public void prepUpdateAAIVfModuleToAssigned(DelegateExecution execution) {
+		
+		String vnfId = execution.getVariable("DCVFMR_vnfId")
+		String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
+		// formulate the request for UpdateAAIVfModule
+		String request = """<UpdateAAIVfModuleRequest>
+								<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+								<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+								<heat-stack-id></heat-stack-id>
+								<orchestration-status>Assigned</orchestration-status>
+							</UpdateAAIVfModuleRequest>""" as String
+		msoLogger.debug("UpdateAAIVfModuleRequest :" + request)
+		execution.setVariable("UpdateAAIVfModuleRequest", request)
+	}
+
+	// parse the incoming DELETE_VF_MODULE request
+	// and formulate the outgoing DeleteAAIVfModuleRequest request
+	public void prepDeleteAAIVfModule(DelegateExecution execution) {
+		
+		String vnfId = execution.getVariable("DCVFMR_vnfId")
+		String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
+		// formulate the request for UpdateAAIVfModule
+		String request = """<DeleteAAIVfModuleRequest>
+								<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+								<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+							</DeleteAAIVfModuleRequest>""" as String
+		msoLogger.debug("DeleteAAIVfModuleRequest :" + request)
+		execution.setVariable("DeleteAAIVfModuleRequest", request)
+	}
+
+	// generates a WorkflowException if
+	//		-
+	public void handleDoDeleteVfModuleFailure(DelegateExecution execution) {
+		
+		msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "AAI error occurred deleting the Generic Vnf"+ execution.getVariable("DoDVfMod_deleteGenericVnfResponse"), "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError);
+		String processKey = getProcessKey(execution);
+		exceptionUtil.buildWorkflowException(execution, 5000, "Failure in DoDeleteVfModule")
+
+	}
+
+	public void sdncValidateResponse(DelegateExecution execution, String response){
+		
+		execution.setVariable("prefix",Prefix)
+
+		WorkflowException workflowException = execution.getVariable("WorkflowException")
+		boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+
+		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+		sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+		if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+			msoLogger.debug("Successfully Validated SDNC Response")
+		}else{
+			throw new BpmnError("MSOWorkflowException")
+		}
+	}
+
+	public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' +
+		'execution=' + execution.getId() +
+		')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED deleteNetworkPoliciesFromAAI")
+
+		try {
+			// get variables
+			List fqdnList = execution.getVariable(Prefix + "createdNetworkPolicyFqdnList")
+			if (fqdnList == null) {
+				msoLogger.debug("No network policies to delete")
+				return
+			}
+			int fqdnCount = fqdnList.size()
+
+			execution.setVariable(Prefix + "networkPolicyFqdnCount", fqdnCount)
+			msoLogger.debug("networkPolicyFqdnCount - " + fqdnCount)
+
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String aai_uri = aaiUriUtil.getNetworkPolicyUri(execution)
+
+			if (fqdnCount > 0) {
+				// AII loop call over contrail network policy fqdn list
+				for (i in 0..fqdnCount-1) {
+
+					int counting = i+1
+					String fqdn = fqdnList[i]
+
+					// Query AAI for this network policy FQDN
+
+					String queryNetworkPolicyByFqdnAAIRequest = "${aai_endpoint}${aai_uri}?network-policy-fqdn=" + UriUtils.encode(fqdn, "UTF-8")
+					msoLogger.debug("AAI request endpoint: "  + queryNetworkPolicyByFqdnAAIRequest)
+
+					def aaiRequestId = UUID.randomUUID().toString()
+					APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryNetworkPolicyByFqdnAAIRequest)
+					int returnCode = response.getStatusCode()
+					execution.setVariable(Prefix + "aaiQueryNetworkPolicyByFqdnReturnCode", returnCode)
+					msoLogger.debug("AAI query network policy Response Code, NetworkPolicy #" + counting + " : " + returnCode)
+
+					String aaiResponseAsString = response.getResponseBodyAsString()
+
+					if (isOneOf(returnCode, 200, 201)) {
+						msoLogger.debug("The return code is: "  + returnCode)
+						// This network policy FQDN exists in AAI - need to delete it now
+						execution.setVariable(Prefix + "queryNetworkPolicyByFqdnAAIResponse", aaiResponseAsString)
+						msoLogger.debug("QueryAAINetworkPolicyByFQDN Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsString)
+						// Retrieve the network policy id for this FQDN
+						def networkPolicyId = utils.getNodeText(aaiResponseAsString, "network-policy-id")
+						msoLogger.debug("Deleting network-policy with network-policy-id " + networkPolicyId)
+
+						// Retrieve the resource version for this network policy
+						def resourceVersion = utils.getNodeText(aaiResponseAsString, "resource-version")
+						msoLogger.debug("Deleting network-policy with resource-version " + resourceVersion)
+
+						String delNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + UriUtils.encode(networkPolicyId, "UTF-8") +
+							"?resource-version=" + UriUtils.encode(resourceVersion, "UTF-8")
+
+						msoLogger.debug("AAI request endpoint: " + delNetworkPolicyAAIRequest)
+
+						def aaiRequestIdDel = UUID.randomUUID().toString()
+						msoLogger.debug("Sending DELETE call to AAI with Endpoint /n" + delNetworkPolicyAAIRequest)
+
+						APIResponse responseDel = aaiUriUtil.executeAAIDeleteCall(execution, delNetworkPolicyAAIRequest)
+
+						int returnCodeDel = responseDel.getStatusCode()
+						execution.setVariable(Prefix + "aaiDeleteNetworkPolicyReturnCode", returnCodeDel)
+						msoLogger.debug("AAI delete network policy Response Code, NetworkPolicy #" + counting + " : " + returnCodeDel)
+
+						if (isOneOf(returnCodeDel, 200, 201, 204)) {
+							msoLogger.debug("The return code from deleting network policy is: "  + returnCodeDel)
+							// This network policy was deleted from AAI successfully
+							msoLogger.debug(" DelAAINetworkPolicy Success REST Response, , NetworkPolicy #" + counting + " : ")
+
+						} else {
+								// aai all errors
+								String delErrorMessage = "Unable to delete network-policy to AAI deleteNetworkPoliciesFromAAI - " + returnCodeDel
+							 msoLogger.debug(delErrorMessage)
+							 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, delErrorMessage)
+						}
+					} else if (returnCode == 404) {
+						// This network policy FQDN is not in AAI. No need to delete.
+						msoLogger.debug("The return code is: "  + returnCode)
+						msoLogger.debug("This network policy FQDN is not in AAI: " + fqdn)
+					} else {
+					   if (aaiResponseAsString.contains("RESTFault")) {
+						   WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+						   execution.setVariable("WorkflowException", exceptionObject)
+						   throw new BpmnError("MSOWorkflowException")
+
+						   } else {
+								// aai all errors
+								String dataErrorMessage = "Unexpected Response from deleteNetworkPoliciesFromAAI - " + returnCode
+								msoLogger.debug(dataErrorMessage)
+								exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+						  }
+					}
+
+
+
+				} // end loop
+
+
+			} else {
+				   msoLogger.debug("No contrail network policies to query/create")
+
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DoCreateVfModuleRollback flow. deleteNetworkPoliciesFromAAI() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+
+	}
+
+
+	/**
+	 * Prepare a Request for invoking the UpdateAAIGenericVnf subflow.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void preProcessUpdateAAIGenericVnf(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessUpdateAAIGenericVnf((' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def vnfId = execution.getVariable('DCVFMR_vnfId')
+			def oamManagementV4Address = execution.getVariable(Prefix + 'oamManagementV4Address')
+			def oamManagementV6Address = execution.getVariable(Prefix + 'oamManagementV6Address')
+			def ipv4OamAddressElement = ''
+			def managementV6AddressElement = ''
+
+			if (oamManagementV4Address != null) {
+				ipv4OamAddressElement = '<ipv4-oam-address>' + 'DELETE' + '</ipv4-oam-address>'
+			}
+
+			if (oamManagementV6Address != null) {
+				managementV6AddressElement = '<management-v6-address>' + 'DELETE' + '</management-v6-address>'
+			}
+
+
+			String updateAAIGenericVnfRequest = """
+					<UpdateAAIGenericVnfRequest>
+						<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+						${ipv4OamAddressElement}
+						${managementV6AddressElement}
+					</UpdateAAIGenericVnfRequest>
+				"""
+				updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest)
+				execution.setVariable(Prefix + 'updateAAIGenericVnfRequest', updateAAIGenericVnfRequest)
+				msoLogger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest)
+
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preProcessUpdateAAIGenericVnf((): ' + e.getMessage())
+		}
+	}
+	
+	public void setSuccessfulRollbackStatus (DelegateExecution execution){
+		
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED setSuccessfulRollbackStatus")
+	
+		try{
+			// Set rolledBack to true, rollbackError to null
+			execution.setVariable("rolledBack", true)
+			execution.setVariable("rollbackError", null)
+	
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing setSuccessfulRollbackStatus.", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setSuccessfulRollbackStatus Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED setSuccessfulRollbackStatus")
+	}
+	
+	public void setFailedRollbackStatus (DelegateExecution execution){
+		
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED setFailedRollbackStatus")
+	
+		try{
+			// Set rolledBack to false, rollbackError to actual value, rollbackData to null
+			execution.setVariable("rolledBack", false)
+			execution.setVariable("rollbackError", 'Caught exception in DoCreateVfModuleRollback')
+			execution.setVariable("rollbackData", null)
+	
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing setFailedRollbackStatus.", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setFailedRollbackStatus Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED setFailedRollbackStatus")
+	}
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy
new file mode 100644
index 0000000..5995b6b
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy
@@ -0,0 +1,242 @@
+/*
+ * ============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.onap.so.bpmn.infrastructure.scripts;
+
+import groovy.xml.XmlUtil
+
+import groovy.json.*
+
+
+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.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.rest.APIResponse
+import org.springframework.web.util.UriUtils
+import org.onap.so.logger.MsoLogger
+import org.onap.so.logger.MessageEnum
+
+
+public class DoCreateVfModuleVolumeRollback extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateVfModuleVolumeRollback.class);
+	
+	String Prefix="DCVFMODVOLRBK_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils(this)
+
+	def className = getClass().getSimpleName()
+	
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>DoCreateVfModuleVolumeRollback.bpmn</class> process.
+	 * @param execution
+	 */
+	public InitializeProcessVariables(DelegateExecution execution){
+		/* Initialize all the process variables in this block */
+
+		execution.setVariable(Prefix + "volumeGroupName", null)
+		execution.setVariable(Prefix + "lcpCloudRegionId", null)
+		execution.setVariable(Prefix + "rollbackVnfARequest", null)
+
+	}
+
+	// **************************************************
+	//     Pre or Prepare Request Section
+	// **************************************************
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>DoCreateVfModuleVolumeRollback.bpmn</class> process.
+	 * @param execution
+	 */
+	public void preProcessRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		InitializeProcessVariables(execution)
+//		rollbackData.put("DCVFMODULEVOL", "aiccloudregion", cloudSiteId)
+		RollbackData rollbackData = execution.getVariable("rollbackData")
+		
+//		String vnfId = rollbackData.get("DCVFMODULEVOL", "vnfid")
+//		execution.setVariable("DCVFMODVOLRBK_vnfId", vnfId)
+//		String vfModuleId = rollbackData.get("DCVFMODULEVOL", "vfmoduleid")
+//		execution.setVariable("DCVFMODVOLRBK_vfModuleId", vfModuleId)
+//		String source = rollbackData.get("DCVFMODULEVOL", "source")
+//		execution.setVariable("DCVFMODVOLRBK_source", source)
+//		String serviceInstanceId = rollbackData.get("DCVFMODULEVOL", "serviceInstanceId")
+//		execution.setVariable("DCVFMODVOLRBK_serviceInstanceId", serviceInstanceId)
+//		String serviceId = rollbackData.get("DCVFMODULEVOL", "service-id")
+//		execution.setVariable("DCVFMODVOLRBK_serviceId", serviceId)
+//		String vnfType = rollbackData.get("DCVFMODULEVOL", "vnftype")
+//		execution.setVariable("DCVFMODVOLRBK_vnfType", vnfType)
+//		String vnfName = rollbackData.get("DCVFMODULEVOL", "vnfname")
+//		execution.setVariable("DCVFMODVOLRBK_vnfName", vnfName)
+//		String tenantId = rollbackData.get("DCVFMODULEVOL", "tenantid")
+//		execution.setVariable("DCVFMODVOLRBK_tenantId", tenantId)
+//		String vfModuleName = rollbackData.get("DCVFMODULEVOL", "vfmodulename")
+//		execution.setVariable("DCVFMODVOLRBK_vfModuleName", vfModuleName)
+//		String vfModuleModelName = rollbackData.get("DCVFMODULEVOL", "vfmodulemodelname")
+//		execution.setVariable("DCVFMODVOLRBK_vfModuleModelName", vfModuleModelName)
+//		String cloudSiteId = rollbackData.get("DCVFMODULEVOL", "aiccloudregion")
+//		execution.setVariable("DCVFMODVOLRBK_cloudSiteId", cloudSiteId)
+//		String heatStackId = rollbackData.get("DCVFMODULEVOL", "heatstackid")
+//		execution.setVariable("DCVFMODVOLRBK_heatStackId", heatStackId)
+//		String requestId = rollbackData.get("DCVFMODULEVOL", "msorequestid")
+//		execution.setVariable("DCVFMODVOLRBK_requestId", requestId)
+		
+		String volumeGroupName = rollbackData.get("DCVFMODULEVOL", "volumeGroupName")
+		execution.setVariable("DCVFMODVOLRBK_volumeGroupName", volumeGroupName)
+
+		String lcpCloudRegionId = rollbackData.get("DCVFMODULEVOL", "aiccloudregion")
+		execution.setVariable("DCVFMODVOLRBK_lcpCloudRegionId", lcpCloudRegionId)
+		
+		execution.setVariable("DCVFMODVOLRBK_rollbackVnfARequest", rollbackData.get("DCVFMODULEVOL", "rollbackVnfARequest"))
+		execution.setVariable("DCVFMODVOLRBK_backoutOnFailure", rollbackData.get("DCVFMODULEVOL", "backoutOnFailure"))
+		execution.setVariable("DCVFMODVOLRBK_isCreateVnfRollbackNeeded", rollbackData.get("DCVFMODULEVOL", "isCreateVnfRollbackNeeded"))
+		execution.setVariable("DCVFMODVOLRBK_isAAIRollbackNeeded", rollbackData.get("DCVFMODULEVOL", "isAAIRollbackNeeded"))
+
+	}
+	
+	/**
+	 * Query AAI volume group by name
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void callRESTQueryAAIVolGrpName(DelegateExecution execution, isDebugEnabled) {
+		
+		def volumeGroupName = execution.getVariable('DCVFMODVOLRBK_volumeGroupName')
+		def cloudRegion = execution.getVariable('DCVFMODVOLRBK_lcpCloudRegionId')
+		
+		// This is for stub testing
+		def testVolumeGroupName = execution.getVariable('test-volume-group-name')
+		if (testVolumeGroupName != null && testVolumeGroupName.length() > 0) {
+			volumeGroupName = testVolumeGroupName
+		}
+		
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+		String queryAAIVolumeNameRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups" + "?volume-group-name=" + UriUtils.encode(volumeGroupName, 'UTF-8')
+
+		msoLogger.debug('Query AAI volume group by name: ' + queryAAIVolumeNameRequest)
+		
+		APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIVolumeNameRequest)
+		
+		String returnCode = response.getStatusCode()
+		String aaiResponseAsString = response.getResponseBodyAsString()
+		
+		msoLogger.debug("AAI query volume group by name return code: " + returnCode)
+		msoLogger.debug("AAI query volume group by name response: " + aaiResponseAsString)
+
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+		execution.setVariable(prefix+"queryAAIVolGrpNameResponse", aaiResponseAsString)
+		execution.setVariable(prefix+'AaiReturnCode', returnCode)
+
+		if (returnCode=='200') {
+			// @TODO: verify error code
+			// @TODO: create class of literals representing error codes
+			execution.setVariable(prefix+'queryAAIVolGrpNameResponse', aaiResponseAsString)
+			msoLogger.debug("Volume Group Name $volumeGroupName exists in AAI.")
+		} else {
+			if (returnCode=='404') {
+				msoLogger.debug("Volume Group Name $volumeGroupName does not exist in AAI.")
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume group $volumeGroupName not found in AAI. Response code: 404")
+			} else {
+				WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}
+	}
+	
+	
+	
+	public void callRESTDeleteAAIVolumeGroup(DelegateExecution execution, isDebugEnabled) {
+
+		callRESTQueryAAIVolGrpName(execution, isDebugEnabled)
+		
+		def queryAaiVolumeGroupResponse = execution.getVariable(prefix+'queryAAIVolGrpNameResponse')
+		
+		def volumeGroupId = utils.getNodeText(queryAaiVolumeGroupResponse, "volume-group-id")
+		def resourceVersion = utils.getNodeText(queryAaiVolumeGroupResponse, "resource-version")
+
+		def cloudRegion = execution.getVariable("DCVFMODVOLRBK_lcpCloudRegionId")
+		
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+		String deleteAAIVolumeGrpIdRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups/volume-group" + '/' +  volumeGroupId + "?resource-version=" + UriUtils.encode(resourceVersion, "UTF-8")
+
+		msoLogger.debug('Delete AAI volume group : ' + deleteAAIVolumeGrpIdRequest)
+		
+		APIResponse response = aaiUtil.executeAAIDeleteCall(execution, deleteAAIVolumeGrpIdRequest)
+		
+		String returnCode = response.getStatusCode()
+		String aaiResponseAsString = response.getResponseBodyAsString()
+		
+		msoLogger.debug("AAI delete volume group return code: " + returnCode)
+		msoLogger.debug("AAI delete volume group response: " + aaiResponseAsString)
+
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+		def volumeGroupNameFound = prefix+'volumeGroupNameFound'
+		if (returnCode=='200' || returnCode=='204' ) {
+			msoLogger.debug("Volume group $volumeGroupId deleted.")
+		} else {
+			if (returnCode=='404') {
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume group $volumeGroupId not found for delete in AAI Response code: 404")
+			} else {
+				WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}
+	}
+
+	// *******************************
+	//     Build Error Section
+	// *******************************
+
+
+	
+	public void processJavaException(DelegateExecution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		
+		try{
+			msoLogger.debug("Caught a Java Exception in " + Prefix)
+			msoLogger.debug("Started processJavaException Method")
+			msoLogger.debug("Variables List: " + execution.getVariables())
+			execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
+			
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during processJavaException Method: " + e)
+			execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix)
+		}
+		msoLogger.debug("Completed processJavaException Method in " + Prefix)
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2.groovy
new file mode 100644
index 0000000..f734ffb
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2.groovy
@@ -0,0 +1,616 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.NetworkUtils
+import org.onap.so.bpmn.common.scripts.VfModuleBase;
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils;
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.springframework.web.util.UriUtils
+
+class DoCreateVfModuleVolumeV2 extends VfModuleBase {
+
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateVfModuleVolumeV2.class);
+	String prefix='DCVFMODVOLV2_'
+	JsonUtils jsonUtil = new JsonUtils()
+
+
+    /**
+     * Perform initial processing, such as request validation, initialization of variables, etc.
+     * * @param execution
+     */
+    public void preProcessRequest(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+        preProcessRequest(execution, isDebugEnabled)
+    }
+
+    public void preProcessRequest(DelegateExecution execution, isDebugLogEnabled) {
+		
+		execution.setVariable("prefix",prefix)
+		execution.setVariable(prefix+'SuccessIndicator', false)
+		execution.setVariable(prefix+'isPONR', false)
+
+		displayInput(execution, isDebugLogEnabled)
+		setRollbackData(execution, isDebugLogEnabled)
+		setRollbackEnabled(execution, isDebugLogEnabled) 
+		
+		
+		def tenantId = execution.getVariable("tenantId")
+		if (tenantId == null) {
+			String cloudConfiguration = execution.getVariable("cloudConfiguration")
+			tenantId = jsonUtil.getJsonValue(cloudConfiguration, "cloudConfiguration.tenantId")
+			execution.setVariable("tenantId", tenantId)
+		}
+
+		def cloudSiteId = execution.getVariable("lcpCloudRegionId")
+		if (cloudSiteId == null) {
+			String cloudConfiguration = execution.getVariable("cloudConfiguration")
+			cloudSiteId = jsonUtil.getJsonValue(cloudConfiguration, "cloudConfiguration.lcpCloudRegionId")
+			execution.setVariable("lcpCloudRegionId", cloudSiteId)
+		}
+
+		// Extract attributes from modelInfo
+		String vfModuleModelInfo = execution.getVariable("vfModuleModelInfo")
+
+		//modelCustomizationUuid
+		def modelCustomizationUuid = jsonUtil.getJsonValue(vfModuleModelInfo, "modelCustomizationUuid")
+		execution.setVariable("modelCustomizationId", modelCustomizationUuid)
+		msoLogger.debug("modelCustomizationId: " + modelCustomizationUuid)
+		
+		//modelName
+		def modelName = jsonUtil.getJsonValue(vfModuleModelInfo, "modelName")
+		execution.setVariable("modelName", modelName)
+		msoLogger.debug("modelName: " + modelName)
+		
+		// The following is used on the get Generic Service Instance call
+		execution.setVariable('GENGS_type', 'service-instance')
+	}
+
+	
+	/**
+	 * Display input variables
+	 * @param execution
+	 * @param 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']
+
+		msoLogger.debug('Begin input: ')
+		input.each {
+			msoLogger.debug(it + ': ' + execution.getVariable(it))
+		}
+		msoLogger.debug('End input.')
+	}
+	
+	
+	/**
+	 * Define and set rollbackdata object 
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void setRollbackData(DelegateExecution execution, isDebugEnabled) {
+		def rollbackData = execution.getVariable("rollbackData")
+		if (rollbackData == null) {
+			rollbackData = new RollbackData()
+		}
+		def volumeGroupName = execution.getVariable('volumeGroupName')
+		rollbackData.put("DCVFMODULEVOL", "volumeGroupName", volumeGroupName)
+		execution.setVariable("rollbackData", rollbackData)
+	}
+	
+		
+	/**
+	 * validate getServiceInstance response
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void validateGetServiceInstanceCall(DelegateExecution execution, isDebugEnabled) {
+		def found = execution.getVariable('GENGS_FoundIndicator')
+		def success = execution.getVariable('GENGS_SuccessIndicator')
+		def serviceInstanceId = execution.getVariable('serviceInstanceId')
+		msoLogger.debug("getServiceInstance success: " + success)
+		msoLogger.debug("getServiceInstance found: " + found)
+		if(!found || !success) {
+			String errorMessage = "Service instance id not found in AAI: ${serviceInstanceId}."
+			msoLogger.debug(errorMessage)
+			(new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, errorMessage)
+		}
+		
+	}
+
+	/**
+	 * Get cloud region
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void callRESTQueryAAICloudRegion (DelegateExecution execution, isDebugEnabled) {
+
+		def cloudRegion = execution.getVariable("lcpCloudRegionId")
+		msoLogger.debug('Request cloud region is: ' + cloudRegion)
+
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+		String queryCloudRegionRequest = aaiEndpoint + '/' + cloudRegion
+
+		msoLogger.debug(queryCloudRegionRequest)
+
+		cloudRegion = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "PO", cloudRegion)
+
+		def aaiCloudRegion = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "AAI", cloudRegion)
+		if ((aaiCloudRegion != "ERROR")) {
+			execution.setVariable("lcpCloudRegionId", aaiCloudRegion)
+			msoLogger.debug("AIC Cloud Region for AAI: " + aaiCloudRegion)
+		} else {
+			String errorMessage = "AAI Query Cloud Region Unsuccessful. Return Code: " + execution.getVariable(prefix+"queryCloudRegionReturnCode")
+			msoLogger.debug(errorMessage)
+			(new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, errorMessage)
+		}
+		
+		def poCloudRegion = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "PO", cloudRegion)
+		if ((poCloudRegion != "ERROR")) {
+			execution.setVariable("poLcpCloudRegionId", poCloudRegion)
+			msoLogger.debug("AIC Cloud Region for PO: " + poCloudRegion)
+		} else {
+			String errorMessage = "AAI Query Cloud Region Unsuccessful. Return Code: " + execution.getVariable(prefix+"queryCloudRegionReturnCode")
+			msoLogger.debug(errorMessage)
+			(new ExceptionUtil()).buildAndThrowWorkflowException(execution, 2500, errorMessage)
+		}
+		
+		def rollbackData = execution.getVariable("rollbackData")
+		rollbackData.put("DCVFMODULEVOL", "aiccloudregion", cloudRegion)
+	}
+
+
+	/**
+	 * Query AAI volume group by name
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void callRESTQueryAAIVolGrpName(DelegateExecution execution, isDebugEnabled) {
+
+		def volumeGroupName = execution.getVariable('volumeGroupName')
+		def cloudRegion = execution.getVariable('lcpCloudRegionId')
+
+		// This is for stub testing
+		def testVolumeGroupName = execution.getVariable('test-volume-group-name')
+		if (testVolumeGroupName != null && testVolumeGroupName.length() > 0) {
+			volumeGroupName = testVolumeGroupName
+		}
+
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+		String queryAAIVolumeNameRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups" + "?volume-group-name=" + UriUtils.encode(volumeGroupName, 'UTF-8')
+
+		msoLogger.debug('Query AAI volume group by name: ' + queryAAIVolumeNameRequest)
+
+		APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIVolumeNameRequest)
+
+		String returnCode = response.getStatusCode()
+		String aaiResponseAsString = response.getResponseBodyAsString()
+
+		msoLogger.debug("AAI query volume group by name return code: " + returnCode)
+		msoLogger.debug("AAI query volume group by name response: " + aaiResponseAsString)
+
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+		execution.setVariable(prefix+"queryAAIVolGrpNameResponse", aaiResponseAsString)
+		execution.setVariable(prefix+'AaiReturnCode', returnCode)
+
+		if (returnCode=='200') {
+			execution.setVariable(prefix+'queryAAIVolGrpNameResponse', aaiResponseAsString)
+			msoLogger.debug("Volume Group Name $volumeGroupName exists in AAI.")
+		} else {
+			if (returnCode=='404') {
+				msoLogger.debug("Volume Group Name $volumeGroupName does not exist in AAI.")
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume group $volumeGroupName not found in AAI. Response code: 404")
+			} else {
+				WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}
+	}
+
+
+	/**
+	 * Create a WorkflowException 
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void buildWorkflowException(DelegateExecution execution, int errorCode, errorMessage, isDebugEnabled) {
+		msoLogger.debug(errorMessage)
+		(new ExceptionUtil()).buildWorkflowException(execution, 2500, errorMessage)
+	}
+
+
+	/**
+	 * Create a WorkflowException
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void handleError(DelegateExecution execution, isDebugEnabled) {
+		WorkflowException we = execution.getVariable('WorkflowException')
+		if (we == null) {
+			(new ExceptionUtil()).buildWorkflowException(execution, 2500, "Enexpected error encountered!")
+		}
+		throw new BpmnError("MSOWorkflowException")
+	}
+
+	
+	/**
+	 * Create volume group in AAI
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void callRESTCreateAAIVolGrpName(DelegateExecution execution, isDebugEnabled) {
+
+		def vnfId = execution.getVariable('vnfId')
+		def volumeGroupId = execution.getVariable('volumeGroupId')
+		def volumeName = execution.getVariable("volumeGroupName")
+		def modelCustomizationId = execution.getVariable("modelCustomizationId")
+		def vnfType = execution.getVariable("vnfType")
+		def tenantId = execution.getVariable("tenantId")
+		def cloudRegion = execution.getVariable('lcpCloudRegionId')
+		
+		msoLogger.debug("volumeGroupId: " + volumeGroupId)
+
+		def testGroupId = execution.getVariable('test-volume-group-id')
+		if (testGroupId != null && testGroupId.trim() != '') {
+			msoLogger.debug("test volumeGroupId is present: " + testGroupId)
+			volumeGroupId = testGroupId
+			execution.setVariable("test-volume-group-name", "MSOTESTVOL101a-vSAMP12_base_vol_module-0")
+		}
+
+		msoLogger.debug("volumeGroupId to be used: " + volumeGroupId)
+
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+		String createAAIVolumeGrpNameUrlRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups/volume-group/" + UriUtils.encode(volumeGroupId, "UTF-8")
+
+		String namespace =  aaiUtil.getNamespaceFromUri(aaiUtil.getCloudInfrastructureCloudRegionUri(execution))
+		msoLogger.debug("AAI namespace is: " + namespace)
+
+		msoLogger.debug("Request URL for PUT: " + createAAIVolumeGrpNameUrlRequest)
+
+		NetworkUtils networkUtils = new NetworkUtils()
+		String payload = networkUtils.createCloudRegionVolumeRequest(volumeGroupId, volumeName, vnfType, vnfId, tenantId, cloudRegion, namespace, modelCustomizationId)
+		String payloadXml = utils.formatXml(payload)
+		msoLogger.debug("Request payload for PUT: " + payloadXml)
+
+		APIResponse response = aaiUtil.executeAAIPutCall(execution, createAAIVolumeGrpNameUrlRequest, payloadXml)
+
+		String returnCode = response.getStatusCode()
+		String aaiResponseAsString = response.getResponseBodyAsString()
+
+		msoLogger.debug("AAI create volume group return code: " + returnCode)
+		msoLogger.debug("AAI create volume group response: " + aaiResponseAsString)
+
+		execution.setVariable(prefix+"createAAIVolumeGrpNameReturnCode", returnCode)
+		execution.setVariable(prefix+"createAAIVolumeGrpNameResponse", aaiResponseAsString)
+		
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+		if (returnCode =='201') {
+			RollbackData rollbackData = execution.getVariable("rollbackData")
+			rollbackData.put("DCVFMODULEVOL", "isAAIRollbackNeeded", "true")
+		} else {
+			execution.setVariable(prefix+"isErrorMessageException", true)
+			if (returnCode=='404') {
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Unable to create volume group in AAI. Response code: 404")
+			} else {
+				WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+				msoLogger.debug(" AAI Adapter Query Failed.  WorkflowException - " + "\n" + aWorkflowException)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}
+	}
+	
+
+	/**
+	 * Prepare VNF adapter create request XML
+	 * @param execution
+	 */
+	public void prepareVnfAdapterCreateRequest(DelegateExecution execution, isDebugEnabled) {
+
+		def aaiGenericVnfResponse = execution.getVariable(prefix+'AAIQueryGenericVfnResponse')
+		def vnfId = utils.getNodeText(aaiGenericVnfResponse, 'vnf-id')
+		def vnfName = utils.getNodeText(aaiGenericVnfResponse, 'vnf-name')
+		def vnfType = utils.getNodeText(aaiGenericVnfResponse, "vnf-type")
+		
+		def requestId = execution.getVariable('msoRequestId')
+		def serviceId = execution.getVariable('serviceInstanceId')
+		def cloudSiteId = execution.getVariable('poLcpCloudRegionId')
+		def tenantId = execution.getVariable('tenantId')
+		def volumeGroupId = execution.getVariable('volumeGroupId')
+		def volumeGroupnName = execution.getVariable('volumeGroupName')
+
+		def vnfVersion = execution.getVariable("asdcServiceModelVersion") 
+		def vnfModuleType = execution.getVariable("modelName")
+
+		def modelCustomizationId = execution.getVariable("modelCustomizationId")
+		
+		// for testing
+		msoLogger.debug("volumeGroupId: " + volumeGroupId)
+		def testGroupId = execution.getVariable('test-volume-group-id')
+		if (testGroupId != null && testGroupId.trim() != '') {
+			msoLogger.debug("test volumeGroupId is present: " + testGroupId)
+			volumeGroupId = testGroupId
+			execution.setVariable("test-volume-group-name", "MSOTESTVOL101a-vSAMP12_base_vol_module-0")
+		}
+		msoLogger.debug("volumeGroupId to be used: " + volumeGroupId)
+				
+		// volume group parameters
+		
+		String volumeGroupParams = ''
+		StringBuilder sbParams = new StringBuilder()
+		Map<String, String> paramsMap = execution.getVariable("vfModuleInputParams")
+		for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
+			String paramsXml
+			String paramName = entry.getKey();
+			String paramValue = entry.getValue()
+			paramsXml =
+				"""	<entry>
+			   <key>${MsoUtils.xmlEscape(paramName)}</key>
+			   <value>${MsoUtils.xmlEscape(paramValue)}</value>
+			</entry>
+			"""
+			sbParams.append(paramsXml)
+		}
+
+		volumeGroupParams = sbParams.toString()
+		msoLogger.debug("volumeGroupParams: "+ volumeGroupParams)
+
+		def backoutOnFailure = execution.getVariable(prefix+"backoutOnFailure")
+		msoLogger.debug("backoutOnFailure: "+ backoutOnFailure)
+
+		def failIfExists = execution.getVariable("failIfExists")
+		if(failIfExists == null) {
+			failIfExists = 'true'
+		}
+		
+		String messageId = UUID.randomUUID()
+		msoLogger.debug("messageId to be used is generated: " + messageId)
+		
+		def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
+		def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution)
+		if ('true'.equals(useQualifiedHostName)) {
+			notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
+		}
+		msoLogger.debug("CreateVfModuleVolume - notificationUrl: "+ notificationUrl)
+		
+		// build request
+		String vnfSubCreateWorkflowRequest =
+				"""
+			<createVolumeGroupRequest>
+				<cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId>
+				<tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
+				<vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId>
+				<vnfName>${MsoUtils.xmlEscape(vnfName)}</vnfName>
+				<volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId>
+				<volumeGroupName>${MsoUtils.xmlEscape(volumeGroupnName)}</volumeGroupName>
+				<vnfType>${MsoUtils.xmlEscape(vnfType)}</vnfType>
+				<vnfVersion>${MsoUtils.xmlEscape(vnfVersion)}</vnfVersion>
+				<vfModuleType>${MsoUtils.xmlEscape(vnfModuleType)}</vfModuleType>
+				<modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationId)}</modelCustomizationUuid>
+				<volumeGroupParams>
+					<entry>
+						<key>vnf_id</key>
+						<value>${MsoUtils.xmlEscape(vnfId)}</value>
+					</entry>
+					<entry>
+						<key>vnf_name</key>
+						<value>${MsoUtils.xmlEscape(vnfName)}</value>
+					</entry>
+					<entry>
+						<key>vf_module_id</key>
+						<value>${MsoUtils.xmlEscape(volumeGroupId)}</value>
+					</entry>
+					<entry>
+						<key>vf_module_name</key>
+						<value>${MsoUtils.xmlEscape(volumeGroupnName)}</value>
+					</entry>
+					${volumeGroupParams}
+			    </volumeGroupParams>
+				<skipAAI>true</skipAAI>
+				<backout>${MsoUtils.xmlEscape(backoutOnFailure)}</backout>
+				<failIfExists>${MsoUtils.xmlEscape(failIfExists)}</failIfExists>
+			    <msoRequest>
+			        <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+			        <serviceInstanceId>${MsoUtils.xmlEscape(serviceId)}</serviceInstanceId>
+			    </msoRequest>
+			    <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
+			    <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
+			</createVolumeGroupRequest>
+		"""
+
+		String vnfSubCreateWorkflowRequestAsString = utils.formatXml(vnfSubCreateWorkflowRequest)
+		msoLogger.debug(vnfSubCreateWorkflowRequestAsString)
+		msoLogger.debug(vnfSubCreateWorkflowRequestAsString)
+		execution.setVariable(prefix+"createVnfARequest", vnfSubCreateWorkflowRequestAsString)
+
+		// build rollback request for use later if needed
+		String vnfSubRollbackWorkflowRequest = buildRollbackVolumeGroupRequestXml(volumeGroupId, cloudSiteId, tenantId, requestId, serviceId, messageId, notificationUrl)
+
+		msoLogger.debug("Sub Vnf flow rollback request: vnfSubRollbackWorkflowRequest " + "\n" + vnfSubRollbackWorkflowRequest)
+
+		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>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId>
+			   <volumeGroupStackId>{{VOLUMEGROUPSTACKID}}</volumeGroupStackId>
+			   <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
+			   <cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId>
+			   <volumeGroupCreated>true</volumeGroupCreated>
+			   <msoRequest>
+			      <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+			      <serviceInstanceId>${MsoUtils.xmlEscape(serviceId)}</serviceInstanceId>
+			   </msoRequest>
+			   <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
+			</volumeGroupRollback>
+			<skipAAI>true</skipAAI>
+			<notificationUrl>${MsoUtils.xmlEscape(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(DelegateExecution execution, isDebugEnabled) {
+		def vnfSuccess = execution.getVariable('VNFREST_SuccessIndicator')
+		msoLogger.debug("vnfAdapterSuccessIndicator: "+ vnfSuccess)
+		if(vnfSuccess==true) {
+			String createVnfAResponse = execution.getVariable(prefix+"createVnfAResponse")
+			String heatStackID = utils.getNodeText(createVnfAResponse, "volumeGroupStackId")
+			String vnfRollbackRequest = execution.getVariable(prefix+"rollbackVnfARequest")
+			String updatedVnfRollbackRequest = updateRollbackVolumeGroupRequestXml(vnfRollbackRequest, heatStackID)
+			msoLogger.debug("vnfAdapter rollback request: "+ updatedVnfRollbackRequest)
+			RollbackData rollbackData = execution.getVariable("rollbackData")
+			rollbackData.put("DCVFMODULEVOL", "rollbackVnfARequest", updatedVnfRollbackRequest)
+			rollbackData.put("DCVFMODULEVOL", "isCreateVnfRollbackNeeded", "true")
+		}
+	}
+	
+
+	/**
+	 * Update voulume group in AAI 
+	 * @TODO: Can we re-use the create method??
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void callRESTUpdateCreatedVolGrpName(DelegateExecution execution, isDebugEnabled) {
+
+		String requeryAAIVolGrpNameResponse = execution.getVariable(prefix+"queryAAIVolGrpNameResponse")
+		String volumeGroupId = utils.getNodeText(requeryAAIVolGrpNameResponse, "volume-group-id")
+		String modelCustomizationId = execution.getVariable("modelCustomizationId")  
+		String cloudRegion = execution.getVariable("lcpCloudRegionId")
+
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+		String updateAAIVolumeGroupUrlRequest = aaiEndpoint + '/' + cloudRegion + "/volume-groups/volume-group/" + UriUtils.encode(volumeGroupId, 'UTF-8')
+
+		String namespace =  aaiUtil.getNamespaceFromUri(aaiUtil.getCloudInfrastructureCloudRegionUri(execution))
+
+		msoLogger.debug("updateAAIVolumeGroupUrlRequest - " +  updateAAIVolumeGroupUrlRequest)
+
+		String createVnfAResponse = execution.getVariable(prefix+"createVnfAResponse")
+		def heatStackID = utils.getNodeText(createVnfAResponse, "volumeGroupStackId")
+		
+		execution.setVariable(prefix+"heatStackId", heatStackID)
+
+		NetworkUtils networkUtils = new NetworkUtils()
+		String payload = networkUtils.updateCloudRegionVolumeRequest(requeryAAIVolGrpNameResponse, heatStackID, namespace, modelCustomizationId)
+		String payloadXml = utils.formatXml(payload)
+
+		msoLogger.debug("Payload to Update Created VolumeGroupName - " + "\n" + payloadXml)
+
+		APIResponse response = aaiUtil.executeAAIPutCall(execution, updateAAIVolumeGroupUrlRequest, payloadXml)
+
+		String returnCode = response.getStatusCode()
+		String aaiResponseAsString = response.getResponseBodyAsString()
+
+		msoLogger.debug("AAI create volume group return code: " + returnCode)
+		msoLogger.debug("AAI create volume group response: " + aaiResponseAsString)
+
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+		if (returnCode =='200') {
+			execution.setVariable(prefix+"updateCreatedAAIVolumeGrpNameResponse", aaiResponseAsString)
+			execution.setVariable(prefix+"isPONR", true)
+		} else {
+			execution.setVariable(prefix+"isErrorMessageException", true)
+			if (returnCode=='404') {
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Unable to update volume group in AAI. Response code: 404")
+			} else {
+				WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+				msoLogger.debug(" AAI Adapter Query Failed.  WorkflowException - " + "\n" + aWorkflowException)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}
+	}
+
+
+	/**
+	 * Query AAI Generic VNF
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void callRESTQueryAAIGenericVnf(DelegateExecution execution, isDebugEnabled) {
+
+		def vnfId = execution.getVariable('vnfId')
+
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aaiEndpoint = aaiUtil.getNetworkGenericVnfEndpoint(execution)
+		def String queryAAIRequest = aaiEndpoint + "/" + UriUtils.encode(vnfId, "UTF-8")
+
+		msoLogger.debug("AAI query generic vnf request: " + queryAAIRequest)
+
+		APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIRequest)
+
+		String returnCode = response.getStatusCode()
+		String aaiResponseAsString = response.getResponseBodyAsString()
+
+		msoLogger.debug("AAI query generic vnf return code: " + returnCode)
+		msoLogger.debug("AAI query generic vnf response: " + aaiResponseAsString)
+
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+		if (returnCode=='200') {
+			msoLogger.debug('Generic vnf ' + vnfId + ' found in AAI.')
+			execution.setVariable(prefix+'AAIQueryGenericVfnResponse', aaiResponseAsString)
+		} else {
+			if (returnCode=='404') {
+				def message = 'Generic vnf ' + vnfId + ' was not found in AAI. Return code: 404.'
+				msoLogger.debug(message)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, message)
+			} else {
+				WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnf.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnf.groovy
new file mode 100644
index 0000000..46a502e
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnf.groovy
@@ -0,0 +1,618 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import static org.apache.commons.lang3.StringUtils.*
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.domain.VnfResource
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.client.aai.AAIObjectType;
+import org.onap.so.client.aai.AAIResourcesClient
+import org.onap.so.client.aai.entities.AAIResultWrapper
+import org.onap.so.client.aai.entities.uri.AAIResourceUri
+import org.onap.so.client.aai.entities.uri.AAIUriFactory;
+import org.springframework.web.util.UriUtils
+
+
+/**
+ * This class supports the DoCreateVnf building block subflow
+ * with the creation of a generic vnf for
+ * infrastructure.
+ *
+ */
+class DoCreateVnf extends AbstractServiceTaskProcessor {
+
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateVnf.class);
+	String Prefix="DoCVNF_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils(this)
+	SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+
+	/**
+	 * This method gets and validates the incoming
+	 * request.
+	 *
+	 * @param - execution
+	 *
+	 */
+	public void preProcessRequest(DelegateExecution execution) {
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		msoLogger.debug("STARTED DoCreateVnf PreProcessRequest Process")
+
+		// DISABLE SDNC INTERACTION FOR NOW
+		execution.setVariable("SDNCInteractionEnabled", false)
+
+
+		/*******************/
+		try{
+			// Get Variables
+
+			def rollbackData = execution.getVariable("rollbackData")
+			if (rollbackData == null) {
+				rollbackData = new RollbackData()
+			}
+
+			String vnfModelInfo = execution.getVariable("vnfModelInfo")
+			String serviceModelInfo = execution.getVariable("serviceModelInfo")
+
+			String requestId = execution.getVariable("msoRequestId")
+			execution.setVariable("DoCVNF_requestId", requestId)
+			execution.setVariable("mso-request-id", requestId)
+			msoLogger.debug("Incoming Request Id is: " + requestId)
+
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			execution.setVariable("DoCVNF_serviceInstanceId", serviceInstanceId)
+			rollbackData.put("VNF", "serviceInstanceId", serviceInstanceId)
+			msoLogger.debug("Incoming Service Instance Id is: " + serviceInstanceId)
+
+			String vnfType = execution.getVariable("vnfType")
+			execution.setVariable("DoCVNF_vnfType", vnfType)
+			msoLogger.debug("Incoming Vnf Type is: " + vnfType)
+
+			String vnfName = execution.getVariable("vnfName")
+			if (vnfName.equals("") || vnfName.equals("null")) {
+				vnfName = null
+			}
+			execution.setVariable("DoCVNF_vnfName", vnfName)
+			msoLogger.debug("Incoming Vnf Name is: " + vnfName)
+
+			String serviceId = execution.getVariable("productFamilyId")
+			execution.setVariable("DoCVNF_serviceId", serviceId)
+			msoLogger.debug("Incoming Service Id is: " + serviceId)
+
+			String source = "VID"
+			execution.setVariable("DoCVNF_source", source)
+			rollbackData.put("VNF", "source", source)
+			msoLogger.debug("Incoming Source is: " + source)
+
+			String suppressRollback = execution.getVariable("disableRollback")
+			execution.setVariable("DoCVNF_suppressRollback", suppressRollback)
+			msoLogger.debug("Incoming Suppress Rollback is: " + suppressRollback)
+
+			String modelInvariantId = jsonUtil.getJsonValue(vnfModelInfo, "modelInvariantUuid")
+			execution.setVariable("DoCVNF_modelInvariantId", modelInvariantId)
+			msoLogger.debug("Incoming Invariant Id is: " + modelInvariantId)
+
+			String modelVersionId = jsonUtil.getJsonValue(vnfModelInfo, "modelUuid")
+			if (modelVersionId == null) {
+				modelVersionId = ""
+			}
+			execution.setVariable("DoCVNF_modelVersionId", modelVersionId)
+			msoLogger.debug("Incoming Version Id is: " + modelVersionId)
+
+			String modelVersion = jsonUtil.getJsonValue(vnfModelInfo, "modelVersion")
+			execution.setVariable("DoCVNF_modelVersion", modelVersion)
+			msoLogger.debug("Incoming Model Version is: " + modelVersion)
+
+			String modelName = jsonUtil.getJsonValue(vnfModelInfo, "modelName")
+			execution.setVariable("DoCVNF_modelName", modelName)
+			msoLogger.debug("Incoming Model Name is: " + modelName)
+
+			String modelCustomizationId = jsonUtil.getJsonValue(vnfModelInfo, "modelCustomizationUuid")
+			if (modelCustomizationId == null) {
+				modelCustomizationId = ""
+			}
+			execution.setVariable("DoCVNF_modelCustomizationId", modelCustomizationId)
+			msoLogger.debug("Incoming Model Customization Id is: " + modelCustomizationId)
+
+			String cloudSiteId = execution.getVariable("lcpCloudRegionId")
+			execution.setVariable("DoCVNF_cloudSiteId", cloudSiteId)
+			rollbackData.put("VNF", "cloudSiteId", cloudSiteId)
+			msoLogger.debug("Incoming Cloud Site Id is: " + cloudSiteId)
+
+			String tenantId = execution.getVariable("tenantId")
+			execution.setVariable("DoCVNF_tenantId", tenantId)
+			rollbackData.put("VNF", "tenantId", tenantId)
+			msoLogger.debug("Incoming Tenant Id is: " + tenantId)
+
+			String globalSubscriberId = execution.getVariable("globalSubscriberId")
+			if (globalSubscriberId == null) {
+				globalSubscriberId = ""
+			}
+			execution.setVariable("DoCVNF_globalSubscriberId", globalSubscriberId)
+			msoLogger.debug("Incoming Global Subscriber Id is: " + globalSubscriberId)
+
+			String sdncVersion = execution.getVariable("sdncVersion")
+			if (sdncVersion == null) {
+				sdncVersion = "1702"
+			}
+			execution.setVariable("DoCVNF_sdncVersion", sdncVersion)
+			msoLogger.debug("Incoming Sdnc Version is: " + sdncVersion)
+
+			//For Completion Handler & Fallout Handler
+			String requestInfo =
+				"""<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>CREATE</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+
+			execution.setVariable("DoCVNF_requestInfo", requestInfo)
+			//TODO: Orch Status - TBD, will come from SDN-C Response in 1702
+			String orchStatus = "Created"
+			execution.setVariable("DoCVNF_orchStatus", orchStatus)
+
+			//TODO: Equipment Role - Should come from SDN-C Response in 1702
+			String equipmentRole = " "
+			execution.setVariable("DoCVNF_equipmentRole", equipmentRole)
+			String vnfId = execution.getVariable("testVnfId") // for junits
+			if(isBlank(vnfId)){
+				vnfId = execution.getVariable("vnfId")
+				if (isBlank(vnfId)) {
+					vnfId = UUID.randomUUID().toString()
+					msoLogger.debug("Generated Vnf Id is: " + vnfId)
+				}
+			}
+			execution.setVariable("DoCVNF_vnfId", vnfId)
+
+			// Setting for Sub Flow Calls
+			execution.setVariable("DoCVNF_type", "generic-vnf")
+			execution.setVariable("GENGS_type", "service-instance")
+
+			String sdncCallbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) {
+				def msg = 'Required variable \'mso.workflow.sdncadapter.callback\' is missing'
+				msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, msg, "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError);
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)
+			}
+			execution.setVariable("DoCVNF_sdncCallbackUrl", sdncCallbackUrl)
+			rollbackData.put("VNF", "sdncCallbackUrl", sdncCallbackUrl)
+			msoLogger.debug("SDNC Callback URL is: " + sdncCallbackUrl)
+
+			VnfResource vnfResource = (VnfResource) execution.getVariable((String)"vnfResourceDecomposition")
+			String nfRole = vnfResource.getNfRole()
+
+			execution.setVariable("DoCVNF_nfRole", nfRole)
+			msoLogger.debug("NF Role is: " + nfRole)
+
+			String nfNamingCode = vnfResource.getNfNamingCode()
+			execution.setVariable("DoCVNF_nfNamingCode", nfNamingCode)
+			msoLogger.debug("NF Naming Code is: " + nfNamingCode)
+
+			String nfType = vnfResource.getNfType()
+			execution.setVariable("DoCVNF_nfType", nfType)
+			msoLogger.debug("NF Type is: " + nfType)
+
+			String nfFunction = vnfResource.getNfFunction()
+			execution.setVariable("DoCVNF_nfFunction", nfFunction)
+			msoLogger.debug("NF Function is: " + nfFunction)
+
+			rollbackData.put("VNF", "rollbackSDNCAssign", "false")
+			rollbackData.put("VNF", "rollbackSDNCActivate", "false")
+			rollbackData.put("VNF", "rollbackVnfCreate", "false")
+
+			execution.setVariable("rollbackData", rollbackData)
+
+		}catch(BpmnError b){
+			msoLogger.debug("Rethrowing MSOWorkflowException")
+			throw b
+		}catch(Exception e){
+			msoLogger.debug(" Error Occured in DoCreateVnf PreProcessRequest method!" + e.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf PreProcessRequest")
+
+		}
+		msoLogger.trace("COMPLETED DoCreateVnf PreProcessRequest Process")
+	}
+
+	private Object getVariableEnforced(DelegateExecution execution, String name){
+		Object enforced = execution.getVariable(name)
+		if(!enforced){
+		return "";
+		}
+		return enforced;
+	}
+
+	public void createGenericVnf (DelegateExecution execution) {
+		execution.setVariable("prefix",Prefix)
+		msoLogger.trace("STARTED DoCreateVnf CreateGenericVnf Process")
+		try {
+			//Get Vnf Info
+			String vnfId = getVariableEnforced(execution, "DoCVNF_vnfId")
+			String vnfName = getVariableEnforced(execution, "DoCVNF_vnfName")
+			if (vnfName == null) {
+				vnfName = "sdncGenerated"
+				msoLogger.debug("Sending a dummy VNF name to AAI - the name will be generated by SDNC: " + vnfName)
+			}
+			String vnfType = getVariableEnforced(execution, "DoCVNF_vnfType")
+			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")
+			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
+			String serviceInstanceId = getVariableEnforced(execution, "DoCVNF_serviceInstanceId")
+			String siRelatedLink = getVariableEnforced(execution, "GENGS_siResourceLink")
+
+			int custStart = siRelatedLink.indexOf("customer/")
+			int custEnd = siRelatedLink.indexOf("/service-subscriptions")
+			String globalCustId = siRelatedLink.substring(custStart + 9, custEnd)
+			int serviceStart = siRelatedLink.indexOf("service-subscription/")
+			int serviceEnd = siRelatedLink.indexOf("/service-instances/")
+			String serviceType = siRelatedLink.substring(serviceStart + 21, serviceEnd)
+
+			Map<String, String> payload = new LinkedHashMap<>();
+			payload.put("vnf-id", vnfId);
+			payload.put("vnf-name", vnfName);
+			payload.put("service-id", serviceId);
+			payload.put("vnf-type", vnfType);
+			payload.put("prov-status", "PREPROV");
+			payload.put("orchestration-status", orchStatus);
+			payload.put("model-invariant-id", modelInvariantId);
+			payload.put("model-version-id", modelVersionId);
+			payload.put("model-customization-id", modelCustomizationId);
+			payload.put("nf-type", nfType);
+			payload.put("nf-role", nfRole);
+			payload.put("nf-function", nfFunction);
+			payload.put("nf-naming-code", nfNamingCode);
+
+			AAIResourcesClient resourceClient = new AAIResourcesClient();
+			AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
+			resourceClient.create(uri, payload)
+
+			AAIResourceUri siUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustId, serviceType, serviceInstanceId)
+			resourceClient.connect(uri, siUri)
+
+		}catch(Exception ex) {
+			msoLogger.debug("Error Occured in DoCreateVnf CreateGenericVnf Process " + ex.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf CreateGenericVnf Process")
+		}
+		msoLogger.trace("COMPLETED DoCreateVnf CreateGenericVnf Process")
+	}
+
+	public void postProcessCreateGenericVnf (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("STARTED DoCreateVnf PostProcessCreateGenericVnf Process")
+		try {
+			//Get Vnf Info
+			String vnfId = execution.getVariable("DoCVNF_vnfId")
+			def rollbackData = execution.getVariable("rollbackData")
+			rollbackData.put("VNF", "vnfId", vnfId)
+			rollbackData.put("VNF", "rollbackVnfCreate", "true")
+			execution.setVariable("rollbackData", rollbackData)
+		}catch(Exception ex) {
+			msoLogger.debug("Error Occured in DoCreateVnf PostProcessCreateGenericVnf Process " + ex.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf PostProcessCreateGenericVnf Process")
+		}
+		msoLogger.trace("COMPLETED DoCreateVnf PostProcessCreateGenericVnf Process")
+	}
+
+
+	public void preProcessSDNCAssignRequest(DelegateExecution execution){
+		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessSDNCAssignRequest")
+		def vnfId = execution.getVariable("DoCVNF_vnfId")
+		def serviceInstanceId = execution.getVariable("DoCVNF_serviceInstanceId")
+		msoLogger.debug("NEW VNF ID: " + vnfId)
+
+		try{
+			//Build SDNC Request
+
+			String assignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "assign")
+
+			assignSDNCRequest = utils.formatXml(assignSDNCRequest)
+			execution.setVariable("DoCVNF_assignSDNCRequest", assignSDNCRequest)
+			msoLogger.debug("Outgoing AssignSDNCRequest is: \n" + assignSDNCRequest)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessSDNCAssignRequest" , "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCAssignRequest Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED preProcessSDNCAssignRequest")
+	}
+
+	public void preProcessSDNCActivateRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessSDNCActivateRequest(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessSDNCActivateRequest Process")
+		try{
+			String vnfId = execution.getVariable("DoCVNF_vnfId")
+			String serviceInstanceId = execution.getVariable("DoCVNF_serviceInstanceId")
+
+			String activateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "activate")
+
+			execution.setVariable("DoCVNF_activateSDNCRequest", activateSDNCRequest)
+			msoLogger.debug("Outgoing CommitSDNCRequest is: \n" + activateSDNCRequest)
+
+		}catch(Exception e){
+			msoLogger.debug("Exception Occured Processing preProcessSDNCActivateRequest. Exception is:\n" + e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during  preProcessSDNCActivateRequest Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED  preProcessSDNCActivateRequest Process")
+	}
+
+	public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
+
+				String uuid = execution.getVariable('testReqId') // for junits
+				if(uuid==null){
+					uuid = execution.getVariable("DoCVNF_requestId") + "-" +  	System.currentTimeMillis()
+				}
+				def callbackURL = execution.getVariable("DoCVNF_sdncCallbackUrl")
+				def requestId = execution.getVariable("DoCVNF_requestId")
+				def serviceId = execution.getVariable("DoCVNF_serviceId")
+				def vnfType = execution.getVariable("DoCVNF_vnfType")
+				def vnfName = execution.getVariable("DoCVNF_vnfName")
+				// Only send vnfName to SDNC if it is not null, otherwise it will get generated by SDNC on Assign
+				String vnfNameString = ""
+				if (vnfName != null) {
+					vnfNameString = """<vnf-name>${MsoUtils.xmlEscape(vnfName)}</vnf-name>"""
+				}
+				def tenantId = execution.getVariable("DoCVNF_tenantId")
+				def source = execution.getVariable("DoCVNF_source")
+				def vnfId = execution.getVariable("DoCVNF_vnfId")
+				def cloudSiteId = execution.getVariable("DoCVNF_cloudSiteId")
+				def modelCustomizationId = execution.getVariable("DoCVNF_modelCustomizationId")
+				def serviceModelInfo = execution.getVariable("serviceModelInfo")
+				def vnfModelInfo = execution.getVariable("vnfModelInfo")
+				String serviceEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(serviceModelInfo)
+				String vnfEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(vnfModelInfo)
+				def globalSubscriberId = execution.getVariable("DoCVNF_globalSubscriberId")
+				def sdncVersion = execution.getVariable("DoCVNF_sdncVersion")
+
+				String sdncVNFParamsXml = ""
+
+				if(execution.getVariable("DoCVNF_vnfParamsExistFlag") == true){
+					sdncVNFParamsXml = buildSDNCParamsXml(execution)
+				}else{
+					sdncVNFParamsXml = ""
+				}
+
+				String sdncRequest =
+				"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+	   <sdncadapter:RequestHeader>
+				<sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId>
+				<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId>
+				<sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction>
+				<sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation>
+				<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl>
+				<sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+		</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+		<request-information>
+			<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+			<request-action>CreateVnfInstance</request-action>
+			<source>${MsoUtils.xmlEscape(source)}</source>
+			<notification-url/>
+			<order-number/>
+			<order-version/>
+		</request-information>
+		<service-information>
+			<service-id>${MsoUtils.xmlEscape(serviceId)}</service-id>
+			<subscription-service-type>${MsoUtils.xmlEscape(serviceId)}</subscription-service-type>
+			${serviceEcompModelInformation}
+			<service-instance-id>${MsoUtils.xmlEscape(svcInstId)}</service-instance-id>
+			<global-customer-id>${MsoUtils.xmlEscape(globalSubscriberId)}</global-customer-id>
+		</service-information>
+		<vnf-information>
+			<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+			<vnf-type>${MsoUtils.xmlEscape(vnfType)}</vnf-type>
+			${vnfEcompModelInformation}
+		</vnf-information>
+		<vnf-request-input>
+			${vnfNameString}
+			<tenant>${MsoUtils.xmlEscape(tenantId)}</tenant>
+			<aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region>
+			${sdncVNFParamsXml}
+		</vnf-request-input>
+	</sdncadapterworkflow:SDNCRequestData>
+	</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			msoLogger.debug("sdncRequest:  " + sdncRequest)
+			return sdncRequest
+	}
+
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method){
+		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		msoLogger.debug("STARTED ValidateSDNCResponse Process")
+
+		WorkflowException workflowException = execution.getVariable("WorkflowException")
+		boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+
+		msoLogger.debug("workflowException: " + workflowException)
+
+		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+		sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+		msoLogger.debug("SDNCResponse: " + response)
+
+		String sdncResponse = response
+		if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+			msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + sdncResponse)
+			if(method.equals("get")){
+				String topologyGetResponse = execution.getVariable("DoCVNF_getSDNCAdapterResponse")
+				String data = utils.getNodeXml(topologyGetResponse, "response-data")
+				msoLogger.debug("topologyGetResponseData: " + data)
+				String vnfName = utils.getNodeText(data, "vnf-name")
+				msoLogger.debug("vnfName received from SDNC: " + vnfName)
+				execution.setVariable("vnfName", vnfName)
+				execution.setVariable("DoCVNF_vnfName", vnfName)
+			}
+			def rollbackData = execution.getVariable("rollbackData")
+			if (method.equals("assign")) {
+				rollbackData.put("VNF", "rollbackSDNCAssign", "true")
+			}
+			else if (method.equals("activate")) {
+				rollbackData.put("VNF", "rollbackSDNCActivate", "true")
+			}
+			execution.setVariable("rollbackData", rollbackData)
+
+
+		}else{
+			msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.")
+			throw new BpmnError("MSOWorkflowException")
+		}
+		msoLogger.debug("COMPLETED ValidateSDNCResponse Process")
+	}
+
+	public void preProcessSDNCGetRequest(DelegateExecution execution){
+		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessSDNCGetRequest Process")
+		try{
+			def serviceInstanceId = execution.getVariable('DoCVNF_serviceInstanceId')
+
+			String uuid = execution.getVariable('testReqId') // for junits
+			if(uuid==null){
+				uuid = execution.getVariable("mso-request-id") + "-" +  System.currentTimeMillis()
+			}
+
+			def callbackUrl = execution.getVariable("DoCVFM_sdncCallbackUrl")
+			msoLogger.debug("callbackUrl:" + callbackUrl)
+
+			def vnfId = execution.getVariable('DCVFM_vnfId')
+
+			def svcInstId = ""
+			if (serviceInstanceId == null || serviceInstanceId.isEmpty()) {
+				svcInstId = vnfId
+			}
+			else {
+				svcInstId = serviceInstanceId
+			}
+			// serviceOperation will be retrieved from "object-path" element
+			// in SDNC Assign Response for VNF
+			String response = execution.getVariable("DoCVNF_assignSDNCAdapterResponse")
+			msoLogger.debug("DoCVNF_assignSDNCAdapterResponse is: \n" + response)
+
+			String serviceOperation = ""
+
+			String data = utils.getNodeXml(response, "response-data")
+			msoLogger.debug("responseData: " + data)
+			serviceOperation = utils.getNodeText(data, "object-path")
+			msoLogger.debug("VNF with sdncVersion of 1707 or later - service operation: " + serviceOperation)
+
+
+			//!!!! TEMPORARY WORKAROUND FOR SDNC REPLICATION ISSUE
+			sleep(5000)
+
+			String SDNCGetRequest =
+					"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+											xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+											xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+					<sdncadapter:RequestHeader>
+					<sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId>
+					<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId>
+					<sdncadapter:SvcAction>query</sdncadapter:SvcAction>
+					<sdncadapter:SvcOperation>${MsoUtils.xmlEscape(serviceOperation)}</sdncadapter:SvcOperation>
+					<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl>
+					<sdncadapter:MsoAction>vfmodule</sdncadapter:MsoAction>
+				</sdncadapter:RequestHeader>
+					<sdncadapterworkflow:SDNCRequestData></sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+
+			execution.setVariable("DoCVNF_getSDNCRequest", SDNCGetRequest)
+			msoLogger.debug("Outgoing GetSDNCRequest is: \n" + SDNCGetRequest)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCGetRequest. ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during prepareProvision Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED preProcessSDNCGetRequest Process")
+	}
+
+	/**
+	 * Prepare a Request for invoking the UpdateAAIGenericVnf subflow.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepUpdateAAIGenericVnf(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def vnfId = execution.getVariable('DoCVNF_vnfId')
+			msoLogger.debug("VNF ID: " + vnfId)
+
+			String updateAAIGenericVnfRequest = """
+					<UpdateAAIGenericVnfRequest>
+						<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+						<orchestration-status>Active</orchestration-status>
+					</UpdateAAIGenericVnfRequest>
+				"""
+				updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest)
+				execution.setVariable('DoCVNF_updateAAIGenericVnfRequest', updateAAIGenericVnfRequest)
+				msoLogger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest)
+
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Caught exception in " + method , "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateAAIGenericVnf(): ' + e.getMessage())
+		}
+	}
+
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy
new file mode 100644
index 0000000..d3dbd91
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy
@@ -0,0 +1,467 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import java.util.UUID;
+
+import java.util.List
+
+import org.json.JSONObject;
+import org.json.JSONArray;
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.CatalogDbUtils
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.domain.ModelInfo
+import org.onap.so.bpmn.core.domain.ModuleResource
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.bpmn.core.domain.VnfResource
+import org.onap.so.bpmn.core.json.DecomposeJsonUtil
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.onap.so.bpmn.infrastructure.aai.groovyflows.AAICreateResources;
+import org.onap.so.logger.MsoLogger
+import org.onap.so.logger.MessageEnum
+
+import static org.apache.commons.lang3.StringUtils.*;
+
+
+
+/**
+* This class supports the macro VID Flow
+* with the creation of a generic vnf and related VF modules.
+*/
+class DoCreateVnfAndModules extends AbstractServiceTaskProcessor {
+
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateVnfAndModules.class);
+   String Prefix="DCVAM_"
+   ExceptionUtil exceptionUtil = new ExceptionUtil()
+   JsonUtils jsonUtil = new JsonUtils()
+   VidUtils vidUtils = new VidUtils(this)
+   CatalogDbUtils cutils = new CatalogDbUtils()
+
+   /**
+	* This method gets and validates the incoming
+	* request.
+	*
+	* @param - execution
+	*/
+   public void preProcessRequest(DelegateExecution execution) {
+	   
+	   execution.setVariable("prefix",Prefix)
+	   msoLogger.trace("STARTED DoCreateVnfAndModules PreProcessRequest Process")
+	   def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+	   
+	   setBasicDBAuthHeader(execution, isDebugLogEnabled)
+	   try{
+		   // Get Variables
+
+		   ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+
+		   String vnfModelInfo = execution.getVariable("vnfModelInfo")
+
+		   String requestId = execution.getVariable("msoRequestId")
+		   execution.setVariable("requestId", requestId)
+		   execution.setVariable("mso-request-id", requestId)
+		   msoLogger.debug("Incoming Request Id is: " + requestId)
+
+		   String serviceInstanceId = execution.getVariable("serviceInstanceId")
+		   msoLogger.debug("Incoming Service Instance Id is: " + serviceInstanceId)
+
+		   String vnfName = execution.getVariable("vnfName")
+		   execution.setVariable("CREVI_vnfName", vnfName)
+		   msoLogger.debug("Incoming Vnf Name is: " + vnfName)
+
+		   String productFamilyId = execution.getVariable("productFamilyId")
+		   msoLogger.debug("Incoming Product Family Id is: " + productFamilyId)
+
+		   String source = "VID"
+		   execution.setVariable("source", source)
+		   msoLogger.debug("Incoming Source is: " + source)
+
+		   String lcpCloudRegionId = execution.getVariable("lcpCloudRegionId")
+		  msoLogger.debug("Incoming LCP Cloud Region Id is: " + lcpCloudRegionId)
+
+		   String tenantId = execution.getVariable("tenantId")
+		   msoLogger.debug("Incoming Tenant Id is: " + tenantId)
+
+		   String disableRollback = execution.getVariable("disableRollback")
+		   msoLogger.debug("Incoming Disable Rollback is: " + disableRollback)
+
+		   String asdcServiceModelVersion = execution.getVariable("asdcServiceModelVersion")
+		   msoLogger.debug("Incoming asdcServiceModelVersion: " + asdcServiceModelVersion)
+
+		   String vnfId = execution.getVariable("testVnfId") // for junits
+		   if(isBlank(vnfId)){
+			   vnfId = execution.getVariable("vnfId")
+			   if (isBlank(vnfId)) {
+				   vnfId = UUID.randomUUID().toString()
+				   msoLogger.debug("Generated Vnf Id is: " + vnfId)
+			   }
+		   }
+		   execution.setVariable("vnfId", vnfId)
+		   
+		   // Set aLaCarte to false
+		   execution.setVariable("aLaCarte", false)
+
+		   def rollbackData = execution.getVariable("rollbackData")
+		   if (rollbackData == null) {
+			   rollbackData = new RollbackData()
+		   }
+		   
+		   def isTest = execution.getVariable("isTest")
+		   
+			if (isTest == null || isTest == false) {
+				execution.setVariable("isBaseVfModule", "true")
+			}
+		   execution.setVariable("numOfCreatedAddOnModules", 0)
+
+		   rollbackData.put("VNFANDMODULES", "numOfCreatedAddOnModules", "0")
+		   execution.setVariable("rollbackData", rollbackData)
+
+		   sleep (20000)
+
+
+	   }catch(BpmnError b){
+		   msoLogger.debug("Rethrowing MSOWorkflowException")
+		   throw b
+	   }catch(Exception e){
+		   msoLogger.debug(" Error Occured in DoCreateVnfAndModules PreProcessRequest method!" + e.getMessage())
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf PreProcessRequest")
+
+	   }
+	   msoLogger.trace("COMPLETED DoCreateVnfAndModules PreProcessRequest Process")
+   }
+
+
+   public void queryCatalogDB (DelegateExecution execution) {
+	 
+	   execution.setVariable("prefix",Prefix)
+
+	   msoLogger.trace("STARTED DoCreateVnfAndModules QueryCatalogDB Process")
+	   try {
+		   VnfResource vnf = null
+		   ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+		   // if serviceDecomposition is specified, get info from serviceDecomposition
+		   if (serviceDecomposition != null) {
+			   msoLogger.debug("Getting Catalog DB data from ServiceDecomposition object: " + serviceDecomposition.toJsonString())
+			   List<VnfResource> vnfs = serviceDecomposition.getVnfResources()
+			   msoLogger.debug("Read vnfs")
+			   if (vnfs == null) {
+				   msoLogger.debug("Error - vnfs are empty in serviceDecomposition object")
+				   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf queryCatalogDB, vnfs are empty")
+			   }
+			   vnf = vnfs[0]
+			   String serviceModelName = serviceDecomposition.getModelInfo().getModelName()
+			   vnf.constructVnfType(serviceModelName)
+			   String vnfType = vnf.getVnfType()
+			   msoLogger.debug("Incoming Vnf Type is: " + vnfType)
+			   execution.setVariable("vnfType", vnfType)
+		   }
+		   else {
+			   //Get Vnf Info
+			   String vnfModelInfo = execution.getVariable("vnfModelInfo")
+			   msoLogger.debug("vnfModelInfo: " + vnfModelInfo)
+			   String vnfModelCustomizationUuid = jsonUtil.getJsonValueForKey(vnfModelInfo, "modelCustomizationUuid")
+			   if (vnfModelCustomizationUuid == null) {
+					   vnfModelCustomizationUuid = ""
+			   }
+			   msoLogger.debug("querying Catalog DB by vnfModelCustomizationUuid: " + vnfModelCustomizationUuid)
+			  
+			   JSONArray vnfs = cutils.getAllVnfsByVnfModelCustomizationUuid(execution,
+							   vnfModelCustomizationUuid)
+			   msoLogger.debug("obtained VNF list")
+			   // Only one match here
+			   JSONObject vnfObject = vnfs[0]
+			   vnf = DecomposeJsonUtil.jsonToVnfResource(vnfObject.toString())
+		   }
+		   msoLogger.debug("Read vnfResource")
+		   if (vnf == null) {
+			   msoLogger.debug("Error - vnf is empty in serviceDecomposition object")
+			   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf queryCatalogDB, vnf is null")
+		   }
+		   execution.setVariable("vnfResourceDecomposition", vnf)
+
+		   List<ModuleResource> vfModules = vnf.getAllVfModuleObjects()
+		   msoLogger.debug("Read vfModules")
+		   if (vfModules == null) {
+			   msoLogger.debug("Error - vfModules are empty in serviceDecomposition object")
+			   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf queryCatalogDB, vf modules are empty")
+		   }
+			   			  
+		   ModuleResource baseVfModule = null
+
+		   for (int i = 0; i < vfModules.size; i++) {
+			   msoLogger.debug("handling VF Module ")
+			   ModuleResource vfModule = vfModules[i]
+			   boolean isBase = vfModule.getIsBase()
+			   if (isBase) {
+					   ModelInfo baseVfModuleModelInfoObject = vfModule.getModelInfo()
+					   String baseVfModuleModelInfoWithRoot = baseVfModuleModelInfoObject.toString()
+					   String baseVfModuleModelInfo = jsonUtil.getJsonValue(baseVfModuleModelInfoWithRoot, "modelInfo")
+					   execution.setVariable("baseVfModuleModelInfo", baseVfModuleModelInfo)
+					   String baseVfModuleLabel = vfModule.getVfModuleLabel()
+					   execution.setVariable("baseVfModuleLabel", baseVfModuleLabel)
+					   String basePersonaModelId = baseVfModuleModelInfoObject.getModelInvariantUuid()
+					   execution.setVariable("basePersonaModelId", basePersonaModelId)
+					   baseVfModule = vfModule
+					   break
+			   }		   
+				
+			}
+			   
+			List<ModuleResource>addOnModules = vfModules - baseVfModule
+			   
+			int addOnModulesToDeploy = 0
+			if (addOnModules != null) {				
+				   addOnModulesToDeploy = addOnModules.size
+			}
+			   
+
+			execution.setVariable("addOnModules", addOnModules)
+			execution.setVariable("addOnModulesToDeploy", addOnModulesToDeploy)
+			execution.setVariable("addOnModulesDeployed", 0)	  
+
+	   }catch(Exception ex) {
+		   msoLogger.debug("Error Occured in DoCreateVnfAndModules QueryCatalogDB Process " + ex.getMessage())
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnfAndModules QueryCatalogDB Process")
+	   }
+
+	   // Generate vfModuleId for base VF Module
+	   def baseVfModuleId = UUID.randomUUID().toString()
+	   execution.setVariable("baseVfModuleId", baseVfModuleId)
+	   // For JUnits
+	   String requestId = execution.getVariable("requestId")
+	   if (requestId.equals("testRequestId123")) {
+		   execution.setVariable("vnfId", "skask")
+	   }
+
+	   msoLogger.trace("COMPLETED DoCreateVnfAndModules QueryCatalogDB Process")
+   }
+
+   public void preProcessAddOnModule(DelegateExecution execution){
+	   
+	   execution.setVariable("prefix", Prefix)
+	   msoLogger.debug("STARTED preProcessAddOnModule")
+
+	   try {
+		   List<ModuleResource>addOnModules = execution.getVariable("addOnModules")
+		   int addOnIndex = (int) execution.getVariable("addOnModulesDeployed")
+
+		   ModuleResource addOnModule = addOnModules[addOnIndex]
+		   
+		   msoLogger.debug("Got addon module")
+
+		   def newVfModuleId = UUID.randomUUID().toString()
+		   execution.setVariable("addOnVfModuleId", newVfModuleId)
+		   execution.setVariable("isBaseVfModule", "false")
+		   
+		   execution.setVariable("instancesOfThisModuleDeployed", 0)
+
+		   ModelInfo addOnVfModuleModelInfoObject = addOnModule.getModelInfo()		  
+		   String addOnVfModuleModelInfoWithRoot = addOnVfModuleModelInfoObject.toString()
+		   String addOnVfModuleModelInfo = jsonUtil.getJsonValue(addOnVfModuleModelInfoWithRoot, "modelInfo")
+		   execution.setVariable("addOnVfModuleModelInfo", addOnVfModuleModelInfo)
+		   String addOnVfModuleLabel = addOnModule.getVfModuleLabel()
+		   execution.setVariable("addOnVfModuleLabel", addOnVfModuleLabel)
+		   String addOnPersonaModelId = addOnVfModuleModelInfoObject.getModelInvariantUuid()
+		   execution.setVariable("addOnPersonaModelId", addOnPersonaModelId)
+		   int addOnInitialCount = addOnModule.getInitialCount()
+		   execution.setVariable("initialCount", addOnInitialCount)
+
+
+	   }catch(Exception e){
+		   msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessAddOnModule ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessAddOnModule Method:\n" + e.getMessage())
+	   }
+	   msoLogger.trace("COMPLETED preProcessAddOnModule")
+   }
+
+   public void postProcessAddOnModule(DelegateExecution execution){
+	   
+	   execution.setVariable("prefix", Prefix)
+	   msoLogger.trace("STARTED postProcessAddOnModule")
+
+	   try {
+		   int addOnModulesDeployed = execution.getVariable("addOnModulesDeployed")
+		   execution.setVariable("addOnModulesDeployed", addOnModulesDeployed + 1)
+
+	   }catch(Exception e){
+		   msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing postProcessAddOnModule ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during postProcessAddOnModule Method:\n" + e.getMessage())
+	   }
+	   msoLogger.trace("COMPLETED postProcessAddOnModule")
+   }
+   
+   public void validateBaseModule(DelegateExecution execution){
+	   
+	   execution.setVariable("prefix", Prefix)
+	   msoLogger.trace("STARTED validateBaseModule")
+
+	   try {
+		   def baseRollbackData = execution.getVariable("DCVAM_baseRollbackData")
+		   def rollbackData = execution.getVariable("rollbackData")
+
+		   def baseModuleMap = baseRollbackData.get("VFMODULE")
+		   baseModuleMap.each{ k, v -> rollbackData.put("VFMODULE_BASE", "${k}","${v}") }
+		   execution.setVariable("rollbackData", rollbackData)
+		   msoLogger.debug("addOnModulesDeployed: " + execution.getVariable("addOnModulesDeployed"))
+		   msoLogger.debug("addOnModulesToDeploy: " + execution.getVariable("addOnModulesToDeploy"))
+		   if (execution.getVariable("addOnModulesDeployed") <  execution.getVariable("addOnModulesToDeploy")) {
+			   msoLogger.debug("More add on modules to deploy")
+		   }
+		   else {
+			   msoLogger.debug("No more add on modules to deploy")
+		   }
+
+	   }catch(Exception e){
+		   msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing validateBaseModule ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during validateBaseModule Method:\n" + e.getMessage())
+	   }
+	   msoLogger.trace("COMPLETED validateBaseModule")
+   }
+
+   public void validateAddOnModule(DelegateExecution execution){
+	   
+	   execution.setVariable("prefix", Prefix)
+	   msoLogger.trace("STARTED validateAddOnModule")
+
+	   try {
+		   int instancesOfThisModuleDeployed = execution.getVariable("instancesOfThisModuleDeployed")
+		   int numOfCreatedAddOnModules = execution.getVariable("numOfCreatedAddOnModules")
+		   def addOnRollbackData = execution.getVariable("DCVAM_addOnRollbackData")
+		   def rollbackData = execution.getVariable("rollbackData")
+
+		   def addOnModuleMap = addOnRollbackData.get("VFMODULE")
+		   numOfCreatedAddOnModules = numOfCreatedAddOnModules + 1
+		   addOnModuleMap.each{ k, v -> rollbackData.put("VFMODULE_ADDON_" + numOfCreatedAddOnModules, "${k}","${v}") }
+
+		   execution.setVariable("DCVAM_addOnRollbackData", null)
+
+		   execution.setVariable("instancesOfThisModuleDeployed", instancesOfThisModuleDeployed + 1)
+
+		   execution.setVariable("numOfCreatedAddOnModules", numOfCreatedAddOnModules)
+		   rollbackData.put("VNFANDMODULES", "numOfCreatedAddOnModules", "${numOfCreatedAddOnModules}")
+		   execution.setVariable("rollbackData", rollbackData)
+	   }catch(Exception e){
+		   msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessAddOnModule ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessAddOnModule Method:\n" + e.getMessage())
+	   }
+	   msoLogger.trace("COMPLETED validateAddOnModule")
+   }   
+   
+   public void preProcessRollback (DelegateExecution execution) {
+	 
+	   msoLogger.trace("preProcessRollback")
+	   try {
+		   
+		   Object workflowException = execution.getVariable("WorkflowException");
+
+		   if (workflowException instanceof WorkflowException) {
+			   msoLogger.debug("Prev workflowException: " + workflowException.getErrorMessage())
+			   execution.setVariable("prevWorkflowException", workflowException);
+			   //execution.setVariable("WorkflowException", null);
+		   }
+	   } catch (BpmnError e) {
+		   msoLogger.debug("BPMN Error during preProcessRollback")
+	   } catch(Exception ex) {
+		   String msg = "Exception in preProcessRollback. " + ex.getMessage()
+		   msoLogger.debug(msg)
+	   }
+	   msoLogger.trace("Exit preProcessRollback")
+   }
+
+   public void postProcessRollback (DelegateExecution execution) {
+	 
+	   msoLogger.trace("postProcessRollback")
+	   String msg = ""
+	   try {
+		   Object workflowException = execution.getVariable("prevWorkflowException");
+		   if (workflowException instanceof WorkflowException) {
+			   msoLogger.debug("Setting prevException to WorkflowException: ")
+			   execution.setVariable("WorkflowException", workflowException);
+		   }
+		   execution.setVariable("rollbackData", null)
+	   } catch (BpmnError b) {
+		   msoLogger.debug("BPMN Error during postProcessRollback")
+		   throw b;
+	   } catch(Exception ex) {
+		   msg = "Exception in postProcessRollback. " + ex.getMessage()
+		   msoLogger.debug(msg)
+	   }
+	   msoLogger.trace("Exit postProcessRollback")
+   }
+   
+   public void createPlatform (DelegateExecution execution) {
+	 
+	   msoLogger.trace("START createPlatform")
+	   
+	   String platformName = execution.getVariable("platformName")
+	   String vnfId = execution.getVariable("vnfId")
+   
+	   msoLogger.debug("Platform NAME: " + platformName)
+	   msoLogger.debug("VnfID: " + vnfId)
+	   
+	   if(isBlank(platformName)){
+		   msoLogger.debug("platformName was not found. Continuing on with flow...")
+	   }else{
+		   msoLogger.debug("platformName was found.")
+		   try{
+			   AAICreateResources aaiCR = new AAICreateResources()
+			   aaiCR.createAAIPlatform(platformName, vnfId)
+		   }catch(Exception ex){
+			   String msg = "Exception in createPlatform. " + ex.getMessage();
+			   msoLogger.debug(msg)
+		   }
+	   }
+	   msoLogger.trace("Exit createPlatform")
+   }
+   
+   public void createLineOfBusiness (DelegateExecution execution) {
+	 
+	   msoLogger.trace("START createLineOfBusiness")
+	   
+	   String lineOfBusiness = execution.getVariable("lineOfBusiness")
+	   String vnfId = execution.getVariable("vnfId")
+   
+	   msoLogger.debug("LineOfBusiness NAME: " + lineOfBusiness)
+	   msoLogger.debug("VnfID: " + vnfId)
+	   
+	   if(isBlank(lineOfBusiness)){
+		   msoLogger.debug("LineOfBusiness was not found. Continuing on with flow...")
+	   }else{
+		   msoLogger.debug("LineOfBusiness was found.")
+		   try{
+			   AAICreateResources aaiCR = new AAICreateResources()
+			   aaiCR.createAAILineOfBusiness(lineOfBusiness, vnfId)
+		   }catch(Exception ex){
+			   String msg = "Exception in LineOfBusiness. " + ex.getMessage();
+			    msoLogger.debug(msg)
+		   }
+	   }
+	   msoLogger.trace("Exit createLineOfBusiness")
+   }
+
+
+}
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnfAndModulesRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnfAndModulesRollback.groovy
new file mode 100644
index 0000000..eafc39b
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnfAndModulesRollback.groovy
@@ -0,0 +1,360 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import static org.apache.commons.lang3.StringUtils.*;
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+/**
+ * This class supports the macro VID Flow
+ * with the rollback of a creation of a generic vnf and related VF modules.
+ */
+class DoCreateVnfAndModulesRollback extends AbstractServiceTaskProcessor {
+
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateVnfAndModulesRollback.class);
+	String Prefix="DCVAMR_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	
+
+	/**
+	 * This method gets and validates the incoming
+	 * request.
+	 *
+	 * @param - execution
+	 *
+	 */
+	public void preProcessRequest(DelegateExecution execution) {
+		
+		execution.setVariable("prefix",Prefix)
+		msoLogger.debug("STARTED DoCreateVnfAndModulesRollback PreProcessRequest Process")
+
+		try{
+			// Get Rollback Variables
+			
+			def rollbackData = execution.getVariable("rollbackData")
+			msoLogger.debug("Incoming RollbackData is: " + rollbackData.toString())
+			execution.setVariable("rolledBack", null)
+			execution.setVariable("rollbackError", null)
+			
+			if (execution.getVariable("disableRollback").equals("true" ))
+			{
+				execution.setVariable("skipRollback", true)
+			}
+
+			String vnfId = rollbackData.get("VNF", "vnfId")
+			msoLogger.debug("Rollback vnfId is: " + vnfId)
+			execution.setVariable("DCVAMR_vnfId", vnfId)
+			
+			execution.setVariable("mso-request-id", execution.getVariable("msoRequestId"))
+			
+			execution.setVariable("DCVAMR_rollbackSDNCAssign", rollbackData.get("VNF", "rollbackSDNCAssign"))
+			execution.setVariable("DCVAMR_rollbackSDNCActivate", rollbackData.get("VNF", "rollbackSDNCActivate"))
+			execution.setVariable("DCVAMR_rollbackVnfCreate", rollbackData.get("VNF", "rollbackVnfCreate"))
+			
+			String sdncCallbackUrl = rollbackData.get("VNF", "sdncCallbackUrl")
+			msoLogger.debug("Rollback sdncCallbackUrl is: " + sdncCallbackUrl)
+			execution.setVariable("DCVAMR_sdncCallbackUrl", sdncCallbackUrl)
+			
+			String tenantId= rollbackData.get("VNF", "tenantId")
+			msoLogger.debug("Rollback tenantId is: " + tenantId)
+			execution.setVariable("DCVAMR_tenantId", tenantId)
+			
+			String source= rollbackData.get("VNF", "source")
+			msoLogger.debug("Rollback source is: " + source)
+			execution.setVariable("DCVAMR_source", source)
+			
+			String serviceInstanceId = rollbackData.get("VNF", "serviceInstanceId")
+			msoLogger.debug("Rollback serviceInstanceId is: " + serviceInstanceId)
+			execution.setVariable("DCVAMR_serviceInstanceId", serviceInstanceId)
+			
+			String cloudSiteId = rollbackData.get("VNF", "cloudSiteId")
+			msoLogger.debug("Rollback cloudSiteId is: " + cloudSiteId)
+			execution.setVariable("DCVAMR_cloudSiteId", cloudSiteId)
+			
+			def numOfAddOnModulesString = rollbackData.get("VNFANDMODULES", "numOfCreatedAddOnModules")
+			int numOfAddOnModules = 0
+			if (numOfAddOnModulesString != null) {
+				numOfAddOnModules = Integer.parseInt(numOfAddOnModulesString)				
+			}
+			execution.setVariable("DCVAMR_numOfAddOnModules", numOfAddOnModules)
+			
+			def baseVfModuleRollbackMap = rollbackData.get("VFMODULE_BASE")
+			if (baseVfModuleRollbackMap == null) {
+				// there are no VF Modules to delete
+				execution.setVariable("DCVAMR_numOfModulesToDelete", 0)
+			}
+			else {
+				execution.setVariable("DCVAMR_numOfModulesToDelete", numOfAddOnModules + 1)				
+			}
+			
+			// Set aLaCarte to false
+			execution.setVariable("DCVAMR_aLaCarte", false)			
+			
+		}catch(BpmnError b){
+			msoLogger.debug("Rethrowing MSOWorkflowException")
+			throw b
+		}catch(Exception e){
+			msoLogger.debug(" Error Occured in DoCreateVnfAndModulesRollback PreProcessRequest method!" + e.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnfAndModulesRollback PreProcessRequest")
+
+		}
+		msoLogger.trace("COMPLETED DoCreateVnfAndModulesRollback PreProcessRequest Process")
+	}
+
+	
+	
+	public void preProcessCreateVfModuleRollback(DelegateExecution execution){
+		
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessCreateVfModuleRollback")
+		
+		try {
+			
+			def rollbackData = execution.getVariable("rollbackData")
+			
+			def vfModuleRollbackData = new RollbackData()
+			
+			def numOfModulesToDelete = execution.getVariable("DCVAMR_numOfModulesToDelete")
+			msoLogger.debug("numOfModulesToDelete: " + numOfModulesToDelete)
+			def moduleMap = null
+			
+			if (numOfModulesToDelete > 1) {
+				int addOnModuleIndex = numOfModulesToDelete - 1
+				moduleMap = rollbackData.get("VFMODULE_ADDON_" + addOnModuleIndex)
+				msoLogger.debug("Removing ADDON VF module # " + addOnModuleIndex)
+			}
+			else {
+				moduleMap = rollbackData.get("VFMODULE_BASE")
+				msoLogger.debug("Removing BASE VF module")
+			}
+			moduleMap.each{ k, v -> vfModuleRollbackData.put("VFMODULE", "${k}","${v}") }
+			execution.setVariable("DCVAMR_RollbackData", vfModuleRollbackData)								
+			
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessCreateVfModuleRollback ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessCreateVfModuleRollback Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED preProcessCreateVfModuleRollback")
+	}
+	
+	
+	public void postProcessCreateVfModuleRollback(DelegateExecution execution){
+		
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED postProcessCreateVfModuleRollback")
+		def rolledBack = false
+		
+		try {
+			rolledBack = execution.getVariable("DCVM_rolledBack")
+			def numOfModulesToDelete = execution.getVariable("DCVAMR_numOfModulesToDelete")
+			execution.setVariable("DCVAMR_numOfModulesToDelete", numOfModulesToDelete - 1)		
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing postProcessCreateVfModuleRollback ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);			
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during postProcessCreateVfModuleRollback Method:\n" + e.getMessage())
+		}
+		if (rolledBack == false) {
+			msoLogger.debug("Failure on DoCreateVfModuleRollback")
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Unsuccessful rollback of DoCreateVfModule ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during rollback of DoCreateVfModule")
+		}
+		msoLogger.trace("COMPLETED postProcessCreateVfModuleRollback")
+	}
+	
+	
+	public void preProcessSDNCDeactivateRequest(DelegateExecution execution){
+		
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessSDNCDeactivateRequest")
+		def vnfId = execution.getVariable("vnfId")
+		def serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+		try{
+			//Build SDNC Request
+			
+			String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate")
+
+			deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest)
+			execution.setVariable(Prefix + "deactivateSDNCRequest", deactivateSDNCRequest)
+			msoLogger.debug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessSDNCDeactivateRequest ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);			
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED preProcessSDNCDeactivateRequest")
+	}
+	
+	public void preProcessSDNCUnassignRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessSDNCUnassignRequest Process")
+		try{
+			String vnfId = execution.getVariable("vnfId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+			String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign")
+
+			execution.setVariable(Prefix + "unassignSDNCRequest", unassignSDNCRequest)
+			msoLogger.debug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest)
+
+		}catch(Exception e){
+			msoLogger.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during  preProcessSDNCUnassignRequest Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED  preProcessSDNCUnassignRequest Process")
+	}
+	
+	public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
+		
+				String uuid = execution.getVariable('testReqId') // for junits
+				if(uuid==null){
+					uuid = execution.getVariable("msoRequestId") + "-" +  	System.currentTimeMillis()
+				}
+				def callbackURL = execution.getVariable(Prefix + "sdncCallbackUrl")
+				def requestId = execution.getVariable("msoRequestId")				
+				def tenantId = execution.getVariable(Prefix + "tenantId")
+				def source = execution.getVariable(Prefix + "source")
+				def vnfId = execution.getVariable(Prefix + "vnfId")
+				def serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")
+				def cloudSiteId = execution.getVariable(Prefix + "cloudSiteId")
+				
+				String sdncRequest =
+				"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap.so/workflow/sdnc/adapter/schema/v1">
+	   <sdncadapter:RequestHeader>
+				<sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId>
+				<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId>
+				<sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction>
+				<sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation>
+				<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl>
+				<sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+		</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+		<request-information>
+			<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+			<request-action>DeleteVnfInstance</request-action>
+			<source>${MsoUtils.xmlEscape(source)}</source>
+			<notification-url/>
+			<order-number/>
+			<order-version/>
+		</request-information>
+		<service-information>
+			<service-id/>
+			<subscription-service-type/>			
+			<service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+			<global-customer-id/>
+		</service-information>
+		<vnf-information>
+			<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+			<vnf-type/>			
+		</vnf-information>
+		<vnf-request-input>			
+			<vnf-name/>
+			<tenant>${MsoUtils.xmlEscape(tenantId)}</tenant>
+			<aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region>			
+		</vnf-request-input>
+	</sdncadapterworkflow:SDNCRequestData>
+	</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+		
+			msoLogger.debug("sdncRequest:  " + sdncRequest)
+			return sdncRequest
+	}
+		
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method){
+		
+		execution.setVariable("prefix",Prefix)
+		msoLogger.debug("STARTED ValidateSDNCResponse Process")
+
+		WorkflowException workflowException = execution.getVariable("WorkflowException")
+		boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+
+		msoLogger.debug("workflowException: " + workflowException)
+
+		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+		sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+		String sdncResponse = response
+		if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+			msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + sdncResponse)
+		}else{
+			msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.")
+			throw new BpmnError("MSOWorkflowException")
+		}
+		msoLogger.debug("COMPLETED ValidateSDNCResponse Process")
+	}
+	
+	public void setSuccessfulRollbackStatus (DelegateExecution execution){
+		
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED setSuccessfulRollbackStatus")
+	
+		try{
+			// Set rolledBack to true, rollbackError to null
+			execution.setVariable("rolledBack", true)
+			execution.setVariable("rollbackError", null)
+	
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing setSuccessfulRollbackStatus ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setSuccessfulRollbackStatus Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED setSuccessfulRollbackStatus")
+	}
+	
+	public void setFailedRollbackStatus (DelegateExecution execution){
+		
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED setFailedRollbackStatus")
+	
+		try{
+			// Set rolledBack to false, rollbackError to actual value, rollbackData to null
+			execution.setVariable("rolledBack", false)
+			def rollbackError = execution.getVariable("rollbackError")
+			if (rollbackError == null) {
+				execution.setVariable("rollbackError", 'Caught exception in DoCreateVnfAndModulesRollback')
+			}
+			execution.setVariable("rollbackData", null)
+	
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing setFailedRollbackStatus. ", "BPMN", MsoLogger.getServiceName(),MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setFailedRollbackStatus Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED setFailedRollbackStatus")
+	}
+	
+	
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstance.groovy
new file mode 100644
index 0000000..238ac82
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstance.groovy
@@ -0,0 +1,640 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import static org.apache.commons.lang3.StringUtils.*;
+
+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.delegate.DelegateExecution
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+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 org.onap.so.client.aai.entities.uri.AAIResourceUri
+import org.onap.so.client.aai.entities.uri.AAIUriFactory
+import org.onap.so.client.aai.AAIObjectType
+import org.onap.so.client.aai.AAIResourcesClient
+
+import groovy.json.*
+
+
+
+/**
+ * This groovy class supports the <class>DoDeleteE2EServiceInstance.bpmn</class> process.
+ *
+ * Inputs:
+ * @param - msoRequestId
+ * @param - globalSubscriberId - O
+ * @param - subscriptionServiceType - O
+ * @param - serviceInstanceId
+ * @param - serviceInstanceName - O
+ * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM)
+ * @param - sdncVersion
+ * @param - failNotFound - TODO
+ * @param - serviceInputParams - TODO
+ *
+ * Outputs:
+ * @param - WorkflowException
+ *
+ * Rollback - Deferred
+ */
+public class DoCustomDeleteE2EServiceInstance extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCustomDeleteE2EServiceInstance.class);
+
+
+	String Prefix="DDELSI_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	public void preProcessRequest (DelegateExecution execution) {
+		msoLogger.trace("preProcessRequest ")
+		String msg = ""
+
+		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
+			if (globalSubscriberId == null)
+			{
+				execution.setVariable("globalSubscriberId", "")
+			}
+
+			//requestDetails.requestParameters. for AAI PUT & SDNC assignTopology
+			String serviceType = execution.getVariable("serviceType")
+			if (serviceType == null)
+			{
+				execution.setVariable("serviceType", "")
+			}
+
+			//Generated in parent for AAI PUT
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			if (isBlank(serviceInstanceId)){
+				msg = "Input serviceInstanceId is null"
+				msoLogger.info(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+
+			String sdncCallbackUrl = UrnPropertiesReader.getVariable('mso.workflow.sdncadapter.callback',execution)
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "URN_mso_workflow_sdncadapter_callback is null"
+				msoLogger.info(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			msoLogger.info("SDNC Callback URL: " + sdncCallbackUrl)
+
+			StringBuilder sbParams = new StringBuilder()
+			Map<String, String> paramsMap = execution.getVariable("serviceInputParams")
+			if (paramsMap != null)
+			{
+				sbParams.append("<service-input-parameters>")
+				for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
+					String paramsXml
+					String paramName = entry.getKey()
+					String paramValue = entry.getValue()
+					paramsXml =
+							"""	<param>
+							<name>${MsoUtils.xmlEscape(paramName)}</name>
+							<value>${MsoUtils.xmlEscape(paramValue)}</value>
+							</param>
+							"""
+					sbParams.append(paramsXml)
+				}
+				sbParams.append("</service-input-parameters>")
+			}
+			String siParamsXml = sbParams.toString()
+			if (siParamsXml == null)
+				siParamsXml = ""
+			execution.setVariable("siParamsXml", siParamsXml)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit preProcessRequest ")
+	}
+
+
+	public void preProcessVFCDelete (DelegateExecution execution) {
+	}
+
+	public void postProcessVFCDelete(DelegateExecution execution, String response, String method) {
+	}
+
+	public void preProcessSDNCDelete (DelegateExecution execution) {
+		msoLogger.trace("preProcessSDNCDelete ")
+		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
+
+			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")
+
+				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)
+			{
+				serviceType = ""
+			}
+
+			def sdncRequestId = UUID.randomUUID().toString()
+
+			String sdncDelete =
+					"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+				   <sdncadapter:RequestHeader>
+							<sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId>
+							<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId>
+							<sdncadapter:SvcAction>delete</sdncadapter:SvcAction>
+							<sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation>
+							<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl>
+							<sdncadapter:MsoAction>${MsoUtils.xmlEscape(serviceType)}</sdncadapter:MsoAction>
+					</sdncadapter:RequestHeader>
+				<sdncadapterworkflow:SDNCRequestData>
+					<request-information>
+						<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+						<source>MSO</source>
+						<notification-url/>
+						<order-number/>
+						<order-version/>
+						<request-action>DeleteServiceInstance</request-action>
+					</request-information>
+					<service-information>
+						<service-id>${MsoUtils.xmlEscape(serviceId)}</service-id>
+						<subscription-service-type>${MsoUtils.xmlEscape(subscriptionServiceType)}</subscription-service-type>
+						<onap-model-information>
+					         <model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-uuid>
+					         <model-uuid>${MsoUtils.xmlEscape(modelUuid)}</model-uuid>
+					         <model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version>
+					         <model-name>${MsoUtils.xmlEscape(modelName)}</model-name>
+					    </onap-model-information>
+						<service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+						<subscriber-name/>
+						<global-customer-id>${MsoUtils.xmlEscape(globalSubscriberId)}</global-customer-id>
+					</service-information>
+					<service-request-input>
+						<service-instance-name>${MsoUtils.xmlEscape(serviceInstanceName)}</service-instance-name>
+						${siParamsXml}
+					</service-request-input>
+				</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			sdncDelete = utils.formatXml(sdncDelete)
+			def sdncRequestId2 = UUID.randomUUID().toString()
+			String sdncDeactivate = sdncDelete.replace(">delete<", ">deactivate<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<")
+			execution.setVariable("sdncDelete", sdncDelete)
+			execution.setVariable("sdncDeactivate", sdncDeactivate)
+			msoLogger.info("sdncDeactivate:\n" + sdncDeactivate)
+			msoLogger.info("sdncDelete:\n" + sdncDelete)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCDelete. " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Exception Occured in preProcessSDNCDelete.\n" + ex.getMessage())
+		}
+		msoLogger.info(" *****Exit preProcessSDNCDelete *****")
+	}
+
+	public void postProcessSDNCDelete(DelegateExecution execution, String response, String method) {
+
+		msoLogger.trace("postProcessSDNC " + method + " ")
+		String msg = ""
+
+		/*try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			msoLogger.info("SDNCResponse: " + response)
+			msoLogger.info("workflowException: " + workflowException)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == "true"){
+				msoLogger.info("Good response from SDNC Adapter for service-instance " + method + "response:\n" + response)
+
+			}else{
+				msg = "Bad Response from SDNC Adapter for service-instance " + method
+				msoLogger.info(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 3500, msg)
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in postProcessSDNC " + method + " Exception:" + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}*/
+		msoLogger.trace("Exit postProcessSDNC " + method + " ")
+	}
+
+	public void postProcessAAIGET(DelegateExecution execution) {
+		msoLogger.trace("postProcessAAIGET ")
+		String msg = ""
+
+		try {
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator")
+			String serviceType = ""
+
+			if(foundInAAI){
+				msoLogger.info("Found Service-instance in AAI")
+
+				String siData = execution.getVariable("GENGS_service")
+				msoLogger.info("SI Data")
+				if (isBlank(siData))
+				{
+					msg = "Could not retrive ServiceInstance data from AAI to delete id:" + serviceInstanceId
+					msoLogger.info(msg)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+				}
+				else
+				{
+					msoLogger.info("SI Data" + siData)
+					//Confirm there are no related service instances (vnf/network or volume)
+					if (utils.nodeExists(siData, "relationship-list")) {
+						msoLogger.info("SI Data relationship-list exists:")
+						InputSource source = new InputSource(new StringReader(siData));
+						DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
+						DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
+						Document serviceXml = docBuilder.parse(source)
+						serviceXml.getDocumentElement().normalize()
+						//test(siData)
+						NodeList nodeList = serviceXml.getElementsByTagName("relationship")
+	                    JSONArray jArray = new JSONArray()
+						for (int x = 0; x < nodeList.getLength(); x++) {
+							Node node = nodeList.item(x)
+							if (node.getNodeType() == Node.ELEMENT_NODE) {
+								Element eElement = (Element) node
+								def e = eElement.getElementsByTagName("related-to").item(0).getTextContent()    								//for ns
+								if(e.equals("service-instance")){
+								    def relatedObject = eElement.getElementsByTagName("related-link").item(0).getTextContent()
+									msoLogger.info("ServiceInstance Related NS :" + relatedObject)
+                                    NodeList dataList = node.getChildNodes()
+                                    if(null != dataList) {
+                                        JSONObject jObj = new JSONObject()
+                                        for (int i = 0; i < dataList.getLength(); i++) {
+                                            Node dNode = dataList.item(i)
+                                            if(dNode.getNodeName() == "relationship-data") {
+                                                Element rDataEle = (Element)dNode
+                                                def eKey =  rDataEle.getElementsByTagName("relationship-key").item(0).getTextContent()
+                                                def eValue = rDataEle.getElementsByTagName("relationship-value").item(0).getTextContent()
+                                                if(eKey.equals("service-instance.service-instance-id")){
+                                                    jObj.put("resourceInstanceId", eValue)
+                                                }
+                                            }
+                                            else if(dNode.getNodeName() == "related-to-property"){
+                                                 Element rDataEle = (Element)dNode
+                                                 def eKey =  rDataEle.getElementsByTagName("property-key").item(0).getTextContent()
+                                                 def eValue = rDataEle.getElementsByTagName("property-value").item(0).getTextContent()
+                                                 if(eKey.equals("service-instance.service-instance-name")){
+                                                        jObj.put("resourceType", eValue)
+                                                    }
+                                            }
+                                        }
+                                        msoLogger.info("Relationship related to Resource:" + jObj.toString())
+                                        jArray.put(jObj)
+                                    }
+						        //for overlay/underlay
+								}else if (e.equals("configuration")){
+                                    def relatedObject = eElement.getElementsByTagName("related-link").item(0).getTextContent()
+                                    msoLogger.info("ServiceInstance Related Configuration :" + relatedObject)
+									NodeList dataList = node.getChildNodes()
+									if(null != dataList) {
+										JSONObject jObj = new JSONObject()
+										for (int i = 0; i < dataList.getLength(); i++) {
+											Node dNode = dataList.item(i)
+											if(dNode.getNodeName() == "relationship-data") {
+												Element rDataEle = (Element)dNode
+												def eKey =  rDataEle.getElementsByTagName("relationship-key").item(0).getTextContent()
+												def eValue = rDataEle.getElementsByTagName("relationship-value").item(0).getTextContent()
+												if(eKey.equals("configuration.configuration-id")){
+												    jObj.put("resourceInstanceId", eValue)
+												}
+											}
+											else if(dNode.getNodeName() == "related-to-property"){
+	                                             Element rDataEle = (Element)dNode
+	                                             def eKey =  rDataEle.getElementsByTagName("property-key").item(0).getTextContent()
+	                                             def eValue = rDataEle.getElementsByTagName("property-value").item(0).getTextContent()
+	                                             if(eKey.equals("configuration.configuration-type")){
+	                                                    jObj.put("resourceType", eValue)
+	                                                }
+											}
+										}
+										msoLogger.info("Relationship related to Resource:" + jObj.toString())
+                                        jArray.put(jObj)
+									}
+								}
+							}
+						}
+                        execution.setVariable("serviceRelationShip", jArray.toString())
+					}
+				}
+			}else{
+				boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")
+				if(!succInAAI){
+					msoLogger.info("Error getting Service-instance from AAI", + serviceInstanceId)
+					WorkflowException workflowException = execution.getVariable("WorkflowException")
+					msoLogger.debug("workflowException: " + workflowException)
+					if(workflowException != null){
+						exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+					}
+					else
+					{
+						msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI
+						msoLogger.info(msg)
+						exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+					}
+				}
+
+				msoLogger.info("Service-instance NOT found in AAI. Silent Success")
+			}
+		}catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoDeleteE2EServiceInstance.postProcessAAIGET. " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit postProcessAAIGET ")
+	}
+
+	/**
+	 * Deletes the service instance in aai
+	 */
+	public void deleteServiceInstance(DelegateExecution execution) {
+		msoLogger.trace("Entered deleteServiceInstance")
+		try {
+			String globalCustId = execution.getVariable("globalSubscriberId")
+			String serviceType = execution.getVariable("serviceType")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+			AAIResourcesClient resourceClient = new AAIResourcesClient();
+			AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustId, serviceType, serviceInstanceId)
+			resourceClient.delete(serviceInstanceUri)
+
+			msoLogger.trace("Exited deleteServiceInstance")
+		}catch(Exception e){
+			msoLogger.debug("Error occured within deleteServiceInstance method: " + e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Error occured during deleteServiceInstance from aai")
+		}
+	}
+
+   public void preInitResourcesOperStatus(DelegateExecution execution){
+        msoLogger.trace("STARTED preInitResourcesOperStatus Process ")
+        try{
+            String serviceId = execution.getVariable("serviceInstanceId")
+            String operationId = execution.getVariable("operationId")
+            String operationType = execution.getVariable("operationType")
+            String resourceTemplateUUIDs = ""
+            String result = "processing"
+            String progress = "0"
+            String reason = ""
+            String operationContent = "Prepare service creation"
+            msoLogger.info("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId + " operationType:" + operationType)
+            serviceId = UriUtils.encode(serviceId,"UTF-8")
+            execution.setVariable("serviceInstanceId", serviceId)
+            execution.setVariable("operationId", operationId)
+            execution.setVariable("operationType", operationType)
+            // we use resource instance ids for delete flow as resourceTemplateUUIDs
+            /*[
+             {
+                 "resourceInstanceId":"1111",
+                 "resourceType":"vIMS"
+             },
+             {
+                 "resourceInstanceId":"222",
+                 "resourceType":"vEPC"
+             },
+             {
+                 "resourceInstanceId":"3333",
+                 "resourceType":"overlay"
+             },
+             {
+                 "resourceInstanceId":"4444",
+                 "resourceType":"underlay"
+             }
+         ]*/
+            String serviceRelationShip = execution.getVariable("serviceRelationShip")
+
+            def jsonSlurper = new JsonSlurper()
+            def jsonOutput = new JsonOutput()
+            List relationShipList =  jsonSlurper.parseText(serviceRelationShip)
+
+            if (relationShipList != null) {
+                relationShipList.each {
+                    resourceTemplateUUIDs  = resourceTemplateUUIDs + it.resourceInstanceId + ":"
+                }
+            }
+            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/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                        <soapenv:Header/>
+                        <soapenv:Body>
+                            <ns:initResourceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
+                            <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
+                            <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                            <operationType>${MsoUtils.xmlEscape(operationType)}</operationType>
+                            <resourceTemplateUUIDs>${MsoUtils.xmlEscape(resourceTemplateUUIDs)}</resourceTemplateUUIDs>
+                        </ns:initResourceOperationStatus>
+                    </soapenv:Body>
+                </soapenv:Envelope>"""
+
+            payload = utils.formatXml(payload)
+            execution.setVariable("CVFMI_initResOperStatusRequest", payload)
+            msoLogger.info("Outgoing initResourceOperationStatus: \n" + payload)
+            msoLogger.debug("CreateVfModuleInfra Outgoing initResourceOperationStatus Request: " + payload)
+
+        }catch(Exception e){
+            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preInitResourcesOperStatus.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, e);
+            execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during preInitResourcesOperStatus Method:\n" + e.getMessage())
+        }
+        msoLogger.trace("COMPLETED preInitResourcesOperStatus Process ")
+    }
+
+   /**
+    * prepare delete parameters
+    */
+   public void preResourceDelete(execution, resourceName){
+       // we use resource instance ids for delete flow as resourceTemplateUUIDs
+       /*[
+        {
+            "resourceInstanceId":"1111",
+            "resourceType":"vIMS"
+        },
+        {
+            "resourceInstanceId":"222",
+            "resourceType":"vEPC"
+        },
+        {
+            "resourceInstanceId":"3333",
+            "resourceType":"overlay"
+        },
+        {
+            "resourceInstanceId":"4444",
+            "resourceType":"underlay"
+        }
+    ]*/
+       msoLogger.trace("STARTED preResourceDelete Process ")
+       String serviceRelationShip = execution.getVariable("serviceRelationShip")
+       def jsonSlurper = new JsonSlurper()
+       def jsonOutput = new JsonOutput()
+       List relationShipList =  jsonSlurper.parseText(serviceRelationShip)
+
+       if (relationShipList != null) {
+           relationShipList.each {
+               if(StringUtils.containsIgnoreCase(it.resourceType, resourceName)) {
+				   String resourceInstanceUUID = it.resourceInstanceId
+				   String resourceTemplateUUID = it.resourceInstanceId
+				   execution.setVariable("resourceTemplateId", resourceTemplateUUID)
+				   execution.setVariable("resourceInstanceId", resourceInstanceUUID)
+				   execution.setVariable("resourceType", resourceName)
+			       msoLogger.info("Delete Resource Info resourceTemplate Id :" + resourceTemplateUUID + "  resourceInstanceId: " + resourceInstanceUUID + " resourceType: " + resourceName)
+			   }
+           }
+       }
+       msoLogger.trace("END preResourceDelete Process ")
+   }
+
+   public void sequenceResource(execution){
+       msoLogger.trace("STARTED sequenceResource Process ")
+       List<String> nsResources = new ArrayList<String>()
+       List<String> wanResources = new ArrayList<String>()
+       List<String> resourceSequence = new  ArrayList<String>()
+
+       String serviceRelationShip = execution.getVariable("serviceRelationShip")
+
+
+       def jsonSlurper = new JsonSlurper()
+       def jsonOutput = new JsonOutput()
+       List relationShipList =  jsonSlurper.parseText(serviceRelationShip)
+
+       if (relationShipList != null) {
+           relationShipList.each {
+               if(StringUtils.containsIgnoreCase(it.resourceType, "overlay") || StringUtils.containsIgnoreCase(it.resourceType, "underlay")){
+                   wanResources.add(it.resourceType)
+               }else{
+                   nsResources.add(it.resourceType)
+               }
+           }
+       }
+       resourceSequence.addAll(wanResources)
+       resourceSequence.addAll(nsResources)
+       String isContainsWanResource = wanResources.isEmpty() ? "false" : "true"
+       execution.setVariable("isContainsWanResource", isContainsWanResource)
+       execution.setVariable("currentResourceIndex", 0)
+       execution.setVariable("resourceSequence", resourceSequence)
+       msoLogger.info("resourceSequence: " + resourceSequence)
+       execution.setVariable("wanResources", wanResources)
+       msoLogger.trace("END sequenceResource Process ")
+   }
+
+   public void getCurrentResource(execution){
+       msoLogger.trace("Start getCurrentResoure Process ")
+       def currentIndex = execution.getVariable("currentResourceIndex")
+       List<String> resourceSequence = execution.getVariable("resourceSequence")
+       List<String> wanResources = execution.getVariable("wanResources")
+       String resourceName =  resourceSequence.get(currentIndex)
+       execution.setVariable("resourceType",resourceName)
+       if(wanResources.contains(resourceName)){
+           execution.setVariable("controllerInfo", "SDN-C")
+       }else{
+           execution.setVariable("controllerInfo", "VF-C")
+       }
+       msoLogger.trace("COMPLETED getCurrentResoure Process ")
+   }
+
+   public void parseNextResource(execution){
+       msoLogger.trace("Start parseNextResource Process ")
+       def currentIndex = execution.getVariable("currentResourceIndex")
+       def nextIndex =  currentIndex + 1
+       execution.setVariable("currentResourceIndex", nextIndex)
+       List<String> resourceSequence = execution.getVariable("resourceSequence")
+       if(nextIndex >= resourceSequence.size()){
+           execution.setVariable("allResourceFinished", "true")
+       }else{
+           execution.setVariable("allResourceFinished", "false")
+       }
+       msoLogger.trace("COMPLETED parseNextResource Process ")
+   }
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2.groovy
new file mode 100644
index 0000000..20a7f43
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2.groovy
@@ -0,0 +1,1132 @@
+/*-
+ * ============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.onap.so.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.json.JSONArray;
+import org.json.JSONObject;
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse;
+import org.springframework.web.util.UriUtils;
+
+import groovy.json.*
+
+
+
+/**
+ * This groovy class supports the <class>DoDeleteE2EServiceInstance.bpmn</class> process.
+ *
+ * Inputs:
+ * @param - msoRequestId
+ * @param - globalSubscriberId - O
+ * @param - subscriptionServiceType - O
+ * @param - serviceInstanceId
+ * @param - serviceInstanceName - O
+ * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM)
+ * @param - sdncVersion
+ * @param - failNotFound - TODO
+ * @param - serviceInputParams - TODO
+ *
+ * Outputs:
+ * @param - WorkflowException
+ *
+ * Rollback - Deferred
+ */
+public class DoCustomDeleteE2EServiceInstanceV2 extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCustomDeleteE2EServiceInstanceV2.class);
+
+
+	String Prefix="DDELSI_"
+	private static final String DebugFlag = "isDebugEnabled"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	public void preProcessRequest (DelegateExecution execution) {
+
+		def method = getClass().getSimpleName() + '.buildAPPCRequest(' +'execution=' + execution.getId() +')'
+		msoLogger.info("Entered " + method)
+		msoLogger.trace("preProcessRequest ")
+		String msg = ""
+
+		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
+			if (globalSubscriberId == null)
+			{
+				execution.setVariable("globalSubscriberId", "")
+			}
+
+			//requestDetails.requestParameters. for AAI PUT & SDNC assignTopology
+			String serviceType = execution.getVariable("serviceType")
+			if (serviceType == null)
+			{
+				execution.setVariable("serviceType", "")
+			}
+
+			//Generated in parent for AAI PUT
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			if (isBlank(serviceInstanceId)){
+				msg = "Input serviceInstanceId is null"
+				msoLogger.info(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+
+			String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback')
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "URN_mso_workflow_sdncadapter_callback is null"
+				msoLogger.info(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			msoLogger.info("SDNC Callback URL: " + sdncCallbackUrl)
+
+			StringBuilder sbParams = new StringBuilder()
+			Map<String, String> paramsMap = execution.getVariable("serviceInputParams")
+			if (paramsMap != null)
+			{
+				sbParams.append("<service-input-parameters>")
+				for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
+					String paramsXml
+					String paramName = entry.getKey()
+					String paramValue = entry.getValue()
+					paramsXml =
+							"""	<param>
+							<name>${MsoUtils.xmlEscape(paramName)}</name>
+							<value>${MsoUtils.xmlEscape(paramValue)}</value>
+							</param>
+							"""
+					sbParams.append(paramsXml)
+				}
+				sbParams.append("</service-input-parameters>")
+			}
+			String siParamsXml = sbParams.toString()
+			if (siParamsXml == null)
+				siParamsXml = ""
+			execution.setVariable("siParamsXml", siParamsXml)
+			execution.setVariable("operationStatus", "Waiting delete resource...")
+			execution.setVariable("progress", "0")
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.info("Exited " + method)
+	}
+
+
+
+	public void postProcessAAIGET(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.postProcessAAIGET(' +'execution=' + execution.getId() +')'
+		msoLogger.info("Entered " + method)
+
+		String msg = ""
+
+		try {
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			msoLogger.info("serviceInstanceId: "+serviceInstanceId)
+
+			boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator")
+			msoLogger.info("foundInAAI: "+foundInAAI)
+
+			String serviceType = ""
+
+
+			if(foundInAAI){
+				msoLogger.info("Found Service-instance in AAI")
+
+				String siData = execution.getVariable("GENGS_service")
+				msoLogger.info("SI Data")
+				if (isBlank(siData))
+				{
+					msg = "Could not retrive ServiceInstance data from AAI to delete id:" + serviceInstanceId
+					msoLogger.info(msg)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+				}
+
+			}else{
+				boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")
+				if(!succInAAI){
+					msoLogger.info("Error getting Service-instance from AAI", + serviceInstanceId)
+					WorkflowException workflowException = execution.getVariable("WorkflowException")
+					msoLogger.debug("workflowException: " + workflowException)
+					if(workflowException != null){
+						exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+					}
+					else
+					{
+						msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI
+						msoLogger.info(msg)
+						exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+					}
+				}
+
+				msoLogger.info("Service-instance NOT found in AAI. Silent Success")
+			}
+		}catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Bpmn error encountered in " + method + "--" + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.info("Exited " + method)
+	}
+
+	private void loadResourcesProperties(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.loadResourcesProperties(' +'execution=' + execution.getId() +')'
+		def isDebugEnabled = execution.getVariable("isDebugEnabled")
+		msoLogger.info("Entered " + method)
+		String loadFilePath = "/etc/mso/config.d/reources.json"
+		try{
+			def jsonPayload = new File(loadFilePath).text
+			msoLogger.info("jsonPayload: " + jsonPayload)
+
+			String resourcesProperties = jsonUtil.prettyJson(jsonPayload.toString())
+			msoLogger.info("resourcesProperties: " + resourcesProperties)
+
+			String createResourceSort = jsonUtil.getJsonValue(resourcesProperties, "CreateResourceSort")
+			msoLogger.info("createResourceSort: " + createResourceSort)
+			execution.setVariable("createResourceSort", createResourceSort)
+
+			String deleteResourceSort = jsonUtil.getJsonValue(resourcesProperties, "DeleteResourceSort")
+			msoLogger.info("deleteResourceSort: " + deleteResourceSort)
+			execution.setVariable("deleteResourceSort", deleteResourceSort)
+
+
+			String resourceControllerType = jsonUtil.getJsonValue(resourcesProperties, "ResourceControllerType")
+			msoLogger.info("resourceControllerType: " + resourceControllerType)
+			execution.setVariable("resourceControllerType", resourceControllerType)
+
+
+		}catch(Exception ex){
+            // try error in method block
+			String exceptionMessage = "Bpmn error encountered in " + method + " - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+	    msoLogger.info("Exited " + method)
+	}
+	private void sortDeleteResource(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.sortDeleteResource(' +'execution=' + execution.getId() +')'
+		def isDebugEnabled = execution.getVariable("isDebugEnabled")
+		msoLogger.info("Entered " + method)
+		String deleteResourceSortDef = """[
+                {
+                    "resourceType":"GRE_SAR"
+                },
+                {
+                    "resourceType":"VPN_SAR"
+                },
+                {
+                    "resourceType":"APN_AAR"
+                },
+				{
+                    "resourceType":"GRE_AAR"
+                },
+                {
+                    "resourceType":"Overlay"
+                },
+				{
+                    "resourceType":"Underlay"
+                },
+                {
+                    "resourceType":"vIMS"
+                },
+                {
+                    "resourceType":"vCPE"
+                },
+                {
+                    "resourceType":"vFW"
+                },
+                {
+                    "resourceType":"vEPC"
+                }
+
+
+            ]""".trim()
+
+        try{
+			loadResourcesProperties(execution)
+			String deleteResourceSort = execution.getVariable("deleteResourceSort")
+			if (isBlank(deleteResourceSort)) {
+				deleteResourceSort = deleteResourceSortDef;
+			}
+
+			List<String> sortResourceList = jsonUtil.StringArrayToList(execution, deleteResourceSort)
+	        msoLogger.info("sortResourceList : " + sortResourceList)
+
+			JSONArray newResourceList      = new JSONArray()
+			int resSortCount = sortResourceList.size()
+
+			for ( int currentResource = 0 ; currentResource < resSortCount ; currentResource++ ) {
+				String currentSortResource = sortResourceList[currentResource]
+				String sortResourceType = jsonUtil.getJsonValue(currentSortResource, "resourceType")
+				List<String> resourceList = execution.getVariable(Prefix+"resourceList")
+
+				for (String resource : resourceList) {
+					msoLogger.info("resource : " + resource)
+					String resourceType = jsonUtil.getJsonValue(resource, "resourceType")
+
+					if (StringUtils.containsIgnoreCase(resourceType, sortResourceType)) {
+						JSONObject jsonObj = new JSONObject(resource)
+						newResourceList.put(jsonObj)
+					}
+					msoLogger.info("Get next sort type " )
+				}
+			}
+
+            String newResourceStr = newResourceList.toString()
+            List<String> newResourceListStr = jsonUtil.StringArrayToList(execution, newResourceStr)
+
+			execution.setVariable(Prefix+"resourceList", newResourceListStr)
+			msoLogger.info("newResourceList : " + newResourceListStr)
+
+		}catch(Exception ex){
+            // try error in method block
+			String exceptionMessage = "Bpmn error encountered in " + method + " - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+	    msoLogger.info("Exited " + method)
+
+	}
+	public void prepareServiceDeleteResource(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepareServiceDeleteResource(' +'execution=' + execution.getId() +')'
+		msoLogger.info("Entered " + method)
+
+		try {
+
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+			// confirm if ServiceInstance was found
+			if ( !execution.getVariable("GENGS_FoundIndicator") )
+			{
+				String exceptionMessage = "Bpmn error encountered in DeleteMobileAPNCustService flow. Service Instance was not found in AAI by id: " + serviceInstanceId
+				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+			}
+
+			execution.setVariable(Prefix+"resourceList", "")
+			execution.setVariable(Prefix+"resourceCount", 0)
+			execution.setVariable(Prefix+"nextResource", 0)
+			execution.setVariable(Prefix+"resourceFinish", true)
+
+			// get SI extracted by GenericGetService
+			String serviceInstanceAaiRecord = execution.getVariable("GENGS_service");
+			msoLogger.info("serviceInstanceAaiRecord: " +serviceInstanceAaiRecord)
+
+			String aaiJsonRecord = jsonUtil.xml2json(serviceInstanceAaiRecord)
+
+			msoLogger.info("aaiJsonRecord: " +aaiJsonRecord)
+			def serviceInstanceName = jsonUtil.getJsonValue(aaiJsonRecord, "service-instance.service-instance-name")
+			execution.setVariable("serviceInstanceName",serviceInstanceName)
+
+			def serviceType = jsonUtil.getJsonValue(aaiJsonRecord, "service-instance.service-type")
+			execution.setVariable("serviceType",serviceType)
+
+
+			String relationshipList = jsonUtil.getJsonValue(aaiJsonRecord, "service-instance.relationship-list")
+			msoLogger.info("relationship-list:" + relationshipList)
+			if (! isBlank(relationshipList)){
+				msoLogger.info("relationship-list exists" )
+				String relationShip = jsonUtil.getJsonValue(relationshipList, "relationship")
+				msoLogger.info("relationship: " + relationShip)
+				JSONArray allResources      = new JSONArray()
+				JSONArray serviceResources  = new JSONArray()
+				JSONArray networkResources  = new JSONArray()
+				JSONArray allottedResources = new JSONArray()
+
+
+				if (! isBlank(relationShip)){
+					JSONArray jsonArray = new JSONArray();
+					if (relationShip.startsWith("{") && relationShip.endsWith("}")) {
+						JSONObject jsonObject = new JSONObject(relationShip);
+						jsonArray.put(jsonObject);
+					} else if (relationShip.startsWith("[") && relationShip.endsWith("]")) {
+						jsonArray = new JSONArray(relationShip);
+					} else {
+						msoLogger.info("The relationShip fomart is error" )
+					}
+
+					List<String> relationList = jsonUtil.StringArrayToList(execution, jsonArray.toString())
+
+					msoLogger.info("relationList: " + relationList)
+
+					int relationNum =relationList.size()
+					msoLogger.info("**************relationList size: " + relationNum)
+
+					for ( int currentRelation = 0 ; currentRelation < relationNum ; currentRelation++ ) {
+						msoLogger.info("current Relation num: " + currentRelation)
+						String relation = relationList[currentRelation]
+						msoLogger.info("relation: " + relation)
+
+						String relatedTo = jsonUtil.getJsonValue(relation, "related-to")
+            			msoLogger.info("relatedTo: " + relatedTo)
+
+						String relatedLink = jsonUtil.getJsonValue(relation, "related-link")
+						msoLogger.info("relatedLink: " + relatedLink)
+
+            			if (StringUtils.equalsIgnoreCase(relatedTo, "allotted-resource")) {
+                			msoLogger.info("allotted-resource exists ")
+
+							String aaiArRsp = getAaiAr(execution, relatedLink)
+							msoLogger.info("aaiArRsp: " + aaiArRsp)
+							if (! isBlank(aaiArRsp)) {
+								def type = utils.getNodeText(aaiArRsp, "type")
+								def id = utils.getNodeText(aaiArRsp, "id")
+							    def role = utils.getNodeText(aaiArRsp, "role")
+								def resourceVersion = utils.getNodeText(aaiArRsp, "resource-version")
+
+								JSONObject jObject = new JSONObject()
+								jObject.put("resourceType", type)
+								jObject.put("resourceInstanceId", id)
+								jObject.put("resourceRole", role)
+								jObject.put("resourceVersion", resourceVersion)
+
+								allResources.put(jObject)
+								msoLogger.info("allResources: " + allResources)
+								allottedResources.put(jObject)
+								msoLogger.info("allottedResources: " + allottedResources)
+							}
+						}
+						else if (StringUtils.equalsIgnoreCase(relatedTo, "service-instance")){
+                			msoLogger.info("service-instance exists ")
+							JSONObject jObject = new JSONObject()
+
+							//relationship-data
+							String rsDataStr  = jsonUtil.getJsonValue(relation, "relationship-data")
+							msoLogger.info("rsDataStr: " + rsDataStr)
+							List<String> rsDataList = jsonUtil.StringArrayToList(execution, rsDataStr)
+							msoLogger.info("rsDataList: " + rsDataList)
+							for(String rsData : rsDataList){
+								msoLogger.info("rsData: " + rsData)
+								def eKey =  jsonUtil.getJsonValue(rsData, "relationship-key")
+ 								def eValue = jsonUtil.getJsonValue(rsData, "relationship-value")
+								if(eKey.equals("service-instance.service-instance-id")){
+									jObject.put("resourceInstanceId", eValue)
+								}
+								if(eKey.equals("service-subscription.service-type")){
+									jObject.put("resourceType", eValue)
+								}
+							}
+
+							//related-to-property
+							String rPropertyStr  = jsonUtil.getJsonValue(relation, "related-to-property")
+							msoLogger.info("related-to-property: " + rPropertyStr)
+							if (rPropertyStr instanceof JSONArray){
+								List<String> rPropertyList = jsonUtil.StringArrayToList(execution, rPropertyStr)
+								for (String rProperty : rPropertyList) {
+									msoLogger.info("rProperty: " + rProperty)
+									def eKey =  jsonUtil.getJsonValue(rProperty, "property-key")
+ 									def eValue = jsonUtil.getJsonValue(rProperty, "property-value")
+									if(eKey.equals("service-instance.service-instance-name")){
+										jObject.put("resourceName", eValue)
+									}
+								}
+							}
+							else {
+								String rProperty = rPropertyStr
+								msoLogger.info("rProperty: " + rProperty)
+								def eKey =  jsonUtil.getJsonValue(rProperty, "property-key")
+ 								def eValue = jsonUtil.getJsonValue(rProperty, "property-value")
+								if (eKey.equals("service-instance.service-instance-name")) {
+									jObject.put("resourceName", eValue)
+								}
+							}
+
+							allResources.put(jObject)
+							msoLogger.info("allResources: " + allResources)
+
+							serviceResources.put(jObject)
+							msoLogger.info("serviceResources: " + serviceResources)
+						}
+						else if (StringUtils.equalsIgnoreCase(relatedTo, "configuration")) {
+                			msoLogger.info("configuration ")
+							JSONObject jObject = new JSONObject()
+
+							//relationship-data
+							String rsDataStr  = jsonUtil.getJsonValue(relation, "relationship-data")
+							msoLogger.info("rsDataStr: " + rsDataStr)
+							List<String> rsDataList = jsonUtil.StringArrayToList(execution, rsDataStr)
+							msoLogger.info("rsDataList: " + rsDataList)
+							for (String rsData : rsDataList) {
+								msoLogger.info("rsData: " + rsData)
+								def eKey =  jsonUtil.getJsonValue(rsData, "relationship-key")
+ 								def eValue = jsonUtil.getJsonValue(rsData, "relationship-value")
+								if(eKey.equals("configuration.configuration-id")){
+									jObject.put("resourceInstanceId", eValue)
+								}
+							}
+
+
+							//related-to-property
+							String rPropertyStr  = jsonUtil.getJsonValue(relation, "related-to-property")
+							msoLogger.info("related-to-property: " + rPropertyStr)
+							if (rPropertyStr instanceof JSONArray){
+								List<String> rPropertyList = jsonUtil.StringArrayToList(execution, rPropertyStr)
+								for(String rProperty : rPropertyList){
+									msoLogger.info("rProperty: " + rProperty)
+									def eKey =  jsonUtil.getJsonValue(rProperty, "property-key")
+ 									def eValue = jsonUtil.getJsonValue(rProperty, "property-value")
+									if(eKey.equals("configuration.configuration-type")){
+										jObject.put("resourceType", eValue)
+									}
+								}
+							}
+							else {
+								String rProperty = rPropertyStr
+								msoLogger.info("rProperty: " + rProperty)
+								def eKey =  jsonUtil.getJsonValue(rProperty, "property-key")
+ 								def eValue = jsonUtil.getJsonValue(rProperty, "property-value")
+								if(eKey.equals("configuration.configuration-type")){
+									jObject.put("resourceType", eValue)
+								}
+							}
+							allResources.put(jObject)
+							msoLogger.info("allResources: " + allResources)
+
+							networkResources.put(jObject)
+							msoLogger.info("networkResources: " + networkResources)
+						}
+						msoLogger.info("Get Next releation resource " )
+
+					}
+					msoLogger.info("Get releation finished. " )
+				}
+
+				execution.setVariable("serviceRelationShip", allResources.toString())
+			    msoLogger.info("allResources: " + allResources.toString())
+				String serviceRelationShip = execution.getVariable("serviceRelationShip")
+				msoLogger.info("serviceRelationShip: " + serviceRelationShip)
+				if ((! isBlank(serviceRelationShip)) && (! serviceRelationShip.isEmpty())) {
+
+					List<String> relationShipList = jsonUtil.StringArrayToList(execution, serviceRelationShip)
+					msoLogger.info("relationShipList: " + relationShipList)
+					execution.setVariable(Prefix+"resourceList", relationShipList)
+
+					int resourceCount = relationShipList.size()
+					msoLogger.info("resourceCount: " + resourceCount)
+					execution.setVariable(Prefix+"resourceCount",resourceCount )
+
+					int resourceNum = 0
+					execution.setVariable(Prefix+"nextResource", resourceNum)
+					msoLogger.info("start sort delete resource: ")
+					sortDeleteResource(execution)
+
+
+					if (resourceNum < resourceCount) {
+						execution.setVariable(Prefix+"resourceFinish", false)
+					}
+					else {
+			    		execution.setVariable(Prefix+"resourceFinish", true)
+					}
+					msoLogger.info("Resource  list set end : " + resourceCount)
+                }
+
+				execution.setVariable("serviceResources", serviceResources.toString())
+				msoLogger.info("serviceResources: " + serviceResources)
+				String serviceResourcesShip = execution.getVariable("serviceResources")
+				msoLogger.info("serviceResourcesShip: " + serviceResourcesShip)
+
+				if ((! isBlank(serviceResourcesShip)) && (! serviceResourcesShip.isEmpty())) {
+                    List<String> serviceResourcesList = jsonUtil.StringArrayToList(execution, serviceResourcesShip)
+					msoLogger.info("serviceResourcesList: " + serviceResourcesList)
+					execution.setVariable(Prefix+"serviceResourceList", serviceResourcesList)
+			    	execution.setVariable(Prefix+"serviceResourceCount", serviceResourcesList.size())
+			    	execution.setVariable(Prefix+"nextServiceResource", 0)
+			    	msoLogger.info("Service Resource  list set end : " + serviceResourcesList.size())
+
+                }
+
+				execution.setVariable("allottedResources", allottedResources.toString())
+				msoLogger.info("allottedResources: " + allottedResources)
+				String allottedResourcesShip = execution.getVariable("allottedResources")
+				msoLogger.info("allottedResourcesShip: " + allottedResourcesShip)
+				if ((! isBlank(allottedResourcesShip)) && (! allottedResourcesShip.isEmpty())) {
+                    List<String> allottedResourcesList = jsonUtil.StringArrayToList(execution, allottedResourcesShip)
+					msoLogger.info("allottedResourcesList: " + allottedResourcesList)
+					execution.setVariable(Prefix+"allottedResourcesList", allottedResourcesList)
+			    	execution.setVariable(Prefix+"allottedResourcesListCount", allottedResourcesList.size())
+			    	execution.setVariable(Prefix+"nextAllottedResourcesList", 0)
+			    	msoLogger.info("Allotted Resource  list set end : " + allottedResourcesList.size())
+
+                }
+				execution.setVariable("networkResources", networkResources.toString())
+				msoLogger.info("networkResources: " + networkResources)
+				String networkResourcesShip = execution.getVariable("networkResources")
+				msoLogger.info("networkResourcesShip: " + networkResourcesShip)
+				if ((! isBlank(networkResourcesShip)) && (! networkResourcesShip.isEmpty())) {
+                    List<String> networkResourcesList = jsonUtil.StringArrayToList(execution, networkResourcesShip)
+					msoLogger.info("networkResourcesList: " + networkResourcesList)
+					execution.setVariable(Prefix+"networkResourcesList", networkResourcesList)
+			    	execution.setVariable(Prefix+"networkResourcesListCount", networkResourcesList.size())
+			    	execution.setVariable(Prefix+"nextNetworkResourcesList", 0)
+			    	msoLogger.info("Network Resource  list set end : " + networkResourcesList.size())
+
+                }
+			}
+		} catch (BpmnError e){
+			throw e;
+		} catch (Exception ex) {
+		    String exceptionMessage = "Bpmn error encountered in DeleteMobileAPNCustService flow. prepareServiceDeleteResource() - " + ex.getMessage()
+		    msoLogger.debug(exceptionMessage)
+		    exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+		msoLogger.info("Exited " + method)
+	}
+
+	private String getAaiAr(DelegateExecution execution, String relink) {
+		def method = getClass().getSimpleName() + '.getAaiAr(' +'execution=' + execution.getId() +')'
+		msoLogger.info("Entered " + method)
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aaiEndpoint = execution.getVariable("URN_aai_endpoint") + relink
+
+		msoLogger.debug("get AR info " + aaiEndpoint)
+		APIResponse response = aaiUtil.executeAAIGetCall(execution, aaiEndpoint)
+
+		int responseCode = response.getStatusCode()
+		msoLogger.debug("get AR info responseCode:" + responseCode)
+
+		String aaiResponse = response.getResponseBodyAsString()
+		msoLogger.debug("get AR info " + aaiResponse)
+
+		if(responseCode < 200 || responseCode >= 300 || isBlank(aaiResponse)) {
+			return null
+		}
+
+		msoLogger.info("Exited " + method)
+		return aaiResponse
+	}
+	/**
+	 * prepare Decompose next resource to create request
+	 */
+	public void preProcessDecomposeNextResource(DelegateExecution execution){
+        def method = getClass().getSimpleName() + '.getAaiAr(' +'execution=' + execution.getId() +')'
+		msoLogger.info("Entered " + method)
+        msoLogger.trace("STARTED preProcessDecomposeNextResource Process ")
+        try{
+            int resourceNum = execution.getVariable(Prefix+"nextServiceResource")
+			List<String> serviceResourceList = execution.getVariable(Prefix+"serviceResourceList")
+			msoLogger.info("Service Resource List : " + serviceResourceList)
+
+			String serviceResource = serviceResourceList[resourceNum]
+            execution.setVariable(Prefix+"serviceResource", serviceResource)
+			msoLogger.info("Current Service Resource : " + serviceResource)
+
+			String resourceType  = jsonUtil.getJsonValue(serviceResource, "resourceType")
+			execution.setVariable("resourceType", resourceType)
+			msoLogger.info("resourceType : " + resourceType)
+
+			String resourceInstanceId  = jsonUtil.getJsonValue(serviceResource, "resourceInstanceId")
+			execution.setVariable("resourceInstanceId", resourceInstanceId)
+			msoLogger.info("resourceInstanceId : " + resourceInstanceId)
+
+			String resourceRole  = jsonUtil.getJsonValue(serviceResource, "resourceRole")
+			execution.setVariable("resourceRole", resourceRole)
+			msoLogger.info("resourceRole : " + resourceRole)
+
+			String resourceVersion  = jsonUtil.getJsonValue(serviceResource, "resourceVersion")
+			execution.setVariable("resourceVersion", resourceVersion)
+			msoLogger.info("resourceVersion : " + resourceVersion)
+
+			String resourceName = jsonUtil.getJsonValue(serviceResource, "resourceName")
+			if (isBlank(resourceName)){
+				resourceName = resourceInstanceId
+			}
+			execution.setVariable(Prefix+"resourceName", resourceName)
+			msoLogger.info("resource Name : " + resourceName)
+
+
+			execution.setVariable(Prefix+"nextServiceResource", resourceNum + 1)
+
+			int serviceResourceCount = execution.getVariable(Prefix+"serviceResourceCount")
+			if (serviceResourceCount >0 ){
+			    int progress = (resourceNum*100) / serviceResourceCount
+				execution.setVariable("progress", progress.toString() )
+			}
+			execution.setVariable("operationStatus", resourceName )
+
+        }catch(Exception e){
+            // try error in method block
+			String exceptionMessage = "Bpmn error encountered in CreateMobileAPNCustService flow. Unexpected Error from method preProcessDecomposeNextResource() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+	    msoLogger.info("Exited " + method)
+	}
+	/**
+	 * post Decompose next resource to create request
+	 */
+	public void postProcessDecomposeNextResource(DelegateExecution execution){
+        def method = getClass().getSimpleName() + '.postProcessDecomposeNextResource(' +'execution=' + execution.getId() +')'
+		msoLogger.info("Entered " + method)
+        msoLogger.trace("STARTED postProcessDecomposeNextResource Process ")
+        try{
+            String resourceName = execution.getVariable(Prefix+"resourceName")
+			int resourceNum = execution.getVariable(Prefix+"nextServiceResource")
+			msoLogger.debug("Current Resource count:"+ execution.getVariable(Prefix+"nextServiceResource"))
+
+			int resourceCount = execution.getVariable(Prefix+"serviceResourceCount")
+			msoLogger.debug("Total Resource count:"+ execution.getVariable(Prefix+"serviceResourceCount"))
+
+            if (resourceNum < resourceCount) {
+				execution.setVariable(Prefix+"resourceFinish", false)
+			}
+			else {
+			    execution.setVariable(Prefix+"resourceFinish", true)
+			}
+
+			msoLogger.debug("Resource Finished:"+ execution.getVariable(Prefix+"resourceFinish"))
+
+			if (resourceCount >0 ){
+			    int progress = (resourceNum*100) / resourceCount
+
+				execution.setVariable("progress", progress.toString() )
+				msoLogger.trace(":"+ execution.getVariable(""))
+			}
+			execution.setVariable("operationStatus", resourceName )
+
+
+        }catch(Exception e){
+            // try error in method block
+			String exceptionMessage = "Bpmn error encountered in CreateMobileAPNCustService flow. Unexpected Error from method postProcessDecomposeNextResource() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+	    msoLogger.info("Exited " + method)
+	}
+	/**
+	* prepare post Unkown Resource Type
+	*/
+	public void postOtherControllerType(DelegateExecution execution){
+        def method = getClass().getSimpleName() + '.postOtherControllerType(' +'execution=' + execution.getId() +')'
+		def isDebugEnabled = execution.getVariable("isDebugEnabled")
+		msoLogger.info("Entered " + method)
+
+        try{
+
+            String resourceName = execution.getVariable(Prefix+"resourceName")
+			String resourceType = execution.getVariable(Prefix+"resourceType")
+			String controllerType = execution.getVariable("controllerType")
+
+		    String msg = "Resource name: "+ resourceName + " resource Type: " + resourceType+ " controller Type: " + controllerType + " can not be processed  n the workflow"
+			msoLogger.debug(msg)
+
+        }catch(Exception e){
+            // try error in method block
+			String exceptionMessage = "Bpmn error encountered in DoCreateMobileAPNServiceInstance flow. Unexpected Error from method postOtherControllerType() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+	    msoLogger.info("Exited " + method)
+	}
+
+	/**
+    * prepare delete parameters
+    */
+    public void preSDNCResourceDelete(execution, resourceName){
+        // we use resource instance ids for delete flow as resourceTemplateUUIDs
+
+        def method = getClass().getSimpleName() + '.preSDNCResourceDelete(' +'execution=' + execution.getId() +')'
+		msoLogger.info("Entered " + method)
+
+        msoLogger.trace("STARTED preSDNCResourceDelete Process ")
+        String networkResources = execution.getVariable("networkResources")
+
+
+        execution.setVariable("foundResource", false)
+        if (networkResources != null) {
+            def jsonSlurper = new JsonSlurper()
+            List relationShipList =  jsonSlurper.parseText(networkResources)
+			relationShipList.each {
+                if(StringUtils.containsIgnoreCase(it.resourceType, resourceName)) {
+			 	    String resourceInstanceUUID = it.resourceInstanceId
+				    String resourceTemplateUUID = it.resourceInstanceId
+				    execution.setVariable("resourceTemplateId", resourceTemplateUUID)
+				    execution.setVariable("resourceInstanceId", resourceInstanceUUID)
+				    execution.setVariable("resourceType", resourceName)
+					execution.setVariable("foundResource", true)
+			        msoLogger.info("Delete Resource Info resourceTemplate Id :" + resourceTemplateUUID + "  resourceInstanceId: " + resourceInstanceUUID + " resourceType: " + resourceName)
+				}
+            }
+        }
+        msoLogger.info("Exited " + method)
+    }
+	public void preProcessSDNCDelete (DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessSDNCDelete(' +'execution=' + execution.getId() +')'
+		msoLogger.info("Entered " + method)
+		msoLogger.trace("preProcessSDNCDelete ")
+		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
+
+			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")
+
+				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)
+			{
+				serviceType = ""
+			}
+
+			def sdncRequestId = UUID.randomUUID().toString()
+
+			String sdncDelete =
+					"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+				   <sdncadapter:RequestHeader>
+							<sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId>
+							<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId>
+							<sdncadapter:SvcAction>delete</sdncadapter:SvcAction>
+							<sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation>
+							<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl>
+							<sdncadapter:MsoAction>${MsoUtils.xmlEscape(serviceType)}</sdncadapter:MsoAction>
+					</sdncadapter:RequestHeader>
+				<sdncadapterworkflow:SDNCRequestData>
+					<request-information>
+						<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+						<source>MSO</source>
+						<notification-url/>
+						<order-number/>
+						<order-version/>
+						<request-action>DeleteServiceInstance</request-action>
+					</request-information>
+					<service-information>
+						<service-id>${MsoUtils.xmlEscape(serviceId)}</service-id>
+						<subscription-service-type>${MsoUtils.xmlEscape(subscriptionServiceType)}</subscription-service-type>
+						<onap-model-information>
+					         <model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-uuid>
+					         <model-uuid>${MsoUtils.xmlEscape(modelUuid)}</model-uuid>
+					         <model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version>
+					         <model-name>${MsoUtils.xmlEscape(modelName)}</model-name>
+					    </onap-model-information>
+						<service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+						<subscriber-name/>
+						<global-customer-id>${MsoUtils.xmlEscape(globalSubscriberId)}</global-customer-id>
+					</service-information>
+					<service-request-input>
+						<service-instance-name>${MsoUtils.xmlEscape(serviceInstanceName)}</service-instance-name>
+						${siParamsXml}
+					</service-request-input>
+				</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			sdncDelete = utils.formatXml(sdncDelete)
+			def sdncRequestId2 = UUID.randomUUID().toString()
+			String sdncDeactivate = sdncDelete.replace(">delete<", ">deactivate<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<")
+			execution.setVariable("sdncDelete", sdncDelete)
+			execution.setVariable("sdncDeactivate", sdncDeactivate)
+			msoLogger.info("sdncDeactivate:\n" + sdncDeactivate)
+			msoLogger.info("sdncDelete:\n" + sdncDelete)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCDelete. " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Exception Occured in preProcessSDNCDelete.\n" + ex.getMessage())
+		}
+		msoLogger.info("Exited " + method)
+	}
+
+	public void postProcessSDNCDelete(DelegateExecution execution, String response, String action) {
+
+		def method = getClass().getSimpleName() + '.postProcessSDNCDelete(' +'execution=' + execution.getId() +')'
+		msoLogger.info("Entered " + method)
+		msoLogger.trace("postProcessSDNC " + action + " ")
+		String msg = ""
+
+		/*try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			msoLogger.info("SDNCResponse: " + response)
+			msoLogger.info("workflowException: " + workflowException)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == "true"){
+				msoLogger.info("Good response from SDNC Adapter for service-instance " + action + "response:\n" + response)
+
+			}else{
+				msg = "Bad Response from SDNC Adapter for service-instance " + action
+				msoLogger.info(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 3500, msg)
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in postProcessSDNC " + action + " Exception:" + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}*/
+		msoLogger.info("Exited " + method)
+	}
+
+	/**
+	 * Init the service Operation Status
+	 */
+	public void preUpdateServiceOperationStatus(DelegateExecution execution){
+        def method = getClass().getSimpleName() + '.preUpdateServiceOperationStatus(' +'execution=' + execution.getId() +')'
+		msoLogger.info("Entered " + method)
+
+        try{
+            String serviceId = execution.getVariable("serviceInstanceId")
+            String operationId = execution.getVariable("operationId")
+            String serviceName = execution.getVariable("serviceInstanceName")
+            String operationType = "DELETE"
+            String userId = ""
+            String result = "processing"
+            String progress = execution.getVariable("progress")
+			msoLogger.info("progress: " + progress )
+			if ("100".equalsIgnoreCase(progress))
+			{
+				result = "finished"
+			}
+            String reason = ""
+            String operationContent = "Prepare service delete: " + execution.getVariable("operationStatus")
+            msoLogger.info("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId)
+            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)
+            msoLogger.info("DB Adapter Endpoint is: " + dbAdapterEndpoint)
+
+            execution.setVariable("URN_mso_openecomp_adapters_db_endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter")
+
+			String payload =
+                """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                        <soapenv:Header/>
+                        <soapenv:Body>
+                            <ns:updateServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
+                            <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
+                            <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                            <serviceName>${MsoUtils.xmlEscape(serviceName)}</serviceName>
+                            <operationType>${MsoUtils.xmlEscape(operationType)}</operationType>
+                            <userId>${MsoUtils.xmlEscape(userId)}</userId>
+                            <result>${MsoUtils.xmlEscape(result)}</result>
+                            <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent>
+                            <progress>${MsoUtils.xmlEscape(progress)}</progress>
+                            <reason>${MsoUtils.xmlEscape(reason)}</reason>
+                        </ns:updateServiceOperationStatus>
+                    </soapenv:Body>
+                </soapenv:Envelope>"""
+
+            payload = utils.formatXml(payload)
+            execution.setVariable("CVFMI_updateServiceOperStatusRequest", payload)
+            msoLogger.info("Outgoing preUpdateServiceOperationStatus: \n" + payload)
+
+
+        }catch(Exception e){
+            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preUpdateServiceOperationStatus.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, e);
+            execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during preUpdateServiceOperationStatus Method:\n" + e.getMessage())
+        }
+        msoLogger.trace("COMPLETED preUpdateServiceOperationStatus Process ")
+        msoLogger.info("Exited " + method)
+	}
+
+	public void preInitResourcesOperStatus(DelegateExecution execution){
+        def method = getClass().getSimpleName() + '.preInitResourcesOperStatus(' +'execution=' + execution.getId() +')'
+		msoLogger.info("Entered " + method)
+
+        msoLogger.trace("STARTED preInitResourcesOperStatus Process ")
+		String msg=""
+        try{
+            String serviceId = execution.getVariable("serviceInstanceId")
+            String operationId = execution.getVariable("operationId")
+            String operationType = "DELETE"
+            String resourceTemplateUUIDs = ""
+            String result = "processing"
+            String progress = "0"
+            String reason = ""
+            String operationContent = "Prepare service delete"
+            msoLogger.info("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId + " operationType:" + operationType)
+            serviceId = UriUtils.encode(serviceId,"UTF-8")
+            execution.setVariable("serviceInstanceId", serviceId)
+            execution.setVariable("operationId", operationId)
+            execution.setVariable("operationType", operationType)
+
+            String serviceRelationShip = execution.getVariable("serviceRelationShip")
+            msoLogger.info("serviceRelationShip: " + serviceRelationShip)
+			if (! isBlank(serviceRelationShip)) {
+                def jsonSlurper = new JsonSlurper()
+                def jsonOutput = new JsonOutput()
+                List relationShipList =  jsonSlurper.parseText(serviceRelationShip)
+
+                if (relationShipList != null) {
+                    relationShipList.each {
+                        resourceTemplateUUIDs  = resourceTemplateUUIDs + it.resourceInstanceId + ":"
+                    }
+                }
+            }
+            def dbAdapterEndpoint = "http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter"
+            execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint)
+            msoLogger.info("DB Adapter Endpoint is: " + dbAdapterEndpoint)
+
+            String payload =
+                """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                        <soapenv:Header/>
+                        <soapenv:Body>
+                            <ns:initResourceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
+                            <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
+                            <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                            <operationType>${MsoUtils.xmlEscape(operationType)}</operationType>
+                            <resourceTemplateUUIDs>${MsoUtils.xmlEscape(resourceTemplateUUIDs)}</resourceTemplateUUIDs>
+                        </ns:initResourceOperationStatus>
+                    </soapenv:Body>
+                </soapenv:Envelope>"""
+
+            payload = utils.formatXml(payload)
+            execution.setVariable("CVFMI_initResOperStatusRequest", payload)
+            msoLogger.info("Outgoing initResourceOperationStatus: \n" + payload)
+            msoLogger.debug("DoCustomDeleteE2EServiceInstanceV2 Outgoing initResourceOperationStatus Request: " + payload)
+
+		}catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoCustomDeleteE2EServiceInstanceV2.preInitResourcesOperStatus. " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+        msoLogger.info("Exited " + method)
+    }
+
+
+
+	/**
+    * prepare delete parameters
+    */
+	public void preProcessVFCResourceDelete(execution){
+		// we use resource instance ids for delete flow as resourceTemplateUUIDs
+
+		def method = getClass().getSimpleName() + '.preProcessVFCResourceDelete(' +'execution=' + execution.getId() +')'
+		msoLogger.info("Entered " + method)
+
+		msoLogger.trace("STARTED preProcessVFCResourceDelete Process ")
+		try{
+			String serviceResource = execution.getVariable("serviceResource")
+			msoLogger.info("serviceResource : " + serviceResource)
+
+			String resourceInstanceId  =  execution.getVariable("resourceInstanceId")
+			msoLogger.info("resourceInstanceId : " + resourceInstanceId)
+
+			execution.setVariable("resourceTemplateId", resourceInstanceId)
+			msoLogger.info("resourceTemplateId : " + resourceInstanceId)
+
+			String resourceType = execution.getVariable("resourceType")
+			msoLogger.info("resourceType : " + resourceType)
+
+
+			String resourceName = execution.getVariable(Prefix+"resourceName")
+			if (isBlank(resourceName)){
+				resourceName = resourceInstanceId
+			}
+			execution.setVariable("resourceName", resourceName)
+			msoLogger.info("resource Name : " + resourceName)
+
+			msoLogger.info("Delete Resource Info: resourceInstanceId :" + resourceInstanceId + "  resourceTemplateId: " + resourceInstanceId + " resourceType: " + resourceType)
+		}catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoDeleteE2EServiceInstance.preProcessVFCResourceDelete. " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.info("Exited " + method)
+	}
+
+	public void postProcessVFCDelete(DelegateExecution execution, String response, String action) {
+		def method = getClass().getSimpleName() + '.postProcessVFCDelete(' +'execution=' + execution.getId() +')'
+		msoLogger.info("Entered " + method)
+
+		msoLogger.trace("STARTED postProcessVFCDelete Process ")
+		try{
+
+		}catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoDeleteE2EServiceInstance.postProcessVFCDelete. " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.info("Exited " + method)
+	}
+}
+
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteE2EServiceInstance.groovy
new file mode 100644
index 0000000..54dfae3
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteE2EServiceInstance.groovy
@@ -0,0 +1,439 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.bpmn.infrastructure.scripts
+
+import static org.apache.commons.lang3.StringUtils.*;
+
+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.delegate.DelegateExecution
+import org.json.JSONArray
+import org.json.JSONObject;
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.domain.Resource
+import org.onap.so.bpmn.core.domain.ServiceDecomposition;
+import org.onap.so.bpmn.core.json.JsonUtils
+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 groovy.json.*
+
+/**
+ * This groovy class supports the <class>DoDeleteE2EServiceInstance.bpmn</class> process.
+ *
+ * Inputs:
+ * @param - msoRequestId
+ * @param - globalSubscriberId - O
+ * @param - subscriptionServiceType - O
+ * @param - serviceInstanceId
+ * @param - serviceInstanceName - O
+ * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM)
+ * @param - sdncVersion
+ * @param - failNotFound - TODO
+ * @param - serviceInputParams - TODO
+ *
+ * @param - delResourceList
+ * @param - serviceRelationShip
+ *
+ * Outputs:
+ * @param - WorkflowException
+ *
+ * Rollback - Deferred
+ */
+public class DoDeleteE2EServiceInstance extends AbstractServiceTaskProcessor {
+
+	String Prefix="DDEESI_"
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+    JsonUtils jsonUtil = new JsonUtils()
+
+    public void preProcessRequest (DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO"," ***** preProcessRequest *****",  isDebugEnabled)
+        String msg = ""
+
+        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
+            if (globalSubscriberId == null)
+            {
+                execution.setVariable("globalSubscriberId", "")
+            }
+
+            //requestDetails.requestParameters. for AAI PUT & SDNC assignTopology
+            String serviceType = execution.getVariable("serviceType")
+            if (serviceType == null)
+            {
+                execution.setVariable("serviceType", "")
+            }
+
+            //Generated in parent for AAI PUT
+            String serviceInstanceId = execution.getVariable("serviceInstanceId")
+            if (isBlank(serviceInstanceId)){
+                msg = "Input serviceInstanceId is null"
+                utils.log("INFO", msg, isDebugEnabled)
+                exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+            }
+
+            String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback')
+            if (isBlank(sdncCallbackUrl)) {
+                msg = "URN_mso_workflow_sdncadapter_callback is null"
+                utils.log("INFO", msg, isDebugEnabled)
+                exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+            }
+            execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+            utils.log("INFO","SDNC Callback URL: " + sdncCallbackUrl, isDebugEnabled)
+
+            StringBuilder sbParams = new StringBuilder()
+            Map<String, String> paramsMap = execution.getVariable("serviceInputParams")
+            if (paramsMap != null)
+            {
+                sbParams.append("<service-input-parameters>")
+                for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
+                    String paramsXml
+                    String paramName = entry.getKey()
+                    String paramValue = entry.getValue()
+                    paramsXml =
+                            """	<param>
+							<name>${MsoUtils.xmlEscape(paramName)}</name>
+							<value>${MsoUtils.xmlEscape(paramValue)}</value>
+							</param>
+							"""
+                    sbParams.append(paramsXml)
+                }
+                sbParams.append("</service-input-parameters>")
+            }
+            String siParamsXml = sbParams.toString()
+            if (siParamsXml == null)
+                siParamsXml = ""
+            execution.setVariable("siParamsXml", siParamsXml)
+
+        } 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 postProcessAAIGET(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO"," ***** postProcessAAIGET ***** ", isDebugEnabled)
+        String msg = ""
+
+        try {
+            String serviceInstanceId = execution.getVariable("serviceInstanceId")
+            boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator")
+            String serviceType = ""
+
+            if(foundInAAI){
+                utils.log("INFO","Found Service-instance in AAI", isDebugEnabled)
+
+                String siData = execution.getVariable("GENGS_service")
+                utils.log("INFO", "SI Data", isDebugEnabled)
+                if (isBlank(siData))
+                {
+                    msg = "Could not retrive ServiceInstance data from AAI to delete id:" + serviceInstanceId
+                    utils.log("INFO", msg, isDebugEnabled)
+                    exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+                }
+                else
+                {
+                    InputSource source = new InputSource(new StringReader(siData));
+                    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
+                    DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
+                    Document serviceXml = docBuilder.parse(source)
+                    serviceXml.getDocumentElement().normalize()
+                    // get model invariant id
+                    // Get Template uuid and version
+                    if (utils.nodeExists(siData, "model-invariant-id") && utils.nodeExists(siData, "model-version-id") ) {
+                        utils.log("INFO", "SI Data model-invariant-id and model-version-id exist:", isDebugEnabled)
+                        def modelInvariantId  = serviceXml.getElementsByTagName("model-invariant-id").item(0).getTextContent()
+                        def modelVersionId  = serviceXml.getElementsByTagName("model-version-id").item(0).getTextContent()
+
+                        // Set Original Template info
+                        execution.setVariable("model-invariant-id-original", modelInvariantId)
+                        execution.setVariable("model-version-id-original", modelVersionId)
+                    }
+
+                    utils.log("INFO", "SI Data" + siData, isDebugEnabled)
+                    //Confirm there are no related service instances (vnf/network or volume)
+                    if (utils.nodeExists(siData, "relationship-list")) {
+                        utils.log("INFO", "SI Data relationship-list exists:", isDebugEnabled)
+                        //test(siData)
+                        NodeList nodeList = serviceXml.getElementsByTagName("relationship")
+                        JSONArray jArray = new JSONArray()
+                        for (int x = 0; x < nodeList.getLength(); x++) {
+                            Node node = nodeList.item(x)
+                            if (node.getNodeType() == Node.ELEMENT_NODE) {
+                                Element eElement = (Element) node
+                                def e = eElement.getElementsByTagName("related-to").item(0).getTextContent()    								//for ns
+                                if(e.equals("service-instance")){
+                                    def relatedObject = eElement.getElementsByTagName("related-link").item(0).getTextContent()
+                                    utils.log("INFO", "ServiceInstance Related NS :" + relatedObject, isDebugEnabled)
+                                    NodeList dataList = node.getChildNodes()
+                                    if(null != dataList) {
+                                        JSONObject jObj = new JSONObject()
+                                        for (int i = 0; i < dataList.getLength(); i++) {
+                                            Node dNode = dataList.item(i)
+                                            if(dNode.getNodeName() == "relationship-data") {
+                                                Element rDataEle = (Element)dNode
+                                                def eKey =  rDataEle.getElementsByTagName("relationship-key").item(0).getTextContent()
+                                                def eValue = rDataEle.getElementsByTagName("relationship-value").item(0).getTextContent()
+                                                if(eKey.equals("service-instance.service-instance-id")){
+                                                    jObj.put("resourceInstanceId", eValue)
+                                                }
+
+                                            }
+                                            else if(dNode.getNodeName() == "related-to-property"){
+                                                Element rDataEle = (Element)dNode
+                                                def eKey =  rDataEle.getElementsByTagName("property-key").item(0).getTextContent()
+                                                def eValue = rDataEle.getElementsByTagName("property-value").item(0).getTextContent()
+                                                if(eKey.equals("service-instance.service-instance-name")){
+                                                    jObj.put("resourceType", eValue)
+                                                }
+                                            }
+                                        }
+                                        utils.log("INFO", "Relationship related to Resource:" + jObj.toString(), isDebugEnabled)
+                                        jArray.put(jObj)
+                                    }
+                                    //for overlay/underlay
+                                }else if (e.equals("configuration")){
+                                    def relatedObject = eElement.getElementsByTagName("related-link").item(0).getTextContent()
+                                    utils.log("INFO", "ServiceInstance Related Configuration :" + relatedObject, isDebugEnabled)
+                                    NodeList dataList = node.getChildNodes()
+                                    if(null != dataList) {
+                                        JSONObject jObj = new JSONObject()
+                                        for (int i = 0; i < dataList.getLength(); i++) {
+                                            Node dNode = dataList.item(i)
+                                            if(dNode.getNodeName() == "relationship-data") {
+                                                Element rDataEle = (Element)dNode
+                                                def eKey =  rDataEle.getElementsByTagName("relationship-key").item(0).getTextContent()
+                                                def eValue = rDataEle.getElementsByTagName("relationship-value").item(0).getTextContent()
+                                                if(eKey.equals("configuration.configuration-id")){
+                                                    jObj.put("resourceInstanceId", eValue)
+                                                }
+                                            }
+                                            else if(dNode.getNodeName() == "related-to-property"){
+                                                Element rDataEle = (Element)dNode
+                                                def eKey =  rDataEle.getElementsByTagName("property-key").item(0).getTextContent()
+                                                def eValue = rDataEle.getElementsByTagName("property-value").item(0).getTextContent()
+                                                if(eKey.equals("configuration.configuration-type")){
+                                                    jObj.put("resourceType", eValue)
+                                                }
+                                            }
+                                        }
+                                        utils.log("INFO", "Relationship related to Resource:" + jObj.toString(), isDebugEnabled)
+                                        jArray.put(jObj)
+                                    }
+                                }
+                            }
+                        }
+                        execution.setVariable("serviceRelationShip", jArray.toString())
+                    }
+                }
+            }else{
+                boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")
+                if(!succInAAI){
+                    utils.log("INFO","Error getting Service-instance from AAI", + serviceInstanceId, isDebugEnabled)
+                    WorkflowException workflowException = execution.getVariable("WorkflowException")
+                    utils.logAudit("workflowException: " + workflowException)
+                    if(workflowException != null){
+                        exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+                    }
+                    else
+                    {
+                        msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI
+                        utils.log("INFO", msg, isDebugEnabled)
+                        exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+                    }
+                }
+
+                utils.log("INFO","Service-instance NOT found in AAI. Silent Success", isDebugEnabled)
+            }
+        }catch (BpmnError e) {
+            throw e;
+        } catch (Exception ex) {
+            msg = "Exception in DoDeleteE2EServiceInstance.postProcessAAIGET. " + ex.getMessage()
+            utils.log("INFO", msg, isDebugEnabled)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+        }
+        utils.log("INFO"," *** Exit postProcessAAIGET *** ", isDebugEnabled)
+    }
+
+   public void getCurrentNS(DelegateExecution execution){
+       def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+       utils.log("INFO", "======== Start getCurrentNS Process ======== ", isDebugEnabled)
+
+       def currentIndex = execution.getVariable("currentNSIndex")
+       List<String> nsSequence = execution.getVariable("nsSequence")
+       String nsResourceType =  nsSequence.get(currentIndex)
+
+       // GET AAI by Name, not ID, for process convenient
+       execution.setVariable("GENGS_type", "service-instance")
+       execution.setVariable("GENGS_serviceInstanceId", "")
+       execution.setVariable("GENGS_serviceInstanceName", nsResourceType)
+
+       utils.log("INFO", "======== COMPLETED getCurrentNS Process ======== ", isDebugEnabled)
+   }
+
+    public void prepareDecomposeService(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+        try {
+            utils.log("DEBUG", " ***** Inside prepareDecomposeService of create generic e2e service ***** ", isDebugEnabled)
+            String modelInvariantUuid = execution.getVariable("model-invariant-id-original")
+            String modelVersionId = execution.getVariable("model-version-id-original")
+
+            String serviceModelInfo = """{
+            "modelInvariantUuid":"${modelInvariantUuid}",
+            "modelUuid":"${modelVersionId}",
+            "modelVersion":""
+             }"""
+            execution.setVariable("serviceModelInfo", serviceModelInfo)
+
+            utils.log("DEBUG", " ***** Completed prepareDecomposeService of  create generic e2e service ***** ", isDebugEnabled)
+        } catch (Exception ex) {
+            // try error in method block
+            String exceptionMessage = "Bpmn error encountered in  create generic e2e service flow. Unexpected Error from method prepareDecomposeService() - " + ex.getMessage()
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    }
+
+    public void postDecomposeService(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+        utils.log("DEBUG", " ***** Inside processDecomposition() of  delete generic e2e service flow ***** ", isDebugEnabled)
+        try {
+            ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+
+            // service model info
+            execution.setVariable("serviceModelInfo", serviceDecomposition.getModelInfo())
+
+            List<Resource> deleteResourceList = serviceDecomposition.getServiceResources()
+            String serviceRelationShip = execution.getVariable("serviceRelationShip")
+            def jsonSlurper = new JsonSlurper()
+            def jsonOutput = new JsonOutput()
+
+            List relationShipList = null
+            if (serviceRelationShip != null) {
+                relationShipList = jsonSlurper.parseText(serviceRelationShip)
+            }
+
+            //Set the real resource instance id to the decomosed resource list
+            for (Resource resource: deleteResourceList) {
+                //reset the resource instance id , because in the decompose flow ,its a random one.
+                resource.setResourceId("");
+                //match the resource-instance-name and the model name
+                if (relationShipList != null) {
+                    relationShipList.each {
+                        if (StringUtils.containsIgnoreCase(it.resourceType, resource.getModelInfo().getModelName())) {
+                            resource.setResourceId(it.resourceInstanceId);
+                        }
+                    }
+                }
+            }
+            execution.setVariable("deleteResourceList", deleteResourceList)
+            utils.log("DEBUG", "delete resource list : " + deleteResourceList, isDebugEnabled)
+        } catch (Exception ex) {
+            String exceptionMessage = "Bpmn error encountered in  create generic e2e service flow. processDecomposition() - " + ex.getMessage()
+            utils.log("DEBUG", exceptionMessage, isDebugEnabled)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+        utils.log("DEBUG", " ***** exit processDecomposition() of  delete generic e2e service flow ***** ", isDebugEnabled)
+    }
+
+    public void preInitResourcesOperStatus(DelegateExecution execution){
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+
+        utils.log("INFO", " ======== STARTED preInitResourcesOperStatus Process ======== ", isDebugEnabled)
+        try{
+            String serviceId = execution.getVariable("serviceInstanceId")
+            String operationId = execution.getVariable("operationId")
+            String operationType = execution.getVariable("operationType")
+            String resourceTemplateUUIDs = ""
+            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 + " operationType:" + operationType, isDebugEnabled)
+            serviceId = UriUtils.encode(serviceId,"UTF-8")
+            execution.setVariable("serviceInstanceId", serviceId)
+            execution.setVariable("operationId", operationId)
+            execution.setVariable("operationType", operationType)
+            List<Resource> deleteResourceList = execution.getVariable("deleteResourceList")
+
+            String serviceRelationShip = execution.getVariable("serviceRelationShip")
+            for(Resource resource : deleteResourceList){
+                    resourceTemplateUUIDs  = resourceTemplateUUIDs + resource.getModelInfo().getModelCustomizationUuid() + ":"
+            }
+
+
+            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/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                        <soapenv:Header/>
+                        <soapenv:Body>
+                            <ns:initResourceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
+                            <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
+                            <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                            <operationType>${MsoUtils.xmlEscape(operationType)}</operationType>
+                            <resourceTemplateUUIDs>${MsoUtils.xmlEscape(resourceTemplateUUIDs)}</resourceTemplateUUIDs>
+                        </ns:initResourceOperationStatus>
+                    </soapenv:Body>
+                </soapenv:Envelope>"""
+
+            payload = utils.formatXml(payload)
+            execution.setVariable("CVFMI_initResOperStatusRequest", payload)
+            utils.log("INFO", "Outgoing initResourceOperationStatus: \n" + payload, isDebugEnabled)
+            utils.logAudit("CreateVfModuleInfra Outgoing initResourceOperationStatus Request: " + payload)
+
+        }catch(Exception e){
+            utils.log("ERROR", "Exception Occured Processing preInitResourcesOperStatus. Exception is:\n" + e, isDebugEnabled)
+            execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during preInitResourcesOperStatus Method:\n" + e.getMessage())
+        }
+        utils.log("INFO", "======== COMPLETED preInitResourcesOperStatus Process ======== ", isDebugEnabled)
+    }
+
+     /**
+      * post config request.
+      */
+     public void postConfigRequest(execution){
+         //to do
+     }
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy
new file mode 100644
index 0000000..3ee059c
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy
@@ -0,0 +1,1077 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts;
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.NetworkUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse;
+import org.onap.so.rest.RESTClient
+import org.onap.so.rest.RESTConfig
+import org.springframework.web.util.UriUtils
+
+import groovy.json.*
+
+public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteNetworkInstance.class);
+	
+	String Prefix= "DELNWKI_"
+	String groovyClassName = "DoDeleteNetworkInstance"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils(this)
+	NetworkUtils networkUtils = new NetworkUtils()
+	SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
+
+	public InitializeProcessVariables(DelegateExecution execution){
+		/* Initialize all the process variables in this block */
+
+		execution.setVariable(Prefix + "networkRequest", "")
+		execution.setVariable(Prefix + "isSilentSuccess", false)
+		execution.setVariable(Prefix + "Success", false)
+
+		execution.setVariable(Prefix + "requestId", "")
+		execution.setVariable(Prefix + "source", "")
+		execution.setVariable(Prefix + "lcpCloudRegion", "")
+		execution.setVariable(Prefix + "networkInputs", "")
+		execution.setVariable(Prefix + "tenantId", "")
+
+		execution.setVariable(Prefix + "queryAAIRequest","")
+		execution.setVariable(Prefix + "queryAAIResponse", "")
+		execution.setVariable(Prefix + "aaiReturnCode", "")
+		execution.setVariable(Prefix + "isAAIGood", false)
+		execution.setVariable(Prefix + "isVfRelationshipExist", false)
+
+		// AAI query Cloud Region
+		execution.setVariable(Prefix + "queryCloudRegionRequest","")
+		execution.setVariable(Prefix + "queryCloudRegionReturnCode","")
+		execution.setVariable(Prefix + "queryCloudRegionResponse","")
+		execution.setVariable(Prefix + "cloudRegionPo","")
+		execution.setVariable(Prefix + "cloudRegionSdnc","")
+
+		execution.setVariable(Prefix + "deleteNetworkRequest", "")
+		execution.setVariable(Prefix + "deleteNetworkResponse", "")
+		execution.setVariable(Prefix + "networkReturnCode", "")
+		execution.setVariable(Prefix + "rollbackNetworkRequest", "")
+
+		execution.setVariable(Prefix + "deleteSDNCRequest", "")
+		execution.setVariable(Prefix + "deleteSDNCResponse", "")
+		execution.setVariable(Prefix + "sdncReturnCode", "")
+		execution.setVariable(Prefix + "sdncResponseSuccess", false)
+
+		execution.setVariable(Prefix + "deactivateSDNCRequest", "")
+		execution.setVariable(Prefix + "deactivateSDNCResponse", "")
+		execution.setVariable(Prefix + "deactivateSdncReturnCode", "")
+		execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", "")
+		
+		execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", "")
+		execution.setVariable(Prefix + "isException", false)
+		
+
+	}
+	
+	// **************************************************
+	//     Pre or Prepare Request Section
+	// **************************************************
+
+	public void preProcessRequest (DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside preProcessRequest() of " + groovyClassName + " Request ")
+
+		// initialize flow variables
+		InitializeProcessVariables(execution)
+		
+		try {
+			// get incoming message/input
+			execution.setVariable("action", "DELETE")
+			String deleteNetwork = execution.getVariable("bpmnRequest")
+			if (deleteNetwork != null) {
+				if (deleteNetwork.contains("requestDetails")) {
+					// JSON format request is sent, create xml 
+					try {
+						def prettyJson = JsonOutput.prettyPrint(deleteNetwork.toString())
+						msoLogger.debug(" Incoming message formatted . . . : " + '\n' + prettyJson)
+						deleteNetwork =  vidUtils.createXmlNetworkRequestInfra(execution, deleteNetwork)
+		
+					} catch (Exception ex) {
+						String dataErrorMessage = " Invalid json format Request - " + ex.getMessage()
+						msoLogger.debug(dataErrorMessage)
+						exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+					}
+				} else {
+	 				   // XML format request is sent
+					   
+				}
+			} else {
+					// vIPR format request is sent, create xml from individual variables
+				deleteNetwork = vidUtils.createXmlNetworkRequestInstance(execution)
+			}
+				
+			deleteNetwork = utils.formatXml(deleteNetwork)
+			msoLogger.debug(deleteNetwork)
+			execution.setVariable(Prefix + "networkRequest", deleteNetwork)
+			msoLogger.debug(Prefix + "networkRequest - " + '\n' + deleteNetwork)
+				
+			// validate 'backout-on-failure' to override 'mso.rollback'
+			boolean rollbackEnabled = networkUtils.isRollbackEnabled(execution, deleteNetwork)
+			execution.setVariable(Prefix + "rollbackEnabled", rollbackEnabled)
+			msoLogger.debug(Prefix + "rollbackEnabled - " + rollbackEnabled)
+			
+			String networkInputs = utils.getNodeXml(deleteNetwork, "network-inputs", false).replace("tag0:","").replace(":tag0","")
+			execution.setVariable(Prefix + "networkInputs", networkInputs)
+			
+			// prepare messageId
+			String messageId = execution.getVariable("testMessageId")  // for testing
+			if (messageId == null || messageId == "") {
+					messageId = UUID.randomUUID()
+					msoLogger.debug(Prefix + "messageId, random generated: " + messageId)
+			} else {
+					msoLogger.debug(Prefix + "messageId, pre-assigned: " + messageId)
+			}
+			execution.setVariable(Prefix + "messageId", messageId)
+				
+			String source = utils.getNodeText(deleteNetwork, "source")
+			execution.setVariable(Prefix + "source", source)
+			msoLogger.debug(Prefix + "source - " + source)
+			
+			String networkId = ""
+			if (utils.nodeExists(networkInputs, "network-id")) {
+				networkId = utils.getNodeText(networkInputs, "network-id")
+				if (networkId == null || networkId == "" || networkId == 'null' ) {
+					sendSyncError(execution)
+					// missing value of network-id
+					String dataErrorMessage = "network-request has missing 'network-id' element/value."
+					msoLogger.debug(" Invalid Request - " + dataErrorMessage)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+				}
+			}
+
+			// lcpCloudRegion or tenantId not sent, will be extracted from query AA&I
+			def lcpCloudRegion = null
+			if (utils.nodeExists(networkInputs, "aic-cloud-region")) {
+				lcpCloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
+				if (lcpCloudRegion == 'null') {
+					lcpCloudRegion = null
+				}
+			}
+			execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
+			msoLogger.debug("lcpCloudRegion : " + lcpCloudRegion)
+			
+			String tenantId = null
+			if (utils.nodeExists(networkInputs, "tenant-id")) {
+				tenantId = utils.getNodeText(networkInputs, "tenant-id")
+				if (tenantId == 'null') {
+					tenantId = null
+				}
+
+			}
+			execution.setVariable(Prefix + "tenantId", tenantId)
+			msoLogger.debug("tenantId : " + tenantId)
+			
+			String sdncVersion = execution.getVariable("sdncVersion")
+			msoLogger.debug("sdncVersion? : " + sdncVersion)
+			
+			// PO Authorization Info / headers Authorization=
+			String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth", execution)
+			
+			try {
+				def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution))
+				execution.setVariable("BasicAuthHeaderValuePO",encodedString)
+				execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
+	
+			} catch (IOException ex) {
+				String dataErrorMessage = " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
+				msoLogger.debug(dataErrorMessage )
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex){
+			 // caught exception
+			String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, PreProcessRequest() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+		
+	}
+
+
+	public void callRESTQueryAAI (DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.debug(" ***** Inside callRESTQueryAAI() of DoDoDeleteNetworkInstance ***** " )
+
+		// get variables
+		String networkInputs  = execution.getVariable(Prefix + "networkInputs")
+		String networkId   = utils.getNodeText(networkInputs, "network-id")
+		networkId = UriUtils.encode(networkId,"UTF-8")
+
+		// Prepare AA&I url
+		String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+		AaiUtil aaiUriUtil = new AaiUtil(this)
+		String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
+		String queryAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all"
+		msoLogger.debug(queryAAIRequest)
+		execution.setVariable(Prefix + "queryAAIRequest", queryAAIRequest)
+		msoLogger.debug(Prefix + "AAIRequest - " + "\n" + queryAAIRequest)
+
+		RESTConfig config = new RESTConfig(queryAAIRequest);
+
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+		Boolean isVfRelationshipExist = false
+		try {
+			APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryAAIRequest)
+			String returnCode = response.getStatusCode()
+			execution.setVariable(Prefix + "aaiReturnCode", returnCode)
+
+			msoLogger.debug(" ***** AAI Response Code  : " + returnCode)
+
+			String aaiResponseAsString = response.getResponseBodyAsString()
+			execution.setVariable(Prefix + "queryAAIResponse", aaiResponseAsString)
+
+			if (returnCode=='200' || returnCode=='204') {
+				msoLogger.debug(aaiResponseAsString)
+				execution.setVariable(Prefix + "isAAIGood", true)
+				msoLogger.debug(" AAI Query Success REST Response - " + "\n" + aaiResponseAsString)
+				// verify if vf or vnf relationship exist
+				if (utils.nodeExists(aaiResponseAsString, "relationship")) {
+					NetworkUtils networkUtils = new NetworkUtils()
+			        isVfRelationshipExist = networkUtils.isVfRelationshipExist(aaiResponseAsString)
+					execution.setVariable(Prefix + "isVfRelationshipExist", isVfRelationshipExist)
+					if (isVfRelationshipExist == true) {
+						String relationshipMessage = "AAI Query Success Response but 'vf-module' relationship exist, not allowed to delete: network Id: " + networkId
+						exceptionUtil.buildWorkflowException(execution, 2500, relationshipMessage)
+
+					} else {
+					    // verify if lcpCloudRegion was sent as input, if not get value from AAI Response 
+					    if (execution.getVariable(Prefix + "lcpCloudRegion") == null ) {
+							String lcpCloudRegion = networkUtils.getCloudRegion(aaiResponseAsString)
+							execution.setVariable(Prefix + "lcpCloudRegion", lcpCloudRegion)
+							msoLogger.debug(" Get AAI getCloudRegion()  : " + lcpCloudRegion)
+						}
+						if (execution.getVariable(Prefix + "tenantId") == null ) {
+							String tenantId = networkUtils.getTenantId(aaiResponseAsString)
+							execution.setVariable(Prefix + "tenantId", tenantId)
+							msoLogger.debug(" Get AAI getTenantId()  : " + tenantId)
+						}
+					
+					}
+				}
+				msoLogger.debug(Prefix + "isVfRelationshipExist - " + isVfRelationshipExist)
+
+			} else {
+				execution.setVariable(Prefix + "isAAIGood", false)
+			    if (returnCode=='404' || aaiResponseAsString == "" || aaiResponseAsString == null) {
+					// not found // empty aai response
+					execution.setVariable(Prefix + "isSilentSuccess", true)
+					msoLogger.debug(" AAI Query is Silent Success")
+
+				} else {
+				   if (aaiResponseAsString.contains("RESTFault")) {
+					   WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+					   execution.setVariable("WorkflowException", exceptionObject)
+
+				   } else {
+ 			       	  // aai all errors
+						 String dataErrorMessage = "Unexpected Error Response from callRESTQueryAAI() - " + returnCode
+						 msoLogger.debug(dataErrorMessage)
+						 exceptionUtil.buildWorkflowException(execution, 2500, dataErrorMessage)
+
+			      }
+				}
+			}
+
+			msoLogger.debug(" AAI Query call, isAAIGood? : " + execution.getVariable(Prefix + "isAAIGood"))
+
+		} catch (Exception ex) {
+		   // caught exception
+		   String exceptionMessage = "Exception Encountered in DoDeleteNetworkInstance, callRESTQueryAAI() - " + ex.getMessage()
+		   msoLogger.debug(exceptionMessage)
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void callRESTQueryAAICloudRegion (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.debug(" ***** Inside callRESTQueryAAICloudRegion of DoDeleteNetworkInstance ***** " )
+
+		try {
+			String networkInputs  = execution.getVariable(Prefix + "networkInputs")
+			// String cloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
+			String cloudRegion = execution.getVariable(Prefix + "lcpCloudRegion")
+			cloudRegion = UriUtils.encode(cloudRegion,"UTF-8")
+			// Prepare AA&I url
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUtil = new AaiUtil(this)
+			String aai_uri = aaiUtil.getCloudInfrastructureCloudRegionUri(execution)
+			String queryCloudRegionRequest = "${aai_endpoint}${aai_uri}/" + cloudRegion
+			msoLogger.debug(queryCloudRegionRequest)
+			execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest)
+			msoLogger.debug(Prefix + "queryCloudRegionRequest - " + "\n" + queryCloudRegionRequest)
+
+			String cloudRegionPo = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "PO", cloudRegion)
+			String cloudRegionSdnc = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "SDNC", cloudRegion)
+
+			if ((cloudRegionPo != "ERROR") && (cloudRegionSdnc != "ERROR")) {
+				execution.setVariable(Prefix + "cloudRegionPo", cloudRegionPo)
+				execution.setVariable(Prefix + "cloudRegionSdnc", cloudRegionSdnc)
+
+			} else {
+				String dataErrorMessage = "QueryAAICloudRegion Unsuccessful. Return Code: " + execution.getVariable(Prefix + "queryCloudRegionReturnCode")
+				msoLogger.debug(dataErrorMessage)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+			}
+
+		} catch (BpmnError e) {
+		throw e;
+
+		} catch (Exception ex) {
+			// caught exception
+			String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, callRESTQueryAAICloudRegion(). Unexpected Response from AAI - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void prepareNetworkRequest (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside prepareNetworkRequest of DoDeleteNetworkInstance ")
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+		try {
+			// get variables
+			String networkRequest = execution.getVariable(Prefix + "networkRequest")
+			String cloudSiteId = execution.getVariable(Prefix + "cloudRegionPo")
+			String tenantId = execution.getVariable(Prefix + "tenantId")
+
+			String queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
+			String networkType = utils.getNodeText(queryAAIResponse, "network-type")
+			String networkId = utils.getNodeText(queryAAIResponse, "network-id")
+			String backoutOnFailure = execution.getVariable(Prefix + "rollbackEnabled")
+			
+			String networkStackId = ""
+			networkStackId = utils.getNodeText(queryAAIResponse, "heat-stack-id")
+			if (networkStackId == 'null' || networkStackId == "" || networkStackId == null) {
+				networkStackId = "force_delete"
+			}
+
+			String requestId = execution.getVariable("msoRequestId")
+			if (requestId != null) {
+				execution.setVariable("mso-request-id", requestId)
+			} else {
+				requestId = execution.getVariable("mso-request-id")
+			}
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+			// Added new Elements
+			String messageId = execution.getVariable(Prefix + "messageId")
+			String notificationUrl = ""                                   //TODO - is this coming from URN? What variable/value to use?
+			//String notificationUrl = execution.getVariable("URN_?????") //TODO - is this coming from URN? What variable/value to use?
+
+			String modelCustomizationUuid = ""			
+			if (utils.nodeExists(networkRequest, "networkModelInfo")) {
+				String networkModelInfo = utils.getNodeXml(networkRequest, "networkModelInfo", false).replace("tag0:","").replace(":tag0","")
+				modelCustomizationUuid = utils.getNodeText(networkModelInfo, "modelCustomizationUuid")
+			} else {
+			    modelCustomizationUuid = utils.getNodeText(networkRequest, "modelCustomizationId")
+			}
+			
+			String deleteNetworkRequest = """
+					  <deleteNetworkRequest>
+					    <cloudSiteId>${MsoUtils.xmlEscape(cloudSiteId)}</cloudSiteId>
+					    <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
+					    <networkId>${MsoUtils.xmlEscape(networkId)}</networkId>
+						<networkStackId>${MsoUtils.xmlEscape(networkStackId)}</networkStackId>
+					    <networkType>${MsoUtils.xmlEscape(networkType)}</networkType>
+						<modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</modelCustomizationUuid>
+						<skipAAI>true</skipAAI>
+					    <msoRequest>
+					       <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+					       <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
+					    </msoRequest>
+						<messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
+						<notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
+					  </deleteNetworkRequest>
+						""".trim()
+
+			msoLogger.debug(Prefix + "deleteNetworkRequest - " + "\n" +  deleteNetworkRequest)
+			// Format Response
+			String buildDeleteNetworkRequestAsString = utils.formatXml(deleteNetworkRequest)
+			msoLogger.debug(buildDeleteNetworkRequestAsString)
+			msoLogger.debug(Prefix + "deleteNetworkRequestAsString - " + "\n" +  buildDeleteNetworkRequestAsString)
+
+			String restURL = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)
+			execution.setVariable("mso.adapters.network.rest.endpoint", restURL + "/" + networkId)
+			msoLogger.debug("mso.adapters.network.rest.endpoint - " + "\n" +  restURL + "/" + networkId)
+
+			execution.setVariable(Prefix + "deleteNetworkRequest", buildDeleteNetworkRequestAsString)
+			msoLogger.debug(Prefix + "deleteNetworkRequest - " + "\n" +  buildDeleteNetworkRequestAsString)
+		}
+		catch (Exception ex) {
+			// caught exception
+			String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareNetworkRequest(). Unexpected Response from AAI - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+	}
+
+	/**
+	 * This method is used instead of an HTTP Connector task because the
+	 * connector does not allow DELETE with a body.
+	 */
+	public void sendRequestToVnfAdapter(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.sendRequestToVnfAdapter(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+
+			String vnfAdapterUrl = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint",execution)
+			String vnfAdapterRequest = execution.getVariable(Prefix + "deleteNetworkRequest")
+
+			RESTConfig config = new RESTConfig(vnfAdapterUrl)
+			RESTClient client = new RESTClient(config).
+				addHeader("Content-Type", "application/xml").
+				addAuthorizationHeader(execution.getVariable("BasicAuthHeaderValuePO"));
+
+			APIResponse response;
+
+			response = client.httpDelete(vnfAdapterRequest)
+
+			execution.setVariable(Prefix + "networkReturnCode", response.getStatusCode())
+			execution.setVariable(Prefix + "deleteNetworkResponse", response.getResponseBodyAsString())
+
+		} catch (Exception ex) {
+			// caught exception
+			String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, sendRequestToVnfAdapter() - " + ex.getMessage()
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+	}
+
+
+	public void prepareSDNCRequest (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside prepareSDNCRequest of DoDeleteNetworkInstance ")
+
+		try {
+			// get variables
+			String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
+
+			String networkId = ""
+			if (utils.nodeExists(deleteNetworkInput, "network-id")) {
+				networkId = utils.getNodeText(deleteNetworkInput, "network-id")
+			}
+			if (networkId == 'null') {networkId = ""}
+			
+			String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
+
+			// get/set 'msoRequestId' and 'mso-request-id'
+			String requestId = execution.getVariable("msoRequestId")
+			if (requestId != null) {
+				execution.setVariable("mso-request-id", requestId)
+			} else {
+			    requestId = execution.getVariable("mso-request-id")
+			} 	
+			execution.setVariable(Prefix + "requestId", requestId)
+			msoLogger.debug(Prefix + "requestId " + requestId)
+			String queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
+			
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
+			String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
+			// 1. prepare delete topology via SDNC Adapter SUBFLOW call
+			String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "delete", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
+		    String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
+			msoLogger.debug(sndcTopologyDeleteRequesAsString)
+			execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
+			msoLogger.debug(Prefix + "deleteSDNCRequest - " + "\n" +  sndcTopologyDeleteRequesAsString)
+
+		} catch (Exception ex) {
+			// caught exception
+			String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void prepareRpcSDNCRequest (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside prepareRpcSDNCRequest of DoDeleteNetworkInstance ")
+
+		try {
+			// get variables
+			String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
+
+			String networkId = ""
+			if (utils.nodeExists(deleteNetworkInput, "network-id")) {
+				networkId = utils.getNodeText(deleteNetworkInput, "network-id")
+			}
+			if (networkId == 'null') {networkId = ""}
+
+			String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
+			
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
+			String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
+			// 1. prepare delete topology via SDNC Adapter SUBFLOW call
+			String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "unassign", "DeleteNetworkInstance", cloudRegionId, networkId, null)
+			String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
+			msoLogger.debug(sndcTopologyDeleteRequesAsString)
+			execution.setVariable(Prefix + "deleteSDNCRequest", sndcTopologyDeleteRequesAsString)
+			msoLogger.debug(Prefix + "deleteSDNCRequest - " + "\n" +  sndcTopologyDeleteRequesAsString)
+
+		} catch (Exception ex) {
+			// caught exception
+			String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRequest() - " + ex.getMessage()
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+	
+	
+	public void prepareRpcSDNCDeactivate(DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside prepareRpcSDNCDeactivate() of DoDeleteNetworkInstance ")
+
+		try {
+		
+			// get variables
+			String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
+			String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
+			String networkId = ""
+			if (utils.nodeExists(deleteNetworkInput, "network-id")) {
+				networkId = utils.getNodeText(deleteNetworkInput, "network-id")
+			}
+			if (networkId == 'null') {networkId = ""}
+			String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
+			
+			String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "deactivate", "DeleteNetworkInstance", cloudRegionId, networkId, null)
+			String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
+			execution.setVariable(Prefix + "deactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
+			msoLogger.debug(" Preparing request for RPC SDNC Topology deactivate - " + "\n" +  sndcTopologyRollbackRpcRequestAsString)
+
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCActivateRollback() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+	
+	// **************************************************
+	//     Post or Validate Response Section
+	// **************************************************
+
+	public void validateNetworkResponse (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside validateNetworkResponse of DoDeleteNetworkInstance ")
+
+		try {
+			String returnCode = execution.getVariable(Prefix + "networkReturnCode")
+			String networkResponse = execution.getVariable(Prefix + "deleteNetworkResponse")
+
+			msoLogger.debug(" Network Adapter responseCode: " + returnCode)
+			msoLogger.debug("Network Adapter Response - " + "\n" + networkResponse)
+			msoLogger.debug(networkResponse)
+			
+			String errorMessage = ""
+			if (returnCode == "200") {
+				msoLogger.debug(" Network Adapter Response is successful - " + "\n" + networkResponse)
+
+				// prepare rollback data
+				String rollbackData = utils.getNodeXml(networkResponse, "rollback", false).replace("tag0:","").replace(":tag0","")
+				if ((rollbackData == null) || (rollbackData.isEmpty())) {
+					msoLogger.debug(" Network Adapter 'rollback' data is not Sent: " + "\n" + networkResponse)
+					execution.setVariable(Prefix + "rollbackNetworkRequest", "")
+				} else {
+				    String rollbackNetwork =
+					  """<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.onap.so/network">
+						  	${rollbackData}
+						 </NetworkAdapter:rollbackNetwork>"""
+				    String rollbackNetworkXml = utils.formatXml(rollbackNetwork)
+				    execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkXml)
+				    msoLogger.debug(" Network Adapter rollback data - " + "\n" + rollbackNetworkXml)
+				}	
+				
+				
+			} else { // network error
+			   if (returnCode.toInteger() > 399 && returnCode.toInteger() < 600) {   //4xx, 5xx
+				   if (networkResponse.contains("deleteNetworkError")  ) {
+					   networkResponse = networkResponse.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', '')
+					   errorMessage  = utils.getNodeText(networkResponse, "message")
+					   errorMessage  = "Received error from Network Adapter: " + errorMessage
+					   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
+
+				   } else { // CatchAll exception
+				   	   if (returnCode == "500") {
+						   errorMessage = "JBWEB000065: HTTP Status 500."
+				       } else {
+					       errorMessage = "Return code is " + returnCode
+				       }
+					   errorMessage  = "Received error from Network Adapter: " + errorMessage
+					   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
+
+				   }
+
+			   } else { // CatchAll exception
+				   String dataErrorMessage  = "Received error from Network Adapter. Return code is: " + returnCode
+				   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+			   }
+
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			// caught exception
+			String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, validateNetworkResponse() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void validateSDNCResponse (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside validateSDNCResponse of DoDeleteNetworkInstance ")
+
+		String response = execution.getVariable(Prefix + "deleteSDNCResponse")
+		boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+		WorkflowException workflowException = execution.getVariable("WorkflowException")
+
+		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+		sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+		// reset variable
+		String deleteSDNCResponseDecodeXml = execution.getVariable(Prefix + "deleteSDNCResponse")
+		deleteSDNCResponseDecodeXml = deleteSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
+		execution.setVariable(Prefix + "deleteSDNCResponse", deleteSDNCResponseDecodeXml)
+
+		if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) {  // from sdnc util, prefix+'sdncResponseSuccess'
+			execution.setVariable(Prefix + "isSdncRollbackNeeded", true)      //
+			execution.setVariable(Prefix + "isPONR", true)
+			msoLogger.debug("Successfully Validated SDNC Response")
+		} else {
+			msoLogger.debug("Did NOT Successfully Validated SDNC Response")
+		 	throw new BpmnError("MSOWorkflowException")
+		}
+
+	}
+
+	public void validateRpcSDNCDeactivateResponse (DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside validateRpcSDNCDeactivateResponse() of DoDeleteNetworkInstance ")
+
+		String response = execution.getVariable(Prefix + "deactivateSDNCResponse")
+		boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+		WorkflowException workflowException = execution.getVariable("WorkflowException")
+
+		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+		sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+		// reset variable
+		String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "deactivateSDNCResponse")
+		assignSDNCResponseDecodeXml = assignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
+		execution.setVariable(Prefix + "deactivateSDNCResponse", assignSDNCResponseDecodeXml)
+
+		if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) {  // from sdnc util, Prefix+'sdncResponseSuccess'
+			execution.setVariable(Prefix + "isSdncDeactivateRollbackNeeded", true)
+			msoLogger.debug("Successfully Validated Rpc SDNC Activate Response")
+
+		} else {
+			msoLogger.debug("Did NOT Successfully Validated Rpc SDNC Deactivate Response")
+			throw new BpmnError("MSOWorkflowException")
+		}
+
+	}
+	
+	public void prepareRpcSDNCDeactivateRollback(DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside prepareRpcSDNCDeactivateRollback() of DoDeleteNetworkInstance ")
+
+		try {
+		
+			// get variables
+			String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
+			String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
+			String deactivateSDNCResponse = execution.getVariable(Prefix + "deactivateSDNCResponse")
+			String networkId = utils.getNodeText(deactivateSDNCResponse, "network-id")
+			if (networkId == 'null') {networkId = ""}
+			String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
+
+			// 2. prepare rollback topology via SDNC Adapter SUBFLOW call
+			String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "activate", "CreateNetworkInstance", cloudRegionId, networkId, null)
+			String sndcTopologyRollbackRpcRequestAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
+			execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", sndcTopologyRollbackRpcRequestAsString)
+			msoLogger.debug(" Preparing request for RPC SDNC Topology 'activate-CreateNetworkInstance' rollback . . . - " + "\n" +  sndcTopologyRollbackRpcRequestAsString)
+
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCDeactivateRollback() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+	
+	public void prepareRollbackData(DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+		
+		msoLogger.trace("Inside prepareRollbackData() of DoDeleteNetworkInstance ")
+		
+		try {
+			
+			Map<String, String> rollbackData = new HashMap<String, String>();
+			String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
+			if (rollbackNetworkRequest != null) {
+				if (rollbackNetworkRequest != "") {
+				   rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
+			    }
+			}	
+			String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
+			if (rollbackDeactivateSDNCRequest != null) {
+				if (rollbackDeactivateSDNCRequest != "") {
+			        rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
+			    }
+			}		
+			execution.setVariable("rollbackData", rollbackData)
+			msoLogger.debug("** rollbackData : " + rollbackData)
+			
+			execution.setVariable("WorkflowException", execution.getVariable("WorkflowException"))
+			msoLogger.debug("** WorkflowException : " + execution.getVariable("WorkflowException"))
+			
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRollbackData() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+		
+		}
+		
+	}
+	
+	public void postProcessResponse (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside postProcessResponse of DoDeleteNetworkInstance ")
+
+		try {
+			
+			msoLogger.debug(" ***** Is Exception Encountered (isException)? : " + execution.getVariable(Prefix + "isException"))
+			if (execution.getVariable(Prefix + "isException") == false) {
+				execution.setVariable(Prefix + "Success", true)
+				execution.setVariable("WorkflowException", null)
+				if (execution.getVariable(Prefix + "isSilentSuccess") == true) {
+					execution.setVariable("rolledBack", false)
+				} else {
+				    execution.setVariable("rolledBack", true) 
+				}
+				prepareSuccessRollbackData(execution) // populate rollbackData
+				
+			} else {
+				execution.setVariable(Prefix + "Success", false)
+				execution.setVariable("rollbackData", null)
+				String exceptionMessage = " Exception encountered in MSO Bpmn. "
+				if (execution.getVariable("workflowException") != null) {  // Output of Rollback flow.
+				   msoLogger.debug(" ***** workflowException: " + execution.getVariable("workflowException"))
+				   WorkflowException wfex = execution.getVariable("workflowException")
+				   exceptionMessage = wfex.getErrorMessage()
+   				} else {
+			       if (execution.getVariable(Prefix + "WorkflowException") != null) {
+				      WorkflowException pwfex = execution.getVariable(Prefix + "WorkflowException")
+				      exceptionMessage = pwfex.getErrorMessage()
+			       } else {
+				      if (execution.getVariable("WorkflowException") != null) {
+					     WorkflowException pwfex = execution.getVariable("WorkflowException")
+					     exceptionMessage = pwfex.getErrorMessage()
+					  }
+			       }
+   				}
+				   
+				// going to the Main flow: a-la-carte or macro
+				msoLogger.debug(" ***** postProcessResponse(), BAD !!!")
+				exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+				throw new BpmnError("MSOWorkflowException")
+				 
+			}	
+			
+		} catch(BpmnError b){
+		    msoLogger.debug("Rethrowing MSOWorkflowException")
+		    throw b
+			
+		} catch (Exception ex) {
+			// caught exception
+			String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, postProcessResponse() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+			throw new BpmnError("MSOWorkflowException")
+			
+        }
+
+	}
+
+	public void prepareSuccessRollbackData(DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+		
+		msoLogger.trace("Inside prepareSuccessRollbackData() of DoDeleteNetworkInstance ")
+		
+		try {
+			
+			if (execution.getVariable("sdncVersion") != '1610') {
+				prepareRpcSDNCDeactivateRollback(execution)
+				prepareRpcSDNCUnassignRollback(execution)
+			} else {
+			    prepareSDNCRollback(execution)
+			}	
+			
+			Map<String, String> rollbackData = new HashMap<String, String>();
+			String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
+			if (rollbackSDNCRequest != null) {
+				if (rollbackSDNCRequest != "") {
+				   rollbackData.put("rollbackSDNCRequest", execution.getVariable(Prefix + "rollbackSDNCRequest"))
+				}
+			}
+			String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
+			if (rollbackNetworkRequest != null) {
+				if (rollbackNetworkRequest != "") {
+				   rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
+			    }
+			}	
+			String rollbackDeactivateSDNCRequest = execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")
+			if (rollbackDeactivateSDNCRequest != null) {
+				if (rollbackDeactivateSDNCRequest != "") {
+			        rollbackData.put("rollbackDeactivateSDNCRequest", execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest"))
+			    }
+			}		
+			execution.setVariable("rollbackData", rollbackData)
+			
+			msoLogger.debug("** rollbackData : " + rollbackData)
+			execution.setVariable("WorkflowException", null)
+
+			
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareSuccessRollbackData() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+		
+		}
+		
+	}
+
+	public void prepareRpcSDNCUnassignRollback(DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside prepareRpcSDNCUnassignRollbac() of DoDeleteNetworkInstance ")
+
+		try {
+		
+			// get variables
+			String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
+
+			String deleteSDNCResponse = execution.getVariable(Prefix + "deleteSDNCResponse")
+			String networkId = utils.getNodeText(deleteSDNCResponse, "network-id")
+			if (networkId == 'null') {networkId = ""}
+			String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
+				
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
+			String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
+			// 1. prepare delete topology via SDNC Adapter SUBFLOW call
+			String sndcTopologyRollbackRpcRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "assign", "CreateNetworkInstance", cloudRegionId, networkId, null)
+			String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyRollbackRpcRequest)
+			msoLogger.debug(sndcTopologyDeleteRequesAsString)
+			execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
+			msoLogger.debug(Prefix + "rollbackSDNCRequest" + "\n" +  sndcTopologyDeleteRequesAsString)
+			msoLogger.debug(" Preparing request for RPC SDNC Topology 'assign-CreateNetworkInstance' rollback . . . - " + "\n" +  sndcTopologyDeleteRequesAsString)
+	
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstance flow. prepareRpcSDNCUnassignRollback() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+	
+	public void prepareSDNCRollback (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside prepareSDNCRollback of DoDeleteNetworkInstance ")
+
+		try {
+			
+			// get variables
+			String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			String deleteNetworkInput = execution.getVariable(Prefix + "networkRequest")
+
+			String networkId = ""
+			if (utils.nodeExists(deleteNetworkInput, "network-id")) {
+				networkId = utils.getNodeText(deleteNetworkInput, "network-id")
+			}
+			if (networkId == 'null') {networkId = ""}
+			
+			String serviceInstanceId = utils.getNodeText(deleteNetworkInput, "service-instance-id")
+
+			// get/set 'msoRequestId' and 'mso-request-id'
+			String requestId = execution.getVariable("msoRequestId")
+			if (requestId != null) {
+				execution.setVariable("mso-request-id", requestId)
+			} else {
+			    requestId = execution.getVariable("mso-request-id")
+			} 	
+			execution.setVariable(Prefix + "requestId", requestId)
+			
+			String queryAAIResponse = execution.getVariable(Prefix + "queryAAIResponse")
+			
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
+			String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
+			// 1. prepare delete topology via SDNC Adapter SUBFLOW call
+			String sndcTopologyDeleteRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, deleteNetworkInput, serviceInstanceId, sdncCallback, "rollback", "DisconnectNetworkRequest", cloudRegionId, networkId, queryAAIResponse, null)
+		    String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
+			msoLogger.debug(sndcTopologyDeleteRequesAsString)
+			execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyDeleteRequesAsString)
+			msoLogger.debug(Prefix + "rollbackSDNCRequest - " + "\n" +  sndcTopologyDeleteRequesAsString)
+			msoLogger.debug(" Preparing request for RPC SDNC Topology 'rollback-DisconnectNetworkRequest' rollback . . . - " + "\n" +  sndcTopologyDeleteRequesAsString)
+
+
+		} catch (Exception ex) {
+			// caught exception
+			String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance, prepareSDNCRollback() - " + ex.getMessage()
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, exceptionMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+	
+	public void setExceptionFlag(DelegateExecution execution){
+
+		execution.setVariable("prefix",Prefix)
+		
+		msoLogger.trace("Inside setExceptionFlag() of DoDeleteNetworkInstance ")
+		
+		try {
+
+			execution.setVariable(Prefix + "isException", true)
+			
+			if (execution.getVariable("SavedWorkflowException1") != null) {
+				execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1"))
+			} else {
+				execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
+			}
+			msoLogger.debug(Prefix + "WorkflowException - " +execution.getVariable(Prefix + "WorkflowException"))
+			
+		} catch(Exception ex){
+			  String exceptionMessage = "Bpmn error encountered in DoDeleteNetworkInstance flow. setExceptionFlag(): " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+		}
+		
+	}
+	
+	
+	// *******************************
+	//     Build Error Section
+	// *******************************
+
+	public void processJavaException(DelegateExecution execution){
+
+		execution.setVariable("prefix",Prefix)
+		try{
+			msoLogger.debug("Caught a Java Exception")
+			msoLogger.debug("Started processJavaException Method")
+			msoLogger.debug("Variables List: " + execution.getVariables())
+			execution.setVariable("UnexpectedError", "Caught a Java Lang Exception")  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
+			
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during processJavaException Method: " + e)
+			execution.setVariable("UnexpectedError", "Exception in processJavaException method")  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method")
+		}
+		msoLogger.debug("Completed processJavaException Method of " + Prefix)
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollback.groovy
new file mode 100644
index 0000000..ca6e21e
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollback.groovy
@@ -0,0 +1,338 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts;
+
+import groovy.xml.XmlUtil
+import groovy.json.*
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.NetworkUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.rest.APIResponse;
+import org.onap.so.rest.RESTClient
+import org.onap.so.rest.RESTConfig
+
+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
+
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+/**
+ * This groovy class supports the <class>DoCreateNetworkInstanceRollback.bpmn</class> process.
+ *
+ */
+public class DoDeleteNetworkInstanceRollback extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteNetworkInstanceRollback.class);
+	
+	String Prefix="DELNWKIR_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils(this)
+	NetworkUtils networkUtils = new NetworkUtils()
+	SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
+
+	def className = getClass().getSimpleName()
+	
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>DoDeleteNetworkInstanceRollback.bpmn</class> process.
+	 * @param execution
+	 */
+	public InitializeProcessVariables(DelegateExecution execution){
+		/* Initialize all the process variables in this block */
+		
+		execution.setVariable(Prefix + "WorkflowException", null)
+	
+		execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", null)
+		execution.setVariable(Prefix + "rollbackDeactivateSDNCResponse", "")
+		execution.setVariable(Prefix + "rollbackDeactivateSDNCReturnCode", "")
+
+		execution.setVariable(Prefix + "rollbackSDNCRequest", "")
+		execution.setVariable(Prefix + "rollbackSDNCResponse", "")
+		execution.setVariable(Prefix + "rollbackSDNCReturnCode", "")
+		
+		execution.setVariable(Prefix + "rollbackNetworkRequest", null)
+		execution.setVariable(Prefix + "rollbackNetworkResponse", "")
+		execution.setVariable(Prefix + "rollbackNetworkReturnCode", "")
+				
+		execution.setVariable(Prefix + "Success", false)
+		execution.setVariable(Prefix + "fullRollback", false)
+
+	}
+
+	// **************************************************
+	//     Pre or Prepare Request Section
+	// **************************************************
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>DoDeleteNetworkInstanceRollback.bpmn</class> process.
+	 * @param execution
+	 */
+	public void preProcessRequest (DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+		
+		msoLogger.trace("Inside preProcessRequest() of " + className + ".groovy ")
+
+		try {
+			// initialize flow variables
+			InitializeProcessVariables(execution)
+			
+			// GET Incoming request/variables
+			String rollbackDeactivateSDNCRequest = null
+			String rollbackSDNCRequest = null
+			String rollbackNetworkRequest = null
+
+			Map<String, String> rollbackData = execution.getVariable("rollbackData")
+			if (rollbackData != null && rollbackData instanceof Map) {
+				
+				if(rollbackData.containsKey("rollbackDeactivateSDNCRequest")) {
+				   rollbackDeactivateSDNCRequest = rollbackData["rollbackDeactivateSDNCRequest"]
+				}
+				
+				if(rollbackData.containsKey("rollbackSDNCRequest")) {
+					rollbackSDNCRequest = rollbackData["rollbackSDNCRequest"]
+				 }
+				
+				if(rollbackData.containsKey("rollbackNetworkRequest")) {
+					rollbackNetworkRequest = rollbackData["rollbackNetworkRequest"]
+				 }
+			}
+			
+			execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkRequest)
+			execution.setVariable(Prefix + "rollbackSDNCRequest", rollbackSDNCRequest)
+			execution.setVariable(Prefix + "rollbackDeactivateSDNCRequest", rollbackDeactivateSDNCRequest)
+			msoLogger.debug("'rollbackData': " + '\n' + execution.getVariable("rollbackData"))
+
+			String sdncVersion = execution.getVariable("sdncVersion")
+			msoLogger.debug("sdncVersion? : " + sdncVersion)
+				
+			// PO Authorization Info / headers Authorization=
+			String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth",execution)
+			try {
+				def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution))
+				execution.setVariable("BasicAuthHeaderValuePO",encodedString)
+				execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
+	
+			} catch (IOException ex) {
+				String exceptionMessage = "Exception Encountered in DoCreateNetworkInstance, PreProcessRequest() - "
+				String dataErrorMessage = exceptionMessage + " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
+				msoLogger.debug(dataErrorMessage )
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+			}
+
+			if (execution.getVariable("SavedWorkflowException1") != null) {
+				execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1"))
+			} else {
+				execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
+			}
+			msoLogger.debug("*** WorkflowException : " + execution.getVariable(Prefix + "WorkflowException"))
+			if(execution.getVariable(Prefix + "WorkflowException") != null) {
+				// called by: DoCreateNetworkInstance, partial rollback
+				execution.setVariable(Prefix + "fullRollback", false)
+
+			} else {
+			   // called by: Macro - Full Rollback, WorkflowException = null
+			   execution.setVariable(Prefix + "fullRollback", true)
+			
+			}
+			
+			msoLogger.debug("*** fullRollback? : " + execution.getVariable(Prefix + "fullRollback"))
+			
+		} catch (BpmnError e) {
+		throw e;
+		
+		} catch (Exception ex) {
+			sendSyncError(execution)
+			// caught exception
+			String exceptionMessage = "Exception Encountered in PreProcessRequest() of " + className + ".groovy ***** : " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		
+		}
+
+	}
+	
+	public void validateRollbackResponses (DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside validateRollbackResponses() of DoDeleteNetworkInstanceRollback ")
+		
+		try {
+
+			// validate SDNC activate response
+			String rollbackDeactivateSDNCMessages = ""
+			String rollbackDeactivateSDNCReturnCode = "200"
+			if (execution.getVariable(Prefix + "rollbackDeactivateSDNCRequest") != null) {
+				rollbackDeactivateSDNCReturnCode = execution.getVariable(Prefix + "rollbackDeactivateSDNCReturnCode")
+				String rollbackDeactivateSDNCResponse = execution.getVariable(Prefix + "rollbackDeactivateSDNCResponse")
+				String rollbackDeactivateSDNCReturnInnerCode = ""
+				rollbackDeactivateSDNCResponse = rollbackDeactivateSDNCResponse.replace('$', '').replace('<?xml version="1.0" encoding="UTF-8"?>', "")
+				if (rollbackDeactivateSDNCReturnCode == "200") {
+					if (utils.nodeExists(rollbackDeactivateSDNCResponse, "response-code")) {
+						rollbackDeactivateSDNCReturnInnerCode = utils.getNodeText(rollbackDeactivateSDNCResponse, "response-code")
+						if (rollbackDeactivateSDNCReturnInnerCode == "200" || rollbackDeactivateSDNCReturnInnerCode == "" || rollbackDeactivateSDNCReturnInnerCode == "0") {
+						   rollbackDeactivateSDNCMessages = " + SNDC deactivate rollback completed."
+						} else {
+							rollbackDeactivateSDNCMessages = " + SDNC deactivate rollback failed. "
+						}
+					} else {
+						 rollbackDeactivateSDNCMessages = " + SNDC deactivate rollback completed."
+					}
+				} else {
+					  rollbackDeactivateSDNCMessages = " + SDNC deactivate rollback failed. "
+				}
+				msoLogger.debug(" SDNC deactivate rollback Code - " + rollbackDeactivateSDNCReturnCode)
+				msoLogger.debug(" SDNC deactivate rollback  Response - " + rollbackDeactivateSDNCResponse)
+			}
+		
+			// validate SDNC rollback response
+			String rollbackSdncErrorMessages = ""
+			String rollbackSDNCReturnCode = "200"
+			if (execution.getVariable(Prefix + "rollbackSDNCRequest") != null) {
+				rollbackSDNCReturnCode = execution.getVariable(Prefix + "rollbackSDNCReturnCode")
+				String rollbackSDNCResponse = execution.getVariable(Prefix + "rollbackSDNCResponse")
+				String rollbackSDNCReturnInnerCode = ""
+				SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+				rollbackSDNCResponse = rollbackSDNCResponse.replace('$', '').replace('<?xml version="1.0" encoding="UTF-8"?>', "")
+				if (rollbackSDNCReturnCode == "200") {
+					if (utils.nodeExists(rollbackSDNCResponse, "response-code")) {
+						rollbackSDNCReturnInnerCode = utils.getNodeText(rollbackSDNCResponse, "response-code")
+						if (rollbackSDNCReturnInnerCode == "200" || rollbackSDNCReturnInnerCode == "" || rollbackSDNCReturnInnerCode == "0") {
+							rollbackSdncErrorMessages = " + SNDC unassign rollback completed."
+						} else {
+							rollbackSdncErrorMessages = " + SDNC unassign rollback failed. "
+						}
+					} else {
+						  rollbackSdncErrorMessages = " + SNDC unassign rollback completed."
+					}
+				 } else {
+					  rollbackSdncErrorMessages = " + SDNC unassign rollback failed. "
+				 }
+				msoLogger.debug(" SDNC assign rollback Code - " + rollbackSDNCReturnCode)
+				msoLogger.debug(" SDNC assign rollback  Response - " + rollbackSDNCResponse)
+			}
+			
+			// validate PO network rollback response
+			String rollbackNetworkErrorMessages = ""
+			String rollbackNetworkReturnCode = "200"
+			if (execution.getVariable(Prefix + "rollbackNetworkRequest") != null) {
+				rollbackNetworkReturnCode = execution.getVariable(Prefix + "rollbackNetworkReturnCode")
+				String rollbackNetworkResponse = execution.getVariable(Prefix + "rollbackNetworkResponse")
+				if (rollbackNetworkReturnCode != "200") {
+					rollbackNetworkErrorMessages = " + PO Network rollback failed. "
+				} else {
+					rollbackNetworkErrorMessages = " + PO Network rollback completed."
+				}
+	
+				msoLogger.debug(" NetworkRollback Code - " + rollbackNetworkReturnCode)
+				msoLogger.debug(" NetworkRollback Response - " + rollbackNetworkResponse)
+			}
+				
+			String statusMessage = ""
+			int errorCode = 7000
+			msoLogger.debug("*** fullRollback? : " + execution.getVariable(Prefix + "fullRollback"))
+			if (execution.getVariable(Prefix + "fullRollback") == false) {
+				WorkflowException wfe = execution.getVariable(Prefix + "WorkflowException") // original WorkflowException
+				if (wfe != null) {
+					statusMessage = wfe.getErrorMessage()
+					errorCode = wfe.getErrorCode()
+				} else {
+					statusMessage = "See Previous Camunda flows for cause of Error: Undetermined Exception."
+					errorCode = '7000'
+				}
+
+				// set if all rolledbacks are successful
+				if (rollbackDeactivateSDNCReturnCode == "200" && rollbackNetworkReturnCode == "200" && rollbackSDNCReturnCode == "200") {
+					execution.setVariable("rolledBack", true)
+					execution.setVariable("wasDeleted", true)
+				
+				} else {
+					execution.setVariable("rolledBack", false)
+					execution.setVariable("wasDeleted", true)
+				}
+
+				statusMessage =  statusMessage + rollbackDeactivateSDNCMessages + rollbackNetworkErrorMessages + rollbackSdncErrorMessages
+				msoLogger.debug("Final DoDeleteNetworkInstanceRollback status message: " + statusMessage)
+				String processKey = getProcessKey(execution);
+				WorkflowException exception = new WorkflowException(processKey, errorCode, statusMessage);
+				execution.setVariable("workflowException", exception);
+			
+			} else {
+				// rollback due to failures in Main flow (Macro or a-ala-carte) - Full rollback
+			    if (rollbackDeactivateSDNCReturnCode == "200" && rollbackNetworkReturnCode == "200" && rollbackSDNCReturnCode == "200") {
+				    execution.setVariable("rollbackSuccessful", true)
+				    execution.setVariable("rollbackError", false) 
+			    } else {
+				    String exceptionMessage = "Network Delete Rollback was not Successful. "
+                    msoLogger.debug(exceptionMessage)
+					execution.setVariable("rollbackSuccessful", false)
+				    execution.setVariable("rollbackError", true)
+					exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+					throw new BpmnError("MSOWorkflowException")
+			    }  
+			} 			
+			
+		} catch (Exception ex) {
+			String errorMessage = "See Previous Camunda flows for cause of Error: Undetermined Exception."
+			String exceptionMessage = " Bpmn error encountered in DoDeleteNetworkInstanceRollback flow. validateRollbackResponses() - " + errorMessage + ": " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	// *******************************
+	//     Build Error Section
+	// *******************************
+
+
+	
+	public void processJavaException(DelegateExecution execution){
+
+		execution.setVariable("prefix",Prefix)
+		
+		try{
+			msoLogger.debug("Caught a Java Exception in " + Prefix)
+			msoLogger.debug("Started processJavaException Method")
+			msoLogger.debug("Variables List: " + execution.getVariables())
+			execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
+			
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during processJavaException Method: " + e)
+			execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix)
+		}
+		msoLogger.debug("Completed processJavaException Method in " + Prefix)
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteResources.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteResources.groovy
new file mode 100644
index 0000000..f6dd0ca
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteResources.groovy
@@ -0,0 +1,317 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. 
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.bpmn.infrastructure.scripts
+
+import org.json.JSONArray;
+
+import static org.apache.commons.lang3.StringUtils.*;
+import groovy.xml.XmlUtil
+import groovy.json.*
+
+import org.onap.so.bpmn.core.domain.ModelInfo
+import org.onap.so.bpmn.core.domain.Resource
+import org.onap.so.bpmn.core.domain.ServiceInstance
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.rest.APIResponse;
+import org.onap.so.rest.RESTClient
+import org.onap.so.rest.RESTConfig
+
+import java.util.List;
+import java.util.UUID;
+import javax.xml.parsers.DocumentBuilder
+import javax.xml.parsers.DocumentBuilderFactory
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.camunda.bpm.engine.runtime.Execution
+import org.json.JSONObject;
+import org.apache.commons.lang3.*
+import org.apache.commons.codec.binary.Base64;
+import org.springframework.web.util.UriUtils;
+import org.w3c.dom.Document
+import org.w3c.dom.Element
+import org.w3c.dom.Node
+import org.w3c.dom.NodeList
+import org.xml.sax.InputSource
+
+import com.fasterxml.jackson.jaxrs.json.annotation.JSONP.Def;
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+/**
+ * This groovy class supports the <class>DoDeleteResources.bpmn</class> process.
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - globalSubscriberId - O
+ * @param - subscriptionServiceType - O
+ * @param - serviceInstanceId
+ * @param - serviceInstanceName - O
+ * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM)
+ * @param - sdncVersion 
+ * @param - failNotFound - TODO
+ * @param - serviceInputParams - TODO 
+ *
+ * @param - delResourceList
+ * @param - serviceRelationShip
+ *
+ * Outputs:
+ * @param - WorkflowException
+ * 
+ * Rollback - Deferred
+ */
+public class DoDeleteResources extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteResources.class);
+
+	String Prefix="DDELR_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	public void preProcessRequest (DelegateExecution execution) {
+		msoLogger.trace("preProcessRequest ")
+		String msg = ""
+		
+		List<ServiceInstance> realNSRessources = new ArrayList<ServiceInstance>() 
+        
+        // related ns from AAI
+        String serviceRelationShip = execution.getVariable("serviceRelationShip")
+        def jsonSlurper = new JsonSlurper()
+        def jsonOutput = new JsonOutput()        
+        List<String> nsSequence = new ArrayList<String>() 
+        List relationShipList =  jsonSlurper.parseText(serviceRelationShip)
+        if (relationShipList != null) {
+           relationShipList.each {
+               String resourceType = it.resourceType
+               nsSequence.add(resourceType)
+           }
+        }       
+     
+        execution.setVariable("currentNSIndex", 0)
+        execution.setVariable("nsSequence", nsSequence)
+        execution.setVariable("realNSRessources", realNSRessources)
+        msoLogger.info("nsSequence: " + nsSequence) 
+
+		msoLogger.trace("Exit preProcessRequest ")
+    }
+
+   public void getCurrentNS(execution){
+       msoLogger.trace("Start getCurrentNS Process ")    
+       
+       def currentIndex = execution.getVariable("currentNSIndex")
+       List<String> nsSequence = execution.getVariable("nsSequence") 
+       String nsResourceType =  nsSequence.get(currentIndex)
+       
+       // GET AAI by Name, not ID, for process convenient
+       execution.setVariable("GENGS_type", "service-instance")
+       execution.setVariable("GENGS_serviceInstanceId", "") 
+       execution.setVariable("GENGS_serviceInstanceName", nsResourceType)       
+
+       msoLogger.trace("COMPLETED getCurrentNS Process ")  
+   }	
+	
+	public void postProcessAAIGET(DelegateExecution execution) {
+		msoLogger.trace("postProcessAAIGET2 ")
+		String msg = ""
+
+		try {
+			String nsResourceName = execution.getVariable("GENGS_serviceInstanceName")
+			boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")
+			if(!succInAAI){
+				msoLogger.info("Error getting Service-instance from AAI in postProcessAAIGET", + nsResourceName)
+				WorkflowException workflowException = execution.getVariable("WorkflowException")
+				msoLogger.debug("workflowException: " + workflowException)
+				if(workflowException != null){
+					exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+				}
+				else
+				{
+					msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI
+					msoLogger.info(msg)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+				}
+			}
+			else
+			{
+				boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator")
+				if(foundInAAI){
+					String aaiService = execution.getVariable("GENGS_service")
+					if (!isBlank(aaiService)) {
+					    String svcId = utils.getNodeText(aaiService, "service-instance-id")
+						//String mn = utils.getNodeText(aaiService, "model-name")						
+						String mIuuid = utils.getNodeText(aaiService, "model-invariant-id")
+						String muuid = utils.getNodeText(aaiService, "model-version-id")
+						String mCuuid = utils.getNodeText(aaiService, "model-customization-uuid")
+						ServiceInstance rc = new ServiceInstance()
+						ModelInfo modelInfo = new ModelInfo()
+						//modelInfo.setModelName(mn)
+						modelInfo.setModelUuid(muuid)						
+						modelInfo.setModelInvariantUuid(mIuuid)
+						modelInfo.getModelCustomizationUuid(mCuuid)
+						rc.setModelInfo(modelInfo)
+						rc.setInstanceId(svcId)
+						rc.setInstanceName(nsResourceName)
+
+						List<ServiceInstance> realNSRessources = execution.getVariable("realNSRessources")
+						realNSRessources.add(rc)
+						execution.setVariable("realNSRessources", realNSRessources)
+						
+						msoLogger.info("Found Service-instance in AAI.serviceInstanceName:" + execution.getVariable("serviceInstanceName"))
+					}
+				}
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoDeleteResources.postProcessAAIGET " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit postProcessAAIGET ")
+	}
+	
+    public void parseNextNS(execution){
+       msoLogger.trace("Start parseNextNS Process ")    
+       def currentIndex = execution.getVariable("currentNSIndex")
+       def nextIndex =  currentIndex + 1
+       execution.setVariable("currentNSIndex", nextIndex)
+       List<String> nsSequence = execution.getVariable("nsSequence")    
+       if(nextIndex >= nsSequence.size()){
+           execution.setVariable("allNsFinished", "true")
+       }else{
+           execution.setVariable("allNsFinished", "false")
+       }
+       msoLogger.trace("COMPLETED parseNextNS Process ")            
+   }   
+
+   
+   public void sequenceResource(execution){
+       msoLogger.trace("STARTED sequenceResource Process ")
+       List<String> nsResources = new ArrayList<String>()
+       List<String> wanResources = new ArrayList<String>()
+       List<String> resourceSequence = new  ArrayList<String>()
+       
+       // get delete resource list and order list
+       List<Resource> delResourceList = execution.getVariable("delResourceList")
+       // existing resource list
+       List<ServiceInstance> existResourceList = execution.getVariable("realNSRessources")
+       
+       for(ServiceInstance rc_e : existResourceList){
+       
+           String muuid = rc_e.getModelInfo().getModelUuid()
+           String mIuuid = rc_e.getModelInfo().getModelInvariantUuid()
+           String mCuuid = rc_e.getModelInfo().getModelCustomizationUuid()
+           rcType = rc_e.getInstanceName()
+           
+           for(Resource rc_d : delResourceList){                 
+           
+                if(rc_d.getModelInfo().getModelUuid() == muuid 
+                && rc_d.getModelInfo().getModelInvariantUuid() == mIuuid 
+                && rc_d.getModelInfo().getModelCustomizationUuid() == mCuuid) {
+                
+                   if(StringUtils.containsIgnoreCase(rcType, "overlay") 
+                   || StringUtils.containsIgnoreCase(rcType, "underlay")){                   
+                       wanResources.add(rcType)
+                   }else{
+                       nsResources.add(rcType)
+                   }
+                   
+               }
+           }
+           
+       }
+  
+       resourceSequence.addAll(wanResources)
+       resourceSequence.addAll(nsResources)
+       String isContainsWanResource = wanResources.isEmpty() ? "false" : "true"
+       execution.setVariable("isContainsWanResource", isContainsWanResource)
+       execution.setVariable("currentResourceIndex", 0)
+       execution.setVariable("resourceSequence", resourceSequence)
+       msoLogger.info("resourceSequence: " + resourceSequence)  
+       execution.setVariable("wanResources", wanResources)
+       msoLogger.trace("END sequenceResource Process ")
+   }
+   
+   public void getCurrentResource(execution){
+       msoLogger.trace("Start getCurrentResoure Process ")    
+       def currentIndex = execution.getVariable("currentResourceIndex")
+       List<String> resourceSequence = execution.getVariable("resourceSequence")  
+       List<String> wanResources = execution.getVariable("wanResources")  
+       String resourceName =  resourceSequence.get(currentIndex)
+       execution.setVariable("resourceType",resourceName)
+       if(wanResources.contains(resourceName)){
+           execution.setVariable("controllerInfo", "SDN-C")
+       }else{
+           execution.setVariable("controllerInfo", "VF-C")
+       }
+       msoLogger.trace("COMPLETED getCurrentResoure Process ")  
+   }
+   
+   /**
+    * prepare delete parameters
+    */
+   public void preResourceDelete(execution, resourceName){
+
+       msoLogger.trace("STARTED preResourceDelete Process ")
+       
+       List<ServiceInstance> existResourceList = execution.getVariable("realNSRessources")
+           
+       for(ServiceInstance rc_e : existResourceList){
+           
+            if(StringUtils.containsIgnoreCase(rc_e.getInstanceName(), resourceName)) {
+                
+				   String resourceInstanceUUID = rc_e.getInstanceId()
+				   String resourceTemplateUUID = rc_e.getModelInfo().getModelUuid()
+				   execution.setVariable("resourceInstanceId", resourceInstanceUUID)
+				   execution.setVariable("resourceTemplateId", resourceTemplateUUID)				   
+				   execution.setVariable("resourceType", resourceName)
+			       msoLogger.info("Delete Resource Info resourceTemplate Id :" + resourceTemplateUUID + "  resourceInstanceId: " + resourceInstanceUUID + " resourceType: " + resourceName)
+           }
+       }       
+    
+       msoLogger.trace("END preResourceDelete Process ")
+   }
+   
+   public void parseNextResource(execution){
+       msoLogger.trace("Start parseNextResource Process ")    
+       def currentIndex = execution.getVariable("currentResourceIndex")
+       def nextIndex =  currentIndex + 1
+       execution.setVariable("currentResourceIndex", nextIndex)
+       List<String> resourceSequence = execution.getVariable("resourceSequence")    
+       if(nextIndex >= resourceSequence.size()){
+           execution.setVariable("allResourceFinished", "true")
+       }else{
+           execution.setVariable("allResourceFinished", "false")
+       }
+       msoLogger.trace("COMPLETED parseNextResource Process ")            
+   }
+   
+     /**
+      * post config request.
+      */
+     public void postConfigRequest(execution){
+         //to do
+     } 
+   
+}
+ 
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteResourcesV1.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteResourcesV1.groovy
new file mode 100644
index 0000000..a5a96f3
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteResourcesV1.groovy
@@ -0,0 +1,400 @@
+
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.bpmn.infrastructure.scripts
+
+import static org.apache.commons.lang3.StringUtils.isBlank
+
+import org.apache.commons.lang3.StringUtils
+import org.apache.http.HttpResponse
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.json.JSONObject
+import org.onap.so.bpmn.common.recipe.BpmnRestClient
+import org.onap.so.bpmn.common.recipe.ResourceInput
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.CatalogDbUtils
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.domain.AllottedResource
+import org.onap.so.bpmn.core.domain.NetworkResource
+import org.onap.so.bpmn.core.domain.Resource
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.bpmn.core.domain.VnfResource
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.bpmn.infrastructure.properties.BPMNProperties
+import org.onap.so.logger.MsoLogger
+
+/**
+ * input for script :
+ * msoRequestId
+ * isDebugLogEnabled
+ * globalSubscriberId
+ * serviceType
+ * serviceInstanceId
+ * URN_mso_workflow_sdncadapter_callback
+ * serviceInputParams
+ * deleteResourceList
+ * resourceInstanceIDs
+ *
+ * output from script:
+ *
+ */
+
+public class DoDeleteResourcesV1 extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteResourcesV1.class);
+
+    String Prefix="DDR_"
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+    JsonUtils jsonUtil = new JsonUtils()
+    CatalogDbUtils cutils = new CatalogDbUtils()
+
+    public void preProcessRequest (DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO"," ***** preProcessRequest *****",  isDebugEnabled)
+        String msg = ""
+
+        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
+            if (globalSubscriberId == null)
+            {
+                execution.setVariable("globalSubscriberId", "")
+            }
+
+            //requestDetails.requestParameters. for AAI PUT & SDNC assignTopology
+            String serviceType = execution.getVariable("serviceType")
+            if (serviceType == null)
+            {
+                execution.setVariable("serviceType", "")
+            }
+
+            //Generated in parent for AAI PUT
+            String serviceInstanceId = execution.getVariable("serviceInstanceId")
+            if (isBlank(serviceInstanceId)){
+                msg = "Input serviceInstanceId is null"
+                utils.log("INFO", msg, isDebugEnabled)
+                exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+            }
+
+            String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback')
+            if (isBlank(sdncCallbackUrl)) {
+                msg = "URN_mso_workflow_sdncadapter_callback is null"
+                utils.log("INFO", msg, isDebugEnabled)
+                exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+            }
+            execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+            utils.log("INFO","SDNC Callback URL: " + sdncCallbackUrl, isDebugEnabled)
+
+            StringBuilder sbParams = new StringBuilder()
+            Map<String, String> paramsMap = execution.getVariable("serviceInputParams")
+            if (paramsMap != null)
+            {
+                sbParams.append("<service-input-parameters>")
+                for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
+                    String paramsXml
+                    String paramName = entry.getKey()
+                    String paramValue = entry.getValue()
+                    paramsXml =
+                            """	<param>
+							<name>${MsoUtils.xmlEscape(paramName)}</name>
+							<value>${MsoUtils.xmlEscape(paramValue)}</value>
+							</param>
+							"""
+                    sbParams.append(paramsXml)
+                }
+                sbParams.append("</service-input-parameters>")
+            }
+            String siParamsXml = sbParams.toString()
+            if (siParamsXml == null)
+                siParamsXml = ""
+            execution.setVariable("siParamsXml", siParamsXml)
+
+        } 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 sequenceResource(DelegateExecution execution){
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+
+        utils.log("INFO", " ======== STARTED sequenceResource Process ======== ", isDebugEnabled)
+        List<Resource> sequencedResourceList = new ArrayList<Resource>()
+        List<Resource> wanResources = new ArrayList<Resource>()
+
+        // get delete resource list and order list
+        List<Resource> delResourceList = execution.getVariable("deleteResourceList")
+        
+        def resourceSequence = BPMNProperties.getResourceSequenceProp()
+
+        if(resourceSequence != null) {
+            for (resourceType in resourceSequence.reverse()) {
+                for (resource in delResourceList) {
+                    if (StringUtils.containsIgnoreCase(resource.getModelInfo().getModelName(), resourceType)) {
+                        sequencedResourceList.add(resource)
+
+                        if (resource instanceof NetworkResource) {
+                            wanResources.add(resource)
+                        }
+                    }
+                }
+            }
+        }else {
+            //define sequenced resource list, we deploy vf first and then network and then ar
+            //this is defaule sequence
+            List<VnfResource> vnfResourceList = new ArrayList<VnfResource>()
+            List<AllottedResource> arResourceList = new ArrayList<AllottedResource>()
+            for (Resource rc : delResourceList) {
+                if (rc instanceof VnfResource) {
+                    vnfResourceList.add(rc)
+                } else if (rc instanceof NetworkResource) {
+                	wanResources.add(rc)
+                } else if (rc instanceof AllottedResource) {
+                    arResourceList.add(rc)
+                }
+            }
+
+            sequencedResourceList.addAll(arResourceList)
+            sequencedResourceList.addAll(wanResources)
+            sequencedResourceList.addAll(vnfResourceList)
+        }
+
+        String isContainsWanResource = wanResources.isEmpty() ? "false" : "true"
+        execution.setVariable("isContainsWanResource", isContainsWanResource)
+        execution.setVariable("currentResourceIndex", 0)
+        execution.setVariable("sequencedResourceList", sequencedResourceList)
+        utils.log("INFO", "resourceSequence: " + resourceSequence, isDebugEnabled)
+        utils.log("INFO", " ======== END sequenceResource Process ======== ", isDebugEnabled)
+    }
+
+    /**
+     * prepare delete parameters
+     */
+    public void preResourceDelete(DelegateExecution execution){
+
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+
+        utils.log("INFO", " ======== STARTED preResourceDelete Process ======== ", isDebugEnabled)
+
+        List<Resource> sequencedResourceList = execution.getVariable("sequencedResourceList")
+
+        int currentIndex = execution.getVariable("currentResourceIndex")
+        Resource curResource = sequencedResourceList.get(currentIndex);
+
+        String resourceInstanceUUID = curResource.getResourceId()
+        String resourceTemplateUUID = curResource.getModelInfo().getModelUuid()
+        execution.setVariable("resourceInstanceId", resourceInstanceUUID)
+        execution.setVariable("currentResource", curResource)
+        utils.log("INFO", "Delete Resource Info resourceTemplate Id :" + resourceTemplateUUID + "  resourceInstanceId: "
+                + resourceInstanceUUID + " resourceModelName: " + curResource.getModelInfo().getModelName(), isDebugEnabled)
+
+        utils.log("INFO", " ======== END preResourceDelete Process ======== ", isDebugEnabled)
+    }
+
+
+    /**
+     * Execute delete workflow for resource
+     */
+    public void executeResourceDelete(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO", "======== Start executeResourceDelete Process ======== ", isDebugEnabled)
+		try {
+	        String requestId = execution.getVariable("msoRequestId")
+	        String serviceInstanceId = execution.getVariable("serviceInstanceId")
+	        String serviceType = execution.getVariable("serviceType")
+	
+	        String resourceInstanceId = execution.getVariable("resourceInstanceId")
+	
+	        Resource currentResource = execution.getVariable("currentResource")
+	        String action = "deleteInstance"
+	        JSONObject resourceRecipe = cutils.getResourceRecipe(execution, currentResource.getModelInfo().getModelUuid(), action)
+	        String recipeUri = resourceRecipe.getString("orchestrationUri")
+	        int recipeTimeout = resourceRecipe.getInt("recipeTimeout")
+	        String recipeParamXsd = resourceRecipe.get("paramXSD")
+	
+	
+	        ResourceInput resourceInput = new ResourceInput();
+	        resourceInput.setServiceInstanceId(serviceInstanceId)
+	        resourceInput.setResourceInstanceName(currentResource.getResourceInstanceName())
+	        resourceInput.setResourceInstancenUuid(currentResource.getResourceId())
+	        resourceInput.setOperationId(execution.getVariable("operationId"))
+        resourceInput.setOperationType(execution.getVariable("operationType"))
+	        String globalSubscriberId = execution.getVariable("globalSubscriberId") 
+	        resourceInput.setGlobalSubscriberId(globalSubscriberId)
+	        resourceInput.setResourceModelInfo(currentResource.getModelInfo());
+	   	    ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+	   		resourceInput.setServiceModelInfo(serviceDecomposition.getModelInfo());
+	        resourceInput.setServiceType(serviceType)
+	
+	        String recipeURL = BPMNProperties.getProperty("bpelURL", "http://mso:8080") + recipeUri
+	
+	        HttpResponse resp = BpmnRestClient.post(recipeURL, requestId, recipeTimeout, action, serviceInstanceId, serviceType, resourceInput.toString(), recipeParamXsd)
+	        utils.log("INFO", " ======== END executeResourceDelete Process ======== ", isDebugEnabled)
+		}catch(BpmnError b){
+			 msoLogger.debug("Rethrowing MSOWorkflowException")
+			 throw b
+		 }catch(Exception e){
+			 msoLogger.debug("Error occured within DoDeleteResourcesV1 executeResourceDelete method: " + e)
+			 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured during DoDeleteResourcesV1 executeResourceDelete Catalog")
+		 }
+    }
+
+
+    public void parseNextResource(DelegateExecution execution){
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO", "======== Start parseNextResource Process ======== ", isDebugEnabled)
+        def currentIndex = execution.getVariable("currentResourceIndex")
+        def nextIndex =  currentIndex + 1
+        execution.setVariable("currentResourceIndex", nextIndex)
+        List<String> sequencedResourceList = execution.getVariable("sequencedResourceList")
+        if(nextIndex >= sequencedResourceList.size()){
+            execution.setVariable("allResourceFinished", "true")
+        }else{
+            execution.setVariable("allResourceFinished", "false")
+        }
+        utils.log("INFO", "======== COMPLETED parseNextResource Process ======== ", isDebugEnabled)
+    }
+    
+    public void prepareFinishedProgressForResource(DelegateExecution execution) {
+
+        String serviceInstanceId = execution.getVariable("serviceInstanceId")
+        String serviceType = execution.getVariable("serviceType")
+        String resourceInstanceId = execution.getVariable("resourceInstanceId")
+        Resource currentResource = execution.getVariable("currentResource")
+        String resourceCustomizationUuid = currentResource.getModelInfo().getModelCustomizationUuid()
+        String resourceModelName = currentResource.getModelInfo().getModelName()
+        String operationType = execution.getVariable("operationType")
+        String progress = "100"
+        String status = "finished"
+        String statusDescription = "The resource instance does not exist for " + resourceModelName
+        String operationId = execution.getVariable("operationId")
+
+        String body = """
+                <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                        <soapenv:Header/>
+                <soapenv:Body>
+                    <ns:updateResourceOperationStatus>
+                               <operType>${MsoUtils.xmlEscape(operationType)}</operType>
+                               <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                               <progress>${MsoUtils.xmlEscape(progress)}</progress>
+                               <resourceTemplateUUID>${MsoUtils.xmlEscape(resourceCustomizationUuid)}</resourceTemplateUUID>
+                               <serviceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceId>
+                               <status>${MsoUtils.xmlEscape(status)}</status>
+                               <statusDescription>${MsoUtils.xmlEscape(statusDescription)}</statusDescription>
+                    </ns:updateResourceOperationStatus>
+                </soapenv:Body>
+                </soapenv:Envelope>""";
+
+        def dbAdapterEndpoint = execution.getVariable("URN_mso_adapters_openecomp_db_endpoint")
+        execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint)
+        execution.setVariable("CVFMI_updateResOperStatusRequest", body)
+    }
+
+    public void prepareSDNCServiceDeactivateRequest (DelegateExecution execution) {
+    	prepareSDNCServiceRequest (execution, "deactivate")
+    }
+    
+    public void prepareSDNCServiceDeleteRequest (DelegateExecution execution) {
+    	prepareSDNCServiceRequest (execution, "delete")
+    }
+    
+    public void prepareSDNCServiceRequest (DelegateExecution execution, String svcAction) {
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO"," ***** Started prepareSDNCServiceRequest for " + svcAction +  "*****",  isDebugEnabled)
+
+        try {
+            // get variables
+            String sdnc_svcAction = svcAction        
+            String sdncCallback = execution.getVariable("URN_mso_workflow_sdncadapter_callback")            
+            String hdrRequestId = execution.getVariable("msoRequestId")
+            String serviceInstanceId = execution.getVariable("serviceInstanceId")
+            String source = execution.getVariable("source")
+            String sdnc_service_id = serviceInstanceId
+            ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+            String serviceType = execution.getVariable("serviceType")
+            String globalCustomerId = execution.getVariable("globalSubscriberId")
+            String serviceModelInvariantUuid = serviceDecomposition.getModelInfo().getModelInvariantUuid()
+            String serviceModelUuid = serviceDecomposition.getModelInfo().getModelUuid()
+            String serviceModelVersion = serviceDecomposition.getModelInfo().getModelVersion()
+            String serviceModelName = serviceDecomposition.getModelInfo().getModelName()
+
+            // 1. prepare assign topology via SDNC Adapter SUBFLOW call
+            String sndcTopologyDeleteRequest =
+                    """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+                                                              xmlns:sdncadapter="http://org.onap.so/workflow/sdnc/adapter/schema/v1" 
+                                                              xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1">
+                                 <sdncadapter:RequestHeader>
+                                    <sdncadapter:RequestId>${MsoUtils.xmlEscape(hdrRequestId)}</sdncadapter:RequestId>
+                                    <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId>
+                                    <sdncadapter:SvcAction>${MsoUtils.xmlEscape(sdnc_svcAction)}</sdncadapter:SvcAction>
+                                    <sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation>
+                                    <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+                                    <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+                                 </sdncadapter:RequestHeader>
+                                 <sdncadapterworkflow:SDNCRequestData>
+                                     <request-information>
+                                        <request-id>${MsoUtils.xmlEscape(hdrRequestId)}</request-id>
+                                        <request-action>DeleteServiceInstance</request-action>
+                                        <source>${MsoUtils.xmlEscape(source)}</source>
+                                        <notification-url></notification-url>
+                                        <order-number></order-number>
+                                        <order-version></order-version>
+                                     </request-information>
+                                     <service-information>
+                                        <service-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-id>
+                                        <subscription-service-type>${MsoUtils.xmlEscape(serviceType)}</subscription-service-type>
+                                        <onap-model-information>
+                                             <model-invariant-uuid>${MsoUtils.xmlEscape(serviceModelInvariantUuid)}</model-invariant-uuid>
+                                             <model-uuid>${MsoUtils.xmlEscape(serviceModelUuid)}</model-uuid>
+                                             <model-version>${MsoUtils.xmlEscape(serviceModelVersion)}</model-version>
+                                             <model-name>${MsoUtils.xmlEscape(serviceModelName)}</model-name>
+                                        </onap-model-information>
+                                        <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+                                        <global-customer-id>${MsoUtils.xmlEscape(globalCustomerId)}</global-customer-id>
+                                     </service-information>
+                                     <service-request-input>
+                                     </service-request-input>
+                                </sdncadapterworkflow:SDNCRequestData>
+                             </aetgt:SDNCAdapterWorkflowRequest>""".trim()
+            
+            String sndcTopologyDeleteRequesAsString = utils.formatXml(sndcTopologyDeleteRequest)
+            utils.logAudit(sndcTopologyDeleteRequesAsString)
+            execution.setVariable("sdncAdapterWorkflowRequest", sndcTopologyDeleteRequesAsString)
+            utils.log("INFO","sdncAdapterWorkflowRequest - " + "\n" +  sndcTopologyDeleteRequesAsString, isDebugEnabled)
+
+        } catch (Exception ex) {
+            String exceptionMessage = " Bpmn error encountered in DoDeleteResourcesV1 flow. prepareSDNCServiceRequest() - " + ex.getMessage()
+            utils.log("DEBUG", exceptionMessage, isDebugEnabled)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+        }
+       utils.log("INFO","***** Exit prepareSDNCServiceRequest for " + svcAction +  "*****",  isDebugEnabled)
+	}
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy
new file mode 100644
index 0000000..198144a
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy
@@ -0,0 +1,472 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import static org.apache.commons.lang3.StringUtils.*;
+
+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.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.core.UrnPropertiesReader;
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MsoLogger
+import org.onap.so.client.aai.entities.uri.AAIResourceUri
+import org.onap.so.client.aai.entities.uri.AAIUriFactory
+import org.onap.so.client.aai.AAIObjectType
+import org.onap.so.client.aai.AAIResourcesClient
+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 groovy.json.*
+
+/**
+ * This groovy class supports the <class>DoDeleteServiceInstance.bpmn</class> process.
+ *
+ * Inputs:
+ * @param - msoRequestId
+ * @param - globalSubscriberId - O
+ * @param - subscriptionServiceType - O
+ * @param - serviceInstanceId
+ * @param - serviceInstanceName - O
+ * @param - serviceModelInfo - O
+ * @param - productFamilyId
+ * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM)
+ * @param - sdncVersion
+ * @param - failNotFound - TODO
+ * @param - serviceInputParams - TODO
+ *
+ * Outputs:
+ * @param - WorkflowException
+ *
+ * Rollback - Deferred
+ */
+public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteServiceInstance.class);
+
+	String Prefix="DDELSI_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	public void preProcessRequest (DelegateExecution execution) {
+
+		msoLogger.trace("preProcessRequest ")
+		String msg = ""
+
+		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
+			if (globalSubscriberId == null)
+			{
+				execution.setVariable("globalSubscriberId", "")
+			}
+
+			//requestDetails.requestParameters. for AAI PUT & SDNC assignTopology
+			String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+			if (subscriptionServiceType == null)
+			{
+				execution.setVariable("subscriptionServiceType", "")
+			}
+
+			//Generated in parent for AAI PUT
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			if (isBlank(serviceInstanceId)){
+				msg = "Input serviceInstanceId is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+
+			String sdncCallbackUrl = UrnPropertiesReader.getVariable('mso.workflow.sdncadapter.callback',execution)
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "mso.workflow.sdncadapter.callback is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl)
+
+			StringBuilder sbParams = new StringBuilder()
+			Map<String, String> paramsMap = execution.getVariable("serviceInputParams")
+			if (paramsMap != null)
+			{
+				sbParams.append("<service-input-parameters>")
+				for (Map.Entry<String, String> entry : paramsMap.entrySet()) {
+					String paramsXml
+					String paramName = entry.getKey()
+					String paramValue = entry.getValue()
+					paramsXml =
+							"""	<param>
+							<name>${MsoUtils.xmlEscape(paramName)}</name>
+							<value>${MsoUtils.xmlEscape(paramValue)}</value>
+							</param>
+							"""
+					sbParams.append(paramsXml)
+				}
+				sbParams.append("</service-input-parameters>")
+			}
+			String siParamsXml = sbParams.toString()
+			if (siParamsXml == null)
+				siParamsXml = ""
+			execution.setVariable("siParamsXml", siParamsXml)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit preProcessRequest ")
+	}
+
+	public void preProcessSDNCDelete (DelegateExecution execution) {
+
+		msoLogger.trace("preProcessSDNCDelete ")
+		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
+
+			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") ?: ""
+
+			}
+
+			def siParamsXml = execution.getVariable("siParamsXml") ?: ""
+			def msoAction = ""
+			// special URL for SDNW, msoAction helps set diff url in SDNCA
+			if("TRANSPORT".equalsIgnoreCase(execution.getVariable("serviceType")))
+			{
+				msoAction = "TRANSPORT"
+			}
+
+			def sdncRequestId = UUID.randomUUID().toString()
+
+			String sdncDelete =
+					"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+				   <sdncadapter:RequestHeader>
+							<sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId>
+							<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId>
+							<sdncadapter:SvcAction>delete</sdncadapter:SvcAction>
+							<sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation>
+							<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl>
+							<sdncadapter:MsoAction>${MsoUtils.xmlEscape(msoAction)}</sdncadapter:MsoAction>
+					</sdncadapter:RequestHeader>
+				<sdncadapterworkflow:SDNCRequestData>
+					<request-information>
+						<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+						<source>MSO</source>
+						<notification-url/>
+						<order-number/>
+						<order-version/>
+						<request-action>DeleteServiceInstance</request-action>
+					</request-information>
+					<service-information>
+						<service-id>${MsoUtils.xmlEscape(serviceId)}</service-id>
+						<subscription-service-type>${MsoUtils.xmlEscape(subscriptionServiceType)}</subscription-service-type>
+						<onap-model-information>
+					         <model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-uuid>
+					         <model-uuid>${MsoUtils.xmlEscape(modelUuid)}</model-uuid>
+					         <model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version>
+					         <model-name>${MsoUtils.xmlEscape(modelName)}</model-name>
+					    </onap-model-information>
+						<service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+						<subscriber-name/>
+						<global-customer-id>${MsoUtils.xmlEscape(globalSubscriberId)}</global-customer-id>
+					</service-information>
+					<service-request-input>
+						<service-instance-name>${MsoUtils.xmlEscape(serviceInstanceName)}</service-instance-name>
+						${siParamsXml}
+					</service-request-input>
+				</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			sdncDelete = utils.formatXml(sdncDelete)
+			def sdncRequestId2 = UUID.randomUUID().toString()
+			String sdncDeactivate = sdncDelete.replace(">delete<", ">deactivate<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<")
+			execution.setVariable("sdncDelete", sdncDelete)
+			execution.setVariable("sdncDeactivate", sdncDeactivate)
+			msoLogger.debug("sdncDeactivate:\n" + sdncDeactivate)
+			msoLogger.debug("sdncDelete:\n" + sdncDelete)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCDelete. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Exception Occured in preProcessSDNCDelete.\n" + ex.getMessage())
+		}
+		msoLogger.debug(" *****Exit preProcessSDNCDelete *****")
+	}
+
+	public void postProcessSDNCDelete(DelegateExecution execution, String response, String method) {
+
+
+		msoLogger.trace("postProcessSDNC " + method + " ")
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			msoLogger.debug("SDNCResponse: " + response)
+			msoLogger.debug("workflowException: " + workflowException)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				msoLogger.debug("Good response from SDNC Adapter for service-instance " + method + "response:\n" + response)
+
+			}else{
+				msg = "Bad Response from SDNC Adapter for service-instance " + method
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 3500, msg)
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in postProcessSDNC " + method + " Exception:" + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit postProcessSDNC " + method + " ")
+	}
+
+	public void postProcessAAIGET(DelegateExecution execution) {
+
+		msoLogger.trace("postProcessAAIGET ")
+		String msg = ""
+
+		try {
+
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator")
+			String serviceType = ""
+
+			if(foundInAAI == true){
+				msoLogger.debug("Found Service-instance in AAI")
+
+				//Extract GlobalSubscriberId
+				String siRelatedLink = execution.getVariable("GENGS_siResourceLink")
+				if (isBlank(siRelatedLink))
+				{
+					msg = "Could not retrive ServiceInstance data from AAI to delete id:" + serviceInstanceId
+					msoLogger.debug(msg)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+				}
+				else
+				{
+					msoLogger.debug("Found Service-instance in AAI. link: " + siRelatedLink)
+					String  globalSubscriberId = execution.getVariable("globalSubscriberId")
+					if(isBlank(globalSubscriberId)){
+						int custStart = siRelatedLink.indexOf("customer/")
+						int custEnd = siRelatedLink.indexOf("/service-subscriptions")
+						globalSubscriberId = siRelatedLink.substring(custStart + 9, custEnd)
+						execution.setVariable("globalSubscriberId", globalSubscriberId)
+					}
+
+					//Extract Service Type if not provided on request
+					String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+					if(isBlank(subscriptionServiceType)){
+						int serviceStart = siRelatedLink.indexOf("service-subscription/")
+						int serviceEnd = siRelatedLink.indexOf("/service-instances/")
+						String serviceTypeEncoded = siRelatedLink.substring(serviceStart + 21, serviceEnd)
+						subscriptionServiceType = UriUtils.decode(serviceTypeEncoded, "UTF-8")
+						execution.setVariable("subscriptionServiceType", subscriptionServiceType)
+					}
+
+					if (isBlank(globalSubscriberId) || isBlank(subscriptionServiceType))
+					{
+						msg = "Could not retrive global-customer-id & subscription-service-type from AAI to delete id:" + serviceInstanceId
+						msoLogger.debug(msg)
+						exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+					}
+				}
+
+				String siData = execution.getVariable("GENGS_service")
+				msoLogger.debug("SI Data")
+				if (isBlank(siData))
+				{
+					msg = "Could not retrive ServiceInstance data from AAI to delete id:" + serviceInstanceId
+					msoLogger.debug(msg)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+				}
+				else
+				{
+					msoLogger.debug("SI Data" + siData)
+					serviceType = utils.getNodeText(siData,"service-type")
+					execution.setVariable("serviceType", serviceType)
+					execution.setVariable("serviceRole", utils.getNodeText(siData,"service-role"))
+					String orchestrationStatus =  utils.getNodeText(siData,"orchestration-status")
+
+					//Confirm there are no related service instances (vnf/network or volume)
+					if (utils.nodeExists(siData, "relationship-list")) {
+						msoLogger.debug("SI Data relationship-list exists:")
+						InputSource source = new InputSource(new StringReader(siData));
+						DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
+						DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
+						Document serviceXml = docBuilder.parse(source)
+
+						NodeList nodeList = serviceXml.getElementsByTagName("relationship")
+						for (int x = 0; x < nodeList.getLength(); x++) {
+							Node node = nodeList.item(x)
+							if (node.getNodeType() == Node.ELEMENT_NODE) {
+								Element eElement = (Element) node
+								def e = eElement.getElementsByTagName("related-to").item(0).getTextContent()
+								if(e.equals("generic-vnf") || e.equals("l3-network") || e.equals("allotted-resource") ){
+									msoLogger.debug("ServiceInstance still has relationship(s) to generic-vnfs, l3-networks or allotted-resources")
+									execution.setVariable("siInUse", true)
+									//there are relationship dependencies to this Service Instance
+									msg = " Stopped deleting Service Instance, it has dependencies. Service instance id: " + serviceInstanceId
+									msoLogger.debug(msg)
+									exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+								}else{
+									msoLogger.debug("Relationship NOT related to OpenStack")
+								}
+							}
+						}
+					}
+
+					if ("TRANSPORT".equalsIgnoreCase(serviceType))
+					{
+						if ("PendingDelete".equals(orchestrationStatus))
+						{
+							execution.setVariable("skipDeactivate", true)
+						}
+						else
+						{
+							msg = "ServiceInstance of type TRANSPORT must in PendingDelete status to allow Delete. Orchestration-status:" + orchestrationStatus
+							msoLogger.debug(msg)
+							exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+						}
+
+					}
+
+					//alacarte SIs are NOT sent to sdnc. exceptions are listed in config variable
+					String svcTypes = UrnPropertiesReader.getVariable("sdnc.si.svc.types",execution) ?: ""
+					msoLogger.debug("SDNC SI serviceTypes:" + svcTypes)
+					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)
+						}
+					}
+
+					msoLogger.debug("isSdncService: " + isSdncService)
+					msoLogger.debug("Send To SDNC: " + execution.getVariable("sendToSDNC"))
+					msoLogger.debug("Service Type: " + execution.getVariable("serviceType"))
+
+				}
+			}else{
+				boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")
+				if(succInAAI != true){
+					msoLogger.debug("Error getting Service-instance from AAI", + serviceInstanceId)
+					WorkflowException workflowException = execution.getVariable("WorkflowException")
+					msoLogger.debug("workflowException: " + workflowException)
+					if(workflowException != null){
+						exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+					}
+					else
+					{
+						msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI
+						msoLogger.debug(msg)
+						exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+					}
+				}
+
+				msoLogger.debug("Service-instance NOT found in AAI. Silent Success")
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoDeleteServiceInstance.postProcessAAIGET. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit postProcessAAIGET ")
+	}
+
+	/**
+	 * Deletes the service instance in aai
+	 */
+	public void deleteServiceInstance(DelegateExecution execution) {
+		msoLogger.trace("Entered deleteServiceInstance")
+		try {
+			String globalCustId = execution.getVariable("globalSubscriberId")
+			String serviceType = execution.getVariable("subscriptionServiceType")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+			AAIResourcesClient resourceClient = new AAIResourcesClient();
+			AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustId, serviceType, serviceInstanceId)
+			resourceClient.delete(serviceInstanceUri)
+
+			msoLogger.trace("Exited deleteServiceInstance")
+		}catch(Exception e){
+			msoLogger.debug("Error occured within deleteServiceInstance method: " + e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Error occured during deleteServiceInstance from aai")
+		}
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy
new file mode 100644
index 0000000..0069bf4
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy
@@ -0,0 +1,285 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * OPENECOMP - SO
+ * ================================================================================
+ * 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.onap.so.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.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor 
+import org.onap.so.bpmn.common.scripts.ExceptionUtil 
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.json.JsonUtils 
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.onap.so.rest.RESTClient 
+import org.onap.so.rest.RESTConfig
+
+import groovy.json.*
+
+/**
+ * This groovy class supports the <class>DoDeleteVFCNetworkServiceInstance.bpmn</class> process.
+ * flow for E2E ServiceInstance Delete
+ */
+public class DoDeleteVFCNetworkServiceInstance extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteVFCNetworkServiceInstance.class);
+
+            
+    String vfcUrl = "/vfc/rest/v1/vfcadapter"
+    
+    String host = "http://mso.mso.testlab.openecomp.org:8080"
+    
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+    JsonUtils jsonUtil = new JsonUtils()
+
+    /**
+     * Pre Process the BPMN Flow Request
+     * Inclouds:
+     * generate the nsOperationKey
+     */
+    public void preProcessRequest (DelegateExecution execution) {
+
+        String msg = ""
+        msoLogger.trace("preProcessRequest() ")
+        try {
+            //deal with operation key
+            String globalSubscriberId = execution.getVariable("globalSubscriberId")
+            msoLogger.info("globalSubscriberId:" + globalSubscriberId)
+            String serviceType = execution.getVariable("serviceType")
+            msoLogger.info("serviceType:" + serviceType)
+            String serviceId = execution.getVariable("serviceId")
+            msoLogger.info("serviceId:" + serviceId)
+            String operationId = execution.getVariable("operationId")
+            msoLogger.info("serviceType:" + serviceType)
+            String nodeTemplateUUID = execution.getVariable("resourceTemplateId")
+            msoLogger.info("nodeTemplateUUID:" + nodeTemplateUUID)
+            String nsInstanceId = execution.getVariable("resourceInstanceId")
+            msoLogger.info("nsInstanceId:" + nsInstanceId)
+            execution.setVariable("nsInstanceId",nsInstanceId)
+            String nsOperationKey = """{
+            "globalSubscriberId":"${globalSubscriberId}",
+            "serviceType":"${serviceType}",
+            "serviceId":"${serviceId}",
+            "operationId":"${operationId}",
+            "nodeTemplateUUID":"${nodeTemplateUUID}"
+             }"""
+            execution.setVariable("nsOperationKey", nsOperationKey);
+            msoLogger.info("nsOperationKey:" + nsOperationKey)
+        } catch (BpmnError e) {
+            throw e;
+        } catch (Exception ex){
+            msg = "Exception in preProcessRequest " + ex.getMessage()
+            msoLogger.info(msg)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+        }
+        msoLogger.trace("Exit preProcessRequest ")
+	}
+
+    /**
+     * unwind NS from AAI relationship
+     */
+    public void deleteNSRelationship(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO"," ***** deleteNSRelationship *****",  isDebugEnabled)
+        String nsInstanceId = execution.getVariable("resourceInstanceId")
+        if(nsInstanceId == null || nsInstanceId == ""){
+            utils.log("INFO"," Delete NS failed",  isDebugEnabled)
+            return
+        }
+        String globalSubscriberId = execution.getVariable("globalSubscriberId")
+        String serviceType = execution.getVariable("serviceType")
+        String serviceId = execution.getVariable("serviceId")
+        String deleteRelationPayload = """<relationship xmlns="http://org.openecomp.aai.inventory/v11">
+                                            <related-to>service-instance</related-to>
+                                            <related-link>/aai/v11/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${serviceType}/service-instances/service-instance/${nsInstanceId}</related-link>
+                                            <relationship-data>
+                                                <relationship-key>customer.global-customer-id</relationship-key>
+                                                <relationship-value>${MsoUtils.xmlEscape(globalSubscriberId)}</relationship-value>
+                                            </relationship-data>
+                                            <relationship-data>
+                                                <relationship-key>service-subscription.service-type</relationship-key>
+                                                <relationship-value>${MsoUtils.xmlEscape(serviceType)}</relationship-value>
+                                            </relationship-data>
+                                           <relationship-data>
+                                                <relationship-key>service-instance.service-instance-id</relationship-key>
+                                                <relationship-value>${MsoUtils.xmlEscape(nsInstanceId)}</relationship-value>
+                                            </relationship-data>           
+                                        </relationship>"""
+        String endpoint = execution.getVariable("URN_aai_endpoint")
+        utils.log("INFO","Delete Relationship req:\n" + deleteRelationPayload,  isDebugEnabled)
+        String url = endpoint + "/aai/v11/business/customers/customer/" + globalSubscriberId + "/service-subscriptions/service-subscription/" + serviceType + "/service-instances/service-instance/" + serviceId + "/relationship-list/relationship"
+
+        APIResponse aaiRsp = executeAAIDeleteCall(execution, url, deleteRelationPayload)
+        utils.log("INFO","aai response status code:" + aaiRsp.getStatusCode(),  isDebugEnabled)
+        utils.log("INFO","aai response content:" + aaiRsp.getResponseBodyAsString(),  isDebugEnabled)
+        utils.log("INFO"," *****Exit deleteNSRelationship *****",  isDebugEnabled)
+    }
+
+    public APIResponse executeAAIDeleteCall(DelegateExecution execution, String url, String payload){
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO", " ======== Started Execute AAI Delete Process ======== ",  isDebugEnabled)
+        APIResponse apiResponse = null
+        try{
+            String uuid = utils.getRequestID()
+            utils.log("INFO","Generated uuid is: " + uuid,  isDebugEnabled)
+            utils.log("INFO","URL to be used is: " + url,  isDebugEnabled)
+            String userName = execution.getVariable("URN_aai_auth")
+            String password = execution.getVariable("URN_mso_msoKey")
+            String basicAuthCred = utils.getBasicAuth(userName,password)
+            RESTConfig config = new RESTConfig(url);
+            RESTClient client = new RESTClient(config).addHeader("X-FromAppId", "MSO").addHeader("X-TransactionId", uuid).addHeader("Content-Type", "application/xml").addHeader("Accept","application/xml");
+            if (basicAuthCred != null && !"".equals(basicAuthCred)) {
+                client.addAuthorizationHeader(basicAuthCred)
+            }
+            apiResponse = client.httpDelete(payload)
+            utils.log("INFO","======== Completed Execute AAI Delete Process ======== ",  isDebugEnabled)
+        }catch(Exception e){
+            utils.log("ERROR","Exception occured while executing AAI Put Call. Exception is: \n" + e,  isDebugEnabled)
+            throw new BpmnError("MSOWorkflowException")
+        }
+        return apiResponse
+    }
+
+    /**
+     * delete NS task
+     */
+    public void deleteNetworkService(DelegateExecution execution) {
+
+        msoLogger.trace("deleteNetworkService  start ")
+        String nsOperationKey = execution.getVariable("nsOperationKey");
+        String url = host + vfcUrl + "/ns/" + execution.getVariable("nsInstanceId") 
+        APIResponse apiResponse = deleteRequest(execution, url, nsOperationKey)
+        String returnCode = apiResponse.getStatusCode()
+        String apiResponseAsString = apiResponse.getResponseBodyAsString()
+        String operationStatus = "error";
+        if(returnCode== "200" || returnCode== "202"){
+            operationStatus = "finished"
+        }
+        execution.setVariable("operationStatus", operationStatus)
+        
+        msoLogger.trace("deleteNetworkService  end ")
+    }
+
+    /**
+     * instantiate NS task
+     */
+    public void terminateNetworkService(DelegateExecution execution) {
+
+        msoLogger.trace("terminateNetworkService  start ")
+        String nsOperationKey = execution.getVariable("nsOperationKey") 
+        String url =  host + vfcUrl + "/ns/" + execution.getVariable("nsInstanceId") + "/terminate"
+        APIResponse apiResponse = postRequest(execution, url, nsOperationKey)
+        String returnCode = apiResponse.getStatusCode()
+        String aaiResponseAsString = apiResponse.getResponseBodyAsString()
+        String jobId = "";
+        if(returnCode== "200" || returnCode== "202"){
+            jobId =  jsonUtil.getJsonValue(aaiResponseAsString, "jobId")
+        }
+        execution.setVariable("jobId", jobId)   
+        msoLogger.trace("terminateNetworkService  end ")
+    }
+
+    /**
+     * query NS task
+     */
+    public void queryNSProgress(DelegateExecution execution) {
+
+        msoLogger.trace("queryNSProgress  start ")
+        String jobId = execution.getVariable("jobId")
+        String nsOperationKey = execution.getVariable("nsOperationKey");
+        String url =  host + vfcUrl + "/jobs/" +  execution.getVariable("jobId") 
+        APIResponse apiResponse = postRequest(execution, url, nsOperationKey)
+        String returnCode = apiResponse.getStatusCode()
+        String apiResponseAsString = apiResponse.getResponseBodyAsString()
+        String operationProgress = "100"
+        if(returnCode== "200"){
+            operationProgress = jsonUtil.getJsonValue(apiResponseAsString, "responseDescriptor.progress")
+        }
+        execution.setVariable("operationProgress", operationProgress)
+        msoLogger.trace("queryNSProgress  end ")
+    }
+
+    /**
+     * delay 5 sec 
+     */
+    public void timeDelay(DelegateExecution execution) {
+        try {
+            Thread.sleep(5000);
+        } catch(InterruptedException e) {           
+            msoLogger.info("Time Delay exception" + e)
+        }
+    }
+
+    /**
+     * finish NS task
+     */
+    public void finishNSDelete(DelegateExecution execution) {
+        //no need to do anything util now
+    }
+
+    /**
+     * post request
+     * url: the url of the request
+     * requestBody: the body of the request
+     */
+    private APIResponse postRequest(DelegateExecution execution, String url, String requestBody){
+
+        msoLogger.trace("Started Execute VFC adapter Post Process ")
+        msoLogger.info("url:"+url +"\nrequestBody:"+ requestBody)
+        APIResponse apiResponse = null
+        try{
+            RESTConfig config = new RESTConfig(url);
+            RESTClient client = new RESTClient(config).addHeader("Content-Type", "application/json").addHeader("Accept","application/json").addHeader("Authorization","Basic QlBFTENsaWVudDpwYXNzd29yZDEk");;
+            apiResponse = client.httpPost(requestBody)
+            msoLogger.info("response code:"+ apiResponse.getStatusCode() +"\nresponse body:"+ apiResponse.getResponseBodyAsString())
+            msoLogger.trace("Completed Execute VF-C adapter Post Process ")
+        }catch(Exception e){
+            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception occured while executing VF-C Post Call. Exception is: \n" + e, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+            throw new BpmnError("MSOWorkflowException")
+        }        
+        return apiResponse
+    }
+    /**
+     * delete request
+     * url: the url of the request
+     * requestBody: the body of the request
+     */
+    private APIResponse deleteRequest(DelegateExecution execution, String url, String requestBody){
+
+        msoLogger.trace("Started Execute VFC adapter Delete Process ")       
+        msoLogger.info("url:"+url +"\nrequestBody:"+ requestBody)
+        APIResponse apiResponse = null
+        try{
+            RESTConfig config = new RESTConfig(url);
+            RESTClient client = new RESTClient(config).addHeader("Content-Type", "application/json").addHeader("Accept","application/json").addHeader("Authorization","Basic QlBFTENsaWVudDpwYXNzd29yZDEk");
+            apiResponse = client.httpDelete(requestBody)
+            msoLogger.info("response code:"+ apiResponse.getStatusCode() +"\nresponse body:"+ apiResponse.getResponseBodyAsString()) 
+            msoLogger.trace("Completed Execute VF-C adapter Delete Process ") 
+        }catch(Exception e){
+            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception occured while executing VF-C Post Call. Exception is: \n" + e, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e); 
+            throw new BpmnError("MSOWorkflowException")
+        }        
+        return apiResponse
+    }
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy
new file mode 100644
index 0000000..b41b74e
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy
@@ -0,0 +1,711 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import javax.xml.parsers.DocumentBuilder
+import javax.xml.parsers.DocumentBuilderFactory
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.common.scripts.VfModule
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.onap.so.rest.RESTClient
+import org.onap.so.rest.RESTConfig
+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
+
+/* Subflow for Delete VF Module. When no DoDeleteVfModuleRequest is specified on input,
+ * functions as a building block subflow
+
+* Inputs for building block interface:
+* @param - requestId
+* @param - isDebugLogEnabled
+* @param - vnfId
+* @param - vfModuleId
+* @param - serviceInstanceId
+* @param - vfModuleName O
+* @param - vfModuleModelInfo
+* @param - cloudConfiguration*
+* @param - sdncVersion ("1610")
+* @param - retainResources 
+* @param - aLaCarte
+*
+* Outputs:
+* @param - WorkflowException
+*
+*/
+public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteVfModule.class);
+
+	def Prefix="DoDVfMod_"
+
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	public void initProcessVariables(DelegateExecution execution) {
+		execution.setVariable("prefix",Prefix)
+		execution.setVariable("DoDVfMod_contrailNetworkPolicyFqdnList", null)
+		execution.setVariable("DoDVfMod_oamManagementV4Address", null)
+		execution.setVariable("DoDVfMod_oamManagementV6Address", null)
+
+	}
+
+	// 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(DelegateExecution execution) {
+
+		initProcessVariables(execution)
+
+		try {
+			def xml = execution.getVariable("DoDeleteVfModuleRequest")
+			String vnfId = ""
+			String vfModuleId = ""
+
+			if (xml == null || xml.isEmpty()) {
+				// Building Block-type request
+
+				// Set mso-request-id to request-id for VNF Adapter interface
+				String requestId = execution.getVariable("requestId")
+				execution.setVariable("mso-request-id", requestId)
+
+				String cloudConfiguration = execution.getVariable("cloudConfiguration")
+				String vfModuleModelInfo = execution.getVariable("vfModuleModelInfo")
+				String tenantId = jsonUtil.getJsonValue(cloudConfiguration, "tenantId")
+				execution.setVariable("tenantId", tenantId)
+				String cloudSiteId = jsonUtil.getJsonValue(cloudConfiguration, "lcpCloudRegionId")
+				execution.setVariable("cloudSiteId", cloudSiteId)
+				// Source is HARDCODED
+				String source = "VID"
+				execution.setVariable("source", source)
+				// SrvInstId is hardcoded to empty
+				execution.setVariable("srvInstId", "")
+				// ServiceId is hardcoded to empty
+				execution.setVariable("serviceId", "")
+				String serviceInstanceId = execution.getVariable("serviceInstanceId")
+				vnfId = execution.getVariable("vnfId")
+				vfModuleId = execution.getVariable("vfModuleId")
+				if (serviceInstanceId == null || serviceInstanceId.isEmpty()) {
+					execution.setVariable(Prefix + "serviceInstanceIdToSdnc", vfModuleId)
+				}
+				else {
+					execution.setVariable(Prefix + "serviceInstanceIdToSdnc", serviceInstanceId)
+				}
+				//vfModuleModelName
+				def vfModuleModelName = jsonUtil.getJsonValue(vfModuleModelInfo, "modelName")
+				execution.setVariable("vfModuleModelName", vfModuleModelName)
+				// retainResources
+				def retainResources = execution.getVariable("retainResources")			
+				if (retainResources == null) {
+					retainResources  = false
+				}
+				execution.setVariable("retainResources", retainResources)				
+			}
+			else {
+
+				msoLogger.debug("DoDeleteVfModule Request: " + xml)
+
+				msoLogger.debug("input request xml: " + xml)
+
+				vnfId = utils.getNodeText(xml,"vnf-id")
+				execution.setVariable("vnfId", vnfId)
+				vfModuleId = utils.getNodeText(xml,"vf-module-id")
+				execution.setVariable("vfModuleId", vfModuleId)
+				def srvInstId = execution.getVariable("mso-service-instance-id")
+				execution.setVariable("srvInstId", srvInstId)
+				String requestId = ""
+				try {
+					requestId = execution.getVariable("mso-request-id")
+				} catch (Exception ex) {
+					requestId = utils.getNodeText(xml, "request-id")
+				}
+				execution.setVariable("requestId", requestId)
+				String source = utils.getNodeText(xml, "source")
+				execution.setVariable("source", source)
+				String serviceId = utils.getNodeText(xml, "service-id")
+				execution.setVariable("serviceId", serviceId)
+				String tenantId = utils.getNodeText(xml, "tenant-id")
+				execution.setVariable("tenantId", tenantId)
+
+				String serviceInstanceIdToSdnc = ""
+				if (xml.contains("service-instance-id")) {
+					serviceInstanceIdToSdnc = utils.getNodeText(xml, "service-instance-id")
+				} else {
+					serviceInstanceIdToSdnc = vfModuleId
+				}
+				execution.setVariable(Prefix + "serviceInstanceIdToSdnc", serviceInstanceIdToSdnc)
+				String vfModuleName = utils.getNodeText(xml, "vf-module-name")
+				execution.setVariable("vfModuleName", vfModuleName)
+				String vfModuleModelName = utils.getNodeText(xml, "vf-module-model-name")
+				execution.setVariable("vfModuleModelName", vfModuleModelName)
+				String cloudSiteId = utils.getNodeText(xml, "aic-cloud-region")
+				execution.setVariable("cloudSiteId", cloudSiteId)
+			}
+
+			// formulate the request for PrepareUpdateAAIVfModule
+			String request = """<PrepareUpdateAAIVfModuleRequest>
+									<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+									<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+									<orchestration-status>pending-delete</orchestration-status>
+								</PrepareUpdateAAIVfModuleRequest>""" as String
+			msoLogger.debug("PrepareUpdateAAIVfModuleRequest :" + request)
+			msoLogger.debug("UpdateAAIVfModule Request: " + request)
+			execution.setVariable("PrepareUpdateAAIVfModuleRequest", request)
+			execution.setVariable("vfModuleFromAAI", null)
+		}catch(BpmnError b){
+			throw b
+		}catch(Exception e){
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error encountered in PreProcess method!")
+		}
+	}
+
+	// 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(DelegateExecution execution, String action) {
+
+
+		String uuid = execution.getVariable('testReqId') // for junits
+		if(uuid==null){
+			uuid = execution.getVariable("requestId") + "-" +  	System.currentTimeMillis()
+		}
+		
+		def srvInstId = execution.getVariable("srvInstId")
+		def callbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+		String requestId = execution.getVariable("requestId")
+		String source = execution.getVariable("source")
+		String serviceId = execution.getVariable("serviceId")
+		String vnfId = execution.getVariable("vnfId")
+		String tenantId = execution.getVariable("tenantId")
+		String vfModuleId = execution.getVariable("vfModuleId")
+		String serviceInstanceIdToSdnc = execution.getVariable(Prefix + "serviceInstanceIdToSdnc")
+		String vfModuleName = execution.getVariable("vfModuleName")
+		// Get vfModuleName from AAI response if it was not specified on the request
+		if (vfModuleName == null || vfModuleName.isEmpty()) {
+			if (execution.getVariable("vfModuleFromAAI") != null) {
+				VfModule vfModuleFromAAI = execution.getVariable("vfModuleFromAAI")
+				vfModuleName = vfModuleFromAAI.getElementText("vf-module-name")
+			}
+		}
+		String vfModuleModelName = execution.getVariable("vfModuleModelName")
+		String cloudSiteId = execution.getVariable("cloudSiteId")
+		boolean retainResources = execution.getVariable("retainResources")
+		String requestSubActionString = ""
+		if (retainResources) {
+			requestSubActionString = "<request-sub-action>RetainResource</request-sub-action>"			
+		}
+		String request = """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+						      <sdncadapter:RequestHeader>
+						         <sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId>
+						         <sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(vfModuleId)}</sdncadapter:SvcInstanceId>
+						         <sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction>
+						         <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation>
+						         <sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl>
+						      </sdncadapter:RequestHeader>
+						      <sdncadapterworkflow:SDNCRequestData>
+						         <request-information>
+						            <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+						            <request-action>DisconnectVNFRequest</request-action>
+									${requestSubActionString}
+						            <source>${MsoUtils.xmlEscape(source)}</source>
+						            <notification-url/>
+						            <order-number/>
+						            <order-version/>
+						         </request-information>
+						         <service-information>
+						            <service-id>${MsoUtils.xmlEscape(serviceId)}</service-id>
+									<service-type>${MsoUtils.xmlEscape(serviceId)}</service-type>
+						            <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceIdToSdnc)}</service-instance-id>
+						            <subscriber-name>notsurewecare</subscriber-name>
+						         </service-information>
+						         <vnf-request-information>
+						         	<vnf-id>${MsoUtils.xmlEscape(vfModuleId)}</vnf-id>
+									<vnf-type>${MsoUtils.xmlEscape(vfModuleModelName)}</vnf-type>
+                                    <vnf-name>${MsoUtils.xmlEscape(vfModuleName)}</vnf-name>
+									<generic-vnf-id>${MsoUtils.xmlEscape(vnfId)}</generic-vnf-id>
+                                    <generic-vnf-name></generic-vnf-name>
+									<generic-vnf-type></generic-vnf-type>
+									<aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region>
+									<tenant>${MsoUtils.xmlEscape(tenantId)}</tenant>
+						         </vnf-request-information>
+						      </sdncadapterworkflow:SDNCRequestData>
+						   </sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+		msoLogger.debug("sdncAdapterWorkflowRequest: " + request)
+		msoLogger.debug("DoDeleteVfModule - SDNCAdapterWorkflowRequest: " + request)
+		execution.setVariable("sdncAdapterWorkflowRequest", request)
+	}
+
+	// parse the incoming DELETE_VF_MODULE request
+	// and formulate the outgoing VnfAdapterDeleteV1 request
+	public void prepVNFAdapterRequest(DelegateExecution execution) {
+
+		def requestId = UUID.randomUUID().toString()
+		def origRequestId = execution.getVariable('requestId')
+		def srvInstId = execution.getVariable("serviceInstanceId")
+		def aicCloudRegion = execution.getVariable("cloudSiteId")
+		def vnfId = execution.getVariable("vnfId")
+		def vfModuleId = execution.getVariable("vfModuleId")
+		def vfModuleStackId = execution.getVariable('DoDVfMod_heatStackId')
+		def tenantId = execution.getVariable("tenantId")
+		def messageId = execution.getVariable('requestId') + '-' +
+			System.currentTimeMillis()
+		def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
+		def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution)
+		if ('true'.equals(useQualifiedHostName)) {
+			notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
+		}
+
+		String request = """
+			<deleteVfModuleRequest>
+			    <cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId>
+			    <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
+			    <vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId>
+			    <vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId>
+			    <vfModuleStackId>${MsoUtils.xmlEscape(vfModuleStackId)}</vfModuleStackId>
+			    <skipAAI>true</skipAAI>
+			    <msoRequest>
+			        <requestId>${MsoUtils.xmlEscape(origRequestId)}</requestId>
+			        <serviceInstanceId>${MsoUtils.xmlEscape(srvInstId)}</serviceInstanceId>
+			    </msoRequest>
+			    <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
+			    <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
+			</deleteVfModuleRequest>
+			""" as String
+
+		msoLogger.debug("vnfAdapterRestV1Request: " + request)
+		msoLogger.debug("deleteVfModuleRequest: " + request)
+		execution.setVariable("vnfAdapterRestV1Request", request)
+	}
+
+	// parse the incoming DELETE_VF_MODULE request
+	// and formulate the outgoing UpdateAAIVfModuleRequest request
+	public void prepUpdateAAIVfModule(DelegateExecution execution) {
+
+		def vnfId = execution.getVariable("vnfId")
+		def vfModuleId = execution.getVariable("vfModuleId")
+		// formulate the request for UpdateAAIVfModule
+		String request = """<UpdateAAIVfModuleRequest>
+								<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+								<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+								<heat-stack-id>DELETE</heat-stack-id>
+								<orchestration-status>deleted</orchestration-status>
+							</UpdateAAIVfModuleRequest>""" as String
+		msoLogger.debug("UpdateAAIVfModuleRequest :" + request)
+		msoLogger.debug("UpdateAAIVfModuleRequest: " + request)
+		execution.setVariable("UpdateAAIVfModuleRequest", request)
+	}
+
+	// parse the incoming DELETE_VF_MODULE request
+	// and formulate the outgoing DeleteAAIVfModuleRequest request
+	public void prepDeleteAAIVfModule(DelegateExecution execution) {
+
+
+		def vnfId = execution.getVariable("vnfId")
+		def vfModuleId = execution.getVariable("vfModuleId")
+		// formulate the request for UpdateAAIVfModule
+		String request = """<DeleteAAIVfModuleRequest>
+								<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+								<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+							</DeleteAAIVfModuleRequest>""" as String
+		msoLogger.debug("DeleteAAIVfModuleRequest :" + request)
+		msoLogger.debug("DeleteAAIVfModuleRequest: " + request)
+		execution.setVariable("DeleteAAIVfModuleRequest", request)
+	}
+
+	// generates a WorkflowException if
+	//		-
+	public void handleDoDeleteVfModuleFailure(DelegateExecution execution) {
+		msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "AAI error occurred deleting the Generic Vnf: " + execution.getVariable("DoDVfMod_deleteGenericVnfResponse"), "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception");
+		String processKey = getProcessKey(execution);
+		WorkflowException exception = new WorkflowException(processKey, 5000,
+			execution.getVariable("DoDVfMod_deleteGenericVnfResponse"))
+		execution.setVariable("WorkflowException", exception)
+	}
+
+	public void sdncValidateResponse(DelegateExecution execution, String response){
+
+		execution.setVariable("prefix",Prefix)
+
+		WorkflowException workflowException = execution.getVariable("WorkflowException")
+		boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+
+		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+		sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+		if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+			msoLogger.debug("Successfully Validated SDNC Response")
+		}else{
+			throw new BpmnError("MSOWorkflowException")
+		}
+	}
+
+	public void postProcessVNFAdapterRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.postProcessVNFAdapterRequest(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix",Prefix)
+		try{
+		msoLogger.trace("STARTED postProcessVNFAdapterRequest Process")
+
+		String vnfResponse = execution.getVariable("DoDVfMod_doDeleteVfModuleResponse")
+		msoLogger.debug("VNF Adapter Response is: " + vnfResponse)
+		msoLogger.debug("deleteVnfAResponse is: \n"  + vnfResponse)
+
+		if(vnfResponse != null){
+
+			if(vnfResponse.contains("deleteVfModuleResponse")){
+				msoLogger.debug("Received a Good Response from VNF Adapter for DELETE_VF_MODULE Call.")
+				execution.setVariable("DoDVfMod_vnfVfModuleDeleteCompleted", true)
+
+				// Parse vnfOutputs for contrail network polcy FQDNs
+				if (vnfResponse.contains("vfModuleOutputs")) {
+					def vfModuleOutputsXml = utils.getNodeXml(vnfResponse, "vfModuleOutputs")
+					InputSource source = new InputSource(new StringReader(vfModuleOutputsXml));
+			DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
+			docFactory.setNamespaceAware(true)
+			DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
+			Document outputsXml = docBuilder.parse(source)
+
+					NodeList entries = outputsXml.getElementsByTagNameNS("*", "entry")
+					List contrailNetworkPolicyFqdnList = []
+					for (int i = 0; i< entries.getLength(); i++) {
+						Node node = entries.item(i)
+						if (node.getNodeType() == Node.ELEMENT_NODE) {
+							Element element = (Element) node
+							String key = element.getElementsByTagNameNS("*", "key").item(0).getTextContent()
+							if (key.endsWith("contrail_network_policy_fqdn")) {
+								String contrailNetworkPolicyFqdn = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
+								msoLogger.debug("Obtained contrailNetworkPolicyFqdn: " + contrailNetworkPolicyFqdn)
+								contrailNetworkPolicyFqdnList.add(contrailNetworkPolicyFqdn)
+							}
+							else if (key.equals("oam_management_v4_address")) {
+								String oamManagementV4Address = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
+								msoLogger.debug("Obtained oamManagementV4Address: " + oamManagementV4Address)
+								execution.setVariable(Prefix + "oamManagementV4Address", oamManagementV4Address)
+							}
+							else if (key.equals("oam_management_v6_address")) {
+								String oamManagementV6Address = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
+								msoLogger.debug("Obtained oamManagementV6Address: " + oamManagementV6Address)
+								execution.setVariable(Prefix + "oamManagementV6Address", oamManagementV6Address)
+							}
+
+						}
+					}
+					if (!contrailNetworkPolicyFqdnList.isEmpty()) {
+						msoLogger.debug("Setting the fqdn list")
+						execution.setVariable("DoDVfMod_contrailNetworkPolicyFqdnList", contrailNetworkPolicyFqdnList)
+					}
+				}
+			}else{
+				msoLogger.debug("Received a BAD Response from VNF Adapter for DELETE_VF_MODULE Call.")
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "VNF Adapter Error")
+			}
+		}else{
+			msoLogger.debug("Response from VNF Adapter is Null for DELETE_VF_MODULE Call.")
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Empty response from VNF Adapter")
+		}
+
+		}catch(BpmnError b){
+			throw b
+		}catch(Exception e){
+			msoLogger.debug("Internal Error Occured in PostProcess Method")
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Internal Error Occured in PostProcess Method")
+		}
+		msoLogger.trace("COMPLETED postProcessVnfAdapterResponse Process")
+	}
+
+	public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' +
+		'execution=' + execution.getId() +
+		')'
+
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED deleteNetworkPoliciesFromAAI ")
+
+		try {
+			// get variables
+			List fqdnList = execution.getVariable("DoDVfMod_contrailNetworkPolicyFqdnList")
+			if (fqdnList == null) {
+				msoLogger.debug("No network policies to delete")
+				return
+			}
+			int fqdnCount = fqdnList.size()
+
+			execution.setVariable("DoDVfMod_networkPolicyFqdnCount", fqdnCount)
+			msoLogger.debug("DoDVfMod_networkPolicyFqdnCount - " + fqdnCount)
+
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String aai_uri = aaiUriUtil.getNetworkPolicyUri(execution)
+
+			if (fqdnCount > 0) {
+				// AII loop call over contrail network policy fqdn list
+				for (i in 0..fqdnCount-1) {
+
+					int counting = i+1
+					String fqdn = fqdnList[i]
+
+					// Query AAI for this network policy FQDN
+
+					String queryNetworkPolicyByFqdnAAIRequest = "${aai_endpoint}${aai_uri}?network-policy-fqdn=" + UriUtils.encode(fqdn, "UTF-8")
+					msoLogger.debug("AAI request endpoint: " + queryNetworkPolicyByFqdnAAIRequest)
+					msoLogger.debug("AAI request endpoint: "  + queryNetworkPolicyByFqdnAAIRequest)
+
+					APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryNetworkPolicyByFqdnAAIRequest)
+					int returnCode = response.getStatusCode()
+					execution.setVariable("DCVFM_aaiQueryNetworkPolicyByFqdnReturnCode", returnCode)
+					msoLogger.debug(" ***** AAI query network policy Response Code, NetworkPolicy #" + counting + " : " + returnCode)
+
+					String aaiResponseAsString = response.getResponseBodyAsString()
+
+					if (isOneOf(returnCode, 200, 201)) {
+						msoLogger.debug("The return code is: "  + returnCode)
+						// This network policy FQDN exists in AAI - need to delete it now
+						msoLogger.debug(aaiResponseAsString)
+						execution.setVariable("DoDVfMod_queryNetworkPolicyByFqdnAAIResponse", aaiResponseAsString)
+						msoLogger.debug("QueryAAINetworkPolicyByFQDN Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsString)
+						// Retrieve the network policy id for this FQDN
+						def networkPolicyId = utils.getNodeText(aaiResponseAsString, "network-policy-id")
+						msoLogger.debug("Deleting network-policy with network-policy-id " + networkPolicyId)
+
+						// Retrieve the resource version for this network policy
+						def resourceVersion = utils.getNodeText(aaiResponseAsString, "resource-version")
+						msoLogger.debug("Deleting network-policy with resource-version " + resourceVersion)
+
+						String delNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + UriUtils.encode(networkPolicyId, "UTF-8") +
+							"?resource-version=" + UriUtils.encode(resourceVersion, "UTF-8")
+						msoLogger.debug("AAI request endpoint: " + delNetworkPolicyAAIRequest)
+						msoLogger.debug("AAI request endpoint: " + delNetworkPolicyAAIRequest)
+
+						msoLogger.debug("invoking DELETE call to AAI")
+						msoLogger.debug("Sending DELETE call to AAI with Endpoint /n" + delNetworkPolicyAAIRequest)
+						APIResponse responseDel = aaiUriUtil.executeAAIDeleteCall(execution, delNetworkPolicyAAIRequest)
+						int returnCodeDel = responseDel.getStatusCode()
+						execution.setVariable("DoDVfMod_aaiDeleteNetworkPolicyReturnCode", returnCodeDel)
+						msoLogger.debug(" ***** AAI delete network policy Response Code, NetworkPolicy #" + counting + " : " + returnCodeDel)
+
+						if (isOneOf(returnCodeDel, 200, 201, 204)) {
+							msoLogger.debug("The return code from deleting network policy is: "  + returnCodeDel)
+							// This network policy was deleted from AAI successfully
+							msoLogger.debug(" DelAAINetworkPolicy Success REST Response, , NetworkPolicy #" + counting + " : ")
+
+						} else {
+								// aai all errors
+								String delErrorMessage = "Unable to delete network-policy to AAI deleteNetworkPoliciesFromAAI - " + returnCodeDel
+							 msoLogger.debug(delErrorMessage)
+							 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, delErrorMessage)
+						}
+					} else if (returnCode == 404) {
+						// This network policy FQDN is not in AAI. No need to delete.
+						msoLogger.debug("The return code is: "  + returnCode)
+						msoLogger.debug("This network policy FQDN is not in AAI: " + fqdn)
+						msoLogger.debug("Network policy FQDN is not in AAI")
+					} else {
+					   if (aaiResponseAsString.contains("RESTFault")) {
+						   WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+						   execution.setVariable("WorkflowException", exceptionObject)
+						   throw new BpmnError("MSOWorkflowException")
+
+						   } else {
+								// aai all errors
+								String dataErrorMessage = "Unexpected Response from deleteNetworkPoliciesFromAAI - " + returnCode
+								msoLogger.debug(dataErrorMessage)
+								exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+						  }
+					}
+
+
+
+				} // end loop
+
+
+			} else {
+				   msoLogger.debug("No contrail network policies to query/create")
+
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DoDeletVfModule flow. deleteNetworkPoliciesFromAAI() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+
+	}
+
+	/**
+	 * Prepare a Request for invoking the UpdateAAIGenericVnf subflow.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepUpdateAAIGenericVnf(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def vnfId = execution.getVariable('vnfId')
+			def oamManagementV4Address = execution.getVariable(Prefix + 'oamManagementV4Address')
+			def oamManagementV6Address = execution.getVariable(Prefix + 'oamManagementV6Address')
+			def ipv4OamAddressElement = ''
+			def managementV6AddressElement = ''
+
+			if (oamManagementV4Address != null) {
+				ipv4OamAddressElement = '<ipv4-oam-address>' + 'DELETE' + '</ipv4-oam-address>'
+			}
+
+			if (oamManagementV6Address != null) {
+				managementV6AddressElement = '<management-v6-address>' + 'DELETE' + '</management-v6-address>'
+			}
+
+
+			String updateAAIGenericVnfRequest = """
+					<UpdateAAIGenericVnfRequest>
+						<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+						${ipv4OamAddressElement}
+						${managementV6AddressElement}
+					</UpdateAAIGenericVnfRequest>
+				"""
+				updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest)
+				execution.setVariable(Prefix + 'updateAAIGenericVnfRequest', updateAAIGenericVnfRequest)
+				msoLogger.debug("updateAAIGenericVnfRequest : " + updateAAIGenericVnfRequest)
+				msoLogger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest)
+
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			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 method = getClass().getSimpleName() + '.queryAAIVfModuleForStatus(' +
+			'execution=' + execution.getId() +
+			')'
+		msoLogger.trace('Entered ' + method)
+		
+		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)
+			msoLogger.debug('AAI URI is: ' + aai_uri)
+
+			String endPoint = UrnPropertiesReader.getVariable("aai.endpoint",execution) + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") +
+					"/vf-modules/vf-module/" + UriUtils.encode(vfModuleId, "UTF-8")
+			msoLogger.debug("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');
+				msoLogger.debug('sending GET to AAI endpoint \'' + endPoint + '\'')
+				APIResponse response = client.httpGet()
+				msoLogger.debug("createVfModule - invoking httpGet() to AAI")
+
+				responseData = response.getResponseBodyAsString()
+				if (responseData != null) {
+					msoLogger.debug("Received generic VNF data: " + responseData)
+
+				}
+
+				msoLogger.debug("deleteVfModule - queryAAIVfModule Response: " + responseData)
+				msoLogger.debug("deleteVfModule - queryAAIVfModule ResponseCode: " + response.getStatusCode())
+
+				execution.setVariable(Prefix + 'queryAAIVfModuleForStatusResponseCode', response.getStatusCode())
+				execution.setVariable(Prefix + 'queryAAIVfModuleForStatusResponse', responseData)
+				msoLogger.debug('Response code:' + response.getStatusCode())
+				msoLogger.debug('Response:' + System.lineSeparator() + responseData)
+				// 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
+					msoLogger.debug('Parsing the VNF data to find orchestration status')
+					if (responseData != null) {
+						def vfModuleText = utils.getNodeXml(responseData, "vf-module")
+						//def xmlVfModule= new XmlSlurper().parseText(vfModuleText)
+						def orchestrationStatus = utils.getNodeText(vfModuleText, "orchestration-status")
+						execution.setVariable(Prefix + "orchestrationStatus", orchestrationStatus)
+						msoLogger.debug("Received orchestration status from A&AI: " + orchestrationStatus)
+						
+					}
+				}
+			} catch (Exception ex) {
+				ex.printStackTrace()
+				msoLogger.debug('Exception occurred while executing AAI GET:' + ex.getMessage())
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage())
+			}
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModuleForStatus(): ' + e.getMessage())
+		}
+	}
+
+
+
+
+
+}
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy
new file mode 100644
index 0000000..1024fc5
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy
@@ -0,0 +1,609 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import static org.apache.commons.lang3.StringUtils.*
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.common.scripts.VfModule
+import org.onap.so.bpmn.common.scripts.VfModuleBase
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.springframework.web.util.UriUtils
+
+public class DoDeleteVfModuleFromVnf extends VfModuleBase {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteVfModuleFromVnf.class);
+	
+	def Prefix="DDVFMV_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	public void initProcessVariables(DelegateExecution execution) {
+		execution.setVariable("prefix",Prefix)
+		execution.setVariable("DDVFMV_contrailNetworkPolicyFqdnList", null)
+	}
+
+	// parse the incoming request
+	public void preProcessRequest(DelegateExecution execution) {
+
+		initProcessVariables(execution)
+
+		try {
+			
+				// Building Block-type request
+
+				// Set mso-request-id to request-id for VNF Adapter interface
+				String requestId = execution.getVariable("msoRequestId")
+				execution.setVariable("mso-request-id", requestId)
+				execution.setVariable("requestId", requestId)
+				msoLogger.debug("msoRequestId: " + requestId)
+				String tenantId = execution.getVariable("tenantId")
+				msoLogger.debug("tenantId: " + tenantId)				
+				String cloudSiteId = execution.getVariable("lcpCloudRegionId")
+				execution.setVariable("cloudSiteId", cloudSiteId)
+				msoLogger.debug("cloudSiteId: " + cloudSiteId)
+				// Source is HARDCODED
+				String source = "VID"
+				execution.setVariable("source", source)
+				// isVidRequest is hardcoded to "true"
+				execution.setVariable("isVidRequest", "true")
+				// SrvInstId is hardcoded to empty
+				execution.setVariable("srvInstId", "")
+				// ServiceId is hardcoded to empty
+				execution.setVariable("serviceId", "")
+				String serviceInstanceId = execution.getVariable("serviceInstanceId")
+				msoLogger.debug("serviceInstanceId: " + serviceInstanceId)
+				String vnfId = execution.getVariable("vnfId")
+				msoLogger.debug("vnfId: " + vnfId)
+				String vfModuleId = execution.getVariable("vfModuleId")
+				msoLogger.debug("vfModuleId: " + vfModuleId)
+				if (serviceInstanceId == null || serviceInstanceId.isEmpty()) {
+					execution.setVariable(Prefix + "serviceInstanceIdToSdnc", vfModuleId)
+				}
+				else {
+					execution.setVariable(Prefix + "serviceInstanceIdToSdnc", serviceInstanceId)
+				}				
+				
+				String sdncVersion = execution.getVariable("sdncVersion")
+				if (sdncVersion == null) {
+					sdncVersion = "1707"
+				}
+				execution.setVariable(Prefix + "sdncVersion", sdncVersion)
+				msoLogger.debug("Incoming Sdnc Version is: " + sdncVersion)				
+				
+				String sdncCallbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+				if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) {
+					def msg = 'Required variable \'mso.workflow.sdncadapter.callback\' is missing'
+					msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, msg, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception");
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)
+				}
+				execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+				msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl)
+				msoLogger.debug("SDNC Callback URL is: " + sdncCallbackUrl)
+
+			
+			
+		}catch(BpmnError b){
+			throw b
+		}catch(Exception e){
+			msoLogger.debug("Exception is: " + e.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error encountered in PreProcess method!")
+		}
+	}
+	
+	public void queryAAIForVfModule(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.queryAAIForVfModule(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def vnfId = execution.getVariable('vnfId')
+
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			def aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution)
+			msoLogger.debug('AAI URI is: ' + aai_uri)
+
+			String endPoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + "?depth=1"
+
+			msoLogger.debug("DoDeleteVfModuleFromVnf: AAI endPoint  : " + endPoint)
+
+			try {
+				msoLogger.debug("DoDeleteVfModuleFromVnf: - invoking httpGet to AAI")
+				APIResponse response = aaiUriUtil.executeAAIGetCall(execution, endPoint)
+
+				def responseData = response.getResponseBodyAsString()
+				execution.setVariable('DDVMFV_getVnfResponseCode', response.getStatusCode())
+				execution.setVariable('DDVMFV_getVnfResponse', responseData)
+
+				msoLogger.debug("DoDeleteVfModuleFromVnf: AAI Response : " + responseData)
+				msoLogger.debug("DoDeleteVfModuleFromVnf: AAI ResponseCode : " + response.getStatusCode())
+
+				msoLogger.debug('Response code:' + response.getStatusCode())
+				msoLogger.debug('Response:' + System.lineSeparator() + responseData)			
+				
+			} catch (Exception ex) {
+				ex.printStackTrace()
+				msoLogger.debug('Exception occurred while executing AAI GET:' + ex.getMessage())
+				execution.setVariable('DDVMFV_getVnfResponseCode', 500)
+				execution.setVariable('DDVFMV_getVnfResponse', 'AAI GET Failed:' + ex.getMessage())
+			}
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIForVfModule(): ' + e.getMessage())
+		}
+	}
+	
+	/**
+	 * Validate the VF Module.  That is, confirm that a VF Module with the input VF Module ID
+	 * exists in the retrieved Generic VNF.  Then, check to make sure that if that VF Module
+	 * is the base VF Module and it's not the only VF Module for this Generic VNF, that we're not
+	 * attempting to delete it.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void validateVfModule(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.validateVfModule(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def genericVnf = execution.getVariable('DDVMFV_getVnfResponse')
+			def vnfId = execution.getVariable('_vnfId')
+			def vfModuleId = execution.getVariable('vfModuleId')			
+			def VfModule vfModule = findVfModule(genericVnf, vfModuleId)
+			if (vfModule == null) {
+				def String msg = 'VF Module \'' + vfModuleId + '\' does not exist in Generic VNF \'' + vnfId + '\''
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, msg)
+			} else {
+				
+				if (isDebugLogEnabled) {
+					msoLogger.debug('VF Module \'' + vfModuleId + '\': isBaseVfModule=' + vfModule.isBaseVfModule() + ', isOnlyVfModule=' + vfModule.isOnlyVfModule())
+				}
+				if (vfModule.isBaseVfModule() && !vfModule.isOnlyVfModule()) {
+					def String msg = 'Cannot delete VF Module \'' + vfModuleId +
+						'\'since it is the base VF Module and it\'s not the only VF Module in Generic VNF \'' + vnfId + '\''
+						msoLogger.debug("Received a BAD Response from VNF Adapter for CREATE_VF_MODULE Call.")
+						exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "VNF Adapter Error")
+				}
+				
+				def heatStackId = vfModule.getElementText('heat-stack-id')
+				execution.setVariable('DDVMFV_heatStackId', heatStackId)
+				msoLogger.debug('VF Module heatStackId retrieved from AAI: ' + heatStackId)
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in validateVfModule(): ' + e.getMessage())
+		}
+	}
+
+
+	public void preProcessSDNCDeactivateRequest(DelegateExecution execution){
+
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessSDNCDeactivateRequest ")
+		
+		def serviceInstanceId = execution.getVariable("serviceInstanceId")
+	
+		try{
+			//Build SDNC Request
+			
+			String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate")
+	
+			deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest)
+			execution.setVariable("DDVMFV_deactivateSDNCRequest", deactivateSDNCRequest)
+			msoLogger.debug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest)
+			
+	
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessSDNCDeactivateRequest. Exception is:\n" + e, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED preProcessSDNCDeactivateRequest ")
+	}
+
+	public void preProcessSDNCUnassignRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessSDNCUnassignRequest Process ")
+		try{			
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+	
+			String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign")
+	
+			execution.setVariable("DDVMFV_unassignSDNCRequest", unassignSDNCRequest)
+			msoLogger.debug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest)
+			
+	
+		}catch(Exception e){
+			msoLogger.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during  preProcessSDNCUnassignRequest Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED  preProcessSDNCUnassignRequest Process ")
+	}
+
+	public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
+	
+			String uuid = execution.getVariable('testReqId') // for junits
+			if(uuid==null){
+				uuid = execution.getVariable("msoRequestId") + "-" +  	System.currentTimeMillis()
+			}
+			def callbackURL = execution.getVariable("sdncCallbackUrl")	
+			def requestId = execution.getVariable("msoRequestId")
+			def serviceId = execution.getVariable("serviceId")
+			def serviceInstanceId = execution.getVariable("serviceInstanceId")
+			def vfModuleId = execution.getVariable("vfModuleId")
+			def source = execution.getVariable("source")
+			def vnfId = execution.getVariable("vnfId")
+				
+			def sdncVersion = execution.getVariable(Prefix + "sdncVersion")
+			
+			String sdncRequest =
+			"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap.so/workflow/sdnc/adapter/schema/v1">
+	   <sdncadapter:RequestHeader>
+				<sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId>
+				<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId>
+				<sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction>
+				<sdncadapter:SvcOperation>vf-module-topology-operation</sdncadapter:SvcOperation>
+				<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl>
+				<sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+		</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+		<request-information>
+			<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+			<request-action>DeleteVfModuleInstance</request-action>
+			<source>${MsoUtils.xmlEscape(source)}</source>
+			<notification-url/>
+			<order-number/>
+			<order-version/>
+		</request-information>
+		<service-information>
+			<service-id/>
+			<subscription-service-type/>			
+			<service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+			<global-customer-id/>
+		</service-information>
+		<vnf-information>
+			<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+			<vnf-type/>			
+		</vnf-information>
+		<vf-module-information>
+			<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+		</vf-module-information>
+		<vf-module-request-input/>		
+	</sdncadapterworkflow:SDNCRequestData>
+	</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+	
+		msoLogger.debug("sdncRequest:  " + sdncRequest)
+		return sdncRequest
+	}
+	
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method){
+
+		execution.setVariable("prefix",Prefix)
+		msoLogger.trace("STARTED ValidateSDNCResponse Process")
+	
+		WorkflowException workflowException = execution.getVariable("WorkflowException")
+		boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+	
+		msoLogger.debug("workflowException: " + workflowException)
+	
+		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+		sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+	
+		msoLogger.debug("SDNCResponse: " + response)
+	
+		String sdncResponse = response
+		if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+			msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + sdncResponse)
+		}else{
+			msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.")
+			throw new BpmnError("MSOWorkflowException")
+		}
+		msoLogger.trace("COMPLETED ValidateSDNCResponse Process")
+	}
+
+
+	// parse the incoming DELETE_VF_MODULE request
+	// and formulate the outgoing VnfAdapterDeleteV1 request
+	public void prepVNFAdapterRequest(DelegateExecution execution) {
+
+		def requestId = UUID.randomUUID().toString()
+		def origRequestId = execution.getVariable('requestId')
+		def srvInstId = execution.getVariable("serviceInstanceId")
+		def aicCloudRegion = execution.getVariable("cloudSiteId")
+		def vnfId = execution.getVariable("vnfId")
+		def vfModuleId = execution.getVariable("vfModuleId")
+		def vfModuleStackId = execution.getVariable('DDVMFV_heatStackId')
+		def tenantId = execution.getVariable("tenantId")
+		def messageId = execution.getVariable('requestId') + '-' +
+			System.currentTimeMillis()
+		def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
+		def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution)
+		if ('true'.equals(useQualifiedHostName)) {
+			notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
+		}
+
+		String request = """
+			<deleteVfModuleRequest>
+			    <cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId>
+			    <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
+			    <vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId>
+			    <vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId>
+			    <vfModuleStackId>${MsoUtils.xmlEscape(vfModuleStackId)}</vfModuleStackId>
+			    <skipAAI>true</skipAAI>
+			    <msoRequest>
+			        <requestId>${MsoUtils.xmlEscape(origRequestId)}</requestId>
+			        <serviceInstanceId>${MsoUtils.xmlEscape(srvInstId)}</serviceInstanceId>
+			    </msoRequest>
+			    <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
+			    <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
+			</deleteVfModuleRequest>
+			""" as String
+
+		msoLogger.debug("vnfAdapterRestV1Request: " + request)
+		msoLogger.debug("deleteVfModuleRequest: " + request)
+		execution.setVariable("vnfAdapterRestV1Request", request)
+	}
+
+	
+	// generates a WorkflowException if
+	//		-
+	public void handleDoDeleteVfModuleFailure(DelegateExecution execution) {
+		msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "AAI error occurred deleting the Generic Vnf: " + execution.getVariable("DDVFMV_deleteGenericVnfResponse"), "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception");
+		String processKey = getProcessKey(execution);
+		WorkflowException exception = new WorkflowException(processKey, 5000,
+			execution.getVariable("DDVFMV_deleteGenericVnfResponse"))
+		execution.setVariable("WorkflowException", exception)
+	}
+	
+	public void postProcessVNFAdapterRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.postProcessVNFAdapterRequest(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix",Prefix)
+		try{
+		msoLogger.trace("STARTED postProcessVNFAdapterRequest Process")
+		
+		String vnfResponse = execution.getVariable("DDVMFV_doDeleteVfModuleResponse")
+		msoLogger.debug("VNF Adapter Response is: " + vnfResponse)
+		msoLogger.debug("deleteVnfAResponse is: \n"  + vnfResponse)
+
+		if(vnfResponse != null){
+
+			if(vnfResponse.contains("deleteVfModuleResponse")){
+				msoLogger.debug("Received a Good Response from VNF Adapter for DELETE_VF_MODULE Call.")
+				execution.setVariable("DDVFMV_vnfVfModuleDeleteCompleted", true)
+
+				// Parse vnfOutputs for contrail network polcy FQDNs
+				def vfModuleOutputsXml = utils.getNodeXml(vnfResponse, "vfModuleOutputs")
+				if(!isBlank(vfModuleOutputsXml)) {
+					vfModuleOutputsXml = utils.removeXmlNamespaces(vfModuleOutputsXml)
+					List contrailNetworkPolicyFqdnList = []
+					for(Node node: utils.getMultNodeObjects(vfModuleOutputsXml, "entry")) {
+						String key = utils.getChildNodeText(node, "key")
+						if(key == null) {
+							
+						} else if (key.endsWith("contrail_network_policy_fqdn")) {
+							String contrailNetworkPolicyFqdn = utils.getChildNodeText(node, "value")
+							msoLogger.debug("Obtained contrailNetworkPolicyFqdn: " + contrailNetworkPolicyFqdn)
+							contrailNetworkPolicyFqdnList.add(contrailNetworkPolicyFqdn)
+						}
+						else if (key.equals("oam_management_v4_address")) {
+							String oamManagementV4Address = utils.getChildNodeText(node, "value")
+							msoLogger.debug("Obtained oamManagementV4Address: " + oamManagementV4Address)
+							execution.setVariable(Prefix + "oamManagementV4Address", oamManagementV4Address)
+						}
+						else if (key.equals("oam_management_v6_address")) {
+							String oamManagementV6Address = utils.getChildNodeText(node, "value")
+							msoLogger.debug("Obtained oamManagementV6Address: " + oamManagementV6Address)
+							execution.setVariable(Prefix + "oamManagementV6Address", oamManagementV6Address)
+						}
+					}
+					if (!contrailNetworkPolicyFqdnList.isEmpty()) {
+						msoLogger.debug("Setting the fqdn list")
+						execution.setVariable("DDVFMV_contrailNetworkPolicyFqdnList", contrailNetworkPolicyFqdnList)
+					}
+				}
+			}else{
+				msoLogger.debug("Received a BAD Response from VNF Adapter for DELETE_VF_MODULE Call.")
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "VNF Adapter Error")
+			}
+		}else{
+			msoLogger.debug("Response from VNF Adapter is Null for DELETE_VF_MODULE Call.")
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Empty response from VNF Adapter")
+		}
+
+		}catch(BpmnError b){
+			throw b
+		}catch(Exception e){
+			msoLogger.debug("Internal Error Occured in PostProcess Method")
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Internal Error Occured in PostProcess Method")
+		}
+		msoLogger.trace("COMPLETED postProcessVnfAdapterResponse Process")
+	}
+
+	public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' +
+		'execution=' + execution.getId() +
+		')'
+
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED deleteNetworkPoliciesFromAAI ")
+
+		try {
+			// get variables
+			List fqdnList = execution.getVariable("DDVFMV_contrailNetworkPolicyFqdnList")
+			if (fqdnList == null) {
+				msoLogger.debug("No network policies to delete")
+				return
+			}
+			int fqdnCount = fqdnList.size()
+
+			execution.setVariable("DDVFMV_networkPolicyFqdnCount", fqdnCount)
+			msoLogger.debug("DDVFMV_networkPolicyFqdnCount - " + fqdnCount)
+
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String aai_uri = aaiUriUtil.getNetworkPolicyUri(execution)
+
+			if (fqdnCount > 0) {
+				// AII loop call over contrail network policy fqdn list
+				for (i in 0..fqdnCount-1) {
+
+					int counting = i+1
+					String fqdn = fqdnList[i]
+
+					// Query AAI for this network policy FQDN
+
+					String queryNetworkPolicyByFqdnAAIRequest = "${aai_endpoint}${aai_uri}?network-policy-fqdn=" + UriUtils.encode(fqdn, "UTF-8")
+					msoLogger.debug("AAI request endpoint: " + queryNetworkPolicyByFqdnAAIRequest)
+					
+
+					APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryNetworkPolicyByFqdnAAIRequest)
+					int returnCode = response.getStatusCode()
+					execution.setVariable("DCVFM_aaiQueryNetworkPolicyByFqdnReturnCode", returnCode)
+					msoLogger.debug(" ***** AAI query network policy Response Code, NetworkPolicy #" + counting + " : " + returnCode)
+
+					String aaiResponseAsString = response.getResponseBodyAsString()
+
+					if (isOneOf(returnCode, 200, 201)) {
+						msoLogger.debug("The return code is: "  + returnCode)
+						// This network policy FQDN exists in AAI - need to delete it now
+						msoLogger.debug(aaiResponseAsString)
+						execution.setVariable("DDVFMV_queryNetworkPolicyByFqdnAAIResponse", aaiResponseAsString)
+						msoLogger.debug("QueryAAINetworkPolicyByFQDN Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsString)
+						// Retrieve the network policy id for this FQDN
+						def networkPolicyId = utils.getNodeText(aaiResponseAsString, "network-policy-id")
+						msoLogger.debug("Deleting network-policy with network-policy-id " + networkPolicyId)
+
+						// Retrieve the resource version for this network policy
+						def resourceVersion = utils.getNodeText(aaiResponseAsString, "resource-version")
+						msoLogger.debug("Deleting network-policy with resource-version " + resourceVersion)
+
+						String delNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + UriUtils.encode(networkPolicyId, "UTF-8") +
+							"?resource-version=" + UriUtils.encode(resourceVersion, "UTF-8")
+						msoLogger.debug("AAI request endpoint: " + delNetworkPolicyAAIRequest)
+
+						msoLogger.debug("invoking DELETE call to AAI")
+						msoLogger.debug("Sending DELETE call to AAI with Endpoint /n" + delNetworkPolicyAAIRequest)
+						APIResponse responseDel = aaiUriUtil.executeAAIDeleteCall(execution, delNetworkPolicyAAIRequest)
+						int returnCodeDel = responseDel.getStatusCode()
+						execution.setVariable("DDVFMV_aaiDeleteNetworkPolicyReturnCode", returnCodeDel)
+						msoLogger.debug(" ***** AAI delete network policy Response Code, NetworkPolicy #" + counting + " : " + returnCodeDel)
+
+						if (isOneOf(returnCodeDel, 200, 201, 204)) {
+							msoLogger.debug("The return code from deleting network policy is: "  + returnCodeDel)
+							// This network policy was deleted from AAI successfully
+							msoLogger.debug(" DelAAINetworkPolicy Success REST Response, , NetworkPolicy #" + counting + " : ")
+
+						} else {
+								// aai all errors
+								String delErrorMessage = "Unable to delete network-policy to AAI deleteNetworkPoliciesFromAAI - " + returnCodeDel
+							 msoLogger.debug(delErrorMessage)
+							 exceptionUtil.buildAndThrowWorkflowException(execution, 2500, delErrorMessage)
+						}
+					} else if (returnCode == 404) {
+						// This network policy FQDN is not in AAI. No need to delete.
+						msoLogger.debug("The return code is: "  + returnCode)
+						msoLogger.debug("This network policy FQDN is not in AAI: " + fqdn)
+						msoLogger.debug("Network policy FQDN is not in AAI")
+					} else {
+					   if (aaiResponseAsString.contains("RESTFault")) {
+						   WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+						   execution.setVariable("WorkflowException", exceptionObject)
+						   throw new BpmnError("MSOWorkflowException")
+
+						   } else {
+								// aai all errors
+								String dataErrorMessage = "Unexpected Response from deleteNetworkPoliciesFromAAI - " + returnCode
+								msoLogger.debug(dataErrorMessage)
+								exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+						  }
+					}
+
+
+
+				} // end loop
+
+
+			} else {
+				   msoLogger.debug("No contrail network policies to query/create")
+
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DoDeletVfModule flow. deleteNetworkPoliciesFromAAI() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+
+	}	
+	
+	// and formulate the outgoing DeleteAAIVfModuleRequest request
+	public void prepDeleteAAIVfModule(DelegateExecution execution) {
+
+
+		def vnfId = execution.getVariable("vnfId")
+		def vfModuleId = execution.getVariable("vfModuleId")
+		// formulate the request for UpdateAAIVfModule
+		String request = """<DeleteAAIVfModuleRequest>
+								<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+								<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+							</DeleteAAIVfModuleRequest>""" as String
+		msoLogger.debug("DeleteAAIVfModuleRequest :" + request)
+		
+		execution.setVariable("DeleteAAIVfModuleRequest", request)
+	}
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy
new file mode 100644
index 0000000..b1cef47
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy
@@ -0,0 +1,355 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.UrnPropertiesReader;
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.springframework.web.util.UriUtils
+
+class DoDeleteVfModuleVolumeV2 extends AbstractServiceTaskProcessor{
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteVfModuleVolumeV2.class);
+	
+	String prefix="DDVMV_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	XmlParser xmlParser = new XmlParser()
+	JsonUtils jsonUtil = new JsonUtils()
+	
+	@Override
+	public void preProcessRequest(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		preProcessRequest(execution, isDebugEnabled)	
+	}
+	
+	/**
+	 * Set default variable values
+	 * @param execution
+	 * @param isDebugLogEnabled
+	 */
+	public void preProcessRequest (DelegateExecution execution, isDebugEnabled) {
+		
+		//Input:
+		//  msoRequestId
+		//  isDebugLogEnabled
+		//  failIfNotFound (Optional)
+		//  serviceInstanceId (Optional)
+		//  vnfId (Optional)
+		//  volumeGroupId
+		//  vfModuleModelInfo (Optional)
+		//  lcpCloudRegionId (Optional)			@TODO: this is actually required
+		//  tenantId (Optional)					@TODO: this is actually required
+		//  cloudConfiguration					@TODO: temporary solution? this contains lcpCloudregion and tenantId
+		//
+		//Output:
+		//  workflowException					@TODO: actual variable name is WorkflowException
+		//  rolledBack
+		//  wasDeleted
+		
+		execution.setVariable('prefix', prefix)
+		execution.setVariable('wasDeleted', 'false')
+		
+		def tenantId = execution.getVariable("tenantId")
+		def cloudSiteId = execution.getVariable("lcpCloudRegionId")
+		
+		// if tenantId or lcpCloudregionId is not passed, get it from cloudRegionConfiguration variable
+		if(!tenantId || !cloudSiteId) {
+			def cloudConfiguration = execution.getVariable("cloudConfiguration")
+			msoLogger.debug("Using cloudConfiguration variable to get tenantId and lcpCloudRegionId - " + cloudConfiguration)
+			tenantId = jsonUtil.getJsonValue(cloudConfiguration, "tenantId")
+			execution.setVariable("tenantId", tenantId)
+			cloudSiteId = jsonUtil.getJsonValue(cloudConfiguration, "lcpCloudRegionId")
+			execution.setVariable("lcpCloudRegionId", cloudSiteId)
+		}
+	}
+	
+	
+	/**
+	 * Set out 'wasDeleted' variable to 'true'
+	 * @param execution
+	 * @param isDebugLogEnabled
+	 */
+	public void postProcess(DelegateExecution execution, isDebugLogEnabled) {
+		execution.setVariable('wasDeleted', 'true')
+	}
+	
+	
+	/**
+	 * Query and set cloud region to use for AAI calls
+	 * Output variables: prefix+'aicCloudRegion', prefix+'cloudRegion'
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void callRESTQueryAAICloudRegion(DelegateExecution execution, isDebugEnabled) {
+		
+		String cloudRegion = execution.getVariable('lcpCloudRegionId')					
+		String aai_endpoint =  UrnPropertiesReader.getVariable("aai.endpoint",execution)
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aai_uri = aaiUtil.getCloudInfrastructureCloudRegionUri(execution)
+		String queryCloudRegionRequest = "${aai_endpoint}${aai_uri}/" + cloudRegion
+		msoLogger.debug(queryCloudRegionRequest)
+		msoLogger.debug("AAI query cloud region URI - " + queryCloudRegionRequest)
+
+		cloudRegion = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "PO", cloudRegion)
+
+		if ((cloudRegion != "ERROR")) {
+			if(execution.getVariable(prefix+"queryCloudRegionReturnCode") == "404") {
+				execution.setVariable(prefix+"aicCloudRegion", "AAIAIC25")
+			}
+			else{
+				execution.setVariable(prefix+"aicCloudRegion", cloudRegion)
+			}
+		} 
+		else {
+			msoLogger.debug("AAI Query Cloud Region Unsuccessful.")
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "AAI Query Cloud Region Unsuccessful. Return Code: " + execution.getVariable(prefix+"queryCloudRegionReturnCode"))
+		}
+	}
+	
+	
+	/**
+	 * Query AAI Volume Group
+	 * Output variables: prefix+'queryAAIVolGrpResponse'; prefix+'volumeGroupHeatStackId'
+	 * @param execution
+	 * @param isDebugLogEnabled
+	 */
+	public void callRESTQueryAAIForVolumeGroup(DelegateExecution execution, isDebugLogEnabled) {
+		
+		def tenantId = execution.getVariable('tenantId')								
+		def volumeGroupId = execution.getVariable('volumeGroupId')						
+		if(volumeGroupId == null) {
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, 'volumeGroupId is not provided in the request')
+			throw new Exception('volume-group-id is not provided in the request')
+		}
+		String cloudRegion = execution.getVariable(prefix+'aicCloudRegion')
+
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+		String queryAAIVolumeGroupRequest = aaiEndpoint + '/' + URLEncoder.encode(cloudRegion, "UTF-8") + "/volume-groups/volume-group/" + UriUtils.encode(volumeGroupId, "UTF-8")
+
+		msoLogger.debug('Query AAI volume group by ID: ' + queryAAIVolumeGroupRequest)
+		msoLogger.debug('Query AAI volume group by ID: ' + queryAAIVolumeGroupRequest)
+
+		APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIVolumeGroupRequest)
+
+		String returnCode = response.getStatusCode()
+		String aaiResponseAsString = response.getResponseBodyAsString()
+
+		msoLogger.debug("AAI query volume group by id return code: " + returnCode)
+		msoLogger.debug("AAI query volume group by id response: " + aaiResponseAsString)
+		msoLogger.debug('AAI query volume group by id return code: ' + returnCode)
+		msoLogger.debug('AAI query volume group by id response: ' + aaiResponseAsString)
+
+		execution.setVariable(prefix+"queryAAIVolGrpResponse", aaiResponseAsString)
+
+		if (returnCode=='200' || returnCode == '204') {
+
+			def heatStackId = getNodeTextForce(aaiResponseAsString, 'heat-stack-id')
+			execution.setVariable(prefix+'volumeGroupHeatStackId', heatStackId)
+
+			msoLogger.debug('Heat stack id from AAI response: ' + heatStackId)
+			
+			if(hasVfModuleRelationship(aaiResponseAsString)){
+				msoLogger.debug('Volume Group ' + volumeGroupId + ' currently in use')
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume Group ${volumeGroupId} currently in use - found vf-module relationship.")
+			}
+
+			def volumeGroupTenantId = getTenantIdFromVolumeGroup(aaiResponseAsString)
+			msoLogger.debug('Tenant ID from AAI response: ' + volumeGroupTenantId)
+			
+			if (volumeGroupTenantId == null) {
+				msoLogger.debug("Could not find Tenant Id element in Volume Group with Volume Group Id ${volumeGroupId}")
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Could not find Tenant Id element in Volume Group with Volume Group Id ${volumeGroupId}")
+			}
+			
+			if (volumeGroupTenantId != tenantId) {
+				def String errorMessage = 'TenantId ' + tenantId + ' in incoming request does not match Tenant Id ' + volumeGroupTenantId +	' retrieved from AAI for Volume Group Id ' + volumeGroupId
+				msoLogger.debug("Error in DeleteVfModuleVolume: " + errorMessage)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 5000, errorMessage)
+			}
+			msoLogger.debug('Received Tenant Id ' + volumeGroupTenantId + ' from AAI for Volume Group with Volume Group Id ' + volumeGroupId )
+		}
+		else {
+			if (returnCode=='404') {
+				msoLogger.debug("Volume Group ${volumeGroupId} not found in AAI")
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume Group ${volumeGroupId} not found in AAI. Response code: 404")
+			}
+			else {
+				WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}
+	}
+	
+	/**
+	 * Format VNF Adapter subflow request XML
+	 * Variables: prefix+'deleteVnfARequest'
+	 * @param execution
+	 * @param 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)	
+		def volumeGroupHeatStackId = execution.getVariable(prefix+'volumeGroupHeatStackId')		// from AAI query volume group
+		def requestId = execution.getVariable('msoRequestId')									// input parameter (required)
+		def serviceId = execution.getVariable('serviceInstanceId')								// imput parameter (optional)
+
+		def messageId = UUID.randomUUID().toString()
+		def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
+		def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution)
+		if ('true'.equals(useQualifiedHostName)) {
+				notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
+		}
+
+		String vnfAdapterRestRequest = """
+			<deleteVolumeGroupRequest>
+				<cloudSiteId>${MsoUtils.xmlEscape(cloudRegion)}</cloudSiteId>
+				<tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
+				<volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId>
+				<volumeGroupStackId>${MsoUtils.xmlEscape(volumeGroupHeatStackId)}</volumeGroupStackId>
+				<skipAAI>true</skipAAI>
+			    <msoRequest>
+			        <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+			        <serviceInstanceId>${MsoUtils.xmlEscape(serviceId)}</serviceInstanceId>
+			    </msoRequest>
+			    <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
+			    <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
+			</deleteVolumeGroupRequest>
+		"""
+		vnfAdapterRestRequest = utils.formatXml(vnfAdapterRestRequest)
+		execution.setVariable(prefix+'deleteVnfARequest', vnfAdapterRestRequest)
+		msoLogger.debug('Request for VNFAdapter Rest:\n' + vnfAdapterRestRequest)
+	}
+	
+	
+	/**
+	 * Delete volume group in AAI
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void callRESTDeleteAAIVolumeGroup(DelegateExecution execution, isDebugEnabled) {
+		
+		// get variables
+		String queryAAIVolGrpIdResponse = execution.getVariable(prefix+"queryAAIVolGrpResponse")
+		String groupId = utils.getNodeText(queryAAIVolGrpIdResponse, "volume-group-id")
+		String resourceVersion = utils.getNodeText(queryAAIVolGrpIdResponse, "resource-version")
+		
+		String messageId = UUID.randomUUID().toString()
+		String cloudRegion = execution.getVariable(prefix+'aicCloudRegion')
+
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+		String deleteAAIVolumeGrpIdRequest = aaiEndpoint + '/' + URLEncoder.encode(cloudRegion, "UTF-8")  + "/volume-groups/volume-group/" +  UriUtils.encode(groupId, "UTF-8")
+
+		if(resourceVersion !=null){
+			deleteAAIVolumeGrpIdRequest = deleteAAIVolumeGrpIdRequest +'?resource-version=' + UriUtils.encode(resourceVersion, 'UTF-8')
+		}
+
+		msoLogger.debug('Delete AAI volume group : ' + deleteAAIVolumeGrpIdRequest)
+		msoLogger.debug("Delete AAI volume group : " + deleteAAIVolumeGrpIdRequest)
+
+		APIResponse response = aaiUtil.executeAAIDeleteCall(execution, deleteAAIVolumeGrpIdRequest)
+
+		String returnCode = response.getStatusCode()
+		String aaiResponseAsString = response.getResponseBodyAsString()
+
+		msoLogger.debug("AAI delete volume group return code: " + returnCode)
+		msoLogger.debug("AAI delete volume group response: " + aaiResponseAsString)
+		msoLogger.debug("AAI delete volume group return code: " + returnCode)
+		msoLogger.debug("AAI delete volume group response: " + aaiResponseAsString)
+
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+		if (returnCode=='200' || (returnCode == '204')) {
+			msoLogger.debug("Volume group $groupId deleted.")
+		} else {
+			if (returnCode=='404') {
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume group $groupId not found for delete in AAI Response code: 404")
+			} else {
+				WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}
+	}
+	
+	
+	/**
+	 * Check if volume group has a relationship to vf-module
+	 * @param volumeGroupXml
+	 * @return
+	 */
+	private boolean hasVfModuleRelationship(String volumeGroupXml) {
+		def Node volumeGroupNode = xmlParser.parseText(volumeGroupXml)
+		def Node relationshipList = utils.getChildNode(volumeGroupNode, 'relationship-list')
+		if (relationshipList != null) {
+			def NodeList relationships = utils.getIdenticalChildren(relationshipList, 'relationship')
+			for (Node relationship in relationships) {
+				def Node relatedTo = utils.getChildNode(relationship, 'related-to')
+				if ((relatedTo != null) && (relatedTo.text().equals('vf-module'))) {
+					def Node relatedLink = utils.getChildNode(relationship, 'related-link')
+					if (relatedLink !=null && relatedLink.text() != null){
+						return true
+					}
+				}
+			}
+		}
+		return false
+	}
+
+	
+	/**
+	 * Extract the Tenant Id from the Volume Group information returned by AAI.
+	 * @param volumeGroupXml Volume Group XML returned by AAI.
+	 * @return the Tenant Id extracted from the Volume Group information. 'null' is returned if
+	 * the Tenant Id is missing or could not otherwise be extracted.
+	 */
+	private String getTenantIdFromVolumeGroup(String volumeGroupXml) {
+		def Node volumeGroupNode = xmlParser.parseText(volumeGroupXml)
+		def Node relationshipList = utils.getChildNode(volumeGroupNode, 'relationship-list')
+		if (relationshipList != null) {
+			def NodeList relationships = utils.getIdenticalChildren(relationshipList, 'relationship')
+			for (Node relationship in relationships) {
+				def Node relatedTo = utils.getChildNode(relationship, 'related-to')
+				if ((relatedTo != null) && (relatedTo.text().equals('tenant'))) {
+					def NodeList relationshipDataList = utils.getIdenticalChildren(relationship, 'relationship-data')
+					for (Node relationshipData in relationshipDataList) {
+						def Node relationshipKey = utils.getChildNode(relationshipData, 'relationship-key')
+						if ((relationshipKey != null) && (relationshipKey.text().equals('tenant.tenant-id'))) {
+							def Node relationshipValue = utils.getChildNode(relationshipData, 'relationship-value')
+							if (relationshipValue != null) {
+								return relationshipValue.text()
+							}
+						}
+					}
+				}
+			}
+		}
+		return null
+	}
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnf.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnf.groovy
new file mode 100644
index 0000000..699e9bf
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnf.groovy
@@ -0,0 +1,161 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+
+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.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.client.aai.AAIResourcesClient
+import org.onap.so.client.aai.AAIObjectType
+import org.onap.so.client.aai.entities.uri.AAIResourceUri
+import org.onap.so.client.aai.entities.uri.AAIUriFactory
+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 org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+/**
+ * This class supports the DoDeleteVnf subFlow
+ * with the Deletion of a generic vnf for
+ * infrastructure.
+ *
+ */
+class DoDeleteVnf extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteVnf.class);
+
+	String Prefix="DoDVNF_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils(this)
+
+	/**
+	 * This method gets and validates the incoming
+	 * request.
+	 *
+	 * @param - execution
+	 *
+	 */
+	public void preProcessRequest(DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+		msoLogger.trace("STARTED DoDeleteVnf PreProcessRequest Process")
+
+		execution.setVariable("DoDVNF_SuccessIndicator", false)
+		execution.setVariable("DoDVNF_vnfInUse", false)
+
+		try{
+			// Get Variables
+
+			String vnfId = execution.getVariable("vnfId")
+			execution.setVariable("DoDVNF_vnfId", vnfId)
+			msoLogger.debug("Incoming Vnf(Instance) Id is: " + vnfId)
+
+			// Setting for sub flow calls
+			execution.setVariable("DoDVNF_type", "generic-vnf")
+		}catch(BpmnError b){
+			msoLogger.debug("Rethrowing MSOWorkflowException")
+			throw b
+		}catch(Exception e){
+			msoLogger.debug(" Error Occured in DoDeleteVnf PreProcessRequest method!" + e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoDeleteVnf PreProcessRequest")
+
+		}
+		msoLogger.trace("COMPLETED DoDeleteVnf PreProcessRequest Process ")
+	}
+
+
+	public void processGetVnfResponse(DelegateExecution execution){
+
+		execution.setVariable("prefix",Prefix)
+		msoLogger.trace("STARTED DoDeleteVnf processGetVnfResponse Process ")
+		try {
+			String vnf = execution.getVariable("DoDVNF_genericVnf")
+			String resourceVersion = utils.getNodeText(vnf, "resource-version")
+			execution.setVariable("DoDVNF_resourceVersion", resourceVersion)
+
+			if(utils.nodeExists(vnf, "relationship")){
+				InputSource source = new InputSource(new StringReader(vnf));
+				DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
+				DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
+				Document vnfXml = docBuilder.parse(source)
+
+				NodeList nodeList = vnfXml.getElementsByTagName("relationship")
+				for (int x = 0; x < nodeList.getLength(); x++) {
+					Node node = nodeList.item(x)
+					if (node.getNodeType() == Node.ELEMENT_NODE) {
+						Element eElement = (Element) node
+						def e = eElement.getElementsByTagName("related-to").item(0).getTextContent()
+						if(e.equals("volume-group") || e.equals("l3-network")){
+							msoLogger.debug("Generic Vnf still has relationship to OpenStack.")
+							execution.setVariable("DoDVNF_vnfInUse", true)
+						}else{
+							msoLogger.debug("Relationship NOT related to OpenStack")
+						}
+					}
+				}
+			}
+
+			if(utils.nodeExists(vnf, "vf-module")){
+				execution.setVariable("DoDVNF_vnfInUse", true)
+				msoLogger.debug("Generic Vnf still has vf-modules.")
+			}
+
+
+		} catch (Exception ex) {
+			msoLogger.debug("Error Occured in DoDeleteVnf processGetVnfResponse Process " + ex.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoDeleteVnf processGetVnfResponse Process")
+
+		}
+		msoLogger.trace("COMPLETED DoDeleteVnf processGetVnfResponse Process ")
+	}
+
+	/**
+	 * Deletes the generic vnf from aai
+	 */
+	public void deleteVnf(DelegateExecution execution) {
+		msoLogger.trace("STARTED deleteVnf")
+		try {
+			String vnfId = execution.getVariable("DoDVNF_vnfId")
+
+			AAIResourcesClient resourceClient = new AAIResourcesClient();
+			AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
+			resourceClient.delete(uri)
+
+			msoLogger.trace("COMPLETED deleteVnf")
+		} catch (Exception ex) {
+			msoLogger.debug("Error Occured in DoDeleteVnf deleteVnf Process " + ex.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoDeleteVnf deleteVnf Process")
+		}
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy
new file mode 100644
index 0000000..d448dd3
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy
@@ -0,0 +1,538 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import static org.apache.commons.lang3.StringUtils.*;
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.domain.ModelInfo
+import org.onap.so.bpmn.core.domain.ModuleResource
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.bpmn.core.domain.VnfResource
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.springframework.web.util.UriUtils;
+
+/**
+ * This class supports the macro VID Flow
+ * with the deletion of a generic vnf and related VF modules.
+ */
+class DoDeleteVnfAndModules extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteVnfAndModules.class);
+
+	String Prefix="DDVAM_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils(this)
+	SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+
+	/**
+	 * This method gets and validates the incoming
+	 * request.
+	 *
+	 * @param - execution
+	 *	
+	 */
+	public void preProcessRequest(DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+		msoLogger.trace("STARTED DoDeleteVnfAndModules PreProcessRequest Process")
+
+		try{
+			// Get Variables				
+			
+			String cloudConfiguration = execution.getVariable("cloudConfiguration")		
+			msoLogger.debug("Cloud Configuration: " + cloudConfiguration)	
+			
+			String requestId = execution.getVariable("msoRequestId")
+			execution.setVariable("requestId", requestId)			
+			execution.setVariable("mso-request-id", requestId)
+			msoLogger.debug("Incoming Request Id is: " + requestId)
+
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")			
+			msoLogger.debug("Incoming Service Instance Id is: " + serviceInstanceId)
+
+			String vnfId = execution.getVariable("vnfId")			
+			msoLogger.debug("Incoming Vnf Id is: " + vnfId)			
+			
+			String source = "VID"
+			execution.setVariable("DDVAM_source", source)
+			msoLogger.debug("Incoming Source is: " + source)
+			
+			execution.setVariable("DDVAM_isVidRequest", "true")
+			
+			String sdncVersion = execution.getVariable("sdncVersion")
+			if (sdncVersion == null) {
+				sdncVersion = "1702"
+			}
+			execution.setVariable("DDVAM_sdncVersion", sdncVersion)
+			msoLogger.debug("Incoming Sdnc Version is: " + sdncVersion)
+			
+			// Set aLaCarte flag to false
+			execution.setVariable("aLaCarte", false)
+			
+			String sdncCallbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback", execution)
+			if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) {
+				def msg = 'Required variable \'mso.workflow.sdncadapter.callback\' is missing'
+				msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, msg, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception");
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl)
+			msoLogger.debug("SDNC Callback URL is: " + sdncCallbackUrl)	
+			
+			
+			if (!sdncVersion.equals("1702")) {
+				//String vnfModelInfo = execution.getVariable("vnfModelInfo")
+				//String serviceModelInfo = execution.getVariable("serviceModelInfo")
+				
+				String serviceId = execution.getVariable("productFamilyId")
+				execution.setVariable("DDVAM_serviceId", serviceId)
+				msoLogger.debug("Incoming Service Id is: " + serviceId)
+				
+					
+				//String modelInvariantId = jsonUtil.getJsonValue(vnfModelInfo, "modelInvariantId")
+				//execution.setVariable("DDVAM_modelInvariantId", modelInvariantId)
+				//msoLogger.debug("Incoming Invariant Id is: " + modelInvariantId)
+				
+				//String modelVersionId = jsonUtil.getJsonValue(vnfModelInfo, "modelVersionId")
+				//if (modelVersionId == null) {
+				//	modelVersionId = ""
+				//}
+				//execution.setVariable("DDVAM_modelVersionId", modelVersionId)
+				//msoLogger.debug("Incoming Version Id is: " + modelVersionId)
+	
+				//String modelVersion = jsonUtil.getJsonValue(vnfModelInfo, "modelVersion")
+				//execution.setVariable("DDVAM_modelVersion", modelVersion)
+				//msoLogger.debug("Incoming Model Version is: " + modelVersion)
+				
+				//String modelName = jsonUtil.getJsonValue(vnfModelInfo, "modelName")
+				//execution.setVariable("DDVAM_modelName", modelName)
+				//msoLogger.debug("Incoming Model Name is: " + modelName)
+				
+				//String modelCustomizationId = jsonUtil.getJsonValue(vnfModelInfo, "modelCustomizationId")
+				//if (modelCustomizationId == null) {
+				//	modelCustomizationId = ""
+				//}
+				//execution.setVariable("DDVAM_modelCustomizationId", modelCustomizationId)
+				//msoLogger.debug("Incoming Model Customization Id is: " + modelCustomizationId)
+					
+				String cloudSiteId = execution.getVariable("lcpCloudRegionId")
+				execution.setVariable("DDVAM_cloudSiteId", cloudSiteId)
+				msoLogger.debug("Incoming Cloud Site Id is: " + cloudSiteId)
+					
+				String tenantId = execution.getVariable("tenantId")
+				execution.setVariable("DDVAM_tenantId", tenantId)
+				msoLogger.debug("Incoming Tenant Id is: " + tenantId)
+				
+				String globalSubscriberId = execution.getVariable("globalSubscriberId")
+				if (globalSubscriberId == null) {
+					globalSubscriberId = ""
+				}
+				execution.setVariable("DDVAM_globalSubscriberId", globalSubscriberId)
+				msoLogger.debug("Incoming Global Subscriber Id is: " + globalSubscriberId)		
+				
+			}
+			execution.setVariable("DDVAM_vfModulesFromDecomposition", null)
+			// Retrieve serviceDecomposition if present
+			ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+			if (serviceDecomposition != null) {
+				msoLogger.debug("Getting Catalog DB data from ServiceDecomposition object: " + serviceDecomposition.toJsonString())
+				List<VnfResource> vnfs = serviceDecomposition.getVnfResources()
+				msoLogger.debug("Read vnfs")
+				if (vnfs == null) {
+					msoLogger.debug("Error - vnfs are empty in serviceDecomposition object")
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in preProcessRequest - vnfs are empty")
+				}
+				VnfResource vnf = vnfs[0]
+				
+				if (vnf == null) {
+					msoLogger.debug("Error - vnf is empty in serviceDecomposition object")
+					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)
+			
+			
+		}catch(BpmnError b){
+			msoLogger.debug("Rethrowing MSOWorkflowException")
+			throw b
+		}catch(Exception e){
+			msoLogger.debug(" Error Occured in DoCreateVnfAndModules PreProcessRequest method!" + e.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoCreateVnf PreProcessRequest")
+
+		}
+		msoLogger.trace("COMPLETED DoDeleteVnfAndModules PreProcessRequest Process ")
+	}	
+
+	
+	
+	public void preProcessAddOnModule(DelegateExecution execution){
+
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessAddOnModule ")
+		
+		try {			
+			JSONArray addOnModules = (JSONArray) execution.getVariable("addOnModules")
+			int addOnIndex = (int) execution.getVariable("addOnModulesDeployed")
+			
+			JSONObject addOnModule = addOnModules[addOnIndex]
+			
+			def newVfModuleId = UUID.randomUUID().toString()
+			execution.setVariable("addOnVfModuleId", newVfModuleId)
+			
+			execution.setVariable("instancesOfThisModelDeployed", 0)
+			
+			JSONObject addOnVfModuleModelInfoObject = jsonUtil.getJsonValueForKey(addOnModule, "modelInfo")
+			String addOnVfModuleModelInfo = addOnVfModuleModelInfoObject.toString()
+			execution.setVariable("addOnVfModuleModelInfo", addOnVfModuleModelInfo)
+			String addOnVfModuleLabel = jsonUtil.getJsonValueForKey(addOnModule, "vfModuleLabel")
+			execution.setVariable("addOnVfModuleLabel", addOnVfModuleLabel)
+			String addOnPersonaModelId = jsonUtil.getJsonValueForKey(addOnVfModuleModelInfoObject, "modelInvariantUuid")
+			execution.setVariable("addOnPersonaModelId", addOnPersonaModelId)
+			String addOnInitialCount = jsonUtil.getJsonValueForKey(addOnModule, "initialCount")
+			execution.setVariable("initialCount", addOnInitialCount)
+					
+		
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessAddOnModule." + e, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessAddOnModule Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED preProcessSDNCAssignRequest ")
+	}
+	
+	/**
+	 * Using the received vnfId and vfModuleId, query AAI to get the corresponding VNF info.
+	 * A 200 response is expected with the VNF info in the response body. Will find out the base module info.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void queryAAIVfModule(DelegateExecution execution) {
+
+		def method = getClass().getSimpleName() + '.queryAAIVfModule(' +
+			'execution=' + execution.getId() +
+			')'
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def vnfId = execution.getVariable('vnfId')
+			
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String  aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution)
+			msoLogger.debug('AAI URI is: ' + aai_uri)
+
+			String endPoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + "?depth=1"
+			msoLogger.debug("AAI endPoint: " + endPoint)
+
+			try {
+				msoLogger.debug("createVfModule - invoking httpGet() to AAI")
+				APIResponse response = aaiUriUtil.executeAAIGetCall(execution, endPoint)
+
+				def responseData = response.getResponseBodyAsString()
+				if (responseData != null) {
+					msoLogger.debug("Received generic VNF data: " + responseData)
+
+				}
+
+				msoLogger.debug("createVfModule - queryAAIVfModule Response: " + responseData)
+				msoLogger.debug("createVfModule - queryAAIVfModule ResponseCode: " + response.getStatusCode())
+
+				execution.setVariable('DCVFM_queryAAIVfModuleResponseCode', response.getStatusCode())
+				execution.setVariable('DCVFM_queryAAIVfModuleResponse', responseData)
+				msoLogger.debug('Response code:' + response.getStatusCode())
+				msoLogger.debug('Response:' + System.lineSeparator() + responseData)
+				//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
+				if (response.getStatusCode() == 200) {
+					// Parse the VNF record from A&AI to find base module info
+					msoLogger.debug('Parsing the VNF data to find base module info')
+					if (responseData != null) {
+						def vfModulesText = utils.getNodeXml(responseData, "vf-modules")
+						msoLogger.debug("vModulesText: " + vfModulesText)
+						if (vfModulesText != null && !vfModulesText.trim().isEmpty()) {
+							def xmlVfModules= new XmlSlurper().parseText(vfModulesText)
+							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.getNodeText(vfModuleXml, "vf-module-id")
+								vfModuleEntry.put("vfModuleId", vfModuleId)
+								def vfModuleName = utils.getNodeText(vfModuleXml, "vf-module-name")      
+								vfModuleEntry.put("vfModuleName", vfModuleName)
+								
+								// Find the model for this vf module in decomposition if specified
+								if (vfModulesFromDecomposition != null) {
+									msoLogger.debug("vfModulesFromDecomposition is not null")
+									def vfModuleUuid = utils.getNodeText(vfModuleXml, "model-version-id")
+									if (vfModuleUuid == null) {
+										vfModuleUuid = utils.getNodeText(vfModuleXml, "persona-model-version")
+									}
+									msoLogger.debug("vfModule UUID is: " + vfModuleUuid)
+									for (j in 0..vfModulesFromDecomposition.size()-1) {
+										ModuleResource mr = vfModulesFromDecomposition[j]
+										if (mr.getModelInfo().getModelUuid() == vfModuleUuid) {
+											msoLogger.debug("Found modelInfo")
+											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") {
+									vfModuleBaseEntry = vfModuleEntry
+								}
+								else {						
+									vfModulesList.add(vfModuleEntry)
+								}
+							}
+							if (vfModuleBaseEntry != null) {
+								vfModulesList.add(vfModuleBaseEntry)
+							}					
+						}
+						
+					}					
+				}
+				execution.setVariable("DDVAM_vfModules", vfModulesList)
+			} catch (Exception ex) {
+				ex.printStackTrace()
+				msoLogger.debug('Exception occurred while executing AAI GET:' + ex.getMessage())
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage())
+			}
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModule(): ' + e.getMessage())
+		}
+	}
+	
+	public void prepareNextModuleToDelete(DelegateExecution execution){
+
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED prepareNextModuleToDelete ")
+		
+		try {
+			int i = execution.getVariable("DDVAM_nextModule")
+			def vfModules = execution.getVariable("DDVAM_vfModules")
+			def vfModule = vfModules[i]
+			
+			def vfModuleId = vfModule.get("vfModuleId")
+			execution.setVariable("DDVAM_vfModuleId", vfModuleId)
+			
+			def vfModuleName = vfModule.get("vfModuleName")
+			execution.setVariable("DDVAM_vfModuleName", vfModuleName)			
+			
+			def vfModuleModelInfo = vfModule.get("vfModuleModelInfo")
+			msoLogger.debug("vfModuleModelInfo for module delete: " + vfModuleModelInfo)
+			execution.setVariable("DDVAM_vfModuleModelInfo", vfModuleModelInfo)			
+			
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessAddOnModule." + e, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during prepareNextModuleToDelete Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED prepareNextModuleToDelete ")
+	}
+	
+	public void preProcessSDNCDeactivateRequest(DelegateExecution execution){
+
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessSDNCDeactivateRequest ")
+		def vnfId = execution.getVariable("vnfId")
+		def serviceInstanceId = execution.getVariable("serviceInstanceId")		
+
+		try{
+			//Build SDNC Request
+			
+			String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate")
+
+			deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest)
+			execution.setVariable("DDVAM_deactivateSDNCRequest", deactivateSDNCRequest)
+			msoLogger.debug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest)
+			msoLogger.debug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessSDNCDeactivateRequest." + e, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED preProcessSDNCDeactivateRequest ")
+	}
+	
+	public void preProcessSDNCUnassignRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED preProcessSDNCUnassignRequest Process ")
+		try{
+			String vnfId = execution.getVariable("vnfId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+			String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign")
+
+			execution.setVariable("DDVAM_unassignSDNCRequest", unassignSDNCRequest)
+			msoLogger.debug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest)
+			msoLogger.debug("Outgoing UnassignSDNCRequest is: \n"  + unassignSDNCRequest)
+
+		}catch(Exception e){
+			msoLogger.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during  preProcessSDNCUnassignRequest Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED  preProcessSDNCUnassignRequest Process ")
+	}
+	
+	public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
+		
+				String uuid = execution.getVariable('testReqId') // for junits
+				if(uuid==null){
+					uuid = execution.getVariable("msoRequestId") + "-" +  	System.currentTimeMillis()
+				}
+				def callbackURL = execution.getVariable("sdncCallbackUrl")
+				def requestId = execution.getVariable("msoRequestId")
+				def serviceId = execution.getVariable("DDVAM_serviceId")				
+				def tenantId = execution.getVariable("DDVAM_tenantId")
+				def source = execution.getVariable("DDVAM_source")
+				def vnfId = execution.getVariable("vnfId")
+				def serviceInstanceId = execution.getVariable("serviceInstanceId")
+				def cloudSiteId = execution.getVariable("DDVAM_cloudSiteId")				
+				def modelCustomizationId = execution.getVariable("DDVAM_modelCustomizationId")				
+				//def serviceModelInfo = execution.getVariable("serviceModelInfo")
+				//def vnfModelInfo = execution.getVariable("vnfModelInfo")
+				//String serviceEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(serviceModelInfo)
+				//String vnfEcompModelInformation = sdncAdapterUtils.modelInfoToEcompModelInformation(vnfModelInfo)				
+				def globalSubscriberId = execution.getVariable("DDVAM_globalSubscriberId")
+				def sdncVersion = execution.getVariable("DDVAM_sdncVersion")						
+				
+				String sdncRequest =
+				"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+	   <sdncadapter:RequestHeader>
+				<sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId>
+				<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId>
+				<sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction>
+				<sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation>
+				<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackURL)}</sdncadapter:CallbackUrl>
+				<sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+		</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+		<request-information>
+			<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+			<request-action>DeleteVnfInstance</request-action>
+			<source>${MsoUtils.xmlEscape(source)}</source>
+			<notification-url/>
+			<order-number/>
+			<order-version/>
+		</request-information>
+		<service-information>
+			<service-id/>
+			<subscription-service-type/>			
+			<service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+			<global-customer-id/>
+		</service-information>
+		<vnf-information>
+			<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+			<vnf-type/>			
+		</vnf-information>
+		<vnf-request-input>			
+			<vnf-name/>
+			<tenant>${MsoUtils.xmlEscape(tenantId)}</tenant>
+			<aic-cloud-region>${MsoUtils.xmlEscape(cloudSiteId)}</aic-cloud-region>			
+		</vnf-request-input>
+	</sdncadapterworkflow:SDNCRequestData>
+	</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+		
+			msoLogger.debug("sdncRequest:  " + sdncRequest)
+			return sdncRequest
+	}
+		
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method){
+
+		execution.setVariable("prefix",Prefix)
+		msoLogger.trace("STARTED ValidateSDNCResponse Process")
+
+		WorkflowException workflowException = execution.getVariable("WorkflowException")
+		boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+
+		msoLogger.debug("workflowException: " + workflowException)
+
+		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+		sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+		msoLogger.debug("SDNCResponse: " + response)
+
+		String sdncResponse = response
+		if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+			msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + sdncResponse)			
+		}else{
+			msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.")
+			throw new BpmnError("MSOWorkflowException")
+		}
+		msoLogger.trace("COMPLETED ValidateSDNCResponse Process")
+	}
+	
+	
+	
+	
+	
+	
+	
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoScaleE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoScaleE2EServiceInstance.groovy
new file mode 100644
index 0000000..41d9384
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoScaleE2EServiceInstance.groovy
@@ -0,0 +1,142 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 CMCC 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.onap.so.bpmn.infrastructure.scripts
+
+import static org.apache.commons.lang3.StringUtils.*;
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.springframework.web.util.UriUtils;
+
+
+
+/**
+ * This groovy class supports the <class>DoScaleServiceInstance.bpmn</class> process.
+ *
+ */
+public class DoScaleE2EServiceInstance extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoScaleE2EServiceInstance.class);
+
+
+    String Prefix = "DCRESI_"
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+    JsonUtils jsonUtil = new JsonUtils()
+
+    public void preProcessRequest(DelegateExecution execution) {
+        String msg = ""
+        msoLogger.trace("preProcessRequest ")
+
+        try {
+            String requestId = execution.getVariable("msoRequestId")
+            execution.setVariable("prefix", Prefix)
+
+            //Inputs
+            String globalSubscriberId = execution.getVariable("globalSubscriberId")
+
+            String serviceType = execution.getVariable("serviceType")
+            String serviceInstanceName = execution.getVariable("serviceInstanceName")
+            String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+            execution.setVariable("serviceType", serviceType)
+
+            String resourceTemplateUUIDs = ""
+            String scaleNsRequest = execution.getVariable("bpmnRequest")
+            JSONObject jsonObject = new JSONObject(scaleNsRequest).getJSONObject("service")
+            JSONArray jsonArray = jsonObject.getJSONArray("resources")
+
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject reqBodyJsonObj = jsonArray.getJSONObject(i)
+                String nsInstanceId = reqBodyJsonObj.getString("resourceInstanceId")
+                resourceTemplateUUIDs = resourceTemplateUUIDs + nsInstanceId + ":"
+            }
+
+            execution.setVariable("resourceTemplateUUIDs", resourceTemplateUUIDs)
+
+            if (serviceInstanceName == null) {
+                execution.setVariable("serviceInstanceName", "")
+            }
+            if (isBlank(serviceInstanceId)) {
+                msg = "Input serviceInstanceId is null"
+                msoLogger.debug(msg)
+                exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+            }
+        } catch (BpmnError e) {
+            throw e;
+        } catch (Exception ex) {
+            msg = "Exception in preProcessRequest " + ex.getMessage()
+            msoLogger.debug(msg)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+        }
+        msoLogger.trace("Exit preProcessRequest ")
+    }
+
+
+    public void preInitResourcesOperStatus(DelegateExecution execution){
+        msoLogger.trace("STARTED preInitResourcesOperStatus Process ")
+        try{
+            String serviceId = execution.getVariable("serviceInstanceId")
+            String operationId = execution.getVariable("operationId")
+            String operationType = "SCALE"
+
+            // resourceTemplateUUIDs should be created ??
+            String resourceTemplateUUIDs = execution.getVariable("resourceTemplateUUIDs")
+            msoLogger.info("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId + " operationType:" + operationType)
+            serviceId = UriUtils.encode(serviceId,"UTF-8")
+            execution.setVariable("serviceInstanceId", serviceId)
+            execution.setVariable("operationId", operationId)
+            execution.setVariable("operationType", operationType)
+
+            execution.setVariable("URN_mso_openecomp_adapters_db_endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter")
+
+            String payload =
+                    """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                        <soapenv:Header/>
+                        <soapenv:Body>
+                            <ns:initResourceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
+                            <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
+                            <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                            <operationType>${MsoUtils.xmlEscape(operationType)}</operationType>
+                            <resourceTemplateUUIDs>${MsoUtils.xmlEscape(resourceTemplateUUIDs)}</resourceTemplateUUIDs>
+                        </ns:initResourceOperationStatus>
+                    </soapenv:Body>
+                </soapenv:Envelope>"""
+
+            payload = utils.formatXml(payload)
+            execution.setVariable("CVFMI_initResOperStatusRequest", payload)
+            msoLogger.info("Outgoing initResourceOperationStatus: \n" + payload)
+            msoLogger.debug("CreateVfModuleInfra Outgoing initResourceOperationStatus Request: " + payload)
+
+        }catch(Exception e){
+            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preInitResourcesOperStatus.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, e);
+            execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during preInitResourcesOperStatus Method:\n" + e.getMessage())
+        }
+        msoLogger.trace("COMPLETED preInitResourcesOperStatus Process ")
+    }
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoScaleVFCNetworkServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoScaleVFCNetworkServiceInstance.groovy
new file mode 100644
index 0000000..e06e523
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoScaleVFCNetworkServiceInstance.groovy
@@ -0,0 +1,332 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 CMCC. 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.onap.so.bpmn.infrastructure.scripts
+
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.json.JSONArray
+import org.json.JSONObject;
+
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.core.json.JsonUtils
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import com.fasterxml.jackson.databind.ObjectMapper
+
+import org.onap.so.rest.RESTClient
+import org.onap.so.rest.RESTConfig
+import org.onap.so.rest.APIResponse;
+
+import org.onap.so.bpmn.infrastructure.vfcmodel.ScaleResource
+import org.onap.so.bpmn.infrastructure.vfcmodel.ScaleNsByStepsData
+import org.onap.so.bpmn.infrastructure.vfcmodel.ScaleNsData
+
+import org.onap.so.bpmn.infrastructure.vfcmodel.NSResourceInputParameter
+import org.onap.so.bpmn.infrastructure.vfcmodel.NsOperationKey
+import org.onap.so.bpmn.infrastructure.vfcmodel.NsScaleParameters
+import org.onap.so.bpmn.infrastructure.vfcmodel.NsParameters
+import org.onap.so.bpmn.infrastructure.vfcmodel.LocationConstraint
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+
+
+
+/**
+ * This groovy class supports the <class>DoScaleVFCNetworkServiceInstance.bpmn</class> process.
+ * flow for VFC Network Service Scale
+ */
+public class DoScaleVFCNetworkServiceInstance extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoScaleVFCNetworkServiceInstance.class);
+
+
+    String host = "http://mso.mso.testlab.openecomp.org:8080"
+
+    String scaleUrl = "/vfc/rest/v1/vfcadapter/ns/{nsInstanceId}/scale"
+
+    String queryJobUrl = "/vfc/rest/v1/vfcadapter/jobs/{jobId}"
+
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+    JsonUtils jsonUtil = new JsonUtils()
+
+    /**
+     * Pre Process the BPMN Flow Request
+     * Inclouds:
+     * generate the nsOperationKey
+     * generate the nsParameters
+     */
+    public void preProcessRequest(DelegateExecution execution) {
+        msoLogger.trace("preProcessRequest() ")
+
+        List<NSResourceInputParameter> nsRIPList = convertScaleNsReq2NSResInputParamList(execution)
+        String requestJsonStr = ""
+        int size = nsRIPList.size()
+        for (int i = 0; i < size; i++) {
+            NSResourceInputParameter nsRIP = nsRIPList.get(i)
+
+            if (i == size - 1) {
+                requestJsonStr += objectToJsonStr(nsRIP)
+            } else {
+                requestJsonStr += objectToJsonStr(nsRIP) + "|"
+            }
+        }
+
+        execution.setVariable("reqBody", requestJsonStr)
+
+        msoLogger.trace("Exit preProcessRequest ")
+    }
+
+    /**
+     * scale NS task
+     */
+    public void scaleNetworkService(DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+
+        String saleNsRequest = execution.getVariable("reqBody")
+        String[] nsReqStr = saleNsRequest.split("\\|")
+
+        for (int i = 0; i < nsReqStr.length; i++) {
+            JSONObject reqBodyJsonObj = new JSONObject(nsReqStr[i])
+            String nsInstanceId = reqBodyJsonObj.getJSONObject("nsScaleParameters").getString("nsInstanceId")
+            String nodeTemplateUUID = reqBodyJsonObj.getJSONObject("nsOperationKey").getString("nodeTemplateUUID")
+            reqBodyJsonObj.getJSONObject("nsScaleParameters").remove("nsInstanceId")
+            String reqBody = reqBodyJsonObj.toString()
+
+            String url = host + scaleUrl.replaceAll("\\{nsInstanceId\\}", nsInstanceId)
+
+            APIResponse apiResponse = postRequest(execution, url, reqBody)
+
+            String returnCode = apiResponse.getStatusCode()
+            String aaiResponseAsString = apiResponse.getResponseBodyAsString()
+            String jobId = ""
+            if (returnCode == "200" || returnCode == "202") {
+                jobId = jsonUtil.getJsonValue(aaiResponseAsString, "jobId")
+            }
+            utils.log("INFO", "scaleNetworkService get a ns scale job Id:" + jobId, isDebugEnabled)
+            execution.setVariable("jobId", jobId)
+            execution.setVariable("nodeTemplateUUID", nodeTemplateUUID)
+
+            String isScaleFinished = ""
+
+            if(jobId =="" || jobId == null){
+                continue
+            }
+            // query the requested network service scale status, if finished, then start the next one, otherwise, wait
+            while (isScaleFinished != "finished" && isScaleFinished != "error"){
+                timeDelay()
+                queryNSProgress(execution)
+                isScaleFinished = execution.getVariable("operationStatus")
+            }
+        }
+    }
+
+    /**
+     * query NS task
+     */
+    private void queryNSProgress(DelegateExecution execution) {
+        String jobId = execution.getVariable("jobId")
+        String url = host + queryJobUrl.replaceAll("\\{jobId\\}", jobId)
+
+        NsOperationKey nsOperationKey = new NsOperationKey()
+        // is this net work service ID or E2E service ID?
+        nsOperationKey.setServiceId(execution.getVariable("serviceId"))
+        nsOperationKey.setServiceType(execution.getVariable("serviceType"))
+        nsOperationKey.setGlobalSubscriberId(execution.getVariable("globalSubscriberId"))
+        nsOperationKey.setNodeTemplateUUID(execution.getVariable("nodeTemplateUUID"))
+        nsOperationKey.setOperationId(execution.getVariable("operationId"))
+        String queryReqBody = objectToJsonStr(nsOperationKey)
+
+        APIResponse apiResponse = postRequest(execution,url, queryReqBody)
+
+        String returnCode = apiResponse.getStatusCode()
+        String aaiResponseAsString = apiResponse.getResponseBodyAsString()
+
+        String operationStatus = "error"
+
+        if (returnCode == "200") {
+            operationStatus = jsonUtil.getJsonValue(aaiResponseAsString, "responseDescriptor.status")
+        }
+
+        execution.setVariable("operationStatus", operationStatus)
+    }
+
+    /**
+     * delay 5 sec
+     *
+     */
+    private void timeDelay() {
+        try {
+            Thread.sleep(5000)
+        } catch (InterruptedException e) {
+            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Time Delay exception" + e, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "");
+        }
+    }
+
+    /**
+     * finish NS task
+     */
+    public void finishNSScale(DelegateExecution execution) {
+        //no need to do anything util now
+        System.out.println("Scale finished.")
+    }
+
+    /**
+     * post request
+     * url: the url of the request
+     * requestBody: the body of the request
+     */
+    private APIResponse postRequest(DelegateExecution execution, String url, String requestBody){
+        msoLogger.trace("Started Execute VFC adapter Post Process ")
+        msoLogger.info("url:"+url +"\nrequestBody:"+ requestBody)
+        APIResponse apiResponse = null
+        try{
+            RESTConfig config = new RESTConfig(url)
+            RESTClient client = new RESTClient(config).addHeader("Content-Type", "application/json").addHeader("Authorization","Basic QlBFTENsaWVudDpwYXNzd29yZDEk")
+//            RESTClient client = new RESTClient(config).addHeader("Content-Type", "application/json").addHeader("Accept","application/json").addHeader("Authorization","Basic QlBFTENsaWVudDpwYXNzd29yZDEk")
+            apiResponse = client.httpPost(requestBody)
+            msoLogger.info("response code:"+ apiResponse.getStatusCode() +"\nresponse body:"+ apiResponse.getResponseBodyAsString())
+            msoLogger.trace("Completed Execute VF-C adapter Post Process ")
+        }catch(Exception e){
+            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception occured while executing VFC Post Call.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, e);
+            throw new BpmnError("MSOWorkflowException")
+        }
+        return apiResponse
+    }
+
+    /**
+     * create a Scale Resource object list from a NSScaleRequestJso nString
+     * This method is for the specific request from Scale Network Service BPMN workflow
+     * @param nsScaleRequestJsonString , a specific request Json string which conform to ?? class
+     * @return List < ScaleResource >
+     */
+    private List<ScaleResource> jsonGetNsResourceList(String nsScaleRequestJsonString) {
+        List<ScaleResource> list = new ArrayList<ScaleResource>()
+        JSONObject jsonObject = new JSONObject(nsScaleRequestJsonString)
+
+        JSONObject jsonResource = jsonObject.getJSONObject("service")
+        JSONArray arr = jsonResource.getJSONArray("resources")
+
+        for (int i = 0; i < arr.length(); i++) {
+            JSONObject tempResource = arr.getJSONObject(i)
+            ScaleResource resource = new ScaleResource()
+            resource.setResourceInstanceId(tempResource.getString("resourceInstanceId"))
+            resource.setScaleType(tempResource.getString("scaleType"))
+
+            JSONObject jsonScaleNsData = tempResource.getJSONObject("scaleNsData")
+            JSONObject jsonScaleNsByStepData = jsonScaleNsData.getJSONObject("scaleNsByStepsData")
+
+            ScaleNsData scaleNsData = new ScaleNsData()
+            ScaleNsByStepsData stepsData = new ScaleNsByStepsData()
+
+            stepsData.setAspectId(jsonScaleNsByStepData.getString("aspectId"))
+            stepsData.setScalingDirection(jsonScaleNsByStepData.getString("scalingDirection"))
+            stepsData.setNumberOfSteps(Integer.parseInt(jsonScaleNsByStepData.getString("numberOfSteps")))
+
+            scaleNsData.setScaleNsByStepsData(stepsData)
+            resource.setScaleNsData(scaleNsData)
+            list.add(resource)
+        }
+
+        return list
+    }
+
+    /**
+     * Convert a java class to JSON string
+     * @param obj
+     * @return
+     */
+    private String objectToJsonStr(Object obj) {
+        ObjectMapper mapper = new ObjectMapper()
+        String jsonStr = null
+        try {
+            jsonStr = mapper.writeValueAsString(obj)
+        } catch (IOException ioe) {
+            System.out.println(ioe.getMessage())
+        }
+        return jsonStr
+
+    }
+
+    /**
+     * create a NSResourceInputParameter list from a Scale Network request Json string
+     * @return
+     */
+    private List<NSResourceInputParameter> convertScaleNsReq2NSResInputParamList(DelegateExecution execution) {
+        String saleNsRequest = execution.getVariable("bpmnRequest")
+
+        //String requestId = execution.getVariable("msoRequestId")
+        //String serviceInstanceId = execution.getVariable("serviceInstanceId")
+        String serviceInstanceName = execution.getVariable("serviceInstanceName")
+        //String nodeTemplateUUID = execution.getVariable("nodeTemplateUUID")
+        String serviceType = execution.getVariable("serviceType")
+        String globalSubscriberId = execution.getVariable("globalSubscriberId")
+        String operationId = execution.getVariable("operationId")
+        String serviceId = execution.getVariable("serviceId")
+        String nsServiceDescription = execution.getVariable("requestDescription")
+
+        String resource = JsonUtils.getJsonValue(saleNsRequest, "service.resources")
+
+        // set nsScaleParameters properties
+        List<ScaleResource> scaleResourcesList = jsonGetNsResourceList(saleNsRequest)
+        List<NSResourceInputParameter> nsResourceInputParameterList = new ArrayList<NSResourceInputParameter>()
+
+        for (ScaleResource sr : scaleResourcesList) {
+            NSResourceInputParameter nsResourceInputParameter = new NSResourceInputParameter()
+            NsOperationKey nsOperationKey = new NsOperationKey()
+            NsParameters nsParameters = new NsParameters()
+            NsScaleParameters nsScaleParameters = new NsScaleParameters()
+            nsParameters.setLocationConstraints(new ArrayList<LocationConstraint>())
+            nsParameters.setAdditionalParamForNs(new HashMap<String, Object>())
+
+            // set NsOperationKey properties
+            nsOperationKey.setGlobalSubscriberId(globalSubscriberId)
+            nsOperationKey.setServiceId(serviceId)
+            nsOperationKey.setServiceType(serviceType)
+            // for ns scale the resourceInstanceId is the nodeTemplateUUID
+            nsOperationKey.setNodeTemplateUUID(sr.getResourceInstanceId())
+            nsOperationKey.setOperationId(operationId)
+
+            nsScaleParameters.setScaleType(sr.getScaleType())
+            nsScaleParameters.setNsInstanceId(sr.getResourceInstanceId())
+
+            ScaleNsByStepsData scaleNsByStepsData = new ScaleNsByStepsData()
+            scaleNsByStepsData.setScalingDirection(sr.getScaleNsData().getScaleNsByStepsData().getScalingDirection())
+            scaleNsByStepsData.setNumberOfSteps(sr.getScaleNsData().getScaleNsByStepsData().getNumberOfSteps())
+            scaleNsByStepsData.setAspectId(sr.getScaleNsData().getScaleNsByStepsData().getAspectId())
+
+            List<ScaleNsByStepsData> scaleNsByStepsDataList = new ArrayList<ScaleNsByStepsData>()
+            scaleNsByStepsDataList.add(scaleNsByStepsData)
+            nsScaleParameters.setScaleNsByStepsData(scaleNsByStepsDataList)
+
+            nsResourceInputParameter.setNsOperationKey(nsOperationKey)
+            nsResourceInputParameter.setNsServiceName(serviceInstanceName)
+            nsResourceInputParameter.setNsServiceDescription(nsServiceDescription)
+            nsResourceInputParameter.setNsParameters(nsParameters)
+            nsResourceInputParameter.setNsScaleParameters(nsScaleParameters)
+
+            nsResourceInputParameterList.add(nsResourceInputParameter)
+        }
+        return nsResourceInputParameterList
+    }
+}
+
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstance.groovy
new file mode 100644
index 0000000..5fb6a9d
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstance.groovy
@@ -0,0 +1,451 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. 
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.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.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.domain.Resource
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.springframework.web.util.UriUtils;
+
+import groovy.json.*
+
+
+/**
+ * This groovy class supports the <class>DoUpdateE2EServiceInstance.bpmn</class> process.
+ *
+ * Inputs:
+ * @param - msoRequestId
+ * @param - globalSubscriberId
+ * @param - serviceType
+ * @param - serviceInstanceId
+ * @param - serviceInstanceName
+ * @param - serviceModelInfo
+ * @param - productFamilyId
+ * @param - uuiRequest
+ * @param - serviceDecomposition_Target
+ * @param - serviceDecomposition_Original
+ * @param - addResourceList
+ * @param - delResourceList
+ * 
+ * Outputs:
+ * @param - rollbackData (localRB->null)
+ * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true)
+ * @param - WorkflowException
+ */
+public class DoUpdateE2EServiceInstance extends AbstractServiceTaskProcessor {
+
+	String Prefix="DUPDSI_"
+	private static final String DebugFlag = "isDebugEnabled"
+	
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	public void preProcessRequest (DelegateExecution execution) {
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO"," ***** Enter DoUpdateE2EServiceInstance preProcessRequest *****",  isDebugEnabled)
+		
+		String msg = ""	
+
+		try {
+			execution.setVariable("prefix", Prefix)
+			//Inputs
+			//for AAI GET & PUT & SDNC assignToplology
+			String globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId
+			utils.log("INFO"," ***** globalSubscriberId *****" + globalSubscriberId,  isDebugEnabled)
+			
+			//for AAI PUT & SDNC assignTopology
+			String serviceType = execution.getVariable("serviceType")
+			utils.log("INFO"," ***** serviceType *****" + serviceType,  isDebugEnabled)
+			
+			//for SDNC assignTopology
+			String productFamilyId = execution.getVariable("productFamilyId") //AAI productFamilyId
+
+			if (isBlank(globalSubscriberId)) {
+				msg = "Input globalSubscriberId is null"
+				utils.log("INFO", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			
+			if (isBlank(serviceType)) {
+				msg = "Input serviceType is null"
+				utils.log("INFO", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			
+			//Generated in parent for AAI 
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			if (isBlank(serviceInstanceId)){
+				msg = "Input serviceInstanceId is null"
+				utils.log("INFO", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+
+			String serviceInstanceName = execution.getVariable("serviceInstanceName")
+			
+			// user params
+			String uuiRequest = execution.getVariable("uuiRequest")
+            
+			// target model Invariant uuid
+			String modelInvariantUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceInvariantUuid")
+			execution.setVariable("modelInvariantUuid", modelInvariantUuid)            
+			utils.log("INFO", "modelInvariantUuid: " + modelInvariantUuid, isDebugEnabled)            
+            
+			// target model uuid
+			String modelUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceUuid")
+			execution.setVariable("modelUuid", modelUuid)
+			
+			utils.log("INFO","modelUuid: " + modelUuid, isDebugEnabled)
+				
+		} 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", "======== COMPLETED preProcessRequest Process ======== ", isDebugEnabled)  
+	}
+
+	
+	public void preInitResourcesOperStatus(DelegateExecution execution){
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+
+        utils.log("INFO", " ======== STARTED preInitResourcesOperStatus Process ======== ", isDebugEnabled)
+        try{
+            String serviceId = execution.getVariable("serviceInstanceId")
+            String operationId = execution.getVariable("operationId")
+            String operationType = execution.getVariable("operationType")
+            String resourceTemplateUUIDs = ""
+            String result = "processing"
+            String progress = "0"
+            String reason = ""
+            String operationContent = "Prepare service updating"
+            utils.log("INFO", "Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId + " operationType:" + operationType, isDebugEnabled)
+            serviceId = UriUtils.encode(serviceId,"UTF-8")
+            execution.setVariable("serviceInstanceId", serviceId)
+            execution.setVariable("operationId", operationId)
+            execution.setVariable("operationType", operationType)
+
+			List<Resource> resourceList = new ArrayList<String>()
+			List<Resource> addResourceList =  execution.getVariable("addResourceList")
+			List<Resource> delResourceList =  execution.getVariable("delResourceList")
+			resourceList.addAll(addResourceList)
+			resourceList.addAll(delResourceList)
+			for(Resource resource : resourceList){
+				resourceTemplateUUIDs  = resourceTemplateUUIDs + resource.getModelInfo().getModelCustomizationUuid() + ":"
+			}
+			
+			def dbAdapterEndpoint = "http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter"
+			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.onap.so/requestsdb">
+                        <soapenv:Header/>
+                        <soapenv:Body>
+                            <ns:initResourceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
+								<serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
+								<operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+								<operationType>${MsoUtils.xmlEscape(operationType)}</operationType>
+								<resourceTemplateUUIDs>${MsoUtils.xmlEscape(resourceTemplateUUIDs)}</resourceTemplateUUIDs>
+                            </ns:initResourceOperationStatus>
+                    	</soapenv:Body>
+                	</soapenv:Envelope>"""
+
+			payload = utils.formatXml(payload)
+			execution.setVariable("CVFMI_initResOperStatusRequest", payload)
+			utils.log("INFO", "Outgoing initResourceOperationStatus: \n" + payload, isDebugEnabled)
+			utils.logAudit("CreateVfModuleInfra Outgoing initResourceOperationStatus Request: " + payload)
+
+        }catch(Exception e){
+            utils.log("ERROR", "Exception Occured Processing preInitResourcesOperStatus. Exception is:\n" + e, isDebugEnabled)
+            execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during preInitResourcesOperStatus Method:\n" + e.getMessage())
+        }
+        utils.log("INFO", "======== COMPLETED preInitResourcesOperStatus Process ======== ", isDebugEnabled)  
+    }
+    
+
+    public void preProcessForAddResource(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO"," ***** preProcessForAddResource ***** ", isDebugEnabled)
+		
+	    execution.setVariable("operationType", "create")
+		
+		execution.setVariable("hasResourcetoAdd", false)
+		List<Resource> addResourceList =  execution.getVariable("addResourceList")
+		if(addResourceList != null && !addResourceList.isEmpty()) {
+			execution.setVariable("hasResourcetoAdd", true)			
+		}
+	
+		utils.log("INFO"," *** Exit preProcessForAddResource *** ", isDebugEnabled)
+    }
+
+    public void postProcessForAddResource(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO"," ***** postProcessForAddResource ***** ", isDebugEnabled)
+		
+		execution.setVariable("operationType", "update")
+
+		utils.log("INFO"," *** Exit postProcessForAddResource *** ", isDebugEnabled)
+    }
+    
+	public void preProcessForDeleteResource(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO"," ***** preProcessForDeleteResource ***** ", isDebugEnabled)
+
+		execution.setVariable("operationType", "delete")
+
+		def  hasResourcetoDelete = false
+		List<Resource> delResourceList =  execution.getVariable("delResourceList")
+		if(delResourceList != null && !delResourceList.isEmpty()) {
+			hasResourcetoDelete = true
+		}
+		execution.setVariable("hasResourcetoDelete", hasResourcetoDelete)
+
+		if(hasResourcetoDelete) {
+			def jsonSlurper = new JsonSlurper()
+			String serviceRelationShip = execution.getVariable("serviceRelationShip")			
+			List relationShipList =  jsonSlurper.parseText(serviceRelationShip)
+
+			//Set the real resource instance id to the decomosed resource list
+			for(Resource resource: delResourceList){
+				//reset the resource instance id , because in the decompose flow ,its a random one.
+				resource.setResourceId("");
+				//match the resource-instance-name and the model name
+				if (relationShipList != null) {
+					relationShipList.each {
+						if(StringUtils.containsIgnoreCase(it.resourceType, resource.getModelInfo().getModelName())){
+							resource.setResourceId(it.resourceInstanceId);
+						}
+					}
+				}
+			}
+		}
+		
+		execution.setVariable("deleteResourceList", delResourceList)
+
+		utils.log("INFO"," *** Exit preProcessForDeleteResource *** ", isDebugEnabled)
+	}
+
+    public void postProcessForDeleteResource(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO"," ***** postProcessForDeleteResource ***** ", isDebugEnabled)
+		
+		execution.setVariable("operationType", "update")
+
+		utils.log("INFO"," *** Exit postProcessForDeleteResource *** ", isDebugEnabled)
+    } 
+    
+	public void preProcessAAIGET(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")	
+	}
+    	
+	public void postProcessAAIGET(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO"," ***** postProcessAAIGET ***** ", isDebugEnabled)
+		String msg = ""
+
+		try {
+			String serviceInstanceName = execution.getVariable("serviceInstanceName")
+			boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")
+			if(!succInAAI){
+				utils.log("INFO","Error getting Service-instance from AAI in postProcessAAIGET", + serviceInstanceName, isDebugEnabled)
+				WorkflowException workflowException = execution.getVariable("WorkflowException")
+				utils.logAudit("workflowException: " + workflowException)
+				if(workflowException != null){
+					exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+				}
+				else
+				{
+					msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI
+					utils.log("INFO", msg, isDebugEnabled)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+				}
+			}
+			else
+			{
+				boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator")
+				if(foundInAAI){
+					String aaiService = execution.getVariable("GENGS_service")
+					if (!isBlank(aaiService) && (utils.nodeExists(aaiService, "resource-version"))) {
+						execution.setVariable("serviceInstanceVersion",  utils.getNodeText(aaiService, "resource-version"))
+						utils.log("INFO","Found Service-instance in AAI.serviceInstanceName:" + execution.getVariable("serviceInstanceName"), isDebugEnabled)
+					}
+				}
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoUpdateE2EServiceInstance.postProcessAAIGET " + ex.getMessage()
+			utils.log("INFO", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("INFO"," *** Exit postProcessAAIGET *** ", isDebugEnabled)
+	}
+
+	public void preProcessAAIPUT(DelegateExecution execution) {		
+		def method = getClass().getSimpleName() + '.preProcessRequest(' +'execution=' + execution.getId() +')'
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO","Entered " + method, isDebugEnabled)
+		String msg = ""
+		utils.log("INFO"," ***** preProcessAAIPUT *****",  isDebugEnabled)
+
+
+		String serviceInstanceVersion = execution.getVariable("serviceInstanceVersion")
+		//execution.setVariable("GENPS_serviceResourceVersion", serviceInstanceVersion)
+        
+		//requestDetails.modelInfo.for AAI PUT servieInstanceData
+		//requestDetails.requestInfo. for AAI GET/PUT serviceInstanceData
+		String serviceInstanceName = execution.getVariable("serviceInstanceName")
+		String serviceInstanceId = execution.getVariable("serviceInstanceId")
+		//aai serviceType and Role can be setted as fixed value now.
+		String aaiServiceType = "E2E Service"
+		String aaiServiceRole = "E2E Service"
+		String modelInvariantUuid = execution.getVariable("modelInvariantUuid")
+		String modelUuid = execution.getVariable("modelUuid")
+
+
+		AaiUtil aaiUriUtil = new AaiUtil(this)
+		utils.log("INFO","start create aai uri: " + aaiUriUtil, isDebugEnabled)	
+		String aai_uri = aaiUriUtil.getBusinessCustomerUri(execution)
+		utils.log("INFO","aai_uri: " + aai_uri, isDebugEnabled)
+		String namespace = aaiUriUtil.getNamespaceFromUri(aai_uri)
+		utils.log("INFO","namespace: " + namespace, isDebugEnabled)
+
+		//update target model to aai
+		String serviceInstanceData =
+				"""<service-instance xmlns=\"${namespace}\">
+                    <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+                    <service-instance-name>${MsoUtils.xmlEscape(serviceInstanceName)}</service-instance-name>
+                    <service-type>${MsoUtils.xmlEscape(aaiServiceType)}</service-type>
+                    <service-role>${MsoUtils.xmlEscape(aaiServiceRole)}</service-role>
+                    <resource-version>${MsoUtils.xmlEscape(serviceInstanceVersion)}</resource-version>
+                    <model-invariant-id>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-id>
+                    <model-version-id>${MsoUtils.xmlEscape(modelUuid)}</model-version-id>                    
+				 </service-instance>""".trim()
+
+		execution.setVariable("serviceInstanceData", serviceInstanceData)
+		utils.log("INFO","serviceInstanceData: " + serviceInstanceData, isDebugEnabled)
+		utils.logAudit(serviceInstanceData)
+		utils.log("INFO", " aai_uri " + aai_uri + " namespace:" + namespace, isDebugEnabled)
+		utils.log("INFO", " 'payload' to update Service Instance in AAI - " + "\n" + serviceInstanceData, isDebugEnabled)
+	
+		utils.log("INFO", "Exited " + method, isDebugEnabled)
+	}	
+	
+	public void postProcessAAIPUT(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO"," ***** postProcessAAIPUT ***** ", isDebugEnabled)
+		String msg = ""
+		try {
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			boolean succInAAI = execution.getVariable("GENPS_SuccessIndicator")
+			if(!succInAAI){
+				utils.log("INFO","Error putting Service-instance in AAI", + serviceInstanceId, isDebugEnabled)
+				WorkflowException workflowException = execution.getVariable("WorkflowException")
+				utils.logAudit("workflowException: " + workflowException)
+				if(workflowException != null){
+					exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+				}
+			}
+			else
+			{
+				//start rollback set up
+				RollbackData rollbackData = new RollbackData()
+				def disableRollback = execution.getVariable("disableRollback")
+				rollbackData.put("SERVICEINSTANCE", "disableRollback", disableRollback.toString())
+				rollbackData.put("SERVICEINSTANCE", "rollbackAAI", "true")
+				rollbackData.put("SERVICEINSTANCE", "serviceInstanceId", serviceInstanceId)
+				rollbackData.put("SERVICEINSTANCE", "serviceType", execution.getVariable("serviceType"))
+				rollbackData.put("SERVICEINSTANCE", "globalSubscriberId", execution.getVariable("globalSubscriberId"))
+				execution.setVariable("rollbackData", rollbackData)
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoCreateServiceInstance.postProcessAAIDEL. " + ex.getMessage()
+			utils.log("INFO", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("INFO"," *** Exit postProcessAAIPUT *** ", isDebugEnabled)
+	}	
+
+	public void preProcessRollback (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO"," ***** preProcessRollback ***** ", isDebugEnabled)
+		try {
+			
+			Object workflowException = execution.getVariable("WorkflowException");
+
+			if (workflowException instanceof WorkflowException) {
+				utils.log("INFO", "Prev workflowException: " + workflowException.getErrorMessage(), isDebugEnabled)
+				execution.setVariable("prevWorkflowException", workflowException);
+				//execution.setVariable("WorkflowException", null);
+			}
+		} catch (BpmnError e) {
+			utils.log("INFO", "BPMN Error during preProcessRollback", isDebugEnabled)
+		} catch(Exception ex) {
+			String msg = "Exception in preProcessRollback. " + ex.getMessage()
+			utils.log("INFO", msg, isDebugEnabled)
+		}
+		utils.log("INFO"," *** Exit preProcessRollback *** ", isDebugEnabled)
+	}
+
+	public void postProcessRollback (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO"," ***** postProcessRollback ***** ", isDebugEnabled)
+		String msg = ""
+		try {
+			Object workflowException = execution.getVariable("prevWorkflowException");
+			if (workflowException instanceof WorkflowException) {
+				utils.log("INFO", "Setting prevException to WorkflowException: ", isDebugEnabled)
+				execution.setVariable("WorkflowException", workflowException);
+			}
+			execution.setVariable("rollbackData", null)
+		} catch (BpmnError b) {
+			utils.log("INFO", "BPMN Error during postProcessRollback", isDebugEnabled)
+			throw b;
+		} catch(Exception ex) {
+			msg = "Exception in postProcessRollback. " + ex.getMessage()
+			utils.log("INFO", msg, isDebugEnabled)
+		}
+		utils.log("INFO"," *** Exit postProcessRollback *** ", isDebugEnabled)
+	}
+
+        
+	public void postConfigRequest(execution){
+	    //now do noting
+	}
+
+	
+}
+	
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstanceRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstanceRollback.groovy
new file mode 100644
index 0000000..a2d94ba
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstanceRollback.groovy
@@ -0,0 +1,345 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.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.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.logger.MsoLogger
+
+import groovy.json.*
+
+
+/**
+ * This groovy class supports the <class>DoUpdateE2EServiceInstanceRollback.bpmn</class> process.
+ *
+ * Inputs:
+ * @param - msoRequestId
+ * @param - rollbackData with
+ *          globalCustomerId
+ * 			subscriptionServiceType
+ * 			serviceInstanceId
+ * 			disableRollback
+ * 			rollbackAAI
+ * 			rollbackAdded
+ * 			rollbackDeleted
+ *
+ *
+ * Outputs:
+ * @param - rollbackError
+ * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true)
+ *
+ */
+public class DoUpdateE2EServiceInstanceRollback extends AbstractServiceTaskProcessor{
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoUpdateE2EServiceInstanceRollback.class);
+
+
+	String Prefix="DUPDSIRB_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	public void preProcessRequest(DelegateExecution execution) {
+		execution.setVariable("prefix",Prefix)
+		String msg = ""
+		msoLogger.trace("preProcessRequest ")
+		execution.setVariable("rollbackAAI",false)
+		execution.setVariable("rollbackAdded",false)
+		execution.setVariable("rollbackDeleted",false)
+		
+		List addResourceList = execution.getVariable("addResourceList")
+        List delResourceList = execution.getVariable("delResourceList")
+        execution.setVariable("addResourceList_o",  addResourceList)
+        execution.setVariable("delResourceList_o",  delResourceList)
+        //exchange add and delete resource list
+        execution.setVariable("addResourceList",  delResourceList)        
+        execution.setVariable("delResourceList",  addResourceList)
+
+		try {
+			def rollbackData = execution.getVariable("rollbackData")
+			msoLogger.debug("RollbackData:" + rollbackData)
+
+			if (rollbackData != null) {
+				if (rollbackData.hasType("SERVICEINSTANCE")) {
+
+					def serviceInstanceId = rollbackData.get("SERVICEINSTANCE", "serviceInstanceId")
+					execution.setVariable("serviceInstanceId", serviceInstanceId)
+
+					def subscriptionServiceType = rollbackData.get("SERVICEINSTANCE", "subscriptionServiceType")
+					execution.setVariable("subscriptionServiceType", subscriptionServiceType)
+
+					def globalSubscriberId  = rollbackData.get("SERVICEINSTANCE", "globalSubscriberId")
+					execution.setVariable("globalSubscriberId", globalSubscriberId)
+
+					def rollbackAAI = rollbackData.get("SERVICEINSTANCE", "rollbackAAI")
+					if ("true".equals(rollbackAAI))
+					{
+						execution.setVariable("rollbackAAI",true)
+					}
+
+					def rollbackAdded = rollbackData.get("SERVICEINSTANCE", "rollbackAdded")
+					if ("true".equals(rollbackAdded))
+					{
+						execution.setVariable("rollbackAdded", true)
+					}
+					
+					def rollbackDeleted = rollbackData.get("SERVICEINSTANCE", "rollbackDeleted")
+					if ("true".equals(rollbackDeleted))
+					{
+						execution.setVariable("rollbackDeleted", true)
+					}					
+
+					if (execution.getVariable("rollbackAAI") != true && execution.getVariable("rollbackAdded") != true 
+					  && execution.getVariable("rollbackDeleted") != true)
+					{
+						execution.setVariable("skipRollback", true)
+					}
+
+				}
+				else {
+					execution.setVariable("skipRollback", true)
+				}
+			}
+			else {
+				execution.setVariable("skipRollback", true)
+			}
+			if (execution.getVariable("disableRollback").equals("true" ))
+			{
+				execution.setVariable("skipRollback", true)
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in Update ServiceInstance Rollback preProcessRequest " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit preProcessRequest ")
+	}
+
+	public void postProcessRequest(DelegateExecution execution) {
+		msoLogger.trace("postProcessRequest ")
+		String msg = ""
+		try {
+			execution.setVariable("rollbackData", null)
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			boolean rollbackAAI = execution.getVariable("rollbackAAI")
+			boolean rollbackAdded = execution.getVariable("rollbackAdded")
+			boolean rollbackDeleted = execution.getVariable("rollbackDeleted")
+			
+			List addResourceList = execution.getVariable("addResourceList_o")
+			List delResourceList = execution.getVariable("delResourceList_o")
+			execution.setVariable("addResourceList",  addResourceList)
+			execution.setVariable("delResourceList",  delResourceList)
+
+			if (rollbackAAI || rollbackAdded || rollbackDeleted)
+			{
+				execution.setVariable("rolledBack", true)
+			}
+			if (rollbackAAI)
+			{
+				boolean succInAAI = execution.getVariable("GENDS_SuccessIndicator")
+				if(!succInAAI){
+					execution.setVariable("rolledBack", false) //both sdnc and aai must be successful to declare rollback Succesful
+					execution.setVariable("rollbackError", "Error deleting service-instance in AAI for rollback")
+					msoLogger.debug("Error deleting service-instance in AAI for rollback", + serviceInstanceId)
+				}
+			}
+			msoLogger.trace("Exit postProcessRequest ")
+
+		} catch (BpmnError e) {
+			msg = "Exception in Create ServiceInstance Rollback postProcessRequest. " + e.getMessage()
+			msoLogger.debug(msg)
+		} catch (Exception ex) {
+			msg = "Exception in Create ServiceInstance Rollback postProcessRequest. " + ex.getMessage()
+			msoLogger.debug(msg)
+		}
+	}
+	
+    
+    public void preProcessForAddResource(DelegateExecution execution) {
+    }
+
+    public void postProcessForAddResource(DelegateExecution execution) {
+    }
+    
+    public void preProcessForDeleteResource(DelegateExecution execution) {
+    }
+
+    public void postProcessForDeleteResource(DelegateExecution execution) {
+    } 
+
+	public void preProcessAAIGET(DelegateExecution execution) {
+	}
+    	
+	public void postProcessAAIGET(DelegateExecution execution) {
+		msoLogger.trace("postProcessAAIGET ")
+		String msg = ""
+
+		try {
+			String serviceInstanceName = execution.getVariable("serviceInstanceName")
+			boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")
+			if(!succInAAI){
+				msoLogger.info("Error getting Service-instance from AAI in postProcessAAIGET", + serviceInstanceName)
+				WorkflowException workflowException = execution.getVariable("WorkflowException")
+				msoLogger.debug("workflowException: " + workflowException)
+				if(workflowException != null){
+					exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+				}
+				else
+				{
+					msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI
+					msoLogger.info(msg)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+				}
+			}
+			else
+			{
+				boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator")
+				if(foundInAAI){
+					String aaiService = execution.getVariable("GENGS_service")
+					if (!isBlank(aaiService) && (utils.nodeExists(aaiService, "resource-version"))) {
+						execution.setVariable("serviceInstanceVersion_n",  utils.getNodeText(aaiService, "resource-version"))
+						msoLogger.info("Found Service-instance in AAI.serviceInstanceName:" + execution.getVariable("serviceInstanceName"))
+					}
+				}
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoCreateServiceInstance.postProcessAAIGET " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit postProcessAAIGET ")
+	}    
+
+	public void preProcessAAIPUT(DelegateExecution execution) {		
+		def method = getClass().getSimpleName() + '.preProcessRequest(' +'execution=' + execution.getId() +')'
+		msoLogger.info("Entered " + method)
+		String msg = ""
+		msoLogger.trace("preProcessAAIPUT ")
+
+		String serviceInstanceVersion = execution.getVariable("serviceInstanceVersion_n")
+//		execution.setVariable("GENPS_serviceResourceVersion", serviceInstanceVersion)
+        
+		//requestDetails.modelInfo.for AAI PUT servieInstanceData
+		//requestDetails.requestInfo. for AAI GET/PUT serviceInstanceData
+		String serviceInstanceName = execution.getVariable("serviceInstanceName")
+		String serviceInstanceId = execution.getVariable("serviceInstanceId")
+		//aai serviceType and Role can be setted as fixed value now.
+		String aaiServiceType = "E2E Service"
+		String aaiServiceRole = "E2E Service"
+		String modelInvariantUuid = execution.getVariable("modelInvariantUuid")
+		String modelUuid = execution.getVariable("model-version-id-original")
+
+		//AAI PUT      
+		AaiUtil aaiUriUtil = new AaiUtil(this)
+		utils.log("INFO","start create aai uri: " + aaiUriUtil, isDebugEnabled)
+		String aai_uri = aaiUriUtil.getBusinessCustomerUri(execution)
+		utils.log("INFO","aai_uri: " + aai_uri, isDebugEnabled)
+		String namespace = aaiUriUtil.getNamespaceFromUri(aai_uri)
+		utils.log("INFO","namespace: " + namespace, isDebugEnabled)
+
+		String serviceInstanceData =
+				"""<service-instance xmlns=\"${namespace}\">
+                    <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+                    <service-instance-name>${MsoUtils.xmlEscape(serviceInstanceName)}</service-instance-name>
+                    <service-type>${MsoUtils.xmlEscape(aaiServiceType)}</service-type>
+                    <service-role>${MsoUtils.xmlEscape(aaiServiceRole)}</service-role>
+                    <resource-version>${MsoUtils.xmlEscape(serviceInstanceVersion)}</resource-version>
+                    <model-invariant-id>${MsoUtils.xmlEscape(modelInvariantUuid)}</model-invariant-id>
+                    <model-version-id>${MsoUtils.xmlEscape(modelUuid)}</model-version-id>   
+				 </service-instance>""".trim()
+
+		execution.setVariable("serviceInstanceData", serviceInstanceData)
+		msoLogger.info("serviceInstanceData: " + serviceInstanceData)
+		msoLogger.debug(serviceInstanceData)
+		msoLogger.info(" aai_uri " + aai_uri + " namespace:" + namespace)
+		msoLogger.info(" 'payload' to update Service Instance in AAI - " + "\n" + serviceInstanceData)
+	
+		msoLogger.info("Exited " + method)
+	}	
+	
+	public void postProcessAAIPUT(DelegateExecution execution) {
+		msoLogger.trace("postProcessAAIPUT ")
+		String msg = ""
+		try {
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			boolean succInAAI = execution.getVariable("GENPS_SuccessIndicator")
+			if(!succInAAI){
+				msoLogger.info("Error putting Service-instance in AAI", + serviceInstanceId)
+				WorkflowException workflowException = execution.getVariable("WorkflowException")
+				msoLogger.debug("workflowException: " + workflowException)
+				if(workflowException != null){
+					exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+				}
+			}
+			else
+			{
+				
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoCreateServiceInstance.postProcessAAIDEL. " + ex.getMessage()
+			msoLogger.info(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit postProcessAAIPUT ")
+	}	
+
+	public void processRollbackException(DelegateExecution execution){
+		msoLogger.trace("processRollbackException ")
+		try{
+			msoLogger.debug("Caught an Exception in DoUpdateE2EServiceInstanceRollback")
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rollbackError", "Caught exception in ServiceInstance Update Rollback")
+			execution.setVariable("WorkflowException", null)
+
+		}catch(BpmnError b){
+			msoLogger.debug("BPMN Error during processRollbackExceptions Method: ")
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during processRollbackExceptions Method: " + e.getMessage())
+		}
+
+		msoLogger.debug(" Exit processRollbackException")
+	}
+
+	public void processRollbackJavaException(DelegateExecution execution){
+		msoLogger.trace("processRollbackJavaException ")
+		try{
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rollbackError", "Caught Java exception in ServiceInstance Update Rollback")
+			msoLogger.debug("Caught Exception in processRollbackJavaException")
+
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception in processRollbackJavaException " + e.getMessage())
+		}
+		msoLogger.trace("Exit processRollbackJavaException ")
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy
new file mode 100644
index 0000000..7272f42
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy
@@ -0,0 +1,1408 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts;
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.NetworkUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.springframework.web.util.UriUtils
+
+import groovy.json.*
+import groovy.xml.XmlUtil
+
+/**
+ * This groovy class supports the <class>DoUpdateNetworkInstance.bpmn</class> process.
+ *
+ */
+public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoUpdateNetworkInstance.class);
+	
+	String Prefix="UPDNETI_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils(this)
+	NetworkUtils networkUtils = new NetworkUtils()
+	SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
+
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>DoUpdateNetworkInstance.bpmn</class> process.
+	 * @param execution
+	 */
+	public InitializeProcessVariables(DelegateExecution execution){
+		/* Initialize all the process variables in this block */
+
+		execution.setVariable(Prefix + "messageId", "")
+		execution.setVariable("BasicAuthHeaderValuePO", "")
+		execution.setVariable("BasicAuthHeaderValueSDNC", "")
+		execution.setVariable(Prefix + "networkRequest", "")
+		execution.setVariable(Prefix + "networkInputs", "")
+		execution.setVariable(Prefix + "networkOutputs", "")
+		execution.setVariable(Prefix + "requestId", "")
+		execution.setVariable(Prefix + "source", "")
+		execution.setVariable(Prefix + "networkId", "")
+
+		execution.setVariable(Prefix + "isPONR", false)    // Point-of-no-return, means, rollback is not needed
+
+		// AAI query Cloud Region
+		execution.setVariable(Prefix + "queryCloudRegionRequest","")
+		execution.setVariable(Prefix + "queryCloudRegionReturnCode","")
+		execution.setVariable(Prefix + "queryCloudRegionResponse","")
+		execution.setVariable(Prefix + "cloudRegionPo","")
+		execution.setVariable(Prefix + "cloudRegionSdnc","")
+		execution.setVariable(Prefix + "isCloudRegionGood", false)
+
+		// AAI query Id
+		execution.setVariable(Prefix + "queryIdAAIRequest","")
+		execution.setVariable(Prefix + "queryIdAAIResponse", "")
+		execution.setVariable(Prefix + "aaiIdReturnCode", "")
+
+		// AAI query vpn binding
+		execution.setVariable(Prefix + "queryVpnBindingAAIRequest","")
+		execution.setVariable(Prefix + "queryVpnBindingAAIResponse", "")
+		execution.setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "")
+		execution.setVariable(Prefix + "vpnBindings", null)
+		execution.setVariable(Prefix + "vpnCount", 0)
+		execution.setVariable(Prefix + "routeCollection", "")
+
+		// AAI query network policy
+		execution.setVariable(Prefix + "queryNetworkPolicyAAIRequest","")
+		execution.setVariable(Prefix + "queryNetworkPolicyAAIResponse", "")
+		execution.setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", "")
+		execution.setVariable(Prefix + "networkPolicyUriList", null)
+		execution.setVariable(Prefix + "networkPolicyCount", 0)
+		execution.setVariable(Prefix + "networkCollection", "")
+
+		// AAI query route table reference
+		execution.setVariable(Prefix + "queryNetworkTableRefAAIRequest","")
+		execution.setVariable(Prefix + "queryNetworkTableRefAAIResponse", "")
+		execution.setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", "")
+		execution.setVariable(Prefix + "networkTableRefUriList", null)
+		execution.setVariable(Prefix + "networkTableRefCount", 0)
+		execution.setVariable(Prefix + "tableRefCollection", "")
+		
+		// AAI requery Id
+		execution.setVariable(Prefix + "requeryIdAAIRequest","")
+		execution.setVariable(Prefix + "requeryIdAAIResponse", "")
+		execution.setVariable(Prefix + "aaiRequeryIdReturnCode", "")
+
+		// AAI update contrail
+		execution.setVariable(Prefix + "updateContrailAAIUrlRequest","")
+		execution.setVariable(Prefix + "updateContrailAAIPayloadRequest","")
+		execution.setVariable(Prefix + "updateContrailAAIResponse", "")
+		execution.setVariable(Prefix + "aaiUpdateContrailReturnCode", "")
+
+		execution.setVariable(Prefix + "updateNetworkRequest", "")
+		execution.setVariable(Prefix + "updateNetworkResponse", "")
+		execution.setVariable(Prefix + "rollbackNetworkRequest", "")
+		execution.setVariable(Prefix + "networkReturnCode", "")
+		execution.setVariable(Prefix + "isNetworkRollbackNeeded", false)
+
+		execution.setVariable(Prefix + "changeAssignSDNCRequest", "")
+		execution.setVariable(Prefix + "changeAssignSDNCResponse", "")
+		execution.setVariable(Prefix + "rollbackSDNCRequest", "")
+		execution.setVariable(Prefix + "sdncReturnCode", "")
+		execution.setVariable(Prefix + "isSdncRollbackNeeded", false)
+		execution.setVariable(Prefix + "sdncResponseSuccess", false)
+
+		execution.setVariable(Prefix + "isVnfBindingPresent", false)
+		execution.setVariable(Prefix + "Success", false)
+		execution.setVariable(Prefix + "serviceInstanceId", "")
+		
+		execution.setVariable(Prefix + "isException", false)
+		
+	}
+
+	// **************************************************
+	//     Pre or Prepare Request Section
+	// **************************************************
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>DoUpdateNetworkInstance.bpmn</class> process.
+	 * @param execution
+	 */
+	public void preProcessRequest (DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside preProcessRequest DoUpdateNetworkInstance Request ")
+
+		try {
+			// initialize flow variables
+			InitializeProcessVariables(execution)
+	
+			// GET Incoming request & validate 3 kinds of format.
+			execution.setVariable("action", "UPDATE")
+			String networkRequest = execution.getVariable("bpmnRequest")
+			if (networkRequest != null) {
+				if (networkRequest.contains("requestDetails")) {
+					// JSON format request is sent, create xml
+					try {
+						def prettyJson = JsonOutput.prettyPrint(networkRequest.toString())
+						msoLogger.debug(" Incoming message formatted . . . : " + '\n' + prettyJson)
+						networkRequest =  vidUtils.createXmlNetworkRequestInfra(execution, networkRequest)
+		
+					} catch (Exception ex) {
+						String dataErrorMessage = " Invalid json format Request - " + ex.getMessage()
+						msoLogger.debug(dataErrorMessage)
+						exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+					}
+				} else {
+					 // XML format request is sent
+				   
+				}
+			} else {
+				// vIPR format request is sent, create xml from individual variables
+				networkRequest = vidUtils.createXmlNetworkRequestInstance(execution)
+			}
+			
+			networkRequest = utils.formatXml(networkRequest)
+			msoLogger.debug(networkRequest)
+			execution.setVariable(Prefix + "networkRequest", networkRequest)
+			msoLogger.debug(" network-request - " + '\n' + networkRequest)
+		
+			// validate 'disableRollback'  (aka, 'suppressRollback')
+			boolean rollbackEnabled = networkUtils.isRollbackEnabled(execution, networkRequest)
+			execution.setVariable(Prefix + "rollbackEnabled", rollbackEnabled)
+			msoLogger.debug(Prefix + "rollbackEnabled - " + rollbackEnabled)
+										
+			String networkInputs = utils.getNodeXml(networkRequest, "network-inputs", false).replace("tag0:","").replace(":tag0","")
+			execution.setVariable(Prefix + "networkInputs", networkInputs)
+			msoLogger.debug(Prefix + "networkInputs - " + '\n' + networkInputs)
+			
+			// prepare messageId
+			String messageId = execution.getVariable(Prefix + "messageId")  // for testing
+			if (messageId == null || messageId == "") {
+				messageId = UUID.randomUUID()
+				msoLogger.debug(" UPDNETI_messageId, random generated: " + messageId)
+			} else {
+				msoLogger.debug(" UPDNETI_messageId, pre-assigned: " + messageId)
+			}
+			execution.setVariable(Prefix + "messageId", messageId)
+			
+			String source = utils.getNodeText(networkRequest, "source")
+			execution.setVariable(Prefix + "source", source)
+			msoLogger.debug(Prefix + "source - " + source)
+			
+			String networkId = ""
+			if (utils.nodeExists(networkRequest, "network-id")) {
+				networkId = utils.getNodeText(networkRequest, "network-id")
+				if (networkId == 'null' || networkId == "") {
+					sendSyncError(execution)
+					// missing value of networkId
+					String dataErrorMessage = "Variable 'network-id' value/element is missing."
+					msoLogger.debug(" Invalid Request - " + dataErrorMessage)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+	
+				}
+			}
+	
+			String lcpCloudRegion = ""
+			if (utils.nodeExists(networkRequest, "aic-cloud-region")) {
+				lcpCloudRegion = utils.getNodeText(networkRequest, "aic-cloud-region")
+				if ((lcpCloudRegion == 'null') || (lcpCloudRegion == "")) {
+					sendSyncError(execution)
+					String dataErrorMessage = "requestDetails has missing 'aic-cloud-region' value/element."
+					msoLogger.debug(" Invalid Request - " + dataErrorMessage)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+				}
+			}
+	
+			String serviceInstanceId = ""
+			if (utils.nodeExists(networkRequest, "service-instance-id")) {
+				serviceInstanceId = utils.getNodeText(networkRequest, "service-instance-id")
+				if ((serviceInstanceId == 'null') || (lcpCloudRegion == "")) {
+					sendSyncError(execution)
+					String dataErrorMessage = "Variable 'serviceInstanceId' value/element is missing."
+					msoLogger.debug(" Invalid Request - " + dataErrorMessage)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+				}
+			}
+			
+			// PO Authorization Info / headers Authorization=
+			String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth",execution)
+			
+
+			try {
+				def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution))
+				execution.setVariable("BasicAuthHeaderValuePO",encodedString)
+				execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
+	
+			} catch (IOException ex) {
+				String exceptionMessage = "Exception Encountered in DoUpdateNetworkInstance, PreProcessRequest() - "
+				String dataErrorMessage = exceptionMessage + " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
+				msoLogger.debug(dataErrorMessage)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+			}
+			
+			// Set variables for Generic Get Sub Flow use
+			execution.setVariable(Prefix + "serviceInstanceId", serviceInstanceId)
+			msoLogger.debug(Prefix + "serviceInstanceId - " + serviceInstanceId)
+	
+			execution.setVariable("GENGS_type", "service-instance")
+			msoLogger.debug("GENGS_type - " + "service-instance")
+			msoLogger.debug(" Url for SDNC adapter: " + UrnPropertiesReader.getVariable("mso.adapters.sdnc.endpoint",execution))
+			
+			String sdncVersion = execution.getVariable("sdncVersion")
+			msoLogger.debug("sdncVersion? : " + sdncVersion)
+			
+			// build 'networkOutputs'			
+			networkId = utils.getNodeText(networkRequest, "network-id")
+			if ((networkId == null) || (networkId == "null")) {
+				networkId = ""
+			}
+			String networkName = utils.getNodeText(networkRequest, "network-name")
+			if ((networkName == null) || (networkName == "null")) {
+				networkName = ""
+			}
+			String networkOutputs =
+			   """<network-outputs>
+	                   <network-id>${MsoUtils.xmlEscape(networkId)}</network-id>
+	                   <network-name>${MsoUtils.xmlEscape(networkName)}</network-name>
+	                 </network-outputs>"""
+			execution.setVariable(Prefix + "networkOutputs", networkOutputs)
+			msoLogger.debug(Prefix + "networkOutputs - " + '\n' + networkOutputs)
+			execution.setVariable(Prefix + "networkId", networkId)
+			execution.setVariable(Prefix + "networkName", networkName)
+		
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex){
+			sendSyncError(execution)
+			 // caught exception
+			String exceptionMessage = "Exception Encountered in DoUpdateNetworkInstance, PreProcessRequest() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+	}
+
+	public void callRESTQueryAAICloudRegion (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.debug(" ***** Inside callRESTQueryAAICloudRegion of DoUpdateNetworkInstance ***** " )
+
+		try {
+			String networkInputs  = execution.getVariable(Prefix + "networkInputs")
+			String cloudRegion = utils.getNodeText(networkInputs, "aic-cloud-region")
+			cloudRegion = UriUtils.encode(cloudRegion,"UTF-8")
+
+			// Prepare AA&I url
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUtil = new AaiUtil(this)
+			String aai_uri = aaiUtil.getCloudInfrastructureCloudRegionUri(execution)
+			String queryCloudRegionRequest = "${aai_endpoint}${aai_uri}/" + cloudRegion
+			msoLogger.debug(queryCloudRegionRequest)
+			execution.setVariable(Prefix + "queryCloudRegionRequest", queryCloudRegionRequest)
+			msoLogger.debug(" UPDNETI_queryCloudRegionRequest - " + "\n" + queryCloudRegionRequest)
+
+			String cloudRegionPo = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "PO", cloudRegion)
+			String cloudRegionSdnc = aaiUtil.getAAICloudReqion(execution,  queryCloudRegionRequest, "SDNC", cloudRegion)
+
+			if ((cloudRegionPo != "ERROR") && (cloudRegionSdnc != "ERROR")) {
+				execution.setVariable(Prefix + "cloudRegionPo", cloudRegionPo)
+				execution.setVariable(Prefix + "cloudRegionSdnc", cloudRegionSdnc)
+				execution.setVariable(Prefix + "isCloudRegionGood", true)
+
+			} else {
+			    String dataErrorMessage = "QueryAAICloudRegion Unsuccessful. Return Code: " + execution.getVariable(Prefix + "queryCloudRegionReturnCode")
+			    msoLogger.debug(dataErrorMessage)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+			}
+
+			msoLogger.debug(" is Cloud Region Good: " + execution.getVariable(Prefix + "isCloudRegionGood"))
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			// try error
+			String exceptionMessage = "Bpmn error encountered in DoUpdateNetworkInstance flow - callRESTQueryAAICloudRegion() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void callRESTQueryAAINetworkId(DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.debug(" ***** Inside callRESTQueryAAINetworkId of DoUpdateNetworkInstance ***** " )
+
+		try {
+			// get variables
+			String networkRequest = execution.getVariable(Prefix + "networkRequest")
+			String networkId   = utils.getNodeText(networkRequest, "network-id")
+			networkId = UriUtils.encode(networkId,"UTF-8")
+			execution.setVariable(Prefix + "networkId", networkId)
+
+			// Prepare AA&I url
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
+			String queryIdAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all"
+			msoLogger.debug(queryIdAAIRequest)
+			execution.setVariable(Prefix + "queryIdAAIRequest", queryIdAAIRequest)
+			msoLogger.debug(Prefix + "queryIdAAIRequest - " + "\n" + queryIdAAIRequest)
+
+			APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryIdAAIRequest)
+			String returnCode = response.getStatusCode()
+			execution.setVariable(Prefix + "aaiIdReturnCode", returnCode)
+			msoLogger.debug(" ***** AAI Response Code  : " + returnCode)
+			
+			String aaiResponseAsString = response.getResponseBodyAsString()
+
+			if (returnCode=='200') {
+				msoLogger.debug(aaiResponseAsString)
+				execution.setVariable(Prefix + "queryIdAAIResponse", aaiResponseAsString)
+				msoLogger.debug(" QueryAAINetworkId Success REST Response - " + "\n" + aaiResponseAsString)
+
+			} else {
+				if (returnCode=='404') {
+					String dataErrorMessage = "Response Error from QueryAAINetworkId is 404 (Not Found)."
+					msoLogger.debug(" AAI Query Failed. " + dataErrorMessage)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+				} else {
+				   if (aaiResponseAsString.contains("RESTFault")) {
+					   WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+					   execution.setVariable("WorkflowException", exceptionObject)
+					   throw new BpmnError("MSOWorkflowException")
+
+				   } else {
+							// aai all errors
+							String dataErrorMessage = "Unexpected Response from QueryAAINetworkId - " + returnCode
+							msoLogger.debug("Unexpected Response from QueryAAINetworkId - " + dataErrorMessage)
+							exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+				  }
+				}
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DoUpdateNetworkInstance flow. callRESTQueryAAINetworkId() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void callRESTReQueryAAINetworkId(DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.debug(" ***** Inside callRESTReQueryAAINetworkId of DoUpdateNetworkInstance ***** " )
+
+		try {
+			// get variables
+			String networkRequest = execution.getVariable(Prefix + "networkRequest")
+			String networkId   = utils.getNodeText(networkRequest, "network-id")
+			networkId = UriUtils.encode(networkId,"UTF-8")
+
+			// Prepare AA&I url
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
+			String requeryIdAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all"
+			msoLogger.debug(requeryIdAAIRequest)
+			execution.setVariable(Prefix + "requeryIdAAIRequest", requeryIdAAIRequest)
+			msoLogger.debug(" UPDNETI_requeryIdAAIRequest - " + "\n" + requeryIdAAIRequest)
+
+			APIResponse response = aaiUriUtil.executeAAIGetCall(execution, requeryIdAAIRequest)
+			String returnCode = response.getStatusCode()
+			execution.setVariable(Prefix + "aaiRequeryIdReturnCode", returnCode)
+			msoLogger.debug(" ***** AAI ReQuery Response Code  : " + returnCode)
+
+			String aaiResponseAsString = response.getResponseBodyAsString()
+
+			if (returnCode=='200') {
+				msoLogger.debug(aaiResponseAsString)
+				execution.setVariable(Prefix + "requeryIdAAIResponse", aaiResponseAsString)
+				msoLogger.debug(" ReQueryAAINetworkId Success REST Response - " + "\n" + aaiResponseAsString)
+
+				String netId = utils.getNodeText(aaiResponseAsString, "network-id")
+				String netName = utils.getNodeText(aaiResponseAsString, "network-name")
+				String networkOutputs =
+				   """<network-outputs>
+                   <network-id>${MsoUtils.xmlEscape(netId)}</network-id>			
+                   <network-name>${MsoUtils.xmlEscape(netName)}</network-name>
+                 </network-outputs>"""
+				execution.setVariable(Prefix + "networkOutputs", networkOutputs)
+				msoLogger.debug(" networkOutputs - " + '\n' + networkOutputs)
+				
+			} else {
+				if (returnCode=='404') {
+					String dataErrorMessage = "Response Error from ReQueryAAINetworkId is 404 (Not Found)."
+					msoLogger.debug(" AAI ReQuery Failed. - " + dataErrorMessage)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+				} else {
+				   if (aaiResponseAsString.contains("RESTFault")) {
+					   WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+					   execution.setVariable("WorkflowException", exceptionObject)
+					   throw new BpmnError("MSOWorkflowException")
+
+					   } else {
+							// aai all errors
+							String dataErrorMessage = "Unexpected Response from ReQueryAAINetworkId - " + returnCode
+							msoLogger.debug(dataErrorMessage)
+							exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+					}
+				}
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DoUpdateNetworkInstance flow. callRESTReQueryAAINetworkId() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void callRESTQueryAAINetworkVpnBinding(DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.debug(" ***** Inside callRESTQueryAAINetworkVpnBinding of DoUpdateNetworkInstance ***** " )
+
+		try {
+
+			// get variables
+			String queryIdAAIResponse   = execution.getVariable(Prefix + "requeryIdAAIResponse").replace('<?xml version="1.0" encoding="UTF-8"?>', "")
+			String relationship = networkUtils.getFirstNodeXml(queryIdAAIResponse, "relationship-list").trim().replace("tag0:","").replace(":tag0","")
+			msoLogger.debug(" relationship - " + relationship)
+
+			// Check if Vnf Binding is present, then build a List of vnfBinding
+			List vpnBindingUri = networkUtils.getVnfBindingObject(relationship)
+			int vpnCount = vpnBindingUri.size()
+			execution.setVariable(Prefix + "vpnCount", vpnCount)
+			msoLogger.debug(" UPDNETI_vpnCount - " + vpnCount)
+
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+
+			if (vpnCount > 0) {
+				execution.setVariable(Prefix + "vpnBindings", vpnBindingUri)
+				msoLogger.debug(" vpnBindingUri List - " + vpnBindingUri)
+
+				String routeTargets = ""
+				// AII loop call using list vpnBindings
+				for (i in 0..vpnBindingUri.size()-1) {
+
+					int counting = i+1
+
+					// prepare url using vpnBinding
+					String queryVpnBindingAAIRequest = ""
+					String aai_uri = aaiUriUtil.getNetworkVpnBindingUri(execution)
+
+					// Note: By default, the vpnBinding url is found in 'related-link' of the response,
+					//       so, the default in URN mappings for this is set to "" (ie, space), unless forced to use the URN mapping.
+					if (aai_uri == null || aai_uri == "") {
+						// using value of 'related-link' from response
+						if (vpnBindingUri[i].charAt(vpnBindingUri[i].length()-1) == '/') {
+						    queryVpnBindingAAIRequest = "${aai_endpoint}" + vpnBindingUri[i].substring(0, vpnBindingUri[i].length()-1) + "?depth=all"
+						} else {
+						    queryVpnBindingAAIRequest = "${aai_endpoint}" + vpnBindingUri[i] + "?depth=all"
+						}
+
+					} else {
+					    // using uri value in URN mapping
+						String vpnBindingId = vpnBindingUri[i].substring(vpnBindingUri[i].indexOf("/vpn-binding/")+13, vpnBindingUri[i].length())
+						if (vpnBindingId.charAt(vpnBindingId.length()-1) == '/') {
+							vpnBindingId = vpnBindingId.substring(0, vpnBindingId.length()-1)
+						}
+					    queryVpnBindingAAIRequest = "${aai_endpoint}${aai_uri}/" + vpnBindingId + "?depth=all"
+					}
+
+					msoLogger.debug(queryVpnBindingAAIRequest)
+					execution.setVariable(Prefix + "queryVpnBindingAAIRequest", queryVpnBindingAAIRequest)
+					msoLogger.debug(" UPDNETI_queryVpnBindingAAIRequest, , vpnBinding #" + counting + " : " + "\n" + queryVpnBindingAAIRequest)
+
+					APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryVpnBindingAAIRequest)
+					String returnCode = response.getStatusCode()
+					execution.setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", returnCode)
+					msoLogger.debug(" ***** AAI query vpn binding Response Code, vpnBinding #" + counting + " : " + returnCode)
+
+					String aaiResponseAsString = response.getResponseBodyAsString()
+
+					if (returnCode=='200') {
+						msoLogger.debug(aaiResponseAsString)
+						execution.setVariable(Prefix + "queryVpnBindingAAIResponse", aaiResponseAsString)
+						msoLogger.debug(" AAI Query Vpn Binding Success REST Response, , vpnBinding #" + counting + " : " + "\n" + aaiResponseAsString)
+
+						String routeTarget = ""
+						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.getNodeText(XmlUtil.serialize(aaiRouteTarget[j]), "global-route-target")
+								routeRole  = utils.getNodeText(XmlUtil.serialize(aaiRouteTarget[j]), "route-target-role")
+								routeTargets += "<routeTargets>" + '\n' +
+								                " <routeTarget>" + routeTarget + "</routeTarget>" + '\n' +
+												" <routeTargetRole>" + routeRole + "</routeTargetRole>" + '\n' +
+												"</routeTargets>" + '\n'
+							}
+						}
+
+					} else {
+						if (returnCode=='404') {
+							String dataErrorMessage = "Response Error from AAINetworkVpnBinding is 404 (Not Found)."
+							msoLogger.debug(dataErrorMessage)
+							exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+						} else {
+						   if (aaiResponseAsString.contains("RESTFault")) {
+							   WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+							   execution.setVariable("WorkflowException", exceptionObject)
+							   throw new BpmnError("MSOWorkflowException")
+
+							   } else {
+									// aai all errors
+									String dataErrorMessage = " Unexpected Response from AAINetworkVpnBinding - " + returnCode
+									msoLogger.debug(dataErrorMessage)
+									exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+							  }
+						}
+					}
+
+				} // end loop
+
+				execution.setVariable(Prefix + "routeCollection", routeTargets)
+				msoLogger.debug(" UPDNETI_routeCollection - " + '\n' + routeTargets)
+
+			} else {
+				// reset return code to success
+				execution.setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "200")
+				String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
+				String schemaVersion = aaiUriUtil.getNamespaceFromUri(execution, aai_uri)
+			    String aaiStubResponse =
+					"""	<rest:payload contentType="text/xml" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd">
+							<vpn-binding xmlns="${schemaVersion}">
+						      <global-route-target/>
+							</vpn-binding>
+						</rest:payload>"""
+				String aaiStubResponseAsXml = utils.formatXml(aaiStubResponse)
+				execution.setVariable(Prefix + "queryVpnBindingAAIResponse", aaiStubResponseAsXml)
+				execution.setVariable(Prefix + "routeCollection", "<routeTargets/>")
+				msoLogger.debug(" No vpnBinding, using this stub as response - " + '\n' + aaiStubResponseAsXml)
+
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DoUpdateNetworkInstance flow. callRESTQueryAAINetworkVpnBinding() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void callRESTQueryAAINetworkPolicy(DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.debug(" ***** Inside callRESTQueryAAINetworkPolicy of DoUpdateNetworkInstance ***** " )
+
+		try {
+			// get variables
+			String queryIdAAIResponse   = execution.getVariable(Prefix + "requeryIdAAIResponse").replace('<?xml version="1.0" encoding="UTF-8"?>', "")
+			String relationship = networkUtils.getFirstNodeXml(queryIdAAIResponse, "relationship-list").trim().replace("tag0:","").replace(":tag0","")
+			msoLogger.debug(" relationship - " + relationship)
+
+			// Check if Network Policy is present, then build a List of network policy
+			List networkPolicyUriList = networkUtils.getNetworkPolicyObject(relationship)
+			int networkPolicyCount = networkPolicyUriList.size()
+			execution.setVariable(Prefix + "networkPolicyCount", networkPolicyCount)
+			msoLogger.debug(" UPDNETI_networkPolicyCount - " + networkPolicyCount)
+
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+
+			if (networkPolicyCount > 0) {
+				execution.setVariable(Prefix + "networkPolicyUriList", networkPolicyUriList)
+				msoLogger.debug(" networkPolicyUri List - " + networkPolicyUriList)
+
+				String networkPolicies = ""
+				// AII loop call using list vpnBindings
+				for (i in 0..networkPolicyUriList.size()-1) {
+
+					int counting = i+1
+
+					// prepare url using vpnBinding
+					String queryNetworkPolicyAAIRequest = ""
+
+					String aai_uri = aaiUriUtil.getNetworkPolicyUri(execution)
+
+					// Note: By default, the network policy url is found in 'related-link' of the response,
+					//       so, the default in URN mappings for this is set to "" (ie, space), unless forced to use the URN mapping.
+					if (aai_uri == null || aai_uri == "") {
+						// using value of 'related-link' from response
+						if (networkPolicyUriList[i].charAt(networkPolicyUriList[i].length()-1) == '/') {
+							queryNetworkPolicyAAIRequest = "${aai_endpoint}" + networkPolicyUriList[i].substring(0, networkPolicyUriList[i].length()-1) + "?depth=all"
+						} else {
+							queryNetworkPolicyAAIRequest = "${aai_endpoint}" + networkPolicyUriList[i] + "?depth=all"
+						}
+					} else {
+						// using uri value in URN mapping
+						String networkPolicyId = networkPolicyUriList[i].substring(networkPolicyUriList[i].indexOf("/network-policy/")+16, networkPolicyUriList[i].length())
+						println " networkPolicyId - " + networkPolicyId
+						if (networkPolicyId.charAt(networkPolicyId.length()-1) == '/') {
+							networkPolicyId = networkPolicyId.substring(0, networkPolicyId.length()-1)
+						}
+						queryNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + networkPolicyId + "?depth=all"
+
+					}
+
+
+					msoLogger.debug(queryNetworkPolicyAAIRequest)
+					execution.setVariable(Prefix + "queryNetworkPolicyAAIRequest", queryNetworkPolicyAAIRequest)
+					msoLogger.debug(" UPDNETI_queryNetworkPolicyAAIRequest, , NetworkPolicy #" + counting + " : " + "\n" + queryNetworkPolicyAAIRequest)
+
+					APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryNetworkPolicyAAIRequest)
+					String returnCode = response.getStatusCode()
+					execution.setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", returnCode)
+					msoLogger.debug(" ***** AAI query network policy Response Code, NetworkPolicy #" + counting + " : " + returnCode)
+
+					String aaiResponseAsString = response.getResponseBodyAsString()
+
+					if (returnCode=='200') {
+						msoLogger.debug(aaiResponseAsString)
+						execution.setVariable(Prefix + "queryNetworkPolicyAAIResponse", aaiResponseAsString)
+						msoLogger.debug(" QueryAAINetworkPolicy Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsString)
+
+						String networkPolicy = ""
+						if (utils.nodeExists(aaiResponseAsString, "network-policy-fqdn")) {
+							networkPolicy  = utils.getNodeText(aaiResponseAsString, "network-policy-fqdn")
+							networkPolicies += "<policyFqdns>" + networkPolicy + "</policyFqdns>" + '\n'
+						}
+
+					} else {
+						if (returnCode=='404') {
+							String dataErrorMessage = "Response Error from QueryAAINetworkPolicy is 404 (Not Found)."
+							msoLogger.debug(dataErrorMessage)
+							exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+						} else {
+						   if (aaiResponseAsString.contains("RESTFault")) {
+							   WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+							   execution.setVariable("WorkflowException", exceptionObject)
+							   throw new BpmnError("MSOWorkflowException")
+
+							   } else {
+									// aai all errors
+									String dataErrorMessage = "Unexpected Response from QueryAAINetworkPolicy - " + returnCode
+									msoLogger.debug(dataErrorMessage)
+									exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+							  }
+						}
+					}
+
+				} // end loop
+
+				execution.setVariable(Prefix + "networkCollection", networkPolicies)
+				msoLogger.debug(" UPDNETI_networkCollection - " + '\n' + networkPolicies)
+
+			} else {
+				// reset return code to success
+				execution.setVariable(Prefix + "aaiQqueryNetworkPolicyReturnCode", "200")
+				String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
+				String schemaVersion = aaiUriUtil.getNamespaceFromUri(execution, aai_uri)
+				String aaiStubResponse =
+					"""	<rest:payload contentType="text/xml" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd">
+							<network-policy xmlns="${schemaVersion}">
+							  <network-policy-fqdn/>
+                            </network-policy>
+						</rest:payload>"""
+				String aaiStubResponseAsXml = utils.formatXml(aaiStubResponse)
+				execution.setVariable(Prefix + "queryNetworkPolicyAAIResponse", aaiStubResponseAsXml)
+				execution.setVariable(Prefix + "networkCollection", "<policyFqdns/>")
+				msoLogger.debug(" No net policies, using this stub as response - " + '\n' + aaiStubResponseAsXml)
+
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DoUpdateNetworkInstance flow. callRESTQueryAAINetworkPolicy() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void callRESTQueryAAINetworkTableRef(DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.debug(" ***** Inside callRESTQueryAAINetworkTableRef of DoUpdateNetworkInstance ***** " )
+
+		try {
+			// get variables
+			String queryIdAAIResponse   = execution.getVariable(Prefix + "requeryIdAAIResponse").replace('<?xml version="1.0" encoding="UTF-8"?>', "")
+			String relationship = networkUtils.getFirstNodeXml(queryIdAAIResponse, "relationship-list").trim().replace("tag0:","").replace(":tag0","")
+			msoLogger.debug(" relationship - " + relationship)
+
+			// Check if Network TableREf is present, then build a List of network policy
+			List networkTableRefUriList = networkUtils.getNetworkTableRefObject(relationship)
+			int networkTableRefCount = networkTableRefUriList.size()
+			execution.setVariable(Prefix + "networkTableRefCount", networkTableRefCount)
+			msoLogger.debug(" UPDNETI_networkTableRefCount - " + networkTableRefCount)
+
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+
+			if (networkTableRefCount > 0) {
+				execution.setVariable(Prefix + "networkTableRefUriList", networkTableRefUriList)
+				msoLogger.debug(" networkTableRefUri List - " + networkTableRefUriList)
+
+				// AII loop call using list vpnBindings
+				String networkTableRefs = ""
+				for (i in 0..networkTableRefUriList.size()-1) {
+
+					int counting = i+1
+
+					// prepare url using tableRef
+					String queryNetworkTableRefAAIRequest = ""
+
+					String aai_uri = aaiUriUtil.getNetworkTableReferencesUri(execution)
+
+					// Note: By default, the network policy url is found in 'related-link' of the response,
+					//       so, the default in URN mappings for this is set to "" (ie, space), unless forced to use the URN mapping.
+					if (aai_uri == null || aai_uri == "") {
+						// using value of 'related-link' from response
+						if (networkTableRefUriList[i].charAt(networkTableRefUriList[i].length()-1) == '/') {
+							queryNetworkTableRefAAIRequest = "${aai_endpoint}" + networkTableRefUriList[i].substring(0, networkTableRefUriList[i].length()-1) + "?depth=all"
+						} else {
+							queryNetworkTableRefAAIRequest = "${aai_endpoint}" + networkTableRefUriList[i] + "?depth=all"
+						}
+					} else {
+						// using uri value in URN mapping
+						String networkTableRefId = networkTableRefUriList[i].substring(networkTableRefUriList[i].indexOf("/route-table-reference/")+23, networkTableRefUriList[i].length())
+
+						if (networkTableRefId.charAt(networkTableRefId.length()-1) == '/') {
+							networkTableRefId = networkTableRefId.substring(0, networkTableRefId.length()-1)
+						}
+						queryNetworkTableRefAAIRequest = "${aai_endpoint}${aai_uri}/" + networkTableRefId + "?depth=all"
+
+					}
+
+
+					msoLogger.debug(queryNetworkTableRefAAIRequest)
+					execution.setVariable(Prefix + "queryNetworkTableRefAAIRequest", queryNetworkTableRefAAIRequest)
+					msoLogger.debug(" UPDNETI_queryNetworkTableRefAAIRequest, , NetworkTableRef #" + counting + " : " + "\n" + queryNetworkTableRefAAIRequest)
+
+					APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryNetworkTableRefAAIRequest)
+					String returnCode = response.getStatusCode()
+					execution.setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", returnCode)
+					msoLogger.debug(" ***** AAI query network Table Reference Response Code, NetworkTableRef #" + counting + " : " + returnCode)
+
+					String aaiResponseAsString = response.getResponseBodyAsString()
+
+					if (returnCode=='200') {
+						msoLogger.debug(aaiResponseAsString)
+						execution.setVariable(Prefix + "queryNetworkTableRefAAIResponse", aaiResponseAsString)
+						msoLogger.debug(" QueryAAINetworkTableRef Success REST Response, , NetworkTableRef #" + counting + " : " + "\n" + aaiResponseAsString)
+
+						String networkTableRef = ""
+						if (utils.nodeExists(aaiResponseAsString, "route-table-reference-fqdn")) {
+							networkTableRef  = utils.getNodeText(aaiResponseAsString, "route-table-reference-fqdn")
+							networkTableRefs += "<routeTableFqdns>" + networkTableRef + "</routeTableFqdns>" + '\n'
+						}
+
+					} else {
+						if (returnCode=='404') {
+							String dataErrorMessage = "Response Error from QueryAAINetworkTableRef is 404 (Not Found)."
+							msoLogger.debug(dataErrorMessage)
+							exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+							
+						} else {
+						   if (aaiResponseAsString.contains("RESTFault")) {
+							   WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+							   execution.setVariable("WorkflowException", exceptionObject)
+							   throw new BpmnError("MSOWorkflowException")
+		
+							   } else {
+									// aai all errors
+									String dataErrorMessage = "Unexpected Response from QueryAAINetworkTableRef - " + returnCode
+									msoLogger.debug(dataErrorMessage)
+									exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+							  }
+						}
+					}
+
+				} // end loop
+
+				execution.setVariable(Prefix + "tableRefCollection", networkTableRefs)
+				msoLogger.debug(" UPDNETI_tableRefCollection - " + '\n' + networkTableRefs)
+
+			} else {
+				// reset return code to success
+				execution.setVariable(Prefix + "aaiQqueryNetworkTableRefReturnCode", "200")
+				String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
+				String schemaVersion = aaiUriUtil.getNamespaceFromUri(execution, aai_uri)
+				String aaiStubResponse =
+					"""	<rest:payload contentType="text/xml" xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd">
+							<route-table-references xmlns="${schemaVersion}">
+							  <route-table-reference-fqdn/>
+                            </route-table-references>
+						</rest:payload>"""
+				String aaiStubResponseAsXml = utils.formatXml(aaiStubResponse)
+				execution.setVariable(Prefix + "queryNetworkTableRefAAIResponse", aaiStubResponseAsXml)
+				execution.setVariable(Prefix + "tableRefCollection", "<routeTableFqdns/>")
+				msoLogger.debug(" No net table references, using this stub as response - " + '\n' + aaiStubResponseAsXml)
+
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+			
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DoUpdateNetworkInstance flow. callRESTQueryAAINetworkTableRef() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+	
+	public void callRESTUpdateContrailAAINetwork(DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.debug(" ***** Inside callRESTUpdateContrailAAINetwork of DoUpdateNetworkInstance ***** " )
+
+		try {
+			// get variables
+			String networkRequest = execution.getVariable(Prefix + "networkRequest")
+			String networkId   = utils.getNodeText(networkRequest, "network-id")
+			networkId = UriUtils.encode(networkId,"UTF-8")
+			String requeryIdAAIResponse   = execution.getVariable(Prefix + "requeryIdAAIResponse")
+			String updateNetworkResponse   = execution.getVariable(Prefix + "updateNetworkResponse")
+
+			// Prepare url
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
+			String updateContrailAAIUrlRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all"
+
+			msoLogger.debug(updateContrailAAIUrlRequest)
+			execution.setVariable(Prefix + "updateContrailAAIUrlRequest", updateContrailAAIUrlRequest)
+			msoLogger.debug(" UPDNETI_updateContrailAAIUrlRequest - " + "\n" + updateContrailAAIUrlRequest)
+
+			//Prepare payload (PUT)
+			String schemaVersion = aaiUriUtil.getNamespaceFromUri(execution, aai_uri)
+			String payload = networkUtils.ContrailNetworkCreatedUpdate(requeryIdAAIResponse, updateNetworkResponse, schemaVersion)
+			String payloadXml = utils.formatXml(payload)
+			msoLogger.debug(payloadXml)
+			execution.setVariable(Prefix + "updateContrailAAIPayloadRequest", payloadXml)
+			msoLogger.debug(" 'payload' to Update Contrail - " + "\n" + payloadXml)
+
+			APIResponse response = aaiUriUtil.executeAAIPutCall(execution, updateContrailAAIUrlRequest, payload)
+			String returnCode = response.getStatusCode()
+			String aaiUpdateContrailResponseAsString = response.getResponseBodyAsString()
+			
+			execution.setVariable(Prefix + "aaiUpdateContrailReturnCode", returnCode)
+			msoLogger.debug(" ***** AAI Update Contrail Response Code  : " + returnCode)
+
+
+			if (returnCode=='200') {
+				msoLogger.debug(aaiUpdateContrailResponseAsString)
+				execution.setVariable(Prefix + "updateContrailAAIResponse", aaiUpdateContrailResponseAsString)
+				msoLogger.debug(" AAI Update Contrail Success REST Response - " + "\n" + aaiUpdateContrailResponseAsString)
+				// Point-of-no-return is set to false, rollback not needed.
+				execution.setVariable(Prefix + "isPONR", true)
+
+			} else {
+				if (returnCode=='404') {
+					String dataErrorMessage = " Response Error from UpdateContrailAAINetwork is 404 (Not Found)."
+					msoLogger.debug(dataErrorMessage)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+				} else {
+				   if (aaiUpdateContrailResponseAsString.contains("RESTFault")) {
+					   WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiUpdateContrailResponseAsString, execution)
+					   execution.setVariable("WorkflowException", exceptionObject)
+					   throw new BpmnError("MSOWorkflowException")
+
+					   } else {
+							// aai all errors
+							String errorMessage = "Unexpected Response from UpdateContrailAAINetwork - " + returnCode
+							msoLogger.debug(errorMessage)
+							exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
+					  }
+				}
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DoUpdateNetworkInstance flow. callRESTUpdateContrailAAINetwork() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void prepareUpdateNetworkRequest (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside prepareUpdateNetworkRequest of DoUpdateNetworkInstance ")
+
+		try {
+
+			// get variables
+			String requestId = execution.getVariable(Prefix + "requestId")
+			String messageId = execution.getVariable(Prefix + "messageId")
+			String source    = execution.getVariable(Prefix + "source")
+
+			String requestInput = execution.getVariable(Prefix + "networkRequest")
+			String queryIdResponse = execution.getVariable(Prefix + "requeryIdAAIResponse")
+			String cloudRegionId = execution.getVariable(Prefix + "cloudRegionPo")
+			String backoutOnFailure = execution.getVariable(Prefix + "rollbackEnabled")
+			
+			// Prepare Network request
+			String routeCollection = execution.getVariable(Prefix + "routeCollection")
+			String policyCollection = execution.getVariable(Prefix + "networkCollection")
+			String tableCollection = execution.getVariable(Prefix + "tableRefCollection")
+			String updateNetworkRequest = networkUtils.UpdateNetworkRequestV2(execution, requestId, messageId, requestInput, queryIdResponse, routeCollection, policyCollection, tableCollection, cloudRegionId, backoutOnFailure, source )
+			// Format Response
+			String buildUpdateNetworkRequestAsString = utils.formatXml(updateNetworkRequest)
+			buildUpdateNetworkRequestAsString = buildUpdateNetworkRequestAsString.replace(":w1aac13n0", "").replace("w1aac13n0:", "")
+			msoLogger.debug(buildUpdateNetworkRequestAsString)
+
+			execution.setVariable(Prefix + "updateNetworkRequest", buildUpdateNetworkRequestAsString)
+			msoLogger.debug(" UPDNETI_updateNetworkRequest - " + "\n" +  buildUpdateNetworkRequestAsString)
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoUpdateNetworkInstance flow. prepareUpdateNetworkRequest() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void prepareSDNCRequest (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside prepareSDNCRequest of DoUpdateNetworkInstance ")
+
+		try {
+			// get variables
+			String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			String updateNetworkInput = execution.getVariable(Prefix + "networkRequest")
+			String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
+
+			String networkId = ""
+			if (utils.nodeExists(updateNetworkInput, "network-id")) {
+			   networkId = utils.getNodeText(updateNetworkInput, "network-id")
+			}
+			if (networkId == null) {networkId = ""}
+
+			String serviceInstanceId = utils.getNodeText(updateNetworkInput, "service-instance-id")
+			
+			String queryAAIResponse = execution.getVariable(Prefix + "queryIdAAIResponse")
+
+			// 1. prepare assign topology via SDNC Adapter SUBFLOW call
+ 		   	String sndcTopologyCreateRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, updateNetworkInput, serviceInstanceId, sdncCallback, "changeassign", "NetworkActivateRequest", cloudRegionId, networkId, queryAAIResponse, null)
+
+			String sndcTopologyUpdateRequesAsString = utils.formatXml(sndcTopologyCreateRequest)
+			msoLogger.debug(sndcTopologyUpdateRequesAsString)
+			execution.setVariable(Prefix + "changeAssignSDNCRequest", sndcTopologyUpdateRequesAsString)
+			msoLogger.debug(" UPDNETI_changeAssignSDNCRequest - " + "\n" +  sndcTopologyUpdateRequesAsString)
+
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoUpdateNetworkInstance flow. prepareSDNCRequest() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	
+
+
+	// **************************************************
+	//     Post or Validate Response Section
+	// **************************************************
+
+	public void validateUpdateNetworkResponse (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside validateUpdateNetworkResponse of DoUpdateNetworkInstance ")
+
+		try {
+			String returnCode = execution.getVariable(Prefix + "networkReturnCode")
+			String networkResponse = execution.getVariable(Prefix + "updateNetworkResponse")
+			if (networkResponse==null)	{
+				networkResponse="" // reset
+			}
+
+			msoLogger.debug(" Network Adapter update responseCode: " + returnCode)
+
+			String errorMessage = ""
+			if (returnCode == "200") {
+				execution.setVariable(Prefix + "isNetworkRollbackNeeded", true)
+				msoLogger.debug(networkResponse)
+				execution.setVariable(Prefix + "updateNetworkResponse", networkResponse)
+				msoLogger.debug(" Network Adapter update Success Response - " + "\n" + networkResponse)
+
+				// prepare rollback data
+				String rollbackData = utils.getNodeXml(networkResponse, "rollback", false).replace("tag0:","").replace(":tag0","")
+				rollbackData = rollbackData.replace("rollback>", "networkRollback>")
+  				String rollbackNetwork =
+					"""<rollbackNetworkRequest>
+							${rollbackData}
+						</rollbackNetworkRequest>"""
+				String rollbackNetworkXml = utils.formatXml(rollbackNetwork)
+				execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkXml)
+				msoLogger.debug(" Network Adapter rollback data - " + "\n" + rollbackNetworkXml)
+
+			} else { // network error
+			   if (returnCode.toInteger() > 399 && returnCode.toInteger() < 600) {   //4xx, 5xx
+				   if (networkResponse.contains("updateNetworkError")) {
+					   networkResponse = networkResponse.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', '')
+					   errorMessage = utils.getNodeText(networkResponse, "message")
+					   errorMessage  = "Received error from Network Adapter: " + errorMessage
+					   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
+
+				   } else { // CatchAll exception
+				   	   if (returnCode == "500") {
+						   errorMessage = "JBWEB000065: HTTP Status 500."
+				       } else {
+					       errorMessage = "Return code is " + returnCode
+				       }
+					   errorMessage  = "Received error from Network Adapter: " + errorMessage
+					   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
+
+				   }
+
+			   } else { // CatchAll exception
+				   String dataErrorMessage  = "Received error from Network Adapter. Return code is: " + returnCode
+				   exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+			   }
+
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoUpdateNetworkInstance flow. validateUpdateNetworkResponse() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+
+	}
+
+	public void validateSDNCResponse (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside validateSDNCResponse of DoUpdateNetworkInstance ")
+
+		String response = execution.getVariable(Prefix + "changeAssignSDNCResponse")
+		WorkflowException workflowException = null
+		try {
+			workflowException = execution.getVariable(Prefix + "WorkflowException")
+			//execution.setVariable("WorkflowException", workflowException)
+		} catch (Exception ex) {
+			msoLogger.debug(" Sdnc 'WorkflowException' object is empty or null. ")
+		}
+
+		boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+
+		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+		sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+		// reset variable
+		String changeAssignSDNCResponseDecodeXml = execution.getVariable(Prefix + "changeAssignSDNCResponse")
+		changeAssignSDNCResponseDecodeXml = changeAssignSDNCResponseDecodeXml.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
+		execution.setVariable(Prefix + "changeAssignSDNCResponse", changeAssignSDNCResponseDecodeXml)
+
+		if (execution.getVariable(Prefix + "sdncResponseSuccess") == true) {  // from sdnc util, prefix+'sdncResponseSuccess'
+			execution.setVariable(Prefix + "isSdncRollbackNeeded", true)
+			msoLogger.debug("Successfully Validated SDNC Response")
+
+		} else {
+			msoLogger.debug("Did NOT Successfully Validated SDNC Response")
+			throw new BpmnError("MSOWorkflowException")
+		}
+
+	}
+
+
+	public void postProcessResponse (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside postProcessResponse of DoUpdateNetworkInstance ")
+
+		try {
+			msoLogger.debug(" ***** Is Exception Encountered (isException)? : " + execution.getVariable(Prefix + "isException"))
+			if (execution.getVariable(Prefix + "isException") == false) {
+				// set rollback data
+				execution.setVariable("orchestrationStatus", "")
+				execution.setVariable("networkId", execution.getVariable(Prefix + "networkId"))
+				execution.setVariable("networkName", execution.getVariable(Prefix + "networkName"))
+				prepareSuccessRollbackData(execution) // populate rollbackData
+				execution.setVariable("WorkflowException", null)
+				execution.setVariable(Prefix + "Success", true)
+				msoLogger.debug(" ***** postProcessResponse(), GOOD !!!")
+			} else {
+				execution.setVariable(Prefix + "Success", false) 
+				execution.setVariable("rollbackData", null)
+				String exceptionMessage = " Exception encountered in MSO Bpmn. "
+				if (execution.getVariable("workflowException") != null) {  // Output of Rollback flow.
+				   msoLogger.debug(" ***** workflowException: " + execution.getVariable("workflowException"))
+				   WorkflowException wfex = execution.getVariable("workflowException")
+				   exceptionMessage = wfex.getErrorMessage()
+   				} else {
+			       if (execution.getVariable(Prefix + "WorkflowException") != null) {
+				      WorkflowException pwfex = execution.getVariable(Prefix + "WorkflowException")
+				      exceptionMessage = pwfex.getErrorMessage()
+			       }   
+   				}
+			    // going to the Main flow: a-la-carte or macro
+			    msoLogger.debug(" ***** postProcessResponse(), BAD !!!")
+			    exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+				throw new BpmnError("MSOWorkflowException")
+			}
+							
+		} catch(BpmnError b){
+		     msoLogger.debug("Rethrowing MSOWorkflowException")
+		     throw b
+			
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoUpdateNetworkInstance flow. postProcessResponse() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+        }
+
+
+	}
+
+	public void prepareSDNCRollbackRequest (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside prepareSDNCRollbackRequest of DoUpdateNetworkInstance ")
+
+		try {
+			// for some reason the WorkflowException object is null after the sdnc rollback call task, need to save WorkflowException. 
+			execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
+			// get variables
+			String sdncCallback = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			String updateNetworkInput = execution.getVariable(Prefix + "networkRequest")
+			String cloudRegionId = execution.getVariable(Prefix + "cloudRegionSdnc")
+			String changeAssignSDNCResponse = execution.getVariable(Prefix + "changeAssignSDNCResponse")
+			String networkId = utils.getNodeText(changeAssignSDNCResponse, "network-id")
+
+			String serviceInstanceId = utils.getNodeText(updateNetworkInput, "service-instance-id")
+
+			// 2. prepare rollback topology via SDNC Adapter SUBFLOW call
+			String sndcTopologyRollbackRequest = sdncAdapterUtils.sdncTopologyRequestV2(execution, updateNetworkInput, serviceInstanceId, sdncCallback, "rollback", "NetworkActivateRequest", cloudRegionId, networkId, null, null)
+			String sndcTopologyRollbackRequestAsString = utils.formatXml(sndcTopologyRollbackRequest)
+			execution.setVariable(Prefix + "rollbackSDNCRequest", sndcTopologyRollbackRequestAsString)
+			msoLogger.debug(" Preparing request for SDNC Topology assign's rollback/compensation . . . - " + "\n" +  sndcTopologyRollbackRequestAsString)
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoUpdateNetworkInstance flow. prepareSDNCRollbackRequest() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void prepareRollbackData(DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+		
+		msoLogger.trace("Inside prepareRollbackData() of DoUpdateNetworkInstance ")
+		
+		try {
+			
+			Map<String, String> rollbackData = new HashMap<String, String>();
+			String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
+			if (rollbackSDNCRequest != null) {
+				if (rollbackSDNCRequest != "") {
+					rollbackData.put("rollbackSDNCRequest", execution.getVariable(Prefix + "rollbackSDNCRequest"))
+				}
+			}
+			String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
+			if (rollbackNetworkRequest != null) {
+				if (rollbackNetworkRequest != "") {
+					rollbackData.put("rollbackNetworkRequest", execution.getVariable(Prefix + "rollbackNetworkRequest"))
+				}
+			}
+			execution.setVariable("rollbackData", rollbackData)
+			msoLogger.debug("** rollbackData : " + rollbackData)
+			
+			execution.setVariable("WorkflowException", execution.getVariable(Prefix + "WorkflowException"))
+			msoLogger.debug("** WorkflowException : " + execution.getVariable("WorkflowException"))
+			
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoUpdateNetworkInstance flow. prepareRollbackData() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+		
+		}
+		
+	}
+	
+	public void prepareSuccessRollbackData(DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+		
+		msoLogger.trace("Inside prepareSuccessRollbackData() of DoUpdateNetworkInstance ")
+		
+		try {
+			
+			if (execution.getVariable("sdncVersion") != '1610') {
+				// skip: 1702 for 'changeassign' or equivalent not yet defined in SNDC, so no rollback.
+			} else {
+				prepareSDNCRollbackRequest(execution)
+			}
+			
+			Map<String, String> rollbackData = new HashMap<String, String>();
+			String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
+			if (rollbackSDNCRequest != null) {
+				if (rollbackSDNCRequest != "") {
+					rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
+				}
+			}
+			String rollbackNetworkRequest = execution.getVariable(Prefix + "rollbackNetworkRequest")
+			if (rollbackNetworkRequest != null) {
+				if (rollbackNetworkRequest != "") {
+					rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
+				}
+			}
+			execution.setVariable("rollbackData", rollbackData)
+			
+			msoLogger.debug("** 'rollbackData' for Full Rollback : " + rollbackData)
+			execution.setVariable("WorkflowException", null)
+
+			
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in DoUpdateNetworkInstance flow. prepareSuccessRollbackData() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+		
+		}
+		
+	}
+	
+	public void setExceptionFlag(DelegateExecution execution){
+
+		execution.setVariable("prefix",Prefix)
+		
+		msoLogger.trace("Inside setExceptionFlag() of DoUpdateNetworkInstance ")
+		
+		try {
+			
+			execution.setVariable(Prefix + "isException", true)
+			
+			if (execution.getVariable("SavedWorkflowException1") != null) {
+				execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1"))
+			} else {
+				execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
+			}
+			msoLogger.debug(Prefix + "WorkflowException - " +execution.getVariable(Prefix + "WorkflowException"))
+			
+		} catch(Exception ex){
+			  String exceptionMessage = "Bpmn error encountered in DoUpdateNetworkInstance flow. setExceptionFlag(): " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+		}
+		
+	}
+
+
+	// *******************************
+	//     Build Error Section
+	// *******************************
+
+	public void processJavaException(DelegateExecution execution){
+
+		execution.setVariable("prefix",Prefix)
+		try{
+			msoLogger.debug("Caught a Java Exception")
+			msoLogger.debug("Started processJavaException Method")
+			msoLogger.debug("Variables List: " + execution.getVariables())
+			execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - "  + Prefix)  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
+			
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during processJavaException Method: " + e)
+			execution.setVariable("UnexpectedError", "Exception in processJavaException method")  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method")
+		}
+		msoLogger.debug("Completed processJavaException Method")
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollback.groovy
new file mode 100644
index 0000000..8a13b3c
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollback.groovy
@@ -0,0 +1,310 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts;
+
+import groovy.xml.XmlUtil
+import groovy.json.*
+
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.NetworkUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.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
+
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+/**
+ * This groovy class supports the <class>DoCreateNetworkInstance.bpmn</class> process.
+ *
+ */
+public class DoUpdateNetworkInstanceRollback extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoUpdateNetworkInstanceRollback.class);
+	
+	String Prefix="UPDNETIR_"
+   	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils(this)
+	NetworkUtils networkUtils = new NetworkUtils()
+	SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
+
+	def className = getClass().getSimpleName()
+
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>DoUpdateNetworkInstanceRollback.bpmn</class> process.
+	 * @param execution
+	 */
+	public InitializeProcessVariables(DelegateExecution execution){
+		/* Initialize all the process variables in this block */
+
+		execution.setVariable(Prefix + "rollbackNetworkRequest", null)
+		execution.setVariable(Prefix + "rollbackSDNCRequest", null)
+		execution.setVariable(Prefix + "WorkflowException", null)
+
+		execution.setVariable(Prefix + "rollbackNetworkRequest", "")
+		execution.setVariable(Prefix + "rollbackNetworkResponse", "")
+		execution.setVariable(Prefix + "rollbackNetworkReturnCode", "")
+
+		execution.setVariable(Prefix + "rollbackSDNCRequest", "")
+		execution.setVariable(Prefix + "rollbackSDNCResponse", "")
+		execution.setVariable(Prefix + "rollbackSDNCReturnCode", "")
+
+		execution.setVariable(Prefix + "Success", false)
+		execution.setVariable(Prefix + "fullRollback", false)
+
+	}
+
+	// **************************************************
+	//     Pre or Prepare Request Section
+	// **************************************************
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>DoUpdateNetworkInstanceRollback.bpmn</class> process.
+	 * @param execution
+	 */
+	public void preProcessRequest (DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside preProcessRequest() of " + className + ".groovy ")
+
+		try {
+			// initialize flow variables
+			InitializeProcessVariables(execution)
+
+			// GET Incoming request/variables
+			String rollbackNetworkRequest = null
+			String rollbackSDNCRequest = null
+
+			// Partial Rollback
+			Map<String, String> rollbackData = execution.getVariable("rollbackData")
+			if (rollbackData != null && rollbackData instanceof Map) {
+
+					if(rollbackData.containsKey("rollbackNetworkRequest")) {
+						rollbackNetworkRequest = rollbackData["rollbackNetworkRequest"]
+					}
+
+					if(rollbackData.containsKey("rollbackSDNCRequest")) {
+					   rollbackSDNCRequest = rollbackData["rollbackSDNCRequest"]
+					}
+			}
+
+			execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkRequest)
+			execution.setVariable(Prefix + "rollbackSDNCRequest", rollbackSDNCRequest)
+			msoLogger.debug("'rollbackData': " + '\n' + execution.getVariable("rollbackData"))
+
+			String sdncVersion = execution.getVariable("sdncVersion")
+			msoLogger.debug("sdncVersion? : " + sdncVersion)
+
+			// PO Authorization Info / headers Authorization=
+			String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth",execution)
+			
+			try {
+				def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution))
+				execution.setVariable("BasicAuthHeaderValuePO",encodedString)
+				execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
+
+			} catch (IOException ex) {
+				String exceptionMessage = "Exception Encountered in DoCreateNetworkInstance, PreProcessRequest() - "
+				String dataErrorMessage = exceptionMessage + " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
+				msoLogger.debug(dataErrorMessage )
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+			}
+
+			if (execution.getVariable("SavedWorkflowException1") != null) {
+				execution.setVariable(Prefix + "WorkflowException", execution.getVariable("SavedWorkflowException1"))
+			} else {
+				execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
+			}
+			msoLogger.debug("*** WorkflowException : " + execution.getVariable(Prefix + "WorkflowException"))
+			if(execution.getVariable(Prefix + "WorkflowException") != null) {
+				// called by: DoCreateNetworkInstance, partial rollback
+				execution.setVariable(Prefix + "fullRollback", false)
+
+			} else {
+			   // called by: Macro - Full Rollback, WorkflowException = null
+			   execution.setVariable(Prefix + "fullRollback", true)
+
+			}
+			msoLogger.debug("*** fullRollback? : " + execution.getVariable(Prefix + "fullRollback"))
+
+
+		} catch (BpmnError e) {
+		throw e;
+
+		} catch (Exception ex) {
+			sendSyncError(execution)
+			// caught exception
+			String exceptionMessage = "Exception Encountered in PreProcessRequest() of " + className + ".groovy ***** : " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+	public void validateRollbackResponses (DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside validateRollbackResponses() of DoUpdateNetworkInstanceRollback ")
+
+		try {
+			// validate PO network rollback response
+			String rollbackNetworkErrorMessages = ""
+			String rollbackNetworkReturnCode = "200"
+			if (execution.getVariable(Prefix + "rollbackNetworkRequest") != null) {
+				rollbackNetworkReturnCode = execution.getVariable(Prefix + "rollbackNetworkReturnCode")
+				String rollbackNetworkResponse = execution.getVariable(Prefix + "rollbackNetworkResponse")
+				msoLogger.debug(" NetworkRollback Code - " + rollbackNetworkReturnCode)
+				msoLogger.debug(" NetworkRollback Response - " + rollbackNetworkResponse)
+				if (rollbackNetworkReturnCode != "200") {
+					rollbackNetworkErrorMessages = " + PO Network rollback failed. "
+				} else {
+					rollbackNetworkErrorMessages = " + PO Network rollback completed."
+				}
+			}
+
+			// validate SDNC rollback response
+			String rollbackSdncErrorMessages = ""
+			String rollbackSDNCReturnCode = "200"
+			if (execution.getVariable(Prefix + "rollbackSDNCRequest") != null) {
+				rollbackSDNCReturnCode = execution.getVariable(Prefix + "rollbackSDNCReturnCode")
+				String rollbackSDNCResponse = execution.getVariable(Prefix + "rollbackSDNCResponse")
+				String rollbackSDNCReturnInnerCode = ""
+				SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+				rollbackSDNCResponse = rollbackSDNCResponse.replace('$', '').replace('<?xml version="1.0" encoding="UTF-8"?>', "")
+				if (rollbackSDNCReturnCode == "200") {
+					if (utils.nodeExists(rollbackSDNCResponse, "response-code")) {
+						rollbackSDNCReturnInnerCode = utils.getNodeText(rollbackSDNCResponse, "response-code")
+						if (rollbackSDNCReturnInnerCode == "200" || rollbackSDNCReturnInnerCode == "" || rollbackSDNCReturnInnerCode == "0") {
+						    rollbackSdncErrorMessages = " + SNDC changeassign rollback completed."
+						} else {
+							rollbackSdncErrorMessages = " + SDNC changeassign rollback failed. "
+						}
+					} else {
+						  rollbackSdncErrorMessages = " + SNDC changeassign rollback completed."
+					}
+				 } else {
+					  rollbackSdncErrorMessages = " + SDNC changeassign rollback failed. "
+			     }
+				msoLogger.debug(" SDNC changeassign rollback Code - " + rollbackSDNCReturnCode)
+				msoLogger.debug(" SDNC changeassign rollback  Response - " + rollbackSDNCResponse)
+			}
+
+			String statusMessage = ""
+			int errorCode = 7000
+			msoLogger.debug("*** fullRollback? : " + execution.getVariable(Prefix + "fullRollback"))
+			if (execution.getVariable(Prefix + "fullRollback") == false) {
+				// original WorkflowException,
+				WorkflowException wfe = execution.getVariable(Prefix + "WorkflowException")
+				if (wfe != null) {
+				   // rollback due to failure in DoCreate - Partial rollback
+				   statusMessage = wfe.getErrorMessage()
+				   errorCode = wfe.getErrorCode()
+				} else {
+				   statusMessage = "See Previous Camunda flows for cause of Error: Undetermined Exception."
+				   errorCode = '7000'
+				}
+
+				// set if all rolledbacks are successful
+				if (rollbackNetworkReturnCode == "200" && rollbackSDNCReturnCode == "200") {
+					execution.setVariable("rolledBack", true)
+
+				} else {
+					execution.setVariable("rolledBack", false)
+
+				}
+
+				statusMessage = statusMessage + rollbackNetworkErrorMessages + rollbackSdncErrorMessages
+				msoLogger.debug("Final DoUpdateNetworkInstanceRollback status message: " + statusMessage)
+				String processKey = getProcessKey(execution);
+				WorkflowException exception = new WorkflowException(processKey, errorCode, statusMessage);
+				execution.setVariable("workflowException", exception);
+
+			} else {
+				// rollback due to failures in Main flow (Macro) - Full rollback
+				// WorkflowException = null
+				if (rollbackNetworkReturnCode == "200" && rollbackSDNCReturnCode == "200") {
+					execution.setVariable("rollbackSuccessful", true)
+					execution.setVariable("rollbackError", false)
+				} else {
+					String exceptionMessage = "Network Update Rollback was not Successful. "
+					msoLogger.debug(exceptionMessage)
+					execution.setVariable("rollbackSuccessful", false)
+					execution.setVariable("rollbackError", true)
+					exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+					throw new BpmnError("MSOWorkflowException")
+				}
+
+			}
+
+
+		} catch (Exception ex) {
+			execution.setVariable("WorkflowException", null)
+			String errorMessage = "See Previous Camunda flows for cause of Error: Undetermined Exception."
+			String exceptionMessage = " Bpmn error encountered in DoUpdateNetworkInstanceRollback flow. validateRollbackResponses() - " + errorMessage + ": " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
+			execution.setVariable("WorkflowException", execution.getVariable("WorkflowException"))
+
+		}
+
+	}
+
+	// *******************************
+	//     Build Error Section
+	// *******************************
+
+
+
+	public void processJavaException(DelegateExecution execution){
+
+		execution.setVariable("prefix",Prefix)
+
+		try{
+			msoLogger.debug("Caught a Java Exception in " + Prefix)
+			msoLogger.debug("Started processJavaException Method")
+			msoLogger.debug("Variables List: " + execution.getVariables())
+			execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
+
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during processJavaException Method: " + e)
+			execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix)
+		}
+		msoLogger.trace("Completed processJavaException Method in " + Prefix)
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy
new file mode 100644
index 0000000..451e029
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy
@@ -0,0 +1,1040 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.CatalogDbUtils
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.NetworkUtils
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.bpmn.common.scripts.VfModule
+import org.onap.so.bpmn.common.scripts.VfModuleBase
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils;
+import org.onap.so.client.aai.AAIObjectType;
+import org.onap.so.client.aai.AAIResourcesClient
+import org.onap.so.client.aai.entities.AAIResultWrapper
+import org.onap.so.client.aai.entities.uri.AAIUri
+import org.onap.so.client.aai.entities.uri.AAIUriFactory;
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.springframework.web.util.UriUtils
+
+public class DoUpdateVfModule extends VfModuleBase {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoUpdateVfModule.class);
+
+	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(DelegateExecution execution) {
+		execution.setVariable('prefix', 'DOUPVfMod_')
+		execution.setVariable('DOUPVfMod_requestInfo', null)
+		execution.setVariable('DOUPVfMod_serviceInstanceId', null)
+		execution.setVariable('DOUPVfMod_requestId', null)
+		execution.setVariable('DOUPVfMod_vnfInputs', null)
+		execution.setVariable('DOUPVfMod_vnfId', null)
+		execution.setVariable('DOUPVfMod_vnfName', null)
+		execution.setVariable('DOUPVfMod_vnfNameFromAAI', null)
+		execution.setVariable('DOUPVfMod_vfModuleName', null)
+		execution.setVariable('DOUPVfMod_vfModuleId', null)
+		execution.setVariable('DOUPVfMod_vnfType', null)
+		execution.setVariable('DOUPVfMod_asdcServiceModelVersion', null)
+		execution.setVariable('DOUPVfMod_vfModuleModelName', null)
+		execution.setVariable('DOUPVfMod_modelCustomizationUuid', null)
+		execution.setVariable("DOUPVfMod_isBaseVfModule", "false")
+		execution.setVariable('DOUPVfMod_serviceId', null)
+		execution.setVariable('DOUPVfMod_aicCloudRegion', null)
+		execution.setVariable('DOUPVfMod_tenantId', null)
+		execution.setVariable('DOUPVfMod_volumeGroupId', null)
+		execution.setVariable("DOUPVfMod_volumeGroupStackId", "")
+		execution.setVariable('DOUPVfMod_vfModule', null)
+		execution.setVariable('DOUPVfMod_vnfParams', null)
+		execution.setVariable("DOUPVfMod_baseVfModuleId", "")
+		execution.setVariable("DOUPVfMod_baseVfModuleHeatStackId", "")
+		execution.setVariable('DOUPVfMod_prepareUpdateAAIVfModuleRequest', null)
+		execution.setVariable('DOUPVfMod_sdncChangeAssignRequest', null)
+		execution.setVariable('DOUPVfMod_sdncChangeAssignResponse', null)
+		execution.setVariable('DOUPVfMod_sdncActivateRequest', null)
+		execution.setVariable('DOUPVfMod_sdncActivateResponse', null)
+		execution.setVariable('DOUPVfMod_sdncTopologyRequest', null)
+		execution.setVariable('DOUPVfMod_sdncTopologyResponse', null)
+		execution.setVariable('DOUPVfMod_vnfAdapterRestRequest', null)
+		execution.setVariable('DOUPVfMod_updateAAIGenericVnfRequest', null)
+		execution.setVariable('DOUPVfMod_updateAAIVfModuleRequest', null)
+		execution.setVariable('DOUPVfMod_skipUpdateGenericVnf', false)
+		execution.setVariable('DoUpdateVfModuleSuccessIndicator', 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() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			initProcessVariables(execution)
+			def xml = getVariable(execution, 'DoUpdateVfModuleRequest')
+			msoLogger.debug("DoUpdateVfModule request: " + xml)
+			msoLogger.debug('Received request xml:\n' + xml)
+			
+			if (xml == null || xml.isEmpty()) {
+				// Building Block-type request
+
+				String cloudConfiguration = execution.getVariable("cloudConfiguration")
+				String vfModuleModelInfo = execution.getVariable("vfModuleModelInfo")
+				
+				def serviceModelInfo = execution.getVariable("serviceModelInfo")
+				msoLogger.debug("serviceModelInfo: " + serviceModelInfo)
+				String modelInvariantUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantUuid")
+				msoLogger.debug("modelInvariantUuid: " + modelInvariantUuid)
+				def vnfModelInfo = execution.getVariable("vnfModelInfo")
+				
+				//tenantId
+				def tenantId = execution.getVariable("tenantId")
+				execution.setVariable("DOUPVfMod_tenantId", tenantId)
+				
+				//volumeGroupId
+				def volumeGroupId = execution.getVariable("volumeGroupId")
+				execution.setVariable("DOUPVfMod_volumeGroupId", volumeGroupId)
+				
+				//cloudSiteId
+				def cloudSiteId = execution.getVariable("lcpCloudRegionId")
+				execution.setVariable("DOUPVfMod_aicCloudRegion", cloudSiteId)
+				
+				msoLogger.debug("cloudSiteId: " + cloudSiteId)
+				//vnfType
+				def vnfType = execution.getVariable("vnfType")
+				execution.setVariable("DOUPVfMod_vnfType", vnfType)
+				
+				msoLogger.debug("vnfType: " + vnfType)
+				//vnfName
+				def vnfName = execution.getVariable("vnfName")
+				execution.setVariable("DOUPVfMod_vnfName", vnfName)
+				
+				msoLogger.debug("vnfName: " + vnfName)
+				//vnfId
+				def vnfId = execution.getVariable("vnfId")
+				execution.setVariable("DOUPVfMod_vnfId", vnfId)
+				
+				msoLogger.debug("vnfId: " + vnfId)
+				//vfModuleName
+				def vfModuleName = execution.getVariable("vfModuleName")
+				execution.setVariable("DOUPVfMod_vfModuleName", vfModuleName)
+				
+				msoLogger.debug("vfModuleName: " + vfModuleName)
+				//vfModuleModelName
+				def vfModuleModelName = jsonUtil.getJsonValue(vfModuleModelInfo, "modelName")
+				execution.setVariable("DOUPVfMod_vfModuleModelName", vfModuleModelName)
+				
+				msoLogger.debug("vfModuleModelName: " + vfModuleModelName)
+				//modelCustomizationUuid
+				def modelCustomizationUuid = jsonUtil.getJsonValue(vfModuleModelInfo, "modelCustomizationUuid")
+				if (modelCustomizationUuid == null) {
+					modelCustomizationUuid = ""
+				}
+				execution.setVariable("DOUPVfMod_modelCustomizationUuid", modelCustomizationUuid)
+				
+				msoLogger.debug("modelCustomizationUuid: " + modelCustomizationUuid)
+				//vfModuleId
+				def vfModuleId = execution.getVariable("vfModuleId")
+				execution.setVariable("DOUPVfMod_vfModuleId", vfModuleId)
+				msoLogger.debug("vfModuleId: " + vfModuleId)
+				def requestId = execution.getVariable("msoRequestId")
+				execution.setVariable("DOUPVfMod_requestId", requestId)
+				msoLogger.debug("requestId: " + requestId)
+				// Set mso-request-id to request-id for VNF Adapter interface
+				execution.setVariable("mso-request-id", requestId)
+				//serviceId
+				def serviceId = execution.getVariable("serviceId")
+				execution.setVariable("DOUPVfMod_serviceId", serviceId)
+				msoLogger.debug("serviceId: " + serviceId)
+				//serviceInstanceId
+				def serviceInstanceId = execution.getVariable("serviceInstanceId")
+				execution.setVariable("DOUPVfMod_serviceInstanceId", serviceInstanceId)
+				
+				msoLogger.debug("serviceInstanceId: " + serviceInstanceId)
+				//source - HARDCODED
+				def source = "VID"
+				execution.setVariable("DOUPVfMod_source", source)
+				
+				msoLogger.debug("source: " + source)
+				//backoutOnFailure
+				def disableRollback = execution.getVariable("disableRollback")
+				def backoutOnFailure = true
+				if (disableRollback != null && disableRollback.equals("true")) {
+					backoutOnFailure = false
+				}
+				execution.setVariable("DOUPVfMod_backoutOnFailure", backoutOnFailure)
+				msoLogger.debug("backoutOnFailure: " + backoutOnFailure)
+				//isBaseVfModule
+				def isBaseVfModule = execution.getVariable("isBaseVfModule")
+				execution.setVariable("DOUPVfMod_isBaseVfModule", isBaseVfModule)
+				msoLogger.debug("isBaseVfModule: " + isBaseVfModule)
+				//asdcServiceModelVersion
+				def asdcServiceModelVersion = execution.getVariable("asdcServiceModelVersion")
+				execution.setVariable("DOUPVfMod_asdcServiceModelVersion", asdcServiceModelVersion)
+				msoLogger.debug("asdcServiceModelVersion: " + asdcServiceModelVersion)
+				//personaModelId
+				execution.setVariable("DOUPVfMod_personaModelId", jsonUtil.getJsonValue(vfModuleModelInfo, "modelInvariantUuid"))
+				//personaModelVersion
+				execution.setVariable("DOUPVfMod_personaModelVersion", jsonUtil.getJsonValue(vfModuleModelInfo, "modelVersion"))
+				//Get or Generate UUID
+				String uuid = execution.getVariable("DOUPVfMod_uuid")
+				if(uuid == null){
+					uuid = UUID.randomUUID()
+					msoLogger.debug("Generated messageId (UUID) is: " + uuid)
+				}else{
+					msoLogger.debug("Found messageId (UUID) is: " + uuid)
+				}
+				//isVidRequest
+				String isVidRequest = execution.getVariable("isVidRequest")
+				// default to true
+				if (isVidRequest == null || isVidRequest.isEmpty()) {
+					execution.setVariable("isVidRequest", "true")
+				}
+				//usePreload
+				def usePreload = execution.getVariable("usePreload")
+				execution.setVariable("DOUPVfMod_usePreload", usePreload)
+				msoLogger.debug("usePreload: " + usePreload)
+				//globalSubscriberId
+				String globalSubscriberId = execution.getVariable("globalSubscriberId")
+				execution.setVariable("DOUPVfMod_globalSubscriberId", globalSubscriberId)
+				msoLogger.debug("globalSubsrciberId: " + globalSubscriberId)
+				//vnfQueryPath
+				String vnfQueryPath = execution.getVariable("vnfQueryPath")
+				execution.setVariable("DOUPVfMod_vnfQueryPath", vnfQueryPath)
+				msoLogger.debug("vnfQueryPath: " + vnfQueryPath)
+				
+				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()
+					msoLogger.debug(msg)
+					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) {
+					msoLogger.debug("Error retreiving parent service instance information")
+				}
+				
+				execution.setVariable("DCVFM_environmentContext",environmentContext)
+				execution.setVariable("DCVFM_workloadContext",workloadContext)
+			}
+			else {
+
+				def requestInfo = getRequiredNodeXml(execution, xml, 'request-info')
+				execution.setVariable('DOUPVfMod_requestInfo', requestInfo)
+				execution.setVariable('DOUPVfMod_requestId', getRequiredNodeText(execution, requestInfo, 'request-id'))
+				def serviceInstanceId = execution.getVariable('mso-service-instance-id')
+				if (serviceInstanceId == null) {
+					serviceInstanceId = ''
+				}
+				execution.setVariable('DOUPVfMod_serviceInstanceId', serviceInstanceId)
+	
+				def vnfInputs = getRequiredNodeXml(execution, xml, 'vnf-inputs')
+				execution.setVariable('DOUPVfMod_vnfInputs', vnfInputs)
+				execution.setVariable('DOUPVfMod_vnfId', getRequiredNodeText(execution, vnfInputs, 'vnf-id'))
+				execution.setVariable('DOUPVfMod_vfModuleId', getRequiredNodeText(execution, vnfInputs, 'vf-module-id'))
+				execution.setVariable('DOUPVfMod_vfModuleName', getNodeTextForce(vnfInputs, 'vf-module-name'))
+				execution.setVariable('DOUPVfMod_vnfType', getNodeTextForce(vnfInputs, 'vnf-type'))
+				execution.setVariable('DOUPVfMod_vnfName', getNodeTextForce(vnfInputs, 'vnf-name'))
+				execution.setVariable('DOUPVfMod_asdcServiceModelVersion', getNodeTextForce(vnfInputs, 'asdc-service-model-version'))
+				execution.setVariable('DOUPVfMod_vfModuleModelName', getRequiredNodeText(execution, vnfInputs, 'vf-module-model-name'))
+				execution.setVariable('DOUPVfMod_modelCustomizationUuid', getNodeTextForce(vnfInputs, 'model-customization-id'))
+				execution.setVariable('DOUPVfMod_serviceId', getRequiredNodeText(execution, vnfInputs, 'service-id'))
+				execution.setVariable('DOUPVfMod_aicCloudRegion', getRequiredNodeText(execution, vnfInputs, 'aic-cloud-region'))
+				execution.setVariable('DOUPVfMod_tenantId', getRequiredNodeText(execution, vnfInputs, 'tenant-id'))
+				//isBaseVfModule
+				def isBaseVfModule = "false"
+				if (utils.nodeExists(xml, "is-base-vf-module")) {
+					isBaseVfModule = utils.getNodeText(xml, "is-base-vf-module")
+					execution.setVariable("DOUPVfMod_isBaseVfModule", isBaseVfModule)
+				}
+				msoLogger.debug("isBaseVfModule: " + isBaseVfModule)
+	
+				NetworkUtils networkUtils = new NetworkUtils()
+				def backoutOnFailure = networkUtils.isRollbackEnabled(execution, xml)
+				execution.setVariable("DOUPVfMod_backoutOnFailure", backoutOnFailure)
+	
+				def String vgi = getNodeTextForce(vnfInputs, 'volume-group-id')
+				execution.setVariable('DOUPVfMod_volumeGroupId', vgi)
+	
+				execution.setVariable('DOUPVfMod_vnfParams', utils.getNodeXml(xml, 'vnf-params', false))
+			}
+
+			def sdncCallbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) {
+				def msg = 'Required variable \'mso.workflow.sdncadapter.callback\' is missing'
+				msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, msg, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "");
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preProcessRequest(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare a Request for invoking the PrepareUpdateAAIVfModule subflow.  This will
+	 * set the orchestration-status to 'pending-update'.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepPrepareUpdateAAIVfModule(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preparePrepareUpdateAAIVfModule(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def vnfId = execution.getVariable('DOUPVfMod_vnfId')
+			def vfModuleId = execution.getVariable('DOUPVfMod_vfModuleId')
+			def orchestrationStatus = 'pending-update'
+
+			String prepareUpdateAAIVfModuleRequest = """
+				<PrepareUpdateAAIVfModuleRequest>
+					<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+					<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+					<orchestration-status>${MsoUtils.xmlEscape(orchestrationStatus)}</orchestration-status>
+				</PrepareUpdateAAIVfModuleRequest>
+			"""
+			prepareUpdateAAIVfModuleRequest = utils.formatXml(prepareUpdateAAIVfModuleRequest)
+			execution.setVariable('DOUPVfMod_prepareUpdateAAIVfModuleRequest', prepareUpdateAAIVfModuleRequest)
+			msoLogger.debug("DoUpdateAAIVfModule request: " + prepareUpdateAAIVfModuleRequest)
+			msoLogger.debug('Request for PrepareUpdateAAIVfModule:\n' + prepareUpdateAAIVfModuleRequest)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preparePrepareUpdateAAIVfModule(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare a Request for invoking the ConfirmVolumeGroupTenant subflow.
+	 * Determine cloud region id for the volume group.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepConfirmVolumeGroupTenant(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepConfirmVolumeGroupTenant(' +
+			'execution=' + execution.getId() +
+			')'
+		
+		def prefix = execution.getVariable("prefix")
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			String cloudRegion = execution.getVariable(prefix + "aicCloudRegion")
+
+			// Prepare AA&I url
+			String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			AaiUtil aaiUtil = new AaiUtil(this)
+			String aai_uri = aaiUtil.getCloudInfrastructureCloudRegionUri(execution)
+			String queryCloudRegionRequest = "${aai_endpoint}${aai_uri}/" + cloudRegion
+			msoLogger.debug("CloudRegion Request: " + queryCloudRegionRequest)
+
+			execution.setVariable(prefix + "queryCloudRegionRequest", queryCloudRegionRequest)
+			msoLogger.debug(prefix + "queryCloudRegionRequest - " + "\n" + queryCloudRegionRequest)
+
+			cloudRegion = aaiUtil.getAAICloudReqion(execution, queryCloudRegionRequest, "AAI", cloudRegion)
+
+			if ((cloudRegion != "ERROR")) {
+				if(execution.getVariable(prefix + "queryCloudRegionReturnCode") == "404"){
+					execution.setVariable(prefix + "cloudRegionForVolume", "AAIAIC25")
+				}else{
+				execution.setVariable(prefix + "cloudRegionForVolume", cloudRegion)
+				}
+				execution.setVariable(prefix + "isCloudRegionGood", true)
+			} else {
+				String errorMessage = "AAI Query Cloud Region Unsuccessful. AAI Response Code: " + execution.getVariable(prefix + "queryCloudRegionReturnCode")
+				msoLogger.debug(errorMessage)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
+				execution.setVariable(prefix + "isCloudRegionGood", false)
+			}
+			msoLogger.debug(" is Cloud Region Good: " + execution.getVariable(prefix + "isCloudRegionGood"))
+
+		} catch(BpmnError b){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Rethrowing MSOWorkflowException", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + b);
+			throw b
+		}catch (Exception e) {
+			// try error
+			String errorMessage = "Bpmn error encountered in CreateVfModule flow. Unexpected Response from AAI - " + e.getMessage()
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " AAI Query Cloud Region Failed.  Exception - " + "\n" + errorMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception occured during prepConfirmVolumeGroupTenant(): " + e.getMessage())
+		}
+		msoLogger.trace('Exited ' + method)
+		
+	}
+	
+	/**
+	 * Prepare a Request for invoking the SDNC Adapter subflow to perform
+	 * a VNF topology 'changeassign' operation.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepSDNCTopologyChg(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepSDNCTopologyChg(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def requestId = execution.getVariable('DOUPVfMod_requestId')
+			String uuid = execution.getVariable('testReqId') // for junits
+			if(uuid==null){
+				uuid = execution.getVariable("DOUPVfMod_requestId") + "-" +  	System.currentTimeMillis()
+			}
+			def serviceInstanceId = execution.getVariable('DOUPVfMod_serviceInstanceId')
+			def callbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			def serviceId = execution.getVariable('DOUPVfMod_serviceId')
+			def vnfId = execution.getVariable('DOUPVfMod_vnfId')
+			def vnfType = execution.getVariable('DOUPVfMod_vnfType')
+			def vfModuleId = execution.getVariable('DOUPVfMod_vfModuleId')
+			def vfModuleModelName = execution.getVariable('DOUPVfMod_vfModuleModelName')
+			def VfModule vfModule = (VfModule) execution.getVariable('DOUPVfMod_vfModule')
+			def vfModuleName = vfModule.getElementText('vf-module-name')
+			def tenantId = execution.getVariable('DOUPVfMod_tenantId')
+			def aicCloudRegion = execution.getVariable('DOUPVfMod_aicCloudRegion')
+			boolean usePreload = execution.getVariable("DOUPVfMod_usePreload")
+			String usePreloadToSDNC = usePreload ? "Y" : "N"
+			def modelCustomizationUuid = execution.getVariable("DoUPVfMod_modelCustomizationUuid")
+			def modelCustomizationUuidString = ""
+			if (!usePreload) {
+				modelCustomizationUuidString = "<modelCustomizationUuid>" + modelCustomizationUuid + "</modelCustomizationUuid>"
+			}
+
+			// Retrieve vnf name from AAI response
+			def vnfName = execution.getVariable('DOUPVfMod_vnfNameFromAAI')
+			execution.setVariable('DOUPVfMod_vnfName', vnfName)
+
+			def vnfParamsXml = execution.getVariable('DOUPVfMod_vnfParams')
+			def vnfNetworks = transformNetworkParamsToVnfNetworks(vnfParamsXml)
+
+			String sdncTopologyRequest = """
+				<sdncadapterworkflow:SDNCAdapterWorkflowRequest
+						xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+						xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+					<sdncadapter:RequestHeader>
+						<sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId>
+						<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId>
+						<sdncadapter:SvcAction>changeassign</sdncadapter:SvcAction>
+						<sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation>
+						<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl>
+					</sdncadapter:RequestHeader>
+					<sdncadapterworkflow:SDNCRequestData>
+					      <request-information>
+					         <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					         <request-action>ChangeVNFActivateRequest</request-action>
+					         <source>PORTAL</source>
+					         <notification-url/>
+					         <order-number/>
+					         <order-version/>
+					      </request-information>
+					      <service-information>
+					         <service-type>${MsoUtils.xmlEscape(serviceId)}</service-type>
+					         <service-instance-id>${MsoUtils.xmlEscape(vnfId)}</service-instance-id>
+					         <subscriber-name>dontcare</subscriber-name>
+					      </service-information>
+					      <vnf-request-information>
+					         <vnf-id>${MsoUtils.xmlEscape(vfModuleId)}</vnf-id>
+					         <vnf-type>${MsoUtils.xmlEscape(vfModuleModelName)}</vnf-type>
+					         <vnf-name>${MsoUtils.xmlEscape(vfModuleName)}</vnf-name>
+					         <generic-vnf-id>${MsoUtils.xmlEscape(vnfId)}</generic-vnf-id>
+					         <generic-vnf-name>${MsoUtils.xmlEscape(vnfName)}</generic-vnf-name>
+							 <generic-vnf-type>${MsoUtils.xmlEscape(vnfType)}</generic-vnf-type>
+					         <tenant>${MsoUtils.xmlEscape(tenantId)}</tenant>
+					         <aic-cloud-region>${MsoUtils.xmlEscape(aicCloudRegion)}</aic-cloud-region>
+							 ${modelCustomizationUuidString}
+							 <use-preload>${MsoUtils.xmlEscape(usePreloadToSDNC)}</use-preload>
+					         ${vnfNetworks}
+					      </vnf-request-information>
+ 					</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>
+			"""
+			sdncTopologyRequest = utils.formatXml(sdncTopologyRequest)
+			execution.setVariable('DOUPVfMod_sdncChangeAssignRequest', sdncTopologyRequest)
+			msoLogger.debug("sdncChangeAssignRequest : " + sdncTopologyRequest)
+			msoLogger.debug('Request for SDNCAdapter topology/changeassign:\n' + sdncTopologyRequest)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepSDNCTopologyChg(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare a Request for invoking the SDNC Adapter subflow to perform
+	 * a VNF topology 'query' operation.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepSDNCTopologyQuery(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepSDNCTopologyQuery(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			String uuid = execution.getVariable('testReqId') // for junits
+			if(uuid==null){
+				uuid = execution.getVariable("DOUPVfMod_requestId") + "-" +  	System.currentTimeMillis()
+			}
+			def requestId = execution.getVariable('DOUPVfMod_requestId')
+			def serviceInstanceId = execution.getVariable('DOUPVfMod_serviceInstanceId')
+			def callbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			def vfModuleId = execution.getVariable('DOUPVfMod_vfModuleId')
+
+			def svcInstId = ""
+			if (serviceInstanceId == null || serviceInstanceId.isEmpty()) {
+				svcInstId = vfModuleId
+			}
+			else {
+				svcInstId = serviceInstanceId
+			}
+
+			//!!!! TEMPORARY WORKAROUND FOR SDNC REPLICATION ISSUE
+			sleep(5000)
+
+			String sdncTopologyRequest = """
+				<sdncadapterworkflow:SDNCAdapterWorkflowRequest
+						xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+						xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+					<sdncadapter:RequestHeader>
+						<sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId>
+						<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(svcInstId)}</sdncadapter:SvcInstanceId>
+						<sdncadapter:SvcAction>query</sdncadapter:SvcAction>
+						<sdncadapter:SvcOperation>/VNF-API:vnfs/vnf-list/${vfModuleId}</sdncadapter:SvcOperation>
+						<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl>
+						<sdncadapter:MsoAction>mobility</sdncadapter:MsoAction>
+					</sdncadapter:RequestHeader>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>
+			"""
+			sdncTopologyRequest = utils.formatXml(sdncTopologyRequest)
+			execution.setVariable('DOUPVfMod_sdncTopologyRequest', sdncTopologyRequest)
+			msoLogger.debug("sdncTopologyRequest : " + sdncTopologyRequest)
+			msoLogger.debug('Request for SDNCAdapter query:\n' + sdncTopologyRequest)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepSDNCTopologyQuery(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare a Request for invoking the VnfAdapterRest subflow.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepVnfAdapterRest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepVnfAdapterRest(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def requestId = execution.getVariable('DOUPVfMod_requestId')
+			def serviceInstanceId = execution.getVariable('DOUPVfMod_serviceInstanceId')
+			def vnfId = execution.getVariable('DOUPVfMod_vnfId')
+			def vfModuleId = execution.getVariable('DOUPVfMod_vfModuleId')
+			def vfModuleName = execution.getVariable('DOUPVfMod_vfModuleName')
+			def vnfInputs = execution.getVariable('DOUPVfMod_vnfInputs')
+			def tenantId = execution.getVariable('DOUPVfMod_tenantId')
+			def volumeGroupId = execution.getVariable('DOUPVfMod_volumeGroupId')
+			def volumeGroupStackId = execution.getVariable('DOUPVfMod_volumeGroupStackId')
+			def VfModule vfModule = (VfModule) execution.getVariable('DOUPVfMod_vfModule')
+			def heatStackId = vfModule.getElementText('heat-stack-id')
+			def cloudId = execution.getVariable('DOUPVfMod_aicCloudRegion')
+			def vnfType = execution.getVariable('DOUPVfMod_vnfType')
+			def vnfName = execution.getVariable('DOUPVfMod_vnfName')
+			def vfModuleModelName = execution.getVariable('DOUPVfMod_vfModuleModelName')
+			def baseVfModuleId = execution.getVariable("DOUPVfMod_baseVfModuleId")
+			def baseVfModuleStackId = execution.getVariable("DOUPVfMod_baseVfModuleHeatStackId")
+			def asdcServiceModelVersion = execution.getVariable('DOUPVfMod_asdcServiceModelVersion')
+			def modelCustomizationUuid = execution.getVariable('DOUPVfMod_modelCustomizationUuid')
+			def backoutOnFailure = execution.getVariable("DOUPVfMod_backoutOnFailure")
+			
+			def messageId = execution.getVariable('mso-request-id') + '-' + System.currentTimeMillis()
+			def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
+			def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution)
+			if ('true'.equals(useQualifiedHostName)) {
+					notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
+			}
+			
+			String environmentContext = execution.getVariable("DOUPVEnvironment_context")
+			String workloadContext = execution.getVariable("DOUPVWorkload_context")
+			msoLogger.debug("workloadContext: " + workloadContext)
+			msoLogger.debug("environmentContext: " + environmentContext)
+			
+			Map<String, String> vnfParamsMap = execution.getVariable("DOUPVfMod_vnfParamsMap")
+
+			String sdncGetResponse = execution.getVariable('DOUPVfMod_sdncTopologyResponse')
+
+			String vfModuleParams = buildVfModuleParams(vnfParamsMap, sdncGetResponse, vnfId, vnfName,
+					vfModuleId, vfModuleName, null, environmentContext, workloadContext)
+
+
+			String vnfAdapterRestRequest = """
+				<updateVfModuleRequest>
+					<cloudSiteId>${MsoUtils.xmlEscape(cloudId)}</cloudSiteId>
+					<tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
+					<vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId>
+					<vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId>
+					<vfModuleStackId>${MsoUtils.xmlEscape(heatStackId)}</vfModuleStackId>
+					<vnfType>${MsoUtils.xmlEscape(vnfType)}</vnfType>
+					<vnfVersion>${MsoUtils.xmlEscape(asdcServiceModelVersion)}</vnfVersion>
+					<modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationUuid)}</modelCustomizationUuid>
+					<vfModuleType>${MsoUtils.xmlEscape(vfModuleModelName)}</vfModuleType>
+					<volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId>
+					<volumeGroupStackId>${MsoUtils.xmlEscape(volumeGroupStackId)}</volumeGroupStackId>
+					<baseVfModuleId>${MsoUtils.xmlEscape(baseVfModuleId)}</baseVfModuleId>
+    				<baseVfModuleStackId>${MsoUtils.xmlEscape(baseVfModuleStackId)}</baseVfModuleStackId>
+					<skipAAI>true</skipAAI>
+					<backout>${MsoUtils.xmlEscape(backoutOnFailure)}</backout>
+				    <failIfExists>false</failIfExists>
+					<vfModuleParams>
+						${vfModuleParams}
+				    </vfModuleParams>
+				    <msoRequest>
+				        <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+				        <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
+				    </msoRequest>
+				    <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
+				    <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
+				</updateVfModuleRequest>
+			"""
+			vnfAdapterRestRequest = utils.formatXml(vnfAdapterRestRequest)
+			execution.setVariable('DOUPVfMod_vnfAdapterRestRequest', vnfAdapterRestRequest)
+			msoLogger.debug("vnfAdapterRestRequest : " + vnfAdapterRestRequest)
+			msoLogger.debug('Request for VNFAdapter Rest:\n' + vnfAdapterRestRequest)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepVnfAdapterRest(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare a Request for invoking the UpdateAAIGenericVnf subflow.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepUpdateAAIGenericVnf(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' +
+			'execution=' + execution.getId() +
+			')'
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def vnfId = execution.getVariable('DOUPVfMod_vnfId')
+			def vnfInputs = execution.getVariable('DOUPVfMod_vnfInputs')
+
+			def personaModelId = utils.getNodeText(vnfInputs, 'vnf-persona-model-id')
+			def personaModelVersion = utils.getNodeText(vnfInputs, 'vnf-persona-model-version')
+			if ((personaModelId == null) || (personaModelVersion == null)) {
+				msoLogger.debug("Skipping update for Generic VNF ' + vnfId + ' because either \'vnf-persona-model-id\' or \'vnf-persona-model-version\' is absent")
+				execution.setVariable('DOUPVfMod_skipUpdateGenericVnf', true)
+			} else {
+				def personaModelIdElement = '<model-invariant-id>' + personaModelId + '</model-invariant-id>'
+				def personaModelVersionElement = '<model-version-id>' + personaModelVersion + '</model-version-id>'
+
+				String updateAAIGenericVnfRequest = """
+					<UpdateAAIGenericVnfRequest>
+						<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+						${personaModelIdElement}
+						${personaModelVersionElement}
+					</UpdateAAIGenericVnfRequest>
+				"""
+				updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest)
+				execution.setVariable('DOUPVfMod_updateAAIGenericVnfRequest', updateAAIGenericVnfRequest)
+				msoLogger.debug("updateAAIGenericVnfRequest : " + updateAAIGenericVnfRequest)
+				msoLogger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest)
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateAAIGenericVnf(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare a Request for invoking the UpdateAAIVfModule subflow.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepUpdateAAIVfModule(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepUpdateAAIVfModule(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def vnfId = execution.getVariable('DOUPVfMod_vnfId')
+			def vfModuleId = execution.getVariable('DOUPVfMod_vfModuleId')
+			def orchestrationStatus = 'updated'
+			def vnfInputs = execution.getVariable('DOUPVfMod_vnfInputs')
+
+			def volumeGroupIdElement = ''
+			def volumeGroupId = execution.getVariable('DOUPVfMod_volumeGroupId')
+			if (volumeGroupId != null) {
+				volumeGroupIdElement = '<volume-group-id>' + volumeGroupId + '</volume-group-id>'
+			}
+			def personaModelIdElement = ''
+			def personaModelId = utils.getNodeText(vnfInputs, 'persona-model-id')
+			if (personaModelId != null) {
+				personaModelIdElement = '<model-invariant-id>' + personaModelId + '</model-invariant-id>'
+			}
+			def personaModelVersionElement = ''
+			def personaModelVersion = utils.getNodeText(vnfInputs, 'persona-model-version')
+			if (personaModelVersion != null) {
+				personaModelVersionElement = '<model-version-id>' + personaModelVersion + '</model-version-id>'
+			}
+			def contrailServiceInstanceFqdnElement = ''
+			def contrailServiceInstanceFqdn = utils.getNodeText(vnfInputs, 'contrail-service-instance-fqdn')
+			if (contrailServiceInstanceFqdn != null) {
+				contrailServiceInstanceFqdnElement = '<contrail-service-instance-fqdn>' + contrailServiceInstanceFqdn + '</contrail-service-instance-fqdn>'
+			}
+			def personaModelCustomizationIdElement = ''
+			def modelCustomizationId = execution.getVariable('DOUPVfMod_modelCustomizationUuid')
+			if (modelCustomizationId != null) {
+				personaModelCustomizationIdElement = '<model-customization-id>' + modelCustomizationId + '</model-customization-id>'
+			}
+
+			String updateAAIVfModuleRequest = """
+				<UpdateAAIVfModuleRequest>
+					<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+					<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+					<orchestration-status>${MsoUtils.xmlEscape(orchestrationStatus)}</orchestration-status>
+					${volumeGroupIdElement}
+					${personaModelIdElement}
+					${personaModelVersionElement}
+					${contrailServiceInstanceFqdnElement}
+					${personaModelCustomizationIdElement}
+				</UpdateAAIVfModuleRequest>
+			"""
+			
+			msoLogger.debug('Unformatted updateAAIVfModuleRequest: ' + updateAAIVfModuleRequest)
+			updateAAIVfModuleRequest = utils.formatXml(updateAAIVfModuleRequest)
+			execution.setVariable('DOUPVfMod_updateAAIVfModuleRequest', updateAAIVfModuleRequest)
+			msoLogger.debug("updateAAIVfModuleRequest : " + updateAAIVfModuleRequest)
+			msoLogger.debug('Request for UpdateAAIVfModule:\n' + updateAAIVfModuleRequest)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateAAIVfModule(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare a Request for invoking the SDNC Adapter subflow to perform
+	 * a VNF topology 'activate' operation.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepSDNCTopologyAct(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepSDNCTopologyAct(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			String uuid = execution.getVariable('testReqId') // for junits
+			if(uuid==null){
+				uuid = execution.getVariable("DOUPVfMod_requestId") + "-" +  	System.currentTimeMillis()
+			}
+			def requestId = execution.getVariable('DOUPVfMod_requestId')
+			def serviceInstanceId = execution.getVariable('DOUPVfMod_serviceInstanceId')
+			def callbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			def serviceId = execution.getVariable('DOUPVfMod_serviceId')
+			def vnfId = execution.getVariable('DOUPVfMod_vnfId')
+			def vnfName = execution.getVariable('DOUPVfMod_vnfName')
+			def vnfType = execution.getVariable('DOUPVfMod_vnfType')
+			def vfModuleId = execution.getVariable('DOUPVfMod_vfModuleId')
+			def vfModuleModelName = execution.getVariable('DOUPVfMod_vfModuleModelName')
+			def VfModule vfModule = (VfModule) execution.getVariable('DOUPVfMod_vfModule')
+			def vfModuleName = vfModule.getElementText('vf-module-name')
+			def tenantId = execution.getVariable('DOUPVfMod_tenantId')
+			def aicCloudRegion = execution.getVariable('DOUPVfMod_aicCloudRegion')
+
+			boolean usePreload = execution.getVariable("DOUPVfMod_usePreload")
+			String usePreloadToSDNC = usePreload ? "Y" : "N"
+			def modelCustomizationUuid = execution.getVariable("DoUPVfMod_modelCustomizationUuid")
+			def modelCustomizationUuidString = ""
+			if (!usePreload) {
+				modelCustomizationUuidString = "<modelCustomizationUuid>" + modelCustomizationUuid + "</modelCustomizationUuid>"
+			}
+			
+			def vnfParamsXml = execution.getVariable('DOUPVfMod_vnfParams')
+			def vnfNetworks = transformNetworkParamsToVnfNetworks(vnfParamsXml)
+
+			String sdncTopologyRequest = """
+				<sdncadapterworkflow:SDNCAdapterWorkflowRequest
+						xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+						xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+					<sdncadapter:RequestHeader>
+						<sdncadapter:RequestId>${MsoUtils.xmlEscape(uuid)}</sdncadapter:RequestId>
+						<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId>
+						<sdncadapter:SvcAction>activate</sdncadapter:SvcAction>
+						<sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation>
+						<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl>
+					</sdncadapter:RequestHeader>
+					<sdncadapterworkflow:SDNCRequestData>
+					      <request-information>
+					         <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					         <request-action>ChangeVNFActivateRequest</request-action>
+					         <source>PORTAL</source>
+					         <notification-url/>
+					         <order-number/>
+					         <order-version/>
+					      </request-information>
+					      <service-information>
+					         <service-type>${MsoUtils.xmlEscape(serviceId)}</service-type>
+					         <service-instance-id>${MsoUtils.xmlEscape(vnfId)}</service-instance-id>
+					         <subscriber-name>dontcare</subscriber-name>
+					      </service-information>
+					      <vnf-request-information>
+					         <vnf-id>${MsoUtils.xmlEscape(vfModuleId)}</vnf-id>
+					         <vnf-type>${MsoUtils.xmlEscape(vfModuleModelName)}</vnf-type>
+					         <vnf-name>${MsoUtils.xmlEscape(vfModuleName)}</vnf-name>
+					         <generic-vnf-id>${MsoUtils.xmlEscape(vnfId)}</generic-vnf-id>
+					         <generic-vnf-name>${MsoUtils.xmlEscape(vnfName)}</generic-vnf-name>
+							 <generic-vnf-type>${MsoUtils.xmlEscape(vnfType)}</generic-vnf-type>
+					         <tenant>${MsoUtils.xmlEscape(tenantId)}</tenant>
+					         <aic-cloud-region>${MsoUtils.xmlEscape(aicCloudRegion)}</aic-cloud-region>
+							 ${modelCustomizationUuidString}
+							<use-preload>${MsoUtils.xmlEscape(usePreloadToSDNC)}</use-preload>
+					      </vnf-request-information>
+ 					</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>
+			"""
+			sdncTopologyRequest = utils.formatXml(sdncTopologyRequest)
+			execution.setVariable('DOUPVfMod_sdncActivateRequest', sdncTopologyRequest)
+			msoLogger.debug("sdncActivateRequest : " + sdncTopologyRequest)
+			msoLogger.debug('Request for SDNCAdapter topology/activate:\n' + sdncTopologyRequest)
+
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepSDNCTopologyAct(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Log a WorkflowException that has been created.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void handleWorkflowException(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.handleWorkflowException(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def WorkflowException workflowException = (WorkflowException) execution.getVariable('WorkflowException')
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, method + ' caught WorkflowException: ' + workflowException.getErrorMessage(), "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "");
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildWorkflowException(execution, 1002, 'Error in handleWorkflowException(): ' + e.getMessage())
+		}
+	}
+
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method){
+
+		def prefix = execution.getVariable("prefix")
+
+		msoLogger.trace("STARTED ValidateSDNCResponse Process")
+
+		WorkflowException workflowException = execution.getVariable("WorkflowException")
+		boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+
+		msoLogger.debug("workflowException: " + workflowException)
+
+		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+		sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+		msoLogger.debug("SDNCResponse: " + response)
+
+		String sdncResponse = response
+		if(execution.getVariable(prefix + 'sdncResponseSuccess') == true){
+			msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + sdncResponse)
+		}else{
+			msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.")
+			throw new BpmnError("MSOWorkflowException")
+		}
+		msoLogger.trace("COMPLETED ValidateSDNCResponse Process")
+	}
+
+	/**
+	 * Using the received vnfId and vfModuleId, query AAI to get the corresponding VNF info.
+	 * A 200 response is expected with the VNF info in the response body. Will find out the base module info.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void queryAAIVfModule(DelegateExecution execution) {
+
+		def method = getClass().getSimpleName() + '.getVfModule(' +
+			'execution=' + execution.getId() +
+			')'
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def vnfId = execution.getVariable('DOUPVfMod_vnfId')
+			def vfModuleId = execution.getVariable('DOUPVfMod_vfModuleId')
+
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String  aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution)
+			msoLogger.debug('AAI URI is: ' + aai_uri)
+
+			String endPoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + "?depth=1"
+			msoLogger.debug("AAI endPoint: " + endPoint)
+
+			try {
+				def aaiRequestId = UUID.randomUUID().toString()
+				msoLogger.debug('sending GET to AAI endpoint \'' + endPoint + '\'')
+				APIResponse response = aaiUriUtil.executeAAIGetCall(execution, endPoint)
+				msoLogger.debug("createVfModule - invoking httpGet() to AAI")
+
+				def responseData = response.getResponseBodyAsString()
+				if (responseData != null) {
+					msoLogger.debug("Received generic VNF data: " + responseData)
+
+				}
+
+				msoLogger.debug("createVfModule - queryAAIVfModule Response: " + responseData)
+				msoLogger.debug("createVfModule - queryAAIVfModule ResponseCode: " + response.getStatusCode())
+
+				execution.setVariable('DOUPVfMod_queryAAIVfModuleResponseCode', response.getStatusCode())
+				execution.setVariable('DOUPVfMod_queryAAIVfModuleResponse', responseData)
+				msoLogger.debug('Response code:' + response.getStatusCode())
+				msoLogger.debug('Response:' + System.lineSeparator() + responseData)
+				if (response.getStatusCode() == 200) {
+					// Parse the VNF record from A&AI to find base module info
+					msoLogger.debug('Parsing the VNF data to find base module info')
+					if (responseData != null) {
+						def vfModulesText = utils.getNodeXml(responseData, "vf-modules")
+						def xmlVfModules= new XmlSlurper().parseText(vfModulesText)
+						def vfModules = xmlVfModules.'**'.findAll {it.name() == "vf-module"}
+						int vfModulesSize = 0
+						for (i in 0..vfModules.size()-1) {
+							def vfModuleXml = groovy.xml.XmlUtil.serialize(vfModules[i])
+							def isBaseVfModule = utils.getNodeText(vfModuleXml, "is-base-vf-module")
+
+							if (isBaseVfModule == "true") {
+							    String baseModuleId = utils.getNodeText(vfModuleXml, "vf-module-id")
+							    execution.setVariable("DOUPVfMod_baseVfModuleId", baseModuleId)
+							    msoLogger.debug('Received baseVfModuleId: ' + baseModuleId)
+							    String baseModuleHeatStackId = utils.getNodeText(vfModuleXml, "heat-stack-id")
+							    execution.setVariable("DOUPVfMod_baseVfModuleHeatStackId", baseModuleHeatStackId)
+							    msoLogger.debug('Received baseVfModuleHeatStackId: ' + baseModuleHeatStackId)
+							}
+						}
+					}
+				}
+			} catch (Exception ex) {
+				ex.printStackTrace()
+				msoLogger.debug('Exception occurred while executing AAI GET:' + ex.getMessage())
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage())
+			}
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModule(): ' + e.getMessage())
+		}
+	}
+
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy
new file mode 100644
index 0000000..34a73bd
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy
@@ -0,0 +1,414 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import static org.apache.commons.lang3.StringUtils.*;
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.domain.ModelInfo
+import org.onap.so.bpmn.core.domain.ModuleResource
+import org.onap.so.bpmn.core.domain.VnfResource
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.onap.so.rest.RESTClient
+import org.onap.so.rest.RESTConfig
+import org.springframework.web.util.UriUtils;
+
+/**
+ * This class supports the VID Flow
+ * with the update of a generic vnf and related VF modules.
+ */
+class DoUpdateVnfAndModules extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoUpdateVnfAndModules.class);
+
+	String Prefix="DUVAM_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()	
+
+	/**
+	 * This method gets and validates the incoming
+	 * request.
+	 *
+	 * @param - execution
+	 *	
+	 */
+	public void preProcessRequest(DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+		msoLogger.trace("STARTED DoUpdateVnfAndModules PreProcessRequest Process")
+
+		try{
+			// Get Variables				
+			
+			String requestId = execution.getVariable("msoRequestId")
+			execution.setVariable("requestId", requestId)			
+			execution.setVariable("mso-request-id", requestId)
+			msoLogger.debug("Incoming Request Id is: " + requestId)
+
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")			
+			msoLogger.debug("Incoming Service Instance Id is: " + serviceInstanceId)
+
+			String vnfId = execution.getVariable("vnfId")			
+			msoLogger.debug("Incoming Vnf Id is: " + vnfId)			
+			
+			String source = "VID"
+			execution.setVariable("DUVAM_source", source)
+			msoLogger.debug("Incoming Source is: " + source)
+			
+			String sdncVersion = execution.getVariable("sdncVersion")
+			if (sdncVersion == null) {
+				sdncVersion = "1702"
+			}
+			execution.setVariable("DUVAM_sdncVersion", sdncVersion)
+			msoLogger.debug("Incoming Sdnc Version is: " + sdncVersion)
+			
+			VnfResource vnfResource = (VnfResource) execution.getVariable("vnfResourceDecomposition")			
+			
+			String vnfModelInfo = execution.getVariable("vnfModelInfo")
+			String serviceModelInfo = execution.getVariable("serviceModelInfo")
+				
+			String serviceId = execution.getVariable("productFamilyId")
+			execution.setVariable("DUVAM_serviceId", serviceId)
+			msoLogger.debug("Incoming Service Id is: " + serviceId)				
+			
+			String modelUuid = jsonUtil.getJsonValue(vnfModelInfo, "modelUuid")			
+			execution.setVariable("DUVAM_modelUuid", modelUuid)
+			msoLogger.debug("Incoming modelUuid is: " + modelUuid)				
+				
+			String modelCustomizationUuid = jsonUtil.getJsonValue(vnfModelInfo, "modelCustomizationUuid")			
+			execution.setVariable("DUVAM_modelCustomizationUuid", modelCustomizationUuid)
+			msoLogger.debug("Incoming Model Customization Uuid is: " + modelCustomizationUuid)
+					
+			String cloudSiteId = execution.getVariable("lcpCloudRegionId")
+			execution.setVariable("DUVAM_cloudSiteId", cloudSiteId)
+			msoLogger.debug("Incoming Cloud Site Id is: " + cloudSiteId)
+					
+			String tenantId = execution.getVariable("tenantId")
+			execution.setVariable("DUVAM_tenantId", tenantId)
+			msoLogger.debug("Incoming Tenant Id is: " + tenantId)
+				
+			String globalSubscriberId = execution.getVariable("globalSubscriberId")
+			if (globalSubscriberId == null) {
+				globalSubscriberId = ""
+			}
+			execution.setVariable("DUVAM_globalSubscriberId", globalSubscriberId)
+			msoLogger.debug("Incoming Global Subscriber Id is: " + globalSubscriberId)
+			
+			execution.setVariable("DUVAM_moduleCount", 0)
+			execution.setVariable("DUVAM_nextModule", 0)
+			
+			
+		}catch(BpmnError b){
+			msoLogger.debug("Rethrowing MSOWorkflowException")
+			throw b
+		}catch(Exception e){
+			msoLogger.debug(" Error Occured in DoUpdateVnfAndModules PreProcessRequest method!" + e.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DoUpdateVnfAndModules PreProcessRequest")
+
+		}
+		msoLogger.trace("COMPLETED DoUpdateVnfAndModules PreProcessRequest Process ")
+	}	
+	
+	/**
+	 * Using the received vnfId and vfModuleId, query AAI to get the corresponding VNF info.
+	 * A 200 response is expected with the VNF info in the response body. Will find out the base module info.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void queryAAIVfModule(DelegateExecution execution) {
+
+		def method = getClass().getSimpleName() + '.queryAAIVfModule(' +
+			'execution=' + execution.getId() +
+			')'
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def vnfId = execution.getVariable('vnfId')
+			
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String  aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution)
+			msoLogger.debug('AAI URI is: ' + aai_uri)
+
+			String endPoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + "?depth=1"
+			msoLogger.debug("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');
+				msoLogger.debug('sending GET to AAI endpoint \'' + endPoint + '\'')
+				APIResponse response = client.httpGet()
+				msoLogger.debug("createVfModule - invoking httpGet() to AAI")
+
+				responseData = response.getResponseBodyAsString()
+				if (responseData != null) {
+					msoLogger.debug("Received generic VNF data: " + responseData)
+
+				}
+
+				msoLogger.debug("createVfModule - queryAAIVfModule Response: " + responseData)
+				msoLogger.debug("createVfModule - queryAAIVfModule ResponseCode: " + response.getStatusCode())
+
+				execution.setVariable('DUVAM_queryAAIVfModuleResponseCode', response.getStatusCode())
+				execution.setVariable('DUVAM_queryAAIVfModuleResponse', responseData)
+				msoLogger.debug('Response code:' + response.getStatusCode())
+				msoLogger.debug('Response:' + System.lineSeparator() + responseData)
+				//Map<String, String>[] vfModules = new HashMap<String,String>[]
+				def vfModulesList = new ArrayList<Map<String,String>>()
+				def vfModules = null
+				def vfModuleBaseEntry = null
+				if (response.getStatusCode() == 200) {
+					// Parse the VNF record from A&AI to find base module info
+					msoLogger.debug('Parsing the VNF data to find base module info')
+					if (responseData != null) {
+						def vfModulesText = utils.getNodeXml(responseData, "vf-modules")
+						msoLogger.debug("vModulesText: " + vfModulesText)
+						if (vfModulesText != null && !vfModulesText.trim().isEmpty()) {
+							def xmlVfModules= new XmlSlurper().parseText(vfModulesText)
+							vfModules = xmlVfModules.'**'.findAll {it.name() == "vf-module"}
+							execution.setVariable("DUVAM_moduleCount", vfModules.size())
+							int vfModulesSize = 0
+							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.getNodeText(vfModuleXml, "vf-module-id")
+								vfModuleEntry.put("vfModuleId", vfModuleId)
+								def vfModuleName = utils.getNodeText(vfModuleXml, "vf-module-name")
+								vfModuleEntry.put("vfModuleName", vfModuleName)
+								def modelInvariantUuid = utils.getNodeText(vfModuleXml, "model-invariant-id")
+								vfModuleEntry.put("modelInvariantUuid", modelInvariantUuid)
+								def modelUuid = utils.getNodeText(vfModuleXml, "model-version-id")
+								vfModuleEntry.put("modelUuid", modelUuid)
+								def modelCustomizationUuid = utils.getNodeText(vfModuleXml, "model-customization-id")
+								vfModuleEntry.put("modelCustomizationUuid", modelCustomizationUuid)
+														
+								def isBaseVfModule = utils.getNodeText(vfModuleXml, "is-base-vf-module")
+								vfModuleEntry.put("isBaseVfModule", isBaseVfModule)
+								
+								String volumeGroupId = ''
+								
+								msoLogger.debug("Next module!")
+								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)
+								msoLogger.debug("volumeGroupId is: " + volumeGroupId)
+
+								// Save base vf module to add it to the start of the list later
+								if (isBaseVfModule == "true") {									
+									vfModuleBaseEntry = vfModuleEntry
+								}
+								else {						
+									vfModulesList.add(vfModuleEntry)
+								}
+							}
+							// Start the list with the base module if any
+							if (vfModuleBaseEntry != null) {
+								vfModulesList.add(0, vfModuleBaseEntry)
+							}					
+						}
+						
+					}					
+				}
+				else {
+					msoLogger.debug('Response code from AAI GET is: ' + response.getStatusCode())
+					exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Response code from AAI GET is: ' + response.getStatusCode())
+				}
+				execution.setVariable("DUVAM_vfModules", vfModulesList)
+			} catch (Exception ex) {
+				ex.printStackTrace()
+				msoLogger.debug('Exception occurred while executing AAI GET:' + ex.getMessage())
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage())
+			}
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModule(): ' + e.getMessage())
+		}
+	}
+	
+	public void prepareNextModuleToUpdate(DelegateExecution execution){
+
+		execution.setVariable("prefix", Prefix)
+		msoLogger.trace("STARTED prepareNextModuleToUpdate ")
+		
+		try {
+			int i = execution.getVariable("DUVAM_nextModule")
+			def vfModules = execution.getVariable("DUVAM_vfModules")
+			def vfModule = vfModules[i]
+			
+			def vfModuleId = vfModule.get("vfModuleId")
+			execution.setVariable("DUVAM_vfModuleId", vfModuleId)
+			
+			def vfModuleName = vfModule.get("vfModuleName")
+			execution.setVariable("DUVAM_vfModuleName", vfModuleName)
+			
+			def isBaseVfModule = vfModule.get("isBaseVfModule")
+			execution.setVariable("DUVAM_isBaseVfModule", isBaseVfModule)
+			
+			String modelInvariantUuid = vfModule.get("modelInvariantUuid")
+			msoLogger.debug("ModelInvariantUuid: " + modelInvariantUuid)			
+			
+			def volumeGroupId = vfModule.get("volumeGroupId")
+			execution.setVariable("DUVAM_volumeGroupId", volumeGroupId)
+
+			execution.setVariable("DUVAM_volumeGroupName", "")
+			
+			VnfResource vnfResource = (VnfResource) execution.getVariable("vnfResourceDecomposition")
+			List<ModuleResource> moduleResources = vnfResource.getVfModules()
+			
+			for (j in 0..moduleResources.size()-1) {				
+				ModelInfo modelInfo = moduleResources[j].getModelInfo()
+				String modelInvariantUuidFromDecomposition = modelInfo.getModelInvariantUuid()
+				msoLogger.debug("modelInvariantUuidFromDecomposition: " + modelInvariantUuidFromDecomposition)
+				
+				if (modelInvariantUuid.equals(modelInvariantUuidFromDecomposition)) {
+					String vfModuleModelInfo = modelInfo.toJsonString()
+					String vfModuleModelInfoValue = jsonUtil.getJsonValue(vfModuleModelInfo, "modelInfo")
+					execution.setVariable("DUVAM_vfModuleModelInfo", vfModuleModelInfoValue)
+					msoLogger.debug("vfModuleModelInfo: " + vfModuleModelInfoValue)
+					break
+				}
+				
+			}			
+			
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing preProcessAddOnModule. Exception is:\n" + e, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during prepareNextModuleToUpdate Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("COMPLETED prepareNextModuleToUpdate ")
+	}
+	
+	
+	/**
+	 * Prepare a Request for invoking the UpdateAAIGenericVnf subflow.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepUpdateAAIGenericVnf(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+ 
+		try {			
+			def vnfId = execution.getVariable('vnfId')
+			VnfResource vnfResource = (VnfResource) execution.getVariable("vnfResourceDecomposition")
+			ModelInfo vnfDecompModelInfo = vnfResource.getModelInfo()
+			String vnfModelInfo = execution.getVariable("vnfModelInfo")
+			String modelUuid = execution.getVariable("DUVAM_modelUuid")
+			if (modelUuid == null || modelUuid.isEmpty()) {
+				modelUuid = vnfDecompModelInfo.getModelUuid()			
+			}
+			String modelCustomizationUuid = execution.getVariable("DUVAM_modelCustomizationUuid")
+			if (modelCustomizationUuid == null || modelCustomizationUuid.isEmpty()) {
+				modelCustomizationUuid = vnfDecompModelInfo.getModelCustomizationUuid()
+			}				
+			String nfType = vnfResource.getNfType()
+			String nfTypeString = ''
+			if (nfType != null && !nfType.isEmpty()) {
+				nfTypeString = "<nf-type>" + nfType + "</nf-type>"
+			}			
+			String nfRole = vnfResource.getNfRole()
+			String nfRoleString = ''
+			if (nfRole != null && !nfRole.isEmpty()) {
+				nfRoleString = "<nf-role>" + nfRole + "</nf-role>"
+			}
+			String nfFunction = vnfResource.getNfFunction()
+			String nfFunctionString = ''
+			if (nfFunction != null && !nfFunction.isEmpty()) {
+				nfFunctionString = "<nf-function>" + nfFunction + "</nf-function>"
+			}
+			String nfNamingCode = vnfResource.getNfNamingCode()
+			String nfNamingCodeString = ''
+			if (nfNamingCode != null && !nfNamingCode.isEmpty()) {
+				nfNamingCodeString = "<nf-naming-code>" + nfNamingCode + "</nf-naming-code>"
+			}			
+ 
+			String updateAAIGenericVnfRequest = """
+					<UpdateAAIGenericVnfRequest>
+						<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+						<model-version-id>${MsoUtils.xmlEscape(modelUuid)}</model-version-id>
+						<model-customization-id>${MsoUtils.xmlEscape(modelCustomizationUuid)}</model-customization-id>
+						${nfTypeString}
+						${nfRoleString}
+						${nfFunctionString}
+						${nfNamingCodeString}
+					</UpdateAAIGenericVnfRequest>
+				"""
+				updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest)
+				execution.setVariable('DUVAM_updateAAIGenericVnfRequest', updateAAIGenericVnfRequest)
+				msoLogger.debug("updateAAIGenericVnfRequest : " + updateAAIGenericVnfRequest)
+				msoLogger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest)
+ 
+ 
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateAAIGenericVnf(): ' + e.getMessage())
+		}
+	}
+	
+	/**
+	 * APP-C Call - placeholder.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void callAppCf(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.callAppC(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)	
+	}
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/HealchCheckActivate.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/HealchCheckActivate.groovy
new file mode 100644
index 0000000..4deb53f
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/HealchCheckActivate.groovy
@@ -0,0 +1,59 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts;
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor;
+import org.apache.commons.lang3.*
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+
+
+public class HealthCheckActivate extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, HealthCheckActivate.class);
+
+	
+		/**
+	 * Validates the request message and sets up the workflow.
+	 * @param execution the execution
+	 */
+	public void preProcessRequest(DelegateExecution execution) {
+
+	}
+	
+	
+	/**
+	 * Sends the synchronous response back to the API Handler.
+	 * @param execution the execution
+	 */
+	public void sendResponse(DelegateExecution execution) {
+		def status = execution.getVariable("healthyStatus")
+		def healthcheckmessage = execution.getVariable("healthcheckmessage")
+			if (status == "true") {
+				sendWorkflowResponse(execution, 200, healthcheckmessage)
+			}else{
+				sendWorkflowResponse(execution, 503, healthcheckmessage)
+			}
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ReplaceVnfInfra.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ReplaceVnfInfra.groovy
new file mode 100644
index 0000000..8673ee7
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ReplaceVnfInfra.groovy
@@ -0,0 +1,611 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.appc.client.lcm.model.Action;
+import org.onap.appc.client.lcm.model.Status
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.domain.ModelInfo
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.bpmn.core.domain.VnfResource
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.client.aai.*
+import org.onap.so.client.appc.ApplicationControllerOrchestrator
+import org.onap.so.client.appc.ApplicationControllerSupport
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
+
+public class ReplaceVnfInfra extends VnfCmBase {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, ReplaceVnfInfra.class);
+
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtils = new JsonUtils()		
+	def prefix = "RPLVnfI_"
+
+	/**
+	 * Initialize the flow's variables.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void initProcessVariables(DelegateExecution execution) {
+		execution.setVariable('prefix', 'RPLVnfI_')
+		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('controllerType', null)
+		execution.setVariable('cloudConfiguration', null)		
+		execution.setVariable('ReplaceVnfSuccessIndicator', false)
+		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)
+		execution.setVariable("platform", null)
+		execution.setVariable("lineOfBusiness", null)
+	}
+
+	/**
+	 * 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)
+
+		msoLogger.trace('Entered ' + method)
+
+		initProcessVariables(execution)		
+
+		def incomingRequest = execution.getVariable('bpmnRequest')
+
+		msoLogger.debug("Incoming Infra Request: " + incomingRequest)
+		try {
+			def jsonSlurper = new JsonSlurper()
+			def jsonOutput = new JsonOutput()
+			Map reqMap = jsonSlurper.parseText(incomingRequest)
+			msoLogger.debug(" Request is in JSON format.")
+
+			def serviceInstanceId = execution.getVariable('serviceInstanceId')
+			def vnfId = execution.getVariable('vnfId')
+			
+			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
+			
+			def relatedInstanceList = reqMap.requestDetails?.relatedInstanceList
+						
+			if (relatedInstanceList != null) {
+				relatedInstanceList.each {
+					if (it.relatedInstance.modelInfo?.modelType == 'service') {
+						msoLogger.debug("PROCESSING SERVICE INFO")
+						asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion
+						serviceModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo)
+						msoLogger.debug("ServiceModelInfo: " + serviceModelInfo)
+						def modelInvariant = jsonUtils.getJsonValue(serviceModelInfo, "modelInvariantUuid")
+						msoLogger.debug("modelInvariant: " + modelInvariant)
+					}
+					
+				}
+			}		
+			
+			execution.setVariable('asdcServiceModelVersion', asdcServiceModelVersion)
+			execution.setVariable('serviceModelInfo', serviceModelInfo)			
+			def vnfModelInfo = jsonOutput.toJson(reqMap.requestDetails?.modelInfo)
+			execution.setVariable('vnfModelInfo', vnfModelInfo)
+			def vnfModelInvariantUuid = jsonUtils.getJsonValue(vnfModelInfo, "modelInvariantUuid")
+			execution.setVariable('vnfModelInvariantUuid', vnfModelInvariantUuid)	
+			msoLogger.debug("vnfModelInvariantUuid: " + vnfModelInvariantUuid)	
+			
+			def vnfType = execution.getVariable('vnfType')
+			execution.setVariable('vnfType', vnfType)	
+			
+
+			def controllerType = reqMap.requestDetails?.requestParameters?.controllerType
+			execution.setVariable('controllerType', controllerType)
+			
+			msoLogger.debug('Controller Type: ' + controllerType)	
+			
+			def userParams = reqMap.requestDetails?.requestParameters?.userParams					
+			
+			Map<String, String> userParamsMap = [:]
+			if (userParams != null) {
+				userParams.each { userParam ->
+					userParamsMap.put(userParam.name, userParam.value.toString())
+				}							
+			}		
+						
+			msoLogger.debug('Processed user params: ' + userParamsMap)		
+			
+			execution.setVariable('vfModuleInputParams', userParamsMap)			
+						
+			def requestId = execution.getVariable("requestId")		
+			execution.setVariable('msoRequestId', requestId)
+			msoLogger.debug("requestId is: " + requestId)
+			
+			def vnfName = reqMap.requestDetails?.requestInfo?.instanceName ?: null
+			execution.setVariable('vnfName', vnfName)
+			
+			def requestorId = reqMap.requestDetails?.requestInfo?.requestorId ?: null
+			execution.setVariable('requestorId', requestorId)
+			
+			def usePreload = reqMap.requestDetails?.requestParameters?.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('cloudConfiguration', cloudConfiguration)
+			def lcpCloudRegionId	= jsonUtils.getJsonValue(cloudConfiguration, "lcpCloudRegionId")
+			execution.setVariable('lcpCloudRegionId', lcpCloudRegionId)
+			def tenantId = jsonUtils.getJsonValue(cloudConfiguration, "tenantId")
+			execution.setVariable('tenantId', tenantId)
+			
+			def globalSubscriberId = reqMap.requestDetails?.subscriberInfo?.globalSubscriberId ?: ''
+			execution.setVariable('globalSubscriberId', globalSubscriberId)
+			
+			execution.setVariable('sdncVersion', '1702')
+
+			execution.setVariable("ReplaceVnfInfraSuccessIndicator", false)
+						
+
+			
+			def source = reqMap.requestDetails?.requestInfo?.source
+			execution.setVariable("source", source)
+			
+			//For Completion Handler & Fallout Handler
+			String requestInfo =
+			"""<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>REPLACE</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+			
+			execution.setVariable("requestInfo", requestInfo)			
+			
+			msoLogger.debug('RequestInfo: ' + execution.getVariable("requestInfo"))		
+			
+			msoLogger.trace('Exited ' + method)
+
+		}
+		catch(groovy.json.JsonException je) {
+			msoLogger.debug(" Request is not in JSON format.")
+			exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format")
+
+		}
+		catch(Exception e) {
+			String restFaultMessage = e.getMessage()
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered - " + "\n" + restFaultMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			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() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+
+		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)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+			String vnfModelInvariantUuid = execution.getVariable('vnfModelInvariantUuid')
+			msoLogger.debug("vnfModelInvariantUuid: " + vnfModelInvariantUuid)
+			List<VnfResource> vnfResources = serviceDecomposition.getVnfResources()
+			
+			for (i in 0..vnfResources.size()-1) {
+				ModelInfo modelInfo = vnfResources[i].getModelInfo()
+				String modelInvariantUuidFromDecomposition = modelInfo.getModelInvariantUuid()
+				msoLogger.debug("modelInvariantUuidFromDecomposition: " + modelInvariantUuidFromDecomposition)
+				
+				if (vnfModelInvariantUuid.equals(modelInvariantUuidFromDecomposition)) {
+					VnfResource vnfResourceDecomposition = vnfResources[i]
+					execution.setVariable('vnfResourceDecomposition', vnfResourceDecomposition)
+					def nfRole = vnfResourceDecomposition.getNfRole()					
+					execution.setVariable('nfRole', nfRole)
+					msoLogger.debug("vnfResourceDecomposition: " + vnfResourceDecomposition.toJsonString())					
+					break
+				}
+				else {
+					//exception!
+				}
+				
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		execution.setVariable("workStep", "checkIfVnfInMaintInAAI")
+		execution.setVariable("failedActivity", "AAI")
+		msoLogger.trace('Entered ' + method)
+
+		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)
+			msoLogger.debug("isInMaint result: " + isInMaint)
+			execution.setVariable('isVnfInMaintenance', isInMaint)
+			
+			if (isInMaint) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "VNF is in maintenance in A&AI")
+			}
+
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		msoLogger.trace('Entered ' + method)
+		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)
+			msoLogger.debug("areLocked result: " + areLocked)
+			execution.setVariable('arePserversLocked', areLocked)
+			
+			if (areLocked) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "pServers are locked in A&AI")
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		msoLogger.trace('Entered ' + method)
+		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)
+			}
+							
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			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(DelegateExecution execution, Action action) {
+		def method = getClass().getSimpleName() + '.runAppcCommand(' +
+			'execution=' + execution.getId() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		msoLogger.trace('Entered ' + method)		
+		
+		try {
+			msoLogger.debug("Running APP-C action: " + action.toString())
+			String vnfId = execution.getVariable('vnfId')
+			String msoRequestId = execution.getVariable('requestId')
+			execution.setVariable('msoRequestId', msoRequestId)
+			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('workStep', "LockVNF")
+					appcStatus = appcClient.runCommand(Action.Lock,msoRequestId,vnfId,null)
+					break
+				case Action.Unlock:
+					execution.setVariable('workStep', "UnlockVNF")
+					appcStatus = appcClient.runCommand(Action.Unlock,msoRequestId,vnfId,null)
+					break
+				case Action.HealthCheck:
+					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('workStep', "StartVNF")
+					appcStatus = appcClient.runCommand(Action.Start,msoRequestId,vnfId,null)
+					break
+				case Action.Stop:
+					execution.setVariable('workStep', "StopVNF")
+					appcStatus = appcClient.runCommand(Action.Stop,msoRequestId,vnfId,null)
+					break
+				default:
+					break
+			}
+			msoLogger.debug("Completed AppC request")
+			int appcCode = appcStatus.getCode()
+			msoLogger.debug("AppC status code is: " + appcCode)
+			msoLogger.debug("AppC status message is: " + appcStatus.getMessage())
+			if (support.getCategoryOf(appcStatus) == ApplicationControllerSupport.StatusCategory.ERROR) {
+				execution.setVariable("errorCode", Integer.toString(appcCode))
+				execution.setVariable("errorText", appcStatus.getMessage())
+			}
+			
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())			
+		} catch (java.lang.NoSuchMethodError e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())				
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())			
+		}
+	}
+
+
+	
+	/**
+	* Prepare DoDeleteVnfAndModules call.
+	*
+	*
+	* @param execution The flow's execution instance.
+	*/
+   public void prepDoDeleteVnfAndModules(DelegateExecution execution) {
+	   def method = getClass().getSimpleName() + '.prepDoDeleteVnfAndModules(' +
+		   'execution=' + execution.getId() +
+		   ')'
+
+	   execution.setVariable('errorCode', "0")
+	   msoLogger.trace('Entered ' + method)
+	   execution.setVariable("workStep", "doDeleteVnfAndModules")
+	   execution.setVariable("failedActivity", "MSO Delete VNF")
+	   msoLogger.trace('Exited ' + method)
+	   
+   }
+   
+   /**
+	* Prepare DoCreateVnfAndModules call.
+	*
+	*
+	* @param execution The flow's execution instance.
+	*/
+   public void prepDoCreateVnfAndModules(DelegateExecution execution) {
+	   def method = getClass().getSimpleName() + '.prepDoReplaceVnfAndModules(' +
+		   'execution=' + execution.getId() +
+		   ')'
+
+	   execution.setVariable('errorCode', "0")
+	   msoLogger.trace('Entered ' + method)
+	   execution.setVariable("workStep", "doCreateVnfAndModules")
+	   execution.setVariable("failedActivity", "MSO Create VNF")
+	   msoLogger.trace('Exited ' + method)
+	   
+   }
+	
+	
+	/**
+	 * 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() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+		
+		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(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.manualProcessing(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+		
+		def taskId = execution.getVariable("taskId")
+		
+		exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Processing halted - manual task created: " + taskId)
+	}
+
+	
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/RollbackVnf.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/RollbackVnf.groovy
new file mode 100644
index 0000000..d729c77
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/RollbackVnf.groovy
@@ -0,0 +1,148 @@
+/*-
+ * ============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.onap.so.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.io.Serializable;
+import java.util.UUID;
+import org.onap.so.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.onap.so.rest.APIResponse
+import org.onap.so.rest.RESTClient
+import org.onap.so.rest.RESTConfig
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor;
+import org.onap.so.bpmn.common.scripts.VidUtils;
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.bpmn.core.domain.ModelInfo
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.bpmn.core.domain.VnfResource
+import org.onap.so.client.aai.*
+
+import org.onap.so.client.appc.ApplicationControllerClient;
+import org.onap.so.client.appc.ApplicationControllerSupport;
+import org.onap.so.client.aai.AAIResourcesClient
+import org.onap.so.client.aai.entities.AAIResultWrapper
+import org.onap.so.client.aai.entities.uri.AAIUri
+import org.onap.so.client.aai.entities.uri.AAIUriFactory
+import org.onap.appc.client.lcm.model.Action;
+
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+public class RollbackVnf extends VnfCmBase {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, RollbackVnf.class);
+
+	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)
+
+		msoLogger.trace('Entered ' + method)
+
+		initProcessVariables(execution)
+		
+		try {
+		
+			execution.setVariable("rollbackErrorCode", "0")
+			
+			if (execution.getVariable("rollbackSetClosedLoopDisabledFlag") == true) {
+				msoLogger.debug("Will call setClosedLoopDisabledFlag")
+			}			
+
+		
+			msoLogger.trace('Exited ' + method)
+
+		}
+		catch(Exception e) {
+			String restFaultMessage = e.getMessage()
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered - " + "\n" + restFaultMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			execution.setVariable("rollbackErrorCode", "1")
+			exceptionUtil.buildAndThrowWorkflowException(execution, 5000, restFaultMessage)
+		}	
+	}
+	
+	/**
+	 * 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)
+
+		msoLogger.trace('Entered ' + method)
+		
+		def rollbackErrorCode = execution.getVariable('rollbackErrorCode')
+		if (rollbackErrorCode == "0") {
+			execution.setVariable('rollbackSuccessful', true)
+			msoLogger.debug("rollback successful")
+		}
+		else {
+			execution.setVariable('rollbackSuccessful', false)
+			msoLogger.debug("rollback unsuccessful")
+		}
+		
+		msoLogger.trace('Exited ' + method)	
+		
+	}	
+	
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ScaleCustomE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ScaleCustomE2EServiceInstance.groovy
new file mode 100644
index 0000000..3a309cf
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/ScaleCustomE2EServiceInstance.groovy
@@ -0,0 +1,296 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 CMCC. 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.onap.so.bpmn.infrastructure.scripts
+
+import static org.apache.commons.lang3.StringUtils.*
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.utils.UUIDChecker
+import org.springframework.web.util.UriUtils
+
+
+/**
+ * This groovy class supports the <class>ScaleCustomE2EServiceInstance.bpmn</class> process.
+ *
+ */
+public class ScaleCustomE2EServiceInstance extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, ScaleCustomE2EServiceInstance.class);
+
+    String Prefix = "CRESI_"
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+    JsonUtils jsonUtil = new JsonUtils()
+
+    public void preProcessRequest(DelegateExecution execution) {
+        execution.setVariable("prefix", Prefix)
+        String msg = ""
+        msoLogger.trace("preProcessRequest() ")
+
+        try {
+
+            String siRequest = execution.getVariable("bpmnRequest")
+            msoLogger.debug(siRequest)
+
+            String requestId = execution.getVariable("mso-request-id")
+            execution.setVariable("msoRequestId", requestId)
+            msoLogger.debug("Input Request:" + siRequest + " reqId:" + requestId)
+
+            String serviceInstanceId = execution.getVariable("serviceInstanceId")
+            if (isBlank(serviceInstanceId)) {
+                serviceInstanceId = "NULL".toString()
+            }
+            msoLogger.debug("Generated new Service Instance:" + serviceInstanceId)
+            serviceInstanceId = UriUtils.encode(serviceInstanceId, "UTF-8")
+            execution.setVariable("serviceInstanceId", serviceInstanceId)
+
+            // service instance ID is also service ID
+            execution.setVariable("serviceId", serviceInstanceId)
+            // service instance name
+            String serviceInstanceName = jsonUtil.getJsonValue(siRequest, "service.serviceInstanceName")
+            execution.setVariable("serviceInstanceName", serviceInstanceName)
+
+            // service instance name
+            String serviceType = jsonUtil.getJsonValue(siRequest, "service.serviceType")
+            execution.setVariable("serviceType", serviceType)
+
+            // operationa ID (key)
+            //String operationKey = UUIDChecker.generateUUID(msoLogger)
+            String operationId = jsonUtil.getJsonValue(siRequest, "operationId")
+            execution.setVariable("operationId", operationId)
+            msoLogger.debug("Input Request:" + siRequest + " operationId:" + operationId)
+
+
+            String resources = jsonUtil.getJsonValue(siRequest, "service.resources")
+            execution.setVariable("resources", resources)
+
+            // node template UUID
+            String nodeTemplateUUID = UUIDChecker.generateUUID(msoLogger)
+            execution.setVariable("nodeTemplateUUID", nodeTemplateUUID)
+
+            //subscriberInfo
+            String globalSubscriberId = jsonUtil.getJsonValue(siRequest, "service.globalSubscriberId")
+            if (isBlank(globalSubscriberId)) {
+                msg = "Input globalSubscriberId' is null"
+                exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+            } else {
+                execution.setVariable("globalSubscriberId", globalSubscriberId)
+            }
+
+            String requestDescription = "request description for test"
+            execution.setVariable("requestDescription", requestDescription)
+            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()
+            msoLogger.debug(msg)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+        }
+        msoLogger.trace("Exit preProcessRequest ")
+    }
+
+    public void sendSyncResponse(DelegateExecution execution) {
+        msoLogger.trace("sendSyncResponse ")
+
+        try {
+            String operationId = execution.getVariable("operationId")
+            String serviceInstanceId = execution.getVariable("serviceInstanceId")
+            // RESTResponse for API Handler (APIH) Reply Task
+			String scaleServiceRestRequest = """{"operationId":"${operationId}"}""".trim()
+            msoLogger.debug(" sendSyncResponse to APIH:" + "\n" + scaleServiceRestRequest)
+            sendWorkflowResponse(execution, 202, scaleServiceRestRequest)
+            execution.setVariable("sentSyncResponse", true)
+
+        } catch (Exception ex) {
+            String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage()
+            msoLogger.debug(msg)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+        }
+        msoLogger.trace("Exit sendSyncResopnse ")
+    }
+
+
+    public void sendSyncError(DelegateExecution execution) {
+        msoLogger.trace("sendSyncError ")
+
+        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.onap/so/workflow/schema/v1">
+					<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+					<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+				   </aetgt:WorkflowException>"""
+
+            msoLogger.debug(buildworkflowException)
+            sendWorkflowResponse(execution, 500, buildworkflowException)
+
+        } catch (Exception ex) {
+            msoLogger.debug(" Sending Sync Error Activity Failed. " + "\n" + ex.getMessage())
+        }
+
+    }
+
+    public void prepareCompletionRequest(DelegateExecution execution) {
+        msoLogger.trace("prepareCompletion ")
+
+        try {
+            String requestId = execution.getVariable("msoRequestId")
+            String serviceInstanceId = execution.getVariable("serviceInstanceId")
+            String source = execution.getVariable("source")
+
+            String msoCompletionRequest =
+                    """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+								xmlns:ns="http://org.onap/so/request/types/v1">
+						<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+							<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+							<action>SCALE</action>
+							<source>${MsoUtils.xmlEscape(source)}</source>
+						   </request-info>
+						<status-message>Service Instance was scaled successfully.</status-message>
+						<serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
+						   <mso-bpel-name>ScaleGenericALaCarteServiceInstance</mso-bpel-name>
+					</aetgt:MsoCompletionRequest>"""
+
+            // Format Response
+            String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+
+            execution.setVariable("CompleteMsoProcessRequest", xmlMsoCompletionRequest)
+            msoLogger.debug(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest)
+
+        } catch (Exception ex) {
+            String msg = " Exception in prepareCompletion:" + ex.getMessage()
+            msoLogger.debug(msg)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+        }
+        msoLogger.trace("Exit prepareCompletionRequest ")
+    }
+
+    public void prepareFalloutRequest(DelegateExecution execution) {
+        msoLogger.trace("prepareFalloutRequest ")
+
+        try {
+            WorkflowException wfex = execution.getVariable("WorkflowException")
+            msoLogger.debug(" Input Workflow Exception: " + wfex.toString())
+            String requestId = execution.getVariable("msoRequestId")
+            String source = execution.getVariable("source")
+            String requestInfo =
+                    """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>SCALE</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+
+            String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo)
+            execution.setVariable("falloutRequest", falloutRequest)
+        } catch (Exception ex) {
+            msoLogger.debug("Exception prepareFalloutRequest:" + ex.getMessage())
+            String errorException = "  Bpmn error encountered in ScaleGenericALaCarteServiceInstance flow. FalloutHandlerRequest,  buildErrorResponse() - " + ex.getMessage()
+            String requestId = execution.getVariable("msoRequestId")
+            String falloutRequest =
+                    """<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+												 xmlns:ns="http://org.onap/so/request/types/v1"
+												 xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
+					   <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+						  <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+						  <action>SCALE</action>
+						  <source>UUI</source>
+					   </request-info>
+						<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+							<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage>
+							<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+						</aetgt:WorkflowException>
+					</aetgt:FalloutHandlerRequest>"""
+
+            execution.setVariable("falloutRequest", falloutRequest)
+        }
+        msoLogger.trace("Exit prepareFalloutRequest ")
+    }
+
+
+    /**
+     * Init the service Operation Status
+     */
+    public void prepareInitServiceOperationStatus(DelegateExecution execution){
+        msoLogger.trace("STARTED prepareInitServiceOperationStatus Process ")
+        try{
+            String serviceId = execution.getVariable("serviceInstanceId")
+            //String serviceName = execution.getVariable("serviceInstanceName")
+            String operationId = execution.getVariable("operationId")
+            String operationType = "SCALE"
+            String userId = ""
+            String result = "processing"
+            String progress = "0"
+            String reason = ""
+            String operationContent = "Prepare service scaling"
+            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)
+            msoLogger.info("DB Adapter Endpoint is: " + dbAdapterEndpoint)
+
+            String payload =
+                    """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                        <soapenv:Header/>
+                        <soapenv:Body>
+                            <ns:updateServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
+                            <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
+                            <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                            <serviceName>${MsoUtils.xmlEscape(serviceName)}</serviceName>
+                            <operationType>${MsoUtils.xmlEscape(operationType)}</operationType>
+                            <userId>${MsoUtils.xmlEscape(userId)}</userId>
+                            <result>${MsoUtils.xmlEscape(result)}</result>
+                            <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent>
+                            <progress>${MsoUtils.xmlEscape(progress)}</progress>
+                            <reason>${MsoUtils.xmlEscape(reason)}</reason>
+                        </ns:updateServiceOperationStatus>
+                    </soapenv:Body>
+                </soapenv:Envelope>"""
+
+            payload = utils.formatXml(payload)
+            execution.setVariable("CVFMI_updateServiceOperStatusRequest", payload)
+            msoLogger.info("Outgoing updateServiceOperStatusRequest: \n" + payload)
+            msoLogger.debug("Scale network service updateServiceOperStatusRequest Request: " + payload)
+
+        }catch(Exception e){
+            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occured Processing prepareInitServiceOperationStatus.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, e);
+            execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during prepareInitServiceOperationStatus Method:\n" + e.getMessage())
+        }
+        msoLogger.trace("COMPLETED prepareInitServiceOperationStatus Process ")
+    }
+}
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy
new file mode 100644
index 0000000..538f882
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy
@@ -0,0 +1,570 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. All rights reserved. 
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.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.json.JSONArray
+import org.json.JSONObject
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.domain.Resource
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.springframework.web.util.UriUtils
+
+import groovy.json.*
+
+/**
+ * This groovy class supports the <class>UpdateCustomE2EServiceInstance.bpmn</class> process.
+ * AlaCarte flow for 1702 ServiceInstance Update
+ *
+ */
+public class UpdateCustomE2EServiceInstance extends AbstractServiceTaskProcessor {
+	String Prefix="UPDSI_"
+	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("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)) {
+				msg = "Input serviceInstanceId' is null"
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+						
+			//subscriberInfo for aai
+			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)
+			}
+
+			//requestDetails
+			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)				
+			} else {
+				execution.setVariable("productFamilyId", productFamilyId)
+			}
+			
+			 //user params
+	         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")			
+			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)
+
+			//serviceType for aai
+			String serviceType = jsonUtil.getJsonValue(uuiRequest, "service.serviceType")
+			if (isBlank(serviceType)) {
+				msg = "Input serviceType is null"
+				utils.log("INFO", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else {
+				execution.setVariable("serviceType", serviceType)
+			}
+			
+			// target model info
+			String modelInvariantUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceInvariantUuid")
+			utils.log("INFO","modelInvariantUuid: " + modelInvariantUuid, isDebugEnabled)
+			execution.setVariable("modelInvariantUuid", modelInvariantUuid)
+			execution.setVariable("model-invariant-id-target", modelInvariantUuid)
+			
+			String modelUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceUuid")
+			utils.log("INFO","modelUuid: " + modelUuid, isDebugEnabled)
+			execution.setVariable("modelUuid", modelUuid)
+			execution.setVariable("model-version-id-target", modelUuid)
+			
+			String serviceModelName = jsonUtil.getJsonValue(uuiRequest, "service.parameters.templateName")
+			utils.log("INFO","serviceModelName: " + serviceModelName, isDebugEnabled)
+			if(serviceModelName == null) {
+				serviceModelName = ""
+			}
+			execution.setVariable("serviceModelName", serviceModelName)			
+			
+			//operationId
+			String operationId = jsonUtil.getJsonValue(siRequest, "operationId")
+		 	if (isBlank(operationId)) {
+		 		operationId = UUID.randomUUID().toString()
+		 	 }   
+			execution.setVariable("operationId", operationId) 
+			execution.setVariable("operationType", "update")
+			execution.setVariable("hasResourcetoUpdate", false)
+			
+			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 postProcessAAIGET(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO"," ***** postProcessAAIGET ***** ", isDebugEnabled)
+		String msg = ""
+
+		try {
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator")
+			String serviceType = ""
+
+			if(foundInAAI){
+				utils.log("INFO","Found Service-instance in AAI", isDebugEnabled)
+
+				String siData = execution.getVariable("GENGS_service")
+				utils.log("INFO", "SI Data", isDebugEnabled)
+				if (isBlank(siData))
+				{
+					msg = "Could not retrive ServiceInstance data from AAI, Id:" + serviceInstanceId
+					utils.log("INFO", msg, isDebugEnabled)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+				}
+
+				utils.log("INFO", "SI Data" + siData, isDebugEnabled)
+				
+				// serviceInstanceName
+				String serviceInstanceName = execution.getVariable("serviceInstanceName")
+				if(isBlank(serviceInstanceName) && utils.nodeExists(siData, "service-instance-name")) {
+					serviceInstanceName =  utils.getNodeText(siData, "service-instance-name")
+					execution.setVariable("serviceInstanceName", serviceInstanceName)
+				}
+
+				// Get Template uuid and version
+				if (utils.nodeExists(siData, "model-invariant-id") && utils.nodeExists(siData, "model-version-id") ) {
+					utils.log("INFO", "SI Data model-invariant-id and model-version-id exist:", isDebugEnabled)
+
+					def modelInvariantId  = utils.getNodeText(siData, "model-invariant-id")
+					def modelVersionId  = utils.getNodeText(siData, "model-version-id")
+
+					// Set Original Template info
+					execution.setVariable("model-invariant-id-original", modelInvariantId)
+					execution.setVariable("model-version-id-original", modelVersionId)
+				}
+				
+				//get related service instances (vnf/network or volume) for delete
+				if (utils.nodeExists(siData, "relationship-list")) {
+					utils.log("INFO", "SI Data relationship-list exists:", isDebugEnabled)
+
+					JSONArray jArray = new JSONArray()
+
+					XmlParser xmlParser = new XmlParser()
+					Node root = xmlParser.parseText(siData)
+					def relation_list = utils.getChildNode(root, 'relationship-list')
+					def relationships = utils.getIdenticalChildren(relation_list, 'relationship')
+
+					for (def relation: relationships) {
+						def jObj = getRelationShipData(relation, isDebugEnabled)
+						jArray.put(jObj)
+					}
+
+					execution.setVariable("serviceRelationShip", jArray.toString())
+				}
+			}else{
+				boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")
+				if(!succInAAI){
+					utils.log("INFO","Error getting Service-instance from AAI", + serviceInstanceId, isDebugEnabled)
+					WorkflowException workflowException = execution.getVariable("WorkflowException")
+					utils.logAudit("workflowException: " + workflowException)
+					if(workflowException != null){
+						exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+					}
+					else
+					{
+						msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI
+						utils.log("INFO", msg, isDebugEnabled)
+						exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+					}
+				}
+
+				utils.log("INFO","Service-instance NOT found in AAI. Silent Success", isDebugEnabled)
+			}
+		}catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoDeleteE2EServiceInstance.postProcessAAIGET. " + ex.getMessage()
+			utils.log("INFO", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("INFO"," *** Exit postProcessAAIGET *** ", isDebugEnabled)
+	}
+	
+	private JSONObject getRelationShipData(node, isDebugEnabled){
+		JSONObject jObj = new JSONObject()
+		
+		def relation  = utils.nodeToString(node)
+		def rt  = utils.getNodeText(relation, "related-to")
+		
+		def rl  = utils.getNodeText(relation, "related-link")
+		utils.log("INFO", "ServiceInstance Related NS/Configuration :" + rl, isDebugEnabled)
+		
+		def rl_datas = utils.getIdenticalChildren(node, "relationship-data")
+		for(def rl_data : rl_datas) {
+			def eKey =  utils.getChildNodeText(rl_data, "relationship-key")
+			def eValue = utils.getChildNodeText(rl_data, "relationship-value")
+
+			if ((rt == "service-instance" && eKey.equals("service-instance.service-instance-id"))
+			//for overlay/underlay
+			|| (rt == "configuration" && eKey.equals("configuration.configuration-id"))){
+				jObj.put("resourceInstanceId", eValue)
+			}
+		}
+
+		def rl_props = utils.getIdenticalChildren(node, "related-to-property")
+		for(def rl_prop : rl_props) {
+			def eKey =  utils.getChildNodeText(rl_prop, "property-key")
+			def eValue = utils.getChildNodeText(rl_prop, "property-value")
+			if((rt == "service-instance" && eKey.equals("service-instance.service-instance-name"))
+			//for overlay/underlay
+			|| (rt == "configuration" && eKey.equals("configuration.configuration-type"))){
+				jObj.put("resourceType", eValue)
+			}
+		}
+
+		utils.log("INFO", "Relationship related to Resource:" + jObj.toString(), isDebugEnabled)
+
+		return jObj
+	}
+	
+	
+	public void preCompareModelVersions(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+	}
+
+	public void postCompareModelVersions(DelegateExecution execution) {		
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " ======== STARTED postCompareModelVersions Process ======== ", isDebugEnabled)
+		
+		def hasResourcetoUpdate = false
+		def hasResourcetoAdd = false
+		def hasResourcetoDelete = false
+		List<Resource> addResourceList =  execution.getVariable("addResourceList")
+		List<Resource> delResourceList =  execution.getVariable("delResourceList")
+		
+		if(addResourceList != null && !addResourceList.isEmpty()) {
+			hasResourcetoAdd = true
+		}
+				
+		if(delResourceList != null && !delResourceList.isEmpty()) {
+			hasResourcetoDelete = true
+		}
+		
+		hasResourcetoUpdate = hasResourcetoAdd || hasResourcetoDelete
+		execution.setVariable("hasResourcetoUpdate", hasResourcetoUpdate)
+		
+		utils.log("DEBUG", "======== COMPLETED postCompareModelVersions Process ======== ", 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 = execution.getVariable("operationId")
+			String operationType = execution.getVariable("operationType")
+			String userId = ""
+			String result = "processing"
+			String progress = "0"
+			String reason = ""
+			String operationContent = "Prepare service updating"
+			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.onap.so/requestsdb">
+                        <soapenv:Header/>
+                        <soapenv:Body>
+                            <ns:updateServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
+                            <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
+                            <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                            <operationType>${MsoUtils.xmlEscape(operationType)}</operationType>
+                            <userId>${MsoUtils.xmlEscape(userId)}</userId>
+                            <result>${MsoUtils.xmlEscape(result)}</result>
+                            <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent>
+                            <progress>${MsoUtils.xmlEscape(progress)}</progress>
+                            <reason>${MsoUtils.xmlEscape(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)
+	}
+	
+	/**
+	 * Update the service Operation Status
+	 */
+	public void preUpdateServiceOperationStatus(DelegateExecution execution){		
+		def method = getClass().getSimpleName() + '.preUpdateServiceOperationStatus(' +'execution=' + execution.getId() +')'
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO","Entered " + method, isDebugEnabled)
+		
+		try{
+			String serviceId = execution.getVariable("serviceInstanceId")
+			String operationId = execution.getVariable("operationId")
+			String operationType = execution.getVariable("operationType")
+			String serviceName = execution.getVariable("serviceInstanceName")
+			String result = execution.getVariable("operationResult")						
+			String progress = execution.getVariable("progress")
+			String reason = execution.getVariable("operationReason")
+			String userId = ""
+			utils.log("INFO", "progress: " + progress , isDebugEnabled)
+
+			String operationContent = "Prepare service : " + execution.getVariable("operationStatus")
+			
+			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 = "http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter"
+			execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint)
+			utils.log("INFO", "DB Adapter Endpoint is: " + dbAdapterEndpoint, isDebugEnabled)
+
+			execution.setVariable("URN_mso_openecomp_adapters_db_endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter")
+			String payload =
+				"""<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                        <soapenv:Header/>
+                        <soapenv:Body>
+                            <ns:updateServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
+                            <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
+                            <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                            <operationType>${MsoUtils.xmlEscape(operationType)}</operationType>
+                            <userId>${MsoUtils.xmlEscape(userId)}</userId>
+                            <result>${MsoUtils.xmlEscape(result)}</result>
+                            <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent>
+                            <progress>${MsoUtils.xmlEscape(progress)}</progress>
+                            <reason>${MsoUtils.xmlEscape(reason)}</reason>
+                        </ns:updateServiceOperationStatus>
+                    </soapenv:Body>
+                </soapenv:Envelope>"""
+
+			payload = utils.formatXml(payload)
+			execution.setVariable("CVFMI_updateServiceOperStatusRequest", payload)
+			utils.log("INFO", "Outgoing preUpdateServiceOperationStatus: \n" + payload, isDebugEnabled)
+		   
+
+		}catch(Exception e){
+			utils.log("ERROR", "Exception Occured Processing preUpdateServiceOperationStatus. Exception is:\n" + e, isDebugEnabled)
+			execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during preUpdateServiceOperationStatus Method:\n" + e.getMessage())
+		}
+		utils.log("INFO", "======== COMPLETED preUpdateServiceOperationStatus Process ======== ", isDebugEnabled)
+		utils.log("INFO", "Exited " + method, isDebugEnabled)
+	}		
+
+	public void sendSyncResponse (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO", " *** sendSyncResponse *** ", isDebugEnabled)
+
+		try {
+			String operationId = execution.getVariable("operationId")
+			def hasResourcetoUpdate = execution.getVariable("hasResourcetoUpdate")
+			
+			String updateServiceResp = ""
+			if(hasResourcetoUpdate) {
+				// RESTResponse for API Handler (APIH) Reply Task
+				updateServiceResp = """{"operationId":"${operationId}"}""".trim()
+			}
+			else {
+				updateServiceResp =  """{"OperationResult":"No Resource to Add or Delete or Service Instance not found in AAI."}"""
+			}
+			
+			utils.log("INFO", " sendSyncResponse to APIH:" + "\n" + updateServiceResp, isDebugEnabled)
+			sendWorkflowResponse(execution, 202, updateServiceResp)
+			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 (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO", " *** sendSyncError *** ", isDebugEnabled)
+
+		try {
+			String errorMessage = ""
+			int errorCode = 7000
+			if (execution.getVariable("WorkflowException") instanceof WorkflowException) {
+				WorkflowException wfe = execution.getVariable("WorkflowException")
+				errorMessage = wfe.getErrorMessage()
+				errorCode = wfe.getErrorCode()
+			} else {
+				errorMessage = "Sending Sync Error."
+			}
+
+			String buildworkflowException =
+					"""<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+					<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+					<aetgt:ErrorCode>${MsoUtils.xmlEscape(errorCode)}</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 (DelegateExecution 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:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+								xmlns:ns="http://org.onap/so/request/types/v1">
+						<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+							<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+							<action>UPDATE</action>
+							<source>${MsoUtils.xmlEscape(source)}</source>
+			   			</request-info>
+						<status-message>Service Instance was updated successfully.</status-message>
+						<serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
+			   			<mso-bpel-name>UpdateCustomE2EServiceInstance</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(DelegateExecution 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-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>UPDATE</action>
+					<source>${MsoUtils.xmlEscape(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 UpdateCustomE2EServiceInstance flow. FalloutHandlerRequest,  buildErrorResponse() - " + ex.getMessage()
+			String requestId = execution.getVariable("msoRequestId")
+			String falloutRequest =
+					"""<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+					                             xmlns:ns="http://org.onap/so/request/types/v1"
+					                             xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
+					   <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					      <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					      <action>UPDATE</action>
+					      <source>UUI</source>
+					   </request-info>
+						<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+							<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage>
+							<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+						</aetgt:WorkflowException>
+					</aetgt:FalloutHandlerRequest>"""
+
+			execution.setVariable("falloutRequest", falloutRequest)
+		}
+		utils.log("INFO", "*** Exit prepareFalloutRequest ***", isDebugEnabled)
+	}	
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateNetworkInstance.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateNetworkInstance.groovy
new file mode 100644
index 0000000..329d58a
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateNetworkInstance.groovy
@@ -0,0 +1,403 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts;
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MsoLogger
+
+import groovy.json.*
+
+/**
+ * This groovy class supports the <class>UpdateNetworkInstance.bpmn</class> process.
+ *
+ */
+public class UpdateNetworkInstance extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, UpdateNetworkInstance.class);
+	
+	String Prefix="UPDNI_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	public InitializeProcessVariables(DelegateExecution execution){
+
+		execution.setVariable(Prefix + "source", "")
+		execution.setVariable(Prefix + "Success", false)
+
+		execution.setVariable(Prefix + "CompleteMsoProcessRequest", "")
+		execution.setVariable(Prefix + "FalloutHandlerRequest", "")
+
+	}
+
+
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>UpdateNetworkInstance.bpmn</class> process.
+	 * @param execution
+	 */
+
+	// **************************************************
+	//     Pre or Prepare Request Section
+	// **************************************************
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>UpdateNetworkInstance.bpmn</class> process.
+	 * @param execution
+	 */
+	public void preProcessRequest (DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside preProcessRequest() of UpdateNetworkInstance Request")
+
+		try {
+			// initialize flow variables
+			InitializeProcessVariables(execution)
+
+			String sdncVersion = execution.getVariable("sdncVersion")
+			if (sdncVersion == null || sdncVersion == "1610") {
+				// 'a-la-cart' default, sdncVersion = '1610'
+				execution.setVariable("sdncVersion", "1610")
+				String bpmnRequest = execution.getVariable("bpmnRequest")
+				if (bpmnRequest != null) {                                        
+					String disableRollback = jsonUtil.getJsonValue(bpmnRequest, "requestDetails.requestInfo.suppressRollback")
+					if (disableRollback != null) {
+					   execution.setVariable("disableRollback", disableRollback)
+					   msoLogger.debug("Received 'suppressRollback': " + disableRollback )
+					} else {
+					   execution.setVariable("disableRollback", false)
+					}   
+					msoLogger.debug(" Set 'disableRollback' : " + execution.getVariable("disableRollback") )
+				} else {
+					String dataErrorMessage = " Invalid 'bpmnRequest' request."
+					msoLogger.debug(dataErrorMessage)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+				}
+
+			} else {
+			    // 'macro' TEST ONLY, sdncVersion = '1702'
+			    msoLogger.debug(" \'disableRollback\' : " + execution.getVariable("disableRollback") )
+			}
+
+			String requestId = execution.getVariable("msoRequestId")
+			if (requestId != null) {
+				execution.setVariable("mso-request-id", requestId)
+			} else {
+				requestId = execution.getVariable("mso-request-id")
+			}
+			execution.setVariable(Prefix + "requestId", requestId)
+
+			// get/set 'requestId'
+			if (execution.getVariable("requestId") == null) {
+				execution.setVariable("requestId", requestId)
+			}
+
+			//Place holder for additional code.
+
+			// TODO ???
+			// userParams???  1) pre-loads indicator, 2) 'auto-activation'
+			// Tag/Value parameters
+			//
+			// Map: 'networkInputParams': 'auto-activation''
+			// Sample format?
+			// "requestParameters": {
+  			//     "userParams": [
+            //          {
+			//	         "name": "someUserParam1",
+			//	         "value": "someValue1"
+			//          }
+            //     ]
+		    //   }
+			//
+			// String userParams = //use json util to extract "userParams"//
+	        // execution.setVariable("networkInputParams", userParams)
+			// else: execution.setVariable("networkInputParams", null)
+			//
+
+		} catch (BpmnError e) {
+		    throw e;
+
+		} catch (Exception ex){
+			sendSyncError(execution)
+			 // caught exception
+			String exceptionMessage = "Exception Encountered in UpdateNetworkInstance, PreProcessRequest() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+	}
+
+	public void sendSyncResponse (DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside sendSyncResponse() of UpdateNetworkInstance")
+
+		try {
+			String requestId = execution.getVariable("mso-request-id")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+			// RESTResponse (for API Handler (APIH) Reply Task)
+			String updateNetworkRestRequest = """{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim()
+
+			msoLogger.debug(" sendSyncResponse to APIH - " + "\n" + updateNetworkRestRequest)
+			sendWorkflowResponse(execution, 202, updateNetworkRestRequest)
+
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in UpdateNetworkInstance flow. sendSyncResponse() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+
+	}
+
+
+	public void getNetworkModelInfo (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside getNetworkModelInfo() of UpdateNetworkInstance")
+
+		try {
+
+			// For Ala-Carte (sdnc = 1610): 
+			// 1. the Network ModelInfo is expected to be sent 
+			//     via requestDetails.modelInfo (modelType = network), ex: modelCustomizationId
+			// 2. the Service ModelInfo is expected to be sent but will be IGNORE 
+			//     via requestDetails.relatedInstanceList.relatedInstance.modelInfo (modelType = service)
+			
+		} catch (Exception ex) {
+			sendSyncError(execution)
+		   String exceptionMessage = "Bpmn error encountered in UpdateNetworkInstance flow. getNetworkModelInfo() - " + ex.getMessage()
+		   msoLogger.debug(exceptionMessage)
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+	}
+
+
+	public void sendSyncError (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside sendSyncError() of UpdateNetworkInstance")
+
+		try {
+
+			String requestId = execution.getVariable("mso-request-id")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+			// REST Error (for API Handler (APIH) Reply Task)
+			String syncError = """{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim()
+
+			sendWorkflowResponse(execution, 500, syncError)
+
+		} catch (Exception ex) {
+			msoLogger.debug(" Bpmn error encountered in UpdateNetworkInstance flow. sendSyncError() - " + ex.getMessage())
+		}
+
+	}
+
+	public void prepareCompletion (DelegateExecution execution) {
+
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside prepareCompletion() of UpdateNetworkInstance")
+
+		try {
+
+			String requestId = execution.getVariable("mso-request-id")
+			String source = execution.getVariable(Prefix + "source")
+
+			String msoCompletionRequest =
+				"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+								xmlns:ns="http://org.onap/so/request/types/v1">
+						<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+							<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+							<action>UPDATE</action>
+							<source>VID</source>
+			   			</request-info>
+						<aetgt:status-message>Network has been updated successfully.</aetgt:status-message>
+			   			<aetgt:mso-bpel-name>BPMN Network action: UPDATE</aetgt:mso-bpel-name>
+					</aetgt:MsoCompletionRequest>"""
+
+				// Format Response
+			String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+
+			// normal path
+			execution.setVariable(Prefix + "Success", true)
+			execution.setVariable(Prefix + "CompleteMsoProcessRequest", xmlMsoCompletionRequest)
+			msoLogger.debug(" Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest)
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in UpdateNetworkInstance flow. prepareCompletion() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+		}
+
+
+	}
+
+
+
+
+	// **************************************************
+	//     Post or Validate Response Section
+	// **************************************************
+
+	public void postProcessResponse (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside postProcessResponse() of UpdateNetworkInstance")
+
+		try {
+
+			if (execution.getVariable("CMSO_ResponseCode") == "200") {
+				execution.setVariable(Prefix + "Success", true)
+				msoLogger.trace("UpdateNetworkInstance Success ")
+				//   Place holder for additional code.
+
+			 } else {
+				execution.setVariable(Prefix + "Success", false)
+				msoLogger.trace("UpdateNetworkInstance Failed in CompletionMsoProces flow!. ")
+
+			 }
+
+
+		} catch (Exception ex) {
+			String exceptionMessage = " Bpmn error encountered in UpdateNetworkInstance flow. postProcessResponse() - " + ex.getMessage()
+			msoLogger.debug(exceptionMessage)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+
+	    }
+
+	}
+
+
+	// *******************************
+	//     Build Error Section
+	// *******************************
+
+	public void processRollbackData (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+
+		msoLogger.trace("Inside processRollbackData() of UpdateNetworkInstance")
+
+		try {
+			//execution.getVariable("orchestrationStatus")
+			//execution.getVariable("networkId")
+			//execution.getVariable("networkName")
+			//networkOutputParams
+			//rollbackData
+			//rolledBack
+
+		} catch (Exception ex) {
+			msoLogger.debug(" Bpmn error encountered in UpdateNetworkInstance flow. callDBCatalog() - " + ex.getMessage())
+		}
+
+	}
+
+	// Prepare for FalloutHandler
+	public void buildErrorResponse (DelegateExecution execution) {
+
+		execution.setVariable("prefix", Prefix)
+		
+		msoLogger.trace("Prepare for FalloutHandler. FAILURE - prepare request for sub-process FalloutHandler. ")
+		
+		String falloutHandlerRequest = ""
+		String requestId = execution.getVariable("mso-request-id")
+
+		try {
+			
+			WorkflowException wfe = execution.getVariable("WorkflowException")
+			String errorCode = String.valueOf(wfe.getErrorCode())
+			String errorMessage = wfe.getErrorMessage()
+			falloutHandlerRequest =
+				"""<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+					                             xmlns:ns="http://org.onap/so/request/types/v1"
+					                             xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
+					   <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					      <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					      <action>UPDATE</action>
+					      <source>VID</source>
+					   </request-info>
+						<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+							<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+							<aetgt:ErrorCode>${MsoUtils.xmlEscape(errorCode)}</aetgt:ErrorCode>
+						</aetgt:WorkflowException>
+					</aetgt:FalloutHandlerRequest>"""
+
+			msoLogger.debug(falloutHandlerRequest)
+			execution.setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequest)
+			msoLogger.debug("  Overall Error Response going to FalloutHandler: " + "\n" + falloutHandlerRequest)
+
+		} catch (Exception ex) {
+			String errorException = "  Bpmn error encountered in UpdateNetworkInstance flow. FalloutHandlerRequest,  buildErrorResponse() - "
+			msoLogger.debug("Exception error in UpdateNetworkInstance flow,  buildErrorResponse(): " +  ex.getMessage())
+			falloutHandlerRequest =
+			"""<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+					                             xmlns:ns="http://org.onap/so/request/types/v1"
+					                             xmlns:wfsch="http://org.onap/so/workflow/schema/v1">
+					   <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					      <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					      <action>UPDATE</action>
+					      <source>VID</source>
+					   </request-info>
+						<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+							<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorException)}</aetgt:ErrorMessage>
+							<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+						</aetgt:WorkflowException>
+					</aetgt:FalloutHandlerRequest>"""
+
+			execution.setVariable(Prefix + "FalloutHandlerRequest", falloutHandlerRequest)
+			msoLogger.debug("  Overall Error Response going to FalloutHandler: " + "\n" + falloutHandlerRequest)
+
+		}
+
+	}
+
+	public void processJavaException(DelegateExecution execution){
+
+		execution.setVariable("prefix",Prefix)
+		try{
+			msoLogger.debug("Caught a Java Exception in " + Prefix)
+			msoLogger.debug("Started processJavaException Method")
+			msoLogger.debug("Variables List: " + execution.getVariables())
+			execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
+
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during processJavaException Method: " + e)
+			execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix)
+		}
+		msoLogger.debug("Completed processJavaException Method in " + Prefix)
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModule.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModule.groovy
new file mode 100644
index 0000000..b1aaf5e
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModule.groovy
@@ -0,0 +1,326 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+
+public class UpdateVfModule extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, UpdateVfModule.class);
+
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	/**
+	 * Initialize the flow's variables.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void initProcessVariables(DelegateExecution execution) {
+		execution.setVariable('prefix', 'UPDVfMod_')
+		execution.setVariable('UPDVfMod_Request', null)
+		execution.setVariable('UPDVfMod_requestInfo', null)
+		execution.setVariable('UPDVfMod_requestId', null)
+		execution.setVariable('UPDVfMod_source', null)
+		execution.setVariable('UPDVfMod_vnfInputs', null)
+		execution.setVariable('UPDVfMod_vnfId', null)
+		execution.setVariable('UPDVfMod_vfModuleId', null)
+		execution.setVariable('UPDVfMod_tenantId', null)
+		execution.setVariable('UPDVfMod_volumeGroupId', null)
+		execution.setVariable('UPDVfMod_vnfParams', null)
+		execution.setVariable('UPDVfMod_updateInfraRequest', null)
+		execution.setVariable('UpdateVfModuleSuccessIndicator', 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() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			initProcessVariables(execution)
+			String request = validateRequest(execution)
+
+			msoLogger.debug("UpdateVfModule request: " + request)
+			def requestInfo = getRequiredNodeXml(execution, request, 'request-info')
+			execution.setVariable('UPDVfMod_requestInfo', requestInfo)
+			execution.setVariable('UPDVfMod_requestId', getRequiredNodeText(execution, requestInfo, 'request-id'))
+			execution.setVariable('UPDVfMod_source', getNodeTextForce(requestInfo, 'source'))
+
+			def vnfInputs = getRequiredNodeXml(execution, request, 'vnf-inputs')
+			execution.setVariable('UPDVfMod_vnfInputs', vnfInputs)
+			execution.setVariable('UPDVfMod_vnfId', getRequiredNodeText(execution, vnfInputs, 'vnf-id'))
+			execution.setVariable('UPDVfMod_vfModuleId', getRequiredNodeText(execution, vnfInputs, 'vf-module-id'))
+			execution.setVariable('UPDVfMod_tenantId', getRequiredNodeText(execution, vnfInputs, 'tenant-id'))
+			execution.setVariable('UPDVfMod_volumeGroupId', getNodeTextForce(vnfInputs, 'volume-group-id'))
+
+			def vnfParams = utils.getNodeXml(request, 'vnf-params')
+			execution.setVariable('UPDVfMod_vnfParams', vnfParams)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preProcessRequest(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare and send the synchronous response for this flow.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void sendSynchResponse(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.sendSynchResponse(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def requestInfo = execution.getVariable('UPDVfMod_requestInfo')
+			def requestId = execution.getVariable('UPDVfMod_requestId')
+			def source = execution.getVariable('UPDVfMod_source')
+			def progress = getNodeTextForce(requestInfo, 'progress')
+			if (progress.isEmpty()) {
+				progress = '0'
+			}
+			def startTime = getNodeTextForce(requestInfo, 'start-time')
+			if (startTime.isEmpty()) {
+				startTime = System.currentTimeMillis()
+			}
+			def vnfInputs = execution.getVariable('UPDVfMod_vnfInputs')
+
+			String synchResponse = """
+				<vnf-request xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-info>
+						<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+						<action>UPDATE_VF_MODULE</action>
+						<request-status>IN_PROGRESS</request-status>
+						<progress>${MsoUtils.xmlEscape(progress)}</progress>
+						<start-time>${MsoUtils.xmlEscape(startTime)}</start-time>
+						<source>${MsoUtils.xmlEscape(source)}</source>
+					</request-info>
+					${vnfInputs}
+				</vnf-request>
+			"""
+
+			synchResponse = utils.formatXml(synchResponse)
+			sendWorkflowResponse(execution, 200, synchResponse)
+
+			msoLogger.debug("UpdateVfModule Synch Response: " + synchResponse)
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendSynchResponse(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare the Request for invoking the DoUpdateVfModule subflow.
+	 *
+	 * NOTE: Currently, the method just logs passing through as the
+	 * incoming Request to this main flow is used as the Request to
+	 * the DoUpdateVfModule subflow. No preparation processing is
+	 * necessary.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepDoUpdateVfModule(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepDoUpdateVfModule(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepDoUpdateVfModule(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare the Request for updating the DB for this Infra Request.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepUpdateInfraRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepUpdateInfraRequest(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def requestId = execution.getVariable('UPDVfMod_requestId')
+			def vnfId = execution.getVariable('UPDVfMod_vnfId')
+			def vfModuleId = execution.getVariable('UPDVfMod_vfModuleId')
+			def tenantId = execution.getVariable('UPDVfMod_tenantId')
+			def volumeGroupId = execution.getVariable('UPDVfMod_volumeGroupId')
+
+			String updateInfraRequest = """
+				<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+						xmlns:req="http://org.onap.so/requestsdb">
+					<soapenv:Header/>
+					<soapenv:Body>
+						<req:updateInfraRequest>
+							<requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+							<lastModifiedBy>BPEL</lastModifiedBy>
+							<requestStatus>COMPLETE</requestStatus>
+							<progress>100</progress>
+							<vnfOutputs>
+								<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+								<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+								<tenant-id>${MsoUtils.xmlEscape(tenantId)}</tenant-id>
+								<volume-group-id>${MsoUtils.xmlEscape(volumeGroupId)}</volume-group-id>
+							</vnfOutputs>
+						</req:updateInfraRequest>
+					</soapenv:Body>
+				</soapenv:Envelope>
+			"""
+
+			updateInfraRequest = utils.formatXml(updateInfraRequest)
+			execution.setVariable('UPDVfMod_updateInfraRequest', updateInfraRequest)
+			msoLogger.debug('Request for Update Infra Request:\n' + updateInfraRequest)
+
+			msoLogger.debug("UpdateVfModule Infra Request: " + updateInfraRequest)
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateInfraRequest(): ' + 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(DelegateExecution execution, String resultVar) {
+		def method = getClass().getSimpleName() + '.completionHandlerPrep(' +
+			'execution=' + execution.getId() +
+			', resultVar=' + resultVar +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def requestInfo = getVariable(execution, 'UPDVfMod_requestInfo')
+
+			String content = """
+				<sdncadapterworkflow:MsoCompletionRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+						xmlns:reqtype="http://org.onap/so/request/types/v1">
+					${requestInfo}
+					<sdncadapterworkflow:mso-bpel-name>MSO_ACTIVATE_BPEL</sdncadapterworkflow:mso-bpel-name>
+				</sdncadapterworkflow:MsoCompletionRequest>
+			"""
+
+			content = utils.formatXml(content)
+			msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content)
+			execution.setVariable(resultVar, content)
+
+			msoLogger.debug("UpdateVfModule CompletionHandler Request: " + content)
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2000, 'Internal Error')
+		}
+	}
+
+	/**
+	 * 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 +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def prefix = execution.getVariable('prefix')
+			def request = getVariable(execution, prefix+'Request')
+			def requestInformation = utils.getNodeXml(request, 'request-information', false)
+
+			def WorkflowException workflowException = execution.getVariable("WorkflowException")
+			def errorResponseCode = workflowException.getErrorCode()
+			def errorResponseMsg = workflowException.getErrorMessage()
+			def encErrorResponseMsg = ""
+			if (errorResponseMsg != null) {
+				encErrorResponseMsg = errorResponseMsg
+			}
+
+			String content = """
+				<sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+						xmlns:reqtype="http://org.onap/so/request/types/v1"
+						xmlns:msoservtypes="http://org.onap/so/request/types/v1"
+						xmlns:structuredtypes="http://org.onap/so/structured/types/v1">
+					${requestInformation}
+					<sdncadapterworkflow:WorkflowException>
+						<sdncadapterworkflow:ErrorMessage>${MsoUtils.xmlEscape(encErrorResponseMsg)}</sdncadapterworkflow:ErrorMessage>
+						<sdncadapterworkflow:ErrorCode>${MsoUtils.xmlEscape(errorResponseCode)}</sdncadapterworkflow:ErrorCode>
+					</sdncadapterworkflow:WorkflowException>
+				</sdncadapterworkflow:FalloutHandlerRequest>
+			"""
+			content = utils.formatXml(content)
+			msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content)
+			execution.setVariable(resultVar, content)
+
+			msoLogger.debug("UpdateVfModule fallOutHandler Request: " + content)
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildWorkflowException(execution, 2000, 'Internal Error')
+		}
+	}
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleInfra.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleInfra.groovy
new file mode 100644
index 0000000..416d0d6
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleInfra.groovy
@@ -0,0 +1,504 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor;
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
+
+public class UpdateVfModuleInfra extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, UpdateVfModuleInfra.class);
+
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	/**
+	 * Initialize the flow's variables.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void initProcessVariables(DelegateExecution execution) {
+		execution.setVariable('prefix', 'UPDVfModI_')
+		execution.setVariable('UPDVfModI_Request', null)
+		execution.setVariable('UPDVfModI_requestInfo', null)
+		execution.setVariable('UPDVfModI_requestId', null)
+		execution.setVariable('UPDVfModI_source', null)
+		execution.setVariable('UPDVfModI_vnfInputs', null)
+		execution.setVariable('UPDVfModI_vnfId', null)
+		execution.setVariable('UPDVfModI_vfModuleId', null)
+		execution.setVariable('UPDVfModI_tenantId', null)
+		execution.setVariable('UPDVfModI_volumeGroupId', null)
+		execution.setVariable('UPDVfModI_vnfParams', null)
+		execution.setVariable('UPDVfModI_updateInfraRequest', null)
+		execution.setVariable('UpdateVfModuleSuccessIndicator', 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() +
+		')'
+
+		msoLogger.trace('Entered ' + method)
+
+		initProcessVariables(execution)
+
+		def prefix = "UPDVfModI_"		
+
+		def incomingRequest = execution.getVariable('bpmnRequest')
+
+		msoLogger.debug("Incoming Infra Request: " + incomingRequest)
+		try {
+			def jsonSlurper = new JsonSlurper()
+			def jsonOutput = new JsonOutput()
+			Map reqMap = jsonSlurper.parseText(incomingRequest)
+			msoLogger.debug(" Request is in JSON format.")
+
+			def serviceInstanceId = execution.getVariable('serviceInstanceId')
+			def vnfId = execution.getVariable('vnfId')
+			
+			execution.setVariable(prefix + 'serviceInstanceId', serviceInstanceId)
+			execution.setVariable(prefix+'vnfId', vnfId)
+			execution.setVariable("isVidRequest", "true")
+			
+			def vnfName = ''
+			def asdcServiceModelVersion = ''
+			def serviceModelInfo = null
+			def vnfModelInfo = null
+			
+			def relatedInstanceList = reqMap.requestDetails?.relatedInstanceList
+						
+			if (relatedInstanceList != null) {
+				relatedInstanceList.each {
+					if (it.relatedInstance.modelInfo?.modelType == 'service') {
+						asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion
+						serviceModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo)
+						
+					}
+					if (it.relatedInstance.modelInfo.modelType == 'vnf') {
+						vnfName = it.relatedInstance.instanceName ?: ''
+						vnfModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo)
+					}
+				}
+			}
+			
+			execution.setVariable(prefix + 'vnfName', vnfName)
+			execution.setVariable(prefix + 'asdcServiceModelVersion', asdcServiceModelVersion)
+			execution.setVariable(prefix + 'serviceModelInfo', serviceModelInfo)
+			execution.setVariable(prefix + 'vnfModelInfo', vnfModelInfo)			
+			
+			def vnfType = execution.getVariable('vnfType')
+			execution.setVariable(prefix + 'vnfType', vnfType)	
+			def vfModuleId = execution.getVariable('vfModuleId')
+			execution.setVariable(prefix + 'vfModuleId', vfModuleId)
+			def volumeGroupId = execution.getVariable('volumeGroupId')
+			execution.setVariable(prefix + 'volumeGroupId', volumeGroupId)
+			def userParams = reqMap.requestDetails?.requestParameters?.userParams					
+			
+			Map<String, String> userParamsMap = [:]
+			if (userParams != null) {
+				userParams.each { userParam ->
+					userParamsMap.put(userParam.name, userParam.value.toString())
+				}							
+			}		
+						
+			msoLogger.debug('Processed user params: ' + userParamsMap)		
+			
+			execution.setVariable(prefix + 'vfModuleInputParams', userParamsMap)
+			
+			def isBaseVfModule = "false"
+			if (execution.getVariable('isBaseVfModule') == true) {
+				isBaseVfModule = "true"
+			}			
+			
+			execution.setVariable(prefix + 'isBaseVfModule', isBaseVfModule)
+						
+			def requestId = execution.getVariable("mso-request-id")
+			execution.setVariable(prefix + 'requestId', requestId)
+			
+			def vfModuleModelInfo = jsonOutput.toJson(reqMap.requestDetails?.modelInfo)
+			execution.setVariable(prefix + 'vfModuleModelInfo', vfModuleModelInfo)
+			
+			def suppressRollback = reqMap.requestDetails?.requestInfo?.suppressRollback
+			
+			
+			def backoutOnFailure = ""
+			if(suppressRollback != null){
+				if ( suppressRollback == true) {
+					backoutOnFailure = "false"
+				} else if ( suppressRollback == false) {
+					backoutOnFailure = "true"
+				}
+			}
+			
+			execution.setVariable('disableRollback', suppressRollback)
+			
+			def vfModuleName = reqMap.requestDetails?.requestInfo?.instanceName ?: null
+			execution.setVariable(prefix + 'vfModuleName', vfModuleName)
+			
+			def serviceId = reqMap.requestDetails?.requestParameters?.serviceId ?: ''
+			execution.setVariable(prefix + 'serviceId', serviceId)
+			
+			def usePreload = reqMap.requestDetails?.requestParameters?.usePreload
+			execution.setVariable(prefix + 'usePreload', usePreload)
+			
+			def cloudConfiguration = reqMap.requestDetails?.cloudConfiguration
+			def lcpCloudRegionId	= cloudConfiguration.lcpCloudRegionId
+			execution.setVariable(prefix + 'lcpCloudRegionId', lcpCloudRegionId)
+			def tenantId = cloudConfiguration.tenantId
+			execution.setVariable(prefix + 'tenantId', tenantId)
+			
+			def globalSubscriberId = reqMap.requestDetails?.subscriberInfo?.globalSubscriberId ?: ''
+			execution.setVariable(prefix + 'globalSubscriberId', globalSubscriberId)
+			
+			execution.setVariable(prefix + 'sdncVersion', '1702')
+
+			execution.setVariable("UpdateVfModuleInfraSuccessIndicator", false)
+						
+
+			
+			
+			def source = reqMap.requestDetails?.requestInfo?.source
+			execution.setVariable(prefix + "source", source)
+			
+			//For Completion Handler & Fallout Handler
+			String requestInfo =
+			"""<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>UPDATE</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+			
+			execution.setVariable(prefix + "requestInfo", requestInfo)
+			
+			//backoutOnFailure			
+
+			msoLogger.debug('RequestInfo: ' + execution.getVariable(prefix + "requestInfo"))			
+						
+			msoLogger.trace('Exited ' + method)
+
+		}
+		catch(groovy.json.JsonException je) {
+			msoLogger.debug(" Request is not in JSON format.")
+			exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format")
+
+		}
+		catch(Exception e) {
+			String restFaultMessage = e.getMessage()
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered - " + "\n" + restFaultMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			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() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+
+		try {
+			def requestInfo = execution.getVariable('UPDVfModI_requestInfo')
+			def requestId = execution.getVariable('UPDVfModI_requestId')
+			def source = execution.getVariable('UPDVfModI_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 vfModuleId = execution.getVariable("vfModuleId")
+			String synchResponse = """{"requestReferences":{"instanceId":"${vfModuleId}","requestId":"${requestId}"}}""".trim()
+
+			sendWorkflowResponse(execution, 200, synchResponse)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare the Request for invoking the DoUpdateVfModule subflow.
+	 *
+	 * NOTE: Currently, the method just logs passing through as the
+	 * incoming Request to this main flow is used as the Request to
+	 * the DoUpdateVfModule subflow. No preparation processing is
+	 * necessary.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepDoUpdateVfModule(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepDoUpdateVfModule(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepDoUpdateVfModule(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare the Request for updating the DB for this Infra Request.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepUpdateInfraRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepUpdateInfraRequest(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def requestId = execution.getVariable('UPDVfModI_requestId')
+			def vnfId = execution.getVariable('UPDVfModI_vnfId')
+			def vfModuleId = execution.getVariable('UPDVfModI_vfModuleId')
+			def tenantId = execution.getVariable('UPDVfModI_tenantId')
+			def volumeGroupId = execution.getVariable('UPDVfModI_volumeGroupId')
+
+			String updateInfraRequest = """
+				<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+						xmlns:req="http://org.onap.so/requestsdb">
+					<soapenv:Header/>
+					<soapenv:Body>
+						<req:updateInfraRequest>
+							<requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+							<lastModifiedBy>BPEL</lastModifiedBy>
+							<requestStatus>COMPLETE</requestStatus>
+							<progress>100</progress>
+							<vnfOutputs>
+								<vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
+								<vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
+								<tenant-id>${MsoUtils.xmlEscape(tenantId)}</tenant-id>
+								<volume-group-id>${MsoUtils.xmlEscape(volumeGroupId)}</volume-group-id>
+							</vnfOutputs>
+						</req:updateInfraRequest>
+					</soapenv:Body>
+				</soapenv:Envelope>
+			"""
+
+			updateInfraRequest = utils.formatXml(updateInfraRequest)
+			execution.setVariable('UPDVfModI_updateInfraRequest', updateInfraRequest)
+			msoLogger.debug('Request for Update Infra Request:\n' + updateInfraRequest)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateInfraRequest(): ' + 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(DelegateExecution execution, String resultVar) {
+		def method = getClass().getSimpleName() + '.completionHandlerPrep(' +
+			'execution=' + execution.getId() +
+			', resultVar=' + resultVar +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def requestInfo = getVariable(execution, 'UPDVfModI_requestInfo')
+
+			String content = """
+				<sdncadapterworkflow:MsoCompletionRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+						xmlns:reqtype="http://org.onap/so/request/types/v1">
+					${requestInfo}
+					<sdncadapterworkflow:mso-bpel-name>MSO_ACTIVATE_BPEL</sdncadapterworkflow:mso-bpel-name>
+				</sdncadapterworkflow:MsoCompletionRequest>
+			"""
+
+			content = utils.formatXml(content)
+			msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content)
+			execution.setVariable(resultVar, content)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2000, 'Internal Error')
+		}
+	}
+
+	/**
+	 * 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 +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def prefix = execution.getVariable('prefix')
+			def request = getVariable(execution, prefix+'Request')
+			def requestInformation = execution.getVariable(prefix + "requestInfo")
+
+			def WorkflowException workflowException = execution.getVariable("WorkflowException")
+			def errorResponseCode = workflowException.getErrorCode()
+			def errorResponseMsg = workflowException.getErrorMessage()
+			def encErrorResponseMsg = ""
+			if (errorResponseMsg != null) {
+				encErrorResponseMsg = errorResponseMsg
+			}
+
+			String content = """
+				<sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+						xmlns:reqtype="http://org.onap/so/request/types/v1"
+						xmlns:msoservtypes="http://org.onap/so/request/types/v1"
+						xmlns:structuredtypes="http://org.onap/so/structured/types/v1">
+					${requestInformation}
+					<sdncadapterworkflow:WorkflowException>
+						<sdncadapterworkflow:ErrorMessage>${MsoUtils.xmlEscape(encErrorResponseMsg)}</sdncadapterworkflow:ErrorMessage>
+						<sdncadapterworkflow:ErrorCode>${MsoUtils.xmlEscape(errorResponseCode)}</sdncadapterworkflow:ErrorCode>
+					</sdncadapterworkflow:WorkflowException>
+				</sdncadapterworkflow:FalloutHandlerRequest>
+			"""
+			content = utils.formatXml(content)
+			msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content)
+			execution.setVariable(resultVar, content)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildWorkflowException(execution, 2000, 'Internal Error')
+		}
+	}
+
+	/**
+	 * Validates the request, request id and service instance id.  If a problem is found,
+	 * a WorkflowException is generated and an MSOWorkflowException event is thrown. This
+	 * method also sets up the log context for the workflow.
+	 * @param execution the execution
+	 * @return the validated request
+	 */
+	public String validateInfraRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.validateInfraRequest(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		String processKey = getProcessKey(execution);
+		def prefix = execution.getVariable("prefix")
+
+		if (prefix == null) {
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " prefix is null")
+		}
+
+		try {
+			def request = execution.getVariable(prefix + 'Request')
+
+			if (request == null) {
+				request = execution.getVariable(processKey + 'Request')
+
+				if (request == null) {
+					request = execution.getVariable('bpmnRequest')
+				}
+
+				setVariable(execution, processKey + 'Request', null);
+				setVariable(execution, 'bpmnRequest', null);
+				setVariable(execution, prefix + 'Request', request);
+			}
+
+			if (request == null) {
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request is null")
+			}
+
+			/*
+
+			def requestId = execution.getVariable("mso-request-id")
+
+			if (requestId == null) {
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request has no mso-request-id")
+			}
+
+			setVariable(execution, prefix + 'requestId', requestId)
+
+			def serviceInstanceId = execution.getVariable("mso-service-instance-id")
+
+			if (serviceInstanceId == null) {
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, processKey + " request message has no mso-service-instance-id")
+			}
+
+			utils.logContext(requestId, serviceInstanceId)
+			*/
+			msoLogger.debug('Incoming message: ' + System.lineSeparator() + request)
+			msoLogger.trace('Exited ' + method)
+			return request
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Invalid Message")
+		}
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleInfraV2.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleInfraV2.groovy
new file mode 100644
index 0000000..a926030
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleInfraV2.groovy
@@ -0,0 +1,468 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+ 
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.client.aai.AAIValidatorImpl
+import org.onap.so.client.appc.ApplicationControllerClient
+import org.onap.so.logger.MsoLogger
+
+import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
+
+public class UpdateVfModuleInfraV2 {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, UpdateVfModuleInfraV2.class);
+
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	boolean preProcessRequestCheck = true;
+	boolean sendSynchResponseCheck = true;
+	boolean checkPserverFlagCheck = true;
+	boolean vfFlagCheckSetCheck = true;
+	boolean lockAppCCheck = true;
+	boolean healthDiagnosticSDNOCheck = true;
+	boolean healthCheckAppCCheck = true;
+	boolean stopVfModuleControllerCheck = true;
+	boolean healthCheckControllerCheck = true;
+	boolean doUpdateVfModulePrepCheck = true;
+	boolean completionHandlerPrepCheck = true;
+	boolean startVfModuleControllerCheck = true;
+	boolean vFFlagUnsetCheck = true;
+	boolean unlockAppCCheck = true;
+	boolean postUpgradeHealthCheckControllerCheck = true;
+
+
+
+	public void initProcessVariables(DelegateExecution execution) {
+		execution.setVariable('prefix', 'UPDVfModI_')
+		execution.setVariable('UPDVfModI_Request', null)
+		execution.setVariable('UPDVfModI_requestInfo', null)
+		execution.setVariable('UPDVfModI_requestId', null)
+		execution.setVariable('UPDVfModI_source', null)
+		execution.setVariable('UPDVfModI_vnfInputs', null)
+		execution.setVariable('UPDVfModI_vnfId', null)
+		execution.setVariable('UPDVFModI_moduleUuid', null)
+		execution.setVariable('UPDVfModI_vfModuleId', null)
+		execution.setVariable('UPDVfModI_tenantId', null)
+		execution.setVariable('UPDVfModI_volumeGroupId', null)
+		execution.setVariable('UPDVfModI_vnfParams', null)
+		execution.setVariable('UPDVfModI_updateInfraRequest', null)
+		execution.setVariable('UpdateVfModuleSuccessIndicator', false)
+	}
+
+	/**
+	 * Check for missing elements in the received request.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void preProcessRequest(DelegateExecution execution) {
+		System.out.print("*****************************PreProcessRequest**************************")
+
+		def method = getClass().getSimpleName() + '.preProcessRequest(' +
+				'execution=' + execution.getId() +
+				')'
+
+		//msoLogger.trace('Entered ' + method)
+
+		initProcessVariables(execution)
+
+		def prefix = "UPDVfModI_"
+
+		def incomingRequest = execution.getVariable('bpmnRequest')
+
+		//msoLogger.debug("Incoming Infra Request: " + incomingRequest)
+		try {
+			def jsonSlurper = new JsonSlurper()
+			def jsonOutput = new JsonOutput()
+			Map reqMap = jsonSlurper.parseText(incomingRequest)
+			//msoLogger.debug(" Request is in JSON format.")
+
+			def serviceInstanceId = execution.getVariable('serviceInstanceId')
+			def vnfId = execution.getVariable('vnfId')
+			def moduleUuid = execution.getVariable('moduleUuid')
+			execution.setVariable(prefix + 'moduleUuid',moduleUuid)
+			execution.setVariable(prefix + 'serviceInstanceId', serviceInstanceId)
+			execution.setVariable(prefix+'vnfId', vnfId)
+			execution.setVariable("isVidRequest", "true")
+
+			def vnfName = ''
+			def asdcServiceModelVersion = ''
+			def serviceModelInfo = null
+			def vnfModelInfo = null
+
+			def relatedInstanceList = reqMap.requestDetails?.relatedInstanceList
+
+			if (relatedInstanceList != null) {
+				relatedInstanceList.each {
+					if (it.relatedInstance.modelInfo?.modelType == 'service') {
+						asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion
+						serviceModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo)
+					}
+					if (it.relatedInstance.modelInfo.modelType == 'vnf') {
+						vnfName = it.relatedInstance.instanceName ?: ''
+						vnfModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo)
+					}
+				}
+			}
+
+			execution.setVariable(prefix + 'vnfName', vnfName)
+			execution.setVariable(prefix + 'asdcServiceModelVersion', asdcServiceModelVersion)
+			execution.setVariable(prefix + 'serviceModelInfo', serviceModelInfo)
+			execution.setVariable(prefix + 'vnfModelInfo', vnfModelInfo)
+
+			def vnfType = execution.getVariable('vnfType')
+			execution.setVariable(prefix + 'vnfType', vnfType)
+			def vfModuleId = execution.getVariable('vfModuleId')
+			execution.setVariable(prefix + 'vfModuleId', vfModuleId)
+			def volumeGroupId = execution.getVariable('volumeGroupId')
+			execution.setVariable(prefix + 'volumeGroupId', volumeGroupId)
+			def userParams = reqMap.requestDetails?.requestParameters?.userParams
+
+			Map<String, String> userParamsMap = [:]
+			if (userParams != null) {
+				userParams.each { userParam ->
+					userParamsMap.put(userParam.name, userParam.value.toString())
+				}
+			}
+
+			//msoLogger.debug('Processed user params: ' + userParamsMap)
+
+			execution.setVariable(prefix + 'vfModuleInputParams', userParamsMap)
+
+			def isBaseVfModule = "false"
+			if (execution.getVariable('isBaseVfModule') == true) {
+				isBaseVfModule = "true"
+			}
+
+			execution.setVariable(prefix + 'isBaseVfModule', isBaseVfModule)
+
+			def requestId = execution.getVariable("mso-request-id")
+			execution.setVariable(prefix + 'requestId', requestId)
+
+			def vfModuleModelInfo = jsonOutput.toJson(reqMap.requestDetails?.modelInfo)
+			execution.setVariable(prefix + 'vfModuleModelInfo', vfModuleModelInfo)
+
+			def suppressRollback = reqMap.requestDetails?.requestInfo?.suppressRollback
+
+
+			def backoutOnFailure = ""
+			if(suppressRollback != null){
+				if ( suppressRollback == true) {
+					backoutOnFailure = "false"
+				} else if ( suppressRollback == false) {
+					backoutOnFailure = "true"
+				}
+			}
+
+			execution.setVariable('disableRollback', suppressRollback)
+
+			def vfModuleName = reqMap.requestDetails?.requestInfo?.instanceName ?: null
+			execution.setVariable(prefix + 'vfModuleName', vfModuleName)
+
+			def serviceId = reqMap.requestDetails?.requestParameters?.serviceId ?: ''
+			execution.setVariable(prefix + 'serviceId', serviceId)
+
+			def usePreload = reqMap.requestDetails?.requestParameters?.usePreload
+			execution.setVariable(prefix + 'usePreload', usePreload)
+
+			def cloudConfiguration = reqMap.requestDetails?.cloudConfiguration
+			def lcpCloudRegionId	= cloudConfiguration.lcpCloudRegionId
+			execution.setVariable(prefix + 'lcpCloudRegionId', lcpCloudRegionId)
+			def tenantId = cloudConfiguration.tenantId
+			execution.setVariable(prefix + 'tenantId', tenantId)
+
+			def globalSubscriberId = reqMap.requestDetails?.subscriberInfo?.globalSubscriberId ?: ''
+			execution.setVariable(prefix + 'globalSubscriberId', globalSubscriberId)
+
+			execution.setVariable(prefix + 'sdncVersion', '1702')
+
+			execution.setVariable("UpdateVfModuleInfraSuccessIndicator", false)
+
+
+
+
+			def source = reqMap.requestDetails?.requestInfo?.source
+			execution.setVariable(prefix + "source", source)
+
+			//For Completion Handler & Fallout Handler
+			String requestInfo =
+					"""<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>UPDATE</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+
+			execution.setVariable(prefix + "requestInfo", requestInfo)
+
+			//backoutOnFailure
+
+			//msoLogger.debug('RequestInfo: ' + execution.getVariable(prefix + "requestInfo"))
+
+			//msoLogger.trace('Exited ' + method)
+
+		}
+		catch(groovy.json.JsonException je) {
+			//msoLogger.debug(" Request is not in JSON format.")
+			exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format")
+		}
+		catch(Exception e) {
+			String restFaultMessage = e.getMessage()
+			//msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered - " + "\n" + restFaultMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 5000, restFaultMessage)
+		}
+	}
+
+	/**
+	 * Prepare and send the synchronous response for this flow.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void sendSynchResponse(DelegateExecution execution) {
+		System.out.print("*****************************SendSynchResponse**************************")
+
+		def method = getClass().getSimpleName() + '.sendSynchResponse(' +
+				'execution=' + execution.getId() +
+				')'
+
+		//msoLogger.trace('Entered ' + method)
+
+
+		try {
+			def requestInfo = execution.getVariable('UPDVfModI_requestInfo')
+			def requestId = execution.getVariable('UPDVfModI_requestId')
+			def source = execution.getVariable('UPDVfModI_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 vfModuleId = execution.getVariable("vfModuleId")
+			String synchResponse = """{"requestReferences":{"instanceId":"${vfModuleId}","requestId":"${requestId}"}}""".trim()
+			sendWorkflowResponse(execution, 200, synchResponse)
+			//msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			//msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage())
+		}
+	}
+
+	//check to see if the Pserver Flag is locked
+	public void checkPserverFlag(DelegateExecution execution) {
+
+		System.out.println("*****************************CheckingPserverFlag*************************")
+		String vnfId = (String)execution.getVariable('vnfId')
+		String uuid = (String)execution.getVariable('moduleUuid')
+		AAIValidatorImpl aaiVI = new AAIValidatorImpl()
+		boolean flag = aaiVI.isPhysicalServerLocked(vnfId, uuid)
+	}
+
+	//check to see if the VFFlag is locked
+	public void vfFlagCheck(DelegateExecution execution) {
+
+		System.out.print("*****************************VfFlagCheck*************************")
+		String vnfId = (String)execution.getVariable('vnfId')
+		String uuid = (String)execution.getVariable('moduleUuid')
+		AAIValidatorImpl aaiVI = new AAIValidatorImpl()
+		boolean flag = aaiVI.isVNFLocked(vnfId, uuid)
+
+	}
+	//lock the VF Flag
+	public void vfFlagSet(DelegateExecution execution) {
+
+		System.out.print("*****************************VfFlagSet*************************")
+		String vnfId = (String)execution.getVariable('vnfId')
+		String uuid = (String)execution.getVariable('moduleUuid')
+		AAIValidatorImpl aaiVI = new AAIValidatorImpl()
+		aaiVI.updateVnfToLocked(vnfId,uuid);
+		
+	}
+
+	//Lock AppC
+	public void lockAppC(DelegateExecution execution) {
+
+		System.out.print("*****************************lockAppC*************************")
+		def vfModuleId = ""
+		ApplicationControllerClient aCC = new ApplicationControllerClient(getLCMProperties())
+		def status = aCC.runCommand("Lock",vfModuleId)
+
+
+	}
+	//run health check
+	public void healthCheckAppC(DelegateExecution execution) {
+
+		System.out.print("*****************************healthCheckAppC*************************")
+		def vfModuleId = ""
+		ApplicationControllerClient aCC = new ApplicationControllerClient(getLCMProperties())
+		def status = aCC.runCommand("HealthCheck",vfModuleId)
+
+	}
+	//SDNO health diagnostic
+	public void healthDiagnosticSDNO(DelegateExecution execution) {
+
+		System.out.print("*****************************healthDiagnosticSDNO is currently ignored*************************")
+		//SDNOValidatorImpl.healthDiagnostic("","");
+
+	}
+	//stop VF module controller
+	public void stopVfModuleController(DelegateExecution execution) {
+
+		System.out.print("*****************************stopVfModuleController*************************")
+		def vfModuleId = ""
+		ApplicationControllerClient aCC = new ApplicationControllerClient(getLCMProperties())
+		def status = aCC.runCommand("Stop",vfModuleId)
+
+
+	}
+
+	public void doUpdateVfModulePrep(DelegateExecution execution) {
+
+		System.out.print("*****************************doUpdateVfModulePrep*************************")
+		def method = getClass().getSimpleName() + '.prepDoUpdateVfModule(' +
+				'execution=' + execution.getId() +
+				')'
+
+		//msoLogger.trace('Entered ' + method)
+
+		try {
+
+			//msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			//msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepDoUpdateVfModule(): ' + e.getMessage())
+
+		}
+
+	}
+
+	public void completionHandlerPrep(DelegateExecution execution,String resultVar) {
+
+		System.out.print("*****************************completionHandlerPrep*************************")
+		def method = getClass().getSimpleName() + '.completionHandlerPrep(' +
+				'execution=' + execution.getId() +
+				', resultVar=' + resultVar +
+				')'
+
+		//msoLogger.trace('Entered ' + method)
+
+		try {
+			def requestInfo = getVariable(execution, 'UPDVfModI_requestInfo')
+
+			String content = """
+					<sdncadapterworkflow:MsoCompletionRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+							xmlns:reqtype="http://org.onap/so/request/types/v1">
+						${requestInfo}
+						<sdncadapterworkflow:mso-bpel-name>MSO_ACTIVATE_BPEL</sdncadapterworkflow:mso-bpel-name>
+					</sdncadapterworkflow:MsoCompletionRequest>
+				"""
+
+			content = utils.formatXml(content)
+			//msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content)
+			execution.setVariable(resultVar, content)
+
+			//msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			//msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2000, 'Internal Error')
+
+		}
+
+	}
+
+	public void healthCheckController(DelegateExecution execution) {
+
+		System.out.print("*****************************healthCheckController*************************")
+		def vfModuleId = ""
+		ApplicationControllerClient aCC = new ApplicationControllerClient(getLCMProperties())
+		def status = aCC.runCommand("HealthCheck",vfModuleId)
+
+	}
+
+	public void startVfModuleController(DelegateExecution execution) {
+
+		System.out.print("*****************************startVfModuleController*************************")
+		def vfModuleId = ""
+		ApplicationControllerClient aCC = new ApplicationControllerClient(getLCMProperties())
+		def status = aCC.runCommand("Start",vfModuleId)
+
+	}
+
+	public void vFFlagUnset(DelegateExecution execution) {
+
+		System.out.print("*****************************vFFlagUnset*************************")
+		String vnfId = (String)execution.getVariable('vnfId')
+		String uuid = (String)execution.getVariable('moduleUuid')
+		AAIValidatorImpl aaiVI = new AAIValidatorImpl()
+		aaiVI.updateVnfToUnLocked(vnfId,uuid);
+
+
+	}
+
+	public void unlockAppC(DelegateExecution execution) {
+
+		System.out.print("*****************************unlockAppC*************************")
+		def vfModuleId = ""
+		ApplicationControllerClient aCC = new ApplicationControllerClient(getLCMProperties())
+		def status = aCC.runCommand("Unlock",vfModuleId)
+
+	}
+
+	public void postUpgradeHealthCheckController(DelegateExecution execution) {
+
+		System.out.print("*****************************postUpgradeHealthCheckController*************************")
+		def vfModuleId = ""
+		ApplicationControllerClient aCC = new ApplicationControllerClient(getLCMProperties())
+		def status = aCC.runCommand("HealthCheck",vfModuleId)
+
+	}
+
+    Properties getLCMProperties() {
+        Properties properties = new Properties()
+
+        properties.put("topic.read", UrnPropertiesReader.getVariable("appc.client.topic.read.name"))
+        properties.put("topic.read.timeout", UrnPropertiesReader.getVariable("appc.client.topic.read.timeout"))
+        properties.put("client.response.timeout", UrnPropertiesReader.getVariable("appc.client.response.timeout"))
+        properties.put("topic.write", UrnPropertiesReader.getVariable("appc.client.topic.write"))
+        properties.put("poolMembers", UrnPropertiesReader.getVariable("appc.client.poolMembers"))
+        properties.put("client.key", UrnPropertiesReader.getVariable("appc.client.key"))
+        properties.put("client.secret", UrnPropertiesReader.getVariable("appc.client.secret"))
+        properties.put("client.name", "MSO")
+        properties.put("service", UrnPropertiesReader.getVariable("appc.client.service"))
+        return properties
+    }
+
+}
+
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy
new file mode 100644
index 0000000..b7f31d7
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy
@@ -0,0 +1,445 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.VfModuleBase
+import org.onap.so.bpmn.core.UrnPropertiesReader;
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.springframework.web.util.UriUtils
+
+class UpdateVfModuleVolume extends VfModuleBase {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, UpdateVfModuleVolume.class);
+	
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	/**
+	 * Initialize the flow's variables.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	private void initProcessVariables(DelegateExecution execution) {
+		execution.setVariable('prefix', 'UPDVfModVol_')
+		execution.setVariable('UPDVfModVol_Request', null)
+		execution.setVariable('UPDVfModVol_requestInfo', null)
+		execution.setVariable('UPDVfModVol_requestId', null)
+		execution.setVariable('UPDVfModVol_source', null)
+		execution.setVariable('UPDVfModVol_volumeInputs', null)
+		execution.setVariable('UPDVfModVol_volumeGroupId', null)
+		execution.setVariable('UPDVfModVol_vnfType', null)
+		execution.setVariable('UPDVfModVol_serviceId', null)
+		execution.setVariable('UPDVfModVol_aicCloudRegion', null)
+		execution.setVariable('UPDVfModVol_tenantId', null)
+		execution.setVariable('UPDVfModVol_volumeParams', null)
+		execution.setVariable('UPDVfModVol_volumeGroupHeatStackId', null)
+		execution.setVariable('UPDVfModVol_volumeGroupTenantId', null)
+		execution.setVariable('UpdateVfModuleVolumeSuccessIndicator', false)
+	}
+
+	/**
+	 * Check for missing elements in the received request.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	@Override
+	public void preProcessRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessRequest(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			initProcessVariables(execution)
+			String request = validateRequest(execution)
+
+			def requestInfo = getRequiredNodeXml(execution, request, 'request-info')
+			execution.setVariable('UPDVfModVol_requestInfo', requestInfo)
+			execution.setVariable('UPDVfModVol_requestId', getRequiredNodeText(execution, requestInfo, 'request-id'))
+			execution.setVariable('UPDVfModVol_source', getNodeTextForce(requestInfo, 'source'))
+
+			def volumeInputs = getRequiredNodeXml(execution, request, 'volume-inputs')
+			execution.setVariable('UPDVfModVol_volumeInputs', volumeInputs)
+			execution.setVariable('UPDVfModVol_volumeGroupId', getRequiredNodeText(execution, volumeInputs, 'volume-group-id'))
+			execution.setVariable('UPDVfModVol_vnfType', getRequiredNodeText(execution, volumeInputs, 'vnf-type'))
+			execution.setVariable('UPDVfModVol_serviceId', getRequiredNodeText(execution, volumeInputs, 'service-id'))
+			execution.setVariable('UPDVfModVol_aicCloudRegion', getRequiredNodeText(execution, volumeInputs, 'aic-cloud-region'))
+			execution.setVariable('UPDVfModVol_tenantId', getRequiredNodeText(execution, volumeInputs, 'tenant-id'))
+
+			def volumeParams = utils.getNodeXml(request, 'volume-params')
+			execution.setVariable('UPDVfModVol_volumeParams', volumeParams)
+
+			msoLogger.trace('Exited ' + method)
+			msoLogger.debug("UpdateVfModuleVolume request: " + request)
+		} catch (BpmnError bpmnError) {
+			throw bpmnError
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preProcessRequest(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare and send the synchronous response.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void sendSynchResponse(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.sendSynchResponse(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def requestInfo = execution.getVariable('UPDVfModVol_requestInfo')
+			def requestId = execution.getVariable('UPDVfModVol_requestId')
+			def source = execution.getVariable('UPDVfModVol_source')
+			def progress = getNodeTextForce(requestInfo, 'progress')
+			if (progress.isEmpty()) {
+				progress = '0'
+			}
+			def startTime = getNodeTextForce(requestInfo, 'start-time')
+			if (startTime.isEmpty()) {
+				startTime = System.currentTimeMillis()
+			}
+			def volumeInputs = execution.getVariable('UPDVfModVol_volumeInputs')
+
+			String synchResponse = """
+				<volume-request xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-info>
+						<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+						<action>UPDATE_VF_MODULE_VOL</action>
+						<request-status>IN_PROGRESS</request-status>
+						<progress>${MsoUtils.xmlEscape(progress)}</progress>
+						<start-time>${MsoUtils.xmlEscape(startTime)}</start-time>
+						<source>${MsoUtils.xmlEscape(source)}</source>
+					</request-info>
+					${volumeInputs}
+				</volume-request>
+			"""
+
+			synchResponse = utils.formatXml(synchResponse)
+			sendWorkflowResponse(execution, 200, synchResponse)
+			msoLogger.debug("UpdateVfModuleVolume Synch Response: " + synchResponse)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendSynchResponse(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare a Request for querying AAI for Volume Group information using the
+	 * Volume Group Id and Aic Cloud Region.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void queryAAIForVolumeGroup(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.queryAAIForVolumeGroup(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def volumeGroupId = execution.getVariable('UPDVfModVol_volumeGroupId')
+			def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion')
+			def endPoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) +
+				'/aai/v7/cloud-infrastructure/cloud-regions/cloud-region/att-aic/' + UriUtils.encode(aicCloudRegion, "UTF-8") +
+				'/volume-groups/volume-group/' + UriUtils.encode(volumeGroupId, "UTF-8")
+
+			msoLogger.debug('Sending GET to AAI endpoint \'' + endPoint + '\'')
+			msoLogger.debug("UpdateVfModuleVolume sending GET for quering AAI endpoint: " + endPoint)
+
+			AaiUtil aaiUtil = new AaiUtil(this)
+			APIResponse response = aaiUtil.executeAAIGetCall(execution, endPoint)
+			def int statusCode = response.getStatusCode()
+			def responseData = response.getResponseBodyAsString()
+			msoLogger.debug('Response code:' + statusCode)
+			msoLogger.debug('Response:' + System.lineSeparator() + responseData)
+			msoLogger.debug("UpdateVfModuleVolume response data: " + responseData)
+
+			def volumeGroup = responseData
+			def heatStackId = getNodeTextForce(volumeGroup, 'heat-stack-id')
+			execution.setVariable('UPDVfModVol_volumeGroupHeatStackId', heatStackId)
+			if ((statusCode == 200) || (statusCode == 204)) {
+				def volumeGroupTenantId = getTenantIdFromVolumeGroup(volumeGroup)
+				if (volumeGroupTenantId == null) {
+					throw new Exception('Could not find Tenant Id element in Volume Group with Volume Group Id \'' + volumeGroupId + '\''
+						+ '\', AIC Cloud Region \'' + aicCloudRegion + '\'')
+				}
+				execution.setVariable('UPDVfModVol_volumeGroupTenantId', volumeGroupTenantId)
+				msoLogger.debug('Received Tenant Id \'' + volumeGroupTenantId + '\' from AAI for Volume Group with Volume Group Id \'' + volumeGroupId + '\''
+					+ '\', AIC Cloud Region \'' + aicCloudRegion + '\'')
+			} else if (statusCode == 404) {
+				throw new Exception('Volume Group \'' + volumeGroupId + '\' not found at AAI')
+			} else {
+				throw new Exception('Bad status code ' + statusCode + ' received from AAI; Response data: ' + responseData)
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIForVolumeGroup(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare a Request for invoking the VnfAdapterRest subflow to do
+	 * a Volume Group update.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepVnfAdapterRest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepVnfAdapterRest(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion')
+			def tenantId = execution.getVariable('UPDVfModVol_tenantId')
+			def volumeGroupId = execution.getVariable('UPDVfModVol_volumeGroupId')
+			def volumeGroupHeatStackId = execution.getVariable('UPDVfModVol_volumeGroupHeatStackId')
+			def vnfType = execution.getVariable('UPDVfModVol_vnfType')
+
+			def volumeParamsXml = execution.getVariable('UPDVfModVol_volumeParams')
+			def volumeGroupParams = transformParamsToEntries(volumeParamsXml)
+
+			def requestId = execution.getVariable('UPDVfModVol_requestId')
+			def serviceId = execution.getVariable('UPDVfModVol_serviceId')
+
+			def messageId = execution.getVariable('mso-request-id') + '-' + System.currentTimeMillis()
+			def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
+			def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution)
+			if ('true'.equals(useQualifiedHostName)) {
+					notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
+			}
+
+			String vnfAdapterRestRequest = """
+				<updateVolumeGroupRequest>
+					<cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId>
+					<tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
+					<volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId>
+					<volumeGroupStackId>${MsoUtils.xmlEscape(volumeGroupHeatStackId)}</volumeGroupStackId>
+					<vnfType>${MsoUtils.xmlEscape(vnfType)}</vnfType>
+					<vnfVersion></vnfVersion>
+					<vfModuleType></vfModuleType>
+					<volumeGroupParams>
+						${volumeGroupParams}
+				    </volumeGroupParams>
+					<skipAAI>true</skipAAI>
+				    <msoRequest>
+				        <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+				        <serviceInstanceId>${MsoUtils.xmlEscape(serviceId)}</serviceInstanceId>
+				    </msoRequest>
+				    <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
+				    <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
+				</updateVolumeGroupRequest>
+			"""
+			vnfAdapterRestRequest = utils.formatXml(vnfAdapterRestRequest)
+			execution.setVariable('UPDVfModVol_vnfAdapterRestRequest', vnfAdapterRestRequest)
+			msoLogger.debug('Request for VNFAdapter Rest:\n' + vnfAdapterRestRequest)
+
+			msoLogger.debug("UpdateVfModuleVolume Request for VNFAdapter Rest: " + vnfAdapterRestRequest)
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepVnfAdapterRest(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Prepare a Request for updating the DB for this Infra request.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepDbInfraDbRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepDbInfraDbRequest(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def requestId = execution.getVariable('UPDVfMod_requestId')
+
+			String updateInfraRequest = """
+				<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+						xmlns:req="http://org.onap.so/requestsdb">
+					<soapenv:Header/>
+					<soapenv:Body>
+						<req:updateInfraRequest>
+							<requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+							<lastModifiedBy>BPEL</lastModifiedBy>
+							<requestStatus>COMPLETE</requestStatus>
+							<progress>100</progress>
+						</req:updateInfraRequest>
+					</soapenv:Body>
+				</soapenv:Envelope>
+			"""
+
+			updateInfraRequest = utils.formatXml(updateInfraRequest)
+			execution.setVariable('UPDVfModVol_updateInfraRequest', updateInfraRequest)
+			msoLogger.debug('Request for Update Infra Request:\n' + updateInfraRequest)
+
+			msoLogger.debug("UpdateVfModuleVolume Request for Updating DB for Infra: " + updateInfraRequest)
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildWorkflowException(execution, 1002, 'Error in prepDbInfraDbRequest(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Build a "CompletionHandler" request.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepCompletionHandlerRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepCompletionHandlerRequest(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def requestInfo = execution.getVariable('UPDVfModVol_requestInfo')
+
+			String content = """
+				<sdncadapterworkflow:MsoCompletionRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+						xmlns:reqtype="http://org.onap/so/request/types/v1">
+					${requestInfo}
+					<sdncadapterworkflow:mso-bpel-name>MSO_ACTIVATE_BPEL</sdncadapterworkflow:mso-bpel-name>
+				</sdncadapterworkflow:MsoCompletionRequest>
+			"""
+
+			content = utils.formatXml(content)
+			msoLogger.debug('Request for Completion Handler:\n' + content)
+			msoLogger.debug("UpdateVfModuleVolume Completion Handler request: " + content)
+			execution.setVariable('UPDVfModVol_CompletionHandlerRequest', content)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepCompletionHandlerRequest(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Build a "FalloutHandler" request.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepFalloutHandler(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.prepFalloutHandler(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def requestInfo = execution.getVariable('UPDVfModVol_requestInfo')
+
+			def WorkflowException workflowException = execution.getVariable("WorkflowException")
+			def errorResponseCode = workflowException.getErrorCode()
+			def errorResponseMsg = workflowException.getErrorMessage()
+			def encErrorResponseMsg = ""
+			if (errorResponseMsg != null) {
+				encErrorResponseMsg = errorResponseMsg
+			}
+
+			String content = """
+				<sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+						xmlns:reqtype="http://org.onap/so/request/types/v1"
+						xmlns:msoservtypes="http://org.onap/so/request/types/v1"
+						xmlns:structuredtypes="http://org.onap/so/structured/types/v1">
+					${requestInfo}
+					<sdncadapterworkflow:WorkflowException>
+						<sdncadapterworkflow:ErrorMessage>${MsoUtils.xmlEscape(encErrorResponseMsg)}</sdncadapterworkflow:ErrorMessage>
+						<sdncadapterworkflow:ErrorCode>${MsoUtils.xmlEscape(errorResponseCode)}</sdncadapterworkflow:ErrorCode>
+					</sdncadapterworkflow:WorkflowException>
+				</sdncadapterworkflow:FalloutHandlerRequest>
+			"""
+			content = utils.formatXml(content)
+			msoLogger.debug('Request for Fallout Handler:\n' + content)
+			msoLogger.debug("UpdateVfModuleVolume Fallout request: " + content)
+			execution.setVariable('UPDVfModVol_FalloutHandlerRequest', content)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildWorkflowException(execution, 1002, 'Error in prepFalloutHandler(): ' + e.getMessage())
+		}
+	}
+
+	/**
+	 * Create a WorkflowException for the error case where the Tenant Id from
+	 * AAI did not match the Tenant Id in the incoming request.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void handleTenantIdMismatch(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.handleTenantIdMismatch(' +
+			'execution=' + execution.getId() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		String processKey = getProcessKey(execution);
+		def volumeGroupId = execution.getVariable('UPDVfModVol_volumeGroupId')
+		def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion')
+		def tenantId = execution.getVariable('UPDVfModVol_tenantId')
+		def volumeGroupTenantId = execution.getVariable('UPDVfModVol_volumeGroupTenantId')
+
+		def String errorMessage = 'TenantId \'' + tenantId + '\' in incoming request does not match Tenant Id \'' + volumeGroupTenantId +
+			'\' retrieved from AAI for Volume Group Id \'' + volumeGroupId + '\', AIC Cloud Region \'' + aicCloudRegion + '\''
+
+		msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Error in UpdateVfModuleVol: ' + errorMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception");
+
+		WorkflowException exception = new WorkflowException(processKey, 5000, errorMessage);
+		execution.setVariable("WorkflowException", exception);
+
+		msoLogger.trace('Exited ' + method)
+		msoLogger.debug("UpdateVfModuleVolume workflowException in Tenant Mismatch: " + errorMessage)
+	}
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy
new file mode 100644
index 0000000..7b2d1b7
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy
@@ -0,0 +1,561 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AaiUtil;
+import org.onap.so.bpmn.common.scripts.ExceptionUtil;
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.VfModuleBase;
+import org.onap.so.bpmn.common.scripts.VidUtils;
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+import org.springframework.web.util.UriUtils
+
+import groovy.json.JsonSlurper
+
+class UpdateVfModuleVolumeInfraV1 extends VfModuleBase {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, UpdateVfModuleVolumeInfraV1.class);
+	
+	/**
+	 * Initialize the flow's variables.
+	 * 
+	 * @param execution The flow's execution instance.
+	 */
+	private void initProcessVariables(DelegateExecution execution) {
+		execution.setVariable('prefix', 'UPDVfModVol_')
+		execution.setVariable('UPDVfModVol_Request', null)
+		execution.setVariable('UPDVfModVol_requestInfo', null)
+		execution.setVariable('UPDVfModVol_requestId', null)
+		execution.setVariable('UPDVfModVol_source', null)
+		execution.setVariable('UPDVfModVol_volumeInputs', null)
+		execution.setVariable('UPDVfModVol_volumeGroupId', null)
+		execution.setVariable('UPDVfModVol_vnfType', null)
+		execution.setVariable('UPDVfModVol_serviceId', null)
+		execution.setVariable('UPDVfModVol_aicCloudRegion', null)
+		execution.setVariable('UPDVfModVol_tenantId', null)
+		execution.setVariable('UPDVfModVol_volumeParams', null)
+		execution.setVariable('UPDVfModVol_volumeGroupHeatStackId', null)
+		execution.setVariable('UPDVfModVol_volumeGroupTenantId', null)
+		execution.setVariable('UpdateVfModuleVolumeSuccessIndicator', false)
+	}
+	
+
+	/**
+	 * Perform initial processing, such as request validation, initialization of variables, etc.
+	 * * @param execution
+	 */
+	public void preProcessRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		preProcessRequest(execution, isDebugEnabled)
+	}
+	
+	public void preProcessRequest(DelegateExecution execution, isDebugLogEnabled) {
+
+		initProcessVariables(execution)
+		String jsonRequest = validateRequest(execution)
+		
+		def request = ""
+		
+		try {
+			def jsonSlurper = new JsonSlurper()
+			Map reqMap = jsonSlurper.parseText(jsonRequest)
+			
+			def serviceInstanceId = execution.getVariable('serviceInstanceId')
+			def volumeGroupId = execution.getVariable('volumeGroupId')
+			//def vnfId = execution.getVariable('vnfId')
+			
+			def vidUtils = new VidUtils(this)
+			request = vidUtils.createXmlVolumeRequest(reqMap, 'UPDATE_VF_MODULE_VOL', serviceInstanceId, volumeGroupId)
+			
+			execution.setVariable('UPDVfModVol_Request', request)
+			execution.setVariable("UPDVfModVol_isVidRequest", true)
+			
+			//need to get persona-model-id aka model-invariantId to use later to validate vf-module relation in AAI
+			
+			def modelInvariantId = reqMap.requestDetails.modelInfo.modelInvariantUuid ?: ''
+			execution.setVariable('UPDVfModVol_modelInvariantId', modelInvariantId)
+		
+			msoLogger.debug("modelInvariantId from request: " + modelInvariantId)
+			msoLogger.debug("XML request:\n" + request)
+		}
+		catch(groovy.json.JsonException je) {
+			msoLogger.debug(" Request is in XML format.")
+			// assume request is in XML format - proceed as usual to process XML request
+		}
+		
+		def requestId = execution.getVariable('mso-request-id')
+		
+		def requestInfo = getRequiredNodeXml(execution, request, 'request-info')
+		execution.setVariable('UPDVfModVol_requestInfo', requestInfo)
+		execution.setVariable('UPDVfModVol_requestId', requestId)
+		//execution.setVariable('UPDVfModVol_requestId', getRequiredNodeText(execution, requestInfo, 'request-id'))
+		execution.setVariable('UPDVfModVol_source', getNodeTextForce(requestInfo, 'source'))
+		
+		def volumeInputs = getRequiredNodeXml(execution, request, 'volume-inputs')
+		execution.setVariable('UPDVfModVol_volumeInputs', volumeInputs)
+		execution.setVariable('UPDVfModVol_volumeGroupId', getRequiredNodeText(execution, volumeInputs, 'volume-group-id'))
+		execution.setVariable('UPDVfModVol_vnfType', getRequiredNodeText(execution, volumeInputs, 'vnf-type'))
+		execution.setVariable('UPDVfModVol_vnfVersion', getRequiredNodeText(execution, volumeInputs, 'asdc-service-model-version'))
+		execution.setVariable('UPDVfModVol_serviceId', utils.getNodeText(volumeInputs, 'service-id'))
+		execution.setVariable('UPDVfModVol_aicCloudRegion', getRequiredNodeText(execution, volumeInputs, 'aic-cloud-region'))
+		execution.setVariable('UPDVfModVol_tenantId', getRequiredNodeText(execution, volumeInputs, 'tenant-id'))
+		//execution.setVariable('UPDVfModVol_modelCustomizationId', getRequiredNodeText(execution, volumeInputs, 'model-customization-id'))
+
+		setBasicDBAuthHeader(execution, isDebugLogEnabled)
+		
+		def volumeParams = utils.getNodeXml(request, 'volume-params')
+		execution.setVariable('UPDVfModVol_volumeParams', volumeParams)
+	}
+
+	/**
+	 * Prepare and send the synchronous response.
+	 * 
+	 * @param execution The flow's execution instance.
+	 */
+	public void sendSynchResponse(DelegateExecution execution, isDebugLogEnabled) {
+
+		def requestInfo = execution.getVariable('UPDVfModVol_requestInfo')
+		def requestId = execution.getVariable('UPDVfModVol_requestId')
+		def source = execution.getVariable('UPDVfModVol_source')
+		def progress = getNodeTextForce(requestInfo, 'progress')
+		if (progress.isEmpty()) {
+			progress = '0'
+		}
+		def startTime = getNodeTextForce(requestInfo, 'start-time')
+		if (startTime.isEmpty()) {
+			startTime = System.currentTimeMillis()
+		}
+		def volumeInputs = execution.getVariable('UPDVfModVol_volumeInputs')
+		
+		String xmlSyncResponse = """
+			<volume-request xmlns="http://org.onap/so/infra/vnf-request/v1">
+				<request-info>
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>UPDATE_VF_MODULE_VOL</action>
+					<request-status>IN_PROGRESS</request-status>
+					<progress>${MsoUtils.xmlEscape(progress)}</progress>
+					<start-time>${MsoUtils.xmlEscape(startTime)}</start-time>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				</request-info>
+				${volumeInputs}
+			</volume-request>
+		"""
+
+		def syncResponse = ''
+		def isVidRequest = execution.getVariable('UPDVfModVol_isVidRequest')
+		
+		if(isVidRequest) {
+			def volumeGroupId = execution.getVariable('volumeGroupId')
+			syncResponse = """{"requestReferences":{"instanceId":"${volumeGroupId}","requestId":"${requestId}"}}""".trim()
+		} 
+		else {
+			syncResponse = utils.formatXml(xmlSyncResponse)
+		}
+		
+		msoLogger.debug('Sync response: ' + syncResponse)
+		execution.setVariable('UPDVfModVol_syncResponseSent', true)
+		sendWorkflowResponse(execution, 200, syncResponse)
+	}
+	
+	/**
+	 * Prepare a Request for querying AAI for Volume Group information using the
+	 * Volume Group Id and Aic Cloud Region.
+	 * @param execution The flow's execution instance.
+	 */
+	public void queryAAIForVolumeGroup(DelegateExecution execution, isDebugLogEnabled) {
+
+		def volumeGroupId = execution.getVariable('UPDVfModVol_volumeGroupId')
+		def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion')
+
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aaiEndpoint = aaiUtil.getCloudInfrastructureCloudRegionEndpoint(execution)
+		String queryAAIVolumeGroupRequest = aaiEndpoint + '/' + URLEncoder.encode(aicCloudRegion, "UTF-8") + "/volume-groups/volume-group/" + UriUtils.encode(volumeGroupId, "UTF-8")
+		
+		msoLogger.debug('Query AAI volume group by ID: ' + queryAAIVolumeGroupRequest)
+		msoLogger.debug('Query AAI volume group by ID: ' + queryAAIVolumeGroupRequest)
+		
+		APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIVolumeGroupRequest)
+		
+		String returnCode = response.getStatusCode()
+		String aaiResponseAsString = response.getResponseBodyAsString()
+		
+		msoLogger.debug("AAI query volume group by id return code: " + returnCode)
+		msoLogger.debug("AAI query volume group by id response: " + aaiResponseAsString)
+		
+		msoLogger.debug("AAI Volume Group return code: " + returnCode)
+		msoLogger.debug("AAI Volume Group response: " + aaiResponseAsString)
+		
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+		
+		if ((returnCode == '200') || (returnCode == '204')) {
+			
+			execution.setVariable('UPDVfModVol_aaiVolumeGroupResponse', aaiResponseAsString)
+			//def heatStackId = getNodeTextForce(aaiResponseAsString, 'heat-stack-id')
+			//execution.setVariable('UPDVfModVol_volumeGroupHeatStackId', heatStackId)
+			
+			def volumeGroupTenantId = getTenantIdFromVolumeGroup(aaiResponseAsString)
+			if (volumeGroupTenantId == null) {
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Could not find Tenant Id element in Volume Group with Volume Group Id " + volumeGroupId
+					+ ", AIC Cloud Region " + aicCloudRegion)
+			}
+			execution.setVariable('UPDVfModVol_volumeGroupTenantId', volumeGroupTenantId)
+			msoLogger.debug("Received Tenant Id " + volumeGroupTenantId + " from AAI for Volume Group with Volume Group Id " + volumeGroupId + ", AIC Cloud Region " + aicCloudRegion)
+
+			def relatedVfModuleLink = getRelatedVfModuleRelatedLink(aaiResponseAsString)
+			msoLogger.debug("Related VF Module link: " + relatedVfModuleLink)
+			execution.setVariable('UPDVfModVol_relatedVfModuleLink', relatedVfModuleLink)
+			
+		} 
+		else if (returnCode == '404') {
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Volume Group " + volumeGroupId + " not found at AAI")
+		} 
+		else {
+			WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+			throw new BpmnError("MSOWorkflowException")
+		}
+	}
+	
+	/**
+	 * Query AAI service instance
+	 * @param execution
+	 * @param isDebugEnabled
+	 */
+	public void queryAAIForGenericVnf(DelegateExecution execution, isDebugEnabled) {
+		
+		def vnfId = execution.getVariable('vnfId')
+		
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aaiEndpoint = aaiUtil.getNetworkGenericVnfEndpoint(execution)
+		def String queryAAIRequest = aaiEndpoint + "/" + UriUtils.encode(vnfId, "UTF-8")
+		
+		msoLogger.debug("AAI query generic vnf request: " + queryAAIRequest)
+		
+		APIResponse response = aaiUtil.executeAAIGetCall(execution, queryAAIRequest)
+		
+		String returnCode = response.getStatusCode()
+		String aaiResponseAsString = response.getResponseBodyAsString()
+		
+		msoLogger.debug("AAI query generic vnf return code: " + returnCode)
+		msoLogger.debug("AAI query generic vnf response: " + aaiResponseAsString)
+
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+		
+		if (returnCode=='200') {
+			msoLogger.debug('Generic vnf ' + vnfId + ' found in AAI.')
+			execution.setVariable('UPDVfModVol_AAIQueryGenericVfnResponse', aaiResponseAsString)
+		} else {
+			if (returnCode=='404') {
+				def message = 'Generic vnf ' + vnfId + ' was not found in AAI. Return code: 404.'
+				msoLogger.debug(message)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, message)
+			} else {
+				WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}
+	}
+	
+	/**
+	 * Query AAI for VF Module using vf-module-id
+	 * @param execution
+	 * @param isDebugLogEnabled
+	 */
+	public void queryAAIForVfModule(DelegateExecution execution, isDebugLogEnabled) {
+		
+			AaiUtil aaiUtil = new AaiUtil(this)
+			String queryAAIVfModuleRequest = execution.getVariable('UPDVfModVol_relatedVfModuleLink')
+			execution.setVariable('UPDVfModVol_personaModelId', '')
+			
+			msoLogger.debug('Query AAI VF Module: ' + queryAAIVfModuleRequest)
+			msoLogger.debug('Query AAI VF Module: ' + queryAAIVfModuleRequest)
+			
+			def aaiUrl = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			msoLogger.debug('A&AI URL: ' + aaiUrl)
+			
+			def requestEndpoint = aaiUrl + queryAAIVfModuleRequest
+			msoLogger.debug('A&AI request endpoint: ' + requestEndpoint)
+			
+			APIResponse response = aaiUtil.executeAAIGetCall(execution, requestEndpoint)
+			
+			String returnCode = response.getStatusCode()
+			String aaiResponseAsString = response.getResponseBodyAsString()
+			
+			msoLogger.debug("AAI query vf-module: " + returnCode)
+			msoLogger.debug("AAI query vf-module response: " + aaiResponseAsString)
+			
+			msoLogger.debug("AAI query vf-module:: " + returnCode)
+			msoLogger.debug("AAI query vf-module response: " + aaiResponseAsString)
+			
+			ExceptionUtil exceptionUtil = new ExceptionUtil()
+			
+			if ((returnCode == '200') || (returnCode == '204')) {
+				def personaModelId =  utils.getNodeText(aaiResponseAsString, 'model-invariant-id')
+				if(personaModelId == null) {
+					//check old attribute name
+					personaModelId =  utils.getNodeText(aaiResponseAsString, 'persona-model-id')
+				}
+				msoLogger.debug("vfModule personaModelId: " + personaModelId)
+				execution.setVariable('UPDVfModVol_personaModelId', personaModelId)
+			}
+			else if (returnCode == '404') {
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "VF Module not found at AAI")
+			}
+			else {
+				WorkflowException aWorkflowException = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}
+	/**
+	 * 
+	 */
+	public String getRelatedVfModuleRelatedLink(xml) {
+		def list = new XmlSlurper().parseText(xml)
+		def vfModuleRelationship = list.'**'.find { node -> node.'related-to'.text() == 'vf-module'	}
+		return vfModuleRelationship?.'related-link'?.text() ?: ''
+	}
+	
+	/**
+	 * Prepare a Request for invoking the VnfAdapterRest subflow to do
+	 * a Volume Group update.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepVnfAdapterRest(DelegateExecution execution, isDebugLogEnabled) {
+		
+		def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion')
+		def tenantId = execution.getVariable('UPDVfModVol_tenantId')
+		def volumeGroupId = execution.getVariable('UPDVfModVol_volumeGroupId')
+		
+		def aaiVolumeGroupResponse = execution.getVariable('UPDVfModVol_aaiVolumeGroupResponse')
+		def volumeGroupHeatStackId = getNodeTextForce(aaiVolumeGroupResponse, 'heat-stack-id')
+		def volumeGroupName = getNodeTextForce(aaiVolumeGroupResponse, 'volume-group-name')
+		def modelCustomizationId = getNodeTextForce(aaiVolumeGroupResponse, 'vf-module-model-customization-id')
+		if(modelCustomizationId == null) {
+			// Check old attribute name
+			modelCustomizationId = getNodeTextForce(aaiVolumeGroupResponse, 'vf-module-persona-model-customization-id')
+		}
+		
+		def vnfType = execution.getVariable('UPDVfModVol_vnfType')
+		def vnfVersion = execution.getVariable('UPDVfModVol_vnfVersion')
+		
+		def aaiGenericVnfResponse = execution.getVariable('UPDVfModVol_AAIQueryGenericVfnResponse')
+		def vnfId = utils.getNodeText(aaiGenericVnfResponse, 'vnf-id')
+		def vnfName = utils.getNodeText(aaiGenericVnfResponse, 'vnf-name')
+
+		
+		def volumeParamsXml = execution.getVariable('UPDVfModVol_volumeParams')
+		def volumeGroupParams = transformVolumeParamsToEntries(volumeParamsXml)
+		
+		def requestId = execution.getVariable('UPDVfModVol_requestId')
+		def serviceId = execution.getVariable('UPDVfModVol_serviceId')
+		
+		def messageId = execution.getVariable('mso-request-id') + '-' + System.currentTimeMillis()
+		def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
+		def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution)
+		if ('true'.equals(useQualifiedHostName)) {
+				notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
+		}
+
+		String vnfAdapterRestRequest = """
+			<updateVolumeGroupRequest>
+				<cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId>
+				<tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
+				<vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId>
+				<vnfName>${MsoUtils.xmlEscape(vnfName)}</vnfName>
+				<volumeGroupId>${MsoUtils.xmlEscape(volumeGroupId)}</volumeGroupId>
+				<volumeGroupName>${MsoUtils.xmlEscape(volumeGroupName)}</volumeGroupName>
+				<volumeGroupStackId>${MsoUtils.xmlEscape(volumeGroupHeatStackId)}</volumeGroupStackId>
+				<vnfType>${MsoUtils.xmlEscape(vnfType)}</vnfType>
+				<vnfVersion>${MsoUtils.xmlEscape(vnfVersion)}</vnfVersion>
+				<vfModuleType></vfModuleType>
+				<modelCustomizationUuid>${MsoUtils.xmlEscape(modelCustomizationId)}</modelCustomizationUuid>
+				<volumeGroupParams>
+					<entry>
+						<key>vnf_id</key>
+						<value>${MsoUtils.xmlEscape(vnfId)}</value>
+					</entry>
+					<entry>
+						<key>vnf_name</key>
+						<value>${MsoUtils.xmlEscape(vnfName)}</value>
+					</entry>
+					<entry>
+						<key>vf_module_id</key>
+						<value>${MsoUtils.xmlEscape(volumeGroupId)}</value>
+					</entry>
+					<entry>
+						<key>vf_module_name</key>
+						<value>${MsoUtils.xmlEscape(volumeGroupName)}</value>
+					</entry>
+					${volumeGroupParams}
+			    </volumeGroupParams>
+				<skipAAI>true</skipAAI>
+			    <msoRequest>
+			        <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+			        <serviceInstanceId>${MsoUtils.xmlEscape(serviceId)}</serviceInstanceId>
+			    </msoRequest>
+			    <messageId>${MsoUtils.xmlEscape(messageId)}</messageId>
+			    <notificationUrl>${MsoUtils.xmlEscape(notificationUrl)}</notificationUrl>
+			</updateVolumeGroupRequest>
+		"""
+		vnfAdapterRestRequest = utils.formatXml(vnfAdapterRestRequest)
+		execution.setVariable('UPDVfModVol_vnfAdapterRestRequest', vnfAdapterRestRequest)
+		msoLogger.debug('Request for VNFAdapter Rest:\n' + vnfAdapterRestRequest)
+	}
+	
+	/**
+	 * Prepare a Request for updating the DB for this Infra request.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepDbInfraDbRequest(DelegateExecution execution, isDebugLogEnabled) {
+
+		def requestId = execution.getVariable('UPDVfModVol_requestId')
+		ExceptionUtil exceptionUtil = new ExceptionUtil();
+		
+		String updateInfraRequest = """
+			<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+					xmlns:req="http://org.onap.so/requestsdb">
+				<soapenv:Header/>
+				<soapenv:Body>
+					<req:updateInfraRequest>
+						<requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+						<lastModifiedBy>BPEL</lastModifiedBy>
+						<requestStatus>COMPLETE</requestStatus>
+						<progress>100</progress>
+					</req:updateInfraRequest>
+				</soapenv:Body>
+			</soapenv:Envelope>
+		"""
+
+		updateInfraRequest = utils.formatXml(updateInfraRequest)
+		execution.setVariable('UPDVfModVol_updateInfraRequest', updateInfraRequest)
+		msoLogger.debug('Request for Update Infra Request:\n' + updateInfraRequest)
+	}
+	
+	/**
+	 * Build a "CompletionHandler" request.
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepCompletionHandlerRequest(DelegateExecution execution, requestId, action, source, isDebugLogEnabled) {
+
+		String content = """
+		<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+					xmlns:ns="http://org.onap/so/request/types/v1">
+			<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+				<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+				<action>UPDATE</action>
+				<source>${MsoUtils.xmlEscape(source)}</source>
+   			</request-info>
+   			<aetgt:mso-bpel-name>BPMN VF Module Volume action: UPDATE</aetgt:mso-bpel-name>
+		</aetgt:MsoCompletionRequest>		
+		"""
+
+		content = utils.formatXml(content)
+		msoLogger.debug('Request for Completion Handler:\n' + content)
+		execution.setVariable('UPDVfModVol_CompletionHandlerRequest', content)
+	}
+	
+
+	/**
+	 * Build a "FalloutHandler" request.
+	 * @param execution The flow's execution instance.
+	 */
+	public void prepFalloutHandler(DelegateExecution execution, isDebugLogEnabled) {
+		def requestId = execution.getVariable('UPDVfModVol_requestId')
+		def source = execution.getVariable('UPDVfModVol_source')
+		
+		String requestInfo = """
+		<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+		<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+		<action>UPDATE</action>
+		<source>${MsoUtils.xmlEscape(source)}</source>
+	   </request-info>"""
+		
+		def WorkflowException workflowException = execution.getVariable("WorkflowException")
+		def errorResponseCode = workflowException.getErrorCode()
+		def errorResponseMsg = workflowException.getErrorMessage()
+		def encErrorResponseMsg = ""
+		if (errorResponseMsg != null) {
+			encErrorResponseMsg = errorResponseMsg
+		}
+
+		String content = """
+			<sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+					xmlns:reqtype="http://org.onap/so/request/types/v1"
+					xmlns:msoservtypes="http://org.onap/so/request/types/v1"
+					xmlns:structuredtypes="http://org.onap/so/structured/types/v1">				
+				${requestInfo}
+				<sdncadapterworkflow:WorkflowException>
+					<sdncadapterworkflow:ErrorMessage>${MsoUtils.xmlEscape(encErrorResponseMsg)}</sdncadapterworkflow:ErrorMessage>
+					<sdncadapterworkflow:ErrorCode>${MsoUtils.xmlEscape(errorResponseCode)}</sdncadapterworkflow:ErrorCode>
+				</sdncadapterworkflow:WorkflowException>	
+			</sdncadapterworkflow:FalloutHandlerRequest>
+		"""
+		content = utils.formatXml(content)
+		msoLogger.debug('Request for Fallout Handler:\n' + content)
+		execution.setVariable('UPDVfModVol_FalloutHandlerRequest', content)
+	}
+	
+	/**
+	 * Create a WorkflowException for the error case where the Tenant Id from
+	 * AAI did not match the Tenant Id in the incoming request.
+	 * @param execution The flow's execution instance.
+	 */
+	public void handleTenantIdMismatch(DelegateExecution execution, isDebugLogEnabled) {
+		
+		def volumeGroupId = execution.getVariable('UPDVfModVol_volumeGroupId')
+		def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion')
+		def tenantId = execution.getVariable('UPDVfModVol_tenantId')
+		def volumeGroupTenantId = execution.getVariable('UPDVfModVol_volumeGroupTenantId')
+		
+		def String errorMessage = "TenantId " + tenantId + " in incoming request does not match Tenant Id " + volumeGroupTenantId +
+			" retrieved from AAI for Volume Group Id " + volumeGroupId + ", AIC Cloud Region " + aicCloudRegion 
+		
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+		msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Error in UpdateVfModuleVol: ' + errorMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception");
+		exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
+	}
+	
+	/**
+	 * Create a WorkflowException for the error case where the Personal Model Id from
+	 * AAI did not match the model invariant ID in the incoming request.
+	 * @param execution The flow's execution instance.
+	 */
+	public void handlePersonaModelIdMismatch(DelegateExecution execution, isDebugLogEnabled) {
+		
+		def modelInvariantId = execution.getVariable('UPDVfModVol_modelInvariantId')
+		def personaModelId = execution.getVariable('UPDVfModVol_personaModelId')
+		
+		def String errorMessage = "Model Invariant ID " + modelInvariantId + " in incoming request does not match persona model ID " + personaModelId +
+			" retrieved from AAI for Volume Group Id "
+		
+		ExceptionUtil exceptionUtil = new ExceptionUtil()
+		msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Error in UpdateVfModuleVol: ' + errorMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception");
+		exceptionUtil.buildAndThrowWorkflowException(execution, 2500, errorMessage)
+	}
+	
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVnfInfra.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVnfInfra.groovy
new file mode 100644
index 0000000..f251dc4
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVnfInfra.groovy
@@ -0,0 +1,481 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.appc.client.lcm.model.Action;
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.domain.ModelInfo
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.bpmn.core.domain.VnfResource
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.client.aai.*
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
+
+public class UpdateVnfInfra extends VnfCmBase {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, UpdateVnfInfra.class);
+
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtils = new JsonUtils()	
+	def prefix = "UPDVnfI_"
+
+	/**
+	 * Initialize the flow's variables.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void initProcessVariables(DelegateExecution execution) {
+		execution.setVariable('prefix', 'UPDVnfI_')
+		execution.setVariable('Request', null)		
+		execution.setVariable('source', null)
+		execution.setVariable('vnfInputs', null)			
+		execution.setVariable('tenantId', null)		
+		execution.setVariable('vnfParams', null)		
+		execution.setVariable('controllerType', null)		
+		execution.setVariable('UpdateVnfSuccessIndicator', false)
+		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)
+	}
+
+	/**
+	 * 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)
+
+		msoLogger.trace('Entered ' + method)
+
+		initProcessVariables(execution)		
+
+		def incomingRequest = execution.getVariable('bpmnRequest')
+
+		msoLogger.debug("Incoming Infra Request: " + incomingRequest)
+		try {
+			def jsonSlurper = new JsonSlurper()
+			def jsonOutput = new JsonOutput()
+			Map reqMap = jsonSlurper.parseText(incomingRequest)
+			msoLogger.debug(" Request is in JSON format.")
+			
+			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
+			
+			def relatedInstanceList = reqMap.requestDetails?.relatedInstanceList
+						
+			if (relatedInstanceList != null) {
+				relatedInstanceList.each {
+					if (it.relatedInstance.modelInfo?.modelType == 'service') {
+						msoLogger.debug("PROCESSING SERVICE INFO")
+						asdcServiceModelVersion = it.relatedInstance.modelInfo?.modelVersion
+						serviceModelInfo = jsonOutput.toJson(it.relatedInstance.modelInfo)
+						msoLogger.debug("ServiceModelInfo: " + serviceModelInfo)
+						def modelInvariant = jsonUtils.getJsonValue(serviceModelInfo, "modelInvariantUuid")
+						msoLogger.debug("modelInvariant: " + modelInvariant)
+					}
+					
+				}
+			}		
+			
+			execution.setVariable('asdcServiceModelVersion', asdcServiceModelVersion)
+			execution.setVariable('serviceModelInfo', serviceModelInfo)
+			def vnfModelInfo = jsonOutput.toJson(reqMap.requestDetails?.modelInfo)
+			execution.setVariable('vnfModelInfo', vnfModelInfo)
+			def vnfModelInvariantUuid = jsonUtils.getJsonValue(vnfModelInfo, "modelInvariantUuid")
+			execution.setVariable('vnfModelInvariantUuid', vnfModelInvariantUuid)	
+			msoLogger.debug("vnfModelInvariantUuid: " + vnfModelInvariantUuid)	
+			
+			def vnfType = execution.getVariable('vnfType')
+			execution.setVariable('vnfType', vnfType)
+			
+
+			def controllerType = reqMap.requestDetails?.requestParameters?.controllerType
+			execution.setVariable('controllerType', controllerType)
+			
+			msoLogger.debug('Controller Type: ' + controllerType)
+			
+			def userParams = reqMap.requestDetails?.requestParameters?.userParams					
+			
+			Map<String, String> userParamsMap = [:]
+			if (userParams != null) {
+				userParams.each { userParam ->
+					userParamsMap.put(userParam.name, userParam.value.toString())
+				}							
+			}		
+						
+			msoLogger.debug('Processed user params: ' + userParamsMap)		
+			
+			execution.setVariable('vfModuleInputParams', userParamsMap)			
+						
+			def requestId = execution.getVariable("mso-request-id")
+			execution.setVariable('requestId', requestId)
+			execution.setVariable('msoRequestId', requestId)
+			
+			
+			def vnfName = reqMap.requestDetails?.requestInfo?.instanceName ?: null
+			execution.setVariable('vnfName', vnfName)
+			
+			def requestorId = reqMap.requestDetails?.requestInfo?.requestorId ?: null
+			execution.setVariable('requestorId', requestorId)
+			
+			def usePreload = reqMap.requestDetails?.requestParameters?.usePreload
+			execution.setVariable('usePreload', usePreload)
+			
+			def cloudConfiguration = reqMap.requestDetails?.cloudConfiguration
+			def lcpCloudRegionId	= cloudConfiguration.lcpCloudRegionId
+			execution.setVariable('lcpCloudRegionId', lcpCloudRegionId)
+			def tenantId = cloudConfiguration.tenantId
+			execution.setVariable('tenantId', tenantId)
+			
+			def globalSubscriberId = reqMap.requestDetails?.subscriberInfo?.globalSubscriberId ?: ''
+			execution.setVariable('globalSubscriberId', globalSubscriberId)
+			
+			execution.setVariable('sdncVersion', '1702')
+
+			execution.setVariable("UpdateVnfInfraSuccessIndicator", false)
+						
+
+			
+			def source = reqMap.requestDetails?.requestInfo?.source
+			execution.setVariable("source", source)
+			
+			//For Completion Handler & Fallout Handler
+			String requestInfo =
+			"""<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>UPDATE</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+			
+			execution.setVariable("requestInfo", requestInfo)			
+			
+			msoLogger.debug('RequestInfo: ' + execution.getVariable("requestInfo"))		
+			
+			msoLogger.trace('Exited ' + method)
+
+		}
+		catch(groovy.json.JsonException je) {
+			msoLogger.debug(" Request is not in JSON format.")
+			exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format")
+
+		}
+		catch(Exception e) {
+			String restFaultMessage = e.getMessage()
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered - " + "\n" + restFaultMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			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() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+
+		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)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+			String vnfModelInvariantUuid = execution.getVariable('vnfModelInvariantUuid')
+			msoLogger.debug("vnfModelInvariantUuid: " + vnfModelInvariantUuid)
+			List<VnfResource> vnfResources = serviceDecomposition.getVnfResources()
+			
+			for (i in 0..vnfResources.size()-1) {
+				ModelInfo modelInfo = vnfResources[i].getModelInfo()
+				String modelInvariantUuidFromDecomposition = modelInfo.getModelInvariantUuid()
+				msoLogger.debug("modelInvariantUuidFromDecomposition: " + modelInvariantUuidFromDecomposition)
+				
+				if (vnfModelInvariantUuid.equals(modelInvariantUuidFromDecomposition)) {
+					VnfResource vnfResourceDecomposition = vnfResources[i]
+					execution.setVariable('vnfResourceDecomposition', vnfResourceDecomposition)
+					def nfRole = vnfResourceDecomposition.getNfRole()					
+					execution.setVariable('nfRole', nfRole)
+					msoLogger.debug("vnfResourceDecomposition: " + vnfResourceDecomposition.toJsonString())					
+					break
+				}
+				else {
+					//exception!
+				}
+				
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		execution.setVariable("workStep", "checkIfVnfInMaintInAAI")
+		execution.setVariable("failedActivity", "AAI")
+		msoLogger.trace('Entered ' + method)
+
+		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)
+			msoLogger.debug("isInMaint result: " + isInMaint)
+			execution.setVariable('isVnfInMaintenance', isInMaint)
+			
+			if (isInMaint) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "VNF is in maintenance in A&AI")
+			}
+
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		msoLogger.trace('Entered ' + method)
+		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)
+			msoLogger.debug("areLocked result: " + areLocked)
+			execution.setVariable('arePserversLocked', areLocked)
+			
+			if (areLocked) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "pServers are locked in A&AI")
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		msoLogger.trace('Entered ' + method)
+		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)
+			}
+							
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in setVnfInMaintFlagInAAI(): ' + e.getMessage())
+		}
+	}
+	
+	
+
+	/**
+	* Prepare DoUpdateVnfAndModules call.
+	*
+	*
+	* @param execution The flow's execution instance.
+	*/
+   public void prepDoUpdateVnfAndModules(DelegateExecution execution) {
+	   def method = getClass().getSimpleName() + '.prepDoUpdateVnfAndModules(' +
+		   'execution=' + execution.getId() +
+		   ')'
+
+	   execution.setVariable('errorCode', "0")
+	   msoLogger.trace('Entered ' + method)
+	   execution.setVariable("workStep", "doUpdateVnfAndModules")
+	   execution.setVariable("failedActivity", "MSO Update VNF")
+	   msoLogger.trace('Exited ' + method)
+	   
+   }
+	
+	
+	/**
+	 * 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() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+		
+		def errorText = execution.getVariable("errorText")
+		def errorCode = execution.getVariable("errorCode")
+		
+		exceptionUtil.buildAndThrowWorkflowException(execution, errorCode as Integer, errorText)
+	}
+	
+	
+
+	
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfCmBase.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfCmBase.groovy
new file mode 100644
index 0000000..fd9d9cc
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfCmBase.groovy
@@ -0,0 +1,835 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.json.JSONArray
+import org.json.JSONObject
+import org.onap.appc.client.lcm.model.Action;
+import org.onap.appc.client.lcm.model.ActionIdentifiers
+import org.onap.appc.client.lcm.model.Flags
+import org.onap.appc.client.lcm.model.Status
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor;
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.domain.ModelInfo
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.bpmn.core.domain.VnfResource
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.client.aai.*
+import org.onap.so.client.aai.entities.AAIResultWrapper
+import org.onap.so.client.aai.entities.Relationships
+import org.onap.so.client.aai.entities.uri.AAIResourceUri
+import org.onap.so.client.aai.entities.uri.AAIUri
+import org.onap.so.client.aai.entities.uri.AAIUriFactory
+import org.onap.so.client.appc.ApplicationControllerClient;
+import org.onap.so.client.appc.ApplicationControllerSupport;
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+import groovy.json.JsonSlurper
+
+public abstract class VnfCmBase extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, VnfCmBase.class);
+
+	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() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+
+		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)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+			String vnfModelInvariantUuid = execution.getVariable('vnfModelInvariantUuid')
+			msoLogger.debug("vnfModelInvariantUuid: " + vnfModelInvariantUuid)
+			List<VnfResource> vnfResources = serviceDecomposition.getVnfResources()
+			
+			for (i in 0..vnfResources.size()-1) {
+				ModelInfo modelInfo = vnfResources[i].getModelInfo()
+				String modelInvariantUuidFromDecomposition = modelInfo.getModelInvariantUuid()
+				msoLogger.debug("modelInvariantUuidFromDecomposition: " + modelInvariantUuidFromDecomposition)
+				
+				if (vnfModelInvariantUuid.equals(modelInvariantUuidFromDecomposition)) {
+					VnfResource vnfResourceDecomposition = vnfResources[i]
+					execution.setVariable('vnfResourceDecomposition', vnfResourceDecomposition)
+					def nfRole = vnfResourceDecomposition.getNfRole()					
+					execution.setVariable('nfRole', nfRole)
+					msoLogger.debug("vnfResourceDecomposition: " + vnfResourceDecomposition.toJsonString())					
+					break
+				}
+				else {
+					//exception!
+				}
+				
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		execution.setVariable("workStep", "checkIfVnfInMaintInAAI")
+		execution.setVariable("failedActivity", "AAI")
+		msoLogger.trace('Entered ' + method)
+
+		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)
+			msoLogger.debug("isInMaint result: " + isInMaint)
+			execution.setVariable('isVnfInMaintenance', isInMaint)
+			
+			if (isInMaint) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "VNF is in maintenance in A&AI")
+			}
+
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			def vnfId = execution.getVariable("vnfId")
+			msoLogger.debug("vnfId is: " + vnfId)
+			def cloudRegionId = execution.getVariable("lcpCloudRegionId")
+			msoLogger.debug("cloudRegionId is: " + cloudRegionId)
+			
+			AAIResourcesClient client = new AAIResourcesClient()
+			AAIUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
+			// Check if this VNF exists
+			if (!client.exists(genericVnfUri)) {
+				msoLogger.debug("VNF with vnfId " + vnfId + " does not exist in A&AI")
+				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")
+			msoLogger.debug("vnfName from A&AI is: " + vnfName)
+			execution.setVariable("vnfName", vnfName)
+			String nfRole = result.get("nf-role")
+			msoLogger.debug("nfRole from A&AI is: " + nfRole)
+			execution.setVariable("nfRole", nfRole)
+			String vnfHostIpAddress = result.get("ipv4-oam-address")
+			msoLogger.debug("vnfHostIpAddress from A&AI is: " + vnfHostIpAddress)
+			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()
+					JSONArray vserverSelfLinks = new JSONArray()
+				
+					for (AAIResourceUri j in vserverUris) {
+						
+						String vserverId = j.getURIKeys().get('vserver-id')
+						String vserverJson = client.get(j).getJson()
+						msoLogger.debug("Retrieved vserverJson from AAI: " + vserverJson)
+						String vserverSelfLink = jsonUtils.getJsonValue(vserverJson, "vserver-selflink")				
+						
+						vserverIds.put(vserverId)
+						vserverSelfLinks.put(vserverSelfLink)
+					}
+				
+					JSONObject vmidsArray = new JSONObject()
+					JSONObject vserveridsArray = new JSONObject()
+					vmidsArray.put("vmIds", vserverSelfLinks.toString())
+					vserveridsArray.put("vserverIds", vserverIds.toString())					
+				
+					msoLogger.debug("vmidsArray is: " + vmidsArray.toString())								
+					msoLogger.debug("vserveridsArray is: " + vserveridsArray.toString())
+			
+					execution.setVariable("vmIdList", vmidsArray.toString())
+					execution.setVariable("vserverIdList", vserveridsArray.toString())
+				}
+			}
+						
+			if (cloudRegionId != null) {			
+				AAIUri cloudRegionUri = AAIUriFactory.createResourceUri(AAIObjectType.DEFAULT_CLOUD_REGION, cloudRegionId)				
+				// Check if this client region exists
+				if (!client.exists(cloudRegionUri)) {
+					msoLogger.debug("Cloud Region with cloudRegionId " + cloudRegionId + " does not exist in A&AI")
+					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")
+				msoLogger.debug("aicIdentity from A&AI is: " + aicIdentity)
+				execution.setVariable("aicIdentity", aicIdentity)
+			}
+			// preserve relationships if exist
+			Optional<Relationships> relationships = aaiRW.getRelationships()
+			
+			if(relationships.isPresent()) {
+				msoLogger.debug("relationships are present")
+				String rs = relationships.get().getJson()
+				def jsonSlurper = new JsonSlurper()
+				def map = jsonSlurper.parseText(rs)
+				if (map instanceof Map) {
+					List<Map<String, Object>> relationshipsList = (List<Map<String, Object>>)map.get("relationship");
+					for (Map<String, Object> relationship : relationshipsList) {
+						final String relatedTo = (String)relationship.get("related-to");
+						if (relatedTo.equals("platform")) {
+							List<Map<String, Object>> relationshipDataList = (List<Map<String, Object>>)relationship.get("relationship-data")
+							msoLogger.debug("Found platform entry")
+							for (Map<String, Object> relationshipData : relationshipDataList) {
+								String relationshipKey = (String)relationshipData.get("relationship-key");
+								if (relationshipKey.equals("platform.platform-name")) {
+									String platformName = (String) relationshipData.get("relationship-value")
+									msoLogger.debug("platform from A&AI is: " + platformName)
+									execution.setVariable("platform", platformName)
+									break						
+								}
+							}					
+						}
+						if (relatedTo.equals("line-of-business")) {
+							List<Map<String, Object>> relationshipDataList = (List<Map<String, Object>>)relationship.get("relationship-data")
+							msoLogger.debug("Found line-of-business entry")
+							for (Map<String, Object> relationshipData : relationshipDataList) {
+								String relationshipKey = (String)relationshipData.get("relationship-key");
+								if (relationshipKey.equals("line-of-business.line-of-business-name")) {
+									String lineOfBusinessName = (String) relationshipData.get("relationship-value")
+									msoLogger.debug("lineOfBusiness from A&AI is: " + lineOfBusinessName)
+									execution.setVariable("lineOfBusiness", lineOfBusinessName)
+									break
+								}
+							}
+						}
+					}
+					
+				}				
+				
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		msoLogger.trace('Entered ' + method)
+		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)
+			msoLogger.debug("areLocked result: " + areLocked)
+			execution.setVariable('arePserversLocked', areLocked)
+			
+			if (areLocked) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "pServers are locked in A&AI")
+			}			
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		msoLogger.trace('Entered ' + method)
+		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)
+			}
+							
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		execution.setVariable("workStep", "checkClosedLoopDisabledFlagInAAI")
+		execution.setVariable("failedActivity", "AAI")
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()			
+			def vnfId = execution.getVariable("vnfId")
+			msoLogger.debug("vnfId is: " + vnfId)
+			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)
+		
+			msoLogger.debug("isClosedLoopDisabled result: " + isClosedLoopDisabled)
+			execution.setVariable('isClosedLoopDisabled', isClosedLoopDisabled)
+			
+			if (isClosedLoopDisabled) {
+				execution.setVariable("errorCode", "1004")
+				execution.setVariable("errorText", "closedLoop is disabled in A&AI")
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		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")
+		msoLogger.trace('Entered ' + method)
+
+		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)
+			msoLogger.debug("set isClosedLoop to: " + setDisabled)		
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		msoLogger.trace('Entered ' + method)
+		
+		ApplicationControllerClient appcClient = null
+		
+		try {
+			msoLogger.debug("Running APP-C action: " + action.toString())
+			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
+			}
+			msoLogger.debug("Completed AppC request")			
+			int appcCode = appcStatus.getCode()
+			msoLogger.debug("AppC status code is: " + appcCode)
+			msoLogger.debug("AppC status message is: " + appcStatus.getMessage())
+			if (support.getCategoryOf(appcStatus) == ApplicationControllerSupport.StatusCategory.ERROR) {
+				execution.setVariable("errorCode", Integer.toString(appcCode))
+				execution.setVariable("errorText", appcStatus.getMessage())				
+			}
+				
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+			
+		} catch (java.lang.NoSuchMethodError e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())		
+			
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		msoLogger.trace('Entered ' + method)		
+		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 +
+			')'
+
+		msoLogger.trace('Entered ' + method)		
+
+		try {
+			
+			def requestInfo = execution.getVariable('requestInfo')
+
+			String content = """
+				<sdncadapterworkflow:MsoCompletionRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+						xmlns:reqtype="http://org.onap/so/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)
+			msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content)
+			execution.setVariable(resultVar, content)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+		   ')'
+
+	   execution.setVariable('errorCode', "0")
+	   msoLogger.trace('Entered ' + method)
+	   execution.setVariable("workStep", "doUpdateVnfAndModules")
+	   execution.setVariable("failedActivity", "MSO Update VNF")
+	   msoLogger.trace('Exited ' + method)
+	   
+   }
+	
+	/**
+	 * 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 +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+		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
+			}
+
+			String content = """
+				<sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+						xmlns:reqtype="http://org.onap/so/request/types/v1"
+						xmlns:msoservtypes="http://org.onap/so/request/types/v1"
+						xmlns:structuredtypes="http://org.onap/so/structured/types/v1">
+					${requestInformation}
+					<sdncadapterworkflow:WorkflowException>
+						<sdncadapterworkflow:ErrorMessage>${MsoUtils.xmlEscape(encErrorResponseMsg)}</sdncadapterworkflow:ErrorMessage>
+						<sdncadapterworkflow:ErrorCode>${MsoUtils.xmlEscape(errorResponseCode)}</sdncadapterworkflow:ErrorCode>
+					</sdncadapterworkflow:WorkflowException>
+				</sdncadapterworkflow:FalloutHandlerRequest>
+			"""
+			content = utils.formatXml(content)
+			msoLogger.debug(resultVar + ' = ' + System.lineSeparator() + content)
+			execution.setVariable(resultVar, content)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+		
+		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() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+		
+		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)
+		
+		msoLogger.debug("value of " + retryCountVariableName + " is " + retryCount)
+		msoLogger.trace('Exited ' + method)
+			
+		
+	}
+
+
+	public void preProcessRollback (DelegateExecution execution) {
+		msoLogger.trace("preProcessRollback ")
+		try {
+			
+			Object workflowException = execution.getVariable("WorkflowException");
+ 
+			if (workflowException instanceof WorkflowException) {
+				msoLogger.debug("Prev workflowException: " + workflowException.getErrorMessage())
+				execution.setVariable("prevWorkflowException", workflowException);
+				//execution.setVariable("WorkflowException", null);
+			}
+		} catch (BpmnError e) {
+			msoLogger.debug("BPMN Error during preProcessRollback")
+		} catch(Exception ex) {
+			String msg = "Exception in preProcessRollback. " + ex.getMessage()
+			msoLogger.debug(msg)
+		}
+		msoLogger.trace("Exit preProcessRollback ")
+	}
+ 
+	public void postProcessRollback (DelegateExecution execution) {
+		msoLogger.trace("postProcessRollback ")
+		String msg = ""
+		try {
+			Object workflowException = execution.getVariable("prevWorkflowException");
+			if (workflowException instanceof WorkflowException) {
+				msoLogger.debug("Setting prevException to WorkflowException: ")
+				execution.setVariable("WorkflowException", workflowException);
+			}
+			
+		} catch (BpmnError b) {
+			msoLogger.debug("BPMN Error during postProcessRollback")
+			throw b;
+		} catch(Exception ex) {
+			msg = "Exception in postProcessRollback. " + ex.getMessage()
+			msoLogger.debug(msg)
+		}
+		msoLogger.trace("Exit postProcessRollback ")
+	}
+ 
+
+	
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfConfigUpdate.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfConfigUpdate.groovy
new file mode 100644
index 0000000..8ca2871
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfConfigUpdate.groovy
@@ -0,0 +1,483 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.appc.client.lcm.model.Action;
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.client.aai.*
+import org.onap.so.client.aai.entities.AAIResultWrapper
+import org.onap.so.client.aai.entities.uri.AAIUri
+import org.onap.so.client.aai.entities.uri.AAIUriFactory
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
+
+public class VnfConfigUpdate extends VnfCmBase {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, VnfConfigUpdate.class);
+
+	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('controllerType', 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)
+
+		msoLogger.trace('Entered ' + method)
+
+		initProcessVariables(execution)		
+
+		def incomingRequest = execution.getVariable('bpmnRequest')
+
+		msoLogger.debug("Incoming Infra Request: " + incomingRequest)
+		try {
+			def jsonSlurper = new JsonSlurper()
+			def jsonOutput = new JsonOutput()
+			Map reqMap = jsonSlurper.parseText(incomingRequest)
+			msoLogger.debug(" Request is in JSON format.")
+
+			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 controllerType = reqMap.requestDetails?.requestParameters?.controllerType
+			execution.setVariable('controllerType', controllerType)
+			
+			msoLogger.debug('Controller Type: ' + controllerType)			
+			
+			def payload = reqMap.requestDetails?.requestParameters?.payload
+			execution.setVariable('payload', payload)
+			
+			msoLogger.debug('Processed payload: ' + payload)
+			
+			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)
+						
+
+			
+			def source = reqMap.requestDetails?.requestInfo?.source
+			execution.setVariable("source", source)
+			
+			//For Completion Handler & Fallout Handler
+			String requestInfo =
+			"""<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>UPDATE</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+			
+			execution.setVariable("requestInfo", requestInfo)			
+			
+			msoLogger.debug('RequestInfo: ' + execution.getVariable("requestInfo"))		
+			
+			msoLogger.trace('Exited ' + method)
+
+		}
+		catch(groovy.json.JsonException je) {
+			msoLogger.debug(" Request is not in JSON format.")
+			exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format")
+
+		}
+		catch(Exception e) {
+			String restFaultMessage = e.getMessage()
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered - " + "\n" + restFaultMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			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() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+
+
+		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)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		execution.setVariable("workStep", "checkIfVnfInMaintInAAI")
+		execution.setVariable("failedActivity", "AAI")
+		msoLogger.trace('Entered ' + method)
+
+		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)
+			msoLogger.debug("isInMaint result: " + isInMaint)
+			execution.setVariable('isVnfInMaintenance', isInMaint)
+			
+			if (isInMaint) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "VNF is in maintenance in A&AI")
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		msoLogger.trace('Entered ' + method)
+		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)
+			msoLogger.debug("areLocked result: " + areLocked)
+			execution.setVariable('arePserversLocked', areLocked)
+			
+			if (areLocked) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "pServers are locked in A&AI")
+			}
+
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		msoLogger.trace('Entered ' + method)
+		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)
+			}
+							
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		execution.setVariable("workStep", "checkClosedLoopDisabledFlagInAAI")
+		execution.setVariable("failedActivity", "AAI")
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			def vnfId = execution.getVariable("vnfId")
+			msoLogger.debug("vnfId is: " + vnfId)
+			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)
+		
+			msoLogger.debug("isClosedLoopDisabled result: " + isClosedLoopDisabled)
+			execution.setVariable('isClosedLoopDisabled', isClosedLoopDisabled)
+			
+			if (isClosedLoopDisabled) {
+				execution.setVariable("errorCode", "1004")
+				execution.setVariable("errorText", "closedLoop is disabled in A&AI")
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		execution.setVariable('errorCode', "0")
+		if (setDisabled) {
+			execution.setVariable("workStep", "setClosedLoopDisabledFlagInAAI")
+			execution.setVariable("rollbackSetClosedLoopDisabledFlag", true)
+		}
+		else {
+			execution.setVariable("workStep", "unsetClosedLoopDisabledFlagInAAI")
+		}
+		
+		execution.setVariable("failedActivity", "AAI")
+		msoLogger.trace('Entered ' + method)
+
+		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)
+			msoLogger.debug("set isClosedLoop to: " + setDisabled)		
+
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+		
+		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() +
+			')'
+
+		msoLogger.trace('Entered ' + method)
+		
+		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)
+		
+		msoLogger.debug("value of " + retryCountVariableName + " is " + retryCount)
+		msoLogger.trace('Exited ' + method)
+			
+		
+	}
+	
+	
+	
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfInPlaceUpdate.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfInPlaceUpdate.groovy
new file mode 100644
index 0000000..68d5c19
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/VnfInPlaceUpdate.groovy
@@ -0,0 +1,599 @@
+/*-
+ * ============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.onap.so.bpmn.infrastructure.scripts
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.appc.client.lcm.model.Action
+import org.onap.appc.client.lcm.model.ActionIdentifiers
+import org.onap.appc.client.lcm.model.Flags
+import org.onap.appc.client.lcm.model.Status
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.client.aai.*
+import org.onap.so.client.aai.entities.AAIResultWrapper
+import org.onap.so.client.aai.entities.uri.AAIUri
+import org.onap.so.client.aai.entities.uri.AAIUriFactory
+import org.onap.so.client.appc.ApplicationControllerClient;
+import org.onap.so.client.appc.ApplicationControllerSupport;
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
+
+public class VnfInPlaceUpdate extends VnfCmBase {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, VnfInPlaceUpdate.class);
+
+	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('controllerType', 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)
+
+		msoLogger.trace('Entered ' + method)
+
+		initProcessVariables(execution)
+
+		def incomingRequest = execution.getVariable('bpmnRequest')
+
+		msoLogger.debug("Incoming Infra Request: " + incomingRequest)
+		try {
+			def jsonSlurper = new JsonSlurper()
+			def jsonOutput = new JsonOutput()
+			Map reqMap = jsonSlurper.parseText(incomingRequest)
+			msoLogger.debug(" Request is in JSON format.")
+
+			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 controllerType = reqMap.requestDetails?.requestParameters?.controllerType
+			execution.setVariable('controllerType', controllerType)
+			
+			msoLogger.debug('Controller Type: ' + controllerType)
+		
+			def payload = reqMap.requestDetails?.requestParameters?.payload
+			execution.setVariable('payload', payload)
+
+			msoLogger.debug('Processed payload: ' + payload)
+
+
+			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)
+
+
+
+			def source = reqMap.requestDetails?.requestInfo?.source
+			execution.setVariable("source", source)
+
+			//For Completion Handler & Fallout Handler
+			String requestInfo =
+					"""<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>UPDATE</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+
+			execution.setVariable("requestInfo", requestInfo)
+
+			msoLogger.debug('RequestInfo: ' + execution.getVariable("requestInfo"))
+
+			msoLogger.trace('Exited ' + method)
+
+		}
+		catch(groovy.json.JsonException je) {
+			msoLogger.debug(" Request is not in JSON format.")
+			exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format")
+		}
+		catch(Exception e) {
+			String restFaultMessage = e.getMessage()
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, " Exception Encountered - " + "\n" + restFaultMessage, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			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() +
+				')'
+
+		msoLogger.trace('Entered ' + method)
+
+
+		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)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+				')'
+
+		execution.setVariable('errorCode', "0")
+		execution.setVariable("workStep", "checkIfVnfInMaintInAAI")
+		execution.setVariable("failedActivity", "AAI")
+		msoLogger.trace('Entered ' + method)
+
+		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)
+			msoLogger.debug("isInMaint result: " + isInMaint)
+			execution.setVariable('isVnfInMaintenance', isInMaint)
+
+			if (isInMaint) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "VNF is in maintenance in A&AI")
+			}
+
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+				')'
+
+		execution.setVariable('errorCode', "0")
+		msoLogger.trace('Entered ' + method)
+		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)
+			msoLogger.debug("areLocked result: " + areLocked)
+			execution.setVariable('arePserversLocked', areLocked)
+
+			if (areLocked) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "pServers are locked in A&AI")
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+				')'
+
+		execution.setVariable('errorCode', "0")
+		msoLogger.trace('Entered ' + method)
+		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)
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+				')'
+
+		execution.setVariable('errorCode', "0")
+		execution.setVariable("workStep", "checkClosedLoopDisabledFlagInAAI")
+		execution.setVariable("failedActivity", "AAI")
+		msoLogger.trace('Entered ' + method)
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			def vnfId = execution.getVariable("vnfId")
+			msoLogger.debug("vnfId is: " + vnfId)
+			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)
+
+			msoLogger.debug("isClosedLoopDisabled result: " + isClosedLoopDisabled)
+			execution.setVariable('isClosedLoopDisabled', isClosedLoopDisabled)
+
+			if (isClosedLoopDisabled) {
+				execution.setVariable("errorCode", "1004")
+				execution.setVariable("errorText", "closedLoop is disabled in A&AI")
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+				')'
+
+		execution.setVariable('errorCode', "0")
+		if (setDisabled) {
+			execution.setVariable("workStep", "setClosedLoopDisabledFlagInAAI")
+			execution.setVariable("rollbackSetClosedLoopDisabledFlag", true)
+		}
+		else {
+			execution.setVariable("workStep", "unsetClosedLoopDisabledFlagInAAI")
+		}
+
+		execution.setVariable("failedActivity", "AAI")
+		msoLogger.trace('Entered ' + method)
+
+		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)
+			msoLogger.debug("set isClosedLoop to: " + setDisabled)
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+				')'
+
+		execution.setVariable('errorCode', "0")
+		msoLogger.trace('Entered ' + method)
+
+		ApplicationControllerClient appcClient = null
+
+		try {
+			msoLogger.debug("Running APP-C action: " + action.toString())
+			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
+			}
+			msoLogger.debug("Completed AppC request")
+			int appcCode = appcStatus.getCode()
+			msoLogger.debug("AppC status code is: " + appcCode)
+			msoLogger.debug("AppC status message is: " + appcStatus.getMessage())
+			if (support.getCategoryOf(appcStatus) == ApplicationControllerSupport.StatusCategory.ERROR) {
+				execution.setVariable("errorCode", Integer.toString(appcCode))
+				execution.setVariable("errorText", appcStatus.getMessage())
+			}
+
+			msoLogger.trace('Exited ' + method)
+		} catch (BpmnError e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+		} catch (java.lang.NoSuchMethodError e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+		} catch (Exception e) {
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + 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() +
+				')'
+
+		execution.setVariable('errorCode', "0")
+		msoLogger.trace('Entered ' + method)
+		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() +
+				')'
+
+		msoLogger.trace('Entered ' + method)
+
+		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() +
+				')'
+
+		msoLogger.trace('Entered ' + method)
+
+		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)
+
+		msoLogger.debug("value of " + retryCountVariableName + " is " + retryCount)
+		msoLogger.trace('Exited ' + method)
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/CreateVcpeResCustService.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/CreateVcpeResCustService.groovy
new file mode 100644
index 0000000..86c5f65
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/CreateVcpeResCustService.groovy
@@ -0,0 +1,814 @@
+/*
+ * ============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.onap.so.bpmn.vcpe.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.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.CatalogDbUtils
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.domain.*
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.springframework.web.util.UriUtils;
+
+import groovy.json.*
+
+
+
+/**
+ * This groovy class supports the <class>CreateVcpeResCustService.bpmn</class> process.
+ *
+ * @author ek1439
+ *
+ */
+public class CreateVcpeResCustService extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, CreateVcpeResCustService.class);
+
+    private static final String DebugFlag = "isDebugLogEnabled"
+
+    String Prefix = "CVRCS_"
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+    JsonUtils jsonUtil = new JsonUtils()
+    VidUtils vidUtils = new VidUtils()
+    CatalogDbUtils catalogDbUtils = new CatalogDbUtils()
+
+    /**
+     * This method is executed during the preProcessRequest task of the <class>CreateServiceInstance.bpmn</class> process.
+     * @param execution
+     */
+    public InitializeProcessVariables(DelegateExecution execution) {
+        /* Initialize all the process variables in this block */
+
+        execution.setVariable("createVcpeServiceRequest", "")
+        execution.setVariable("globalSubscriberId", "")
+        execution.setVariable("serviceInstanceName", "")
+        execution.setVariable("msoRequestId", "")
+        execution.setVariable(Prefix + "VnfsCreatedCount", 0)
+        execution.setVariable("productFamilyId", "")
+        execution.setVariable("brgWanMacAddress", "")
+        execution.setVariable("customerLocation", "")
+        execution.setVariable("homingService", "")
+        execution.setVariable("cloudOwner", "")
+        execution.setVariable("cloudRegionId", "")
+        execution.setVariable("homingModelIds", "")
+
+        //TODO
+        execution.setVariable("sdncVersion", "1707")
+    }
+
+    // **************************************************
+    //     Pre or Prepare Request Section
+    // **************************************************
+    /**
+     * This method is executed during the preProcessRequest task of the <class>CreateServiceInstance.bpmn</class> process.
+     * @param execution
+     */
+    public void preProcessRequest(DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable(DebugFlag)
+        execution.setVariable("prefix", Prefix)
+
+        msoLogger.trace("Inside preProcessRequest CreateVcpeResCustService Request ")
+
+        try {
+            // initialize flow variables
+            InitializeProcessVariables(execution)
+
+            //Config Inputs
+            String aaiDistDelay = execution.getVariable('URN_mso_workflow_aai_distribution_delay')
+            if (isBlank(aaiDistDelay)) {
+                msg = "URN_mso_workflow_aai_distribution_delay is null"
+                msoLogger.debug(msg)
+                exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+            }
+            execution.setVariable("aaiDistDelay", aaiDistDelay)
+            msoLogger.debug("AAI distribution delay: " + aaiDistDelay)
+
+            // check for incoming json message/input
+            String createVcpeServiceRequest = execution.getVariable("bpmnRequest")
+            msoLogger.debug(createVcpeServiceRequest)
+            execution.setVariable("createVcpeServiceRequest", createVcpeServiceRequest);
+            println 'createVcpeServiceRequest - ' + createVcpeServiceRequest
+
+            // extract requestId
+            String requestId = execution.getVariable("mso-request-id")
+            execution.setVariable("msoRequestId", requestId)
+
+            String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+            if ((serviceInstanceId == null) || (serviceInstanceId.isEmpty())) {
+                serviceInstanceId = UUID.randomUUID().toString()
+                msoLogger.debug(" Generated new Service Instance: " + serviceInstanceId)
+            } else {
+                msoLogger.debug("Using provided Service Instance ID: " + serviceInstanceId)
+            }
+
+            serviceInstanceId = UriUtils.encode(serviceInstanceId, "UTF-8")
+            execution.setVariable("serviceInstanceId", serviceInstanceId)
+            utils.log("DEBUG", "Incoming serviceInstanceId is: " + serviceInstanceId, isDebugEnabled)
+
+            String serviceInstanceName = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.instanceName")
+            execution.setVariable("serviceInstanceName", serviceInstanceName)
+            utils.log("DEBUG", "Incoming serviceInstanceName is: " + serviceInstanceName, isDebugEnabled)
+
+            String requestAction = execution.getVariable("requestAction")
+            execution.setVariable("requestAction", requestAction)
+
+            setBasicDBAuthHeader(execution, isDebugEnabled)
+
+            String source = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.source")
+            if ((source == null) || (source.isEmpty())) {
+                source = "VID"
+            }
+            execution.setVariable("source", source)
+
+            // extract globalSubscriberId
+            String globalSubscriberId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.subscriberInfo.globalSubscriberId")
+
+            // verify element global-customer-id is sent from JSON input, throw exception if missing
+            if ((globalSubscriberId == null) || (globalSubscriberId.isEmpty())) {
+                String dataErrorMessage = " Element 'globalSubscriberId' is missing. "
+                exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+
+            } else {
+                execution.setVariable("globalSubscriberId", globalSubscriberId)
+                execution.setVariable("globalCustomerId", globalSubscriberId)
+            }
+
+            // extract subscriptionServiceType
+            String subscriptionServiceType = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestParameters.subscriptionServiceType")
+            execution.setVariable("subscriptionServiceType", subscriptionServiceType)
+            msoLogger.debug("Incoming subscriptionServiceType is: " + subscriptionServiceType)
+
+            String suppressRollback = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.suppressRollback")
+            execution.setVariable("disableRollback", suppressRollback)
+            msoLogger.debug("Incoming Suppress/Disable Rollback is: " + suppressRollback)
+
+            String productFamilyId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.productFamilyId")
+            execution.setVariable("productFamilyId", productFamilyId)
+            msoLogger.debug("Incoming productFamilyId is: " + productFamilyId)
+
+            String subscriberInfo = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.subscriberInfo")
+            execution.setVariable("subscriberInfo", subscriberInfo)
+            msoLogger.debug("Incoming subscriberInfo is: " + subscriberInfo)
+
+            // extract cloud configuration, split vid_ID into cloudOwner and cloudRegionId
+            String vimId = jsonUtil.getJsonValue(createVcpeServiceRequest,
+                    "requestDetails.cloudConfiguration.lcpCloudRegionId")
+            def cloudRegion = vimId.split("_")
+            def cloudOwner = cloudRegion[0].toString()
+            def cloudRegionId = cloudRegion[1].toString()
+            execution.setVariable("cloudOwner", cloudOwner)
+            utils.log("DEBUG","cloudOwner: " + cloudOwner, isDebugEnabled)
+            execution.setVariable("cloudRegionId", cloudRegionId)
+            utils.log("DEBUG","cloudRegionId: " + cloudRegionId, isDebugEnabled)
+
+            /*
+            * Extracting User Parameters from incoming Request and converting into a Map
+            */
+            def jsonSlurper = new JsonSlurper()
+            def jsonOutput = new JsonOutput()
+
+            Map reqMap = jsonSlurper.parseText(createVcpeServiceRequest)
+
+            //InputParams
+            def userParams = reqMap.requestDetails?.requestParameters?.userParams
+
+            Map<String, String> inputMap = [:]
+          if (userParams) {
+                userParams.each {
+                                userParam ->
+                        if ("Customer_Location".equals(userParam?.name)) {
+                                    execution.setVariable("customerLocation", userParam.value)
+                                    userParam.value.each {
+                                param ->
+                                    inputMap.put(param.key, param.value)
+                                    }
+                                }
+                        if ("Homing_Model_Ids".equals(userParam?.name)) {
+                            utils.log("DEBUG", "Homing_Model_Ids: " + userParam.value.toString() + "  ---- Type is:" +
+                                    userParam.value.getClass() , isDebugEnabled)
+                            def modelIdLst = []
+                            userParam.value.each {
+                                param ->
+                                    def valueMap = [:]
+                                    param.each {
+                                        entry ->
+                                            valueMap.put(entry.key, entry.value)
+                                    }
+                                    modelIdLst.add(valueMap)
+                                    utils.log("DEBUG", "Param: " + param.toString() + "  ---- Type is:" +
+                                            param.getClass() , isDebugEnabled)
+                                    }
+                            execution.setVariable("homingModelIds", modelIdLst)
+                                }
+                        if ("BRG_WAN_MAC_Address".equals(userParam?.name)) {
+                            execution.setVariable("brgWanMacAddress", userParam.value)
+                            inputMap.put("BRG_WAN_MAC_Address", userParam.value)
+                        }
+                        if ("Homing_Solution".equals(userParam?.name)) {
+                                    execution.setVariable("homingService", userParam.value)
+                                    inputMap.put("Homing_Solution", userParam.value)
+                                }
+                }
+            }
+
+            if (execution.getVariable("homingService") == "") {
+                // Set Default Homing to OOF if not set
+                execution.setVariable("homingService", "oof")
+            }
+
+            msoLogger.debug("User Input Parameters map: " + userParams.toString())
+            execution.setVariable("serviceInputParams", inputMap)
+
+            msoLogger.debug("Incoming brgWanMacAddress is: " + execution.getVariable('brgWanMacAddress'))
+
+            //For Completion Handler & Fallout Handler
+            String requestInfo =
+                    """<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+                    <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+                    <action>CREATE</action>
+                    <source>${MsoUtils.xmlEscape(source)}</source>
+                   </request-info>"""
+
+            execution.setVariable(Prefix + "requestInfo", requestInfo)
+
+            msoLogger.trace("Completed preProcessRequest CreateVcpeResCustService Request ")
+
+        } catch (BpmnError e) {
+            throw e;
+
+        } catch (Exception ex) {
+            String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected from method preProcessRequest() - " + ex.getMessage()
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    }
+
+    public void sendSyncResponse(DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable(DebugFlag)
+
+        msoLogger.trace("Inside sendSyncResponse of CreateVcpeResCustService ")
+
+        try {
+            String serviceInstanceId = execution.getVariable("serviceInstanceId")
+            String requestId = execution.getVariable("mso-request-id")
+
+            // RESTResponse (for API Handler (APIH) Reply Task)
+            String syncResponse = """{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${
+                requestId
+            }"}}""".trim()
+
+            msoLogger.debug(" sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse)
+            sendWorkflowResponse(execution, 202, syncResponse)
+
+        } catch (Exception ex) {
+            String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected from method sendSyncResponse() - " + ex.getMessage()
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    }
+
+    // *******************************
+    //
+    // *******************************
+    public void prepareDecomposeService(DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable(DebugFlag)
+
+        try {
+            msoLogger.trace("Inside prepareDecomposeService of CreateVcpeResCustService ")
+
+            String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest")
+
+            //serviceModelInfo JSON string will be used as-is for DoCreateServiceInstance BB
+            String serviceModelInfo = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.modelInfo")
+            execution.setVariable("serviceModelInfo", serviceModelInfo)
+
+            msoLogger.trace("Completed prepareDecomposeService of CreateVcpeResCustService ")
+        } catch (Exception ex) {
+            // try error in method block
+            String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method prepareDecomposeService() - " + ex.getMessage()
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    }
+
+    // *******************************
+    //
+    // *******************************
+    public void prepareCreateServiceInstance(DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable(DebugFlag)
+
+        try {
+            msoLogger.trace("Inside prepareCreateServiceInstance of CreateVcpeResCustService ")
+
+            /*
+             * Service modelInfo is created in earlier step. This flow can use it as-is ... or, extract from DecompositionObject
+             *      ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+             *      ModelInfo modelInfo = serviceDecomposition.getModelInfo()
+             *
+             */
+            String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest")
+//          String serviceInputParams = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestParameters")
+//          execution.setVariable("serviceInputParams", serviceInputParams)
+
+
+            String serviceInstanceName = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.instanceName")
+            execution.setVariable("serviceInstanceName", serviceInstanceName)
+
+            ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+            execution.setVariable("serviceDecompositionString", serviceDecomposition.toJsonStringNoRootName())
+
+            msoLogger.trace("Completed prepareCreateServiceInstance of CreateVcpeResCustService ")
+        } catch (Exception ex) {
+            // try error in method block
+            String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method prepareCreateServiceInstance() - " + ex.getMessage()
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    }
+
+    public void postProcessServiceInstanceCreate(DelegateExecution execution) {
+        def method = getClass().getSimpleName() + '.postProcessServiceInstanceCreate(' + 'execution=' + execution.getId() + ')'
+        def isDebugLogEnabled = execution.getVariable(DebugFlag)
+        msoLogger.trace('Entered ' + method)
+
+        String requestId = execution.getVariable("mso-request-id")
+        String serviceInstanceId = execution.getVariable("serviceInstanceId")
+        String serviceInstanceName = execution.getVariable("serviceInstanceName")
+
+        try {
+
+            String payload = """
+            <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://org.onap.so/requestsdb">
+            <soapenv:Header/>
+            <soapenv:Body>
+            <req:updateInfraRequest>
+                <requestId>${MsoUtils.xmlEscape(requestId)}</requestId>
+                <lastModifiedBy>BPEL</lastModifiedBy>
+                <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
+                <serviceInstanceName>${MsoUtils.xmlEscape(serviceInstanceName)}</serviceInstanceName>
+            </req:updateInfraRequest>
+            </soapenv:Body>
+            </soapenv:Envelope>
+            """
+            execution.setVariable(Prefix + "setUpdateDbInstancePayload", payload)
+            msoLogger.debug(Prefix + "setUpdateDbInstancePayload: " + payload)
+            msoLogger.trace('Exited ' + method)
+
+        } catch (BpmnError e) {
+            throw e;
+        } catch (Exception e) {
+            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+            exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error - Occured in" + method)
+        }
+    }
+
+
+    public void processDecomposition(DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable(DebugFlag)
+
+        msoLogger.trace("Inside processDecomposition() of CreateVcpeResCustService ")
+
+        try {
+
+            ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+
+            // VNFs
+            List<VnfResource> vnfList = serviceDecomposition.getVnfResources()
+            filterVnfs(vnfList)
+            serviceDecomposition.setVnfResources(vnfList)
+
+            execution.setVariable("vnfList", vnfList)
+            execution.setVariable("vnfListString", vnfList.toString())
+
+            String vnfModelInfoString = ""
+            if (vnfList != null && vnfList.size() > 0) {
+                execution.setVariable(Prefix + "VNFsCount", vnfList.size())
+                msoLogger.debug("vnfs to create: " + vnfList.size())
+                ModelInfo vnfModelInfo = vnfList[0].getModelInfo()
+
+                vnfModelInfoString = vnfModelInfo.toString()
+                String vnfModelInfoWithRoot = vnfModelInfo.toString()
+                vnfModelInfoString = jsonUtil.getJsonValue(vnfModelInfoWithRoot, "modelInfo")
+            } else {
+                execution.setVariable(Prefix + "VNFsCount", 0)
+                msoLogger.debug("no vnfs to create based upon serviceDecomposition content")
+            }
+
+            execution.setVariable("vnfModelInfo", vnfModelInfoString)
+            execution.setVariable("vnfModelInfoString", vnfModelInfoString)
+            msoLogger.debug(" vnfModelInfoString :" + vnfModelInfoString)
+
+            msoLogger.trace("Completed processDecomposition() of CreateVcpeResCustService ")
+        } catch (Exception ex) {
+            sendSyncError(execution)
+            String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. processDecomposition() - " + ex.getMessage()
+            msoLogger.debug(exceptionMessage)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    }
+
+    private void filterVnfs(List<VnfResource> vnfList) {
+        if (vnfList == null) {
+            return
+        }
+
+        // remove BRG & TXC from VNF list
+
+        Iterator<VnfResource> it = vnfList.iterator()
+        while (it.hasNext()) {
+            VnfResource vr = it.next()
+
+            String role = vr.getNfRole()
+            if (role == "BRG" || role == "TunnelXConn" || role == "Tunnel XConn") {
+                it.remove()
+            }
+        }
+    }
+
+
+    public void prepareCreateAllottedResourceTXC(DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable(DebugFlag)
+
+        try {
+            msoLogger.trace("Inside prepareCreateAllottedResourceTXC of CreateVcpeResCustService ")
+
+            /*
+             * Service modelInfo is created in earlier step. This flow can use it as-is ... or, extract from DecompositionObject
+             *      ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+             *      ModelInfo modelInfo = serviceDecomposition.getModelInfo()
+             *
+             */
+            String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest")
+            ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+
+            //allottedResourceModelInfo
+            //allottedResourceRole
+            //The model Info parameters are a JSON structure as defined in the Service Instantiation API.
+            //It would be sufficient to only include the service model UUID (i.e. the modelVersionId), since this BB will query the full model from the Catalog DB.
+            List<AllottedResource> allottedResources = serviceDecomposition.getAllottedResources()
+            if (allottedResources != null) {
+                Iterator iter = allottedResources.iterator();
+                while (iter.hasNext()) {
+                    AllottedResource allottedResource = (AllottedResource) iter.next();
+
+                    msoLogger.debug(" getting model info for AllottedResource # :" + allottedResource.toJsonStringNoRootName())
+                    msoLogger.debug(" allottedResource.getAllottedResourceType() :" + allottedResource.getAllottedResourceType())
+                    if ("TunnelXConn".equalsIgnoreCase(allottedResource.getAllottedResourceType()) || "Tunnel XConn".equalsIgnoreCase(allottedResource.getAllottedResourceType())) {
+                        //set create flag to true
+                        execution.setVariable("createTXCAR", true)
+                        ModelInfo allottedResourceModelInfo = allottedResource.getModelInfo()
+                        execution.setVariable("allottedResourceModelInfoTXC", allottedResourceModelInfo.toJsonStringNoRootName())
+                        execution.setVariable("allottedResourceRoleTXC", allottedResource.getAllottedResourceRole())
+                        execution.setVariable("allottedResourceTypeTXC", allottedResource.getAllottedResourceType())
+                        //After decomposition and homing BBs, there should be an allotted resource object in the decomposition that represents the TXC,
+                        //and in its homingSolution section should be found the infraServiceInstanceId (i.e. infraServiceInstanceId in TXC Allotted Resource structure) (which the Homing BB would have populated).
+                        execution.setVariable("parentServiceInstanceIdTXC", allottedResource.getHomingSolution().getServiceInstanceId())
+                    }
+                }
+            }
+
+            //unit test only
+            String allottedResourceId = execution.getVariable("allottedResourceId")
+            execution.setVariable("allottedResourceIdTXC", allottedResourceId)
+            msoLogger.debug("setting allottedResourceId CreateVcpeResCustService " + allottedResourceId)
+
+            msoLogger.trace("Completed prepareCreateAllottedResourceTXC of CreateVcpeResCustService ")
+        } catch (Exception ex) {
+            // try error in method block
+            String exceptionMessage = "Bpmn error encountered in prepareCreateAllottedResourceTXC flow. Unexpected Error from method prepareCreateServiceInstance() - " + ex.getMessage()
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    }
+
+    public void prepareCreateAllottedResourceBRG(DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable(DebugFlag)
+
+        try {
+            msoLogger.trace("Inside prepareCreateAllottedResourceBRG of CreateVcpeResCustService ")
+
+            /*
+             * Service modelInfo is created in earlier step. This flow can use it as-is ... or, extract from DecompositionObject
+             *      ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+             *      ModelInfo modelInfo = serviceDecomposition.getModelInfo()
+             *
+             */
+            String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest")
+            ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+
+            //allottedResourceModelInfo
+            //allottedResourceRole
+            //The model Info parameters are a JSON structure as defined in the Service Instantiation API.
+            //It would be sufficient to only include the service model UUID (i.e. the modelVersionId), since this BB will query the full model from the Catalog DB.
+            List<AllottedResource> allottedResources = serviceDecomposition.getAllottedResources()
+            if (allottedResources != null) {
+                Iterator iter = allottedResources.iterator();
+                while (iter.hasNext()) {
+                    AllottedResource allottedResource = (AllottedResource) iter.next();
+
+                    msoLogger.debug(" getting model info for AllottedResource # :" + allottedResource.toJsonStringNoRootName())
+                    msoLogger.debug(" allottedResource.getAllottedResourceType() :" + allottedResource.getAllottedResourceType())
+                    if ("BRG".equalsIgnoreCase(allottedResource.getAllottedResourceType())) {
+                        //set create flag to true
+                        execution.setVariable("createBRGAR", true)
+                        ModelInfo allottedResourceModelInfo = allottedResource.getModelInfo()
+                        execution.setVariable("allottedResourceModelInfoBRG", allottedResourceModelInfo.toJsonStringNoRootName())
+                        execution.setVariable("allottedResourceRoleBRG", allottedResource.getAllottedResourceRole())
+                        execution.setVariable("allottedResourceTypeBRG", allottedResource.getAllottedResourceType())
+                        //After decomposition and homing BBs, there should be an allotted resource object in the decomposition that represents the BRG,
+                        //and in its homingSolution section should be found the infraServiceInstanceId (i.e. infraServiceInstanceId in BRG Allotted Resource structure) (which the Homing BB would have populated).
+                        execution.setVariable("parentServiceInstanceIdBRG", allottedResource.getHomingSolution().getServiceInstanceId())
+                    }
+                }
+            }
+
+            //unit test only
+            String allottedResourceId = execution.getVariable("allottedResourceId")
+            execution.setVariable("allottedResourceIdBRG", allottedResourceId)
+            msoLogger.debug("setting allottedResourceId CreateVcpeResCustService " + allottedResourceId)
+
+            msoLogger.trace("Completed prepareCreateAllottedResourceBRG of CreateVcpeResCustService ")
+        } catch (Exception ex) {
+            // try error in method block
+            String exceptionMessage = "Bpmn error encountered in prepareCreateAllottedResourceBRG flow. Unexpected Error from method prepareCreateServiceInstance() - " + ex.getMessage()
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    }
+
+    // *******************************
+    //     Generate Network request Section
+    // *******************************
+    public void prepareVnfAndModulesCreate(DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable(DebugFlag)
+
+        try {
+            msoLogger.trace("Inside prepareVnfAndModulesCreate of CreateVcpeResCustService ")
+
+            //          String disableRollback = execution.getVariable("disableRollback")
+            //          def backoutOnFailure = ""
+            //          if(disableRollback != null){
+            //              if ( disableRollback == true) {
+            //                  backoutOnFailure = "false"
+            //              } else if ( disableRollback == false) {
+            //                  backoutOnFailure = "true"
+            //              }
+            //          }
+            //failIfExists - optional
+
+            String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest")
+            String productFamilyId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.productFamilyId")
+            execution.setVariable("productFamilyId", productFamilyId)
+            msoLogger.debug("productFamilyId: " + productFamilyId)
+
+            List<VnfResource> vnfList = execution.getVariable("vnfList")
+
+            Integer vnfsCreatedCount = execution.getVariable(Prefix + "VnfsCreatedCount")
+            String vnfModelInfoString = null;
+
+            if (vnfList != null && vnfList.size() > 0) {
+                msoLogger.debug("getting model info for vnf # " + vnfsCreatedCount)
+                ModelInfo vnfModelInfo1 = vnfList[0].getModelInfo()
+                msoLogger.debug("got 0 ")
+                ModelInfo vnfModelInfo = vnfList[vnfsCreatedCount.intValue()].getModelInfo()
+                vnfModelInfoString = vnfModelInfo.toString()
+            } else {
+                //TODO: vnfList does not contain data. Need to investigate why ... . Fro VCPE use model stored
+                vnfModelInfoString = execution.getVariable("vnfModelInfo")
+            }
+
+            msoLogger.debug(" vnfModelInfoString :" + vnfModelInfoString)
+
+            // extract cloud configuration
+            String vimId = jsonUtil.getJsonValue(createVcpeServiceRequest,
+                    "requestDetails.cloudConfiguration.lcpCloudRegionId")
+            def cloudRegion = vimId.split("_")
+            execution.setVariable("cloudOwner", cloudRegion[0])
+            msoLogger.debug("cloudOwner: "+ cloudRegion[0])
+            execution.setVariable("cloudRegionId", cloudRegion[1])
+            msoLogger.debug("cloudRegionId: "+ cloudRegion[1])
+            execution.setVariable("lcpCloudRegionId", cloudRegion[1])
+            msoLogger.debug("lcpCloudRegionId: "+ cloudRegion[1])
+            String tenantId = jsonUtil.getJsonValue(createVcpeServiceRequest,
+                    "requestDetails.cloudConfiguration.tenantId")
+            execution.setVariable("tenantId", tenantId)
+            msoLogger.debug("tenantId: " + tenantId)
+
+            String sdncVersion = execution.getVariable("sdncVersion")
+            msoLogger.debug("sdncVersion: " + sdncVersion)
+
+            msoLogger.trace("Completed prepareVnfAndModulesCreate of CreateVcpeResCustService ")
+        } catch (Exception ex) {
+            // try error in method block
+            String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method prepareVnfAndModulesCreate() - " + ex.getMessage()
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    }
+
+    // *******************************
+    //     Validate Vnf request Section -> increment count
+    // *******************************
+    public void validateVnfCreate(DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable(DebugFlag)
+
+        try {
+            msoLogger.trace("Inside validateVnfCreate of CreateVcpeResCustService ")
+
+            Integer vnfsCreatedCount = execution.getVariable(Prefix + "VnfsCreatedCount")
+            vnfsCreatedCount++
+
+            execution.setVariable(Prefix + "VnfsCreatedCount", vnfsCreatedCount)
+
+            msoLogger.debug(" ***** Completed validateVnfCreate of CreateVcpeResCustService ***** " + " vnf # " + vnfsCreatedCount)
+        } catch (Exception ex) {
+            // try error in method block
+            String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method validateVnfCreate() - " + ex.getMessage()
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    }
+
+    // *****************************************
+    //     Prepare Completion request Section
+    // *****************************************
+    public void postProcessResponse(DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable(DebugFlag)
+
+        msoLogger.trace("Inside postProcessResponse of CreateVcpeResCustService ")
+
+        try {
+            String source = execution.getVariable("source")
+            String requestId = execution.getVariable("mso-request-id")
+            String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+            String msoCompletionRequest =
+                    """<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+                                    xmlns:ns="http://org.onap/so/request/types/v1">
+                            <request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+                                <request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+                                <action>CREATE</action>
+                                <source>${MsoUtils.xmlEscape(source)}</source>
+                            </request-info>
+                            <status-message>Service Instance has been created successfully via macro orchestration</status-message>
+                            <serviceInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</serviceInstanceId>
+                            <mso-bpel-name>BPMN macro create</mso-bpel-name>
+                        </aetgt:MsoCompletionRequest>"""
+
+            // Format Response
+            String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+
+            msoLogger.debug(xmlMsoCompletionRequest)
+            execution.setVariable(Prefix + "Success", true)
+            execution.setVariable(Prefix + "CompleteMsoProcessRequest", xmlMsoCompletionRequest)
+            msoLogger.debug(" SUCCESS flow, going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest)
+        } catch (BpmnError e) {
+            throw e;
+        } catch (Exception ex) {
+            // try error in method block
+            String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method postProcessResponse() - " + ex.getMessage()
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    }
+
+    public void preProcessRollback(DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable(DebugFlag)
+        msoLogger.trace("preProcessRollback of CreateVcpeResCustService ")
+        try {
+
+            Object workflowException = execution.getVariable("WorkflowException");
+
+            if (workflowException instanceof WorkflowException) {
+                msoLogger.debug("Prev workflowException: " + workflowException.getErrorMessage())
+                execution.setVariable("prevWorkflowException", workflowException);
+                //execution.setVariable("WorkflowException", null);
+            }
+        } catch (BpmnError e) {
+            msoLogger.debug("BPMN Error during preProcessRollback")
+        } catch (Exception ex) {
+            String msg = "Exception in preProcessRollback. " + ex.getMessage()
+            msoLogger.debug(msg)
+        }
+        msoLogger.trace("Exit preProcessRollback of CreateVcpeResCustService ")
+    }
+
+    public void postProcessRollback(DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable(DebugFlag)
+        msoLogger.trace("postProcessRollback of CreateVcpeResCustService ")
+        String msg = ""
+        try {
+            Object workflowException = execution.getVariable("prevWorkflowException");
+            if (workflowException instanceof WorkflowException) {
+                msoLogger.debug("Setting prevException to WorkflowException: ")
+                execution.setVariable("WorkflowException", workflowException);
+            }
+        } catch (BpmnError b) {
+            msoLogger.debug("BPMN Error during postProcessRollback")
+            throw b;
+        } catch (Exception ex) {
+            msg = "Exception in postProcessRollback. " + ex.getMessage()
+            msoLogger.debug(msg)
+        }
+        msoLogger.trace("Exit postProcessRollback of CreateVcpeResCustService ")
+    }
+
+    public void prepareFalloutRequest(DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable(DebugFlag)
+
+        msoLogger.trace("STARTED CreateVcpeResCustService prepareFalloutRequest Process ")
+
+        try {
+            WorkflowException wfex = execution.getVariable("WorkflowException")
+            msoLogger.debug(" Incoming Workflow Exception: " + wfex.toString())
+            String requestInfo = execution.getVariable(Prefix + "requestInfo")
+            msoLogger.debug(" Incoming Request Info: " + requestInfo)
+
+            //TODO. hmmm. there is no way to UPDATE error message.
+//          String errorMessage = wfex.getErrorMessage()
+//          boolean successIndicator = execution.getVariable("DCRESI_rolledBack")
+//          if (successIndicator){
+//              errorMessage = errorMessage + ". Rollback successful."
+//          } else {
+//              errorMessage = errorMessage + ". Rollback not completed."
+//          }
+
+            String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo)
+
+            execution.setVariable(Prefix + "falloutRequest", falloutRequest)
+
+        } catch (Exception ex) {
+            msoLogger.debug("Error Occured in CreateVcpeResCustService prepareFalloutRequest Process " + ex.getMessage())
+            exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in CreateVcpeResCustService prepareFalloutRequest Process")
+        }
+        msoLogger.trace("COMPLETED CreateVcpeResCustService prepareFalloutRequest Process ")
+    }
+
+
+    public void sendSyncError(DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable(DebugFlag)
+        execution.setVariable("prefix", Prefix)
+
+        msoLogger.trace("Inside sendSyncError() of CreateVcpeResCustService ")
+
+        try {
+            String errorMessage = ""
+            def wfe = execution.getVariable("WorkflowException")
+            if (wfe instanceof WorkflowException) {
+                errorMessage = wfe.getErrorMessage()
+            } else {
+                errorMessage = "Sending Sync Error."
+            }
+
+            String buildworkflowException =
+                    """<aetgt:WorkflowException xmlns:aetgt="http://org.onap/so/workflow/schema/v1">
+                    <aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+                    <aetgt:ErrorCode>7000</aetgt:ErrorCode>
+                    </aetgt:WorkflowException>"""
+
+            msoLogger.debug(buildworkflowException)
+            sendWorkflowResponse(execution, 500, buildworkflowException)
+        } catch (Exception ex) {
+            msoLogger.debug(" Sending Sync Error Activity Failed. " + "\n" + ex.getMessage())
+        }
+    }
+
+    public void processJavaException(DelegateExecution execution) {
+        def isDebugEnabled = execution.getVariable(DebugFlag)
+        execution.setVariable("prefix", Prefix)
+        try {
+            msoLogger.debug("Caught a Java Exception")
+            msoLogger.debug("Started processJavaException Method")
+            msoLogger.debug("Variables List: " + execution.getVariables())
+            execution.setVariable(Prefix + "unexpectedError", "Caught a Java Lang Exception")
+            // Adding this line temporarily until this flows error handling gets updated
+            exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Caught a Java Lang Exception")
+        } catch (BpmnError b) {
+            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Rethrowing MSOWorkflowException", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "");
+            throw b
+        } catch (Exception e) {
+            msoLogger.debug("Caught Exception during processJavaException Method: " + e)
+            execution.setVariable(Prefix + "unexpectedError", "Exception in processJavaException method")
+            // Adding this line temporarily until this flows error handling gets updated
+            exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception in processJavaException method")
+        }
+        msoLogger.debug("Completed processJavaException Method")
+    }
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DeleteVcpeResCustService.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DeleteVcpeResCustService.groovy
new file mode 100644
index 0000000..eaf3631
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DeleteVcpeResCustService.groovy
@@ -0,0 +1,461 @@
+/*
+ * ============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.onap.so.bpmn.vcpe.scripts
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.CatalogDbUtils
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.NetworkUtils
+import org.onap.so.bpmn.common.scripts.VidUtils
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+import org.onap.so.rest.APIResponse
+
+import static org.apache.commons.lang3.StringUtils.isBlank
+
+
+/**
+ * This groovy class supports the <class>DeleteVcpeResCustService.bpmn</class> process.
+ *
+ * @author dm4252
+ *
+ */
+public class DeleteVcpeResCustService extends AbstractServiceTaskProcessor {
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DeleteVcpeResCustService.class);
+
+	private static final String DebugFlag = "isDebugLogEnabled"
+
+	String Prefix = "DVRCS_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+	VidUtils vidUtils = new VidUtils()
+	CatalogDbUtils catalogDbUtils = new CatalogDbUtils()
+	NetworkUtils networkUtils = new NetworkUtils()
+
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>DeleteVcpeResCustService.bpmn</class> process.
+	 * @param execution
+	 */
+	public InitializeProcessVariables(DelegateExecution execution){
+		/* Initialize all the process variables in this block */
+
+		execution.setVariable("DeleteVcpeResCustServiceRequest", "")
+		execution.setVariable("msoRequestId", "")
+		execution.setVariable(Prefix+"vnfsDeletedCount", 0)
+		execution.setVariable(Prefix+"vnfsCount", 0)
+	}
+
+	// **************************************************
+	//     Pre or Prepare Request Section
+	// **************************************************
+	/**
+	 * This method is executed during the preProcessRequest task of the <class>CreateServiceInstance.bpmn</class> process.
+	 * @param execution
+	 */
+	public void preProcessRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable(DebugFlag)
+		execution.setVariable("prefix",Prefix)
+
+		msoLogger.trace("Inside preProcessRequest DeleteVcpeResCustService Request ")
+
+		try {
+			// initialize flow variables
+			InitializeProcessVariables(execution)
+
+			// check for incoming json message/input
+			String DeleteVcpeResCustServiceRequest = execution.getVariable("bpmnRequest")
+			msoLogger.debug(DeleteVcpeResCustServiceRequest)
+			execution.setVariable("DeleteVcpeResCustServiceRequest", DeleteVcpeResCustServiceRequest);
+			println 'DeleteVcpeResCustServiceRequest - ' + DeleteVcpeResCustServiceRequest
+
+			// extract requestId
+			String requestId = execution.getVariable("mso-request-id")
+			execution.setVariable("msoRequestId", requestId)
+
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			if ((serviceInstanceId == null) || (serviceInstanceId.isEmpty())) {
+				String dataErrorMessage = " Element 'serviceInstanceId' is missing. "
+				exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
+			}
+			
+			String requestAction = execution.getVariable("requestAction")
+			execution.setVariable("requestAction", requestAction)
+
+			String source = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.requestInfo.source")
+			if ((source == null) || (source.isEmpty())) {
+				source = "VID"
+			}
+			execution.setVariable("source", source)
+
+			// extract globalSubscriberId
+			String globalSubscriberId = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.subscriberInfo.globalSubscriberId")
+
+			// global-customer-id is optional on Delete
+
+			execution.setVariable("globalSubscriberId", globalSubscriberId)
+			execution.setVariable("globalCustomerId", globalSubscriberId)
+			
+			String suppressRollback = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.requestInfo.suppressRollback")
+			execution.setVariable("disableRollback", suppressRollback)
+			msoLogger.debug("Incoming Suppress/Disable Rollback is: " + suppressRollback)
+			
+			String productFamilyId = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.requestInfo.productFamilyId")
+			execution.setVariable("productFamilyId", productFamilyId)
+			msoLogger.debug("Incoming productFamilyId is: " + productFamilyId)
+			
+			// extract subscriptionServiceType
+			String subscriptionServiceType = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.requestParameters.subscriptionServiceType")
+			execution.setVariable("subscriptionServiceType", subscriptionServiceType)
+			msoLogger.debug("Incoming subscriptionServiceType is: " + subscriptionServiceType)
+			
+			// extract cloud configuration
+			String cloudConfiguration = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.cloudConfiguration")
+			execution.setVariable("cloudConfiguration", cloudConfiguration)
+			msoLogger.debug("cloudConfiguration: "+ cloudConfiguration)
+			String lcpCloudRegionId = jsonUtil.getJsonValue(cloudConfiguration, "lcpCloudRegionId")
+			execution.setVariable("lcpCloudRegionId", lcpCloudRegionId)
+			msoLogger.debug("lcpCloudRegionId: "+ lcpCloudRegionId)
+			String tenantId = jsonUtil.getJsonValue(cloudConfiguration, "tenantId")
+			execution.setVariable("tenantId", tenantId)
+			msoLogger.debug("tenantId: "+ tenantId)
+
+			String sdncVersion = "1707"
+			execution.setVariable("sdncVersion", sdncVersion)
+			msoLogger.debug("sdncVersion: "+ sdncVersion)
+			
+			//For Completion Handler & Fallout Handler
+			String requestInfo =
+			"""<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+					<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+					<action>DELETE</action>
+					<source>${MsoUtils.xmlEscape(source)}</source>
+				   </request-info>"""
+
+			execution.setVariable(Prefix+"requestInfo", requestInfo)
+			
+			//Setting for Generic Sub Flows
+			execution.setVariable("GENGS_type", "service-instance")
+			
+			msoLogger.trace("Completed preProcessRequest DeleteVcpeResCustServiceRequest Request ")
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. Unexpected from method preProcessRequest() - " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+	}
+
+	public void sendSyncResponse(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable(DebugFlag)
+
+		msoLogger.trace("Inside sendSyncResponse of DeleteVcpeResCustService ")
+
+		try {
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String requestId = execution.getVariable("mso-request-id")
+
+			// RESTResponse (for API Handler (APIH) Reply Task)
+			String syncResponse ="""{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim()
+
+			msoLogger.debug(" sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse)
+			sendWorkflowResponse(execution, 202, syncResponse)
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. Unexpected from method preProcessRequest() - " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+	}
+
+	public void prepareServiceDelete(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable(DebugFlag)
+		msoLogger.trace("Inside prepareServiceDelete() of DeleteVcpeResCustService ")
+		
+		try {
+			
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			
+			// confirm if ServiceInstance was found
+			if ( !execution.getVariable("GENGS_FoundIndicator") )
+			{
+				String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. Service Instance was not found in AAI by id: " + serviceInstanceId
+				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+			}
+			
+			// get variable within incoming json
+			String DeleteVcpeResCustServiceRequest = execution.getVariable("DeleteVcpeResCustServiceRequest");
+			
+			// get SI extracted by GenericGetService
+			String serviceInstanceAaiRecord = execution.getVariable("GENGS_service");
+			
+			msoLogger.debug("serviceInstanceAaiRecord: "+serviceInstanceAaiRecord)
+			serviceInstanceAaiRecord = utils.removeXmlNamespaces(serviceInstanceAaiRecord)
+			
+			def (TXC_found, TXC_id) = new Tuple(false, null)
+			def (BRG_found, BRG_id) = new Tuple(false, null)
+			List relatedVnfIdList = []
+			
+			for(Node rel: utils.getMultNodeObjects(serviceInstanceAaiRecord, "relationship")) {
+				def relto = utils.getChildNodeText(rel, "related-to")
+				def relink = utils.getChildNodeText(rel, "related-link")
+				msoLogger.debug("check: "+relto+" link: "+relink)
+				
+				if(isBlank(relto) || isBlank(relink)) {
+					
+				} else if(relto == "generic-vnf") {
+					def id = relink.substring(relink.indexOf("/generic-vnf/")+13)
+					if(id.endsWith("/")) {
+						id = id.substring(0, id.length()-1)
+					}
+					
+					relatedVnfIdList.add(id)
+					
+				} else if(relto == "allotted-resource") {
+					def (type, id) = getAaiAr(execution, relink)
+					
+					if(isBlank(type) || isBlank(id)) {
+						
+					} else if(type == "TunnelXConn" || type == "Tunnel XConn") {
+						msoLogger.debug("TunnelXConn AR found")
+						TXC_found = true
+						TXC_id = id
+						
+					} else if(type == "BRG") {
+						msoLogger.debug("BRG AR found")
+						BRG_found = true
+						BRG_id = id
+					}
+				}
+			}
+			
+			execution.setVariable(Prefix+"TunnelXConn", TXC_found)
+			execution.setVariable("TXC_allottedResourceId", TXC_id)
+			msoLogger.debug("TXC_allottedResourceId: " + TXC_id)
+						
+			execution.setVariable(Prefix+"BRG", BRG_found)
+			execution.setVariable("BRG_allottedResourceId", BRG_id)
+			msoLogger.debug("BRG_allottedResourceId: " + BRG_id)
+			
+			int vnfsCount = relatedVnfIdList.size()
+			execution.setVariable(Prefix+"vnfsCount", vnfsCount)
+			msoLogger.debug(" "+Prefix+"vnfsCount : " + vnfsCount)
+			if(vnfsCount > 0) {
+				execution.setVariable(Prefix+"relatedVnfIdList", relatedVnfIdList)
+			}
+			
+			msoLogger.trace("Completed prepareServiceDelete() of DeleteVcpeResCustService ")
+		} catch (BpmnError e){
+			throw e;
+		} catch (Exception ex) {
+			sendSyncError(execution)
+		    String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. prepareServiceDelete() - " + ex.getMessage()
+		    msoLogger.debug(exceptionMessage)
+		    exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+	}
+	
+	private getAaiAr(DelegateExecution execution, String relink) {
+		def isDebugEnabled = execution.getVariable(DebugFlag)
+		AaiUtil aaiUtil = new AaiUtil(this)
+		String aaiEndpoint = UrnPropertiesReader.getVariable("aai.endpoint",execution) + relink
+		
+		msoLogger.debug("get AR info " + aaiEndpoint)
+		APIResponse response = aaiUtil.executeAAIGetCall(execution, aaiEndpoint)
+		
+		int responseCode = response.getStatusCode()
+		msoLogger.debug("get AR info responseCode:" + responseCode)
+		
+		String aaiResponse = response.getResponseBodyAsString()
+		msoLogger.debug("get AR info " + aaiResponse)
+		
+		if(responseCode < 200 || responseCode >= 300 || isBlank(aaiResponse)) {
+			return new Tuple2(null, null)
+		}
+		
+		def type = utils.getNodeText(aaiResponse, "type")
+		def id = utils.getNodeText(aaiResponse, "id")
+		
+		return new Tuple2(type, id)
+	}
+	
+	
+	// *******************************
+	//     
+	// *******************************
+	public void prepareVnfAndModulesDelete (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable(DebugFlag)
+		msoLogger.trace("Inside prepareVnfAndModulesDelete of DeleteVcpeResCustService ")
+
+		try {
+			List vnfList = execution.getVariable(Prefix+"relatedVnfIdList")
+			int vnfsDeletedCount = execution.getVariable(Prefix+"vnfsDeletedCount")
+			String vnfModelInfoString = ""
+			String vnfId = ""
+			if (vnfList.size() > 0 ) {
+				vnfId = vnfList.get(vnfsDeletedCount.intValue())
+			}
+							
+			execution.setVariable("vnfId", vnfId)
+			msoLogger.debug("need to delete vnfId:" + vnfId)
+
+			msoLogger.trace("Completed prepareVnfAndModulesDelete of DeleteVcpeResCustService ")
+		} catch (Exception ex) {
+			// try error in method block
+			String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. Unexpected Error from method prepareVnfAndModulesDelete() - " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+	 }
+	
+	// *******************************
+	//     Validate Vnf request Section -> increment count
+	// *******************************
+	public void validateVnfDelete (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable(DebugFlag)
+		msoLogger.trace("Inside validateVnfDelete of DeleteVcpeResCustService ")
+
+		try {
+			int vnfsDeletedCount = execution.getVariable(Prefix+"vnfsDeletedCount")
+			vnfsDeletedCount++
+			
+			execution.setVariable(Prefix+"vnfsDeletedCount", vnfsDeletedCount)
+			
+			msoLogger.debug(" ***** Completed validateVnfDelete of DeleteVcpeResCustService ***** "+" vnf # "+vnfsDeletedCount)
+		} catch (Exception ex) {
+			// try error in method block
+			String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. Unexpected Error from method validateVnfDelete() - " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+	 }
+
+	
+	// *****************************************
+	//     Prepare Completion request Section
+	// *****************************************
+	public void postProcessResponse (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable(DebugFlag)
+		msoLogger.trace("Inside postProcessResponse of DeleteVcpeResCustService ")
+
+		try {
+			String source = execution.getVariable("source")
+			String requestId = execution.getVariable("msoRequestId")
+
+			String msoCompletionRequest =
+					"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.onap/so/workflow/schema/v1"
+									xmlns:ns="http://org.onap/so/request/types/v1">
+							<request-info xmlns="http://org.onap/so/infra/vnf-request/v1">
+								<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+								<action>DELETE</action>
+								<source>${MsoUtils.xmlEscape(source)}</source>
+							   </request-info>
+							<aetgt:status-message>vCPE Res Cust Service Instance has been deleted successfully.</aetgt:status-message>
+							   <aetgt:mso-bpel-name>BPMN Service Instance macro action: DELETE</aetgt:mso-bpel-name>
+						</aetgt:MsoCompletionRequest>"""
+
+			// Format Response
+			String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+
+			msoLogger.debug(xmlMsoCompletionRequest)
+			execution.setVariable(Prefix+"Success", true)
+			execution.setVariable(Prefix+"CompleteMsoProcessRequest", xmlMsoCompletionRequest)
+			msoLogger.debug(" SUCCESS flow, going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest)
+		} catch (BpmnError e) {
+		throw e;
+
+		} catch (Exception ex) {
+			// try error in method block
+			String exceptionMessage = "Bpmn error encountered in DeleteServiceInstance flow. Unexpected Error from method postProcessResponse() - " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+	}
+
+	public void prepareFalloutRequest(DelegateExecution execution){
+		def isDebugEnabled=execution.getVariable(DebugFlag)
+		msoLogger.trace("STARTED DeleteVcpeResCustService prepareFalloutRequest Process ")
+
+		try {
+			WorkflowException wfex = execution.getVariable("WorkflowException")
+			msoLogger.debug(" Incoming Workflow Exception: " + wfex.toString())
+			String requestInfo = execution.getVariable(Prefix+"requestInfo")
+			msoLogger.debug(" Incoming Request Info: " + requestInfo)
+
+			String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo)
+
+			execution.setVariable(Prefix+"falloutRequest", falloutRequest)
+		} catch (Exception ex) {
+			msoLogger.debug("Error Occured in DeleteVcpeResCustService prepareFalloutRequest Process " + ex.getMessage())
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DeleteVcpeResCustService prepareFalloutRequest Process")
+		}
+		msoLogger.trace("COMPLETED DeleteVcpeResCustService prepareFalloutRequest Process ")
+	}
+
+
+	public void sendSyncError (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable(DebugFlag)
+		msoLogger.trace("Inside sendSyncError() of DeleteVcpeResCustService ")
+
+		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.onap/so/workflow/schema/v1">
+					<aetgt:ErrorMessage>${MsoUtils.xmlEscape(errorMessage)}</aetgt:ErrorMessage>
+					<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+				   </aetgt:WorkflowException>"""
+
+			msoLogger.debug(buildworkflowException)
+			sendWorkflowResponse(execution, 500, buildworkflowException)
+		} catch (Exception ex) {
+			msoLogger.debug(" Sending Sync Error Activity Failed. " + "\n" + ex.getMessage())
+		}
+	}
+
+	public void processJavaException(DelegateExecution execution){
+		def isDebugEnabled=execution.getVariable(DebugFlag)
+		execution.setVariable("prefix",Prefix)
+		try{
+			msoLogger.debug("Caught a Java Exception")
+			msoLogger.debug("Started processJavaException Method")
+			msoLogger.debug("Variables List: " + execution.getVariables())
+			execution.setVariable(Prefix+"unexpectedError", "Caught a Java Lang Exception")  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Caught a Java Lang Exception")
+		}catch(BpmnError b){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Rethrowing MSOWorkflowException", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "");
+			throw b
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during processJavaException Method: " + e)
+			execution.setVariable(Prefix+"unexpectedError", "Exception in processJavaException method")  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception in processJavaException method")
+		}
+		msoLogger.debug("Completed processJavaException Method")
+	}
+
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRG.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRG.groovy
new file mode 100644
index 0000000..8a8aa2b
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRG.groovy
@@ -0,0 +1,678 @@
+/*
+ * ============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.onap.so.bpmn.vcpe.scripts;
+
+import org.onap.so.bpmn.common.scripts.*;
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.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.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+/**
+ * This groovy class supports the <class>DoCreateAllottedResourceBRG.bpmn</class> process.
+ *
+ * @author
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - isDEbugLogEnabled
+ * @param - disableRollback
+ * @param - failExists  - O
+ * @param - serviceInstanceId
+ * @param - globalCustomerId - O
+ * @param - subscriptionServiceType - O
+ * @param - parentServiceInstanceId
+ * @param - allottedReourceId - O
+ * @param - allottedResourceModelInfo
+ * @param - allottedResourceRole
+ * @param - allottedResourceType
+ * @param - brgWanMacAddress
+ * @param - vni 
+ * @param - vgmuxBearerIP 
+ *
+ * Outputs:
+ * @param - rollbackData (localRB->null)
+ * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true)
+ * @param - WorkflowException - O
+ * @param - allottedResourceId
+ * @param - allottedResourceName 
+ *
+ */
+public class DoCreateAllottedResourceBRG extends AbstractServiceTaskProcessor{
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateAllottedResourceBRG.class);
+
+	String Prefix="DCARBRG_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	public void preProcessRequest (DelegateExecution execution) {
+
+
+		String msg = ""
+		msoLogger.trace("start preProcessRequest")
+
+		try {
+			execution.setVariable("prefix", Prefix)
+
+			//Config Inputs
+			String sdncCallbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "mso.workflow.sdncadapter.callback is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl)
+
+			String sdncReplDelay = UrnPropertiesReader.getVariable("mso.workflow.sdnc.replication.delay",execution)
+			if (isBlank(sdncReplDelay)) {
+				msg = "mso.workflow.sdnc.replication.delay is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncReplDelay", sdncReplDelay)
+			msoLogger.debug("SDNC replication delay: " + sdncReplDelay)
+
+			//Request Inputs
+			if (isBlank(execution.getVariable("serviceInstanceId"))){
+				msg = "Input serviceInstanceId is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("parentServiceInstanceId"))) {
+				msg = "Input parentServiceInstanceId is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceModelInfo"))) {
+				msg = "Input allottedResourceModelInfo is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("vni"))) {
+				msg = "Input vni is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("vgmuxBearerIP"))) {
+				msg = "Input vgmuxBearerIP is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("brgWanMacAddress"))) {
+				msg = "Input brgWanMacAddress is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceRole"))) {
+				msg = "Input allottedResourceRole is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceType"))) {
+				msg = "Input allottedResourceType is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+		}catch(BpmnError b){
+			msoLogger.debug("Rethrowing MSOWorkflowException")
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessRequest")
+	}
+
+	public void getAaiAR (DelegateExecution execution) {
+
+
+		msoLogger.trace("start getAaiAR")
+
+		String arType = execution.getVariable("allottedResourceType")
+		String arRole = execution.getVariable("allottedResourceRole")
+
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String orchStatus = arUtils.getAROrchStatus(execution)
+
+		String errorMsg = ""
+
+		if (orchStatus != null) // AR was found
+		{
+			if ("true".equals(execution.getVariable("failExists")))
+			{
+				errorMsg = "Allotted resource " + arType + " with Role " + arRole + " already exists"
+			}
+			else
+			{
+				if ("Active".equals(orchStatus))
+				{
+					execution.setVariable("foundActiveAR", true)
+				}
+				else // blanks included
+				{
+					errorMsg = "Allotted Resource " + arType + " with Role " + arRole + " already exists in an incomplete state -"  +  orchStatus
+				}
+			}
+		}
+		if (!isBlank(errorMsg)) {
+			msoLogger.debug(errorMsg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, errorMsg)
+		}
+		msoLogger.trace("end getAaiAR")
+	}
+
+	public void createAaiAR(DelegateExecution execution) {
+
+
+		msoLogger.trace("start createAaiAR")
+		String msg = ""
+
+		String allottedResourceId = execution.getVariable("allottedResourceId")
+		if (isBlank(allottedResourceId))
+		{
+			allottedResourceId = UUID.randomUUID().toString()
+			execution.setVariable("allottedResourceId", allottedResourceId)
+		}
+		String arUrl = ""
+		try {
+
+			//AAI PUT
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String aaiEndpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			String siResourceLink= execution.getVariable("PSI_resourceLink")
+
+			String siUri = ""
+			msoLogger.debug("PSI_resourceLink:" + siResourceLink)
+
+			if(!isBlank(siResourceLink)) {
+				msoLogger.debug("Incoming PSI Resource Link is: " + siResourceLink)
+				String[] split = siResourceLink.split("/aai/")
+				siUri = "/aai/" + split[1]
+			}
+			else
+			{
+				msg = "Parent Service Link in AAI is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+
+			arUrl = "${aaiEndpoint}${siUri}"  + "/allotted-resources/allotted-resource/" + UriUtils.encode(allottedResourceId,"UTF-8")
+			execution.setVariable("aaiARPath", arUrl)
+			msoLogger.debug("GET AllottedResource AAI URL is:\n" + arUrl)
+
+			String namespace = aaiUriUtil.getNamespaceFromUri(execution, arUrl)
+
+			String arType = execution.getVariable("allottedResourceType")
+			String arRole = execution.getVariable("allottedResourceRole")
+			String CSI_resourceLink = execution.getVariable("CSI_resourceLink")
+			String arModelInfo = execution.getVariable("allottedResourceModelInfo")
+			String modelInvariantId = jsonUtil.getJsonValue(arModelInfo, "modelInvariantUuid")
+			String modelVersionId = jsonUtil.getJsonValue(arModelInfo, "modelUuid")
+			String modelCustomizationId = jsonUtil.getJsonValue(arModelInfo, "modelCustomizationUuid")
+
+			if (modelInvariantId == null) {
+				modelInvariantId = ""
+			}
+			if (modelVersionId == null) {
+				modelVersionId = ""
+			}
+			if (modelCustomizationId == null) {
+				modelCustomizationId = ""
+			}
+
+			String payload =
+			"""<allotted-resource xmlns="${namespace}">
+				<id>${MsoUtils.xmlEscape(allottedResourceId)}</id>
+				<description></description>
+				<type>${MsoUtils.xmlEscape(arType)}</type>
+				<role>${MsoUtils.xmlEscape(arRole)}</role>
+				<selflink></selflink>
+				<model-invariant-id>${MsoUtils.xmlEscape(modelInvariantId)}</model-invariant-id>
+				<model-version-id>${MsoUtils.xmlEscape(modelVersionId)}</model-version-id>
+				<model-customization-id>${MsoUtils.xmlEscape(modelCustomizationId)}</model-customization-id>
+				<orchestration-status>PendingCreate</orchestration-status>
+				<operation-status></operation-status>
+				<relationship-list>
+					<relationship>
+               			<related-to>service-instance</related-to>
+               			<related-link>${MsoUtils.xmlEscape(CSI_resourceLink)}</related-link>
+					</relationship>
+				</relationship-list>
+			</allotted-resource>""".trim()
+
+			execution.setVariable("AaiARPayload", payload)
+			msoLogger.debug(" payload to create AllottedResource in AAI:" + "\n" + payload)
+
+			APIResponse response = aaiUriUtil.executeAAIPutCall(execution, arUrl, payload)
+			int responseCode = response.getStatusCode()
+			msoLogger.debug("AllottedResource AAI PUT responseCode:" + responseCode)
+
+			String aaiResponse = response.getResponseBodyAsString()
+			msoLogger.debug("AllottedResource AAI PUT responseStr:" + aaiResponse)
+
+			//200 OK 201 CREATED 202 ACCEPTED
+			if(responseCode == 200 || responseCode == 201 || responseCode == 202 )
+			{
+				msoLogger.debug("AAI PUT AllottedResource received a Good Response")
+			}
+			else{
+				msoLogger.debug("AAI Put AllottedResouce received a Bad Response Code: " + responseCode)
+				exceptionUtil.MapAAIExceptionToWorkflowExceptionGeneric(execution, aaiResponse, responseCode)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}catch(BpmnError b){
+			msoLogger.debug("Rethrowing MSOWorkflowException")
+			throw b
+		} catch (Exception ex) {
+			msg = "Exception in createAaiAR " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+
+		//start rollback set up
+		RollbackData rollbackData = new RollbackData()
+		def disableRollback = execution.getVariable("disableRollback")
+		rollbackData.put(Prefix, "disableRollback", disableRollback.toString())
+		rollbackData.put(Prefix, "rollbackAAI", "true")
+		rollbackData.put(Prefix, "allottedResourceId", allottedResourceId)
+		rollbackData.put(Prefix, "serviceInstanceId", execution.getVariable("serviceInstanceId"))
+		rollbackData.put(Prefix, "parentServiceInstanceId", execution.getVariable("parentServiceInstanceId"))
+		rollbackData.put(Prefix, "aaiARPath", arUrl)
+		execution.setVariable("rollbackData", rollbackData)
+		msoLogger.trace("end createAaiAR")
+	}
+
+	public String buildSDNCRequest(DelegateExecution execution, String action, String sdncRequestId) {
+
+
+		String msg = ""
+		msoLogger.trace("start buildSDNCRequest")
+		String sdncReq = null
+
+		try {
+
+			String allottedResourceId = execution.getVariable("allottedResourceId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String globalCustomerId = execution.getVariable("globalCustomerId")
+			String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+			String parentServiceInstanceId = execution.getVariable("parentServiceInstanceId")
+			String callbackUrl = execution.getVariable("sdncCallbackUrl")
+			String requestId = execution.getVariable("msoRequestId")
+
+			String brgWanMacAddress = execution.getVariable("brgWanMacAddress")
+			String vni = execution.getVariable("vni")
+			String vgmuxBearerIP = execution.getVariable("vgmuxBearerIP")
+
+			String arModelInfo = execution.getVariable("allottedResourceModelInfo")
+			String modelInvariantId = jsonUtil.getJsonValue(arModelInfo, "modelInvariantUuid")
+			String modelVersion = jsonUtil.getJsonValue(arModelInfo, "modelVersion")
+			String modelUUId = jsonUtil.getJsonValue(arModelInfo, "modelUuid")
+			String modelCustomizationId = jsonUtil.getJsonValue(arModelInfo, "modelCustomizationUuid")
+			String modelName = jsonUtil.getJsonValue(arModelInfo, "modelName")
+
+			if (modelInvariantId == null) {
+				modelInvariantId = ""
+			}
+			if (modelVersion == null) {
+				modelVersion = ""
+			}
+			if (modelUUId == null) {
+				modelUUId = ""
+			}
+			if (modelName == null) {
+				modelName = ""
+			}
+			if (modelCustomizationId == null) {
+				modelCustomizationId = ""
+			}
+
+			sdncReq =
+			"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+				   <sdncadapter:RequestHeader>
+							<sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId>
+							<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId>
+							<sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction>
+							<sdncadapter:SvcOperation>brg-topology-operation</sdncadapter:SvcOperation>
+							<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl>
+					</sdncadapter:RequestHeader>
+				<sdncadapterworkflow:SDNCRequestData>
+					<request-information>
+						<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+						<request-action>CreateBRGInstance</request-action>
+						<source>MSO</source>
+						<notification-url/>
+						<order-number/>
+						<order-version/>
+					</request-information>
+					<service-information>
+						<service-id></service-id>
+						<subscription-service-type>${MsoUtils.xmlEscape(subscriptionServiceType)}</subscription-service-type>
+						<onap-model-information></onap-model-information>
+						<service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+						<subscriber-name/>
+						<global-customer-id>${MsoUtils.xmlEscape(globalCustomerId)}</global-customer-id>
+					</service-information>
+					<allotted-resource-information>
+						<allotted-resource-id>${MsoUtils.xmlEscape(allottedResourceId)}</allotted-resource-id>    
+						<allotted-resource-type>brg</allotted-resource-type>
+						<parent-service-instance-id>${MsoUtils.xmlEscape(parentServiceInstanceId)}</parent-service-instance-id>   
+						<onap-model-information>
+							<model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantId)}</model-invariant-uuid>
+							<model-uuid>${MsoUtils.xmlEscape(modelUUId)}</model-uuid>
+							<model-customization-uuid>${MsoUtils.xmlEscape(modelCustomizationId)}</model-customization-uuid>
+							<model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version>
+							<model-name>${MsoUtils.xmlEscape(modelName)}</model-name>
+						</onap-model-information>
+					</allotted-resource-information>
+					<brg-request-input>
+							<brg-wan-mac-address>${MsoUtils.xmlEscape(brgWanMacAddress)}</brg-wan-mac-address>
+							<vni>${MsoUtils.xmlEscape(vni)}</vni>
+							<vgmux-bearer-ip>${MsoUtils.xmlEscape(vgmuxBearerIP)}</vgmux-bearer-ip>
+					</brg-request-input>
+				</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			msoLogger.debug("sdncRequest:\n" + sdncReq)
+			sdncReq = utils.formatXml(sdncReq)
+
+		} catch(Exception ex) {
+			msg = "Exception in buildSDNCRequest. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end buildSDNCRequest")
+		return sdncReq
+	}
+
+	public void preProcessSDNCAssign(DelegateExecution execution) {
+
+
+		String msg = ""
+		msoLogger.trace("start preProcessSDNCAssign")
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncAssignReq = buildSDNCRequest(execution, "assign", sdncRequestId)
+			execution.setVariable("sdncAssignRequest", sdncAssignReq)
+			msoLogger.debug("sdncAssignRequest:  " + sdncAssignReq)
+			def sdncRequestId2 = UUID.randomUUID().toString()
+			String sdncAssignRollbackReq = sdncAssignReq.replace(">assign<", ">unassign<").replace(">CreateBRGInstance<", ">DeleteBRGInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<")
+			def rollbackData = execution.getVariable("rollbackData")
+			rollbackData.put(Prefix, "sdncAssignRollbackReq", sdncAssignRollbackReq)
+			execution.setVariable("rollbackData", rollbackData)
+
+			msoLogger.debug("sdncAssignRollbackReq:\n" + sdncAssignRollbackReq)
+			msoLogger.debug("rollbackData:\n" + rollbackData.toString())
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCAssign. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessSDNCAssign")
+	}
+
+	public void preProcessSDNCCreate(DelegateExecution execution) {
+
+
+		String msg = ""
+		msoLogger.trace("start preProcessSDNCCreate")
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncCreateReq = buildSDNCRequest(execution, "create", sdncRequestId)
+			execution.setVariable("sdncCreateRequest", sdncCreateReq)
+			msoLogger.debug("sdncCreateReq:  " + sdncCreateReq)
+			def sdncRequestId2 = UUID.randomUUID().toString()
+			String sdncCreateRollbackReq = sdncCreateReq.replace(">create<", ">delete<").replace(">CreateBRGInstance<", ">DeleteBRGInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<")
+			def rollbackData = execution.getVariable("rollbackData")
+			rollbackData.put(Prefix, "sdncCreateRollbackReq", sdncCreateRollbackReq)
+			execution.setVariable("rollbackData", rollbackData)
+
+			msoLogger.debug("sdncCreateRollbackReq:\n" + sdncCreateRollbackReq)
+			msoLogger.debug("rollbackData:\n" + rollbackData.toString())
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCCreate. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessSDNCCreate")
+	}
+
+	public void preProcessSDNCActivate(DelegateExecution execution) {
+
+
+		String msg = ""
+		msoLogger.trace("start preProcessSDNCActivate")
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncActivateReq = buildSDNCRequest(execution, "activate", sdncRequestId)
+			execution.setVariable("sdncActivateRequest", sdncActivateReq)
+			msoLogger.debug("sdncActivateReq:  " + sdncActivateReq)
+			def sdncRequestId2 = UUID.randomUUID().toString()
+			String sdncActivateRollbackReq = sdncActivateReq.replace(">activate<", ">deactivate<").replace(">CreateBRGInstance<", ">DeleteBRGInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<")
+			def rollbackData = execution.getVariable("rollbackData")
+			rollbackData.put(Prefix, "sdncActivateRollbackReq", sdncActivateRollbackReq)
+			execution.setVariable("rollbackData", rollbackData)
+
+			msoLogger.debug("sdncActivateRollbackReq:\n" + sdncActivateRollbackReq)
+			msoLogger.debug("rollbackData:\n" + rollbackData.toString())
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCActivate. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessSDNCActivate")
+	}
+
+	public void validateSDNCResp(DelegateExecution execution, String response, String method){
+
+
+		msoLogger.trace("ValidateSDNCResponse Process")
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			msoLogger.debug("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			msoLogger.debug("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response)
+
+				if (!"get".equals(method))
+				{
+					def rollbackData = execution.getVariable("rollbackData")
+					rollbackData.put(Prefix, "rollback" +  "SDNC" + method, "true")
+					execution.setVariable("rollbackData", rollbackData)
+				}
+
+			}else{
+				msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.")
+				throw new BpmnError("MSOWorkflowException")
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in validateSDNCResp. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("End ValidateSDNCResp Process")
+	}
+
+	public void preProcessSDNCGet(DelegateExecution execution){
+
+		msoLogger.trace("start preProcessSDNCGet")
+		try{
+
+			def callbackUrl = execution.getVariable("sdncCallbackUrl")
+			// serviceOperation (URI for topology GET) will be retrieved from "selflink" from AAI if active AR exists in AAI
+			// or from  "object-path" in SDNC response for assign when AR does not exist in AA
+
+			String serviceOperation = ""
+
+			if (execution.getVariable("foundActiveAR")) {
+				def aaiQueryResponse = execution.getVariable("aaiARGetResponse")
+				serviceOperation = utils.getNodeText(aaiQueryResponse, "selflink")
+				msoLogger.debug("AR service operation/aaiARSelfLink: " + serviceOperation)
+			}
+			else
+			{
+				String response = execution.getVariable("sdncAssignResponse")
+				String data = utils.getNodeXml(response, "response-data")
+				msoLogger.debug("Assign responseData: " + data)
+				serviceOperation = utils.getNodeText(data, "object-path")
+				msoLogger.debug("AR service operation:" + serviceOperation)
+			}
+
+			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.onap/so/request/types/v1"
+											xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+											xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+					<sdncadapter:RequestHeader>
+					<sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId>
+					<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId>
+					<sdncadapter:SvcAction>query</sdncadapter:SvcAction>
+					<sdncadapter:SvcOperation>${MsoUtils.xmlEscape(serviceOperation)}</sdncadapter:SvcOperation>
+					<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl>
+					<sdncadapter:MsoAction>vfmodule</sdncadapter:MsoAction>
+				</sdncadapter:RequestHeader>
+					<sdncadapterworkflow:SDNCRequestData></sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			execution.setVariable("sdncGetRequest", SDNCGetRequest)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCGetRequest.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("end preProcessSDNCGet")
+	}
+	
+	public void updateAaiAROrchStatus(DelegateExecution execution, String status){
+
+		msoLogger.trace("start updateAaiAROrchStatus")
+		String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) or create
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		msoLogger.trace("end updateAaiAROrchStatus")
+	}
+	
+	public void generateOutputs(DelegateExecution execution)
+	{
+
+		msoLogger.trace("start generateOutputs")
+		try {
+			String sdncGetResponse = execution.getVariable("enhancedCallbackRequestData") //unescaped
+			msoLogger.debug("resp:" + sdncGetResponse)
+			String arData = utils.getNodeXml(sdncGetResponse, "brg-topology")
+			arData = utils.removeXmlNamespaces(arData)
+		
+			String brga = utils.getNodeXml(arData, "brg-assignments")
+			String ari = utils.getNodeXml(arData, "allotted-resource-identifiers")
+			execution.setVariable("allotedResourceName", utils.getNodeText(ari, "allotted-resource-name"))
+		} catch (BpmnError e) {
+			msoLogger.debug("BPMN Error in generateOutputs ")
+		} catch(Exception ex) {
+			String msg = "Exception in generateOutputs " + ex.getMessage()
+			msoLogger.debug(msg)
+		}
+		msoLogger.trace("end generateOutputs")
+		
+	}
+
+	public void preProcessRollback (DelegateExecution execution) {
+
+		msoLogger.trace("start preProcessRollback")
+		try {
+
+			Object workflowException = execution.getVariable("WorkflowException");
+
+			if (workflowException instanceof WorkflowException) {
+				msoLogger.debug("Prev workflowException: " + workflowException.getErrorMessage())
+				execution.setVariable("prevWorkflowException", workflowException);
+				//execution.setVariable("WorkflowException", null);
+			}
+		} catch (BpmnError e) {
+			msoLogger.debug("BPMN Error during preProcessRollback")
+		} catch(Exception ex) {
+			String msg = "Exception in preProcessRollback. " + ex.getMessage()
+			msoLogger.debug(msg)
+		}
+		msoLogger.trace("end preProcessRollback")
+	}
+
+	public void postProcessRollback (DelegateExecution execution) {
+
+		msoLogger.trace("start postProcessRollback")
+		String msg = ""
+		try {
+			Object workflowException = execution.getVariable("prevWorkflowException");
+			if (workflowException instanceof WorkflowException) {
+				msoLogger.debug("Setting prevException to WorkflowException: ")
+				execution.setVariable("WorkflowException", workflowException);
+			}
+			execution.setVariable("rollbackData", null)
+		} catch (BpmnError b) {
+			msoLogger.debug("BPMN Error during postProcessRollback")
+			throw b;
+		} catch(Exception ex) {
+			msg = "Exception in postProcessRollback. " + ex.getMessage()
+			msoLogger.debug(msg)
+		}
+		msoLogger.trace("end postProcessRollback")
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy
new file mode 100644
index 0000000..4d4f11c
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy
@@ -0,0 +1,279 @@
+/*
+ * ============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.onap.so.bpmn.vcpe.scripts;
+
+import org.onap.so.bpmn.common.scripts.*;
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.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.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+/**
+ * This groovy class supports the <class>CreateAllottedResourceBRGRollback.bpmn</class> process.
+ *
+ * @author
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - isDebugLogEnabled
+ * @param - disableRollback - O 
+ * @param - rollbackData
+ *
+ * Outputs:
+ * @param - rollbackError 
+ * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true)
+ *
+ */
+public class DoCreateAllottedResourceBRGRollback extends AbstractServiceTaskProcessor{
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateAllottedResourceBRGRollback.class);
+
+	String Prefix="DCARBRGRB_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	public void preProcessRequest (DelegateExecution execution) {
+		
+
+		String msg = ""
+		msoLogger.trace("start preProcessRequest")
+		execution.setVariable("prefix", Prefix)
+		String rbType = "DCARBRG_"
+		try {
+			
+			def rollbackData = execution.getVariable("rollbackData")
+			msoLogger.debug("RollbackData:" + rollbackData)
+
+			if (rollbackData != null) {
+				if (rollbackData.hasType(rbType)) {
+					
+					execution.setVariable("serviceInstanceId", rollbackData.get(rbType, "serviceInstanceId"))
+					execution.setVariable("parentServiceInstanceId", rollbackData.get(rbType, "parentServiceInstanceId"))
+					execution.setVariable("allottedResourceId", rollbackData.get("SERVICEINSTANCE", "allottedResourceId"))
+					
+					
+					def rollbackAAI = rollbackData.get(rbType, "rollbackAAI")
+					if ("true".equals(rollbackAAI))
+					{
+						execution.setVariable("rollbackAAI",true)
+						execution.setVariable("aaiARPath", rollbackData.get(rbType, "aaiARPath"))
+						
+					}
+					def rollbackSDNC = rollbackData.get(rbType, "rollbackSDNCassign")
+					if ("true".equals(rollbackSDNC))
+					{
+						execution.setVariable("rollbackSDNC", true)
+						execution.setVariable("deactivateSdnc", rollbackData.get(rbType, "rollbackSDNCactivate"))
+						execution.setVariable("deleteSdnc",  rollbackData.get(rbType, "rollbackSDNCcreate"))
+						execution.setVariable("unassignSdnc", rollbackData.get(rbType, "rollbackSDNCassign"))
+						
+						msoLogger.debug("sdncDeactivate:\n" + execution.getVariable("deactivateSdnc") )
+						msoLogger.debug("sdncDelete:\n" + execution.getVariable("deleteSdnc"))
+						msoLogger.debug("sdncUnassign:\n" + execution.getVariable("unassignSdnc"))
+						
+						execution.setVariable("sdncDeactivateRequest", rollbackData.get(rbType, "sdncActivateRollbackReq"))
+						execution.setVariable("sdncDeleteRequest",  rollbackData.get(rbType, "sdncCreateRollbackReq"))
+						execution.setVariable("sdncUnassignRequest", rollbackData.get(rbType, "sdncAssignRollbackReq"))
+					}
+
+					if (execution.getVariable("rollbackAAI") != true && execution.getVariable("rollbackSDNC") != true)
+					{
+						execution.setVariable("skipRollback", true)
+					}
+				}
+				else {
+					execution.setVariable("skipRollback", true)
+				}
+			}
+			else {
+				execution.setVariable("skipRollback", true)
+			}
+			if (execution.getVariable("disableRollback").equals("true" ))
+			{
+				execution.setVariable("skipRollback", true)
+			}
+			
+		}catch(BpmnError b){
+			msoLogger.debug("Rethrowing MSOWorkflowException")
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessRequest")
+	}
+
+	// aaiARPath set during query (existing AR)
+	public void updateAaiAROrchStatus(DelegateExecution execution, String status){
+
+		String msg = null;
+		msoLogger.trace("start updateAaiAROrchStatus")
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String aaiARPath  = execution.getVariable("aaiARPath")
+		msoLogger.debug(" aaiARPath:" + aaiARPath)
+		String ar = null; //need this for getting resourceVersion for delete
+		if (!isBlank(aaiARPath))
+		{
+			ar = arUtils.getARbyLink(execution, aaiARPath, "")
+		}
+		if (isBlank(ar))
+		{
+			msg = "AR not found in AAI at:" + aaiARPath
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+		}
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		msoLogger.trace("end updateAaiAROrchStatus")
+	}
+
+	public void validateSDNCResp(DelegateExecution execution, String response, String method){
+
+
+		msoLogger.trace("start ValidateSDNCResponse Process")
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			msoLogger.debug("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			msoLogger.debug("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response)
+
+			}else{
+
+				msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.")
+				throw new BpmnError("MSOWorkflowException")
+			}
+		} catch (BpmnError e) {
+			if ("404".contentEquals(e.getErrorCode()))
+			{
+				msg = "SDNC rollback " + method + " returned a 404. Proceding with rollback"
+				msoLogger.debug(msg)
+			}
+			else {
+				throw e;
+			}
+		} catch(Exception ex) {
+			msg = "Exception in validateSDNCResp. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end ValidateSDNCResp Process")
+	}
+
+	public void deleteAaiAR(DelegateExecution execution){
+
+		try{
+			msoLogger.trace("start deleteAaiAR")
+			AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+			String ar = null //need to get resource-version 
+			String arLink = execution.getVariable("aaiARPath")
+			if (!isBlank(arLink))
+			{
+				ar = arUtils.getARbyLink(execution, arLink, "")
+			}
+			arUtils.deleteAR(execution, arLink + '?resource-version=' + UriUtils.encode(execution.getVariable("aaiARResourceVersion"),"UTF-8"))
+		} catch (BpmnError e) {
+			throw e;
+		}catch(Exception ex){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCGetRequest.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + ex.getMessage())
+		}
+		msoLogger.trace("end deleteAaiAR")
+	}
+	
+	public void postProcessRequest(DelegateExecution execution) {
+
+		msoLogger.trace("start postProcessRequest")
+		String msg = ""
+		try {
+			execution.setVariable("rollbackData", null)
+			boolean skipRollback = execution.getVariable("skipRollback")
+			if (skipRollback != true)
+			{
+				execution.setVariable("rolledBack", true)
+				msoLogger.debug("rolledBack")
+			}
+			msoLogger.trace("end postProcessRequest")
+
+		} catch (BpmnError e) {
+			msg = "Bpmn Exception in  postProcessRequest. "
+			msoLogger.debug(msg)
+		} catch (Exception ex) {
+			msg = "Exception in postProcessRequest. " + ex.getMessage()
+			msoLogger.debug(msg)
+		}
+
+	}
+	
+	public void processRollbackException(DelegateExecution execution){
+
+		msoLogger.trace("start processRollbackException")
+		try{
+			msoLogger.debug("Caught an Exception in DoCreateAllottedResourceRollback")
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rolledBack", false)
+			execution.setVariable("rollbackError", "Caught exception in AllottedResource Create Rollback")
+			execution.setVariable("WorkflowException", null)
+
+		}catch(BpmnError b){
+			msoLogger.debug("BPMN Error during processRollbackExceptions Method: ")
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during processRollbackExceptions Method: " + e.getMessage())
+		}
+
+		msoLogger.trace("end processRollbackException")
+	}
+
+	public void processRollbackJavaException(DelegateExecution execution){
+
+		msoLogger.trace("start processRollbackJavaException")
+		try{
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rolledBack", false)
+			execution.setVariable("rollbackError", "Caught Java exception in AllottedResource Create Rollback")
+			msoLogger.debug("Caught Exception in processRollbackJavaException")
+
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception in processRollbackJavaException " + e.getMessage())
+		}
+		msoLogger.trace("end processRollbackJavaException")
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy
new file mode 100644
index 0000000..5f9b4b8
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy
@@ -0,0 +1,674 @@
+/*
+ * ============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.onap.so.bpmn.vcpe.scripts;
+
+import org.onap.so.bpmn.common.scripts.*;
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.core.RollbackData
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.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.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+/**
+ * This groovy class supports the <class>DoCreateAllottedResourceTXC.bpmn</class> process.
+ *
+ * @author
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - isDEbugLogEnabled
+ * @param - disableRollback
+ * @param - failExists  - O
+ * @param - serviceInstanceId
+ * @param - globalCustomerId - O
+ * @param - subscriptionServiceType - O
+ * @param - parentServiceInstanceId
+ * @param - allottedReourceId - O
+ * @param - allottedResourceModelInfo
+ * @param - allottedResourceRole
+ * @param - allottedResourceType
+ * @param - brgWanMacAddress
+ *
+ * Outputs:
+ * @param - rollbackData (localRB->null)
+ * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true)
+ * @param - WorkflowException - O
+ * @param - allottedResourceId
+ * @param - allottedResourceName 
+ * @param - vni 
+ * @param - vgmuxBearerIP 
+ * @param - vgmuxLanIP 
+ *
+ */
+public class DoCreateAllottedResourceTXC extends AbstractServiceTaskProcessor{
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateAllottedResourceTXC.class);
+
+	String Prefix="DCARTXC_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	public void preProcessRequest (DelegateExecution execution) {
+
+
+		String msg = ""
+		msoLogger.trace("start preProcessRequest")
+
+		try {
+			String msoRequestId	 = execution.getVariable("msoRequestId")
+			msoLogger.debug(" msoRequestId  = " + msoRequestId)
+			
+			execution.setVariable("prefix", Prefix)
+
+			//Config Inputs
+			String sdncCallbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "mso.workflow.sdncadapter.callback is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl)
+
+			String sdncReplDelay = UrnPropertiesReader.getVariable("mso.workflow.sdnc.replication.delay",execution)
+			if (isBlank(sdncReplDelay)) {
+				msg = "mso.workflow.sdnc.replication.delay is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncReplDelay", sdncReplDelay)
+			msoLogger.debug("SDNC replication delay: " + sdncReplDelay)
+
+			//Request Inputs
+			if (isBlank(execution.getVariable("serviceInstanceId"))){
+				msg = "Input serviceInstanceId is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("parentServiceInstanceId"))) {
+				msg = "Input parentServiceInstanceId is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceModelInfo"))) {
+				msg = "Input allottedResourceModelInfo is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("brgWanMacAddress"))) {
+				msg = "Input brgWanMacAddress is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceRole"))) {
+				msg = "Input allottedResourceRole is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceType"))) {
+				msg = "Input allottedResourceType is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+		}catch(BpmnError b){
+			msoLogger.debug("Rethrowing MSOWorkflowException")
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessRequest")
+	}
+
+	public void getAaiAR (DelegateExecution execution) {
+
+
+		msoLogger.trace("start getAaiAR")
+
+		String arType = execution.getVariable("allottedResourceType")
+		String arRole = execution.getVariable("allottedResourceRole")
+
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String orchStatus = arUtils.getAROrchStatus(execution)
+
+		String errorMsg = ""
+
+		if (orchStatus != null) // AR was found
+		{
+			if ("true".equals(execution.getVariable("failExists")))
+			{
+				errorMsg = "Allotted resource " + arType + " with Role " + arRole + " already exists"
+			}
+			else
+			{
+				if ("Active".equals(orchStatus))
+				{
+					execution.setVariable("foundActiveAR", true)
+				}
+				else // blanks included
+				{
+					errorMsg = "Allotted Resource " + arType + " with Role " + arRole + " already exists in an incomplete state -"  +  orchStatus
+				}
+			}
+		}
+		if (!isBlank(errorMsg)) {
+			msoLogger.debug(errorMsg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, errorMsg)
+		}
+		msoLogger.trace("end getAaiAR")
+	}
+
+	public void createAaiAR(DelegateExecution execution) {
+
+
+		msoLogger.trace("start createAaiAR")
+		String msg = ""
+
+		String allottedResourceId = execution.getVariable("allottedResourceId")
+		if (isBlank(allottedResourceId))
+		{
+			allottedResourceId = UUID.randomUUID().toString()
+			execution.setVariable("allottedResourceId", allottedResourceId)
+		}
+		String arUrl = ""
+		try {
+
+			//AAI PUT
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String aaiEndpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
+			String siResourceLink= execution.getVariable("PSI_resourceLink")
+
+			String siUri = ""
+			msoLogger.debug("PSI_resourceLink:" + siResourceLink)
+
+			if(!isBlank(siResourceLink)) {
+				msoLogger.debug("Incoming PSI Resource Link is: " + siResourceLink)
+				String[] split = siResourceLink.split("/aai/")
+				siUri = "/aai/" + split[1]
+			}
+			else
+			{
+				msg = "Parent Service Link in AAI is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+
+			arUrl = "${aaiEndpoint}${siUri}"  + "/allotted-resources/allotted-resource/" + UriUtils.encode(allottedResourceId,"UTF-8")
+			execution.setVariable("aaiARPath", arUrl)
+			msoLogger.debug("GET AllottedResource AAI URL is:\n" + arUrl)
+
+			String namespace = aaiUriUtil.getNamespaceFromUri(execution, arUrl)
+
+			String arType = execution.getVariable("allottedResourceType")
+			String arRole = execution.getVariable("allottedResourceRole")
+			String CSI_resourceLink = execution.getVariable("CSI_resourceLink")
+			String arModelInfo = execution.getVariable("allottedResourceModelInfo")
+			msoLogger.debug("arModelInfo is:\n" + arModelInfo)
+			String modelInvariantId = jsonUtil.getJsonValue(arModelInfo, "modelInvariantUuid")
+			String modelVersionId = jsonUtil.getJsonValue(arModelInfo, "modelUuid")
+			String modelCustomizationId = jsonUtil.getJsonValue(arModelInfo, "modelCustomizationUuid")
+
+			if (modelInvariantId == null) {
+				modelInvariantId = ""
+			}
+			if (modelVersionId == null) {
+				modelVersionId = ""
+			}
+			if (modelCustomizationId == null) {
+				modelCustomizationId = ""
+			}
+
+			String payload =
+			"""<allotted-resource xmlns="${namespace}">
+				<id>${MsoUtils.xmlEscape(allottedResourceId)}</id>
+				<description></description>
+				<type>${MsoUtils.xmlEscape(arType)}</type>
+				<role>${MsoUtils.xmlEscape(arRole)}</role>
+				<selflink></selflink>
+				<model-invariant-id>${MsoUtils.xmlEscape(modelInvariantId)}</model-invariant-id>
+				<model-version-id>${MsoUtils.xmlEscape(modelVersionId)}</model-version-id>
+				<model-customization-id>${MsoUtils.xmlEscape(modelCustomizationId)}</model-customization-id>
+				<orchestration-status>PendingCreate</orchestration-status>
+				<operation-status></operation-status>
+				<relationship-list>
+					<relationship>
+               			<related-to>service-instance</related-to>
+               			<related-link>${MsoUtils.xmlEscape(CSI_resourceLink)}</related-link>
+					</relationship>
+				</relationship-list>
+			</allotted-resource>""".trim()
+
+			execution.setVariable("AaiARPayload", payload)
+			msoLogger.debug(" payload to create AllottedResource in AAI:" + "\n" + payload)
+
+			APIResponse response = aaiUriUtil.executeAAIPutCall(execution, arUrl, payload)
+			int responseCode = response.getStatusCode()
+			msoLogger.debug("AllottedResource AAI PUT responseCode:" + responseCode)
+
+			String aaiResponse = response.getResponseBodyAsString()
+			msoLogger.debug("AllottedResource AAI PUT responseStr:" + aaiResponse)
+
+			//200 OK 201 CREATED 202 ACCEPTED
+			if(responseCode == 200 || responseCode == 201 || responseCode == 202 )
+			{
+				msoLogger.debug("AAI PUT AllottedResource received a Good Response")
+			}
+			else{
+				msoLogger.debug("AAI Put AllottedResouce received a Bad Response Code: " + responseCode)
+				exceptionUtil.MapAAIExceptionToWorkflowExceptionGeneric(execution, aaiResponse, responseCode)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}catch(BpmnError b){
+			msoLogger.debug("Rethrowing MSOWorkflowException")
+			throw b
+		} catch (Exception ex) {
+			msg = "Exception in createAaiAR " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+
+		//start rollback set up
+		RollbackData rollbackData = new RollbackData()
+		def disableRollback = execution.getVariable("disableRollback")
+		rollbackData.put(Prefix, "disableRollback", disableRollback.toString())
+		rollbackData.put(Prefix, "rollbackAAI", "true")
+		rollbackData.put(Prefix, "allottedResourceId", allottedResourceId)
+		rollbackData.put(Prefix, "serviceInstanceId", execution.getVariable("serviceInstanceId"))
+		rollbackData.put(Prefix, "parentServiceInstanceId", execution.getVariable("parentServiceInstanceId"))
+		rollbackData.put(Prefix, "aaiARPath", arUrl)
+		execution.setVariable("rollbackData", rollbackData)
+		msoLogger.trace("end createAaiAR")
+	}
+
+	public String buildSDNCRequest(DelegateExecution execution, String action, String sdncRequestId) {
+
+
+		String msg = ""
+		msoLogger.trace("start buildSDNCRequest")
+		String sdncReq = null
+
+		try {
+
+			String allottedResourceId = execution.getVariable("allottedResourceId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String globalCustomerId = execution.getVariable("globalCustomerId")
+			String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+			String parentServiceInstanceId = execution.getVariable("parentServiceInstanceId")
+			String serviceChainServiceInstanceId = execution.getVariable("serviceChainServiceInstanceId")
+			String callbackUrl = execution.getVariable("sdncCallbackUrl")
+			String requestId = execution.getVariable("msoRequestId")
+
+			String brgWanMacAddress = execution.getVariable("brgWanMacAddress")
+
+			String arModelInfo = execution.getVariable("allottedResourceModelInfo")
+			String modelInvariantId = jsonUtil.getJsonValue(arModelInfo, "modelInvariantUuid")
+			String modelVersion = jsonUtil.getJsonValue(arModelInfo, "modelVersion")
+			String modelUUId = jsonUtil.getJsonValue(arModelInfo, "modelUuid")
+			String modelCustomizationId = jsonUtil.getJsonValue(arModelInfo, "modelCustomizationUuid")
+			String modelName = jsonUtil.getJsonValue(arModelInfo, "modelName")
+
+			if (modelInvariantId == null) {
+				modelInvariantId = ""
+			}
+			if (modelVersion == null) {
+				modelVersion = ""
+			}
+			if (modelUUId == null) {
+				modelUUId = ""
+			}
+			if (modelName == null) {
+				modelName = ""
+			}
+			if (modelCustomizationId == null) {
+				modelCustomizationId = ""
+			}
+
+			sdncReq =
+			"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+				   <sdncadapter:RequestHeader>
+							<sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId>
+							<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId>
+							<sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction>
+							<sdncadapter:SvcOperation>tunnelxconn-topology-operation</sdncadapter:SvcOperation>
+							<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl>
+					</sdncadapter:RequestHeader>
+				<sdncadapterworkflow:SDNCRequestData>
+					<request-information>
+						<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+						<request-action>CreateTunnelXConnInstance</request-action>
+						<source>MSO</source>
+						<notification-url/>
+						<order-number/>
+						<order-version/>
+					</request-information>
+					<service-information>
+						<service-id></service-id>
+						<subscription-service-type>${MsoUtils.xmlEscape(subscriptionServiceType)}</subscription-service-type>
+						<onap-model-information></onap-model-information>
+						<service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+						<subscriber-name/>
+						<global-customer-id>${MsoUtils.xmlEscape(globalCustomerId)}</global-customer-id>
+					</service-information>
+					<allotted-resource-information>
+						<allotted-resource-id>${MsoUtils.xmlEscape(allottedResourceId)}</allotted-resource-id>    
+						<allotted-resource-type>tunnelxconn</allotted-resource-type>
+						<parent-service-instance-id>${MsoUtils.xmlEscape(parentServiceInstanceId)}</parent-service-instance-id>   
+						<onap-model-information>
+							<model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantId)}</model-invariant-uuid>
+							<model-uuid>${MsoUtils.xmlEscape(modelUUId)}</model-uuid>
+							<model-customization-uuid>${MsoUtils.xmlEscape(modelCustomizationId)}</model-customization-uuid>
+							<model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version>
+							<model-name>${MsoUtils.xmlEscape(modelName)}</model-name>
+						</onap-model-information>
+					</allotted-resource-information>
+					<tunnelxconn-request-input>
+							<brg-wan-mac-address>${MsoUtils.xmlEscape(brgWanMacAddress)}</brg-wan-mac-address>
+					</tunnelxconn-request-input>
+				</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			msoLogger.debug("sdncRequest:\n" + sdncReq)
+			sdncReq = utils.formatXml(sdncReq)
+
+		} catch(Exception ex) {
+			msg = "Exception in buildSDNCRequest. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end buildSDNCRequest")
+		return sdncReq
+	}
+
+	public void preProcessSDNCAssign(DelegateExecution execution) {
+
+
+		String msg = ""
+		msoLogger.trace("start preProcessSDNCAssign")
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncAssignReq = buildSDNCRequest(execution, "assign", sdncRequestId)
+			execution.setVariable("sdncAssignRequest", sdncAssignReq)
+			msoLogger.debug("sdncAssignRequest:  " + sdncAssignReq)
+			def sdncRequestId2 = UUID.randomUUID().toString()
+			String sdncAssignRollbackReq = sdncAssignReq.replace(">assign<", ">unassign<").replace(">CreateTunnelXConnInstance<", ">DeleteTunnelXConnInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<")
+			def rollbackData = execution.getVariable("rollbackData")
+			rollbackData.put(Prefix, "sdncAssignRollbackReq", sdncAssignRollbackReq)
+			execution.setVariable("rollbackData", rollbackData)
+
+			msoLogger.debug("sdncAssignRollbackReq:\n" + sdncAssignRollbackReq)
+			msoLogger.debug("rollbackData:\n" + rollbackData.toString())
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCAssign. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.debug("end preProcessSDNCAssign")
+	}
+
+	public void preProcessSDNCCreate(DelegateExecution execution) {
+
+
+		String msg = ""
+		msoLogger.trace("start preProcessSDNCCreate")
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncCreateReq = buildSDNCRequest(execution, "create", sdncRequestId)
+			execution.setVariable("sdncCreateRequest", sdncCreateReq)
+			msoLogger.debug("sdncCreateReq:  " + sdncCreateReq)
+			def sdncRequestId2 = UUID.randomUUID().toString()
+			String sdncCreateRollbackReq = sdncCreateReq.replace(">create<", ">delete<").replace(">CreateTunnelXConnInstance<", ">DeleteTunnelXConnInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<")
+			def rollbackData = execution.getVariable("rollbackData")
+			rollbackData.put(Prefix, "sdncCreateRollbackReq", sdncCreateRollbackReq)
+			execution.setVariable("rollbackData", rollbackData)
+
+			msoLogger.debug("sdncCreateRollbackReq:\n" + sdncCreateRollbackReq)
+			msoLogger.debug("rollbackData:\n" + rollbackData.toString())
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCCreate. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessSDNCCreate")
+	}
+
+	public void preProcessSDNCActivate(DelegateExecution execution) {
+
+
+		String msg = ""
+		msoLogger.trace("start preProcessSDNCActivate")
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncActivateReq = buildSDNCRequest(execution, "activate", sdncRequestId)
+			execution.setVariable("sdncActivateRequest", sdncActivateReq)
+			msoLogger.debug("sdncActivateReq:  " + sdncActivateReq)
+			def sdncRequestId2 = UUID.randomUUID().toString()
+			String sdncActivateRollbackReq = sdncActivateReq.replace(">activate<", ">deactivate<").replace(">CreateTunnelXConnInstance<", ">DeleteTunnelXConnInstance<").replace(">${sdncRequestId}<", ">${sdncRequestId2}<")
+			def rollbackData = execution.getVariable("rollbackData")
+			rollbackData.put(Prefix, "sdncActivateRollbackReq", sdncActivateRollbackReq)
+			execution.setVariable("rollbackData", rollbackData)
+
+			msoLogger.debug("sdncActivateRollbackReq:\n" + sdncActivateRollbackReq)
+			msoLogger.debug("rollbackData:\n" + rollbackData.toString())
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCActivate. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessSDNCActivate")
+	}
+
+	public void validateSDNCResp(DelegateExecution execution, String response, String method){
+
+
+		msoLogger.trace("start ValidateSDNCResponse Process")
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			msoLogger.debug("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			msoLogger.debug("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response)
+
+				if (!"get".equals(method))
+				{
+					def rollbackData = execution.getVariable("rollbackData")
+					rollbackData.put(Prefix, "rollback" +  "SDNC" + method, "true")
+					execution.setVariable("rollbackData", rollbackData)
+				}
+
+			}else{
+				msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.")
+				throw new BpmnError("MSOWorkflowException")
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in validateSDNCResp. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end ValidateSDNCResp Process")
+	}
+
+	public void preProcessSDNCGet(DelegateExecution execution){
+
+		msoLogger.trace("start preProcessSDNCGet")
+		try{
+
+			def callbackUrl = execution.getVariable("sdncCallbackUrl")
+			// serviceOperation (URI for topology GET) will be retrieved from "selflink" from AAI if active AR exists in AAI
+			// or from  "object-path" in SDNC response for assign when AR does not exist in AA
+
+			String serviceOperation = ""
+
+			if (execution.getVariable("foundActiveAR")) {
+				def aaiQueryResponse = execution.getVariable("aaiARGetResponse")
+				serviceOperation = utils.getNodeText(aaiQueryResponse, "selflink")
+				msoLogger.debug("AR service operation/aaiARSelfLink: " + serviceOperation)
+			}
+			else
+			{
+				String response = execution.getVariable("sdncAssignResponse")
+				String data = utils.getNodeXml(response, "response-data")
+				msoLogger.debug("Assign responseData: " + data)
+				serviceOperation = utils.getNodeText(data, "object-path")
+				msoLogger.debug("AR service operation:" + serviceOperation)
+			}
+
+			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.onap/so/request/types/v1"
+											xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+											xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+					<sdncadapter:RequestHeader>
+					<sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId>
+					<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId>
+					<sdncadapter:SvcAction>query</sdncadapter:SvcAction>
+					<sdncadapter:SvcOperation>${MsoUtils.xmlEscape(serviceOperation)}</sdncadapter:SvcOperation>
+					<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl>
+					<sdncadapter:MsoAction>vfmodule</sdncadapter:MsoAction>
+				</sdncadapter:RequestHeader>
+					<sdncadapterworkflow:SDNCRequestData></sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			execution.setVariable("sdncGetRequest", SDNCGetRequest)
+
+		}catch(Exception e){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCGetRequest.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + e.getMessage())
+		}
+		msoLogger.trace("end preProcessSDNCGet")
+	}
+	
+	public void updateAaiAROrchStatus(DelegateExecution execution, String status){
+
+		msoLogger.trace("start updateAaiAROrchStatus")
+		String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) or create
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		msoLogger.trace("end updateAaiAROrchStatus")
+	}
+	
+	public void generateOutputs(DelegateExecution execution)
+	{
+
+		msoLogger.trace("start generateOutputs")
+		try {
+			String sdncGetResponse = execution.getVariable("enhancedCallbackRequestData") //unescaped
+			msoLogger.debug("resp:" + sdncGetResponse)
+			String arData = utils.getNodeXml(sdncGetResponse, "tunnelxconn-topology")
+			arData = utils.removeXmlNamespaces(arData)
+		
+			String txca = utils.getNodeXml(arData, "tunnelxconn-assignments")
+			execution.setVariable("vni", utils.getNodeText(txca, "vni"))
+			execution.setVariable("vgmuxBearerIP", utils.getNodeText(txca, "vgmux-bearer-ip"))
+			execution.setVariable("vgmuxLanIP", utils.getNodeText(txca, "vgmux-lan-ip"))
+			
+			String ari = utils.getNodeXml(arData, "allotted-resource-identifiers")
+			execution.setVariable("allotedResourceName", utils.getNodeText(ari, "allotted-resource-name"))
+		} catch (BpmnError e) {
+			msoLogger.debug("BPMN Error in generateOutputs ")
+		} catch(Exception ex) {
+			String msg = "Exception in generateOutputs " + ex.getMessage()
+			msoLogger.debug(msg)
+		}
+		msoLogger.trace("end generateOutputs")
+		
+	}
+
+	public void preProcessRollback (DelegateExecution execution) {
+
+		msoLogger.trace("start preProcessRollback")
+		try {
+
+			Object workflowException = execution.getVariable("WorkflowException");
+
+			if (workflowException instanceof WorkflowException) {
+				msoLogger.debug("Prev workflowException: " + workflowException.getErrorMessage())
+				execution.setVariable("prevWorkflowException", workflowException);
+				//execution.setVariable("WorkflowException", null);
+			}
+		} catch (BpmnError e) {
+			msoLogger.debug("BPMN Error during preProcessRollback")
+		} catch(Exception ex) {
+			String msg = "Exception in preProcessRollback. " + ex.getMessage()
+			msoLogger.debug(msg)
+		}
+		msoLogger.trace("end preProcessRollback")
+	}
+
+	public void postProcessRollback (DelegateExecution execution) {
+
+		msoLogger.trace("start postProcessRollback")
+		String msg = ""
+		try {
+			Object workflowException = execution.getVariable("prevWorkflowException");
+			if (workflowException instanceof WorkflowException) {
+				msoLogger.debug("Setting prevException to WorkflowException: ")
+				execution.setVariable("WorkflowException", workflowException);
+			}
+			execution.setVariable("rollbackData", null)
+		} catch (BpmnError b) {
+			msoLogger.debug("BPMN Error during postProcessRollback")
+			throw b;
+		} catch(Exception ex) {
+			msg = "Exception in postProcessRollback. " + ex.getMessage()
+			msoLogger.debug(msg)
+		}
+		msoLogger.trace("end postProcessRollback")
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy
new file mode 100644
index 0000000..24b9195
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy
@@ -0,0 +1,278 @@
+/*
+ * ============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.onap.so.bpmn.vcpe.scripts;
+
+import org.onap.so.bpmn.common.scripts.*;
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.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.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+/**
+ * This groovy class supports the <class>CreateAllottedResourceTXCRollback.bpmn</class> process.
+ *
+ * @author
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - isDebugLogEnabled
+ * @param - disableRollback - O 
+ * @param - rollbackData
+ *
+ * Outputs:
+ * @param - rollbackError 
+ * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true)
+ *
+ */
+public class DoCreateAllottedResourceTXCRollback extends AbstractServiceTaskProcessor{
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateAllottedResourceTXCRollback.class);
+
+	String Prefix="DCARTXCRB_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	public void preProcessRequest (DelegateExecution execution) {
+		
+
+		String msg = ""
+		msoLogger.trace("start preProcessRequest")
+		execution.setVariable("prefix", Prefix)
+		String rbType = "DCARTXC_"
+		try {
+			
+			def rollbackData = execution.getVariable("rollbackData")
+			msoLogger.debug("RollbackData:" + rollbackData)
+
+			if (rollbackData != null) {
+				if (rollbackData.hasType(rbType)) {
+					
+					execution.setVariable("serviceInstanceId", rollbackData.get(rbType, "serviceInstanceId"))
+					execution.setVariable("parentServiceInstanceId", rollbackData.get(rbType, "parentServiceInstanceId"))
+					execution.setVariable("allottedResourceId", rollbackData.get("SERVICEINSTANCE", "allottedResourceId"))
+					
+					
+					def rollbackAAI = rollbackData.get(rbType, "rollbackAAI")
+					if ("true".equals(rollbackAAI))
+					{
+						execution.setVariable("rollbackAAI",true)
+						execution.setVariable("aaiARPath", rollbackData.get(rbType, "aaiARPath"))
+						
+					}
+					def rollbackSDNC = rollbackData.get(rbType, "rollbackSDNCassign")
+					if ("true".equals(rollbackSDNC))
+					{
+						execution.setVariable("rollbackSDNC", true)
+						execution.setVariable("deactivateSdnc", rollbackData.get(rbType, "rollbackSDNCactivate"))
+						execution.setVariable("deleteSdnc",  rollbackData.get(rbType, "rollbackSDNCcreate"))
+						execution.setVariable("unassignSdnc", rollbackData.get(rbType, "rollbackSDNCassign"))
+						
+						msoLogger.debug("sdncDeactivate:\n" + execution.getVariable("deactivateSdnc") )
+						msoLogger.debug("sdncDelete:\n" + execution.getVariable("deleteSdnc"))
+						msoLogger.debug("sdncUnassign:\n" + execution.getVariable("unassignSdnc"))
+						
+						execution.setVariable("sdncDeactivateRequest", rollbackData.get(rbType, "sdncActivateRollbackReq"))
+						execution.setVariable("sdncDeleteRequest",  rollbackData.get(rbType, "sdncCreateRollbackReq"))
+						execution.setVariable("sdncUnassignRequest", rollbackData.get(rbType, "sdncAssignRollbackReq"))
+					}
+
+					if (execution.getVariable("rollbackAAI") != true && execution.getVariable("rollbackSDNC") != true)
+					{
+						execution.setVariable("skipRollback", true)
+					}
+				}
+				else {
+					execution.setVariable("skipRollback", true)
+				}
+			}
+			else {
+				execution.setVariable("skipRollback", true)
+			}
+			if (execution.getVariable("disableRollback").equals("true" ))
+			{
+				execution.setVariable("skipRollback", true)
+			}
+			
+		}catch(BpmnError b){
+			msoLogger.debug("Rethrowing MSOWorkflowException")
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessRequest")
+	}
+
+	// aaiARPath set during query (existing AR)
+	public void updateAaiAROrchStatus(DelegateExecution execution, String status){
+
+		String msg = null;
+		msoLogger.trace("start updateAaiAROrchStatus")
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String aaiARPath  = execution.getVariable("aaiARPath")
+		msoLogger.debug(" aaiARPath:" + aaiARPath)
+		String ar = null; //need this for getting resourceVersion for delete
+		if (!isBlank(aaiARPath))
+		{
+			ar = arUtils.getARbyLink(execution, aaiARPath, "")
+		}
+		if (isBlank(ar))
+		{
+			msg = "AR not found in AAI at:" + aaiARPath
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+		}
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		msoLogger.trace("end updateAaiAROrchStatus")
+	}
+
+	public void validateSDNCResp(DelegateExecution execution, String response, String method){
+
+
+		msoLogger.trace("start ValidateSDNCResponse Process")
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			msoLogger.debug("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			msoLogger.debug("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response)
+
+			}else{
+
+				msoLogger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.")
+				throw new BpmnError("MSOWorkflowException")
+			}
+		} catch (BpmnError e) {
+			if ("404".contentEquals(e.getErrorCode()))
+			{
+				msg = "SDNC rollback " + method + " returned a 404. Proceding with rollback"
+				msoLogger.debug(msg)
+			}
+			else {
+				throw e;
+			}
+		} catch(Exception ex) {
+			msg = "Exception in validateSDNCResp. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("Exit ValidateSDNCResp Process")
+	}
+
+	public void deleteAaiAR(DelegateExecution execution){
+
+		try{
+			msoLogger.trace("start deleteAaiAR")
+			AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+			String ar = null //need to get resource-version 
+			String arLink = execution.getVariable("aaiARPath")
+			if (!isBlank(arLink))
+			{
+				ar = arUtils.getARbyLink(execution, arLink, "")
+			}
+			arUtils.deleteAR(execution, arLink + '?resource-version=' + UriUtils.encode(execution.getVariable("aaiARResourceVersion"),"UTF-8"))
+		} catch (BpmnError e) {
+			throw e;
+		}catch(Exception ex){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCGetRequest.", "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + ex.getMessage())
+		}
+		msoLogger.trace("end deleteAaiAR")
+	}
+	
+	public void postProcessRequest(DelegateExecution execution) {
+
+		msoLogger.trace("start postProcessRequest")
+		String msg = ""
+		try {
+			execution.setVariable("rollbackData", null)
+			boolean skipRollback = execution.getVariable("skipRollback")
+			if (skipRollback != true)
+			{
+				execution.setVariable("rolledBack", true)
+				msoLogger.debug("rolledBack")
+			}
+			msoLogger.trace("end postProcessRequest")
+
+		} catch (BpmnError e) {
+			msoLogger.debug(msg)
+		} catch (Exception ex) {
+			msg = "Exception in postProcessRequest. " + ex.getMessage()
+			msoLogger.debug(msg)
+		}
+
+	}
+	
+	public void processRollbackException(DelegateExecution execution){
+
+		msoLogger.trace("start processRollbackException")
+		try{
+			msoLogger.debug("Caught an Exception in DoCreateAllottedResourceRollback")
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rolledBack", false)
+			execution.setVariable("rollbackError", "Caught exception in AllottedResource Create Rollback")
+			execution.setVariable("WorkflowException", null)
+
+		}catch(BpmnError b){
+			msoLogger.debug("BPMN Error during processRollbackExceptions Method: ")
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception during processRollbackExceptions Method: " + e.getMessage())
+		}
+
+		msoLogger.trace("end processRollbackException")
+	}
+
+	public void processRollbackJavaException(DelegateExecution execution){
+
+		msoLogger.trace("start processRollbackJavaException")
+		try{
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rolledBack", false)
+			execution.setVariable("rollbackError", "Caught Java exception in AllottedResource Create Rollback")
+			msoLogger.debug("Caught Exception in processRollbackJavaException")
+
+		}catch(Exception e){
+			msoLogger.debug("Caught Exception in processRollbackJavaException " + e.getMessage())
+		}
+		msoLogger.trace("end processRollbackJavaException")
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy
new file mode 100644
index 0000000..a5125fe
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy
@@ -0,0 +1,368 @@
+/*
+ * ============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.onap.so.bpmn.vcpe.scripts;
+
+import org.onap.so.bpmn.common.scripts.*;
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.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.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+import org.onap.so.bpmn.core.UrnPropertiesReader;
+
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+/**
+ * This groovy class supports the <class>DoDeleteAllottedResourceBRG.bpmn</class> process.
+ *
+ * @author
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - isDebugLogEnabled
+ * @param - disableRollback - O ignored
+ * @param - failNotfound  - O 
+ * @param - serviceInstanceId
+ * @param - globalCustomerId - O
+ * @param - subscriptionServiceType - O
+ * @param - parentServiceInstanceId
+ * @param - allottedResourceId 
+ *
+ * Outputs:
+ * @param - rollbackData - N/A
+ * @param - rolledBack - true if no deletions performed
+ * @param - WorkflowException - O
+ * @param - wasDeleted - O (ie not silentSuccess)
+ *
+ */
+public class DoDeleteAllottedResourceBRG extends AbstractServiceTaskProcessor{
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteAllottedResourceBRG.class);
+
+	String Prefix="DDARBRG_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	public void preProcessRequest (DelegateExecution execution) {
+
+		String msg = ""
+		msoLogger.trace("start preProcessRequest")
+
+		try {
+			execution.setVariable("prefix", Prefix)
+
+			//Config Inputs
+			String sdncCallbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "mso.workflow.sdncadapter.callback is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl)
+
+			//Request Inputs
+			if (isBlank(execution.getVariable("serviceInstanceId"))){
+				msg = "Input serviceInstanceId is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceId"))){
+				msg = "Input allottedResourceId is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+
+		}catch(BpmnError b){
+			msoLogger.debug("Rethrowing MSOWorkflowException")
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessRequest")
+	}
+
+	public void getAaiAR (DelegateExecution execution) {
+
+		msoLogger.trace("start getAaiAR end")
+
+		String allottedResourceId = execution.getVariable("allottedResourceId")
+
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String ar = arUtils.getARbyId(execution, allottedResourceId)
+
+		String errorMsg = ""
+		if (isBlank(ar)) // AR was !found
+		{
+			errorMsg = "Allotted resource not found in AAI with AllottedResourceId:" + allottedResourceId
+		}
+		else
+		{
+			String aaiARPath = execution.getVariable("aaiARPath")
+			String parentServiceInstanceId = arUtils.getPSIFmARLink(execution, aaiARPath)
+			execution.setVariable("parentServiceInstanceId", parentServiceInstanceId)
+		}
+		if (!isBlank(errorMsg)) {
+			msoLogger.debug(errorMsg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, errorMsg)
+		}
+		msoLogger.trace("end getAaiAR")
+
+	}
+
+	// aaiARPath set during query (existing AR)
+	public void updateAaiAROrchStatus(DelegateExecution execution, String status){
+		msoLogger.trace("start updateAaiAROrchStatus")
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) 
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		msoLogger.trace("end updateAaiAROrchStatus")
+	}
+
+	public String buildSDNCRequest(DelegateExecution execution, String action, String sdncRequestId) {
+
+		String msg = ""
+		msoLogger.trace("start buildSDNCRequest")
+		String sdncReq = null
+
+		try {
+
+			String allottedResourceId = execution.getVariable("allottedResourceId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String parentServiceInstanceId = execution.getVariable("parentServiceInstanceId")
+			String globalCustomerId = execution.getVariable("globalCustomerId")
+			String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+
+			String callbackUrl = execution.getVariable("sdncCallbackUrl")
+			String requestId = execution.getVariable("msoRequestId")
+
+			String serviceChainServiceInstanceId = ""
+			String sourceNetworkId = ""
+			String sourceNetworkRole = ""
+			String allottedResourceRole = ""
+
+			String arModelInfo = ""
+			String modelInvariantId = ""
+			String modelVersion = ""
+			String modelUUId = ""
+			String modelCustomizationId = ""
+			String modelName = ""
+
+
+			sdncReq =
+					"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+				   <sdncadapter:RequestHeader>
+							<sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId>
+							<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId>
+							<sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction>
+							<sdncadapter:SvcOperation>brg-topology-operation</sdncadapter:SvcOperation>
+							<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl>
+					</sdncadapter:RequestHeader>
+				<sdncadapterworkflow:SDNCRequestData>
+					<request-information>
+						<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+						<request-action>DeleteBRGInstance</request-action>
+						<source>MSO</source>
+						<notification-url/>
+						<order-number/>
+						<order-version/>
+					</request-information>
+					<service-information>
+						<service-id></service-id>
+						<subscription-service-type>${MsoUtils.xmlEscape(subscriptionServiceType)}</subscription-service-type>
+						<onap-model-information></onap-model-information>
+						<service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+						<subscriber-name/>
+						<global-customer-id>${MsoUtils.xmlEscape(globalCustomerId)}</global-customer-id>
+					</service-information>
+					<allotted-resource-information>
+						<allotted-resource-id>${MsoUtils.xmlEscape(allottedResourceId)}</allotted-resource-id>    
+						<allotted-resource-type>brg</allotted-resource-type>
+						<parent-service-instance-id>${MsoUtils.xmlEscape(parentServiceInstanceId)}</parent-service-instance-id>   
+						<onap-model-information>
+							<model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantId)}</model-invariant-uuid>
+							<model-uuid>${MsoUtils.xmlEscape(modelUUId)}</model-uuid>
+							<model-customization-uuid>${MsoUtils.xmlEscape(modelCustomizationId)}</model-customization-uuid>
+							<model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version>
+							<model-name>${MsoUtils.xmlEscape(modelName)}</model-name>
+						</onap-model-information>
+					</allotted-resource-information>
+					<brg-request-input>
+					</brg-request-input>
+				</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			msoLogger.debug("sdncRequest:\n" + sdncReq)
+			sdncReq = utils.formatXml(sdncReq)
+
+		} catch(Exception ex) {
+			msg = "Exception in buildSDNCRequest. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end buildSDNCRequest")
+		return sdncReq
+	}
+
+	public void preProcessSDNCUnassign(DelegateExecution execution) {
+
+		String msg = ""
+		msoLogger.trace("start preProcessSDNCUnassign")
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncUnassignReq = buildSDNCRequest(execution, "unassign", sdncRequestId)
+			execution.setVariable("sdncUnassignRequest", sdncUnassignReq)
+			msoLogger.debug("sdncUnassignRequest:  " + sdncUnassignReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCUnassign. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessSDNCUnassign")
+	}
+
+	public void preProcessSDNCDelete(DelegateExecution execution) {
+
+		String msg = ""
+		msoLogger.trace("start preProcessSDNCDelete")
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncDeleteReq = buildSDNCRequest(execution, "delete", sdncRequestId)
+			execution.setVariable("sdncDeleteRequest", sdncDeleteReq)
+			msoLogger.debug("sdncDeleteReq:  " + sdncDeleteReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCDelete. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessSDNCDelete")
+	}
+
+	public void preProcessSDNCDeactivate(DelegateExecution execution) {
+
+		String msg = ""
+		msoLogger.trace("start preProcessSDNCDeactivate")
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncDeactivateReq = buildSDNCRequest(execution, "deactivate", sdncRequestId)
+			execution.setVariable("sdncDeactivateRequest", sdncDeactivateReq)
+			msoLogger.debug("sdncDeactivateReq:  " + sdncDeactivateReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCDeactivate. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessSDNCDeactivate")
+	}
+
+	public void validateSDNCResp(DelegateExecution execution, String response, String method){
+
+		msoLogger.trace("start ValidateSDNCResponse Process")
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			msoLogger.debug("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			msoLogger.debug("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response)
+
+			}else{
+				String sdncRespCode = execution.getVariable(Prefix + 'sdncRequestDataResponseCode')
+				msoLogger.debug(method + " AllottedResource received error response from SDNC. ResponseCode:" +  sdncRespCode)
+				if (sdncRespCode.equals("404") && "deactivate".equals(method))
+				{
+					execution.setVariable("ARNotFoundInSDNC", true)
+					if ("true".equals(execution.getVariable("failNotFound")))
+					{
+						msg = "Allotted Resource Not found in SDNC"
+						msoLogger.debug(msg)
+						exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+					}
+					else
+					{
+						execution.setVariable("wasDeleted", false)
+					}
+				}
+				else
+				{
+					throw new BpmnError("MSOWorkflowException")
+				}
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in validateSDNCResp. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end ValidateSDNCResp Process")
+	}
+
+	public void deleteAaiAR(DelegateExecution execution){
+		msoLogger.trace("start deleteAaiAR")
+		
+		try{	
+			AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+			String ar = null //need to get resource-version again 
+			String arLink = execution.getVariable("aaiARPath")
+			if (!isBlank(arLink))
+			{
+				ar = arUtils.getARbyLink(execution, arLink, "")
+			}
+			arUtils.deleteAR(execution, arLink + '?resource-version=' + UriUtils.encode(execution.getVariable("aaiARResourceVersion"),"UTF-8"))
+		} catch (BpmnError e) {
+			throw e;
+		}catch(Exception ex){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCGetRequest." + ex, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:" + ex);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + ex.getMessage())
+		}
+		msoLogger.trace("end deleteAaiAR")
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy
new file mode 100644
index 0000000..7ce606e
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy
@@ -0,0 +1,369 @@
+/*
+ * ============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.onap.so.bpmn.vcpe.scripts;
+
+import org.onap.so.bpmn.common.scripts.*;
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.MsoUtils
+import org.onap.so.bpmn.common.scripts.AaiUtil
+import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
+import org.onap.so.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.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+import org.onap.so.bpmn.core.UrnPropertiesReader;
+
+import org.onap.so.logger.MessageEnum
+import org.onap.so.logger.MsoLogger
+
+/**
+ * This groovy class supports the <class>DoDeleteAllottedResourceTXC.bpmn</class> process.
+ *
+ * @author
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - isDebugLogEnabled
+ * @param - disableRollback - O ignored
+ * @param - failNotfound  - O 
+ * @param - serviceInstanceId
+ * @param - globalCustomerId - O
+ * @param - subscriptionServiceType - O
+ * @param - parentServiceInstanceId
+ * @param - allottedResourceId 
+ *
+ * Outputs:
+ * @param - rollbackData - N/A
+ * @param - rolledBack - true if no deletions performed
+ * @param - WorkflowException - O
+ * @param - wasDeleted - O (ie not silentSuccess)
+ *
+ */
+public class DoDeleteAllottedResourceTXC extends AbstractServiceTaskProcessor{
+	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteAllottedResourceTXC.class);
+
+	String Prefix="DDARTXC_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	public void preProcessRequest (DelegateExecution execution) {
+
+		String msg = ""
+		msoLogger.trace("start preProcessRequest")
+
+		try {
+			execution.setVariable("prefix", Prefix)
+
+			//Config Inputs
+			String sdncCallbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "mso.workflow.sdncadapter.callback is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			msoLogger.debug("SDNC Callback URL: " + sdncCallbackUrl)
+
+			//Request Inputs
+			if (isBlank(execution.getVariable("serviceInstanceId"))){
+				msg = "Input serviceInstanceId is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceId"))){
+				msg = "Input allottedResourceId is null"
+				msoLogger.debug(msg)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+
+		}catch(BpmnError b){
+			msoLogger.debug("Rethrowing MSOWorkflowException")
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessRequest")
+	}
+
+	public void getAaiAR (DelegateExecution execution) {
+
+		msoLogger.trace("start getAaiAR")
+
+		String allottedResourceId = execution.getVariable("allottedResourceId")
+
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String ar = arUtils.getARbyId(execution, allottedResourceId)
+
+		String errorMsg = ""
+		if (isBlank(ar)) // AR was !found
+		{
+			errorMsg = "Allotted resource not found in AAI with AllottedResourceId:" + allottedResourceId
+		}
+		else
+		{
+			String aaiARPath = execution.getVariable("aaiARPath")
+			String parentServiceInstanceId = arUtils.getPSIFmARLink(execution, aaiARPath)
+			execution.setVariable("parentServiceInstanceId", parentServiceInstanceId)
+		}
+		if (!isBlank(errorMsg)) {
+			msoLogger.debug(errorMsg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, errorMsg)
+		}
+		msoLogger.trace("end getAaiAR")
+
+	}
+
+	// aaiARPath set during query (existing AR)
+	public void updateAaiAROrchStatus(DelegateExecution execution, String status){
+		msoLogger.trace("start updateAaiAROrchStatus")
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) 
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		msoLogger.trace("end updateAaiAROrchStatus")
+	}
+
+	public String buildSDNCRequest(DelegateExecution execution, String action, String sdncRequestId) {
+
+		String msg = ""
+		msoLogger.trace("start buildSDNCRequest")
+		String sdncReq = null
+
+		try {
+
+			String allottedResourceId = execution.getVariable("allottedResourceId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String parentServiceInstanceId = execution.getVariable("parentServiceInstanceId")
+			String globalCustomerId = execution.getVariable("globalCustomerId")
+			String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+
+			String callbackUrl = execution.getVariable("sdncCallbackUrl")
+			String requestId = execution.getVariable("msoRequestId")
+
+			String serviceChainServiceInstanceId = ""
+			String sourceNetworkId = ""
+			String sourceNetworkRole = ""
+			String allottedResourceRole = ""
+
+			String arModelInfo = ""
+			String modelInvariantId = ""
+			String modelVersion = ""
+			String modelUUId = ""
+			String modelCustomizationId = ""
+			String modelName = ""
+
+
+			sdncReq =
+					"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
+				   <sdncadapter:RequestHeader>
+							<sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId>
+							<sdncadapter:SvcInstanceId>${MsoUtils.xmlEscape(serviceInstanceId)}</sdncadapter:SvcInstanceId>
+							<sdncadapter:SvcAction>${MsoUtils.xmlEscape(action)}</sdncadapter:SvcAction>
+							<sdncadapter:SvcOperation>tunnelxconn-topology-operation</sdncadapter:SvcOperation>
+							<sdncadapter:CallbackUrl>${MsoUtils.xmlEscape(callbackUrl)}</sdncadapter:CallbackUrl>
+					</sdncadapter:RequestHeader>
+				<sdncadapterworkflow:SDNCRequestData>
+					<request-information>
+						<request-id>${MsoUtils.xmlEscape(requestId)}</request-id>
+						<request-action>DeleteTunnelXConnInstance</request-action>
+						<source>MSO</source>
+						<notification-url/>
+						<order-number/>
+						<order-version/>
+					</request-information>
+					<service-information>
+						<service-id></service-id>
+						<subscription-service-type>${MsoUtils.xmlEscape(subscriptionServiceType)}</subscription-service-type>
+						<onap-model-information></onap-model-information>
+						<service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
+						<subscriber-name/>
+						<global-customer-id>${MsoUtils.xmlEscape(globalCustomerId)}</global-customer-id>
+					</service-information>
+					<allotted-resource-information>
+						<allotted-resource-id>${MsoUtils.xmlEscape(allottedResourceId)}</allotted-resource-id>    
+						<allotted-resource-type>tunnelxconn</allotted-resource-type>
+						<parent-service-instance-id>${MsoUtils.xmlEscape(parentServiceInstanceId)}</parent-service-instance-id>   
+						<onap-model-information>
+							<model-invariant-uuid>${MsoUtils.xmlEscape(modelInvariantId)}</model-invariant-uuid>
+							<model-uuid>${MsoUtils.xmlEscape(modelUUId)}</model-uuid>
+							<model-customization-uuid>${MsoUtils.xmlEscape(modelCustomizationId)}</model-customization-uuid>
+							<model-version>${MsoUtils.xmlEscape(modelVersion)}</model-version>
+							<model-name>${MsoUtils.xmlEscape(modelName)}</model-name>
+						</onap-model-information>
+					</allotted-resource-information>
+					<tunnelxconn-request-input>
+					</tunnelxconn-request-input>
+				</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			msoLogger.debug("sdncRequest:\n" + sdncReq)
+			sdncReq = utils.formatXml(sdncReq)
+
+		} catch(Exception ex) {
+			msg = "Exception in buildSDNCRequest. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end buildSDNCRequest")
+		return sdncReq
+	}
+
+	public void preProcessSDNCUnassign(DelegateExecution execution) {
+
+		String msg = ""
+		msoLogger.trace("start preProcessSDNCUnassign")
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncUnassignReq = buildSDNCRequest(execution, "unassign", sdncRequestId)
+			execution.setVariable("sdncUnassignRequest", sdncUnassignReq)
+			msoLogger.debug("sdncUnassignRequest:  " + sdncUnassignReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCUnassign. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessSDNCUnassign")
+	}
+
+	public void preProcessSDNCDelete(DelegateExecution execution) {
+
+		String msg = ""
+		msoLogger.trace("start preProcessSDNCDelete")
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncDeleteReq = buildSDNCRequest(execution, "delete", sdncRequestId)
+			execution.setVariable("sdncDeleteRequest", sdncDeleteReq)
+			msoLogger.debug("sdncDeleteReq:  " + sdncDeleteReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCDelete. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessSDNCDelete")
+	}
+
+	public void preProcessSDNCDeactivate(DelegateExecution execution) {
+
+		String msg = ""
+		msoLogger.trace("start preProcessSDNCDeactivate")
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncDeactivateReq = buildSDNCRequest(execution, "deactivate", sdncRequestId)
+			execution.setVariable("sdncDeactivateRequest", sdncDeactivateReq)
+			msoLogger.debug("sdncDeactivateReq:  " + sdncDeactivateReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCDeactivate. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end preProcessSDNCDeactivate")
+	}
+
+	public void validateSDNCResp(DelegateExecution execution, String response, String method){
+
+		msoLogger.trace("start ValidateSDNCResponse Process")
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			msoLogger.debug("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			msoLogger.debug("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				msoLogger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response)
+
+			}else{
+				String sdncRespCode = execution.getVariable(Prefix + 'sdncRequestDataResponseCode')
+				msoLogger.debug(method + " AllottedResource received error response from SDNC. ResponseCode:" +  sdncRespCode)
+				if (sdncRespCode.equals("404") && "deactivate".equals(method))
+				{
+					execution.setVariable("ARNotFoundInSDNC", true)
+					if ("true".equals(execution.getVariable("failNotFound")))
+					{
+						msg = "Allotted Resource Not found in SDNC"
+						msoLogger.debug(msg)
+						exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+					}
+					else
+					{
+						execution.setVariable("wasDeleted", false)
+					}
+				}
+				else
+				{
+					throw new BpmnError("MSOWorkflowException")
+				}
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in validateSDNCResp. " + ex.getMessage()
+			msoLogger.debug(msg)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		msoLogger.trace("end Exit ValidateSDNCResp Process")
+	}
+
+	public void deleteAaiAR(DelegateExecution execution){
+		msoLogger.trace("start deleteAaiAR")
+		
+		try{
+			AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+			String ar = null //need to get resource-version again 
+			String arLink = execution.getVariable("aaiARPath")
+			if (!isBlank(arLink))
+			{
+				ar = arUtils.getARbyLink(execution, arLink, "")
+			}
+			arUtils.deleteAR(execution, arLink + '?resource-version=' + UriUtils.encode(execution.getVariable("aaiARResourceVersion"),"UTF-8"))
+		} catch (BpmnError e) {
+			throw e;
+		}catch(Exception ex){
+			msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "Exception Occurred Processing preProcessSDNCGetRequest.", "BPMN", MsoLogger.getServiceName(),
+				MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + ex);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + ex.getMessage())
+		}
+		msoLogger.trace("end deleteAaiAR")
+	}
+
+}
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/META-INF/processes.xml b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/META-INF/processes.xml
new file mode 100644
index 0000000..13a24c8
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/META-INF/processes.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  ============LICENSE_START=======================================================
+  ECOMP MSO
+  ================================================================================
+  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=========================================================
+  -->
+
+
+<process-application
+    xmlns="http://www.camunda.org/schema/1.0/ProcessApplication"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+  	<process-archive>
+  		<properties>
+      		<property name="isDeleteUponUndeploy">false</property>
+      		<property name="isScanForProcessDefinitions">true</property>
+			 <!-- history cleanup batch job starts at 6:00am UTC time (01:00am Central) -->
+			<property name="historyCleanupBatchWindowStartTime">06:00</property>
+			<property name="historyCleanupBatchWindowEndTime">09:00</property>
+    	</properties>
+  	</process-archive>
+
+</process-application>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CompareModelofE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CompareModelofE2EServiceInstance.bpmn
new file mode 100644
index 0000000..086171e
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CompareModelofE2EServiceInstance.bpmn
@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3">
+  <bpmn:process id="CompareModelofE2EServiceInstance" name="CompareModelofE2EServiceInstance" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_00qj6ro" name="Start Flow">
+      <bpmn:outgoing>SequenceFlow_0s2spoq</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:subProcess id="SubProcess_0ka59nc" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:scriptTask id="ScriptTask_0u3lw39" name="Handle Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_1dsbjjb</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1yay321</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:startEvent id="StartEvent_0v1ffn4">
+        <bpmn:outgoing>SequenceFlow_1dsbjjb</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_0eznq6x">
+        <bpmn:incoming>SequenceFlow_1yay321</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_1dsbjjb" name="" sourceRef="StartEvent_0v1ffn4" targetRef="ScriptTask_0u3lw39" />
+      <bpmn:sequenceFlow id="SequenceFlow_1yay321" name="" sourceRef="ScriptTask_0u3lw39" targetRef="EndEvent_0eznq6x" />
+    </bpmn:subProcess>
+    <bpmn:callActivity id="DoCompareModelofE2EServiceInstance" name="Call DoCompareModelofE2EServiceInstance&#10;" calledElement="DoCompareModelofE2EServiceInstance">
+      <bpmn:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:out source="rollbackData" target="rollbackData" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="productFamilyId" target="productFamilyId" />
+        <camunda:in source="modelInvariantIdTarget" target="modelInvariantIdTarget" />
+        <camunda:in source="uuiRequest" target="uuiRequest" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="compareModelsResult" target="compareModelsResult" />
+        <camunda:in source="modelVersionIdTarget" target="modelVersionIdTarget" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <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_0tm7z1o</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0klbpxx</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:endEvent id="EndEvent_0bpd6c0" name="End">
+      <bpmn:incoming>SequenceFlow_0yayvrf</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="ScriptTask_1s09c7d" name="Pre Process Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0s2spoq</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0tm7z1o</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new CompareModelofE2EServiceInstance()
+csi.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:subProcess id="SubProcess_0vaws86" name="Sub-process for FalloutHandler and Rollback" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0dug28e">
+        <bpmn:outgoing>SequenceFlow_0e1r62n</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_03wysuk">
+        <bpmn:incoming>SequenceFlow_1ysapam</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_0u8o9p2" name="Prepare Fallout Request" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0n9pexp</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_01umodj</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new CompareModelofE2EServiceInstance()
+csi.prepareFalloutRequest(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:callActivity id="CallActivity_1ang7q8" name="Call FalloutHandler" calledElement="FalloutHandler">
+        <bpmn:extensionElements>
+          <camunda:in source="falloutRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="mso-request-id" target="mso-request-id" />
+          <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+          <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" />
+          <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" />
+          <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" />
+        </bpmn:extensionElements>
+        <bpmn:incoming>SequenceFlow_01umodj</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1ysapam</bpmn:outgoing>
+      </bpmn:callActivity>
+      <bpmn:scriptTask id="ScriptTask_1rn6nqi" name="Send Error Response">
+        <bpmn:incoming>SequenceFlow_0e1r62n</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0n9pexp</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  CompareModelofE2EServiceInstance()
+csi.sendSyncError(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_0e1r62n" sourceRef="StartEvent_0dug28e" targetRef="ScriptTask_1rn6nqi" />
+      <bpmn:sequenceFlow id="SequenceFlow_1ysapam" sourceRef="CallActivity_1ang7q8" targetRef="EndEvent_03wysuk" />
+      <bpmn:sequenceFlow id="SequenceFlow_0n9pexp" sourceRef="ScriptTask_1rn6nqi" targetRef="ScriptTask_0u8o9p2" />
+      <bpmn:sequenceFlow id="SequenceFlow_01umodj" sourceRef="ScriptTask_0u8o9p2" targetRef="CallActivity_1ang7q8" />
+    </bpmn:subProcess>
+    <bpmn:scriptTask id="ScriptTask_0xupxj9" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0klbpxx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_12jdmq5</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  CompareModelofE2EServiceInstance()
+csi.sendSyncResponse(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0aqn64l" name="Success?">
+      <bpmn:incoming>SequenceFlow_12jdmq5</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1fueo69</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0y8s0kd</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:endEvent id="EndEvent_07uk5iy">
+      <bpmn:incoming>SequenceFlow_1fueo69</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_0nbdy47" />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0s2spoq" sourceRef="StartEvent_00qj6ro" targetRef="ScriptTask_1s09c7d" />
+    <bpmn:sequenceFlow id="SequenceFlow_0klbpxx" sourceRef="DoCompareModelofE2EServiceInstance" targetRef="ScriptTask_0xupxj9" />
+    <bpmn:sequenceFlow id="SequenceFlow_1fueo69" name="no" sourceRef="ExclusiveGateway_0aqn64l" targetRef="EndEvent_07uk5iy">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") != null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0tm7z1o" sourceRef="ScriptTask_1s09c7d" targetRef="DoCompareModelofE2EServiceInstance" />
+    <bpmn:callActivity id="CallActivity_02fyxz0" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn:extensionElements>
+        <camunda:in source="completionRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" />
+        <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" />
+        <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0a01ez6</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0yayvrf</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_0yayvrf" sourceRef="CallActivity_02fyxz0" targetRef="EndEvent_0bpd6c0" />
+    <bpmn:sequenceFlow id="SequenceFlow_12jdmq5" sourceRef="ScriptTask_0xupxj9" targetRef="ExclusiveGateway_0aqn64l" />
+    <bpmn:scriptTask id="ScriptTask_0hkyfdj" name="Prepare Completion Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0y8s0kd</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0a01ez6</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new CompareModelofE2EServiceInstance()
+csi.prepareCompletionRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0a01ez6" sourceRef="ScriptTask_0hkyfdj" targetRef="CallActivity_02fyxz0" />
+    <bpmn:sequenceFlow id="SequenceFlow_0y8s0kd" name="yes" sourceRef="ExclusiveGateway_0aqn64l" targetRef="ScriptTask_0hkyfdj">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") == null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+  </bpmn:process>
+  <bpmn:error id="Error_0nbdy47" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CompareModelofE2EServiceInstance">
+      <bpmndi:BPMNShape id="StartEvent_00qj6ro_di" bpmnElement="StartEvent_00qj6ro">
+        <dc:Bounds x="-6" y="180" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-12" y="221" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0ka59nc_di" bpmnElement="SubProcess_0ka59nc" isExpanded="true">
+        <dc:Bounds x="463" y="632" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0rhljy8_di" bpmnElement="DoCompareModelofE2EServiceInstance">
+        <dc:Bounds x="458" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0bpd6c0_di" bpmnElement="EndEvent_0bpd6c0">
+        <dc:Bounds x="1258" y="286" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1268" y="322" width="22" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1s09c7d_di" bpmnElement="ScriptTask_1s09c7d">
+        <dc:Bounds x="214" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0vaws86_di" bpmnElement="SubProcess_0vaws86" isExpanded="true">
+        <dc:Bounds x="348" y="370" width="679" height="194" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0xupxj9_di" bpmnElement="ScriptTask_0xupxj9">
+        <dc:Bounds x="683" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0aqn64l_di" bpmnElement="ExclusiveGateway_0aqn64l" isMarkerVisible="true">
+        <dc:Bounds x="903" y="173" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="903" y="145" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_07uk5iy_di" bpmnElement="EndEvent_07uk5iy">
+        <dc:Bounds x="910" y="286" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="883" y="322" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s2spoq_di" bpmnElement="SequenceFlow_0s2spoq">
+        <di:waypoint xsi:type="dc:Point" x="30" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="214" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="77" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0klbpxx_di" bpmnElement="SequenceFlow_0klbpxx">
+        <di:waypoint xsi:type="dc:Point" x="558" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="683" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="575.5" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fueo69_di" bpmnElement="SequenceFlow_1fueo69">
+        <di:waypoint xsi:type="dc:Point" x="928" y="223" />
+        <di:waypoint xsi:type="dc:Point" x="928" y="250" />
+        <di:waypoint xsi:type="dc:Point" x="928" y="250" />
+        <di:waypoint xsi:type="dc:Point" x="928" y="286" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="901" y="228" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0u3lw39_di" bpmnElement="ScriptTask_0u3lw39">
+        <dc:Bounds x="611" y="687" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0v1ffn4_di" bpmnElement="StartEvent_0v1ffn4">
+        <dc:Bounds x="496" y="709" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="469" y="750" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0eznq6x_di" bpmnElement="EndEvent_0eznq6x">
+        <dc:Bounds x="772" y="709" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="745" y="750" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0dug28e_di" bpmnElement="StartEvent_0dug28e">
+        <dc:Bounds x="363" y="456" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="336" y="497" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_03wysuk_di" bpmnElement="EndEvent_03wysuk">
+        <dc:Bounds x="942" y="456" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="915" y="497" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0u8o9p2_di" bpmnElement="ScriptTask_0u8o9p2">
+        <dc:Bounds x="621" y="434" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ang7q8_di" bpmnElement="CallActivity_1ang7q8">
+        <dc:Bounds x="798" y="434" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rn6nqi_di" bpmnElement="ScriptTask_1rn6nqi">
+        <dc:Bounds x="443" y="434" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dsbjjb_di" bpmnElement="SequenceFlow_1dsbjjb">
+        <di:waypoint xsi:type="dc:Point" x="532" y="727" />
+        <di:waypoint xsi:type="dc:Point" x="611" y="727" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="529.5" y="727" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yay321_di" bpmnElement="SequenceFlow_1yay321">
+        <di:waypoint xsi:type="dc:Point" x="711" y="727" />
+        <di:waypoint xsi:type="dc:Point" x="772" y="727" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="701.5" y="727" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0e1r62n_di" bpmnElement="SequenceFlow_0e1r62n">
+        <di:waypoint xsi:type="dc:Point" x="399" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="421" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="421" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="442" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="391" y="474" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ysapam_di" bpmnElement="SequenceFlow_1ysapam">
+        <di:waypoint xsi:type="dc:Point" x="898" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="942" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="875" y="459" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n9pexp_di" bpmnElement="SequenceFlow_0n9pexp">
+        <di:waypoint xsi:type="dc:Point" x="543" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="570" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="570" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="621" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="540" y="474" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_01umodj_di" bpmnElement="SequenceFlow_01umodj">
+        <di:waypoint xsi:type="dc:Point" x="721" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="798" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="715.5" y="459" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0tm7z1o_di" bpmnElement="SequenceFlow_0tm7z1o">
+        <di:waypoint xsi:type="dc:Point" x="314" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="458" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="386" y="177" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_02fyxz0_di" bpmnElement="CallActivity_02fyxz0">
+        <dc:Bounds x="1226" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yayvrf_di" bpmnElement="SequenceFlow_0yayvrf">
+        <di:waypoint xsi:type="dc:Point" x="1276" y="238" />
+        <di:waypoint xsi:type="dc:Point" x="1276" y="286" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1201" y="262" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_12jdmq5_di" bpmnElement="SequenceFlow_12jdmq5">
+        <di:waypoint xsi:type="dc:Point" x="783" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="903" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="843" y="177" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0hkyfdj_di" bpmnElement="ScriptTask_0hkyfdj">
+        <dc:Bounds x="1031" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0a01ez6_di" bpmnElement="SequenceFlow_0a01ez6">
+        <di:waypoint xsi:type="dc:Point" x="1131" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="1226" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1178.5" y="177" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0y8s0kd_di" bpmnElement="SequenceFlow_0y8s0kd">
+        <di:waypoint xsi:type="dc:Point" x="953" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="1031" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="983" y="177" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateAndActivatePnfResource.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateAndActivatePnfResource.bpmn
new file mode 100644
index 0000000..8f2bf67
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateAndActivatePnfResource.bpmn
@@ -0,0 +1,325 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3">
+  <bpmn:collaboration id="Collaboration_1d0w8lf">
+    <bpmn:participant id="Participant_1egg397" name="SO&#10;Create and Activate Pnf Resource" processRef="CreateAndActivatePnfResource" />
+    <bpmn:participant id="Participant_0atuyq0" name="AAI" />
+    <bpmn:participant id="Participant_19w87ws" name="Workflow Message Service&#10;(communication with DMAAP)&#10;" />
+    <bpmn:messageFlow id="MessageFlow_1h3xu88" sourceRef="CreateAndActivatePnf_CreateAaiEntry" targetRef="Participant_0atuyq0" />
+    <bpmn:messageFlow id="MessageFlow_09ibv5a" sourceRef="CheckAiiForCorrelationId" targetRef="Participant_0atuyq0" />
+    <bpmn:messageFlow id="MessageFlow_0vjul4t" sourceRef="Participant_0atuyq0" targetRef="CheckAiiForCorrelationId" />
+    <bpmn:messageFlow id="MessageFlow_1vrcp2d" sourceRef="Participant_19w87ws" targetRef="WaitForDmaapPnfReadyNotification" />
+    <bpmn:messageFlow id="MessageFlow_0tg4hw9" sourceRef="InformDmaapClient" targetRef="Participant_19w87ws" />
+    <bpmn:messageFlow id="MessageFlow_1py54jr" sourceRef="CancelDmaapClientSubscription" targetRef="Participant_19w87ws" />
+  </bpmn:collaboration>
+  <bpmn:process id="CreateAndActivatePnfResource" name="CreateAndActivatePnfResource" isExecutable="true">
+    <bpmn:sequenceFlow id="SequenceFlow_1kc34bc" sourceRef="WaitForDmaapTimeout" targetRef="CancelDmaapClientSubscription" />
+    <bpmn:sequenceFlow id="SequenceFlow_1o8od8e" sourceRef="InformDmaapClient" targetRef="WaitForDmaapPnfReadyNotification" />
+    <bpmn:sequenceFlow id="SequenceFlow_0v5ffpe" name="No" sourceRef="DoesAaiContainInfoAboutPnf" targetRef="CreateAndActivatePnf_CreateAaiEntry">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{!aaiContainsInfoAboutPnf}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0p09qgm" sourceRef="WaitForDmaapPnfReadyNotification" targetRef="AaiEntryUpdated" />
+    <bpmn:sequenceFlow id="SequenceFlow_17s9025" sourceRef="AaiEntryExists" targetRef="InformDmaapClient" />
+    <bpmn:sequenceFlow id="SequenceFlow_1qr6cmf" sourceRef="CreateAndActivatePnf_CreateAaiEntry" targetRef="AaiEntryExists" />
+    <bpmn:sequenceFlow id="SequenceFlow_1j4r3zt" sourceRef="CheckAiiForCorrelationId" targetRef="DoesAaiContainInfoAboutPnf" />
+    <bpmn:sequenceFlow id="SequenceFlow_0j5ksz1" sourceRef="CreateAndActivatePnf_StartEvent" targetRef="CheckInputs" />
+    <bpmn:sequenceFlow id="SequenceFlow_1miyzfe" sourceRef="CancelDmaapClientSubscription" targetRef="ThrowTimeoutException" />
+    <bpmn:sequenceFlow id="SequenceFlow_1ls8pua" name="No" sourceRef="DoesAaiContainInfoAboutIp" targetRef="AaiEntryExists">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{!aaiContainsInfoAboutIp}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1l1t6ak" name="Yes" sourceRef="DoesAaiContainInfoAboutPnf" targetRef="DoesAaiContainInfoAboutIp">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{aaiContainsInfoAboutPnf}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1h6yz62" name="Yes" sourceRef="DoesAaiContainInfoAboutIp" targetRef="AaiEntryAlreadyUpToDate">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{aaiContainsInfoAboutIp}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:endEvent id="AaiEntryUpdated" name="AAI entry updated">
+      <bpmn:incoming>SequenceFlow_0p09qgm</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="ThrowTimeoutException" name="Throw timeout exception">
+      <bpmn:incoming>SequenceFlow_1miyzfe</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_1" />
+    </bpmn:endEvent>
+    <bpmn:endEvent id="AaiEntryAlreadyUpToDate" name="AAI entry already up-to-date">
+      <bpmn:incoming>SequenceFlow_1h6yz62</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:startEvent id="CreateAndActivatePnf_StartEvent">
+      <bpmn:outgoing>SequenceFlow_0j5ksz1</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0967g8p" sourceRef="CheckInputs" targetRef="CheckAiiForCorrelationId" />
+    <bpmn:serviceTask id="CheckAiiForCorrelationId" name="Check AAI for correlation_id" camunda:delegateExpression="${checkAaiForCorrelationIdDelegate}">
+      <bpmn:incoming>SequenceFlow_0967g8p</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1j4r3zt</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:exclusiveGateway id="DoesAaiContainInfoAboutPnf" name="Does AAI contain info about pnf?">
+      <bpmn:incoming>SequenceFlow_1j4r3zt</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1l1t6ak</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0v5ffpe</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:serviceTask id="CreateAndActivatePnf_CreateAaiEntry" name="Create AAI entry with pnf-id = correlation_id" camunda:delegateExpression="${createAaiEntryWithPnfIdDelegate}">
+      <bpmn:incoming>SequenceFlow_0v5ffpe</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1qr6cmf</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:exclusiveGateway id="DoesAaiContainInfoAboutIp" name="Does AAI contain info about IPv4 or IPv6?">
+      <bpmn:incoming>SequenceFlow_1l1t6ak</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1h6yz62</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1ls8pua</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:intermediateThrowEvent id="AaiEntryExists" name="AAI entry exists, lacking IP">
+      <bpmn:incoming>SequenceFlow_1qr6cmf</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1ls8pua</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_17s9025</bpmn:outgoing>
+    </bpmn:intermediateThrowEvent>
+    <bpmn:serviceTask id="InformDmaapClient" name="Inform DmaapClient about business key and corresponding pnf-id" camunda:delegateExpression="${informDmaapClient}">
+      <bpmn:incoming>SequenceFlow_17s9025</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1o8od8e</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:receiveTask id="WaitForDmaapPnfReadyNotification" name="Wait for DMAAP pnf-ready notification" messageRef="Message_13h1tlo">
+      <bpmn:incoming>SequenceFlow_1o8od8e</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0p09qgm</bpmn:outgoing>
+    </bpmn:receiveTask>
+    <bpmn:boundaryEvent id="WaitForDmaapTimeout" name="Timeout" attachedToRef="WaitForDmaapPnfReadyNotification">
+      <bpmn:outgoing>SequenceFlow_1kc34bc</bpmn:outgoing>
+      <bpmn:timerEventDefinition>
+        <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">#{timeoutForPnfEntryNotification}</bpmn:timeDuration>
+      </bpmn:timerEventDefinition>
+    </bpmn:boundaryEvent>
+    <bpmn:serviceTask id="CancelDmaapClientSubscription" name="Cancel DmaapClient subscription" camunda:delegateExpression="${cancelDmaapSubscription}">
+      <bpmn:incoming>SequenceFlow_1kc34bc</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1miyzfe</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:serviceTask id="CheckInputs" name="Check inputs" camunda:delegateExpression="${pnfCheckInputs}">
+      <bpmn:incoming>SequenceFlow_0j5ksz1</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0967g8p</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:textAnnotation id="TextAnnotation_1eyzes8">
+      <bpmn:text><![CDATA[Inputs:
+ - timeoutForPnfEntryNotification - String
+ - correlationId - String
+]]></bpmn:text>
+    </bpmn:textAnnotation>
+    <bpmn:association id="Association_0d7oxnz" sourceRef="CreateAndActivatePnf_StartEvent" targetRef="TextAnnotation_1eyzes8" />
+  </bpmn:process>
+  <bpmn:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmn:message id="Message_13h1tlo" name="WorkflowMessage" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_1d0w8lf">
+      <bpmndi:BPMNShape id="Participant_1egg397_di" bpmnElement="Participant_1egg397">
+        <dc:Bounds x="-113" y="0" width="1601" height="438" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1cttgdo_di" bpmnElement="DoesAaiContainInfoAboutPnf" isMarkerVisible="true">
+        <dc:Bounds x="390" y="182" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="372" y="283" width="85" height="20" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0yamdfm_di" bpmnElement="DoesAaiContainInfoAboutIp" isMarkerVisible="true">
+        <dc:Bounds x="682" y="41" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="663" y="5" width="87" height="30" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0k52gr7_di" bpmnElement="AaiEntryUpdated">
+        <dc:Bounds x="1312" y="189" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1286" y="230" width="89" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0j5ok9h_di" bpmnElement="CreateAndActivatePnf_StartEvent">
+        <dc:Bounds x="-54" y="189" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-80" y="228" width="90" height="20" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0a5uk9o_di" bpmnElement="CheckAiiForCorrelationId">
+        <dc:Bounds x="219" y="167" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0iimk5v_di" bpmnElement="CreateAndActivatePnf_CreateAaiEntry">
+        <dc:Bounds x="511" y="167" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1j4r3zt_di" bpmnElement="SequenceFlow_1j4r3zt">
+        <di:waypoint xsi:type="dc:Point" x="319" y="207" />
+        <di:waypoint xsi:type="dc:Point" x="390" y="207" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="309.5" y="187" width="90" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1l1t6ak_di" bpmnElement="SequenceFlow_1l1t6ak">
+        <di:waypoint xsi:type="dc:Point" x="415" y="207" />
+        <di:waypoint xsi:type="dc:Point" x="415" y="66" />
+        <di:waypoint xsi:type="dc:Point" x="682" y="66" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="430" y="180.1206896551724" width="19" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0v5ffpe_di" bpmnElement="SequenceFlow_0v5ffpe">
+        <di:waypoint xsi:type="dc:Point" x="440" y="207" />
+        <di:waypoint xsi:type="dc:Point" x="511" y="207" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="447.32911392405055" y="210" width="15" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h6yz62_di" bpmnElement="SequenceFlow_1h6yz62">
+        <di:waypoint xsi:type="dc:Point" x="732" y="66" />
+        <di:waypoint xsi:type="dc:Point" x="1312" y="66" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="742.7435064935065" y="51" width="19" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ls8pua_di" bpmnElement="SequenceFlow_1ls8pua">
+        <di:waypoint xsi:type="dc:Point" x="707" y="91" />
+        <di:waypoint xsi:type="dc:Point" x="707" y="189" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="717" y="116.1917808219178" width="15" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qr6cmf_di" bpmnElement="SequenceFlow_1qr6cmf">
+        <di:waypoint xsi:type="dc:Point" x="611" y="207" />
+        <di:waypoint xsi:type="dc:Point" x="689" y="207" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="605" y="187" width="90" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0j5ksz1_di" bpmnElement="SequenceFlow_0j5ksz1">
+        <di:waypoint xsi:type="dc:Point" x="-18" y="207" />
+        <di:waypoint xsi:type="dc:Point" x="48" y="207" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-30" y="187" width="90" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Participant_0i9ban2_di" bpmnElement="Participant_0atuyq0">
+        <dc:Bounds x="123" y="523" width="502" height="60" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="MessageFlow_1h3xu88_di" bpmnElement="MessageFlow_1h3xu88">
+        <di:waypoint xsi:type="dc:Point" x="561" y="247" />
+        <di:waypoint xsi:type="dc:Point" x="561" y="523" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="531" y="380" width="90" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_09ibv5a_di" bpmnElement="MessageFlow_09ibv5a">
+        <di:waypoint xsi:type="dc:Point" x="250" y="247" />
+        <di:waypoint xsi:type="dc:Point" x="250" y="523" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="220" y="380" width="90" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0vjul4t_di" bpmnElement="MessageFlow_0vjul4t">
+        <di:waypoint xsi:type="dc:Point" x="289" y="523" />
+        <di:waypoint xsi:type="dc:Point" x="289" y="247" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="259" y="380" width="90" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Participant_0vmrrhf_di" bpmnElement="Participant_19w87ws">
+        <dc:Bounds x="804" y="523" width="463" height="60" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0wbx6tt_di" bpmnElement="ThrowTimeoutException">
+        <dc:Bounds x="1312" y="345" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1305" y="382" width="70" height="20" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_00cy7r0_di" bpmnElement="AaiEntryAlreadyUpToDate">
+        <dc:Bounds x="1312" y="48" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1288" y="89" width="85" height="20" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0fjcdy4_di" bpmnElement="AaiEntryExists">
+        <dc:Bounds x="689" y="189" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="670" y="235" width="80" height="20" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_1eyzes8_di" bpmnElement="TextAnnotation_1eyzes8">
+        <dc:Bounds x="-37" y="70" width="243" height="54" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Association_0d7oxnz_di" bpmnElement="Association_0d7oxnz">
+        <di:waypoint xsi:type="dc:Point" x="-36" y="189" />
+        <di:waypoint xsi:type="dc:Point" x="-36" y="124" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_1vrcp2d_di" bpmnElement="MessageFlow_1vrcp2d">
+        <di:waypoint xsi:type="dc:Point" x="1026" y="523" />
+        <di:waypoint xsi:type="dc:Point" x="1026" y="247" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="996" y="380" width="90" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17s9025_di" bpmnElement="SequenceFlow_17s9025">
+        <di:waypoint xsi:type="dc:Point" x="725" y="207" />
+        <di:waypoint xsi:type="dc:Point" x="803" y="207" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="719" y="187" width="90" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="BoundaryEvent_15eo1k9_di" bpmnElement="WaitForDmaapTimeout">
+        <dc:Bounds x="1040" y="229" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1071" y="260" width="40" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kc34bc_di" bpmnElement="SequenceFlow_1kc34bc">
+        <di:waypoint xsi:type="dc:Point" x="1058" y="265" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="363" />
+        <di:waypoint xsi:type="dc:Point" x="1145" y="363" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1028" y="309" width="90" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ReceiveTask_1sfysua_di" bpmnElement="WaitForDmaapPnfReadyNotification">
+        <dc:Bounds x="974" y="167" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0p09qgm_di" bpmnElement="SequenceFlow_0p09qgm">
+        <di:waypoint xsi:type="dc:Point" x="1074" y="207" />
+        <di:waypoint xsi:type="dc:Point" x="1312" y="207" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1148" y="187" width="90" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1o8od8e_di" bpmnElement="SequenceFlow_1o8od8e">
+        <di:waypoint xsi:type="dc:Point" x="903" y="207" />
+        <di:waypoint xsi:type="dc:Point" x="974" y="207" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="893.5" y="187" width="90" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_0tg4hw9_di" bpmnElement="MessageFlow_0tg4hw9">
+        <di:waypoint xsi:type="dc:Point" x="853" y="247" />
+        <di:waypoint xsi:type="dc:Point" x="853" y="523" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="823" y="380" width="90" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_1iax11n_di" bpmnElement="InformDmaapClient">
+        <dc:Bounds x="803" y="167" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1miyzfe_di" bpmnElement="SequenceFlow_1miyzfe">
+        <di:waypoint xsi:type="dc:Point" x="1245" y="363" />
+        <di:waypoint xsi:type="dc:Point" x="1312" y="363" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1233.5" y="343" width="90" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="MessageFlow_1py54jr_di" bpmnElement="MessageFlow_1py54jr">
+        <di:waypoint xsi:type="dc:Point" x="1195" y="403" />
+        <di:waypoint xsi:type="dc:Point" x="1195" y="523" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1165" y="458" width="90" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_12j7hox_di" bpmnElement="CancelDmaapClientSubscription">
+        <dc:Bounds x="1145" y="323" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0967g8p_di" bpmnElement="SequenceFlow_0967g8p">
+        <di:waypoint xsi:type="dc:Point" x="148" y="207" />
+        <di:waypoint xsi:type="dc:Point" x="219" y="207" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="183.5" y="187" width="0" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_0lx02qn_di" bpmnElement="CheckInputs">
+        <dc:Bounds x="48" y="167" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateCustomE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateCustomE2EServiceInstance.bpmn
new file mode 100644
index 0000000..6f73b46
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateCustomE2EServiceInstance.bpmn
@@ -0,0 +1,391 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
+  <bpmn:process id="CreateCustomE2EServiceInstance" name="CreateCustomE2EServiceInstance" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_00qj6ro" name="Create SI Start Flow">
+      <bpmn:outgoing>SequenceFlow_0s2spoq</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:subProcess id="SubProcess_0ka59nc" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:scriptTask id="ScriptTask_0u3lw39" name="Handle Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_1dsbjjb</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1yay321</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:startEvent id="StartEvent_0v1ffn4">
+        <bpmn:outgoing>SequenceFlow_1dsbjjb</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_0eznq6x">
+        <bpmn:incoming>SequenceFlow_1yay321</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_1dsbjjb" name="" sourceRef="StartEvent_0v1ffn4" targetRef="ScriptTask_0u3lw39" />
+      <bpmn:sequenceFlow id="SequenceFlow_1yay321" name="" sourceRef="ScriptTask_0u3lw39" targetRef="EndEvent_0eznq6x" />
+    </bpmn:subProcess>
+    <bpmn:callActivity id="DoCreateE2EServiceInstance" name="Call DoCreateE2EServiceInstance&#10;" calledElement="DoCreateE2EServiceInstanceV3">
+      <bpmn:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:out source="rollbackData" target="rollbackData" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="productFamilyId" target="productFamilyId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="serviceInputParams" target="serviceInputParams" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="failIfExists" target="failIfExists" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+        <camunda:in sourceExpression="1610" target="sdncVersion" />
+        <camunda:in source="initialStatus" target="initialStatus" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="uuiRequest" target="uuiRequest" />
+        <camunda:in source="requestAction" target="operationType" />
+        <camunda:in source="operationId" target="operationId" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_19eilro</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0klbpxx</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:endEvent id="EndEvent_0bpd6c0" name="End">
+      <bpmn:incoming>SequenceFlow_0yayvrf</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="ScriptTask_1s09c7d" name="Pre Process Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0s2spoq</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0z4faf9</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new CreateCustomE2EServiceInstance()
+csi.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_0ttvn8r" name="Prepare Completion Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_14zu6wr</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0je30si</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new CreateCustomE2EServiceInstance()
+csi.prepareCompletionRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="CallActivity_02fyxz0" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn:extensionElements>
+        <camunda:in source="completionRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" />
+        <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" />
+        <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0je30si</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0yayvrf</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:subProcess id="SubProcess_0vaws86" name="Sub-process for FalloutHandler and Rollback" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0dug28e">
+        <bpmn:outgoing>SequenceFlow_0e1r62n</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_03wysuk">
+        <bpmn:incoming>SequenceFlow_1ysapam</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_0u8o9p2" name="Prepare Fallout Request" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0n9pexp</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_01umodj</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new CreateCustomE2EServiceInstance()
+csi.prepareFalloutRequest(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:callActivity id="CallActivity_1ang7q8" name="Call FalloutHandler" calledElement="FalloutHandler">
+        <bpmn:extensionElements>
+          <camunda:in source="falloutRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="mso-request-id" target="mso-request-id" />
+          <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+          <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" />
+          <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" />
+          <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" />
+        </bpmn:extensionElements>
+        <bpmn:incoming>SequenceFlow_01umodj</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1ysapam</bpmn:outgoing>
+      </bpmn:callActivity>
+      <bpmn:scriptTask id="ScriptTask_1rn6nqi" name="Send Error Response">
+        <bpmn:incoming>SequenceFlow_0e1r62n</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0n9pexp</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  CreateCustomE2EServiceInstance()
+csi.sendSyncError(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_0e1r62n" sourceRef="StartEvent_0dug28e" targetRef="ScriptTask_1rn6nqi" />
+      <bpmn:sequenceFlow id="SequenceFlow_1ysapam" sourceRef="CallActivity_1ang7q8" targetRef="EndEvent_03wysuk" />
+      <bpmn:sequenceFlow id="SequenceFlow_0n9pexp" sourceRef="ScriptTask_1rn6nqi" targetRef="ScriptTask_0u8o9p2" />
+      <bpmn:sequenceFlow id="SequenceFlow_01umodj" sourceRef="ScriptTask_0u8o9p2" targetRef="CallActivity_1ang7q8" />
+    </bpmn:subProcess>
+    <bpmn:scriptTask id="ScriptTask_0xupxj9" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_081z8l2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_19eilro</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  CreateCustomE2EServiceInstance()
+csi.sendSyncResponse(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0aqn64l" name="Success?">
+      <bpmn:incoming>SequenceFlow_0klbpxx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_14zu6wr</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1fueo69</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:endEvent id="EndEvent_07uk5iy">
+      <bpmn:incoming>SequenceFlow_1fueo69</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_0nbdy47" />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0s2spoq" sourceRef="StartEvent_00qj6ro" targetRef="ScriptTask_1s09c7d" />
+    <bpmn:sequenceFlow id="SequenceFlow_19eilro" sourceRef="ScriptTask_0xupxj9" targetRef="DoCreateE2EServiceInstance" />
+    <bpmn:sequenceFlow id="SequenceFlow_0klbpxx" sourceRef="DoCreateE2EServiceInstance" targetRef="ExclusiveGateway_0aqn64l" />
+    <bpmn:sequenceFlow id="SequenceFlow_0yayvrf" sourceRef="CallActivity_02fyxz0" targetRef="EndEvent_0bpd6c0" />
+    <bpmn:sequenceFlow id="SequenceFlow_0z4faf9" sourceRef="ScriptTask_1s09c7d" targetRef="Task_1tqjch6" />
+    <bpmn:sequenceFlow id="SequenceFlow_14zu6wr" name="yes" sourceRef="ExclusiveGateway_0aqn64l" targetRef="ScriptTask_0ttvn8r">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") == null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0je30si" sourceRef="ScriptTask_0ttvn8r" targetRef="CallActivity_02fyxz0" />
+    <bpmn:sequenceFlow id="SequenceFlow_1fueo69" name="no" sourceRef="ExclusiveGateway_0aqn64l" targetRef="EndEvent_07uk5iy">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") != null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1euqjsp" sourceRef="Task_1tqjch6" targetRef="Task_19mxcw3" />
+    <bpmn:scriptTask id="Task_1tqjch6" name="Init Service Operation Status" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0z4faf9</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1euqjsp</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new CreateCustomE2EServiceInstance()
+csi.prepareInitServiceOperationStatus(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:serviceTask id="Task_19mxcw3" name="Update Service Operation Status">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1euqjsp</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_081z8l2</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_081z8l2" sourceRef="Task_19mxcw3" targetRef="ScriptTask_0xupxj9" />
+  </bpmn:process>
+  <bpmn:error id="Error_0nbdy47" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateCustomE2EServiceInstance">
+      <bpmndi:BPMNShape id="StartEvent_00qj6ro_di" bpmnElement="StartEvent_00qj6ro">
+        <dc:Bounds x="-6" y="180" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-24" y="221" width="73" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0ka59nc_di" bpmnElement="SubProcess_0ka59nc" isExpanded="true">
+        <dc:Bounds x="463" y="632" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0rhljy8_di" bpmnElement="DoCreateE2EServiceInstance">
+        <dc:Bounds x="751" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0bpd6c0_di" bpmnElement="EndEvent_0bpd6c0">
+        <dc:Bounds x="1258" y="286" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1268" y="322" width="22" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1s09c7d_di" bpmnElement="ScriptTask_1s09c7d">
+        <dc:Bounds x="115" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ttvn8r_di" bpmnElement="ScriptTask_0ttvn8r">
+        <dc:Bounds x="1038" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_02fyxz0_di" bpmnElement="CallActivity_02fyxz0">
+        <dc:Bounds x="1226" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0vaws86_di" bpmnElement="SubProcess_0vaws86" isExpanded="true">
+        <dc:Bounds x="348" y="370" width="679" height="194" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0xupxj9_di" bpmnElement="ScriptTask_0xupxj9">
+        <dc:Bounds x="610" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0aqn64l_di" bpmnElement="ExclusiveGateway_0aqn64l" isMarkerVisible="true">
+        <dc:Bounds x="903" y="173" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="903" y="145" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_07uk5iy_di" bpmnElement="EndEvent_07uk5iy">
+        <dc:Bounds x="910" y="286" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="883" y="322" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s2spoq_di" bpmnElement="SequenceFlow_0s2spoq">
+        <di:waypoint xsi:type="dc:Point" x="30" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="115" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="27.5" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19eilro_di" bpmnElement="SequenceFlow_19eilro">
+        <di:waypoint xsi:type="dc:Point" x="710" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="751" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="685.5" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0klbpxx_di" bpmnElement="SequenceFlow_0klbpxx">
+        <di:waypoint xsi:type="dc:Point" x="851" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="903" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="832" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yayvrf_di" bpmnElement="SequenceFlow_0yayvrf">
+        <di:waypoint xsi:type="dc:Point" x="1276" y="238" />
+        <di:waypoint xsi:type="dc:Point" x="1276" y="286" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1246" y="262" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0z4faf9_di" bpmnElement="SequenceFlow_0z4faf9">
+        <di:waypoint xsi:type="dc:Point" x="215" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="273" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="199" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_14zu6wr_di" bpmnElement="SequenceFlow_14zu6wr">
+        <di:waypoint xsi:type="dc:Point" x="953" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="990" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="990" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="1038" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="987" y="195" width="20" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0je30si_di" bpmnElement="SequenceFlow_0je30si">
+        <di:waypoint xsi:type="dc:Point" x="1138" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="1226" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1137" y="183" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fueo69_di" bpmnElement="SequenceFlow_1fueo69">
+        <di:waypoint xsi:type="dc:Point" x="928" y="223" />
+        <di:waypoint xsi:type="dc:Point" x="928" y="250" />
+        <di:waypoint xsi:type="dc:Point" x="928" y="250" />
+        <di:waypoint xsi:type="dc:Point" x="928" y="286" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="901" y="228" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0u3lw39_di" bpmnElement="ScriptTask_0u3lw39">
+        <dc:Bounds x="611" y="687" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0v1ffn4_di" bpmnElement="StartEvent_0v1ffn4">
+        <dc:Bounds x="496" y="709" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="469" y="750" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0eznq6x_di" bpmnElement="EndEvent_0eznq6x">
+        <dc:Bounds x="772" y="709" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="745" y="750" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0dug28e_di" bpmnElement="StartEvent_0dug28e">
+        <dc:Bounds x="363" y="456" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="336" y="497" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_03wysuk_di" bpmnElement="EndEvent_03wysuk">
+        <dc:Bounds x="942" y="456" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="915" y="497" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0u8o9p2_di" bpmnElement="ScriptTask_0u8o9p2">
+        <dc:Bounds x="621" y="434" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ang7q8_di" bpmnElement="CallActivity_1ang7q8">
+        <dc:Bounds x="798" y="434" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rn6nqi_di" bpmnElement="ScriptTask_1rn6nqi">
+        <dc:Bounds x="443" y="434" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dsbjjb_di" bpmnElement="SequenceFlow_1dsbjjb">
+        <di:waypoint xsi:type="dc:Point" x="532" y="727" />
+        <di:waypoint xsi:type="dc:Point" x="611" y="727" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="529.5" y="727" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yay321_di" bpmnElement="SequenceFlow_1yay321">
+        <di:waypoint xsi:type="dc:Point" x="711" y="727" />
+        <di:waypoint xsi:type="dc:Point" x="772" y="727" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="701.5" y="727" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0e1r62n_di" bpmnElement="SequenceFlow_0e1r62n">
+        <di:waypoint xsi:type="dc:Point" x="399" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="421" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="421" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="442" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="391" y="474" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ysapam_di" bpmnElement="SequenceFlow_1ysapam">
+        <di:waypoint xsi:type="dc:Point" x="898" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="942" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="875" y="459" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n9pexp_di" bpmnElement="SequenceFlow_0n9pexp">
+        <di:waypoint xsi:type="dc:Point" x="543" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="570" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="570" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="621" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="540" y="474" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_01umodj_di" bpmnElement="SequenceFlow_01umodj">
+        <di:waypoint xsi:type="dc:Point" x="721" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="798" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="715.5" y="459" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1euqjsp_di" bpmnElement="SequenceFlow_1euqjsp">
+        <di:waypoint xsi:type="dc:Point" x="373" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="446" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="364.5" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1a3vwas_di" bpmnElement="Task_1tqjch6">
+        <dc:Bounds x="273" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_1afiuuq_di" bpmnElement="Task_19mxcw3">
+        <dc:Bounds x="446" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_081z8l2_di" bpmnElement="SequenceFlow_081z8l2">
+        <di:waypoint xsi:type="dc:Point" x="546" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="610" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="533" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateGenericALaCarteServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateGenericALaCarteServiceInstance.bpmn
new file mode 100644
index 0000000..3d08fdb
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateGenericALaCarteServiceInstance.bpmn
@@ -0,0 +1,452 @@
+<?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.8.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="CreateGenericALaCarteServiceInstance" name="CreateGenericALaCarteServiceInstance" isExecutable="true">
+    <bpmn2:startEvent id="createSI_startEvent" name="Create SI 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="Handle Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.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="doCreateServiceInstance_CallActivity" name="Call DoCreateServiceInstance&#10;" calledElement="DoCreateServiceInstance">
+      <bpmn2:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:out source="rollbackData" target="rollbackData" />
+        <camunda:in source="productFamilyId" target="productFamilyId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="serviceInputParams" target="serviceInputParams" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="failIfExists" target="failIfExists" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+        <camunda:in sourceExpression="1610" target="sdncVersion" />
+        <camunda:in source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:in source="bpmnRequest" target="requestJson" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1hjh5zy</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lj31zp</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:endEvent id="EndEvent_0o440av" name="End">
+      <bpmn2:incoming>SequenceFlow_095crcd</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1lj31zp" sourceRef="doCreateServiceInstance_CallActivity" targetRef="ExclusiveGateway_1x5i9c1" />
+    <bpmn2:scriptTask id="ScriptTask_0pvcr6j" name="Pre Process Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0lp2z7l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ktadna</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new CreateGenericALaCarteServiceInstance()
+csi.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0lp2z7l" sourceRef="createSI_startEvent" targetRef="ScriptTask_0pvcr6j" />
+    <bpmn2:scriptTask id="ScriptTask_0cihgpv" name="Prepare Completion Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1o4wwba</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xxvjxq</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new CreateGenericALaCarteServiceInstance()
+csi.prepareCompletionRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_0sevgre" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in source="completionRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" />
+        <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" />
+        <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" />
+      </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 and Rollback" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_110xxgx">
+        <bpmn2:outgoing>SequenceFlow_0n4umjf</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1rqikib">
+        <bpmn2:incoming>SequenceFlow_1ghqolv</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_1hql91g" name="Prepare Fallout Request" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_14eadeb</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1reso2f</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new CreateGenericALaCarteServiceInstance()
+csi.prepareFalloutRequest(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:callActivity id="CallActivity_1ksm1dz" name="Call FalloutHandler" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in source="falloutRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="mso-request-id" target="mso-request-id" />
+          <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+          <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" />
+          <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" />
+          <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1reso2f</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1ghqolv</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <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_0o4smqp" />
+      <bpmn2:scriptTask id="ScriptTask_0o4smqp" name="Send Error Response">
+        <bpmn2:incoming>SequenceFlow_0n4umjf</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_14eadeb</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  CreateGenericALaCarteServiceInstance()
+csi.sendSyncError(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <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:scriptTask id="Task_1nko5zz" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0ktadna</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16vhtu8</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  CreateGenericALaCarteServiceInstance()
+csi.sendSyncResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ktadna" sourceRef="ScriptTask_0pvcr6j" targetRef="Task_1nko5zz" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1x5i9c1" name="Success?">
+      <bpmn2:incoming>SequenceFlow_1lj31zp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1o4wwba</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1mdnv3l</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:endEvent id="EndEvent_143akoz">
+      <bpmn2:incoming>SequenceFlow_1mdnv3l</bpmn2:incoming>
+      <bpmn2:errorEventDefinition errorRef="Error_2" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1o4wwba" name="yes" sourceRef="ExclusiveGateway_1x5i9c1" targetRef="ScriptTask_0cihgpv">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") == null}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <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.onap.so.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.onap.so.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" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateGenericALaCarteServiceInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSI_startEvent">
+        <dc:Bounds x="-6" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-25" y="120" width="74" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_28" bpmnElement="unexpectedErrors_SubProcess" isExpanded="true">
+        <dc:Bounds x="300" y="880" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_71" bpmnElement="StartEvent_1">
+        <dc:Bounds x="333" y="957" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="448" y="935" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_220" bpmnElement="EndEvent_1">
+        <dc:Bounds x="609" y="957" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="369" y="975" />
+        <di:waypoint xsi:type="dc:Point" x="448" y="975" />
+        <bpmndi:BPMNLabel>
+          <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="548" y="975" />
+        <di:waypoint xsi:type="dc:Point" x="609" y="975" />
+        <bpmndi:BPMNLabel>
+          <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="112" y="452" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0o440av_di" bpmnElement="EndEvent_0o440av">
+        <dc:Bounds x="852" y="474" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="212" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="314" y="492" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="263" y="477" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0pvcr6j_di" bpmnElement="ScriptTask_0pvcr6j">
+        <dc:Bounds x="112" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0lp2z7l_di" bpmnElement="SequenceFlow_0lp2z7l">
+        <di:waypoint xsi:type="dc:Point" x="30" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="112" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="71" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0cihgpv_di" bpmnElement="ScriptTask_0cihgpv">
+        <dc:Bounds x="449" y="452" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0sevgre_di" bpmnElement="CallActivity_0sevgre">
+        <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="549" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="637" y="492" />
+        <bpmndi:BPMNLabel>
+          <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="443" y="731" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ksm1dz_di" bpmnElement="CallActivity_1ksm1dz">
+        <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="170" y="667" width="679" height="194" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_110xxgx_di" bpmnElement="StartEvent_110xxgx">
+        <dc:Bounds x="185" y="753" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="764" y="753" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="543" y="771" />
+        <di:waypoint xsi:type="dc:Point" x="620" y="771" />
+        <bpmndi:BPMNLabel>
+          <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="720" y="771" />
+        <di:waypoint xsi:type="dc:Point" x="764" y="771" />
+        <bpmndi:BPMNLabel>
+          <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="737" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="852" y="492" />
+        <bpmndi:BPMNLabel>
+          <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="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="258" y="771" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1rb2dsd_di" bpmnElement="Task_1nko5zz">
+        <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="342" y="97" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="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="314" y="467" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="321" y="580" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="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="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>
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateNetworkInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateNetworkInstance.bpmn
new file mode 100644
index 0000000..9b21b93
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateNetworkInstance.bpmn
@@ -0,0 +1,340 @@
+<?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="CreateNetworkInstance" name="CreateNetworkInstance" 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.onap.so.bpmn.infrastructure.scripts.*
+def networkMod = new CreateNetworkInstance()
+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="doCreateNetworkInstance_CallActivity" name="DoCreate Network Instance&#10;" calledElement="DoCreateNetworkInstance">
+      <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="CreateNetwork&#10;PostProcess Success&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_095crcd</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0x3znm5</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def CreateNetworkInstance = new  CreateNetworkInstance()
+CreateNetworkInstance.postProcessResponse(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1lj31zp" sourceRef="doCreateNetworkInstance_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.onap.so.bpmn.infrastructure.scripts.*
+def preProcess = new CreateNetworkInstance()
+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.onap.so.bpmn.infrastructure.scripts.*
+def CreateNetworkInstance = new CreateNetworkInstance()
+CreateNetworkInstance.prepareCompletion(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_0sevgre" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in source="CRENI_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 and Rollback" 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.onap.so.bpmn.infrastructure.scripts.*
+def CreateNetworkInstance = new CreateNetworkInstance()
+CreateNetworkInstance.prepareDBRequestError(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:scriptTask id="ScriptTask_1hql91g" name="Prepare FalloutHandler" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1s5niqb</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1reso2f</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def CreateNetworkInstance = new CreateNetworkInstance()
+CreateNetworkInstance.buildErrorResponse(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:callActivity id="CallActivity_1ksm1dz" name="Call FalloutHandlerV1" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in source="CRENI_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="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="doCreateNetworkInstance_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.onap.so.bpmn.infrastructure.scripts.*
+def CreateNetworkInstance = new CreateNetworkInstance()
+CreateNetworkInstance.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.onap.so.bpmn.infrastructure.scripts.*
+def CreateNetworkInstance = new  CreateNetworkInstance()
+CreateNetworkInstance.sendSyncResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateNetworkInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createNetwork_startEvent">
+        <dc:Bounds x="3" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-3" y="120" width="48" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_28" bpmnElement="unexpectedErrors_SubProcess" isExpanded="true">
+        <dc:Bounds x="-8" y="786" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_71" bpmnElement="StartEvent_1">
+        <dc:Bounds x="25" y="863" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="43" y="904" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_270" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="140" y="841" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_220" bpmnElement="EndEvent_1">
+        <dc:Bounds x="301" y="863" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="319" y="904" 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="61" y="881" />
+        <di:waypoint xsi:type="dc:Point" x="140" y="881" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="103" y="881" 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="240" y="881" />
+        <di:waypoint xsi:type="dc:Point" x="301" y="881" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="275" y="881" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_72" bpmnElement="doCreateNetworkInstance_CallActivity">
+        <dc:Bounds x="692" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0o440av_di" bpmnElement="EndEvent_0o440av">
+        <dc:Bounds x="1408" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1419" y="115" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_09qt0pi_di" bpmnElement="ScriptTask_09qt0pi">
+        <dc:Bounds x="1253" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lj31zp_di" bpmnElement="SequenceFlow_1lj31zp">
+        <di:waypoint xsi:type="dc:Point" x="792" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="907" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="850" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0x3znm5_di" bpmnElement="SequenceFlow_0x3znm5">
+        <di:waypoint xsi:type="dc:Point" x="1353" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1408" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1381" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0pvcr6j_di" bpmnElement="ScriptTask_0pvcr6j">
+        <dc:Bounds x="139" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0lp2z7l_di" bpmnElement="SequenceFlow_0lp2z7l">
+        <di:waypoint xsi:type="dc:Point" x="39" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="89" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="89" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="139" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="104" y="97" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ablr60_di" bpmnElement="SequenceFlow_1ablr60">
+        <di:waypoint xsi:type="dc:Point" x="239" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="306" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="306" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="372" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="321" y="97" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0cihgpv_di" bpmnElement="ScriptTask_0cihgpv">
+        <dc:Bounds x="907" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0sevgre_di" bpmnElement="CallActivity_0sevgre">
+        <dc:Bounds x="1071" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1akfe0b_di" bpmnElement="ScriptTask_1akfe0b">
+        <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" />
+        <di:waypoint xsi:type="dc:Point" x="1071" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1039" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1hql91g_di" bpmnElement="ScriptTask_1hql91g">
+        <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" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_1k2112i_di" bpmnElement="SubProcess_1k2112i" isExpanded="true">
+        <dc:Bounds x="56" y="348" width="1021" height="404" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_110xxgx_di" bpmnElement="StartEvent_110xxgx">
+        <dc:Bounds x="152" y="542" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="170" y="583" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1rqikib_di" bpmnElement="EndEvent_1rqikib">
+        <dc:Bounds x="982" y="542" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1000" y="583" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s5niqb_di" bpmnElement="SequenceFlow_1s5niqb">
+        <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="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="643" y="560" />
+        <di:waypoint xsi:type="dc:Point" x="807" y="560" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="725" y="545" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ghqolv_di" bpmnElement="SequenceFlow_1ghqolv">
+        <di:waypoint xsi:type="dc:Point" x="907" y="560" />
+        <di:waypoint xsi:type="dc:Point" x="982" y="560" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="945" y="545" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_095crcd_di" bpmnElement="SequenceFlow_095crcd">
+        <di:waypoint xsi:type="dc:Point" x="1171" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1253" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1212" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </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="300" y="560" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="244" y="545" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0rt8wax_di" bpmnElement="SequenceFlow_0rt8wax">
+        <di:waypoint xsi:type="dc:Point" x="472" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="558" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="515" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eto8sn_di" bpmnElement="SequenceFlow_0eto8sn">
+        <di:waypoint xsi:type="dc:Point" x="658" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="692" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="675" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1gpvlh8_di" bpmnElement="Task_19xbdbu">
+        <dc:Bounds x="372" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rb2dsd_di" bpmnElement="Task_1nko5zz">
+        <dc:Bounds x="558" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateSDNCNetworkResource.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateSDNCNetworkResource.bpmn
new file mode 100644
index 0000000..2920713
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateSDNCNetworkResource.bpmn
@@ -0,0 +1,287 @@
+<?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.16.2">
+  <bpmn:process id="CreateSDNCNetworkResource" name="CreateSDNCNetworkResource" isExecutable="true">
+    <bpmn:startEvent id="createNS_StartEvent" name="createNS_StartEvent">
+      <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="createNS_StartEvent" targetRef="Task_1dlrfiw" />
+    <bpmn:sequenceFlow id="SequenceFlow_0khtova" sourceRef="PreprocessIncomingRequest_task" targetRef="Task_0tezqd4" />
+    <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="prepare SDNC Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_18l3crb</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0khtova</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new CreateSDNCNetworkResource()
+dcsi.prepareSDNCRequest(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:endEvent id="EndEvent_1x6k78c" name="create SDNC call end">
+      <bpmn:incoming>SequenceFlow_0auvfvm</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:callActivity id="CallActivity_1600xlj" name="Call SDNC RSRC Create&#10; Adapter V1&#10;" calledElement="sdncAdapter">
+      <bpmn:extensionElements>
+        <camunda:in source="CRESDNCRES_activateSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="sdncAdapterResponse" target="CRENWKI_activateSDNCResponse" />
+        <camunda:out source="SDNCA_ResponseCode" target="CRESDNCRES_sdncCreateReturnCode" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="CRESDNCRES_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="sdncAdapterWorkflowRequest" target="sdncAdapterWorkflowRequest" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_15mvedq</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ex9ov6</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:scriptTask id="Task_023hred" name="post SDNC create call">
+      <bpmn:incoming>SequenceFlow_1ex9ov6</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1kzj1j5</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new CreateSDNCNetworkResource()
+dcsi.postCreateSDNCCall(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0w2es8j" sourceRef="Task_1dlrfiw" targetRef="Task_13sx2bp" />
+    <bpmn:sequenceFlow id="SequenceFlow_18l3crb" sourceRef="Task_13sx2bp" targetRef="PreprocessIncomingRequest_task" />
+    <bpmn:scriptTask id="Task_1dlrfiw" name="Set the Recipe DesignTimeParam" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0w2es8j</bpmn:outgoing>
+      <bpmn:script>String recipeParamXsdDemo="""{"operationType":"GRE"}"""
+String recipeParamXsd=""
+execution.setVariable("recipeParamXsd", recipeParamXsd)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="Task_13sx2bp" name="Pre Process Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0w2es8j</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_18l3crb</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new CreateSDNCNetworkResource()
+dcsi.preProcessRequest(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1mz0vdx" sourceRef="Task_0tezqd4" targetRef="Task_18tomkl" />
+    <bpmn:sequenceFlow id="SequenceFlow_15mvedq" sourceRef="Task_18tomkl" targetRef="CallActivity_1600xlj" />
+    <bpmn:scriptTask id="Task_0tezqd4" name="Create progress update parameters before create" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0khtova</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1mz0vdx</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new CreateSDNCNetworkResource()
+dcsi.prepareUpdateBeforeCreateSDNCResource(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:serviceTask id="Task_18tomkl" name="update progress update">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateResOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1mz0vdx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_15mvedq</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:serviceTask id="ServiceTask_1cm8iwr" name="update progress update">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateResOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1kzj1j5</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0o7h0ag</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:scriptTask id="ScriptTask_1g5zyi6" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1cd8ujq</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0auvfvm</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  CreateSDNCNetworkResource()
+csi.sendSyncResponse(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0cdulnk" name="is activate required">
+      <bpmn:incoming>SequenceFlow_0o7h0ag</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1dww8ye</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_05m2j56</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1dww8ye" name="yes" sourceRef="ExclusiveGateway_0cdulnk" targetRef="Task_0bga3e8">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isActivateRequired") == "true")}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1ex9ov6" sourceRef="CallActivity_1600xlj" targetRef="Task_023hred" />
+    <bpmn:sequenceFlow id="SequenceFlow_1kzj1j5" sourceRef="Task_023hred" targetRef="ServiceTask_1cm8iwr" />
+    <bpmn:sequenceFlow id="SequenceFlow_0o7h0ag" sourceRef="ServiceTask_1cm8iwr" targetRef="ExclusiveGateway_0cdulnk" />
+    <bpmn:scriptTask id="Task_0uwlr22" name="Create progress update parameters After create" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_05m2j56</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_05niqbf</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1cd8ujq</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new CreateSDNCNetworkResource()
+dcsi.prepareUpdateAfterCreateSDNCResource(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_05m2j56" name="No" sourceRef="ExclusiveGateway_0cdulnk" targetRef="Task_0uwlr22" />
+    <bpmn:sequenceFlow id="SequenceFlow_05niqbf" sourceRef="Task_0bga3e8" targetRef="Task_0uwlr22" />
+    <bpmn:sequenceFlow id="SequenceFlow_1cd8ujq" sourceRef="Task_0uwlr22" targetRef="ScriptTask_1g5zyi6" />
+    <bpmn:sequenceFlow id="SequenceFlow_0auvfvm" sourceRef="ScriptTask_1g5zyi6" targetRef="EndEvent_1x6k78c" />
+    <bpmn:callActivity id="Task_0bga3e8" name="call Activate SDNC network Resource" calledElement="ActivateSDNCNetworkResource">
+      <bpmn:incoming>SequenceFlow_1dww8ye</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_05niqbf</bpmn:outgoing>
+    </bpmn:callActivity>
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateSDNCNetworkResource">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="createNS_StartEvent">
+        <dc:Bounds x="-111" y="111" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-135" y="147" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln">
+        <di:waypoint x="-75" y="129" />
+        <di:waypoint x="-10" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-87.5" y="108" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0khtova_di" bpmnElement="SequenceFlow_0khtova">
+        <di:waypoint x="413" y="129" />
+        <di:waypoint x="460" y="129" />
+        <di:waypoint x="500" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="391.5" y="108" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task">
+        <dc:Bounds x="313" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c">
+        <dc:Bounds x="1046" y="317" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1009" y="359" width="84" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1600xlj_di" bpmnElement="CallActivity_1600xlj">
+        <dc:Bounds x="-10" y="295" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0gyej62_di" bpmnElement="Task_023hred">
+        <dc:Bounds x="172" y="295" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0w2es8j_di" bpmnElement="SequenceFlow_0w2es8j">
+        <di:waypoint x="90" y="129" />
+        <di:waypoint x="148" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="74" y="108" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18l3crb_di" bpmnElement="SequenceFlow_18l3crb">
+        <di:waypoint x="248" y="129" />
+        <di:waypoint x="313" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="235.5" y="108" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0lc6l7a_di" bpmnElement="Task_1dlrfiw">
+        <dc:Bounds x="-10" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_14l9mlv_di" bpmnElement="Task_13sx2bp">
+        <dc:Bounds x="148" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mz0vdx_di" bpmnElement="SequenceFlow_1mz0vdx">
+        <di:waypoint x="606" y="129" />
+        <di:waypoint x="638" y="129" />
+        <di:waypoint x="638" y="129" />
+        <di:waypoint x="738" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="608" y="123" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15mvedq_di" bpmnElement="SequenceFlow_15mvedq">
+        <di:waypoint x="788" y="169" />
+        <di:waypoint x="788" y="218" />
+        <di:waypoint x="-89" y="218" />
+        <di:waypoint x="-89" y="335" />
+        <di:waypoint x="-10" y="335" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="349" y="197" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1kqf4ge_di" bpmnElement="Task_0tezqd4">
+        <dc:Bounds x="506" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_1q6ssz7_di" bpmnElement="Task_18tomkl">
+        <dc:Bounds x="738" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_1cm8iwr_di" bpmnElement="ServiceTask_1cm8iwr">
+        <dc:Bounds x="366" y="295" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1g5zyi6_di" bpmnElement="ScriptTask_1g5zyi6">
+        <dc:Bounds x="890" y="295" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0cdulnk_di" bpmnElement="ExclusiveGateway_0cdulnk" isMarkerVisible="true">
+        <dc:Bounds x="539" y="310" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="539" y="273" width="49" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dww8ye_di" bpmnElement="SequenceFlow_1dww8ye">
+        <di:waypoint x="564" y="360" />
+        <di:waypoint x="564" y="471" />
+        <di:waypoint x="608" y="471" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="571" y="391" width="18" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ex9ov6_di" bpmnElement="SequenceFlow_1ex9ov6">
+        <di:waypoint x="90" y="335" />
+        <di:waypoint x="172" y="335" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kzj1j5_di" bpmnElement="SequenceFlow_1kzj1j5">
+        <di:waypoint x="272" y="335" />
+        <di:waypoint x="366" y="335" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0o7h0ag_di" bpmnElement="SequenceFlow_0o7h0ag">
+        <di:waypoint x="466" y="335" />
+        <di:waypoint x="539" y="335" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0hu4lhm_di" bpmnElement="Task_0uwlr22">
+        <dc:Bounds x="721" y="295" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_05m2j56_di" bpmnElement="SequenceFlow_05m2j56">
+        <di:waypoint x="589" y="335" />
+        <di:waypoint x="721" y="335" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="648" y="317" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_05niqbf_di" bpmnElement="SequenceFlow_05niqbf">
+        <di:waypoint x="708" y="471" />
+        <di:waypoint x="771" y="471" />
+        <di:waypoint x="771" y="375" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cd8ujq_di" bpmnElement="SequenceFlow_1cd8ujq">
+        <di:waypoint x="821" y="335" />
+        <di:waypoint x="890" y="335" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0auvfvm_di" bpmnElement="SequenceFlow_0auvfvm">
+        <di:waypoint x="990" y="335" />
+        <di:waypoint x="1046" y="335" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0aywvn3_di" bpmnElement="Task_0bga3e8">
+        <dc:Bounds x="608" y="431" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVFCNSResource.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVFCNSResource.bpmn
new file mode 100644
index 0000000..9724a93
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVFCNSResource.bpmn
@@ -0,0 +1,277 @@
+<?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.10.0">
+  <bpmn:process id="CreateVFCNSResource" name="CreateVFCNSResource" isExecutable="true">
+    <bpmn:startEvent id="createNS_StartEvent" name="createNS_StartEvent">
+      <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="createNS_StartEvent" targetRef="PreprocessIncomingRequest_task" />
+    <bpmn:sequenceFlow id="SequenceFlow_0khtova" sourceRef="PreprocessIncomingRequest_task" targetRef="Task_09nzhwk" />
+    <bpmn:sequenceFlow id="SequenceFlow_1uiz85h" sourceRef="Task_09nzhwk" targetRef="ExclusiveGateway_0zfksms" />
+    <bpmn:scriptTask id="Task_09nzhwk" name="Create Network Service" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0khtova</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1uiz85h</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new CreateVFCNSResource()
+dcsi.createNetworkService(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="Preprocess Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0khtova</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new CreateVFCNSResource()
+dcsi.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="instantiate_NSTask" name="Instantiate Network Service" scriptFormat="groovy">
+      <bpmn:incoming>createNSSuccess_SequenceFlow</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ywe21t</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new CreateVFCNSResource()
+dcsi.instantiateNetworkService(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0zfksms" name="Create NS Success?">
+      <bpmn:incoming>SequenceFlow_1uiz85h</bpmn:incoming>
+      <bpmn:outgoing>createNSSuccess_SequenceFlow</bpmn:outgoing>
+      <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: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:sequenceFlow>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1is7zys" name="Instantiate NS Success?">
+      <bpmn:incoming>SequenceFlow_1ywe21t</bpmn:incoming>
+      <bpmn:outgoing>instantiateFailed_SequenceFlow</bpmn:outgoing>
+      <bpmn:outgoing>instantiateSuccess_SequenceFlow</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1ywe21t" sourceRef="instantiate_NSTask" targetRef="ExclusiveGateway_1is7zys" />
+    <bpmn:sequenceFlow id="instantiateFailed_SequenceFlow" name="no" sourceRef="ExclusiveGateway_1is7zys" targetRef="EndEvent_1gkvvpn">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" )  == null || execution.getVariable("jobId" )  == "" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="instantiateSuccess_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_1is7zys" targetRef="queryJob_Task">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" )  != null && execution.getVariable("jobId" )  != "" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_15492gl" name="Instantiate Finished?">
+      <bpmn:incoming>SequenceFlow_0xqo13p</bpmn:incoming>
+      <bpmn:outgoing>operationFinished_SequenceFlow</bpmn:outgoing>
+      <bpmn:outgoing>operationProcessing_SequenceFlow</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="operationFinished_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_15492gl" targetRef="finishNSCreate_Task">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationStatus" )  != "processing" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="operationProcessing_SequenceFlow" name="no" sourceRef="ExclusiveGateway_15492gl" targetRef="timeDelay_Task">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationStatus" )  == "processing" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0cq2q6g" sourceRef="finishNSCreate_Task" targetRef="ScriptTask_1890l78" />
+    <bpmn:endEvent id="createNSFailed_EndEvent" name="createNSFailed">
+      <bpmn:incoming>createNSFailed_SequenceFlow</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="EndEvent_1gkvvpn">
+      <bpmn:incoming>instantiateFailed_SequenceFlow</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="EndEvent_1x6k78c">
+      <bpmn:incoming>SequenceFlow_1lwqmo9</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="queryJob_Task" name="Query NS Progress" scriptFormat="groovy">
+      <bpmn:incoming>instantiateSuccess_SequenceFlow</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1gsbpxj</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0xqo13p</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new CreateVFCNSResource()
+dcsi.queryNSProgress(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="finishNSCreate_Task" name="Add NS Relationship" scriptFormat="groovy">
+      <bpmn:incoming>operationFinished_SequenceFlow</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0cq2q6g</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new CreateVFCNSResource()
+dcsi.addNSRelationship(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0xqo13p" sourceRef="queryJob_Task" targetRef="ExclusiveGateway_15492gl" />
+    <bpmn:scriptTask id="timeDelay_Task" name="timeDelay" scriptFormat="groovy">
+      <bpmn:incoming>operationProcessing_SequenceFlow</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1gsbpxj</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new CreateVFCNSResource()
+dcsi.timeDelay(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1gsbpxj" sourceRef="timeDelay_Task" targetRef="queryJob_Task" />
+    <bpmn:scriptTask id="ScriptTask_1890l78" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0cq2q6g</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1lwqmo9</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  CreateVFCNSResource()
+csi.sendSyncResponse(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1lwqmo9" sourceRef="ScriptTask_1890l78" targetRef="EndEvent_1x6k78c" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVFCNSResource">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="createNS_StartEvent">
+        <dc:Bounds x="175" y="111" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="152" y="147" width="83" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln">
+        <di:waypoint xsi:type="dc:Point" x="211" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="251" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="251" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="293" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="266" y="123" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0khtova_di" bpmnElement="SequenceFlow_0khtova">
+        <di:waypoint xsi:type="dc:Point" x="393" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="479" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="436" y="108" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1uiz85h_di" bpmnElement="SequenceFlow_1uiz85h">
+        <di:waypoint xsi:type="dc:Point" x="579" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="683" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="631" y="108" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1dw39hg_di" bpmnElement="Task_09nzhwk">
+        <dc:Bounds x="479" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task">
+        <dc:Bounds x="293" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qmmew8_di" bpmnElement="instantiate_NSTask">
+        <dc:Bounds x="839" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0zfksms_di" bpmnElement="ExclusiveGateway_0zfksms" isMarkerVisible="true">
+        <dc:Bounds x="683" y="104" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="685" y="158" width="52" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rt03zl_di" bpmnElement="createNSSuccess_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="733" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="839" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="777" y="108" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0df541u_di" bpmnElement="createNSFailed_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="708" y="104" />
+        <di:waypoint xsi:type="dc:Point" x="708" y="33" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="717" y="63" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1is7zys_di" bpmnElement="ExclusiveGateway_1is7zys" isMarkerVisible="true">
+        <dc:Bounds x="1034" y="105" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1029" y="159" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ywe21t_di" bpmnElement="SequenceFlow_1ywe21t">
+        <di:waypoint xsi:type="dc:Point" x="939" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="1034" y="130" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="986.5" y="108.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0j7xo94_di" bpmnElement="instantiateFailed_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="105" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="33" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1068" y="63" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ui2n9l_di" bpmnElement="instantiateSuccess_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="155" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="271" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1066" y="207" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_15492gl_di" bpmnElement="ExclusiveGateway_15492gl" isMarkerVisible="true">
+        <dc:Bounds x="1034" y="570" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1038" y="624" width="50" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0hftgi6_di" bpmnElement="operationFinished_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1034" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="902" y="595" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="929.1428571428571" y="574" width="18" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0omec46_di" bpmnElement="operationProcessing_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1084" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="1212" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="1212" y="486" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1131" y="607" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0cq2q6g_di" bpmnElement="SequenceFlow_0cq2q6g">
+        <di:waypoint xsi:type="dc:Point" x="802" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="690" y="595" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="701" y="574" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1ido9wi_di" bpmnElement="createNSFailed_EndEvent">
+        <dc:Bounds x="690" y="-3" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="626" y="37" width="75" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0xgvlmx_di" bpmnElement="EndEvent_1gkvvpn">
+        <dc:Bounds x="1041" y="-3" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1014" y="37" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c">
+        <dc:Bounds x="484" y="577" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="412" y="617" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0sxy5we_di" bpmnElement="queryJob_Task">
+        <dc:Bounds x="1009" y="271" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0xxyfku_di" bpmnElement="finishNSCreate_Task">
+        <dc:Bounds x="802" y="555" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xqo13p_di" bpmnElement="SequenceFlow_0xqo13p">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="351" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="570" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1074" y="454.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0rb5agx_di" bpmnElement="timeDelay_Task">
+        <dc:Bounds x="1162" y="406" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1gsbpxj_di" bpmnElement="SequenceFlow_1gsbpxj">
+        <di:waypoint xsi:type="dc:Point" x="1212" y="406" />
+        <di:waypoint xsi:type="dc:Point" x="1212" y="311" />
+        <di:waypoint xsi:type="dc:Point" x="1109" y="311" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1227" y="352.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1890l78_di" bpmnElement="ScriptTask_1890l78">
+        <dc:Bounds x="590" y="555" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lwqmo9_di" bpmnElement="SequenceFlow_1lwqmo9">
+        <di:waypoint xsi:type="dc:Point" x="590" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="520" y="595" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="555" y="573" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVcpeResCustService.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVcpeResCustService.bpmn
new file mode 100644
index 0000000..9ea6a9b
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVcpeResCustService.bpmn
@@ -0,0 +1,1539 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="CreateVcpeResCustService" name="CreateVcpeResCustService" isExecutable="true">
+    <bpmn2:scriptTask id="sendSyncAckResponse_ScriptTask" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.sendSyncResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="sendSyncAckResponse_ScriptTask" targetRef="IntermediateThrowEvent_2" />
+    <bpmn2:startEvent id="createVCPE_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createVCPE_startEvent" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="sendSyncAckResponse_ScriptTask" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" name="vCPE-RESCUST">
+      <bpmn2:outgoing>SequenceFlow_1eu60rt</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_37" name="vCPE-RESCUST" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:scriptTask id="postProcessAndCompletionRequest_ScriptTask" name="Post Process &#38; Completion Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0afe2pg</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.postProcessResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="postProcessAndCompletionRequest_ScriptTask" targetRef="callCompleteMsoProcess_CallActivity" />
+    <bpmn2:callActivity id="callCompleteMsoProcess_CallActivity" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in variables="all" />
+        <camunda:out variables="all" />
+        <camunda:in source="CVRCS_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="mso-request-id" target="requestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <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_29</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="callCompleteMsoProcess_CallActivity" targetRef="ScriptTask_2" />
+    <bpmn2:scriptTask id="ScriptTask_2" name="Set Success Indicator" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[// The following variable is checked by the unit test
+execution.setVariable("CreateVcpeResCustServiceSuccessIndicator", true)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_2" targetRef="CreateVCPE_EndEvent" />
+    <bpmn2:endEvent id="CreateVCPE_EndEvent" name="End">
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_13" />
+    </bpmn2:endEvent>
+    <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1">
+        <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1">
+        <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" />
+      <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" />
+    </bpmn2:subProcess>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_4" name="FinishProcess">
+      <bpmn2:outgoing>SequenceFlow_12ilko1</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_39" name="FinishProcess" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:callActivity id="doCreateServiceInstance_CallActivity" name="Call Create &#10;ServiceInstance&#10;" calledElement="DoCreateServiceInstance">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:out source="rollbackData" target="DCRESI_rollbackData" />
+        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="failIfExists" target="failIfExists" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="serviceInputParams" target="serviceInputParams" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <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>
+    </bpmn2:callActivity>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_2" name="GoTovCPE-RESCUST">
+      <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_38" name="vCPE-RESCUST" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:subProcess id="SubProcess_0s6hpty" name="Subprocess For Exception / FalloutHandler" triggeredByEvent="true">
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_1vwgs6p" name="Is Rollback On?" default="SequenceFlow_0dhf2js">
+        <bpmn2:incoming>SequenceFlow_0zq7i3q</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0zpbskl</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_0dhf2js</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:startEvent id="StartEvent_1bwmffk" name="Fault Start">
+        <bpmn2:outgoing>SequenceFlow_0zq7i3q</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_0ydrtdx" name="isPONR?" default="SequenceFlow_02o4yqx">
+        <bpmn2:incoming>SequenceFlow_0zpbskl</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1sx5llu</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_02o4yqx</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_1kvn1pz" name="is AR_TXC Ok?" default="SequenceFlow_19mxskt">
+        <bpmn2:incoming>SequenceFlow_0t3mtod</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_19mxskt</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_1sl79hn</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:callActivity id="CallActivity_0jw5tqa" name="Call FalloutHandlerV1" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in source="CVRCS_falloutRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="msoRequestId" target="mso-request-id" />
+          <camunda:in source="serviceInstanceId" 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_0807ukc</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_19yywk8</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:endEvent id="EndEvent_04xute7">
+        <bpmn2:incoming>SequenceFlow_19yywk8</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_0yk02h3" name="Prepare FalloutHandler" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0jg47xm</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0807ukc</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.prepareFalloutRequest(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_0zpbskl" name="Yes" sourceRef="ExclusiveGateway_1vwgs6p" targetRef="ExclusiveGateway_0ydrtdx">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("disableRollback") != true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_0dhf2js" name="No" sourceRef="ExclusiveGateway_1vwgs6p" targetRef="InclusiveGateway_0foywso" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1sx5llu" name="Yes" sourceRef="ExclusiveGateway_0ydrtdx" targetRef="InclusiveGateway_0foywso">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("PONR") == true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_02o4yqx" name="No" sourceRef="ExclusiveGateway_0ydrtdx" targetRef="ScriptTask_17doerz" />
+      <bpmn2:sequenceFlow id="SequenceFlow_19mxskt" name="No" sourceRef="ExclusiveGateway_1kvn1pz" targetRef="ExclusiveGateway_05indeh" />
+      <bpmn2:callActivity id="DoRollbackService_CallActivity" name="DoRollback&#10;Service&#10;" calledElement="DoCreateServiceInstanceRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="DCRESI_rollbackData" target="rollbackData" />
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:out source="rolledBack" target="DCRESI_rolledBack" />
+          <camunda:out source="rollbackError" target="DCRESI_rollbackError" />
+          <camunda:in source="sdncVersion" target="sdncVersion" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1a7e8l1</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1f1hd3l</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:inclusiveGateway id="InclusiveGateway_0foywso">
+        <bpmn2:incoming>SequenceFlow_1sx5llu</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_0dhf2js</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1rabks0</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0jg47xm</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1f1hd3l" sourceRef="DoRollbackService_CallActivity" targetRef="InclusiveGateway_0m9f5ka" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0jg47xm" sourceRef="InclusiveGateway_0foywso" targetRef="ScriptTask_0yk02h3" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0807ukc" sourceRef="ScriptTask_0yk02h3" targetRef="CallActivity_0jw5tqa" />
+      <bpmn2:sequenceFlow id="SequenceFlow_19yywk8" sourceRef="CallActivity_0jw5tqa" targetRef="EndEvent_04xute7" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_05indeh" name="Service Rollback present?" default="SequenceFlow_0sezboq">
+        <bpmn2:incoming>SequenceFlow_19mxskt</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_17cz98f</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0sezboq</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_1a7e8l1</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0sezboq" name="No" sourceRef="ExclusiveGateway_05indeh" targetRef="InclusiveGateway_0m9f5ka" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0zq7i3q" name="" sourceRef="StartEvent_1bwmffk" targetRef="ExclusiveGateway_1vwgs6p" />
+      <bpmn2:inclusiveGateway id="InclusiveGateway_0m9f5ka">
+        <bpmn2:incoming>SequenceFlow_1f1hd3l</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_0sezboq</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1mbymcu</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_00by7l7</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1lv5ld6</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:scriptTask id="ScriptTask_17doerz" name="Pre Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_02o4yqx</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0ftzjjm</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService= new CreateVcpeResCustService()
+CreateVcpeResCustService.preProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:scriptTask id="ScriptTask_0wyub4x" name="Post Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0dvsqpp</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1rabks0</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService= new CreateVcpeResCustService()
+CreateVcpeResCustService.postProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1rabks0" sourceRef="ScriptTask_0wyub4x" targetRef="InclusiveGateway_0foywso" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_06gq6em" name="is AR_BRG Ok?" default="SequenceFlow_0ya1cr3">
+        <bpmn2:incoming>SequenceFlow_12dakwh</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0orpdrl</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_0ya1cr3</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:callActivity id="CallActivity_1bpuf2p" name="DoRollback&#10;BRG Allotted Resources&#10;" calledElement="DoCreateAllottedResourceBRGRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="DCARBRG_rollbackData" target="rollbackData" />
+          <camunda:in source="sdncVersion" target="sdncVersion" />
+          <camunda:out source="rolledBack" target="DCARBRG_rolledBack" />
+          <camunda:out source="rollbackError" target="DCARBRG_rollbackError" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_0orpdrl</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1t3cnnx</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:inclusiveGateway id="InclusiveGateway_131ozdf">
+        <bpmn2:incoming>SequenceFlow_0ya1cr3</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1sim44y</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_027lz43</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0orpdrl" name="Yes" sourceRef="ExclusiveGateway_06gq6em" targetRef="CallActivity_1bpuf2p">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCARBRG_rollbackData") != null }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_1t3cnnx" sourceRef="CallActivity_1bpuf2p" targetRef="ExclusiveGateway_1mjdcct" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0ya1cr3" name="No" sourceRef="ExclusiveGateway_06gq6em" targetRef="InclusiveGateway_131ozdf" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_14tl857" name="is VNF Ok?" default="SequenceFlow_1kpdu1j">
+        <bpmn2:incoming>SequenceFlow_027lz43</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1kpdu1j</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_007p8k3</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:inclusiveGateway id="InclusiveGateway_142br6v">
+        <bpmn2:incoming>SequenceFlow_1kpdu1j</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1quvahv</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0t3mtod</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1kpdu1j" name="No" sourceRef="ExclusiveGateway_14tl857" targetRef="InclusiveGateway_142br6v" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_1mjdcct" name="Rollback success?" default="SequenceFlow_0dr2fem">
+        <bpmn2:incoming>SequenceFlow_1t3cnnx</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1sim44y</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_0dr2fem</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1sim44y" name="Yes" sourceRef="ExclusiveGateway_1mjdcct" targetRef="InclusiveGateway_131ozdf">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCARBRG_rolledBack") == true }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_0dr2fem" name="No" sourceRef="ExclusiveGateway_1mjdcct" targetRef="InclusiveGateway_1xenadu" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_05dg1m1" name="Rollback success?" default="SequenceFlow_1mbymcu">
+        <bpmn2:incoming>SequenceFlow_1mpsdaj</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1quvahv</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_1mbymcu</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1quvahv" name="Yes" sourceRef="ExclusiveGateway_05dg1m1" targetRef="InclusiveGateway_142br6v">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCVAM_rolledBack") ==true }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_1mbymcu" name="No" sourceRef="ExclusiveGateway_05dg1m1" targetRef="InclusiveGateway_0m9f5ka" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_0y7gtd9" name="rollback failed?" default="SequenceFlow_12dakwh">
+        <bpmn2:incoming>SequenceFlow_0ftzjjm</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_12dakwh</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_09nn9a9</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0ftzjjm" sourceRef="ScriptTask_17doerz" targetRef="ExclusiveGateway_0y7gtd9" />
+      <bpmn2:sequenceFlow id="SequenceFlow_12dakwh" name="No" sourceRef="ExclusiveGateway_0y7gtd9" targetRef="ExclusiveGateway_06gq6em" />
+      <bpmn2:inclusiveGateway id="InclusiveGateway_1xenadu">
+        <bpmn2:incoming>SequenceFlow_1lv5ld6</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_09nn9a9</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_0dr2fem</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0dvsqpp</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1lv5ld6" sourceRef="InclusiveGateway_0m9f5ka" targetRef="InclusiveGateway_1xenadu" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0dvsqpp" sourceRef="InclusiveGateway_1xenadu" targetRef="ScriptTask_0wyub4x" />
+      <bpmn2:sequenceFlow id="SequenceFlow_09nn9a9" name="Yes" sourceRef="ExclusiveGateway_0y7gtd9" targetRef="InclusiveGateway_1xenadu">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rolledBack") != null && execution.getVariable("rolledBack") == false}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_027lz43" sourceRef="InclusiveGateway_131ozdf" targetRef="ExclusiveGateway_14tl857" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0t3mtod" sourceRef="InclusiveGateway_142br6v" targetRef="ExclusiveGateway_1kvn1pz" />
+      <bpmn2:callActivity id="CallActivity_071yaf8" name="DoRollback&#10;TXC Allotted Resources&#10;" calledElement="DoCreateAllottedResourceTXCRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="DCARTXC_rollbackData" target="rollbackData" />
+          <camunda:in source="sdncVersion" target="sdncVersion" />
+          <camunda:out source="rolledBack" target="DCARTXC_rolledBack" />
+          <camunda:out source="rollbackError" target="DCARTXC_rollbackError" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1sl79hn</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0ne9n0g</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_1sl79hn" name="Yes" sourceRef="ExclusiveGateway_1kvn1pz" targetRef="CallActivity_071yaf8">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCARTXC_rollbackData") != null }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_0y158bb" name="Rollback success?" default="SequenceFlow_00by7l7">
+        <bpmn2:incoming>SequenceFlow_0ne9n0g</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_00by7l7</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_17cz98f</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0ne9n0g" sourceRef="CallActivity_071yaf8" targetRef="ExclusiveGateway_0y158bb" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1a7e8l1" name="Yes" sourceRef="ExclusiveGateway_05indeh" targetRef="DoRollbackService_CallActivity">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCRESI_rollbackData") != null }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_00by7l7" name="No" sourceRef="ExclusiveGateway_0y158bb" targetRef="InclusiveGateway_0m9f5ka" />
+      <bpmn2:sequenceFlow id="SequenceFlow_17cz98f" name="Yes" sourceRef="ExclusiveGateway_0y158bb" targetRef="ExclusiveGateway_05indeh">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCARTXC_rolledBack") == true }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:callActivity id="CallActivity_1cl4iu4" name="DoRollback&#10;VNF and Modules&#10;" calledElement="DoCreateVnfAndModulesRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="DCVAM_rollbackData" target="rollbackData" />
+          <camunda:out source="rolledBack" target="DCVAM_rolledBack" />
+          <camunda:out source="rollbackError" target="DCVAM_rollbackError" />
+          <camunda:in source="sdncVersion" target="sdncVersion" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_007p8k3</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1mpsdaj</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_1mpsdaj" sourceRef="CallActivity_1cl4iu4" targetRef="ExclusiveGateway_05dg1m1" />
+      <bpmn2:sequenceFlow id="SequenceFlow_007p8k3" name="Yes" sourceRef="ExclusiveGateway_14tl857" targetRef="CallActivity_1cl4iu4">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAM_rollbackData") != null }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="prepareCreateService_scriptTask" name="Prepare&#10;Create&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15odbkz</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0j6sjye</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.prepareCreateServiceInstance(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="setPONR_ScriptTask" name="set PONR">
+      <bpmn2:incoming>SequenceFlow_12ilko1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0afe2pg</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[#{execution.setVariable("PONR", true)}]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_12ilko1" sourceRef="IntermediateCatchEvent_4" targetRef="setPONR_ScriptTask" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0afe2pg" sourceRef="setPONR_ScriptTask" targetRef="postProcessAndCompletionRequest_ScriptTask" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0prlju0" name="GoTo StartService">
+      <bpmn2:incoming>SequenceFlow_1jbuf1t</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartService" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0j6sjye" sourceRef="prepareCreateService_scriptTask" targetRef="doCreateServiceInstance_CallActivity" />
+    <bpmn2:serviceTask id="updateInfraRequest" name="Update DB status to SUCCESS">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.db.endpoint", execution)}
+]]></camunda:inputParameter>
+            <camunda:inputParameter name="payload"><![CDATA[${execution.getVariable("CVRCS_setUpdateDbInstancePayload")}]]></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:inputOutput>
+          <camunda:connectorId>soap-http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0vj46ej</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0sjpja4</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:scriptTask id="ScriptTask_1qd3uwb" name="Post Process&#10;Create&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1ky2sv9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0vj46ej</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ky2sv9" sourceRef="doCreateServiceInstance_CallActivity" targetRef="ScriptTask_1qd3uwb" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0vj46ej" sourceRef="ScriptTask_1qd3uwb" targetRef="updateInfraRequest" />
+    <bpmn2:callActivity id="DecomposeService" name="Call Decompose Service" 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_00h6hmd</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17g05fd</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_0cdtchu" name="Prepare&#10;Decompose&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1eu60rt</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00h6hmd</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.prepareDecomposeService(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1eu60rt" sourceRef="IntermediateCatchEvent_3" targetRef="ScriptTask_0cdtchu" />
+    <bpmn2:sequenceFlow id="SequenceFlow_00h6hmd" sourceRef="ScriptTask_0cdtchu" targetRef="DecomposeService" />
+    <bpmn2:scriptTask id="ScriptTask_0vf9bei" name="Prepare to create Allotted Resources TXC" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0x9pjgm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1kgaq0j</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.prepareCreateAllottedResourceTXC(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_110rm9l" name="CreateAllottedResourcesTXC">
+      <bpmn2:outgoing>SequenceFlow_0x9pjgm</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="CreateAllottedResourcesTXC" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0x9pjgm" sourceRef="IntermediateCatchEvent_110rm9l" targetRef="ScriptTask_0vf9bei" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1oudh6l" name="Create TXC AR?" default="SequenceFlow_0ofjahh">
+      <bpmn2:incoming>SequenceFlow_1kgaq0j</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ofjahh</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_16qob4p</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_074qh5g">
+      <bpmn2:incoming>SequenceFlow_0ofjahh</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1cgpklo</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0o6tf9p</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ofjahh" name="No" sourceRef="ExclusiveGateway_1oudh6l" targetRef="ExclusiveGateway_074qh5g" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1kgaq0j" sourceRef="ScriptTask_0vf9bei" targetRef="ExclusiveGateway_1oudh6l" />
+    <bpmn2:sequenceFlow id="SequenceFlow_16qob4p" name="Yes" sourceRef="ExclusiveGateway_1oudh6l" targetRef="CallActivity_1ymzucb">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("createTXCAR") != null && execution.getVariable("createTXCAR") == true }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1i1nwfx" name="StartService">
+      <bpmn2:outgoing>SequenceFlow_15odbkz</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartService" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1as6hoa" name="GoToCreateAllottedResourcesTXC">
+      <bpmn2:incoming>SequenceFlow_1db0ri1</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="CreateAllottedResourcesTXC" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_15odbkz" sourceRef="IntermediateCatchEvent_1i1nwfx" targetRef="prepareCreateService_scriptTask" />
+    <bpmn2:callActivity id="Task_1l0uvof" name="Call Homing Service" camunda:modelerTemplate="homingBlock" calledElement="Homing">
+      <bpmn2:extensionElements>
+        <camunda:in source="true" target="isDebugLogEnabled" />
+        <camunda:in source="null" target="timeout" />
+        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="rollbackData" target="rollbackData" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:in source="subscriberInfo" target="subscriberInfo" />
+        <camunda:in source="homingService" target="homingService" />
+        <camunda:in source="customerLocation" target="customerLocation" />
+        <camunda:in source="cloudOwner" target="cloudOwner" />
+        <camunda:in source="cloudRegionId" target="cloudRegionId" />
+        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="homingModelIds" target="homingModelIds" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_11efpvh</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1jbuf1t</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1jbuf1t" sourceRef="Task_1l0uvof" targetRef="IntermediateThrowEvent_0prlju0" />
+    <bpmn2:sequenceFlow id="SequenceFlow_17g05fd" sourceRef="DecomposeService" targetRef="ScriptTask_0lpv2da" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_17pzn7m" name="CreateAllottedResourcesBRG">
+      <bpmn2:outgoing>SequenceFlow_15vce9o</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="CreateAllottedResourcesBRG" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0lt5ltv" name="GoToFinishProcess">
+      <bpmn2:incoming>SequenceFlow_0hwsm6n</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="FinishProcess" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1xwfgxs" name="Create BRG AR?" default="SequenceFlow_0loks1u">
+      <bpmn2:incoming>SequenceFlow_0yecpl2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0loks1u</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0b5ztoe</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0jqgskx">
+      <bpmn2:incoming>SequenceFlow_0loks1u</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0e9e6fo</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0hwsm6n</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0hwsm6n" sourceRef="ExclusiveGateway_0jqgskx" targetRef="IntermediateThrowEvent_0lt5ltv" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0loks1u" name="No" sourceRef="ExclusiveGateway_1xwfgxs" targetRef="ExclusiveGateway_0jqgskx" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0b5ztoe" name="Yes" sourceRef="ExclusiveGateway_1xwfgxs" targetRef="CallActivity_0xt1l8t">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("createBRGAR") != null && execution.getVariable("createBRGAR") == true }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:scriptTask id="ScriptTask_05epj75" name="Prepare to create Allotted Resources BRG" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15vce9o</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0yecpl2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.prepareCreateAllottedResourceBRG(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_15vce9o" sourceRef="IntermediateCatchEvent_17pzn7m" targetRef="ScriptTask_05epj75" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0yecpl2" sourceRef="ScriptTask_05epj75" targetRef="ExclusiveGateway_1xwfgxs" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_09vobbc" name="GoToCreateVG">
+      <bpmn2:incoming>SequenceFlow_0o6tf9p</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="CreateVG" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0o6tf9p" sourceRef="ExclusiveGateway_074qh5g" targetRef="IntermediateThrowEvent_09vobbc" />
+    <bpmn2:callActivity id="CallActivity_1els13v" name="DoCreate&#10;VNF and Modules&#10;" 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="serviceInstanceId" target="serviceInstanceId" />
+        <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:out source="rollbackData" target="DCVAM_rollbackData" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="vnfId" target="vnfId" />
+        <camunda:out source="vnfName" target="vnfName" />
+        <camunda:out source="vnfOutputParams" target="vnfOutputParams" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:in source="RegionOne_flavorList" target="RegionOne_flavorList" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0ws7fjn</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1mkdhw9</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_0n1k77c" name="Prepare to Create VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0p75l97</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ws7fjn</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService= new CreateVcpeResCustService()
+CreateVcpeResCustService.prepareVnfAndModulesCreate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1xsowxp" name="GoToCreateAllottedResourcesBRG">
+      <bpmn2:incoming>SequenceFlow_1ufio7c</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="CreateAllottedResourcesBRG" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_19a50jz" name="CreateVG">
+      <bpmn2:outgoing>SequenceFlow_0aza7xq</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="CreateVG" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0yae9sb" name="Create VNF?" default="SequenceFlow_13iuk3s">
+      <bpmn2:incoming>SequenceFlow_0aza7xq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0p75l97</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_13iuk3s</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1hlbkue">
+      <bpmn2:incoming>SequenceFlow_13iuk3s</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0k5vcuu</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ufio7c</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ws7fjn" sourceRef="ScriptTask_0n1k77c" targetRef="CallActivity_1els13v" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1mkdhw9" name="in 1702 scope only one VNF will be created - if needed" sourceRef="CallActivity_1els13v" targetRef="ScriptTask_18w0jud">
+      <bpmn2:documentation>in 1702 scope only one VNF will be created</bpmn2:documentation>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0p75l97" name="Yes" sourceRef="ExclusiveGateway_0yae9sb" targetRef="ScriptTask_0n1k77c">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CVRCS_VNFsCount") >0}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ufio7c" sourceRef="ExclusiveGateway_1hlbkue" targetRef="IntermediateThrowEvent_1xsowxp" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0aza7xq" sourceRef="IntermediateCatchEvent_19a50jz" targetRef="ExclusiveGateway_0yae9sb" />
+    <bpmn2:sequenceFlow id="SequenceFlow_13iuk3s" name="No" sourceRef="ExclusiveGateway_0yae9sb" targetRef="ExclusiveGateway_1hlbkue" />
+    <bpmn2:callActivity id="CallActivity_1ymzucb" name="Call Create TXC Allotted Resource&#10;" calledElement="DoCreateAllottedResourceTXC">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="failExists" target="failExists" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="parentServiceInstanceIdTXC" target="parentServiceInstanceId" />
+        <camunda:in source="serviceChainServiceInstanceId" target="serviceChainServiceInstanceId" />
+        <camunda:in source="allottedResourceIdTXC" target="allottedResourceId" />
+        <camunda:in source="allottedResourceModelInfoTXC" target="allottedResourceModelInfo" />
+        <camunda:in source="allottedResourceRoleTXC" target="allottedResourceRole" />
+        <camunda:out source="rollbackData" target="DCARTXC_rollbackData" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="allottedResourceId" target="DCARTXC_allottedResourceId" />
+        <camunda:out source="vni" target="vni" />
+        <camunda:out source="vgmuxBearerIP" target="vgmuxBearerIP" />
+        <camunda:out source="vgmuxLanIP" target="vgmuxLanIP" />
+        <camunda:in source="allottedResourceTypeTXC" target="allottedResourceType" />
+        <camunda:in source="brgWanMacAddress" target="brgWanMacAddress" />
+        <camunda:in source="globalCustomerId" target="globalCustomerId" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_16qob4p</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1cgpklo</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1cgpklo" sourceRef="CallActivity_1ymzucb" targetRef="ExclusiveGateway_074qh5g" />
+    <bpmn2:scriptTask id="ScriptTask_0lpv2da" name="PostProcess&#10;Decompose&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_17g05fd</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_11efpvh</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.processDecomposition(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_11efpvh" sourceRef="ScriptTask_0lpv2da" targetRef="Task_1l0uvof" />
+    <bpmn2:scriptTask id="ScriptTask_18w0jud" name="Post Process Create VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1mkdhw9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0k5vcuu</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService= new CreateVcpeResCustService()
+CreateVcpeResCustService.validateVnfCreate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0k5vcuu" sourceRef="ScriptTask_18w0jud" targetRef="ExclusiveGateway_1hlbkue" />
+    <bpmn2:callActivity id="CallActivity_0xt1l8t" name="Call Create BRG Allotted Resource&#10;" calledElement="DoCreateAllottedResourceBRG">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="failExists" target="failExists" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="parentServiceInstanceIdBRG" target="parentServiceInstanceId" />
+        <camunda:in source="allottedResourceIdBRG" target="allottedResourceId" />
+        <camunda:in source="allottedResourceModelInfoBRG" target="allottedResourceModelInfo" />
+        <camunda:in source="allottedResourceRoleBRG" target="allottedResourceRole" />
+        <camunda:out source="rollbackData" target="DCARBRG_rollbackData" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="allottedResourceId" target="DCARBRG_allottedResourceId" />
+        <camunda:out source="allottedResourceName" target="DCARBRG_allottedResourceName" />
+        <camunda:in source="allottedResourceTypeBRG" target="allottedResourceType" />
+        <camunda:in source="vni" target="vni" />
+        <camunda:in source="vgmuxBearerIP" target="vgmuxBearerIP" />
+        <camunda:in source="brgWanMacAddress" target="brgWanMacAddress" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+        <camunda:in source="globalCustomerId" target="globalCustomerId" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0b5ztoe</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0e9e6fo</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0e9e6fo" sourceRef="CallActivity_0xt1l8t" targetRef="ExclusiveGateway_0jqgskx" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1x88t9v" name="Await AAI Distribution&#10;&#10;">
+      <bpmn2:incoming>SequenceFlow_0sjpja4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1db0ri1</bpmn2:outgoing>
+      <bpmn2:timerEventDefinition>
+        <bpmn2:timeDuration xsi:type="bpmn2:tFormalExpression">${aaiDistDelay}</bpmn2:timeDuration>
+      </bpmn2:timerEventDefinition>
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0sjpja4" sourceRef="updateInfraRequest" targetRef="IntermediateCatchEvent_1x88t9v" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1db0ri1" sourceRef="IntermediateCatchEvent_1x88t9v" targetRef="IntermediateThrowEvent_1as6hoa" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVcpeResCustService">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createVCPE_startEvent">
+        <dc:Bounds x="87" y="215" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="80" y="256" width="51" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="276" y="193" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="123" y="233" />
+        <di:waypoint xsi:type="dc:Point" x="276" y="233" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="165" y="233" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_4" bpmnElement="callCompleteMsoProcess_CallActivity">
+        <dc:Bounds x="763" y="1432" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_80" bpmnElement="postProcessAndCompletionRequest_ScriptTask">
+        <dc:Bounds x="490" y="1432" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_61" targetElement="_BPMNShape_ScriptTask_127">
+        <di:waypoint xsi:type="dc:Point" x="376" y="233" />
+        <di:waypoint xsi:type="dc:Point" x="467" y="233" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="265" y="194" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="sendSyncAckResponse_ScriptTask">
+        <dc:Bounds x="467" y="193" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_80" targetElement="_BPMNShape_CallActivity_4">
+        <di:waypoint xsi:type="dc:Point" x="590" y="1472" />
+        <di:waypoint xsi:type="dc:Point" x="763" y="1472" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="677" y="1457" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="CreateVCPE_EndEvent">
+        <dc:Bounds x="1262" y="1452" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1269" y="1493" width="21" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_CallActivity_4" targetElement="_BPMNShape_ScriptTask_337">
+        <di:waypoint xsi:type="dc:Point" x="863" y="1472" />
+        <di:waypoint xsi:type="dc:Point" x="1071" y="1471" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="967" y="1457" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true">
+        <dc:Bounds x="1257" y="1702" width="409" height="232" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1">
+        <dc:Bounds x="1325" y="1807" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1343" y="1848" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="1400" y="1785" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1">
+        <dc:Bounds x="1553" y="1807" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1571" y="1848" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269">
+        <di:waypoint xsi:type="dc:Point" x="1361" y="1825" />
+        <di:waypoint xsi:type="dc:Point" x="1400" y="1825" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1389" y="1825" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219">
+        <di:waypoint xsi:type="dc:Point" x="1500" y="1825" />
+        <di:waypoint xsi:type="dc:Point" x="1533" y="1825" />
+        <di:waypoint xsi:type="dc:Point" x="1533" y="1825" />
+        <di:waypoint xsi:type="dc:Point" x="1553" y="1825" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1548" y="1825" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_75" bpmnElement="doCreateServiceInstance_CallActivity">
+        <dc:Bounds x="456" y="543" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_127">
+        <di:waypoint xsi:type="dc:Point" x="567" y="233" />
+        <di:waypoint xsi:type="dc:Point" x="719" y="233" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="643" y="218" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_337" bpmnElement="ScriptTask_2">
+        <dc:Bounds x="1071" y="1431" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_337" targetElement="_BPMNShape_EndEvent_177">
+        <di:waypoint xsi:type="dc:Point" x="1171" y="1470" />
+        <di:waypoint xsi:type="dc:Point" x="1262" y="1470" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1217" y="1455" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_35" bpmnElement="IntermediateCatchEvent_3">
+        <dc:Bounds x="87" y="370" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="80" y="406" width="50" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_36" bpmnElement="IntermediateCatchEvent_4">
+        <dc:Bounds x="60" y="1454" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="39" y="1490" width="78" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_49" bpmnElement="IntermediateThrowEvent_2">
+        <dc:Bounds x="719" y="215" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="697" y="256" width="79" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0s6hpty_di" bpmnElement="SubProcess_0s6hpty" isExpanded="true">
+        <dc:Bounds x="-266" y="1649" width="1482" height="1528" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1vwgs6p_di" bpmnElement="ExclusiveGateway_1vwgs6p" isMarkerVisible="true">
+        <dc:Bounds x="50" y="2971" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="38" y="3031" width="78" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1bwmffk_di" bpmnElement="StartEvent_1bwmffk">
+        <dc:Bounds x="-63" y="2979" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-69" y="3020" width="51" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0ydrtdx_di" bpmnElement="ExclusiveGateway_0ydrtdx" isMarkerVisible="true">
+        <dc:Bounds x="50" y="2888" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-15" y="2903" width="46" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1kvn1pz_di" bpmnElement="ExclusiveGateway_1kvn1pz" isMarkerVisible="true">
+        <dc:Bounds x="177" y="1821" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="110" y="1815" width="78" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0jw5tqa_di" bpmnElement="CallActivity_0jw5tqa">
+        <dc:Bounds x="1023" y="2945" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_04xute7_di" bpmnElement="EndEvent_04xute7">
+        <dc:Bounds x="1160" y="2967" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1133" y="3008" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0yk02h3_di" bpmnElement="ScriptTask_0yk02h3">
+        <dc:Bounds x="891" y="2945" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zpbskl_di" bpmnElement="SequenceFlow_0zpbskl">
+        <di:waypoint xsi:type="dc:Point" x="75" y="2971" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2938" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="81" y="2958" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dhf2js_di" bpmnElement="SequenceFlow_0dhf2js">
+        <di:waypoint xsi:type="dc:Point" x="100" y="2996" />
+        <di:waypoint xsi:type="dc:Point" x="734" y="2996" />
+        <di:waypoint xsi:type="dc:Point" x="734" y="2938" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="140" y="3001" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sx5llu_di" bpmnElement="SequenceFlow_1sx5llu">
+        <di:waypoint xsi:type="dc:Point" x="100" y="2913" />
+        <di:waypoint xsi:type="dc:Point" x="405" y="2913" />
+        <di:waypoint xsi:type="dc:Point" x="405" y="2913" />
+        <di:waypoint xsi:type="dc:Point" x="709" y="2913" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="419" y="2917" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_02o4yqx_di" bpmnElement="SequenceFlow_02o4yqx">
+        <di:waypoint xsi:type="dc:Point" x="75" y="2888" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2866" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="86" y="2871" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19mxskt_di" bpmnElement="SequenceFlow_19mxskt">
+        <di:waypoint xsi:type="dc:Point" x="202" y="1821" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="1725" />
+        <di:waypoint xsi:type="dc:Point" x="681" y="1725" />
+        <di:waypoint xsi:type="dc:Point" x="681" y="1941" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="392" y="1704" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1gacz45_di" bpmnElement="prepareCreateService_scriptTask">
+        <dc:Bounds x="250" y="543" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_11b4gmn_di" bpmnElement="setPONR_ScriptTask">
+        <dc:Bounds x="204" y="1432" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_12ilko1_di" bpmnElement="SequenceFlow_12ilko1">
+        <di:waypoint xsi:type="dc:Point" x="96" y="1472" />
+        <di:waypoint xsi:type="dc:Point" x="204" y="1472" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="150" y="1447" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0afe2pg_di" bpmnElement="SequenceFlow_0afe2pg">
+        <di:waypoint xsi:type="dc:Point" x="304" y="1472" />
+        <di:waypoint xsi:type="dc:Point" x="447" y="1472" />
+        <di:waypoint xsi:type="dc:Point" x="490" y="1472" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="376" y="1457" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0oh7wzu_di" bpmnElement="DoRollbackService_CallActivity">
+        <dc:Bounds x="976" y="1926" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_0foywso_di" bpmnElement="InclusiveGateway_0foywso">
+        <dc:Bounds x="709" y="2888" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="689" y="2943" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1f1hd3l_di" bpmnElement="SequenceFlow_1f1hd3l">
+        <di:waypoint xsi:type="dc:Point" x="1026" y="2006" />
+        <di:waypoint xsi:type="dc:Point" x="1026" y="2103" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="996" y="2055" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jg47xm_di" bpmnElement="SequenceFlow_0jg47xm">
+        <di:waypoint xsi:type="dc:Point" x="759" y="2913" />
+        <di:waypoint xsi:type="dc:Point" x="941" y="2913" />
+        <di:waypoint xsi:type="dc:Point" x="941" y="2945" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="805" y="2898" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0807ukc_di" bpmnElement="SequenceFlow_0807ukc">
+        <di:waypoint xsi:type="dc:Point" x="991" y="2985" />
+        <di:waypoint xsi:type="dc:Point" x="1023" y="2985" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="962" y="2970" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19yywk8_di" bpmnElement="SequenceFlow_19yywk8">
+        <di:waypoint xsi:type="dc:Point" x="1123" y="2985" />
+        <di:waypoint xsi:type="dc:Point" x="1160" y="2985" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1097" y="2970" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0prlju0_di" bpmnElement="IntermediateThrowEvent_0prlju0">
+        <dc:Bounds x="1056" y="370" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1025" y="411" width="97" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0j6sjye_di" bpmnElement="SequenceFlow_0j6sjye">
+        <di:waypoint xsi:type="dc:Point" x="350" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="456" y="583" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="403" y="568" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_05indeh_di" bpmnElement="ExclusiveGateway_05indeh" isMarkerVisible="true">
+        <dc:Bounds x="656" y="1941" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="718" y="1923" width="82" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0sezboq_di" bpmnElement="SequenceFlow_0sezboq">
+        <di:waypoint xsi:type="dc:Point" x="681" y="1991" />
+        <di:waypoint xsi:type="dc:Point" x="681" y="2128" />
+        <di:waypoint xsi:type="dc:Point" x="1001" y="2128" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="689" y="2045" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_16yhzej_di" bpmnElement="updateInfraRequest">
+        <dc:Bounds x="794" y="543" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qd3uwb_di" bpmnElement="ScriptTask_1qd3uwb">
+        <dc:Bounds x="623" y="543" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ky2sv9_di" bpmnElement="SequenceFlow_1ky2sv9">
+        <di:waypoint xsi:type="dc:Point" x="556" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="623" y="583" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="590" y="568" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vj46ej_di" bpmnElement="SequenceFlow_0vj46ej">
+        <di:waypoint xsi:type="dc:Point" x="723" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="794" y="583" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="759" y="568" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_17doerz_di" bpmnElement="ScriptTask_17doerz">
+        <dc:Bounds x="25" y="2786" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zq7i3q_di" bpmnElement="SequenceFlow_0zq7i3q">
+        <di:waypoint xsi:type="dc:Point" x="-27" y="2997" />
+        <di:waypoint xsi:type="dc:Point" x="20" y="2997" />
+        <di:waypoint xsi:type="dc:Point" x="20" y="2996" />
+        <di:waypoint xsi:type="dc:Point" x="50" y="2996" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-56" y="2998" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_0m9f5ka_di" bpmnElement="InclusiveGateway_0m9f5ka">
+        <dc:Bounds x="1001" y="2103" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="981" y="2158" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0wyub4x_di" bpmnElement="ScriptTask_0wyub4x">
+        <dc:Bounds x="684" y="2786" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rabks0_di" bpmnElement="SequenceFlow_1rabks0">
+        <di:waypoint xsi:type="dc:Point" x="734" y="2866" />
+        <di:waypoint xsi:type="dc:Point" x="734" y="2888" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="704" y="2877" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0w2alah_di" bpmnElement="DecomposeService">
+        <dc:Bounds x="467" y="348" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0cdtchu_di" bpmnElement="ScriptTask_0cdtchu">
+        <dc:Bounds x="276" y="348" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1eu60rt_di" bpmnElement="SequenceFlow_1eu60rt">
+        <di:waypoint xsi:type="dc:Point" x="123" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="276" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="200" y="373" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00h6hmd_di" bpmnElement="SequenceFlow_00h6hmd">
+        <di:waypoint xsi:type="dc:Point" x="376" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="467" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="422" y="373" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0vf9bei_di" bpmnElement="ScriptTask_0vf9bei">
+        <dc:Bounds x="184" y="801" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_110rm9l_di" bpmnElement="IntermediateCatchEvent_110rm9l">
+        <dc:Bounds x="83" y="823" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="57" y="859" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0x9pjgm_di" bpmnElement="SequenceFlow_0x9pjgm">
+        <di:waypoint xsi:type="dc:Point" x="119" y="841" />
+        <di:waypoint xsi:type="dc:Point" x="184" y="841" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="826" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_06gq6em_di" bpmnElement="ExclusiveGateway_06gq6em" isMarkerVisible="true">
+        <dc:Bounds x="50" y="2603" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-37" y="2618" width="80" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1bpuf2p_di" bpmnElement="CallActivity_1bpuf2p">
+        <dc:Bounds x="152" y="2518" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_131ozdf_di" bpmnElement="InclusiveGateway_131ozdf">
+        <dc:Bounds x="50" y="2431" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="30" y="2486" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0orpdrl_di" bpmnElement="SequenceFlow_0orpdrl">
+        <di:waypoint xsi:type="dc:Point" x="100" y="2628" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="2628" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="2598" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="141" y="2613" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t3cnnx_di" bpmnElement="SequenceFlow_1t3cnnx">
+        <di:waypoint xsi:type="dc:Point" x="202" y="2518" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="2481" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="172" y="2500" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ya1cr3_di" bpmnElement="SequenceFlow_0ya1cr3">
+        <di:waypoint xsi:type="dc:Point" x="75" y="2603" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2542" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2542" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2481" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="88" y="2508" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1oudh6l_di" bpmnElement="ExclusiveGateway_1oudh6l" isMarkerVisible="true">
+        <dc:Bounds x="332" y="816" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="399" y="829" width="76" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_074qh5g_di" bpmnElement="ExclusiveGateway_074qh5g" isMarkerVisible="true">
+        <dc:Bounds x="512" y="796" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="492" y="846" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ofjahh_di" bpmnElement="SequenceFlow_0ofjahh">
+        <di:waypoint xsi:type="dc:Point" x="357" y="866" />
+        <di:waypoint xsi:type="dc:Point" x="357" y="901" />
+        <di:waypoint xsi:type="dc:Point" x="537" y="901" />
+        <di:waypoint xsi:type="dc:Point" x="537" y="846" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="441" y="886" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kgaq0j_di" bpmnElement="SequenceFlow_1kgaq0j">
+        <di:waypoint xsi:type="dc:Point" x="284" y="841" />
+        <di:waypoint xsi:type="dc:Point" x="332" y="841" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="263" y="826" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_16qob4p_di" bpmnElement="SequenceFlow_16qob4p">
+        <di:waypoint xsi:type="dc:Point" x="357" y="816" />
+        <di:waypoint xsi:type="dc:Point" x="357" y="730" />
+        <di:waypoint xsi:type="dc:Point" x="400" y="730" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="362" y="763" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_14tl857_di" bpmnElement="ExclusiveGateway_14tl857" isMarkerVisible="true">
+        <dc:Bounds x="50" y="2282" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-24" y="2297" width="57" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_142br6v_di" bpmnElement="InclusiveGateway_142br6v">
+        <dc:Bounds x="50" y="2103" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="30" y="2158" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kpdu1j_di" bpmnElement="SequenceFlow_1kpdu1j">
+        <di:waypoint xsi:type="dc:Point" x="75" y="2282" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2153" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="83" y="2218" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1mjdcct_di" bpmnElement="ExclusiveGateway_1mjdcct" isMarkerVisible="true">
+        <dc:Bounds x="177" y="2431" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="178" y="2393" width="48" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sim44y_di" bpmnElement="SequenceFlow_1sim44y">
+        <di:waypoint xsi:type="dc:Point" x="177" y="2456" />
+        <di:waypoint xsi:type="dc:Point" x="100" y="2456" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="2431" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dr2fem_di" bpmnElement="SequenceFlow_0dr2fem">
+        <di:waypoint xsi:type="dc:Point" x="226" y="2457" />
+        <di:waypoint xsi:type="dc:Point" x="734" y="2457" />
+        <di:waypoint xsi:type="dc:Point" x="734" y="2695" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="316" y="2436" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_05dg1m1_di" bpmnElement="ExclusiveGateway_05dg1m1" isMarkerVisible="true">
+        <dc:Bounds x="177" y="2103" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="178" y="2064" width="48" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1quvahv_di" bpmnElement="SequenceFlow_1quvahv">
+        <di:waypoint xsi:type="dc:Point" x="177" y="2128" />
+        <di:waypoint xsi:type="dc:Point" x="100" y="2128" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="129" y="2103" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mbymcu_di" bpmnElement="SequenceFlow_1mbymcu">
+        <di:waypoint xsi:type="dc:Point" x="227" y="2128" />
+        <di:waypoint xsi:type="dc:Point" x="1001" y="2128" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="290" y="2097" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1i1nwfx_di" bpmnElement="IntermediateCatchEvent_1i1nwfx">
+        <dc:Bounds x="87" y="565" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="72" y="601" width="65" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1as6hoa_di" bpmnElement="IntermediateThrowEvent_1as6hoa">
+        <dc:Bounds x="1027" y="666" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1002" y="707" width="85" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_15odbkz_di" bpmnElement="SequenceFlow_15odbkz">
+        <di:waypoint xsi:type="dc:Point" x="123" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="250" y="583" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="187" y="558" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_07nu6s6_di" bpmnElement="Task_1l0uvof">
+        <dc:Bounds x="856" y="348" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jbuf1t_di" bpmnElement="SequenceFlow_1jbuf1t">
+        <di:waypoint xsi:type="dc:Point" x="956" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="1056" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="961" y="373" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17g05fd_di" bpmnElement="SequenceFlow_17g05fd">
+        <di:waypoint xsi:type="dc:Point" x="567" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="658" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="567.5" y="373" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0y7gtd9_di" bpmnElement="ExclusiveGateway_0y7gtd9" isMarkerVisible="true">
+        <dc:Bounds x="50" y="2695" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-39" y="2708" width="72" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ftzjjm_di" bpmnElement="SequenceFlow_0ftzjjm">
+        <di:waypoint xsi:type="dc:Point" x="75" y="2786" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="45" y="2766" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_12dakwh_di" bpmnElement="SequenceFlow_12dakwh">
+        <di:waypoint xsi:type="dc:Point" x="75" y="2695" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2653" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="83" y="2666" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_1xenadu_di" bpmnElement="InclusiveGateway_1xenadu">
+        <dc:Bounds x="709" y="2695" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="689" y="2750" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lv5ld6_di" bpmnElement="SequenceFlow_1lv5ld6">
+        <di:waypoint xsi:type="dc:Point" x="1026" y="2153" />
+        <di:waypoint xsi:type="dc:Point" x="1026" y="2720" />
+        <di:waypoint xsi:type="dc:Point" x="759" y="2720" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="996" y="2437" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dvsqpp_di" bpmnElement="SequenceFlow_0dvsqpp">
+        <di:waypoint xsi:type="dc:Point" x="734" y="2745" />
+        <di:waypoint xsi:type="dc:Point" x="734" y="2786" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="704" y="2766" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_09nn9a9_di" bpmnElement="SequenceFlow_09nn9a9">
+        <di:waypoint xsi:type="dc:Point" x="100" y="2720" />
+        <di:waypoint xsi:type="dc:Point" x="423" y="2720" />
+        <di:waypoint xsi:type="dc:Point" x="423" y="2720" />
+        <di:waypoint xsi:type="dc:Point" x="709" y="2720" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="144" y="2693" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_027lz43_di" bpmnElement="SequenceFlow_027lz43">
+        <di:waypoint xsi:type="dc:Point" x="75" y="2431" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2332" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="45" y="2372" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0t3mtod_di" bpmnElement="SequenceFlow_0t3mtod">
+        <di:waypoint xsi:type="dc:Point" x="75" y="2103" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="1846" />
+        <di:waypoint xsi:type="dc:Point" x="177" y="1846" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="45" y="1965" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_17pzn7m_di" bpmnElement="IntermediateCatchEvent_17pzn7m">
+        <dc:Bounds x="83" y="1259" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="57" y="1295" width="80" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0lt5ltv_di" bpmnElement="IntermediateThrowEvent_0lt5ltv">
+        <dc:Bounds x="670" y="1274" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="644" y="1321" width="87" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1xwfgxs_di" bpmnElement="ExclusiveGateway_1xwfgxs" isMarkerVisible="true">
+        <dc:Bounds x="312" y="1252" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="369" y="1271" width="70" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0jqgskx_di" bpmnElement="ExclusiveGateway_0jqgskx" isMarkerVisible="true">
+        <dc:Bounds x="535" y="1267" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="515" y="1317" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0hwsm6n_di" bpmnElement="SequenceFlow_0hwsm6n">
+        <di:waypoint xsi:type="dc:Point" x="585" y="1292" />
+        <di:waypoint xsi:type="dc:Point" x="628" y="1292" />
+        <di:waypoint xsi:type="dc:Point" x="628" y="1292" />
+        <di:waypoint xsi:type="dc:Point" x="670" y="1292" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="598" y="1292" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0loks1u_di" bpmnElement="SequenceFlow_0loks1u">
+        <di:waypoint xsi:type="dc:Point" x="337" y="1302" />
+        <di:waypoint xsi:type="dc:Point" x="337" y="1352" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="1352" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="1317" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="441" y="1337" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0b5ztoe_di" bpmnElement="SequenceFlow_0b5ztoe">
+        <di:waypoint xsi:type="dc:Point" x="337" y="1252" />
+        <di:waypoint xsi:type="dc:Point" x="337" y="1191" />
+        <di:waypoint xsi:type="dc:Point" x="395" y="1191" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="354" y="1216" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_05epj75_di" bpmnElement="ScriptTask_05epj75">
+        <dc:Bounds x="184" y="1237" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_15vce9o_di" bpmnElement="SequenceFlow_15vce9o">
+        <di:waypoint xsi:type="dc:Point" x="119" y="1277" />
+        <di:waypoint xsi:type="dc:Point" x="184" y="1277" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="151.5" y="1256" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yecpl2_di" bpmnElement="SequenceFlow_0yecpl2">
+        <di:waypoint xsi:type="dc:Point" x="284" y="1277" />
+        <di:waypoint xsi:type="dc:Point" x="312" y="1277" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="298" y="1256" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_09vobbc_di" bpmnElement="IntermediateThrowEvent_09vobbc">
+        <dc:Bounds x="670" y="803" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="651" y="844" width="85" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0o6tf9p_di" bpmnElement="SequenceFlow_0o6tf9p">
+        <di:waypoint xsi:type="dc:Point" x="562" y="821" />
+        <di:waypoint xsi:type="dc:Point" x="670" y="821" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="616" y="800" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1els13v_di" bpmnElement="CallActivity_1els13v">
+        <dc:Bounds x="586" y="942" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0n1k77c_di" bpmnElement="ScriptTask_0n1k77c">
+        <dc:Bounds x="413" y="942" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1xsowxp_di" bpmnElement="IntermediateThrowEvent_1xsowxp">
+        <dc:Bounds x="1027" y="1031" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1001" y="1072" width="87" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_19a50jz_di" bpmnElement="IntermediateCatchEvent_19a50jz">
+        <dc:Bounds x="77" y="1047" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="70" y="1083" width="48" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0yae9sb_di" bpmnElement="ExclusiveGateway_0yae9sb" isMarkerVisible="true">
+        <dc:Bounds x="326" y="1040" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="388" y="1059" width="67" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1hlbkue_di" bpmnElement="ExclusiveGateway_1hlbkue" isMarkerVisible="true">
+        <dc:Bounds x="892" y="1024" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="872" y="1079" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ws7fjn_di" bpmnElement="SequenceFlow_0ws7fjn">
+        <di:waypoint xsi:type="dc:Point" x="513" y="982" />
+        <di:waypoint xsi:type="dc:Point" x="586" y="982" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="504.5" y="961" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mkdhw9_di" bpmnElement="SequenceFlow_1mkdhw9">
+        <di:waypoint xsi:type="dc:Point" x="686" y="982" />
+        <di:waypoint xsi:type="dc:Point" x="749" y="982" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="888.7571646117599" y="923.4934735403681" width="84" height="48" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0p75l97_di" bpmnElement="SequenceFlow_0p75l97">
+        <di:waypoint xsi:type="dc:Point" x="351" y="1040" />
+        <di:waypoint xsi:type="dc:Point" x="351" y="982" />
+        <di:waypoint xsi:type="dc:Point" x="413" y="982" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="362" y="1015" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ufio7c_di" bpmnElement="SequenceFlow_1ufio7c">
+        <di:waypoint xsi:type="dc:Point" x="942" y="1049" />
+        <di:waypoint xsi:type="dc:Point" x="1027" y="1049" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="940.5" y="1024" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0aza7xq_di" bpmnElement="SequenceFlow_0aza7xq">
+        <di:waypoint xsi:type="dc:Point" x="113" y="1065" />
+        <di:waypoint xsi:type="dc:Point" x="326" y="1065" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="175.5" y="1040" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_13iuk3s_di" bpmnElement="SequenceFlow_13iuk3s">
+        <di:waypoint xsi:type="dc:Point" x="351" y="1091" />
+        <di:waypoint xsi:type="dc:Point" x="351" y="1114" />
+        <di:waypoint xsi:type="dc:Point" x="917" y="1114" />
+        <di:waypoint xsi:type="dc:Point" x="917" y="1075" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="596" y="1090" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_071yaf8_di" bpmnElement="CallActivity_071yaf8">
+        <dc:Bounds x="321" y="1806" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sl79hn_di" bpmnElement="SequenceFlow_1sl79hn">
+        <di:waypoint xsi:type="dc:Point" x="227" y="1846" />
+        <di:waypoint xsi:type="dc:Point" x="256" y="1846" />
+        <di:waypoint xsi:type="dc:Point" x="256" y="1846" />
+        <di:waypoint xsi:type="dc:Point" x="321" y="1846" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="271" y="1826" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0y158bb_di" bpmnElement="ExclusiveGateway_0y158bb" isMarkerVisible="true">
+        <dc:Bounds x="521" y="1821" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="522" y="1782" width="48" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ne9n0g_di" bpmnElement="SequenceFlow_0ne9n0g">
+        <di:waypoint xsi:type="dc:Point" x="421" y="1846" />
+        <di:waypoint xsi:type="dc:Point" x="521" y="1846" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="426" y="1825" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1a7e8l1_di" bpmnElement="SequenceFlow_1a7e8l1">
+        <di:waypoint xsi:type="dc:Point" x="706" y="1966" />
+        <di:waypoint xsi:type="dc:Point" x="976" y="1966" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="832" y="1945" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00by7l7_di" bpmnElement="SequenceFlow_00by7l7">
+        <di:waypoint xsi:type="dc:Point" x="546" y="1871" />
+        <di:waypoint xsi:type="dc:Point" x="546" y="2128" />
+        <di:waypoint xsi:type="dc:Point" x="1001" y="2128" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="554" y="1994" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17cz98f_di" bpmnElement="SequenceFlow_17cz98f">
+        <di:waypoint xsi:type="dc:Point" x="559" y="1858" />
+        <di:waypoint xsi:type="dc:Point" x="668" y="1954" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="614.8182269768699" y="1888.8734385586085" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1cl4iu4_di" bpmnElement="CallActivity_1cl4iu4">
+        <dc:Bounds x="152" y="2193" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mpsdaj_di" bpmnElement="SequenceFlow_1mpsdaj">
+        <di:waypoint xsi:type="dc:Point" x="202" y="2193" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="2153" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="172" y="2167" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_007p8k3_di" bpmnElement="SequenceFlow_007p8k3">
+        <di:waypoint xsi:type="dc:Point" x="100" y="2307" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="2307" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="2273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="142" y="2286" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1ymzucb_di" bpmnElement="CallActivity_1ymzucb">
+        <dc:Bounds x="400" y="690" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cgpklo_di" bpmnElement="SequenceFlow_1cgpklo">
+        <di:waypoint xsi:type="dc:Point" x="500" y="730" />
+        <di:waypoint xsi:type="dc:Point" x="538" y="730" />
+        <di:waypoint xsi:type="dc:Point" x="538" y="797" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="474" y="715" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0lpv2da_di" bpmnElement="ScriptTask_0lpv2da">
+        <dc:Bounds x="658" y="348" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_11efpvh_di" bpmnElement="SequenceFlow_11efpvh">
+        <di:waypoint xsi:type="dc:Point" x="758" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="856" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="807" y="367" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_18w0jud_di" bpmnElement="ScriptTask_18w0jud">
+        <dc:Bounds x="749" y="942" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0k5vcuu_di" bpmnElement="SequenceFlow_0k5vcuu">
+        <di:waypoint xsi:type="dc:Point" x="849" y="982" />
+        <di:waypoint xsi:type="dc:Point" x="917" y="982" />
+        <di:waypoint xsi:type="dc:Point" x="917" y="1024" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="883" y="961" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0xt1l8t_di" bpmnElement="CallActivity_0xt1l8t">
+        <dc:Bounds x="400" y="1151" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0e9e6fo_di" bpmnElement="SequenceFlow_0e9e6fo">
+        <di:waypoint xsi:type="dc:Point" x="500" y="1191" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="1191" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="1267" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="440" y="1166" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1x88t9v_di" bpmnElement="IntermediateCatchEvent_1x88t9v">
+        <dc:Bounds x="1027" y="565" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1018" y="530" width="54" height="48" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0sjpja4_di" bpmnElement="SequenceFlow_0sjpja4">
+        <di:waypoint xsi:type="dc:Point" x="894" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="1027" y="583" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="960.5" y="562" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1db0ri1_di" bpmnElement="SequenceFlow_1db0ri1">
+        <di:waypoint xsi:type="dc:Point" x="1045" y="601" />
+        <di:waypoint xsi:type="dc:Point" x="1045" y="666" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1060" y="627.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVcpeResCustServiceV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVcpeResCustServiceV2.bpmn
new file mode 100644
index 0000000..06c517c
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVcpeResCustServiceV2.bpmn
@@ -0,0 +1,1443 @@
+<?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.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="CreateVcpeResCustServiceV2" name="CreateVcpeResCustServiceV2" isExecutable="true">
+    <bpmn2:scriptTask id="sendSyncAckResponse_ScriptTask" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.sendSyncResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="sendSyncAckResponse_ScriptTask" targetRef="IntermediateThrowEvent_2" />
+    <bpmn2:startEvent id="createVCPE_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createVCPE_startEvent" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="sendSyncAckResponse_ScriptTask" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" name="vCPE-RESCUST">
+      <bpmn2:outgoing>SequenceFlow_1eu60rt</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_37" name="vCPE-RESCUST" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:scriptTask id="postProcessAndCompletionRequest_ScriptTask" name="Post Process &#38; Completion Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0afe2pg</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.postProcessResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="postProcessAndCompletionRequest_ScriptTask" targetRef="callCompleteMsoProcess_CallActivity" />
+    <bpmn2:callActivity id="callCompleteMsoProcess_CallActivity" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in variables="all" />
+        <camunda:out variables="all" />
+        <camunda:in source="CVRCS_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="mso-request-id" target="requestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <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_29</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="callCompleteMsoProcess_CallActivity" targetRef="ScriptTask_2" />
+    <bpmn2:scriptTask id="ScriptTask_2" name="Set Success Indicator" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[// The following variable is checked by the unit test
+execution.setVariable("CreateVcpeResCustServiceSuccessIndicator", true)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_2" targetRef="CreateVCPE_EndEvent" />
+    <bpmn2:endEvent id="CreateVCPE_EndEvent" name="End">
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_13" />
+    </bpmn2:endEvent>
+    <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1">
+        <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1">
+        <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" />
+      <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" />
+    </bpmn2:subProcess>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_4" name="FinishProcess">
+      <bpmn2:outgoing>SequenceFlow_12ilko1</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_39" name="FinishProcess" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:callActivity id="doCreateServiceInstance_CallActivity" name="Call Create &#10;ServiceInstance&#10;" calledElement="DoCreateServiceInstance">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:out source="rollbackData" target="DCRESI_rollbackData" />
+        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="failIfExists" target="failIfExists" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="serviceInputParams" target="serviceInputParams" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <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>
+    </bpmn2:callActivity>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_2" name="GoTovCPE-RESCUST">
+      <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_38" name="vCPE-RESCUST" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:subProcess id="SubProcess_0s6hpty" name="Subprocess For Exception / FalloutHandler" triggeredByEvent="true">
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_1vwgs6p" name="Is Rollback On?" default="SequenceFlow_0dhf2js">
+        <bpmn2:incoming>SequenceFlow_0zq7i3q</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0zpbskl</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_0dhf2js</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:startEvent id="StartEvent_1bwmffk" name="Fault Start">
+        <bpmn2:outgoing>SequenceFlow_0zq7i3q</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_0ydrtdx" name="isPONR?" default="SequenceFlow_02o4yqx">
+        <bpmn2:incoming>SequenceFlow_0zpbskl</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1sx5llu</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_02o4yqx</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_1kvn1pz" name="is AR_TXC Ok?" default="SequenceFlow_19mxskt">
+        <bpmn2:incoming>SequenceFlow_0t3mtod</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_19mxskt</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_1sl79hn</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:callActivity id="CallActivity_0jw5tqa" name="Call FalloutHandlerV1" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in source="CVRCS_falloutRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="msoRequestId" target="mso-request-id" />
+          <camunda:in source="serviceInstanceId" 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_0807ukc</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_19yywk8</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:endEvent id="EndEvent_04xute7">
+        <bpmn2:incoming>SequenceFlow_19yywk8</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_0yk02h3" name="Prepare FalloutHandler" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0jg47xm</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0807ukc</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.prepareFalloutRequest(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_0zpbskl" name="Yes" sourceRef="ExclusiveGateway_1vwgs6p" targetRef="ExclusiveGateway_0ydrtdx">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("disableRollback") != true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_0dhf2js" name="No" sourceRef="ExclusiveGateway_1vwgs6p" targetRef="InclusiveGateway_0foywso" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1sx5llu" name="Yes" sourceRef="ExclusiveGateway_0ydrtdx" targetRef="InclusiveGateway_0foywso">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("PONR") == true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_02o4yqx" name="No" sourceRef="ExclusiveGateway_0ydrtdx" targetRef="ScriptTask_17doerz" />
+      <bpmn2:sequenceFlow id="SequenceFlow_19mxskt" name="No" sourceRef="ExclusiveGateway_1kvn1pz" targetRef="ExclusiveGateway_05indeh" />
+      <bpmn2:callActivity id="DoRollbackService_CallActivity" name="DoRollback&#10;Service&#10;" calledElement="DoCreateServiceInstanceRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="DCRESI_rollbackData" target="rollbackData" />
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:out source="rolledBack" target="DCRESI_rolledBack" />
+          <camunda:out source="rollbackError" target="DCRESI_rollbackError" />
+          <camunda:in source="sdncVersion" target="sdncVersion" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1a7e8l1</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1f1hd3l</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:inclusiveGateway id="InclusiveGateway_0foywso">
+        <bpmn2:incoming>SequenceFlow_1sx5llu</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_0dhf2js</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1rabks0</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0jg47xm</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1f1hd3l" sourceRef="DoRollbackService_CallActivity" targetRef="InclusiveGateway_0m9f5ka" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0jg47xm" sourceRef="InclusiveGateway_0foywso" targetRef="ScriptTask_0yk02h3" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0807ukc" sourceRef="ScriptTask_0yk02h3" targetRef="CallActivity_0jw5tqa" />
+      <bpmn2:sequenceFlow id="SequenceFlow_19yywk8" sourceRef="CallActivity_0jw5tqa" targetRef="EndEvent_04xute7" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_05indeh" name="Service Rollback present?" default="SequenceFlow_0sezboq">
+        <bpmn2:incoming>SequenceFlow_19mxskt</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_17cz98f</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0sezboq</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_1a7e8l1</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0sezboq" name="No" sourceRef="ExclusiveGateway_05indeh" targetRef="InclusiveGateway_0m9f5ka" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0zq7i3q" name="" sourceRef="StartEvent_1bwmffk" targetRef="ExclusiveGateway_1vwgs6p" />
+      <bpmn2:inclusiveGateway id="InclusiveGateway_0m9f5ka">
+        <bpmn2:incoming>SequenceFlow_1f1hd3l</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_0sezboq</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1mbymcu</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_00by7l7</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1lv5ld6</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:scriptTask id="ScriptTask_17doerz" name="Pre Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_02o4yqx</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0ftzjjm</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService= new CreateVcpeResCustService()
+CreateVcpeResCustService.preProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:scriptTask id="ScriptTask_0wyub4x" name="Post Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0dvsqpp</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1rabks0</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService= new CreateVcpeResCustService()
+CreateVcpeResCustService.postProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1rabks0" sourceRef="ScriptTask_0wyub4x" targetRef="InclusiveGateway_0foywso" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_06gq6em" name="is AR_BRG Ok?" default="SequenceFlow_0ya1cr3">
+        <bpmn2:incoming>SequenceFlow_12dakwh</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0orpdrl</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_0ya1cr3</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:callActivity id="CallActivity_1bpuf2p" name="DoRollback&#10;BRG Allotted Resources&#10;" calledElement="DoCreateAllottedResourceBRGRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="DCARBRG_rollbackData" target="rollbackData" />
+          <camunda:in source="sdncVersion" target="sdncVersion" />
+          <camunda:out source="rolledBack" target="DCARBRG_rolledBack" />
+          <camunda:out source="rollbackError" target="DCARBRG_rollbackError" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_0orpdrl</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1t3cnnx</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:inclusiveGateway id="InclusiveGateway_131ozdf">
+        <bpmn2:incoming>SequenceFlow_0ya1cr3</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1sim44y</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_027lz43</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0orpdrl" name="Yes" sourceRef="ExclusiveGateway_06gq6em" targetRef="CallActivity_1bpuf2p">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCARBRG_rollbackData") != null }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_1t3cnnx" sourceRef="CallActivity_1bpuf2p" targetRef="ExclusiveGateway_1mjdcct" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0ya1cr3" name="No" sourceRef="ExclusiveGateway_06gq6em" targetRef="InclusiveGateway_131ozdf" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_14tl857" name="is VNF Ok?" default="SequenceFlow_1kpdu1j">
+        <bpmn2:incoming>SequenceFlow_027lz43</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1kpdu1j</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_007p8k3</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:inclusiveGateway id="InclusiveGateway_142br6v">
+        <bpmn2:incoming>SequenceFlow_1kpdu1j</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1quvahv</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0t3mtod</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1kpdu1j" name="No" sourceRef="ExclusiveGateway_14tl857" targetRef="InclusiveGateway_142br6v" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_1mjdcct" name="Rollback success?" default="SequenceFlow_0dr2fem">
+        <bpmn2:incoming>SequenceFlow_1t3cnnx</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1sim44y</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_0dr2fem</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1sim44y" name="Yes" sourceRef="ExclusiveGateway_1mjdcct" targetRef="InclusiveGateway_131ozdf">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCARBRG_rolledBack") == true }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_0dr2fem" name="No" sourceRef="ExclusiveGateway_1mjdcct" targetRef="InclusiveGateway_1xenadu" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_05dg1m1" name="Rollback success?" default="SequenceFlow_1mbymcu">
+        <bpmn2:incoming>SequenceFlow_1mpsdaj</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1quvahv</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_1mbymcu</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1quvahv" name="Yes" sourceRef="ExclusiveGateway_05dg1m1" targetRef="InclusiveGateway_142br6v">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCVAM_rolledBack") ==true }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_1mbymcu" name="No" sourceRef="ExclusiveGateway_05dg1m1" targetRef="InclusiveGateway_0m9f5ka" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_0y7gtd9" name="rollback failed?" default="SequenceFlow_12dakwh">
+        <bpmn2:incoming>SequenceFlow_0ftzjjm</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_12dakwh</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_09nn9a9</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0ftzjjm" sourceRef="ScriptTask_17doerz" targetRef="ExclusiveGateway_0y7gtd9" />
+      <bpmn2:sequenceFlow id="SequenceFlow_12dakwh" name="No" sourceRef="ExclusiveGateway_0y7gtd9" targetRef="ExclusiveGateway_06gq6em" />
+      <bpmn2:inclusiveGateway id="InclusiveGateway_1xenadu">
+        <bpmn2:incoming>SequenceFlow_1lv5ld6</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_09nn9a9</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_0dr2fem</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0dvsqpp</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1lv5ld6" sourceRef="InclusiveGateway_0m9f5ka" targetRef="InclusiveGateway_1xenadu" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0dvsqpp" sourceRef="InclusiveGateway_1xenadu" targetRef="ScriptTask_0wyub4x" />
+      <bpmn2:sequenceFlow id="SequenceFlow_09nn9a9" name="Yes" sourceRef="ExclusiveGateway_0y7gtd9" targetRef="InclusiveGateway_1xenadu">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rolledBack") != null && execution.getVariable("rolledBack") == false}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_027lz43" sourceRef="InclusiveGateway_131ozdf" targetRef="ExclusiveGateway_14tl857" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0t3mtod" sourceRef="InclusiveGateway_142br6v" targetRef="ExclusiveGateway_1kvn1pz" />
+      <bpmn2:callActivity id="CallActivity_071yaf8" name="DoRollback&#10;TXC Allotted Resources&#10;" calledElement="DoCreateAllottedResourceTXCRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="DCARTXC_rollbackData" target="rollbackData" />
+          <camunda:in source="sdncVersion" target="sdncVersion" />
+          <camunda:out source="rolledBack" target="DCARTXC_rolledBack" />
+          <camunda:out source="rollbackError" target="DCARTXC_rollbackError" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1sl79hn</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0ne9n0g</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_1sl79hn" name="Yes" sourceRef="ExclusiveGateway_1kvn1pz" targetRef="CallActivity_071yaf8">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCARTXC_rollbackData") != null }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_0y158bb" name="Rollback success?" default="SequenceFlow_00by7l7">
+        <bpmn2:incoming>SequenceFlow_0ne9n0g</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_00by7l7</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_17cz98f</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0ne9n0g" sourceRef="CallActivity_071yaf8" targetRef="ExclusiveGateway_0y158bb" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1a7e8l1" name="Yes" sourceRef="ExclusiveGateway_05indeh" targetRef="DoRollbackService_CallActivity">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCRESI_rollbackData") != null }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_00by7l7" name="No" sourceRef="ExclusiveGateway_0y158bb" targetRef="InclusiveGateway_0m9f5ka" />
+      <bpmn2:sequenceFlow id="SequenceFlow_17cz98f" name="Yes" sourceRef="ExclusiveGateway_0y158bb" targetRef="ExclusiveGateway_05indeh">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCARTXC_rolledBack") == true }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:callActivity id="CallActivity_1cl4iu4" name="DoRollback&#10;VNF and Modules&#10;" calledElement="DoCreateVnfAndModulesRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="DCVAM_rollbackData" target="rollbackData" />
+          <camunda:out source="rolledBack" target="DCVAM_rolledBack" />
+          <camunda:out source="rollbackError" target="DCVAM_rollbackError" />
+          <camunda:in source="sdncVersion" target="sdncVersion" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_007p8k3</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1mpsdaj</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_1mpsdaj" sourceRef="CallActivity_1cl4iu4" targetRef="ExclusiveGateway_05dg1m1" />
+      <bpmn2:sequenceFlow id="SequenceFlow_007p8k3" name="Yes" sourceRef="ExclusiveGateway_14tl857" targetRef="CallActivity_1cl4iu4">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAM_rollbackData") != null }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="prepareCreateService_scriptTask" name="Prepare&#10;Create&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15odbkz</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0j6sjye</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.prepareCreateServiceInstance(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="setPONR_ScriptTask" name="set PONR">
+      <bpmn2:incoming>SequenceFlow_12ilko1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0afe2pg</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[#{execution.setVariable("PONR", true)}]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_12ilko1" sourceRef="IntermediateCatchEvent_4" targetRef="setPONR_ScriptTask" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0afe2pg" sourceRef="setPONR_ScriptTask" targetRef="postProcessAndCompletionRequest_ScriptTask" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0prlju0" name="GoTo StartService">
+      <bpmn2:incoming>SequenceFlow_1jbuf1t</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartService" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0j6sjye" sourceRef="prepareCreateService_scriptTask" targetRef="doCreateServiceInstance_CallActivity" />
+    <bpmn2:serviceTask id="updateInfraRequest" name="Update DB status to SUCCESS">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${URN_mso_adapters_db_endpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="payload"><![CDATA[${execution.getVariable("CVRCS_setUpdateDbInstancePayload")}]]></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:inputOutput>
+          <camunda:connectorId>soap-http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0vj46ej</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0sjpja4</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:scriptTask id="ScriptTask_1qd3uwb" name="Post Process&#10;Create&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1ky2sv9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0vj46ej</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.postProcessServiceInstanceCreate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ky2sv9" sourceRef="doCreateServiceInstance_CallActivity" targetRef="ScriptTask_1qd3uwb" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0vj46ej" sourceRef="ScriptTask_1qd3uwb" targetRef="updateInfraRequest" />
+    <bpmn2:callActivity id="DecomposeService" name="Call Decompose Service" 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_00h6hmd</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17g05fd</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_0cdtchu" name="Prepare&#10;Decompose&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1eu60rt</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00h6hmd</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.prepareDecomposeService(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1eu60rt" sourceRef="IntermediateCatchEvent_3" targetRef="ScriptTask_0cdtchu" />
+    <bpmn2:sequenceFlow id="SequenceFlow_00h6hmd" sourceRef="ScriptTask_0cdtchu" targetRef="DecomposeService" />
+    <bpmn2:scriptTask id="ScriptTask_0vf9bei" name="Prepare to create Allotted Resources TXC" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0x9pjgm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1kgaq0j</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.prepareCreateAllottedResourceTXC(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_110rm9l" name="CreateAllottedResourcesTXC">
+      <bpmn2:outgoing>SequenceFlow_0x9pjgm</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="CreateAllottedResourcesTXC" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0x9pjgm" sourceRef="IntermediateCatchEvent_110rm9l" targetRef="ScriptTask_0vf9bei" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1oudh6l" name="Create TXC AR?" default="SequenceFlow_0ofjahh">
+      <bpmn2:incoming>SequenceFlow_1kgaq0j</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ofjahh</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_16qob4p</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_074qh5g">
+      <bpmn2:incoming>SequenceFlow_0ofjahh</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1cgpklo</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0o6tf9p</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ofjahh" name="No" sourceRef="ExclusiveGateway_1oudh6l" targetRef="ExclusiveGateway_074qh5g" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1kgaq0j" sourceRef="ScriptTask_0vf9bei" targetRef="ExclusiveGateway_1oudh6l" />
+    <bpmn2:sequenceFlow id="SequenceFlow_16qob4p" name="Yes" sourceRef="ExclusiveGateway_1oudh6l" targetRef="CallActivity_1ymzucb">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("createTXCAR") != null && execution.getVariable("createTXCAR") == true }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1i1nwfx" name="StartService">
+      <bpmn2:outgoing>SequenceFlow_15odbkz</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartService" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1as6hoa" name="GoToCreateAllottedResourcesTXC">
+      <bpmn2:incoming>SequenceFlow_1db0ri1</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="CreateAllottedResourcesTXC" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_15odbkz" sourceRef="IntermediateCatchEvent_1i1nwfx" targetRef="prepareCreateService_scriptTask" />
+    <bpmn2:callActivity id="Task_1l0uvof" name="Call Homing Service" camunda:modelerTemplate="homingBlock" calledElement="Homing">
+      <bpmn2:extensionElements>
+        <camunda:in source="true" target="isDebugLogEnabled" />
+        <camunda:in source="null" target="timeout" />
+        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="rollbackData" target="rollbackData" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:in source="subscriberInfo" target="subscriberInfo" />
+        <camunda:in source="homingService" target="homingService" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_11efpvh</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1jbuf1t</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1jbuf1t" sourceRef="Task_1l0uvof" targetRef="IntermediateThrowEvent_0prlju0" />
+    <bpmn2:sequenceFlow id="SequenceFlow_17g05fd" sourceRef="DecomposeService" targetRef="ScriptTask_0lpv2da" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_17pzn7m" name="CreateAllottedResourcesBRG">
+      <bpmn2:outgoing>SequenceFlow_0gj4vud</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="CreateAllottedResourcesBRG" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0lt5ltv" name="GoToFinishProcess">
+      <bpmn2:incoming>SequenceFlow_0clhseq</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="FinishProcess" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_09vobbc" name="GoToCreateVG">
+      <bpmn2:incoming>SequenceFlow_0o6tf9p</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="CreateVG" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0o6tf9p" sourceRef="ExclusiveGateway_074qh5g" targetRef="IntermediateThrowEvent_09vobbc" />
+    <bpmn2:callActivity id="CallActivity_1els13v" name="DoCreate&#10;VNF and Modules&#10;" 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="serviceInstanceId" target="serviceInstanceId" />
+        <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:out source="rollbackData" target="DCVAM_rollbackData" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="vnfId" target="vnfId" />
+        <camunda:out source="vnfName" target="vnfName" />
+        <camunda:out source="vnfOutputParams" target="vnfOutputParams" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceDecomposition" target="serviceDecomposition" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0ws7fjn</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1mkdhw9</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_0n1k77c" name="Prepare to Create VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0p75l97</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ws7fjn</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService= new CreateVcpeResCustService()
+CreateVcpeResCustService.prepareVnfAndModulesCreate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1xsowxp" name="GoToCreateAllottedResourcesBRG">
+      <bpmn2:incoming>SequenceFlow_1ufio7c</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="CreateAllottedResourcesBRG" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_19a50jz" name="CreateVG">
+      <bpmn2:outgoing>SequenceFlow_0aza7xq</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="CreateVG" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0yae9sb" name="Create VNF?" default="SequenceFlow_13iuk3s">
+      <bpmn2:incoming>SequenceFlow_0aza7xq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0p75l97</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_13iuk3s</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1hlbkue">
+      <bpmn2:incoming>SequenceFlow_13iuk3s</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0k5vcuu</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ufio7c</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ws7fjn" sourceRef="ScriptTask_0n1k77c" targetRef="CallActivity_1els13v" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1mkdhw9" name="in 1702 scope only one VNF will be created - if needed" sourceRef="CallActivity_1els13v" targetRef="ScriptTask_18w0jud">
+      <bpmn2:documentation>in 1702 scope only one VNF will be created</bpmn2:documentation>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0p75l97" name="Yes" sourceRef="ExclusiveGateway_0yae9sb" targetRef="ScriptTask_0n1k77c">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CVRCS_VNFsCount") >0}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ufio7c" sourceRef="ExclusiveGateway_1hlbkue" targetRef="IntermediateThrowEvent_1xsowxp" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0aza7xq" sourceRef="IntermediateCatchEvent_19a50jz" targetRef="ExclusiveGateway_0yae9sb" />
+    <bpmn2:sequenceFlow id="SequenceFlow_13iuk3s" name="No" sourceRef="ExclusiveGateway_0yae9sb" targetRef="ExclusiveGateway_1hlbkue" />
+    <bpmn2:callActivity id="CallActivity_1ymzucb" name="Call Create TXC Allotted Resource&#10;" calledElement="DoCreateAllottedResourceTXC">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="failExists" target="failExists" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="parentServiceInstanceIdTXC" target="parentServiceInstanceId" />
+        <camunda:in source="serviceChainServiceInstanceId" target="serviceChainServiceInstanceId" />
+        <camunda:in source="allottedResourceIdTXC" target="allottedResourceId" />
+        <camunda:in source="allottedResourceModelInfoTXC" target="allottedResourceModelInfo" />
+        <camunda:in source="allottedResourceRoleTXC" target="allottedResourceRole" />
+        <camunda:out source="rollbackData" target="DCARTXC_rollbackData" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="allottedResourceId" target="DCARTXC_allottedResourceId" />
+        <camunda:out source="vni" target="vni" />
+        <camunda:out source="vgmuxBearerIP" target="vgmuxBearerIP" />
+        <camunda:out source="vgmuxLanIP" target="vgmuxLanIP" />
+        <camunda:in source="allottedResourceTypeTXC" target="allottedResourceType" />
+        <camunda:in source="brgWanMacAddress" target="brgWanMacAddress" />
+        <camunda:in source="globalCustomerId" target="globalCustomerId" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_16qob4p</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1cgpklo</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1cgpklo" sourceRef="CallActivity_1ymzucb" targetRef="ExclusiveGateway_074qh5g" />
+    <bpmn2:scriptTask id="ScriptTask_0lpv2da" name="PostProcess&#10;Decompose&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_17g05fd</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_11efpvh</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService = new CreateVcpeResCustService()
+CreateVcpeResCustService.processDecomposition(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_11efpvh" sourceRef="ScriptTask_0lpv2da" targetRef="Task_1l0uvof" />
+    <bpmn2:scriptTask id="ScriptTask_18w0jud" name="Post Process Create VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1mkdhw9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0k5vcuu</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def CreateVcpeResCustService= new CreateVcpeResCustService()
+CreateVcpeResCustService.validateVnfCreate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0k5vcuu" sourceRef="ScriptTask_18w0jud" targetRef="ExclusiveGateway_1hlbkue" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1x88t9v" name="Await AAI Distribution&#10;&#10;">
+      <bpmn2:incoming>SequenceFlow_0sjpja4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1db0ri1</bpmn2:outgoing>
+      <bpmn2:timerEventDefinition>
+        <bpmn2:timeDuration xsi:type="bpmn2:tFormalExpression">${aaiDistDelay}</bpmn2:timeDuration>
+      </bpmn2:timerEventDefinition>
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0sjpja4" sourceRef="updateInfraRequest" targetRef="IntermediateCatchEvent_1x88t9v" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1db0ri1" sourceRef="IntermediateCatchEvent_1x88t9v" targetRef="IntermediateThrowEvent_1as6hoa" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0gj4vud" sourceRef="IntermediateCatchEvent_17pzn7m" targetRef="Task_14l19kv" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0clhseq" sourceRef="Task_14l19kv" targetRef="IntermediateThrowEvent_0lt5ltv" />
+    <bpmn2:callActivity id="Task_14l19kv" name="Create And Activate Pnf Resource" calledElement="CreateAndActivatePnfResource">
+      <bpmn2:extensionElements>
+        <camunda:in source="timeoutForPnfEntryNotification" target="timeoutForPnfEntryNotification" />
+        <camunda:in source="correlationId" target="correlationId" />
+        <camunda:in businessKey="#{execution.processBusinessKey}" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0gj4vud</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0clhseq</bpmn2:outgoing>
+    </bpmn2: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" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVcpeResCustServiceV2">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createVCPE_startEvent">
+        <dc:Bounds x="87" y="215" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="80" y="256" width="51" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="276" y="193" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="123" y="233" />
+        <di:waypoint xsi:type="dc:Point" x="276" y="233" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="165" y="233" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_4" bpmnElement="callCompleteMsoProcess_CallActivity">
+        <dc:Bounds x="763" y="1432" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_80" bpmnElement="postProcessAndCompletionRequest_ScriptTask">
+        <dc:Bounds x="490" y="1432" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_61" targetElement="_BPMNShape_ScriptTask_127">
+        <di:waypoint xsi:type="dc:Point" x="376" y="233" />
+        <di:waypoint xsi:type="dc:Point" x="467" y="233" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="265" y="194" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="sendSyncAckResponse_ScriptTask">
+        <dc:Bounds x="467" y="193" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_80" targetElement="_BPMNShape_CallActivity_4">
+        <di:waypoint xsi:type="dc:Point" x="590" y="1472" />
+        <di:waypoint xsi:type="dc:Point" x="763" y="1472" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="677" y="1457" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="CreateVCPE_EndEvent">
+        <dc:Bounds x="1262" y="1452" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1269" y="1493" width="21" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_CallActivity_4" targetElement="_BPMNShape_ScriptTask_337">
+        <di:waypoint xsi:type="dc:Point" x="863" y="1472" />
+        <di:waypoint xsi:type="dc:Point" x="1071" y="1471" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="967" y="1457" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true">
+        <dc:Bounds x="1257" y="1702" width="409" height="232" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1">
+        <dc:Bounds x="1325" y="1807" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1343" y="1848" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="1400" y="1785" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1">
+        <dc:Bounds x="1553" y="1807" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1571" y="1848" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269">
+        <di:waypoint xsi:type="dc:Point" x="1361" y="1825" />
+        <di:waypoint xsi:type="dc:Point" x="1400" y="1825" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1389" y="1825" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219">
+        <di:waypoint xsi:type="dc:Point" x="1500" y="1825" />
+        <di:waypoint xsi:type="dc:Point" x="1533" y="1825" />
+        <di:waypoint xsi:type="dc:Point" x="1533" y="1825" />
+        <di:waypoint xsi:type="dc:Point" x="1553" y="1825" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1548" y="1825" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_75" bpmnElement="doCreateServiceInstance_CallActivity">
+        <dc:Bounds x="456" y="543" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_127">
+        <di:waypoint xsi:type="dc:Point" x="567" y="233" />
+        <di:waypoint xsi:type="dc:Point" x="719" y="233" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="643" y="218" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_337" bpmnElement="ScriptTask_2">
+        <dc:Bounds x="1071" y="1431" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_337" targetElement="_BPMNShape_EndEvent_177">
+        <di:waypoint xsi:type="dc:Point" x="1171" y="1470" />
+        <di:waypoint xsi:type="dc:Point" x="1262" y="1470" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1217" y="1455" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_35" bpmnElement="IntermediateCatchEvent_3">
+        <dc:Bounds x="87" y="370" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="80" y="406" width="50" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_36" bpmnElement="IntermediateCatchEvent_4">
+        <dc:Bounds x="60" y="1454" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="39" y="1490" width="78" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_49" bpmnElement="IntermediateThrowEvent_2">
+        <dc:Bounds x="719" y="215" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="697" y="256" width="79" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0s6hpty_di" bpmnElement="SubProcess_0s6hpty" isExpanded="true">
+        <dc:Bounds x="-266" y="1649" width="1482" height="1528" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1vwgs6p_di" bpmnElement="ExclusiveGateway_1vwgs6p" isMarkerVisible="true">
+        <dc:Bounds x="50" y="2971" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="38" y="3031" width="78" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1bwmffk_di" bpmnElement="StartEvent_1bwmffk">
+        <dc:Bounds x="-63" y="2979" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-69" y="3020" width="51" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0ydrtdx_di" bpmnElement="ExclusiveGateway_0ydrtdx" isMarkerVisible="true">
+        <dc:Bounds x="50" y="2888" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-15" y="2903" width="46" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1kvn1pz_di" bpmnElement="ExclusiveGateway_1kvn1pz" isMarkerVisible="true">
+        <dc:Bounds x="177" y="1821" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="110" y="1815" width="78" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0jw5tqa_di" bpmnElement="CallActivity_0jw5tqa">
+        <dc:Bounds x="1023" y="2945" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_04xute7_di" bpmnElement="EndEvent_04xute7">
+        <dc:Bounds x="1160" y="2967" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1133" y="3008" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0yk02h3_di" bpmnElement="ScriptTask_0yk02h3">
+        <dc:Bounds x="891" y="2945" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zpbskl_di" bpmnElement="SequenceFlow_0zpbskl">
+        <di:waypoint xsi:type="dc:Point" x="75" y="2971" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2938" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="81" y="2958" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dhf2js_di" bpmnElement="SequenceFlow_0dhf2js">
+        <di:waypoint xsi:type="dc:Point" x="100" y="2996" />
+        <di:waypoint xsi:type="dc:Point" x="734" y="2996" />
+        <di:waypoint xsi:type="dc:Point" x="734" y="2938" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="140" y="3001" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sx5llu_di" bpmnElement="SequenceFlow_1sx5llu">
+        <di:waypoint xsi:type="dc:Point" x="100" y="2913" />
+        <di:waypoint xsi:type="dc:Point" x="405" y="2913" />
+        <di:waypoint xsi:type="dc:Point" x="405" y="2913" />
+        <di:waypoint xsi:type="dc:Point" x="709" y="2913" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="419" y="2917" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_02o4yqx_di" bpmnElement="SequenceFlow_02o4yqx">
+        <di:waypoint xsi:type="dc:Point" x="75" y="2888" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2866" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="86" y="2871" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19mxskt_di" bpmnElement="SequenceFlow_19mxskt">
+        <di:waypoint xsi:type="dc:Point" x="202" y="1821" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="1725" />
+        <di:waypoint xsi:type="dc:Point" x="681" y="1725" />
+        <di:waypoint xsi:type="dc:Point" x="681" y="1941" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="392" y="1704" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1gacz45_di" bpmnElement="prepareCreateService_scriptTask">
+        <dc:Bounds x="250" y="543" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_11b4gmn_di" bpmnElement="setPONR_ScriptTask">
+        <dc:Bounds x="204" y="1432" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_12ilko1_di" bpmnElement="SequenceFlow_12ilko1">
+        <di:waypoint xsi:type="dc:Point" x="96" y="1472" />
+        <di:waypoint xsi:type="dc:Point" x="204" y="1472" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="150" y="1447" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0afe2pg_di" bpmnElement="SequenceFlow_0afe2pg">
+        <di:waypoint xsi:type="dc:Point" x="304" y="1472" />
+        <di:waypoint xsi:type="dc:Point" x="447" y="1472" />
+        <di:waypoint xsi:type="dc:Point" x="490" y="1472" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="376" y="1457" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0oh7wzu_di" bpmnElement="DoRollbackService_CallActivity">
+        <dc:Bounds x="976" y="1926" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_0foywso_di" bpmnElement="InclusiveGateway_0foywso">
+        <dc:Bounds x="709" y="2888" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="689" y="2943" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1f1hd3l_di" bpmnElement="SequenceFlow_1f1hd3l">
+        <di:waypoint xsi:type="dc:Point" x="1026" y="2006" />
+        <di:waypoint xsi:type="dc:Point" x="1026" y="2103" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="996" y="2055" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jg47xm_di" bpmnElement="SequenceFlow_0jg47xm">
+        <di:waypoint xsi:type="dc:Point" x="759" y="2913" />
+        <di:waypoint xsi:type="dc:Point" x="941" y="2913" />
+        <di:waypoint xsi:type="dc:Point" x="941" y="2945" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="805" y="2898" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0807ukc_di" bpmnElement="SequenceFlow_0807ukc">
+        <di:waypoint xsi:type="dc:Point" x="991" y="2985" />
+        <di:waypoint xsi:type="dc:Point" x="1023" y="2985" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="962" y="2970" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19yywk8_di" bpmnElement="SequenceFlow_19yywk8">
+        <di:waypoint xsi:type="dc:Point" x="1123" y="2985" />
+        <di:waypoint xsi:type="dc:Point" x="1160" y="2985" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1097" y="2970" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0prlju0_di" bpmnElement="IntermediateThrowEvent_0prlju0">
+        <dc:Bounds x="1056" y="370" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1025" y="411" width="97" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0j6sjye_di" bpmnElement="SequenceFlow_0j6sjye">
+        <di:waypoint xsi:type="dc:Point" x="350" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="456" y="583" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="403" y="568" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_05indeh_di" bpmnElement="ExclusiveGateway_05indeh" isMarkerVisible="true">
+        <dc:Bounds x="656" y="1941" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="718" y="1923" width="82" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0sezboq_di" bpmnElement="SequenceFlow_0sezboq">
+        <di:waypoint xsi:type="dc:Point" x="681" y="1991" />
+        <di:waypoint xsi:type="dc:Point" x="681" y="2128" />
+        <di:waypoint xsi:type="dc:Point" x="1001" y="2128" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="689" y="2045" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_16yhzej_di" bpmnElement="updateInfraRequest">
+        <dc:Bounds x="794" y="543" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qd3uwb_di" bpmnElement="ScriptTask_1qd3uwb">
+        <dc:Bounds x="623" y="543" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ky2sv9_di" bpmnElement="SequenceFlow_1ky2sv9">
+        <di:waypoint xsi:type="dc:Point" x="556" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="623" y="583" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="590" y="568" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vj46ej_di" bpmnElement="SequenceFlow_0vj46ej">
+        <di:waypoint xsi:type="dc:Point" x="723" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="794" y="583" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="759" y="568" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_17doerz_di" bpmnElement="ScriptTask_17doerz">
+        <dc:Bounds x="25" y="2786" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zq7i3q_di" bpmnElement="SequenceFlow_0zq7i3q">
+        <di:waypoint xsi:type="dc:Point" x="-27" y="2997" />
+        <di:waypoint xsi:type="dc:Point" x="20" y="2997" />
+        <di:waypoint xsi:type="dc:Point" x="20" y="2996" />
+        <di:waypoint xsi:type="dc:Point" x="50" y="2996" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-56" y="2998" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_0m9f5ka_di" bpmnElement="InclusiveGateway_0m9f5ka">
+        <dc:Bounds x="1001" y="2103" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="981" y="2158" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0wyub4x_di" bpmnElement="ScriptTask_0wyub4x">
+        <dc:Bounds x="684" y="2786" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rabks0_di" bpmnElement="SequenceFlow_1rabks0">
+        <di:waypoint xsi:type="dc:Point" x="734" y="2866" />
+        <di:waypoint xsi:type="dc:Point" x="734" y="2888" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="704" y="2877" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0w2alah_di" bpmnElement="DecomposeService">
+        <dc:Bounds x="467" y="348" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0cdtchu_di" bpmnElement="ScriptTask_0cdtchu">
+        <dc:Bounds x="276" y="348" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1eu60rt_di" bpmnElement="SequenceFlow_1eu60rt">
+        <di:waypoint xsi:type="dc:Point" x="123" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="276" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="200" y="373" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00h6hmd_di" bpmnElement="SequenceFlow_00h6hmd">
+        <di:waypoint xsi:type="dc:Point" x="376" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="467" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="422" y="373" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0vf9bei_di" bpmnElement="ScriptTask_0vf9bei">
+        <dc:Bounds x="184" y="801" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_110rm9l_di" bpmnElement="IntermediateCatchEvent_110rm9l">
+        <dc:Bounds x="83" y="823" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="57" y="859" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0x9pjgm_di" bpmnElement="SequenceFlow_0x9pjgm">
+        <di:waypoint xsi:type="dc:Point" x="119" y="841" />
+        <di:waypoint xsi:type="dc:Point" x="184" y="841" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="826" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_06gq6em_di" bpmnElement="ExclusiveGateway_06gq6em" isMarkerVisible="true">
+        <dc:Bounds x="50" y="2603" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-37" y="2618" width="80" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1bpuf2p_di" bpmnElement="CallActivity_1bpuf2p">
+        <dc:Bounds x="152" y="2518" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_131ozdf_di" bpmnElement="InclusiveGateway_131ozdf">
+        <dc:Bounds x="50" y="2431" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="30" y="2486" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0orpdrl_di" bpmnElement="SequenceFlow_0orpdrl">
+        <di:waypoint xsi:type="dc:Point" x="100" y="2628" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="2628" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="2598" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="141" y="2613" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t3cnnx_di" bpmnElement="SequenceFlow_1t3cnnx">
+        <di:waypoint xsi:type="dc:Point" x="202" y="2518" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="2481" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="172" y="2500" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ya1cr3_di" bpmnElement="SequenceFlow_0ya1cr3">
+        <di:waypoint xsi:type="dc:Point" x="75" y="2603" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2542" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2542" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2481" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="88" y="2508" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1oudh6l_di" bpmnElement="ExclusiveGateway_1oudh6l" isMarkerVisible="true">
+        <dc:Bounds x="332" y="816" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="399" y="829" width="76" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_074qh5g_di" bpmnElement="ExclusiveGateway_074qh5g" isMarkerVisible="true">
+        <dc:Bounds x="512" y="796" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="492" y="846" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ofjahh_di" bpmnElement="SequenceFlow_0ofjahh">
+        <di:waypoint xsi:type="dc:Point" x="357" y="866" />
+        <di:waypoint xsi:type="dc:Point" x="357" y="901" />
+        <di:waypoint xsi:type="dc:Point" x="537" y="901" />
+        <di:waypoint xsi:type="dc:Point" x="537" y="846" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="441" y="886" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kgaq0j_di" bpmnElement="SequenceFlow_1kgaq0j">
+        <di:waypoint xsi:type="dc:Point" x="284" y="841" />
+        <di:waypoint xsi:type="dc:Point" x="332" y="841" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="263" y="826" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_16qob4p_di" bpmnElement="SequenceFlow_16qob4p">
+        <di:waypoint xsi:type="dc:Point" x="357" y="816" />
+        <di:waypoint xsi:type="dc:Point" x="357" y="730" />
+        <di:waypoint xsi:type="dc:Point" x="400" y="730" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="362" y="763" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_14tl857_di" bpmnElement="ExclusiveGateway_14tl857" isMarkerVisible="true">
+        <dc:Bounds x="50" y="2282" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-24" y="2297" width="57" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_142br6v_di" bpmnElement="InclusiveGateway_142br6v">
+        <dc:Bounds x="50" y="2103" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="30" y="2158" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kpdu1j_di" bpmnElement="SequenceFlow_1kpdu1j">
+        <di:waypoint xsi:type="dc:Point" x="75" y="2282" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2153" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="83" y="2218" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1mjdcct_di" bpmnElement="ExclusiveGateway_1mjdcct" isMarkerVisible="true">
+        <dc:Bounds x="177" y="2431" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="178" y="2393" width="48" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sim44y_di" bpmnElement="SequenceFlow_1sim44y">
+        <di:waypoint xsi:type="dc:Point" x="177" y="2456" />
+        <di:waypoint xsi:type="dc:Point" x="100" y="2456" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="2431" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dr2fem_di" bpmnElement="SequenceFlow_0dr2fem">
+        <di:waypoint xsi:type="dc:Point" x="226" y="2457" />
+        <di:waypoint xsi:type="dc:Point" x="734" y="2457" />
+        <di:waypoint xsi:type="dc:Point" x="734" y="2695" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="316" y="2436" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_05dg1m1_di" bpmnElement="ExclusiveGateway_05dg1m1" isMarkerVisible="true">
+        <dc:Bounds x="177" y="2103" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="178" y="2064" width="48" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1quvahv_di" bpmnElement="SequenceFlow_1quvahv">
+        <di:waypoint xsi:type="dc:Point" x="177" y="2128" />
+        <di:waypoint xsi:type="dc:Point" x="100" y="2128" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="129" y="2103" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mbymcu_di" bpmnElement="SequenceFlow_1mbymcu">
+        <di:waypoint xsi:type="dc:Point" x="227" y="2128" />
+        <di:waypoint xsi:type="dc:Point" x="1001" y="2128" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="290" y="2097" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1i1nwfx_di" bpmnElement="IntermediateCatchEvent_1i1nwfx">
+        <dc:Bounds x="87" y="565" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="72" y="601" width="65" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1as6hoa_di" bpmnElement="IntermediateThrowEvent_1as6hoa">
+        <dc:Bounds x="1027" y="666" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1002" y="707" width="85" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_15odbkz_di" bpmnElement="SequenceFlow_15odbkz">
+        <di:waypoint xsi:type="dc:Point" x="123" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="250" y="583" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="187" y="558" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_07nu6s6_di" bpmnElement="Task_1l0uvof">
+        <dc:Bounds x="856" y="348" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jbuf1t_di" bpmnElement="SequenceFlow_1jbuf1t">
+        <di:waypoint xsi:type="dc:Point" x="956" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="1056" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="961" y="373" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17g05fd_di" bpmnElement="SequenceFlow_17g05fd">
+        <di:waypoint xsi:type="dc:Point" x="567" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="658" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="567.5" y="373" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0y7gtd9_di" bpmnElement="ExclusiveGateway_0y7gtd9" isMarkerVisible="true">
+        <dc:Bounds x="50" y="2695" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-39" y="2708" width="72" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ftzjjm_di" bpmnElement="SequenceFlow_0ftzjjm">
+        <di:waypoint xsi:type="dc:Point" x="75" y="2786" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="45" y="2766" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_12dakwh_di" bpmnElement="SequenceFlow_12dakwh">
+        <di:waypoint xsi:type="dc:Point" x="75" y="2695" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2653" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="83" y="2666" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_1xenadu_di" bpmnElement="InclusiveGateway_1xenadu">
+        <dc:Bounds x="709" y="2695" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="689" y="2750" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lv5ld6_di" bpmnElement="SequenceFlow_1lv5ld6">
+        <di:waypoint xsi:type="dc:Point" x="1026" y="2153" />
+        <di:waypoint xsi:type="dc:Point" x="1026" y="2720" />
+        <di:waypoint xsi:type="dc:Point" x="759" y="2720" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="996" y="2437" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dvsqpp_di" bpmnElement="SequenceFlow_0dvsqpp">
+        <di:waypoint xsi:type="dc:Point" x="734" y="2745" />
+        <di:waypoint xsi:type="dc:Point" x="734" y="2786" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="704" y="2766" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_09nn9a9_di" bpmnElement="SequenceFlow_09nn9a9">
+        <di:waypoint xsi:type="dc:Point" x="100" y="2720" />
+        <di:waypoint xsi:type="dc:Point" x="423" y="2720" />
+        <di:waypoint xsi:type="dc:Point" x="423" y="2720" />
+        <di:waypoint xsi:type="dc:Point" x="709" y="2720" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="144" y="2693" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_027lz43_di" bpmnElement="SequenceFlow_027lz43">
+        <di:waypoint xsi:type="dc:Point" x="75" y="2431" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="2332" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="45" y="2372" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0t3mtod_di" bpmnElement="SequenceFlow_0t3mtod">
+        <di:waypoint xsi:type="dc:Point" x="75" y="2103" />
+        <di:waypoint xsi:type="dc:Point" x="75" y="1846" />
+        <di:waypoint xsi:type="dc:Point" x="177" y="1846" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="45" y="1965" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_17pzn7m_di" bpmnElement="IntermediateCatchEvent_17pzn7m">
+        <dc:Bounds x="83" y="1259" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="57" y="1295" width="80" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0lt5ltv_di" bpmnElement="IntermediateThrowEvent_0lt5ltv">
+        <dc:Bounds x="670" y="1259" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="645" y="1306" width="85" height="20" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_09vobbc_di" bpmnElement="IntermediateThrowEvent_09vobbc">
+        <dc:Bounds x="670" y="803" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="651" y="844" width="85" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0o6tf9p_di" bpmnElement="SequenceFlow_0o6tf9p">
+        <di:waypoint xsi:type="dc:Point" x="562" y="821" />
+        <di:waypoint xsi:type="dc:Point" x="670" y="821" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="616" y="800" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1els13v_di" bpmnElement="CallActivity_1els13v">
+        <dc:Bounds x="586" y="942" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0n1k77c_di" bpmnElement="ScriptTask_0n1k77c">
+        <dc:Bounds x="413" y="942" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1xsowxp_di" bpmnElement="IntermediateThrowEvent_1xsowxp">
+        <dc:Bounds x="1027" y="1031" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1001" y="1072" width="87" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_19a50jz_di" bpmnElement="IntermediateCatchEvent_19a50jz">
+        <dc:Bounds x="77" y="1047" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="70" y="1083" width="48" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0yae9sb_di" bpmnElement="ExclusiveGateway_0yae9sb" isMarkerVisible="true">
+        <dc:Bounds x="326" y="1040" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="388" y="1059" width="67" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1hlbkue_di" bpmnElement="ExclusiveGateway_1hlbkue" isMarkerVisible="true">
+        <dc:Bounds x="892" y="1024" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="872" y="1079" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ws7fjn_di" bpmnElement="SequenceFlow_0ws7fjn">
+        <di:waypoint xsi:type="dc:Point" x="513" y="982" />
+        <di:waypoint xsi:type="dc:Point" x="586" y="982" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="504.5" y="961" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mkdhw9_di" bpmnElement="SequenceFlow_1mkdhw9">
+        <di:waypoint xsi:type="dc:Point" x="686" y="982" />
+        <di:waypoint xsi:type="dc:Point" x="749" y="982" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="888.7571646117599" y="923.4934735403681" width="84" height="48" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0p75l97_di" bpmnElement="SequenceFlow_0p75l97">
+        <di:waypoint xsi:type="dc:Point" x="351" y="1040" />
+        <di:waypoint xsi:type="dc:Point" x="351" y="982" />
+        <di:waypoint xsi:type="dc:Point" x="413" y="982" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="362" y="1015" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ufio7c_di" bpmnElement="SequenceFlow_1ufio7c">
+        <di:waypoint xsi:type="dc:Point" x="942" y="1049" />
+        <di:waypoint xsi:type="dc:Point" x="1027" y="1049" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="940.5" y="1024" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0aza7xq_di" bpmnElement="SequenceFlow_0aza7xq">
+        <di:waypoint xsi:type="dc:Point" x="113" y="1065" />
+        <di:waypoint xsi:type="dc:Point" x="326" y="1065" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="175.5" y="1040" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_13iuk3s_di" bpmnElement="SequenceFlow_13iuk3s">
+        <di:waypoint xsi:type="dc:Point" x="351" y="1091" />
+        <di:waypoint xsi:type="dc:Point" x="351" y="1114" />
+        <di:waypoint xsi:type="dc:Point" x="917" y="1114" />
+        <di:waypoint xsi:type="dc:Point" x="917" y="1075" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="596" y="1090" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_071yaf8_di" bpmnElement="CallActivity_071yaf8">
+        <dc:Bounds x="321" y="1806" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sl79hn_di" bpmnElement="SequenceFlow_1sl79hn">
+        <di:waypoint xsi:type="dc:Point" x="227" y="1846" />
+        <di:waypoint xsi:type="dc:Point" x="256" y="1846" />
+        <di:waypoint xsi:type="dc:Point" x="256" y="1846" />
+        <di:waypoint xsi:type="dc:Point" x="321" y="1846" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="271" y="1826" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0y158bb_di" bpmnElement="ExclusiveGateway_0y158bb" isMarkerVisible="true">
+        <dc:Bounds x="521" y="1821" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="522" y="1782" width="48" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ne9n0g_di" bpmnElement="SequenceFlow_0ne9n0g">
+        <di:waypoint xsi:type="dc:Point" x="421" y="1846" />
+        <di:waypoint xsi:type="dc:Point" x="521" y="1846" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="426" y="1825" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1a7e8l1_di" bpmnElement="SequenceFlow_1a7e8l1">
+        <di:waypoint xsi:type="dc:Point" x="706" y="1966" />
+        <di:waypoint xsi:type="dc:Point" x="976" y="1966" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="832" y="1945" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00by7l7_di" bpmnElement="SequenceFlow_00by7l7">
+        <di:waypoint xsi:type="dc:Point" x="546" y="1871" />
+        <di:waypoint xsi:type="dc:Point" x="546" y="2128" />
+        <di:waypoint xsi:type="dc:Point" x="1001" y="2128" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="554" y="1994" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17cz98f_di" bpmnElement="SequenceFlow_17cz98f">
+        <di:waypoint xsi:type="dc:Point" x="559" y="1858" />
+        <di:waypoint xsi:type="dc:Point" x="668" y="1954" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="614.8182269768699" y="1888.8734385586085" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1cl4iu4_di" bpmnElement="CallActivity_1cl4iu4">
+        <dc:Bounds x="152" y="2193" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mpsdaj_di" bpmnElement="SequenceFlow_1mpsdaj">
+        <di:waypoint xsi:type="dc:Point" x="202" y="2193" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="2153" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="172" y="2167" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_007p8k3_di" bpmnElement="SequenceFlow_007p8k3">
+        <di:waypoint xsi:type="dc:Point" x="100" y="2307" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="2307" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="2273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="142" y="2286" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1ymzucb_di" bpmnElement="CallActivity_1ymzucb">
+        <dc:Bounds x="400" y="690" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cgpklo_di" bpmnElement="SequenceFlow_1cgpklo">
+        <di:waypoint xsi:type="dc:Point" x="500" y="730" />
+        <di:waypoint xsi:type="dc:Point" x="538" y="730" />
+        <di:waypoint xsi:type="dc:Point" x="538" y="797" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="474" y="715" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0lpv2da_di" bpmnElement="ScriptTask_0lpv2da">
+        <dc:Bounds x="658" y="348" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_11efpvh_di" bpmnElement="SequenceFlow_11efpvh">
+        <di:waypoint xsi:type="dc:Point" x="758" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="856" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="807" y="367" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_18w0jud_di" bpmnElement="ScriptTask_18w0jud">
+        <dc:Bounds x="749" y="942" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0k5vcuu_di" bpmnElement="SequenceFlow_0k5vcuu">
+        <di:waypoint xsi:type="dc:Point" x="849" y="982" />
+        <di:waypoint xsi:type="dc:Point" x="917" y="982" />
+        <di:waypoint xsi:type="dc:Point" x="917" y="1024" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="883" y="961" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1x88t9v_di" bpmnElement="IntermediateCatchEvent_1x88t9v">
+        <dc:Bounds x="1027" y="565" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1018" y="530" width="54" height="48" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0sjpja4_di" bpmnElement="SequenceFlow_0sjpja4">
+        <di:waypoint xsi:type="dc:Point" x="894" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="1027" y="583" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="960.5" y="562" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1db0ri1_di" bpmnElement="SequenceFlow_1db0ri1">
+        <di:waypoint xsi:type="dc:Point" x="1045" y="601" />
+        <di:waypoint xsi:type="dc:Point" x="1045" y="666" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1060" y="627.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gj4vud_di" bpmnElement="SequenceFlow_0gj4vud">
+        <di:waypoint xsi:type="dc:Point" x="119" y="1277" />
+        <di:waypoint xsi:type="dc:Point" x="345" y="1277" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="232" y="1257" width="0" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0clhseq_di" bpmnElement="SequenceFlow_0clhseq">
+        <di:waypoint xsi:type="dc:Point" x="445" y="1277" />
+        <di:waypoint xsi:type="dc:Point" x="670" y="1277" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="557.5" y="1257" width="0" height="10" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1totpg4_di" bpmnElement="Task_14l19kv">
+        <dc:Bounds x="345" y="1237" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVfModuleInfra.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVfModuleInfra.bpmn
new file mode 100644
index 0000000..eefc2ca
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVfModuleInfra.bpmn
@@ -0,0 +1,700 @@
+<?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="_pNTO8MRhEeWv36YLr7PC3Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="CreateVfModuleInfra" name="CreateVfModuleInfra" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1" name="Start">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="PreProcessRequest" />
+    <bpmn2:callActivity id="DoCreateVfModuleSubprocess" name="Do Create Vf Module" calledElement="DoCreateVfModule">
+      <bpmn2:extensionElements>
+        <camunda:in source="CVFMI_requestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="isVidRequest" target="isVidRequest" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:out source="DCVFM_vnfId" target="CVFMI_vnfId" />
+        <camunda:out source="DCVFM_vfModuleId" target="CVFMI_vfModuleId" />
+        <camunda:out source="rollbackData" target="rollbackData" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="WorkflowResponse" target="CVFMI_WorkflowResponse" />
+        <camunda:out source="DCVFM_vfModuleName" target="CVFMI_vfModuleName" />
+        <camunda:in source="CVFMI_vnfType" target="vnfType" />
+        <camunda:in source="CVFMI_vnfName" target="vnfName" />
+        <camunda:in source="CVFMI_vnfId" target="vnfId" />
+        <camunda:in source="CVFMI_vfModuleName" target="vfModuleName" />
+        <camunda:in source="CVFMI_vfModuleType" target="vfModuleType" />
+        <camunda:in source="CVFMI_volumeGroupId" target="volumeGroupId" />
+        <camunda:in source="CVFMI_volumeGroupName" target="volumeGroupName" />
+        <camunda:in source="CVFMI_isBaseVfModule" target="isBaseVfModule" />
+        <camunda:in source="CVFMI_asdcServiceModelVersion" target="asdcServiceModelVersion" />
+        <camunda:in source="CVFMI_serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="CVFMI_serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="CVFMI_vnfModelInfo" target="vnfModelInfo" />
+        <camunda:in source="CVFMI_globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="CVFMI_sdncVersion" target="sdncVersion" />
+        <camunda:in source="CVFMI_lcpCloudRegionId" target="lcpCloudRegionId" />
+        <camunda:in source="CVFMI_tenantId" target="tenantId" />
+        <camunda:in source="CVFMI_vfModuleId" target="vfModuleId" />
+        <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" />
+        <camunda:out source="DCVFM_getSDNCAdapterResponse" target="DCVFM_getSDNCAdapterResponse" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1y7d5qk</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1vx081s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="SendResponse" name="Send Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1efipx3</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModule = new CreateVfModuleInfra()
+createVfModule.sendResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1" name="To FinishLine">
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_34" name="FinishLine" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="DoCreateVfModuleSubprocess" targetRef="IntermediateThrowEvent_1" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1" name="FinishLine">
+      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_35" name="FinishLine" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="IntermediateCatchEvent_1" targetRef="PrepareUpdateInfraRequest" />
+    <bpmn2:scriptTask id="PrepareUpdateInfraRequest" name="Prepare Update Infra Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModule = new CreateVfModuleInfra()
+createVfModule.prepareUpdateInfraRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:serviceTask id="ServiceTask_1" name="Update Infra Request">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint", execution)}]]></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="payload">${CVFMI_updateInfraRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1crl7uf</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="PrepareUpdateInfraRequest" targetRef="ServiceTask_1" />
+    <bpmn2:scriptTask id="PrepareMSOCompletionHandler" name="Prepare MSO Completion Handler" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0td7d9m</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0u8zesf</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModule = new CreateVfModuleInfra()
+createVfModule.postProcessResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="PrepareMSOCompletionHandler" targetRef="MSOCompletionHandler" />
+    <bpmn2:callActivity id="MSOCompletionHandler" name="MSO Completion Handler" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in source="CVFMI_msoCompletionRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" />
+        <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:exclusiveGateway id="UpdateInfraRequestResponseCheck" name="Success? " default="updateInfraRequestResponseBad">
+      <bpmn2:incoming>SequenceFlow_1crl7uf</bpmn2:incoming>
+      <bpmn2:outgoing>updateInfraRequestResponseBad</bpmn2:outgoing>
+      <bpmn2:outgoing>updateInfraRequestResponseGood</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="updateInfraRequestResponseBad" name="no" sourceRef="UpdateInfraRequestResponseCheck" targetRef="EndEvent_2" />
+    <bpmn2:sequenceFlow id="updateInfraRequestResponseGood" name="yes" sourceRef="UpdateInfraRequestResponseCheck" targetRef="ExclusiveGateway_0c8x2mq">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CVFMI_dbResponseCode" ) == '200'}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:endEvent id="EndEvent_2">
+      <bpmn2:incoming>updateInfraRequestResponseBad</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_2" errorRef="Error_1" />
+    </bpmn2:endEvent>
+    <bpmn2:subProcess id="ErrorHandler" name="Error Handler" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_2" name="Catch All Errors">
+        <bpmn2:outgoing>SequenceFlow_0wsgnab</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" />
+      </bpmn2:startEvent>
+      <bpmn2:callActivity id="FalloutHandler" name="Fallout Handler" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in source="CVFMI_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_10</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="FalloutHandler" targetRef="EndEvent_3" />
+      <bpmn2:endEvent id="EndEvent_3">
+        <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_11" />
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="PrepareFalloutHandler" name="Prepare Fallout Handler" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_018p5wf</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def cvfm = new CreateVfModuleInfra()
+cvfm.falloutHandlerPrep(execution, 'CVFMI_FalloutHandlerRequest')]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="PrepareFalloutHandler" targetRef="FalloutHandler" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0wsgnab" sourceRef="StartEvent_2" targetRef="SendErrorResponse" />
+      <bpmn2:sequenceFlow id="SequenceFlow_018p5wf" sourceRef="SendErrorResponse" targetRef="PrepareFalloutHandler" />
+      <bpmn2:scriptTask id="SendErrorResponse" name="Send Error Response" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0wsgnab</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_018p5wf</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModule = new CreateVfModuleInfra()
+createVfModule.sendErrorResponse(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="SetSuccessIndicator" name="Set Success Indicator" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[execution.setVariable("CreateVfModuleSuccessIndicator", true)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_1">
+      <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_10" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="MSOCompletionHandler" targetRef="SetSuccessIndicator" />
+    <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="SetSuccessIndicator" targetRef="EndEvent_1" />
+    <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="ErrorHandler">
+      <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_3" />
+    </bpmn2:boundaryEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_4" />
+    <bpmn2:endEvent id="EndEvent_4">
+      <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_12" />
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="PreProcessRequest" name="Pre-Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModule = new CreateVfModuleInfra()
+createVfModule.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="PreProcessRequest" targetRef="SendResponse" />
+    <bpmn2:subProcess id="SubProcess_0pgv3l6" name="Java Exception Handling Sub Process" triggeredByEvent="true">
+      <bpmn2:scriptTask id="ProcessError" name="Process Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1qvgrvq</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1jqizzo</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:endEvent id="EndEvent_0100eju">
+        <bpmn2:incoming>SequenceFlow_1jqizzo</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:startEvent id="StartEvent_1mov8he">
+        <bpmn2:outgoing>SequenceFlow_1qvgrvq</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_1qvgrvq" name="" sourceRef="StartEvent_1mov8he" targetRef="ProcessError" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1jqizzo" name="" sourceRef="ProcessError" targetRef="EndEvent_0100eju" />
+    </bpmn2:subProcess>
+    <bpmn2:callActivity id="CallActivity_0i3men0" name="LCM HealthCheck" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="actionHealthCheck" target="action" />
+        <camunda:in source="CVFMI_vnfId" target="vnfId" />
+        <camunda:in source="CVFMI_requestId" target="msoRequestId" />
+        <camunda:in source="CVFMI_vnfName" target="vnfName" />
+        <camunda:in source="CVFMI_controllerType" target="controllerType" />
+        <camunda:in source="healthCheckIndex0" target="healthCheckIndex" />
+        <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_1xggje5</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_07llpjo</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_09h60ub" name="Error on HealthCheck?" default="SequenceFlow_1vx081s">
+      <bpmn2:incoming>SequenceFlow_07llpjo</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1vx081s</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0nszq2o</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1vx081s" name="no" sourceRef="ExclusiveGateway_09h60ub" targetRef="DoCreateVfModuleSubprocess" />
+    <bpmn2:sequenceFlow id="SequenceFlow_07llpjo" sourceRef="CallActivity_0i3men0" targetRef="ExclusiveGateway_09h60ub" />
+    <bpmn2:endEvent id="EndEvent_0n6bb71">
+      <bpmn2:incoming>SequenceFlow_0nszq2o</bpmn2:incoming>
+      <bpmn2:errorEventDefinition errorRef="Error_1" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0nszq2o" name="yes" sourceRef="ExclusiveGateway_09h60ub" targetRef="EndEvent_0n6bb71">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:callActivity id="CallActivity_17ukiqm" name="LCM ConfigScaleOut" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="actionConfigScaleOut" target="action" />
+        <camunda:in source="CVFMI_vnfId" target="vnfId" />
+        <camunda:in source="CVFMI_requestId" target="msoRequestId" />
+        <camunda:in source="CVFMI_vnfName" target="vnfName" />
+        <camunda:in source="CVFMI_controllerType" target="controllerType" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="healthCheckIndex0" target="healthCheckIndex" />
+        <camunda:out source="errorCode" target="errorConfigScaleOutCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="CVFMI_vfModuleId" target="vfModuleId" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_09i6f7t</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1tk5ru7</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1crl7uf" sourceRef="ServiceTask_1" targetRef="UpdateInfraRequestResponseCheck" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1hncvjy" name="Error on ConfigScaleOut?" default="SequenceFlow_0td7d9m">
+      <bpmn2:incoming>SequenceFlow_1tk5ru7</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0td7d9m</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0h5cld9</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1tk5ru7" sourceRef="CallActivity_17ukiqm" targetRef="ExclusiveGateway_1hncvjy" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0td7d9m" name="no" sourceRef="ExclusiveGateway_1hncvjy" targetRef="PrepareMSOCompletionHandler" />
+    <bpmn2:endEvent id="EndEvent_0a97jcr">
+      <bpmn2:incoming>SequenceFlow_0h5cld9</bpmn2:incoming>
+      <bpmn2:errorEventDefinition errorRef="Error_1" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0h5cld9" name="yes" sourceRef="ExclusiveGateway_1hncvjy" targetRef="EndEvent_0a97jcr">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorConfigScaleOutCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1qozral" name="Do HealthCheck?" default="SequenceFlow_1y7d5qk">
+      <bpmn2:incoming>SequenceFlow_1hk35nm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1xggje5</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1y7d5qk</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1xggje5" name="yes" sourceRef="ExclusiveGateway_1qozral" targetRef="CallActivity_0i3men0">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${execution.getVariable("runHealthCheck")}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1y7d5qk" name="no" sourceRef="ExclusiveGateway_1qozral" targetRef="DoCreateVfModuleSubprocess" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0c8x2mq" name="Do ConfigScaleOut?" default="SequenceFlow_0u8zesf">
+      <bpmn2:incoming>updateInfraRequestResponseGood</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_020dbkp</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0u8zesf</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_020dbkp" name="yes" sourceRef="ExclusiveGateway_0c8x2mq" targetRef="Task_09om99x">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${execution.getVariable("runConfigScaleOut")}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0u8zesf" name="no" sourceRef="ExclusiveGateway_0c8x2mq" targetRef="PrepareMSOCompletionHandler" />
+    <bpmn2:scriptTask id="ScriptTask_1jwavj9" name="Query AAI For Orchestration Status" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1efipx3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1hk35nm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModule = new CreateVfModuleInfra()
+createVfModule.queryAAIForVnfOrchestrationStatus(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_09i6f7t" sourceRef="Task_09om99x" targetRef="CallActivity_17ukiqm" />
+    <bpmn2:scriptTask id="Task_09om99x" name="Retreive Data for Config ScaleOut" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_020dbkp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_09i6f7t</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModule = new CreateVfModuleInfra()
+createVfModule.retreiveConfigScaleOutData(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1efipx3" sourceRef="SendResponse" targetRef="ScriptTask_1jwavj9" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1hk35nm" sourceRef="ScriptTask_1jwavj9" targetRef="ExclusiveGateway_1qozral" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_2" name="REST Fault" errorCode="RESTFault" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVfModuleInfra">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1">
+        <dc:Bounds x="41" y="16" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="46" y="52" width="26" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124">
+        <di:waypoint xsi:type="dc:Point" x="77" y="34" />
+        <di:waypoint xsi:type="dc:Point" x="127" y="34" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="57" y="19" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="PreProcessRequest">
+        <dc:Bounds x="127" y="-6" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_86" bpmnElement="SendResponse">
+        <dc:Bounds x="285" y="-6" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_124" targetElement="_BPMNShape_ServiceTask_86">
+        <di:waypoint xsi:type="dc:Point" x="227" y="34" />
+        <di:waypoint xsi:type="dc:Point" x="285" y="34" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="211" y="19" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_178" bpmnElement="DoCreateVfModuleSubprocess">
+        <dc:Bounds x="736" y="-6" width="145" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_47" bpmnElement="IntermediateThrowEvent_1">
+        <dc:Bounds x="937" y="16" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="923" y="57" width="64" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_178" targetElement="_BPMNShape_IntermediateThrowEvent_47">
+        <di:waypoint xsi:type="dc:Point" x="881" y="34" />
+        <di:waypoint xsi:type="dc:Point" x="937" y="34" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="864" y="19" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_32" bpmnElement="IntermediateCatchEvent_1">
+        <dc:Bounds x="39" y="349" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="25" y="390" width="65" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_219" bpmnElement="PrepareUpdateInfraRequest">
+        <dc:Bounds x="127" y="327" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_103" bpmnElement="ServiceTask_1">
+        <dc:Bounds x="277" y="327" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_179" bpmnElement="UpdateInfraRequestResponseCheck" isMarkerVisible="true">
+        <dc:Bounds x="406" y="342" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="406" y="320" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_220" bpmnElement="PrepareMSOCompletionHandler">
+        <dc:Bounds x="651" y="327" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_221" bpmnElement="MSOCompletionHandler">
+        <dc:Bounds x="789" y="327" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_1">
+        <dc:Bounds x="1078" y="349" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1051" y="390" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_178" bpmnElement="EndEvent_2">
+        <dc:Bounds x="413" y="454" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="386" y="495" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_IntermediateCatchEvent_32" targetElement="_BPMNShape_ScriptTask_219">
+        <di:waypoint xsi:type="dc:Point" x="75" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="127" y="367" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="105" y="367" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_219" targetElement="_BPMNShape_ServiceTask_103">
+        <di:waypoint xsi:type="dc:Point" x="227" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="277" y="367" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="updateInfraRequestResponseBad" sourceElement="_BPMNShape_ExclusiveGateway_179" targetElement="_BPMNShape_EndEvent_178">
+        <di:waypoint xsi:type="dc:Point" x="430" y="391" />
+        <di:waypoint xsi:type="dc:Point" x="431" y="454" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="436" y="420" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="updateInfraRequestResponseGood" sourceElement="_BPMNShape_ExclusiveGateway_179" targetElement="ExclusiveGateway_0c8x2mq_di">
+        <di:waypoint xsi:type="dc:Point" x="456" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="520" y="367" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="462.46376811594206" y="371.99999999999994" width="20" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_ScriptTask_220" targetElement="_BPMNShape_ScriptTask_221">
+        <di:waypoint xsi:type="dc:Point" x="751" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="789" y="367" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="725" y="349" width="90" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_20" bpmnElement="ErrorHandler" isExpanded="true">
+        <dc:Bounds x="30" y="566" width="925" height="385" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_54" bpmnElement="StartEvent_2">
+        <dc:Bounds x="139" y="720" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="137" y="762" width="77" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_222" bpmnElement="PrepareFalloutHandler">
+        <dc:Bounds x="497" y="698" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_223" bpmnElement="FalloutHandler">
+        <dc:Bounds x="690" y="698" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_179" bpmnElement="EndEvent_3">
+        <dc:Bounds x="846" y="720" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="864" y="761" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_44" bpmnElement="BoundaryEvent_1">
+        <dc:Bounds x="937" y="716" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="955" y="757" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_180" bpmnElement="EndEvent_4">
+        <dc:Bounds x="1066" y="716" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1084" y="757" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_222" targetElement="_BPMNShape_ScriptTask_223">
+        <di:waypoint xsi:type="dc:Point" x="597" y="738" />
+        <di:waypoint xsi:type="dc:Point" x="690" y="738" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="644" y="723" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_223" targetElement="_BPMNShape_EndEvent_179">
+        <di:waypoint xsi:type="dc:Point" x="790" y="738" />
+        <di:waypoint xsi:type="dc:Point" x="846" y="738" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="821" y="738" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_BoundaryEvent_44" targetElement="_BPMNShape_EndEvent_180">
+        <di:waypoint xsi:type="dc:Point" x="973" y="734" />
+        <di:waypoint xsi:type="dc:Point" x="1066" y="734" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1020" y="719" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_241" bpmnElement="SetSuccessIndicator">
+        <dc:Bounds x="946" y="327" width="103" height="79" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_221" targetElement="_BPMNShape_ScriptTask_241">
+        <di:waypoint xsi:type="dc:Point" x="889" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="946" y="366" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="873" y="342" width="90" height="20" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ScriptTask_241" targetElement="_BPMNShape_EndEvent_177">
+        <di:waypoint xsi:type="dc:Point" x="1049" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="1078" y="367" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1019" y="342" width="90" height="20" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_0pgv3l6_di" bpmnElement="SubProcess_0pgv3l6" isExpanded="true">
+        <dc:Bounds x="160" y="1001" width="313" height="169" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_13ekvux_di" bpmnElement="ProcessError">
+        <dc:Bounds x="268" y="1047" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0100eju_di" bpmnElement="EndEvent_0100eju">
+        <dc:Bounds x="413" y="1069" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="431" y="1110" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1mov8he_di" bpmnElement="StartEvent_1mov8he">
+        <dc:Bounds x="185" y="1069" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="203" y="1110" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qvgrvq_di" bpmnElement="SequenceFlow_1qvgrvq">
+        <di:waypoint xsi:type="dc:Point" x="221" y="1087" />
+        <di:waypoint xsi:type="dc:Point" x="268" y="1087" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="242" y="1087" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jqizzo_di" bpmnElement="SequenceFlow_1jqizzo">
+        <di:waypoint xsi:type="dc:Point" x="368" y="1087" />
+        <di:waypoint xsi:type="dc:Point" x="413" y="1087" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="388" y="1087" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0wsgnab_di" bpmnElement="SequenceFlow_0wsgnab">
+        <di:waypoint xsi:type="dc:Point" x="175" y="738" />
+        <di:waypoint xsi:type="dc:Point" x="235" y="738" />
+        <di:waypoint xsi:type="dc:Point" x="235" y="738" />
+        <di:waypoint xsi:type="dc:Point" x="296" y="738" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="250" y="738" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_018p5wf_di" bpmnElement="SequenceFlow_018p5wf">
+        <di:waypoint xsi:type="dc:Point" x="396" y="738" />
+        <di:waypoint xsi:type="dc:Point" x="497" y="738" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="447" y="723" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_036ipyg_di" bpmnElement="SendErrorResponse">
+        <dc:Bounds x="296" y="698" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0i3men0_di" bpmnElement="CallActivity_0i3men0">
+        <dc:Bounds x="568" y="-145" width="145" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_09h60ub_di" bpmnElement="ExclusiveGateway_09h60ub" isMarkerVisible="true">
+        <dc:Bounds x="784" y="-130" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="774" y="-162" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vx081s_di" bpmnElement="SequenceFlow_1vx081s">
+        <di:waypoint xsi:type="dc:Point" x="809" y="-80" />
+        <di:waypoint xsi:type="dc:Point" x="809" y="-47" />
+        <di:waypoint xsi:type="dc:Point" x="809" y="-6" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="815" y="-81.36842105263162" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_07llpjo_di" bpmnElement="SequenceFlow_07llpjo">
+        <di:waypoint xsi:type="dc:Point" x="713" y="-105" />
+        <di:waypoint xsi:type="dc:Point" x="784" y="-105" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="703.5" y="-120" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0n6bb71_di" bpmnElement="EndEvent_0n6bb71">
+        <dc:Bounds x="937" y="-123" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="910" y="-82" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0nszq2o_di" bpmnElement="SequenceFlow_0nszq2o">
+        <di:waypoint xsi:type="dc:Point" x="834" y="-105" />
+        <di:waypoint xsi:type="dc:Point" x="937" y="-105" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="850.3538461538461" y="-101" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_17ukiqm_di" bpmnElement="CallActivity_17ukiqm">
+        <dc:Bounds x="472" y="120" width="145" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1crl7uf_di" bpmnElement="SequenceFlow_1crl7uf">
+        <di:waypoint xsi:type="dc:Point" x="377" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="406" y="367" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="391.5" y="346" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1hncvjy_di" bpmnElement="ExclusiveGateway_1hncvjy" isMarkerVisible="true">
+        <dc:Bounds x="675" y="135" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="659" y="101" width="82" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1tk5ru7_di" bpmnElement="SequenceFlow_1tk5ru7">
+        <di:waypoint xsi:type="dc:Point" x="617" y="160" />
+        <di:waypoint xsi:type="dc:Point" x="675" y="160" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="601" y="139" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0td7d9m_di" bpmnElement="SequenceFlow_0td7d9m">
+        <di:waypoint xsi:type="dc:Point" x="700" y="185" />
+        <di:waypoint xsi:type="dc:Point" x="702" y="327" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="708" y="122" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0a97jcr_di" bpmnElement="EndEvent_0a97jcr">
+        <dc:Bounds x="773" y="142" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="701" y="183" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0h5cld9_di" bpmnElement="SequenceFlow_0h5cld9">
+        <di:waypoint xsi:type="dc:Point" x="725" y="160" />
+        <di:waypoint xsi:type="dc:Point" x="773" y="160" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="730" y="166" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1qozral_di" bpmnElement="ExclusiveGateway_1qozral" isMarkerVisible="true">
+        <dc:Bounds x="616" y="9" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="599" y="66" width="86" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xggje5_di" bpmnElement="SequenceFlow_1xggje5">
+        <di:waypoint xsi:type="dc:Point" x="641" y="9" />
+        <di:waypoint xsi:type="dc:Point" x="641" y="-28" />
+        <di:waypoint xsi:type="dc:Point" x="641" y="-28" />
+        <di:waypoint xsi:type="dc:Point" x="641" y="-65" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="649" y="-1.7061403508771935" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1y7d5qk_di" bpmnElement="SequenceFlow_1y7d5qk">
+        <di:waypoint xsi:type="dc:Point" x="666" y="34" />
+        <di:waypoint xsi:type="dc:Point" x="736" y="34" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="685.0746268656717" y="37" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0c8x2mq_di" bpmnElement="ExclusiveGateway_0c8x2mq" isMarkerVisible="true">
+        <dc:Bounds x="520" y="342" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="502" y="402" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_020dbkp_di" bpmnElement="SequenceFlow_020dbkp">
+        <di:waypoint xsi:type="dc:Point" x="545" y="342" />
+        <di:waypoint xsi:type="dc:Point" x="545" y="309" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="551" y="321.9537912405942" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0u8zesf_di" bpmnElement="SequenceFlow_0u8zesf">
+        <di:waypoint xsi:type="dc:Point" x="570" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="651" y="367" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="585" y="372" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1jwavj9_di" bpmnElement="ScriptTask_1jwavj9">
+        <dc:Bounds x="454" y="-6" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_09i6f7t_di" bpmnElement="SequenceFlow_09i6f7t">
+        <di:waypoint xsi:type="dc:Point" x="545" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="545" y="200" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="560" y="208.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1s0bky7_di" bpmnElement="Task_09om99x">
+        <dc:Bounds x="495" y="229" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1efipx3_di" bpmnElement="SequenceFlow_1efipx3">
+        <di:waypoint xsi:type="dc:Point" x="385" y="34" />
+        <di:waypoint xsi:type="dc:Point" x="454" y="34" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="419.5" y="13" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1hk35nm_di" bpmnElement="SequenceFlow_1hk35nm">
+        <di:waypoint xsi:type="dc:Point" x="554" y="34" />
+        <di:waypoint xsi:type="dc:Point" x="616" y="34" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="585" y="13" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVfModuleVolumeInfraV1.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVfModuleVolumeInfraV1.bpmn
new file mode 100644
index 0000000..dcdcdc9
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVfModuleVolumeInfraV1.bpmn
@@ -0,0 +1,514 @@
+<?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="_CyftwG_HEeaKe-v4u9MasA" 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="CreateVfModuleVolumeInfraV1" name="CreateVfModuleVolumeInfraV1" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_createVfModuleVolumeInfraV1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_createVfModuleVolumeInfraV1" targetRef="ScriptTask_preProcessRequest" />
+    <bpmn2:subProcess id="SubProcess_exceptionHandler" name="Exception Handler" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_catchErrors" name="Catch Exceptions">
+        <bpmn2:outgoing>SequenceFlow_1tfi3sp</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" />
+      </bpmn2:startEvent>
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_isSyncResponseSent" name="Sync response sent?" default="SequenceFlow_0x34g02">
+        <bpmn2:incoming>SequenceFlow_1tfi3sp</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0x34g02</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_1q9kksk</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:scriptTask id="ScriptTask_sendSyncErrorResp" name="Send sync error response" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0x34g02</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1()
+createVfModuleVolumeInfraV1.executeMethod('sendSyncError', execution, isDebugLogEnabled)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ScriptTask_sendSyncErrorResp" targetRef="ExclusiveGateway_0of872x" />
+      <bpmn2:scriptTask id="ScriptTask_prefalloutHandlerRequest" name="Prepare Fallout Handler Request" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1v1jx7y</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1()
+createVfModuleVolumeInfraV1.executeMethod('prepareFalloutHandlerRequest', execution, isDebugLogEnabled)
+]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="ScriptTask_prefalloutHandlerRequest" targetRef="CallActivity_callFalloutHandler" />
+      <bpmn2:callActivity id="CallActivity_callFalloutHandler" name="Call Fallout Handler" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in source="CVMVINFRAV1_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" />
+          <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_callFalloutHandler" targetRef="EndEvent_4" />
+      <bpmn2:endEvent id="EndEvent_4" name="End">
+        <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition id="TerminateEventDefinition_2" />
+      </bpmn2:endEvent>
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_09n39bk" name="Is rollback on?" default="SequenceFlow_1cu5t8k">
+        <bpmn2:incoming>SequenceFlow_1q9kksk</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1cu5t8k</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_1tfh1vm</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:scriptTask id="Task_0nc3wxy" name="Log and save original exception" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1tfh1vm</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0b1nrfk</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1()
+createVfModuleVolumeInfraV1.executeMethod('logAndSaveOriginalException', execution, isDebugLogEnabled)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:callActivity id="Task_1b9yx6k" name="DoCreateVfModuleVolumeRollback" calledElement="DoCreateVfModuleVolumeRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="requestId" target="mso-request-id" />
+          <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+          <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+          <camunda:in source="rollbackData" target="rollbackData" />
+          <camunda:in source="workflowException" target="workflowException" />
+          <camunda:out source="wasDeleted" target="wasDeleted" />
+          <camunda:in source="rolledBack" target="rolledBack" />
+          <camunda:in source="workflowException" target="workflowException" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_0b1nrfk</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_08vm13o</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:scriptTask id="Task_1lkduwj" name="Validate Rollback Response" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_08vm13o</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_097zy8w</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1()
+createVfModuleVolumeInfraV1.executeMethod('validateRollbackResponse', execution, isDebugLogEnabled)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:inclusiveGateway id="ExclusiveGateway_0of872x">
+        <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1cu5t8k</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_097zy8w</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1v1jx7y</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1tfi3sp" sourceRef="StartEvent_catchErrors" targetRef="ExclusiveGateway_isSyncResponseSent" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0x34g02" name="No" sourceRef="ExclusiveGateway_isSyncResponseSent" targetRef="ScriptTask_sendSyncErrorResp" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1q9kksk" name="Yes" sourceRef="ExclusiveGateway_isSyncResponseSent" targetRef="ExclusiveGateway_09n39bk">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CVMVINFRAV1_syncResponseSent") == true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_1cu5t8k" name="No" sourceRef="ExclusiveGateway_09n39bk" targetRef="ExclusiveGateway_0of872x" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1tfh1vm" name="Yes" sourceRef="ExclusiveGateway_09n39bk" targetRef="Task_0nc3wxy">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CVMVINFRAV1_backoutOnFailure") == true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_0b1nrfk" sourceRef="Task_0nc3wxy" targetRef="Task_1b9yx6k" />
+      <bpmn2:sequenceFlow id="SequenceFlow_08vm13o" sourceRef="Task_1b9yx6k" targetRef="Task_1lkduwj" />
+      <bpmn2:sequenceFlow id="SequenceFlow_097zy8w" sourceRef="Task_1lkduwj" targetRef="ExclusiveGateway_0of872x" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1v1jx7y" sourceRef="ExclusiveGateway_0of872x" targetRef="ScriptTask_prefalloutHandlerRequest" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="ScriptTask_preProcessRequest" name="Preprocess Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1()
+createVfModuleVolumeInfraV1.executeMethod('preProcessRequest', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ScriptTask_preProcessRequest" targetRef="ScriptTask_sendSyncAckResponse" />
+    <bpmn2:scriptTask id="ScriptTask_sendSyncAckResponse" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1()
+createVfModuleVolumeInfraV1.executeMethod('sendSyncResponse', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="ScriptTask_sendSyncAckResponse" targetRef="ExclusiveGateway_isVolGrpnamePresent" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_isVolGrpnamePresent" name="Is volume group name present?" default="SequenceFlow_volGrpNameMissing">
+      <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_volGrpNamePresent</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_volGrpNameMissing</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_volGrpNamePresent" name="" sourceRef="ExclusiveGateway_isVolGrpnamePresent" targetRef="CallActivity_doCreateVfModuleVolumeV2">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{volumeGroupName != null  && volumeGroupName != "" }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_volGrpNameMissing" name="" sourceRef="ExclusiveGateway_isVolGrpnamePresent" targetRef="ScriptTask_buildError" />
+    <bpmn2:scriptTask id="ScriptTask_buildError" name="Build Error" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_volGrpNameMissing</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1()
+createVfModuleVolumeInfraV1.executeMethod('buildWorkflowException', execution, 2500, "Volume group name not present in request.", isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_buildError" targetRef="EndEvent_2" />
+    <bpmn2:endEvent id="EndEvent_2">
+      <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_1" />
+    </bpmn2:endEvent>
+    <bpmn2:callActivity id="CallActivity_doCreateVfModuleVolumeV2" name="Call DoCreateVfModuleVolumeV2" calledElement="DoCreateVfModuleVolumeV2">
+      <bpmn2:extensionElements>
+        <camunda:out source="DCVFMODVOLV1_SuccessIndicator" target="DCVFMODVOLV1_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="requestId" target="msoRequestId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="failIfExists" target="failIfExists" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="volumeGroupId" target="volumeGroupId" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:in source="volumeGroupName" target="volumeGroupName" />
+        <camunda:in source="vfModuleModelInfo" target="vfModuleModelInfo" />
+        <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" />
+        <camunda:in source="tenantId" target="tenantId" />
+        <camunda:in source="vnfType" target="vnfType" />
+        <camunda:in source="asdcServiceModelVersion" target="asdcServiceModelVersion" />
+        <camunda:in source="test-volume-group-name" target="test-volume-group-name" />
+        <camunda:in source="test-volume-group-id" target="test-volume-group-id" />
+        <camunda:out source="rollbackData" target="rollbackData" />
+        <camunda:in source="requestId" target="mso-request-id" />
+        <camunda:in source="vfModuleInputParams" target="vfModuleInputParams" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_volGrpNamePresent</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0djjra2</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_setSuccessIndicator" name="Set Success Indicator" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1()
+createVfModuleVolumeInfraV1.executeMethod('setSuccessIndicator', execution, true)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="ScriptTask_setSuccessIndicator" targetRef="EndEvent_3" />
+    <bpmn2:callActivity id="CallActivity_completeMsoProcess" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in source="CVMVINFRAV1_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_11</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="CallActivity_completeMsoProcess" targetRef="ScriptTask_setSuccessIndicator" />
+    <bpmn2:scriptTask id="ScriptTask_postCompletionRequest" name="Post Completion Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1()
+createVfModuleVolumeInfraV1.executeMethod('postProcessResponse', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="ScriptTask_postCompletionRequest" targetRef="CallActivity_completeMsoProcess" />
+    <bpmn2:serviceTask id="ServiceTask_callDbInfraUpdate" name="Call DB Infra Update">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint", execution)}]]></camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVMVINFRAV1_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="CVMVINFRAV1_createDBResponse">${response}</camunda:outputParameter>
+            <camunda:outputParameter name="CVMVINFRAV1_dbReturnCode">${statusCode}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ServiceTask_callDbInfraUpdate" targetRef="ScriptTask_postCompletionRequest" />
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" />
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="ScriptTask_prepareDbInfraRequest" name="Prepare DB Infra Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0djjra2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def createVfModuleVolumeInfraV1 = new CreateVfModuleVolumeInfraV1()
+createVfModuleVolumeInfraV1.executeMethod('prepareDbInfraSuccessRequest', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_prepareDbInfraRequest" targetRef="ServiceTask_callDbInfraUpdate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0djjra2" sourceRef="CallActivity_doCreateVfModuleVolumeV2" targetRef="ScriptTask_prepareDbInfraRequest" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVfModuleVolumeInfraV1">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_67" bpmnElement="StartEvent_createVfModuleVolumeInfraV1">
+        <dc:Bounds x="201" y="156" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="219" y="197" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_67" targetElement="_BPMNShape_ScriptTask_300">
+        <di:waypoint xsi:type="dc:Point" x="237" y="174" />
+        <di:waypoint xsi:type="dc:Point" x="271" y="174" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="254" y="159" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_300" bpmnElement="ScriptTask_preProcessRequest">
+        <dc:Bounds x="271" y="134" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_301" bpmnElement="ScriptTask_sendSyncAckResponse">
+        <dc:Bounds x="404" y="134" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_249" bpmnElement="ExclusiveGateway_isVolGrpnamePresent" isMarkerVisible="true">
+        <dc:Bounds x="556" y="149" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="540" y="204" width="81" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_302" bpmnElement="ScriptTask_buildError">
+        <dc:Bounds x="531" y="253" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_36" bpmnElement="CallActivity_doCreateVfModuleVolumeV2">
+        <dc:Bounds x="705" y="134" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_volGrpNamePresent" sourceElement="_BPMNShape_ExclusiveGateway_249">
+        <di:waypoint xsi:type="dc:Point" x="606" y="174" />
+        <di:waypoint xsi:type="dc:Point" x="705" y="174" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="656" y="159" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_301" targetElement="_BPMNShape_ExclusiveGateway_249">
+        <di:waypoint xsi:type="dc:Point" x="504" y="175" />
+        <di:waypoint xsi:type="dc:Point" x="556" y="174" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="530" y="159.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_300" targetElement="_BPMNShape_ScriptTask_301">
+        <di:waypoint xsi:type="dc:Point" x="371" y="174" />
+        <di:waypoint xsi:type="dc:Point" x="404" y="174" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="388" y="159" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_volGrpNameMissing" sourceElement="_BPMNShape_ExclusiveGateway_249" targetElement="_BPMNShape_ScriptTask_302">
+        <di:waypoint xsi:type="dc:Point" x="581" y="199" />
+        <di:waypoint xsi:type="dc:Point" x="582" y="253" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="582" y="211" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_233" bpmnElement="EndEvent_2">
+        <dc:Bounds x="563" y="379" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="581" y="420" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_302" targetElement="_BPMNShape_EndEvent_233">
+        <di:waypoint xsi:type="dc:Point" x="580" y="333" />
+        <di:waypoint xsi:type="dc:Point" x="581" y="379" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="581" y="341" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_234" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1456" y="156" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1474" y="197" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_22" bpmnElement="SubProcess_exceptionHandler" isExpanded="true">
+        <dc:Bounds x="213" y="461" width="895" height="549" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_catchErrors">
+        <dc:Bounds x="263" y="771" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="239" y="812" width="86" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_235" bpmnElement="EndEvent_4">
+        <dc:Bounds x="989" y="771" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1042" y="778" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_304" bpmnElement="ScriptTask_prepareDbInfraRequest">
+        <dc:Bounds x="835" y="134" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_103" bpmnElement="ServiceTask_callDbInfraUpdate">
+        <dc:Bounds x="963" y="134" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_305" bpmnElement="ScriptTask_postCompletionRequest">
+        <dc:Bounds x="1086" y="134" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_37" bpmnElement="CallActivity_completeMsoProcess">
+        <dc:Bounds x="1211" y="134" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_304" targetElement="_BPMNShape_ServiceTask_103">
+        <di:waypoint xsi:type="dc:Point" x="935" y="174" />
+        <di:waypoint xsi:type="dc:Point" x="963" y="174" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="949" y="159" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ServiceTask_103" targetElement="_BPMNShape_ScriptTask_305">
+        <di:waypoint xsi:type="dc:Point" x="1063" y="174" />
+        <di:waypoint xsi:type="dc:Point" x="1086" y="174" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1075" y="159" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_305" targetElement="_BPMNShape_CallActivity_37">
+        <di:waypoint xsi:type="dc:Point" x="1186" y="174" />
+        <di:waypoint xsi:type="dc:Point" x="1211" y="174" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1199" y="159" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_306" bpmnElement="ScriptTask_setSuccessIndicator">
+        <dc:Bounds x="1337" y="134" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_CallActivity_37" targetElement="_BPMNShape_ScriptTask_306">
+        <di:waypoint xsi:type="dc:Point" x="1311" y="174" />
+        <di:waypoint xsi:type="dc:Point" x="1337" y="174" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1324" y="159" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_306" targetElement="_BPMNShape_EndEvent_234">
+        <di:waypoint xsi:type="dc:Point" x="1437" y="173" />
+        <di:waypoint xsi:type="dc:Point" x="1456" y="173" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1447" y="158" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_307" bpmnElement="ScriptTask_prefalloutHandlerRequest">
+        <dc:Bounds x="725" y="749" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_50" bpmnElement="CallActivity_callFalloutHandler">
+        <dc:Bounds x="858" y="749" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_ScriptTask_307" targetElement="_BPMNShape_CallActivity_50">
+        <di:waypoint xsi:type="dc:Point" x="825" y="789" />
+        <di:waypoint xsi:type="dc:Point" x="858" y="789" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="842" y="774" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_50" targetElement="_BPMNShape_EndEvent_235">
+        <di:waypoint xsi:type="dc:Point" x="958" y="789" />
+        <di:waypoint xsi:type="dc:Point" x="989" y="789" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="974" y="774" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_251" bpmnElement="ExclusiveGateway_isSyncResponseSent" isMarkerVisible="true">
+        <dc:Bounds x="380" y="764" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="367" y="819" width="77" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_308" bpmnElement="ScriptTask_sendSyncErrorResp">
+        <dc:Bounds x="355" y="879" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_308" targetElement="_BPMNShape_ScriptTask_307">
+        <di:waypoint xsi:type="dc:Point" x="455" y="919" />
+        <di:waypoint xsi:type="dc:Point" x="664" y="919" />
+        <di:waypoint xsi:type="dc:Point" x="664" y="814" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="560" y="904" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_09n39bk_di" bpmnElement="ExclusiveGateway_09n39bk" isMarkerVisible="true">
+        <dc:Bounds x="492.646" y="764" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="482" y="814" width="71" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0z3e4ts_di" bpmnElement="Task_0nc3wxy">
+        <dc:Bounds x="468" y="644" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1td0fj3_di" bpmnElement="Task_1b9yx6k">
+        <dc:Bounds x="468" y="530" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0mld0ou_di" bpmnElement="Task_1lkduwj">
+        <dc:Bounds x="614" y="530" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_1gkubx4_di" bpmnElement="ExclusiveGateway_0of872x">
+        <dc:Bounds x="639" y="764" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="664" y="814" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1tfi3sp_di" bpmnElement="SequenceFlow_1tfi3sp">
+        <di:waypoint xsi:type="dc:Point" x="299" y="789" />
+        <di:waypoint xsi:type="dc:Point" x="380" y="789" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="340" y="764" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0x34g02_di" bpmnElement="SequenceFlow_0x34g02">
+        <di:waypoint xsi:type="dc:Point" x="405" y="814" />
+        <di:waypoint xsi:type="dc:Point" x="405" y="879" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="413" y="847" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q9kksk_di" bpmnElement="SequenceFlow_1q9kksk">
+        <di:waypoint xsi:type="dc:Point" x="430" y="789" />
+        <di:waypoint xsi:type="dc:Point" x="493" y="789" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="453" y="764" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cu5t8k_di" bpmnElement="SequenceFlow_1cu5t8k">
+        <di:waypoint xsi:type="dc:Point" x="543" y="789" />
+        <di:waypoint xsi:type="dc:Point" x="639" y="789" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="584" y="764" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1tfh1vm_di" bpmnElement="SequenceFlow_1tfh1vm">
+        <di:waypoint xsi:type="dc:Point" x="518" y="764" />
+        <di:waypoint xsi:type="dc:Point" x="518" y="724" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="524" y="734" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0b1nrfk_di" bpmnElement="SequenceFlow_0b1nrfk">
+        <di:waypoint xsi:type="dc:Point" x="518" y="644" />
+        <di:waypoint xsi:type="dc:Point" x="518" y="610" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="533" y="627" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_08vm13o_di" bpmnElement="SequenceFlow_08vm13o">
+        <di:waypoint xsi:type="dc:Point" x="568" y="570" />
+        <di:waypoint xsi:type="dc:Point" x="591" y="570" />
+        <di:waypoint xsi:type="dc:Point" x="591" y="570" />
+        <di:waypoint xsi:type="dc:Point" x="614" y="570" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="606" y="570" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_097zy8w_di" bpmnElement="SequenceFlow_097zy8w">
+        <di:waypoint xsi:type="dc:Point" x="664" y="610" />
+        <di:waypoint xsi:type="dc:Point" x="664" y="764" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="679" y="687" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1v1jx7y_di" bpmnElement="SequenceFlow_1v1jx7y">
+        <di:waypoint xsi:type="dc:Point" x="689" y="789" />
+        <di:waypoint xsi:type="dc:Point" x="725" y="789" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="707" y="774" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0djjra2_di" bpmnElement="SequenceFlow_0djjra2">
+        <di:waypoint xsi:type="dc:Point" x="805" y="174" />
+        <di:waypoint xsi:type="dc:Point" x="835" y="174" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="820" y="159" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVnfInfra.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVnfInfra.bpmn
new file mode 100644
index 0000000..6af8c22
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateVnfInfra.bpmn
@@ -0,0 +1,340 @@
+<?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.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>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" />
+    <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+CreateVnfInfra createVnf = new CreateVnfInfra()
+createVnf.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="initialization" targetRef="sendResponse" />
+    <bpmn2:scriptTask id="sendResponse" name="Send Sync Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+CreateVnfInfra createVnf = new CreateVnfInfra()
+createVnf.sendSyncResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="sendResponse" targetRef="QueryCatalogDB" />
+    <bpmn2:callActivity id="CreateVNF" name="Create VNF" calledElement="DoCreateVnf">
+      <bpmn2:extensionElements>
+        <camunda:in source="CREVI_requestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="CREVI_serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="CREVI_suppressRollback" target="disableRollback" />
+        <camunda:in source="CREVI_vnfModelInfo" target="vnfModelInfo" />
+        <camunda:in source="CREVI_vnfType" target="vnfType" />
+        <camunda:in source="CREVI_vnfName" target="vnfName" />
+        <camunda:in source="CREVI_vnfId" target="vnfId" />
+        <camunda:in source="CREVI_serviceId" target="productFamilyId" />
+        <camunda:in source="CREVI_vnfInputParameters" target="vnfInputParameters" />
+        <camunda:out source="vnfId" target="CREVI_vnfId" />
+        <camunda:out source="vnfOutputParameters" target="CREVI_vnfOutputParameters" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="CREVI_lcpCloudRegionId" target="lcpCloudRegionId" />
+        <camunda:in source="CREVI_tenantId" target="tenandId" />
+        <camunda:in source="CREVI_vnfResourceDecomposition" target="vnfResourceDecomposition" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0ed0uiq</bpmn2:incoming>
+      <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">
+        <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.utils.*
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="processJavaError" targetRef="EndEvent_4" />
+      <bpmn2:endEvent id="EndEvent_4">
+        <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:startEvent id="StartEvent_2">
+        <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="ErrorEventDefinition_3" errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="StartEvent_2" targetRef="processJavaError" />
+    </bpmn2:subProcess>
+    <bpmn2:subProcess id="bpmnErrorHandlingSubProcess" name="Error Handling Sub Process" triggeredByEvent="true">
+      <bpmn2:callActivity id="callFalloutHandler" name="Call&#10;&#10;FalloutHandler" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in source="CREVI_falloutRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="CREVI_requestId" target="requestId" />
+          <camunda:in source="CREVI_serviceInstanceId" target="serviceInstanceId" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="callFalloutHandler" targetRef="EndEvent_5" />
+      <bpmn2:scriptTask id="processError" name="Process Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+
+CreateVnfInfra createVnf = new CreateVnfInfra()
+createVnf.prepareFalloutRequest(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="processError" targetRef="callFalloutHandler" />
+      <bpmn2:endEvent id="EndEvent_5">
+        <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_34" />
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="sendErrorResponse" name="Send Error Response" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+CreateVnfInfra createVnf = new CreateVnfInfra()
+createVnf.sendErrorResponse(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="sendErrorResponse" targetRef="processError" />
+      <bpmn2:startEvent id="StartEvent_3">
+        <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="ErrorEventDefinition_4" />
+      </bpmn2:startEvent>
+      <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_01mjjk3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+CreateVnfInfra createVnf = new CreateVnfInfra()
+createVnf.prepareCompletionHandlerRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="postProcess" targetRef="callCompletionHandler" />
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" />
+    </bpmn2:endEvent>
+    <bpmn2:callActivity id="callCompletionHandler" name="Completion&#10;&#10;Handler" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in source="CREVI_completionHandlerRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="CREVI_requestId" target="mso-request-id" />
+        <camunda:in source="CREVI_serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="callCompletionHandler" targetRef="EndEvent_3" />
+    <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>
+      <bpmn2:outgoing>SequenceFlow_0ed0uiq</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+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.onap.so.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.onap.so.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" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVnfInfra">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
+        <dc:Bounds x="96" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="114" y="263" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization">
+        <dc:Bounds x="216" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="132" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="216" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="165" y="240" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_286" bpmnElement="sendResponse">
+        <dc:Bounds x="341" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_285" targetElement="_BPMNShape_ScriptTask_286">
+        <di:waypoint xsi:type="dc:Point" x="316" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="341" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="329" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_59" bpmnElement="CreateVNF">
+        <dc:Bounds x="618" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_286" targetElement="_BPMNShape_CallActivity_59">
+        <di:waypoint xsi:type="dc:Point" x="441" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="478" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="460" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1340" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1313" y="263" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_32" bpmnElement="javaErrorHandlingSubProcess" isExpanded="true">
+        <dc:Bounds x="253" y="696" width="313" height="169" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_76" bpmnElement="StartEvent_2">
+        <dc:Bounds x="277" y="763" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="295" y="804" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_308" bpmnElement="processJavaError">
+        <dc:Bounds x="360" y="741" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_234" bpmnElement="EndEvent_4">
+        <dc:Bounds x="505" y="763" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="523" y="804" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_StartEvent_76" targetElement="_BPMNShape_ScriptTask_308">
+        <di:waypoint xsi:type="dc:Point" x="313" y="781" />
+        <di:waypoint xsi:type="dc:Point" x="360" y="781" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="331" y="781" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ScriptTask_308" targetElement="_BPMNShape_EndEvent_234">
+        <di:waypoint xsi:type="dc:Point" x="460" y="781" />
+        <di:waypoint xsi:type="dc:Point" x="505" y="781" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="477" y="781" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_33" bpmnElement="bpmnErrorHandlingSubProcess" isExpanded="true">
+        <dc:Bounds x="109" y="433" width="601" height="232" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_77" bpmnElement="StartEvent_3">
+        <dc:Bounds x="133" y="532" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="151" y="573" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_235" bpmnElement="EndEvent_5">
+        <dc:Bounds x="649" y="532" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="667" y="573" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_62" bpmnElement="callFalloutHandler">
+        <dc:Bounds x="493" y="510" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_309" bpmnElement="processError">
+        <dc:Bounds x="361" y="510" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_StartEvent_77" targetElement="_BPMNShape_ScriptTask_312">
+        <di:waypoint xsi:type="dc:Point" x="169" y="550" />
+        <di:waypoint xsi:type="dc:Point" x="229" y="550" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="172" y="550" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_309" targetElement="_BPMNShape_CallActivity_62">
+        <di:waypoint xsi:type="dc:Point" x="461" y="550" />
+        <di:waypoint xsi:type="dc:Point" x="493" y="550" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="486" y="550" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_62" targetElement="_BPMNShape_EndEvent_235">
+        <di:waypoint xsi:type="dc:Point" x="593" y="550" />
+        <di:waypoint xsi:type="dc:Point" x="649" y="550" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="618" y="550" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_312" bpmnElement="sendErrorResponse">
+        <dc:Bounds x="229" y="510" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ScriptTask_312" targetElement="_BPMNShape_ScriptTask_309">
+        <di:waypoint xsi:type="dc:Point" x="329" y="550" />
+        <di:waypoint xsi:type="dc:Point" x="361" y="550" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="342" y="550" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_325" bpmnElement="postProcess">
+        <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="1142" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1192" y="240" />
+        <bpmndi:BPMNLabel>
+          <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="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="1292" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1340" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1271" y="225" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ed0uiq_di" bpmnElement="SequenceFlow_0ed0uiq">
+        <di:waypoint xsi:type="dc:Point" x="578" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="618" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="598" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <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/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteCustomE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteCustomE2EServiceInstance.bpmn
new file mode 100644
index 0000000..2d68d65
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteCustomE2EServiceInstance.bpmn
@@ -0,0 +1,381 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3">
+  <bpmn:process id="DeleteCustomE2EServiceInstance" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_00m8zen" name="Delete SI Start Flow">
+      <bpmn:outgoing>SequenceFlow_1wxumid</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:subProcess id="SubProcess_0amn8vu" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:scriptTask id="ScriptTask_1c6ogpt" name="Handle Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0guajy5</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0dbt753</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:startEvent id="StartEvent_121296y">
+        <bpmn:outgoing>SequenceFlow_0guajy5</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_1dw3dwx">
+        <bpmn:incoming>SequenceFlow_0dbt753</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_0guajy5" name="" sourceRef="StartEvent_121296y" targetRef="ScriptTask_1c6ogpt" />
+      <bpmn:sequenceFlow id="SequenceFlow_0dbt753" name="" sourceRef="ScriptTask_1c6ogpt" targetRef="EndEvent_1dw3dwx" />
+    </bpmn:subProcess>
+    <bpmn:callActivity id="CallActivity_1vyx9hu" name="Call DoCustomDeleteE2EServiceInstance&#10;" calledElement="DoDeleteE2EServiceInstance">
+      <bpmn:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="productFamilyId" target="productFamilyId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="serviceInputParams" target="serviceInputParams" />
+        <camunda:in source="failIfExists" target="failIfExists" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in sourceExpression="1610" target="sdncVersion" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="operationType" target="operationType" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0zf2qyk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_07hrbs0</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:endEvent id="EndEvent_0db8bs6" name="End">
+      <bpmn:incoming>SequenceFlow_1ab5l2q</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="ScriptTask_0a63hms" name="Pre Process Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1wxumid</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0yowshs</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new DeleteCustomE2EServiceInstance()
+csi.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_1fzpbop" name="Prepare Completion Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_04urx2e</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ii935p</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new DeleteCustomE2EServiceInstance()
+csi.prepareCompletionRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="CallActivity_1wx4ihe" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn:extensionElements>
+        <camunda:in source="completionRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" />
+        <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" />
+        <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1ii935p</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ab5l2q</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:subProcess id="SubProcess_1vbcima" name="Sub-process for FalloutHandler " triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0jybicw">
+        <bpmn:outgoing>SequenceFlow_0for83z</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_1jegbhy">
+        <bpmn:incoming>SequenceFlow_0hrazlh</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_0so3xj0" name="Prepare Fallout Request" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_1s1cbgf</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1py6yqz</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new DeleteCustomE2EServiceInstance()
+csi.prepareFalloutRequest(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:callActivity id="CallActivity_1qhekgt" name="Call FalloutHandler" calledElement="FalloutHandler">
+        <bpmn:extensionElements>
+          <camunda:in source="falloutRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="mso-request-id" target="mso-request-id" />
+          <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+          <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" />
+          <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" />
+          <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" />
+        </bpmn:extensionElements>
+        <bpmn:incoming>SequenceFlow_1py6yqz</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0hrazlh</bpmn:outgoing>
+      </bpmn:callActivity>
+      <bpmn:scriptTask id="ScriptTask_006nty7" name="Send Error Response">
+        <bpmn:incoming>SequenceFlow_0for83z</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1s1cbgf</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DeleteCustomE2EServiceInstance()
+csi.sendSyncError(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_0for83z" sourceRef="StartEvent_0jybicw" targetRef="ScriptTask_006nty7" />
+      <bpmn:sequenceFlow id="SequenceFlow_0hrazlh" sourceRef="CallActivity_1qhekgt" targetRef="EndEvent_1jegbhy" />
+      <bpmn:sequenceFlow id="SequenceFlow_1s1cbgf" sourceRef="ScriptTask_006nty7" targetRef="ScriptTask_0so3xj0" />
+      <bpmn:sequenceFlow id="SequenceFlow_1py6yqz" sourceRef="ScriptTask_0so3xj0" targetRef="CallActivity_1qhekgt" />
+    </bpmn:subProcess>
+    <bpmn:scriptTask id="ScriptTask_1mao77y" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1dkcu9o</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0zf2qyk</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DeleteCustomE2EServiceInstance()
+csi.sendSyncResponse(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0vu8gx6" name="Success?" default="SequenceFlow_1t6ekab">
+      <bpmn:incoming>SequenceFlow_07hrbs0</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_04urx2e</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1t6ekab</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:endEvent id="EndEvent_1i1g9s6">
+      <bpmn:incoming>SequenceFlow_1t6ekab</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_1erlsmy" />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1wxumid" sourceRef="StartEvent_00m8zen" targetRef="ScriptTask_0a63hms" />
+    <bpmn:sequenceFlow id="SequenceFlow_0zf2qyk" sourceRef="ScriptTask_1mao77y" targetRef="CallActivity_1vyx9hu" />
+    <bpmn:sequenceFlow id="SequenceFlow_07hrbs0" sourceRef="CallActivity_1vyx9hu" targetRef="ExclusiveGateway_0vu8gx6" />
+    <bpmn:sequenceFlow id="SequenceFlow_1ab5l2q" sourceRef="CallActivity_1wx4ihe" targetRef="EndEvent_0db8bs6" />
+    <bpmn:sequenceFlow id="SequenceFlow_0yowshs" sourceRef="ScriptTask_0a63hms" targetRef="Task_1jksf62" />
+    <bpmn:sequenceFlow id="SequenceFlow_04urx2e" name="yes" sourceRef="ExclusiveGateway_0vu8gx6" targetRef="ScriptTask_1fzpbop">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") == null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1ii935p" sourceRef="ScriptTask_1fzpbop" targetRef="CallActivity_1wx4ihe" />
+    <bpmn:sequenceFlow id="SequenceFlow_1t6ekab" name="no" sourceRef="ExclusiveGateway_0vu8gx6" targetRef="EndEvent_1i1g9s6" />
+    <bpmn:sequenceFlow id="SequenceFlow_0c4t26p" sourceRef="Task_1jksf62" targetRef="ServiceTask_0j9q5xe" />
+    <bpmn:scriptTask id="Task_1jksf62" name="prepare init operation status" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0yowshs</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0c4t26p</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new DeleteCustomE2EServiceInstance()
+csi.prepareInitServiceOperationStatus(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:serviceTask id="ServiceTask_0j9q5xe" name="Update Service Operation Status">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0c4t26p</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1dkcu9o</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1dkcu9o" sourceRef="ServiceTask_0j9q5xe" targetRef="ScriptTask_1mao77y" />
+  </bpmn:process>
+  <bpmn:error id="Error_1erlsmy" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteCustomE2EServiceInstance">
+      <bpmndi:BPMNShape id="StartEvent_00m8zen_di" bpmnElement="StartEvent_00m8zen">
+        <dc:Bounds x="490" y="209" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="471" y="250" width="74" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0amn8vu_di" bpmnElement="SubProcess_0amn8vu" isExpanded="true">
+        <dc:Bounds x="834" y="660" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1vyx9hu_di" bpmnElement="CallActivity_1vyx9hu">
+        <dc:Bounds x="1121" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0db8bs6_di" bpmnElement="EndEvent_0db8bs6">
+        <dc:Bounds x="1646" y="304" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1657" y="340" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0a63hms_di" bpmnElement="ScriptTask_0a63hms">
+        <dc:Bounds x="562" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1fzpbop_di" bpmnElement="ScriptTask_1fzpbop">
+        <dc:Bounds x="1453" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1wx4ihe_di" bpmnElement="CallActivity_1wx4ihe">
+        <dc:Bounds x="1614" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_1vbcima_di" bpmnElement="SubProcess_1vbcima" isExpanded="true">
+        <dc:Bounds x="736" y="374" width="679" height="194" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1mao77y_di" bpmnElement="ScriptTask_1mao77y">
+        <dc:Bounds x="970" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0vu8gx6_di" bpmnElement="ExclusiveGateway_0vu8gx6" isMarkerVisible="true">
+        <dc:Bounds x="1318" y="202" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1318" y="174" width="49" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1i1g9s6_di" bpmnElement="EndEvent_1i1g9s6">
+        <dc:Bounds x="1325" y="304" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1298" y="340" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wxumid_di" bpmnElement="SequenceFlow_1wxumid">
+        <di:waypoint xsi:type="dc:Point" x="526" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="562" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="499" y="206" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zf2qyk_di" bpmnElement="SequenceFlow_0zf2qyk">
+        <di:waypoint xsi:type="dc:Point" x="1070" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1121" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1050.5" y="206" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_07hrbs0_di" bpmnElement="SequenceFlow_07hrbs0">
+        <di:waypoint xsi:type="dc:Point" x="1221" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1318" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1225.5" y="212" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ab5l2q_di" bpmnElement="SequenceFlow_1ab5l2q">
+        <di:waypoint xsi:type="dc:Point" x="1664" y="267" />
+        <di:waypoint xsi:type="dc:Point" x="1664" y="304" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1634" y="279.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yowshs_di" bpmnElement="SequenceFlow_0yowshs">
+        <di:waypoint xsi:type="dc:Point" x="662" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="707" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="639.5" y="206" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04urx2e_di" bpmnElement="SequenceFlow_04urx2e">
+        <di:waypoint xsi:type="dc:Point" x="1368" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1453" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1370.25" y="203" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ii935p_di" bpmnElement="SequenceFlow_1ii935p">
+        <di:waypoint xsi:type="dc:Point" x="1553" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1614" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1495" y="212" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t6ekab_di" bpmnElement="SequenceFlow_1t6ekab">
+        <di:waypoint xsi:type="dc:Point" x="1343" y="252" />
+        <di:waypoint xsi:type="dc:Point" x="1343" y="277" />
+        <di:waypoint xsi:type="dc:Point" x="1343" y="277" />
+        <di:waypoint xsi:type="dc:Point" x="1343" y="304" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1352" y="277" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1c6ogpt_di" bpmnElement="ScriptTask_1c6ogpt">
+        <dc:Bounds x="982" y="715" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_121296y_di" bpmnElement="StartEvent_121296y">
+        <dc:Bounds x="867" y="737" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="795" y="778" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1dw3dwx_di" bpmnElement="EndEvent_1dw3dwx">
+        <dc:Bounds x="1143" y="737" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1071" y="778" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0jybicw_di" bpmnElement="StartEvent_0jybicw">
+        <dc:Bounds x="752" y="460" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="680" y="501" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1jegbhy_di" bpmnElement="EndEvent_1jegbhy">
+        <dc:Bounds x="1331" y="460" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1259" y="501" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0so3xj0_di" bpmnElement="ScriptTask_0so3xj0">
+        <dc:Bounds x="1010" y="438" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1qhekgt_di" bpmnElement="CallActivity_1qhekgt">
+        <dc:Bounds x="1187" y="438" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_006nty7_di" bpmnElement="ScriptTask_006nty7">
+        <dc:Bounds x="832" y="438" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0guajy5_di" bpmnElement="SequenceFlow_0guajy5">
+        <di:waypoint xsi:type="dc:Point" x="903" y="755" />
+        <di:waypoint xsi:type="dc:Point" x="982" y="755" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="856" y="755" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dbt753_di" bpmnElement="SequenceFlow_0dbt753">
+        <di:waypoint xsi:type="dc:Point" x="1082" y="755" />
+        <di:waypoint xsi:type="dc:Point" x="1143" y="755" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1028" y="755" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0for83z_di" bpmnElement="SequenceFlow_0for83z">
+        <di:waypoint xsi:type="dc:Point" x="788" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="810" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="810" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="831" y="478" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="735" y="478" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0hrazlh_di" bpmnElement="SequenceFlow_0hrazlh">
+        <di:waypoint xsi:type="dc:Point" x="1287" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="1331" y="478" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1219" y="463" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s1cbgf_di" bpmnElement="SequenceFlow_1s1cbgf">
+        <di:waypoint xsi:type="dc:Point" x="932" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="959" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="959" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="1010" y="478" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="884" y="478" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1py6yqz_di" bpmnElement="SequenceFlow_1py6yqz">
+        <di:waypoint xsi:type="dc:Point" x="1110" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="1187" y="478" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1060" y="463" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c4t26p_di" bpmnElement="SequenceFlow_0c4t26p">
+        <di:waypoint xsi:type="dc:Point" x="807" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="833" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="820" y="206" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1joo7s7_di" bpmnElement="Task_1jksf62">
+        <dc:Bounds x="707" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0j9q5xe_di" bpmnElement="ServiceTask_0j9q5xe">
+        <dc:Bounds x="833" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dkcu9o_di" bpmnElement="SequenceFlow_1dkcu9o">
+        <di:waypoint xsi:type="dc:Point" x="933" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="970" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="951.5" y="206" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteGenericALaCarteServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteGenericALaCarteServiceInstance.bpmn
new file mode 100644
index 0000000..5c9a800
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteGenericALaCarteServiceInstance.bpmn
@@ -0,0 +1,331 @@
+<?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="DeleteGenericALaCarteServiceInstance" name="DeleteGenericALaCarteServiceInstance" isExecutable="true">
+    <bpmn2:startEvent id="deleteSI_startEvent" name="Delete SI 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="Handle Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.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="doDeleteServiceInstance_CallActivity" name="Call DoDeleteServiceInstance&#10;" calledElement="DoDeleteServiceInstance">
+      <bpmn2:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="productFamilyId" target="productFamilyId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="serviceInputParams" target="serviceInputParams" />
+        <camunda:in source="failIfExists" target="failIfExists" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+        <camunda:in sourceExpression="1610" target="sdncVersion" />
+      </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_095crcd</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1lj31zp" sourceRef="doDeleteServiceInstance_CallActivity" targetRef="ExclusiveGateway_0isueuw" />
+    <bpmn2:scriptTask id="ScriptTask_0pvcr6j" name="Pre Process Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0lp2z7l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ktadna</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new DeleteGenericALaCarteServiceInstance()
+csi.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0lp2z7l" sourceRef="deleteSI_startEvent" targetRef="ScriptTask_0pvcr6j" />
+    <bpmn2:scriptTask id="ScriptTask_0cihgpv" name="Prepare Completion Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1qjygj5</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xxvjxq</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new DeleteGenericALaCarteServiceInstance()
+csi.prepareCompletionRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_0sevgre" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in source="completionRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" />
+        <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" />
+        <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" />
+      </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 />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1rqikib">
+        <bpmn2:incoming>SequenceFlow_1ghqolv</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_1hql91g" name="Prepare Fallout Request" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_14eadeb</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1reso2f</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new DeleteGenericALaCarteServiceInstance()
+csi.prepareFalloutRequest(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:callActivity id="CallActivity_1ksm1dz" name="Call FalloutHandler" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in source="falloutRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="mso-request-id" target="mso-request-id" />
+          <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+          <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" />
+          <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" />
+          <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1reso2f</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1ghqolv</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <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_0o4smqp" />
+      <bpmn2:scriptTask id="ScriptTask_0o4smqp" name="Send Error Response">
+        <bpmn2:incoming>SequenceFlow_0n4umjf</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_14eadeb</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DeleteGenericALaCarteServiceInstance()
+csi.sendSyncError(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <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="doDeleteServiceInstance_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:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DeleteGenericALaCarteServiceInstance()
+csi.sendSyncResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ktadna" sourceRef="ScriptTask_0pvcr6j" targetRef="Task_1nko5zz" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0isueuw" name="Success?" default="SequenceFlow_0hgiouk">
+      <bpmn2:incoming>SequenceFlow_1lj31zp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1qjygj5</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0hgiouk</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1qjygj5" name="yes" sourceRef="ExclusiveGateway_0isueuw" targetRef="ScriptTask_0cihgpv">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") == null}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:endEvent id="EndEvent_0yhby6h">
+      <bpmn2:incoming>SequenceFlow_0hgiouk</bpmn2:incoming>
+      <bpmn2:errorEventDefinition errorRef="Error_2" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0hgiouk" name="no" sourceRef="ExclusiveGateway_0isueuw" targetRef="EndEvent_0yhby6h" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteGenericALaCarteServiceInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="deleteSI_startEvent">
+        <dc:Bounds x="117" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="98" y="120" width="73" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_28" bpmnElement="unexpectedErrors_SubProcess" isExpanded="true">
+        <dc:Bounds x="410" y="607" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_71" bpmnElement="StartEvent_1">
+        <dc:Bounds x="443" y="684" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="461" y="725" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_270" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="558" y="662" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_220" bpmnElement="EndEvent_1">
+        <dc:Bounds x="719" y="684" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="737" y="725" 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="479" y="702" />
+        <di:waypoint xsi:type="dc:Point" x="558" y="702" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="521" y="702" 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="658" y="702" />
+        <di:waypoint xsi:type="dc:Point" x="719" y="702" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="693" y="702" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_72" bpmnElement="doDeleteServiceInstance_CallActivity">
+        <dc:Bounds x="700" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0o440av_di" bpmnElement="EndEvent_0o440av">
+        <dc:Bounds x="1276" y="174" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1287" y="210" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lj31zp_di" bpmnElement="SequenceFlow_1lj31zp">
+        <di:waypoint xsi:type="dc:Point" x="800" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="897" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="849" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0pvcr6j_di" bpmnElement="ScriptTask_0pvcr6j">
+        <dc:Bounds x="281" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0lp2z7l_di" bpmnElement="SequenceFlow_0lp2z7l">
+        <di:waypoint xsi:type="dc:Point" x="153" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="281" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="217" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0cihgpv_di" bpmnElement="ScriptTask_0cihgpv">
+        <dc:Bounds x="1083" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0sevgre_di" bpmnElement="CallActivity_0sevgre">
+        <dc:Bounds x="1244" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xxvjxq_di" bpmnElement="SequenceFlow_0xxvjxq">
+        <di:waypoint xsi:type="dc:Point" x="1183" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1244" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1214" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1hql91g_di" bpmnElement="ScriptTask_1hql91g">
+        <dc:Bounds x="585" y="385" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ksm1dz_di" bpmnElement="CallActivity_1ksm1dz">
+        <dc:Bounds x="762" y="385" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_1k2112i_di" bpmnElement="SubProcess_1k2112i" isExpanded="true">
+        <dc:Bounds x="312" y="321" width="679" height="194" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_110xxgx_di" bpmnElement="StartEvent_110xxgx">
+        <dc:Bounds x="327" y="407" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="345" y="448" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1rqikib_di" bpmnElement="EndEvent_1rqikib">
+        <dc:Bounds x="906" y="407" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="924" y="448" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1reso2f_di" bpmnElement="SequenceFlow_1reso2f">
+        <di:waypoint xsi:type="dc:Point" x="685" y="425" />
+        <di:waypoint xsi:type="dc:Point" x="762" y="425" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="724" y="410" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ghqolv_di" bpmnElement="SequenceFlow_1ghqolv">
+        <di:waypoint xsi:type="dc:Point" x="862" y="425" />
+        <di:waypoint xsi:type="dc:Point" x="906" y="425" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="884" y="410" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_095crcd_di" bpmnElement="SequenceFlow_095crcd">
+        <di:waypoint xsi:type="dc:Point" x="1294" y="137" />
+        <di:waypoint xsi:type="dc:Point" x="1294" y="174" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1309" y="155.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n4umjf_di" bpmnElement="SequenceFlow_0n4umjf">
+        <di:waypoint xsi:type="dc:Point" x="363" y="425" />
+        <di:waypoint xsi:type="dc:Point" x="385" y="425" />
+        <di:waypoint xsi:type="dc:Point" x="385" y="425" />
+        <di:waypoint xsi:type="dc:Point" x="406" y="425" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="400" y="425" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eto8sn_di" bpmnElement="SequenceFlow_0eto8sn">
+        <di:waypoint xsi:type="dc:Point" x="599" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="652" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="652" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="700" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="667" y="97" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1rb2dsd_di" bpmnElement="Task_1nko5zz">
+        <dc:Bounds x="499" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ktadna_di" bpmnElement="SequenceFlow_0ktadna">
+        <di:waypoint xsi:type="dc:Point" x="381" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="499" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="440" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0o4smqp_di" bpmnElement="ScriptTask_0o4smqp">
+        <dc:Bounds x="407" y="385" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_14eadeb_di" bpmnElement="SequenceFlow_14eadeb">
+        <di:waypoint xsi:type="dc:Point" x="507" y="425" />
+        <di:waypoint xsi:type="dc:Point" x="534" y="425" />
+        <di:waypoint xsi:type="dc:Point" x="534" y="425" />
+        <di:waypoint xsi:type="dc:Point" x="585" y="425" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="549" y="425" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0isueuw_di" bpmnElement="ExclusiveGateway_0isueuw" isMarkerVisible="true">
+        <dc:Bounds x="897" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="897" y="44" width="49" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qjygj5_di" bpmnElement="SequenceFlow_1qjygj5">
+        <di:waypoint xsi:type="dc:Point" x="947" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1083" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="955" y="73" width="18" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0yhby6h_di" bpmnElement="EndEvent_0yhby6h">
+        <dc:Bounds x="904" y="174" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="922" y="210" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0hgiouk_di" bpmnElement="SequenceFlow_0hgiouk">
+        <di:waypoint xsi:type="dc:Point" x="922" y="122" />
+        <di:waypoint xsi:type="dc:Point" x="922" y="147" />
+        <di:waypoint xsi:type="dc:Point" x="922" y="147" />
+        <di:waypoint xsi:type="dc:Point" x="922" y="174" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="931" y="147" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteNetworkInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteNetworkInstance.bpmn
new file mode 100644
index 0000000..a62e165
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteNetworkInstance.bpmn
@@ -0,0 +1,372 @@
+<?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.onap.so.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>
+      <bpmn2:script><![CDATA[import org.onap.so.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><![CDATA[import org.onap.so.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>
+      <bpmn2:script><![CDATA[import org.onap.so.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>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DeleteNetworkInstance = new DeleteNetworkInstance()
+DeleteNetworkInstance.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"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint", execution)}
+]]></camunda:inputParameter>
+              <camunda:inputParameter name="payload">${DELNI_deleteDBRequest}</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="DELNI_deleteDBResponse">${response}</camunda:outputParameter>
+              <camunda:outputParameter name="DELNI_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:outgoing>SequenceFlow_1reso2f</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.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>
+      <bpmn2:script><![CDATA[import org.onap.so.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>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DeleteNetworkInstance = new  DeleteNetworkInstance()
+DeleteNetworkInstance.sendSyncResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteNetworkInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createNetwork_startEvent">
+        <dc:Bounds x="3" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-3" y="120" width="48" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_28" bpmnElement="unexpectedErrors_SubProcess" isExpanded="true">
+        <dc:Bounds x="-8" y="786" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_71" bpmnElement="StartEvent_1">
+        <dc:Bounds x="25" y="863" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="43" y="904" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_270" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="140" y="841" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_220" bpmnElement="EndEvent_1">
+        <dc:Bounds x="301" y="863" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="319" y="904" 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="61" y="881" />
+        <di:waypoint xsi:type="dc:Point" x="140" y="881" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="103" y="881" 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="240" y="881" />
+        <di:waypoint xsi:type="dc:Point" x="301" y="881" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="275" y="881" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_72" bpmnElement="doDeleteNetworkInstance_CallActivity">
+        <dc:Bounds x="673" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0o440av_di" bpmnElement="EndEvent_0o440av">
+        <dc:Bounds x="1408" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1419" y="115" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_09qt0pi_di" bpmnElement="ScriptTask_09qt0pi">
+        <dc:Bounds x="1253" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lj31zp_di" bpmnElement="SequenceFlow_1lj31zp">
+        <di:waypoint xsi:type="dc:Point" x="773" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="920" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="847" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0x3znm5_di" bpmnElement="SequenceFlow_0x3znm5">
+        <di:waypoint xsi:type="dc:Point" x="1353" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1408" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1381" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0pvcr6j_di" bpmnElement="ScriptTask_0pvcr6j">
+        <dc:Bounds x="139" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0lp2z7l_di" bpmnElement="SequenceFlow_0lp2z7l">
+        <di:waypoint xsi:type="dc:Point" x="39" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="89" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="89" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="139" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="104" y="97" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ablr60_di" bpmnElement="SequenceFlow_1ablr60">
+        <di:waypoint xsi:type="dc:Point" x="239" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="342" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="291" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0cihgpv_di" bpmnElement="ScriptTask_0cihgpv">
+        <dc:Bounds x="920" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0sevgre_di" bpmnElement="CallActivity_0sevgre">
+        <dc:Bounds x="1086" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1akfe0b_di" bpmnElement="ScriptTask_1akfe0b">
+        <dc:Bounds x="189" y="525" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0sztuly_di" bpmnElement="ServiceTask_0sztuly">
+        <dc:Bounds x="384" y="525" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xxvjxq_di" bpmnElement="SequenceFlow_0xxvjxq">
+        <di:waypoint xsi:type="dc:Point" x="1020" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1086" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1053" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1hql91g_di" bpmnElement="ScriptTask_1hql91g">
+        <dc:Bounds x="563" y="525" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ksm1dz_di" bpmnElement="CallActivity_1ksm1dz">
+        <dc:Bounds x="738" y="525" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_1k2112i_di" bpmnElement="SubProcess_1k2112i" isExpanded="true">
+        <dc:Bounds x="-13" y="353" width="1021" height="404" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_110xxgx_di" bpmnElement="StartEvent_110xxgx">
+        <dc:Bounds x="83" y="547" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="101" y="588" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1rqikib_di" bpmnElement="EndEvent_1rqikib">
+        <dc:Bounds x="913" y="547" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="931" y="588" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s5niqb_di" bpmnElement="SequenceFlow_1s5niqb">
+        <di:waypoint xsi:type="dc:Point" x="289" y="565" />
+        <di:waypoint xsi:type="dc:Point" x="384" y="565" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="337" y="550" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06s5eu4_di" bpmnElement="SequenceFlow_06s5eu4">
+        <di:waypoint xsi:type="dc:Point" x="484" y="565" />
+        <di:waypoint xsi:type="dc:Point" x="563" y="565" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="524" y="550" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1reso2f_di" bpmnElement="SequenceFlow_1reso2f">
+        <di:waypoint xsi:type="dc:Point" x="663" y="565" />
+        <di:waypoint xsi:type="dc:Point" x="738" y="565" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="701" y="550" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ghqolv_di" bpmnElement="SequenceFlow_1ghqolv">
+        <di:waypoint xsi:type="dc:Point" x="838" y="565" />
+        <di:waypoint xsi:type="dc:Point" x="913" y="565" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="876" y="550" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_095crcd_di" bpmnElement="SequenceFlow_095crcd">
+        <di:waypoint xsi:type="dc:Point" x="1186" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1253" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1220" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n4umjf_di" bpmnElement="SequenceFlow_0n4umjf">
+        <di:waypoint xsi:type="dc:Point" x="119" y="565" />
+        <di:waypoint xsi:type="dc:Point" x="189" y="565" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="154" y="550" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0rt8wax_di" bpmnElement="SequenceFlow_0rt8wax">
+        <di:waypoint xsi:type="dc:Point" x="442" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="515" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="479" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eto8sn_di" bpmnElement="SequenceFlow_0eto8sn">
+        <di:waypoint xsi:type="dc:Point" x="615" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="673" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="644" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1gpvlh8_di" bpmnElement="Task_19xbdbu">
+        <dc:Bounds x="342" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rb2dsd_di" bpmnElement="Task_1nko5zz">
+        <dc:Bounds x="515" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteSDNCNetworkResource.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteSDNCNetworkResource.bpmn
new file mode 100644
index 0000000..a1c75a8
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteSDNCNetworkResource.bpmn
@@ -0,0 +1,258 @@
+<?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.10.0">
+  <bpmn:process id="DeleteSDNCNetworkResource" name="DeleteSDNCNetworkResource" isExecutable="true">
+    <bpmn:startEvent id="deleteNetworkResource_StartEvent" name="deleteNetworkResource_StartEvent">
+      <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="deleteNetworkResource_StartEvent" targetRef="Task_1dlrfiw" />
+    <bpmn:sequenceFlow id="SequenceFlow_0khtova" sourceRef="PreprocessIncomingRequest_task" targetRef="Task_0tezqd4" />
+    <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="prepare SDNC Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_18l3crb</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0khtova</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DeleteSDNCNetworkResource()
+dcsi.prepareSDNCRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:endEvent id="EndEvent_1x6k78c" name="delete SDNC call end">
+      <bpmn:incoming>SequenceFlow_15wux6a</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:callActivity id="CallActivity_1600xlj" name="Call SDNC RSRC &#10; Adapter V1&#10;" calledElement="sdncAdapter">
+      <bpmn:extensionElements>
+        <camunda:in source="sdncAdapterWorkflowRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="sdncAdapterResponse" target="DELSDNCRES_activateSDNCResponse" />
+        <camunda:out source="SDNCA_ResponseCode" target="DELSDNCRES_sdncDeleteReturnCode" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="DELSDNCRES_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="sdncAdapterWorkflowRequest" target="sdncAdapterWorkflowRequest" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_15mvedq</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1xk5xed</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_1xk5xed" sourceRef="CallActivity_1600xlj" targetRef="Task_0uwlr22" />
+    <bpmn:sequenceFlow id="SequenceFlow_0ow44q0" sourceRef="Task_023hred" targetRef="ScriptTask_1emjxm2" />
+    <bpmn:scriptTask id="Task_023hred" name="post SDNC delete call">
+      <bpmn:incoming>SequenceFlow_1vnx1pp</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0ow44q0</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DeleteSDNCNetworkResource()
+dcsi.postDeleteSDNCCall(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0w2es8j" sourceRef="Task_1dlrfiw" targetRef="Task_13sx2bp" />
+    <bpmn:sequenceFlow id="SequenceFlow_18l3crb" sourceRef="Task_13sx2bp" targetRef="PreprocessIncomingRequest_task" />
+    <bpmn:scriptTask id="Task_1dlrfiw" name="Set the Recipe DesignTimeParam" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0w2es8j</bpmn:outgoing>
+      <bpmn:script><![CDATA[String recipeParamXsdDemo="""{"operationType":"GRE"}"""
+String recipeParamXsd=""
+execution.setVariable("recipeParamXsd", recipeParamXsd)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="Task_13sx2bp" name="Pre Process Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0w2es8j</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_18l3crb</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DeleteSDNCNetworkResource()
+dcsi.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1mz0vdx" sourceRef="Task_0tezqd4" targetRef="Task_18tomkl" />
+    <bpmn:sequenceFlow id="SequenceFlow_15mvedq" sourceRef="Task_18tomkl" targetRef="CallActivity_1600xlj" />
+    <bpmn:scriptTask id="Task_0tezqd4" name="Delete progress update parameters before delete" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0khtova</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1mz0vdx</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DeleteSDNCNetworkResource()
+dcsi.prepareUpdateBeforeDeleteSDNCResource(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="Task_0uwlr22" name="Create progress update parameters After delete" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1xk5xed</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1jr6zi0</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DeleteSDNCNetworkResource()
+dcsi.prepareUpdateAfterDeleteSDNCResource(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:serviceTask id="Task_18tomkl" name="update progress update">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateResOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1mz0vdx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_15mvedq</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:serviceTask id="ServiceTask_1cm8iwr" name="update progress update">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateResOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1jr6zi0</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1vnx1pp</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1jr6zi0" sourceRef="Task_0uwlr22" targetRef="ServiceTask_1cm8iwr" />
+    <bpmn:sequenceFlow id="SequenceFlow_1vnx1pp" sourceRef="ServiceTask_1cm8iwr" targetRef="Task_023hred" />
+    <bpmn:scriptTask id="ScriptTask_1emjxm2" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0ow44q0</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_15wux6a</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DeleteSDNCNetworkResource()
+csi.sendSyncResponse(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_15wux6a" sourceRef="ScriptTask_1emjxm2" targetRef="EndEvent_1x6k78c" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteSDNCNetworkResource">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="deleteNetworkResource_StartEvent">
+        <dc:Bounds x="-111" y="111" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-136" y="147" width="89" height="28" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln">
+        <di:waypoint xsi:type="dc:Point" x="-75" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="-10" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-87.5" y="108" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0khtova_di" bpmnElement="SequenceFlow_0khtova">
+        <di:waypoint xsi:type="dc:Point" x="413" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="460" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="500" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="391.5" y="108" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task">
+        <dc:Bounds x="313" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c">
+        <dc:Bounds x="967" y="317" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="933" y="359" width="79" height="28" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1600xlj_di" bpmnElement="CallActivity_1600xlj">
+        <dc:Bounds x="109" y="295" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xk5xed_di" bpmnElement="SequenceFlow_1xk5xed">
+        <di:waypoint xsi:type="dc:Point" x="209" y="335" />
+        <di:waypoint xsi:type="dc:Point" x="302" y="335" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="210.5" y="314" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ow44q0_di" bpmnElement="SequenceFlow_0ow44q0">
+        <di:waypoint xsi:type="dc:Point" x="735" y="335" />
+        <di:waypoint xsi:type="dc:Point" x="793" y="335" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="719" y="314" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0gyej62_di" bpmnElement="Task_023hred">
+        <dc:Bounds x="635" y="295" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0w2es8j_di" bpmnElement="SequenceFlow_0w2es8j">
+        <di:waypoint xsi:type="dc:Point" x="90" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="148" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="74" y="108" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18l3crb_di" bpmnElement="SequenceFlow_18l3crb">
+        <di:waypoint xsi:type="dc:Point" x="248" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="313" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="235.5" y="108" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0lc6l7a_di" bpmnElement="Task_1dlrfiw">
+        <dc:Bounds x="-10" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_14l9mlv_di" bpmnElement="Task_13sx2bp">
+        <dc:Bounds x="148" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mz0vdx_di" bpmnElement="SequenceFlow_1mz0vdx">
+        <di:waypoint xsi:type="dc:Point" x="606" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="638" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="638" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="738" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="608" y="123" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15mvedq_di" bpmnElement="SequenceFlow_15mvedq">
+        <di:waypoint xsi:type="dc:Point" x="788" y="169" />
+        <di:waypoint xsi:type="dc:Point" x="788" y="218" />
+        <di:waypoint xsi:type="dc:Point" x="0" y="218" />
+        <di:waypoint xsi:type="dc:Point" x="0" y="335" />
+        <di:waypoint xsi:type="dc:Point" x="109" y="335" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="349" y="197" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1kqf4ge_di" bpmnElement="Task_0tezqd4">
+        <dc:Bounds x="506" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0hu4lhm_di" bpmnElement="Task_0uwlr22">
+        <dc:Bounds x="302" y="295" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_1q6ssz7_di" bpmnElement="Task_18tomkl">
+        <dc:Bounds x="738" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_1cm8iwr_di" bpmnElement="ServiceTask_1cm8iwr">
+        <dc:Bounds x="487" y="295" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jr6zi0_di" bpmnElement="SequenceFlow_1jr6zi0">
+        <di:waypoint xsi:type="dc:Point" x="402" y="335" />
+        <di:waypoint xsi:type="dc:Point" x="487" y="335" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="444.5" y="314" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vnx1pp_di" bpmnElement="SequenceFlow_1vnx1pp">
+        <di:waypoint xsi:type="dc:Point" x="587" y="335" />
+        <di:waypoint xsi:type="dc:Point" x="635" y="335" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="566" y="314" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1emjxm2_di" bpmnElement="ScriptTask_1emjxm2">
+        <dc:Bounds x="793" y="295" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_15wux6a_di" bpmnElement="SequenceFlow_15wux6a">
+        <di:waypoint xsi:type="dc:Point" x="893" y="335" />
+        <di:waypoint xsi:type="dc:Point" x="967" y="335" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="930" y="313" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVFCNSResource.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVFCNSResource.bpmn
new file mode 100644
index 0000000..bbc7ead
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVFCNSResource.bpmn
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3">
+  <bpmn:process id="DeleteVFCNSResource" name="DeleteVFCNSResource" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1" name="Start Custom Delete E2E NS">
+      <bpmn:outgoing>SequenceFlow_0x2e9we</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0x2e9we" sourceRef="StartEvent_1" targetRef="Task_0yl3rau" />
+    <bpmn:sequenceFlow id="SequenceFlow_00vpfm3" sourceRef="Task_0yl3rau" targetRef="Task_14gmbq4" />
+    <bpmn:sequenceFlow id="SequenceFlow_1s4cyms" sourceRef="Task_14gmbq4" targetRef="Task_1e27uaw" />
+    <bpmn:endEvent id="EndEvent_07ew0rf" name="End Custom Delete E2E NS">
+      <bpmn:incoming>SequenceFlow_0jvtdhv</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_152xb4z" sourceRef="Task_1e27uaw" targetRef="ScriptTask_0pkuukn" />
+    <bpmn:scriptTask id="Task_0yl3rau" name="DoCustomDeleteE2ENS prepare" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0x2e9we</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_00vpfm3</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DeleteVFCNSResource()
+ddsi.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="Task_1e27uaw" name="Post delet NS resource" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1s4cyms</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_152xb4z</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DeleteVFCNSResource()
+ddsi.postProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="Task_14gmbq4" name="Call Delete NS Instance" calledElement="DoDeleteVFCNetworkServiceInstance">
+      <bpmn:extensionElements>
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="serviceInstanceId" target="serviceId" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="resourceTemplateId" target="resourceTemplateId" />
+        <camunda:in source="resourceInstanceId" target="resourceInstanceId" />
+        <camunda:in source="resourceType" target="resourceType" />
+        <camunda:in source="operationType" target="operationType" />
+        <camunda:out source="operationStatus" target="operationStatus" />
+        <camunda:out source="nsInstanceId" target="nsInstanceId" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_00vpfm3</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1s4cyms</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:subProcess id="SubProcess_11qmm22" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0zwedl6">
+        <bpmn:outgoing>SequenceFlow_0yro7o2</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_10tfowz">
+        <bpmn:incoming>SequenceFlow_0p0ayci</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_0tdtqwh" name="Log / Print Unexpected Error">
+        <bpmn:incoming>SequenceFlow_0yro7o2</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0p0ayci</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_0yro7o2" sourceRef="StartEvent_0zwedl6" targetRef="ScriptTask_0tdtqwh" />
+      <bpmn:sequenceFlow id="SequenceFlow_0p0ayci" sourceRef="ScriptTask_0tdtqwh" targetRef="EndEvent_10tfowz" />
+    </bpmn:subProcess>
+    <bpmn:scriptTask id="ScriptTask_0pkuukn" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_152xb4z</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0jvtdhv</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dsi = new  DeleteVFCNSResource()
+dsi.sendSyncResponse(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0jvtdhv" sourceRef="ScriptTask_0pkuukn" targetRef="EndEvent_07ew0rf" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteVFCNSResource">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="330" y="336" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="312" y="372" width="76" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0x2e9we_di" bpmnElement="SequenceFlow_0x2e9we">
+        <di:waypoint xsi:type="dc:Point" x="366" y="354" />
+        <di:waypoint xsi:type="dc:Point" x="474" y="354" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="375" y="333" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00vpfm3_di" bpmnElement="SequenceFlow_00vpfm3">
+        <di:waypoint xsi:type="dc:Point" x="574" y="354" />
+        <di:waypoint xsi:type="dc:Point" x="661" y="354" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="572.5" y="333" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s4cyms_di" bpmnElement="SequenceFlow_1s4cyms">
+        <di:waypoint xsi:type="dc:Point" x="761" y="354" />
+        <di:waypoint xsi:type="dc:Point" x="889" y="354" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="780" y="333" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_07ew0rf_di" bpmnElement="EndEvent_07ew0rf">
+        <dc:Bounds x="1313" y="336" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1293" y="376" width="76" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_152xb4z_di" bpmnElement="SequenceFlow_152xb4z">
+        <di:waypoint xsi:type="dc:Point" x="989" y="354" />
+        <di:waypoint xsi:type="dc:Point" x="1113" y="354" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1006" y="333" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1ssr09e_di" bpmnElement="Task_0yl3rau">
+        <dc:Bounds x="474" y="314" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_092ktxo_di" bpmnElement="Task_1e27uaw">
+        <dc:Bounds x="889" y="314" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_00p99pt_di" bpmnElement="Task_14gmbq4">
+        <dc:Bounds x="661" y="314" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_11qmm22_di" bpmnElement="SubProcess_11qmm22" isExpanded="true">
+        <dc:Bounds x="636" y="539" width="350" height="200" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0zwedl6_di" bpmnElement="StartEvent_0zwedl6">
+        <dc:Bounds x="667" y="606" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="639" y="644" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_10tfowz_di" bpmnElement="EndEvent_10tfowz">
+        <dc:Bounds x="931" y="606" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="904" y="645" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0tdtqwh_di" bpmnElement="ScriptTask_0tdtqwh">
+        <dc:Bounds x="763" y="584" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yro7o2_di" bpmnElement="SequenceFlow_0yro7o2">
+        <di:waypoint xsi:type="dc:Point" x="703" y="624" />
+        <di:waypoint xsi:type="dc:Point" x="763" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="688" y="603" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0p0ayci_di" bpmnElement="SequenceFlow_0p0ayci">
+        <di:waypoint xsi:type="dc:Point" x="863" y="624" />
+        <di:waypoint xsi:type="dc:Point" x="931" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="852" y="603" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0pkuukn_di" bpmnElement="ScriptTask_0pkuukn">
+        <dc:Bounds x="1113" y="314" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jvtdhv_di" bpmnElement="SequenceFlow_0jvtdhv">
+        <di:waypoint xsi:type="dc:Point" x="1213" y="354" />
+        <di:waypoint xsi:type="dc:Point" x="1313" y="354" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1263" y="333" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVcpeResCustService.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVcpeResCustService.bpmn
new file mode 100644
index 0000000..a835946
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVcpeResCustService.bpmn
@@ -0,0 +1,812 @@
+<?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:process id="DeleteVcpeResCustService" name="DeleteVcpeResCustService" isExecutable="true">
+    <bpmn2:scriptTask id="sendSyncAckResponse_ScriptTask" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def DeleteVcpeResCustService = new DeleteVcpeResCustService()
+DeleteVcpeResCustService.sendSyncResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="sendSyncAckResponse_ScriptTask" targetRef="IntermediateThrowEvent_2" />
+    <bpmn2:startEvent id="createVCPE_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createVCPE_startEvent" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def DeleteVcpeResCustService = new DeleteVcpeResCustService()
+DeleteVcpeResCustService.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="sendSyncAckResponse_ScriptTask" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" name="vCPE-RESCUST">
+      <bpmn2:outgoing>SequenceFlow_10o22u2</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_37" name="vCPE-RESCUST" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:scriptTask id="postProcessAndCompletionRequest_ScriptTask" name="Post Process &#38; Completion Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_12ilko1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def DeleteVcpeResCustService = new DeleteVcpeResCustService()
+DeleteVcpeResCustService.postProcessResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="postProcessAndCompletionRequest_ScriptTask" targetRef="callCompleteMsoProcess_CallActivity" />
+    <bpmn2:callActivity id="callCompleteMsoProcess_CallActivity" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in variables="all" />
+        <camunda:out variables="all" />
+        <camunda:in source="DVRCS_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="requestId" target="requestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <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_29</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="callCompleteMsoProcess_CallActivity" targetRef="ScriptTask_2" />
+    <bpmn2:scriptTask id="ScriptTask_2" name="Set Success Indicator" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[// The following variable is checked by the unit test
+execution.setVariable("DeleteVcpeResCustServiceSuccessIndicator", true)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_2" targetRef="DeleteVCPE_EndEvent" />
+    <bpmn2:endEvent id="DeleteVCPE_EndEvent" name="End">
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_13" />
+    </bpmn2:endEvent>
+    <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1">
+        <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1">
+        <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" />
+      <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def DeleteVcpeResCustService = new DeleteVcpeResCustService()
+DeleteVcpeResCustService.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" />
+    </bpmn2:subProcess>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_4" name="FinishProcess">
+      <bpmn2:outgoing>SequenceFlow_12ilko1</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_39" name="FinishProcess" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:callActivity id="doDeleteServiceInstance_CallActivity" name="DoDelete&#10;ServiceInstance&#10;" calledElement="DoDeleteServiceInstance">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:out source="rollbackData" target="DCRESI_rollbackData" />
+        <camunda:in source="failExists" target="failExists" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:out source="rolledBack" target="DCRESI_rolledBack" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="sdncVersion" target="sdncVersion" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_10o22u2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04ao07f</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_2" name="GoQueryServiceInstance">
+      <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_38" name="QueryServiceInstance" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:subProcess id="SubProcess_0s6hpty" name="Subprocess For Exception / FalloutHandler " triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1bwmffk" name="Fault Start">
+        <bpmn2:outgoing>SequenceFlow_06llof4</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:callActivity id="CallActivity_0jw5tqa" name="Call FalloutHandlerV1" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in source="DVRCS_falloutRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="msoRequestId" target="mso-request-id" />
+          <camunda:in source="serviceInstanceId" 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_0807ukc</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_19yywk8</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:endEvent id="EndEvent_04xute7">
+        <bpmn2:incoming>SequenceFlow_19yywk8</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_0yk02h3" name="Prepare FalloutHandler" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_06llof4</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0807ukc</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def DeleteVcpeResCustService = new DeleteVcpeResCustService()
+DeleteVcpeResCustService.prepareFalloutRequest(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_0807ukc" sourceRef="ScriptTask_0yk02h3" targetRef="CallActivity_0jw5tqa" />
+      <bpmn2:sequenceFlow id="SequenceFlow_19yywk8" sourceRef="CallActivity_0jw5tqa" targetRef="EndEvent_04xute7" />
+      <bpmn2:sequenceFlow id="SequenceFlow_06llof4" sourceRef="StartEvent_1bwmffk" targetRef="ScriptTask_0yk02h3" />
+    </bpmn2:subProcess>
+    <bpmn2:sequenceFlow id="SequenceFlow_10o22u2" sourceRef="IntermediateCatchEvent_3" targetRef="doDeleteServiceInstance_CallActivity" />
+    <bpmn2:sequenceFlow id="SequenceFlow_12ilko1" sourceRef="IntermediateCatchEvent_4" targetRef="postProcessAndCompletionRequest_ScriptTask" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0prlju0" name="GoTo FinishProcess">
+      <bpmn2:incoming>SequenceFlow_04ao07f</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="FinishProcess" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:callActivity id="callGetServiceInstance" name="Get&#10;Service&#10;Instance" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="GENGS_type" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0jek18q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ttswdr</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_05m3m2e" name="Process Response &#38; ready data for subflows" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1ttswdr</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_18103ca</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def DeleteVcpeResCustService = new DeleteVcpeResCustService()
+DeleteVcpeResCustService.prepareServiceDelete(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_112zjtp" name="QueryServiceInstance">
+      <bpmn2:outgoing>SequenceFlow_0jek18q</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="QueryServiceInstance" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_162gs5w" name="GoToDeleteBRG">
+      <bpmn2:incoming>SequenceFlow_18103ca</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="DeleteBRG" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0jek18q" sourceRef="IntermediateCatchEvent_112zjtp" targetRef="callGetServiceInstance" />
+    <bpmn2:sequenceFlow id="SequenceFlow_18103ca" sourceRef="ScriptTask_05m3m2e" targetRef="IntermediateThrowEvent_162gs5w" />
+    <bpmn2:sequenceFlow id="SequenceFlow_04ao07f" sourceRef="doDeleteServiceInstance_CallActivity" targetRef="IntermediateThrowEvent_0prlju0" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1ttswdr" sourceRef="callGetServiceInstance" targetRef="ScriptTask_05m3m2e" />
+    <bpmn2:callActivity id="CallActivity_1yap348" name="Delete BRG Resources&#10;" calledElement="DoDeleteAllottedResourceBRG">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="parentServiceInstanceId" target="parentServiceInstanceId" />
+        <camunda:in source="BRG_allottedResourceId" target="allottedResourceId" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:in source="globalCustomerId" target="globalCustomerId" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_05cjs89</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0snq0kw</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0i8bmrc" name="GoToVCPE-RESCUST">
+      <bpmn2:incoming>SequenceFlow_0zaircn</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="vCPE-RESCUST" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_04bw3vy" name="DeleteBRG">
+      <bpmn2:outgoing>SequenceFlow_09i2jj0</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="DeleteBRG" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0gw5gmo" name="Delete BRG AR?" default="SequenceFlow_03n4wb1">
+      <bpmn2:incoming>SequenceFlow_09i2jj0</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_05cjs89</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_03n4wb1</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1hmeube">
+      <bpmn2:incoming>SequenceFlow_0snq0kw</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_03n4wb1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1jjh8rv</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_12i24vc" name="Delete TXC AR?" default="SequenceFlow_0nk8vsb">
+      <bpmn2:incoming>SequenceFlow_0xgpd0u</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0nk8vsb</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0npvfo3</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0190r3n">
+      <bpmn2:incoming>SequenceFlow_0nk8vsb</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0et9p0i</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0zaircn</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_05cjs89" name="Yes" sourceRef="ExclusiveGateway_0gw5gmo" targetRef="CallActivity_1yap348">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DVRCS_BRG") == null || execution.getVariable("DVRCS_BRG") == true }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0snq0kw" sourceRef="CallActivity_1yap348" targetRef="ExclusiveGateway_1hmeube" />
+    <bpmn2:sequenceFlow id="SequenceFlow_09i2jj0" sourceRef="IntermediateCatchEvent_04bw3vy" targetRef="ExclusiveGateway_0gw5gmo" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0zaircn" sourceRef="ExclusiveGateway_0190r3n" targetRef="IntermediateThrowEvent_0i8bmrc" />
+    <bpmn2:sequenceFlow id="SequenceFlow_03n4wb1" name="No" sourceRef="ExclusiveGateway_0gw5gmo" targetRef="ExclusiveGateway_1hmeube" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1jjh8rv" sourceRef="ExclusiveGateway_1hmeube" targetRef="IntermediateThrowEvent_19nq9li" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0nk8vsb" name="No" sourceRef="ExclusiveGateway_12i24vc" targetRef="ExclusiveGateway_0190r3n" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0npvfo3" name="Yes" sourceRef="ExclusiveGateway_12i24vc" targetRef="CallActivity_00g5q0n">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DVRCS_TunnelXConn") == null || execution.getVariable("DVRCS_TunnelXConn") == true }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:callActivity id="CallActivity_00g5q0n" name="Delete TXC Allotted Resources&#10;" calledElement="DoDeleteAllottedResourceTXC">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="parentServiceInstanceId" target="parentServiceInstanceId" />
+        <camunda:in source="TXC_allottedResourceId" target="allottedResourceId" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:in source="globalCustomerId" target="globalCustomerId" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0npvfo3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0et9p0i</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0et9p0i" sourceRef="CallActivity_00g5q0n" targetRef="ExclusiveGateway_0190r3n" />
+    <bpmn2:callActivity id="CallActivity_14j22w3" name="DoDelete&#10;VNF and Modules&#10;" calledElement="DoDeleteVnfAndModules">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="sdncVersion" target="sdncVersion" />
+        <camunda:out source="rollbackData" target="rollbackData" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" />
+        <camunda:in source="tenantId" target="tenantId" />
+        <camunda:in source="cloudConfiguration" target="cloudConfiguration" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_128485i</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04fys47</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_1csw2q1" name="Prepare to Delete VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1yamcyn</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_19cxgtm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_128485i</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def DeleteVcpeResCustService= new DeleteVcpeResCustService()
+DeleteVcpeResCustService.prepareVnfAndModulesDelete(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1ks536f" name="GoToDeleteTXC">
+      <bpmn2:incoming>SequenceFlow_1lfph6u</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="DeleteTXC" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0hy32qu" name="StartVnfs">
+      <bpmn2:outgoing>SequenceFlow_1ofw0fi</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartVnfs" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0io2vo5" name="Delete VNF?" default="SequenceFlow_0vq7f6b">
+      <bpmn2:incoming>SequenceFlow_1ofw0fi</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1yamcyn</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0vq7f6b</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1bm1vby">
+      <bpmn2:incoming>SequenceFlow_0vq7f6b</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_10scc5r</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lfph6u</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:scriptTask id="ScriptTask_0wqfeak" name="Validate VNF delete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_04fys47</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1o5cutr</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+def DeleteVcpeResCustService= new DeleteVcpeResCustService()
+DeleteVcpeResCustService.validateVnfDelete(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_14hjmu4" name="Delete Additional VNFs?" default="SequenceFlow_10scc5r">
+      <bpmn2:incoming>SequenceFlow_1o5cutr</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_19cxgtm</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_10scc5r</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_128485i" sourceRef="ScriptTask_1csw2q1" targetRef="CallActivity_14j22w3" />
+    <bpmn2:sequenceFlow id="SequenceFlow_04fys47" sourceRef="CallActivity_14j22w3" targetRef="ScriptTask_0wqfeak" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1yamcyn" name="Yes" sourceRef="ExclusiveGateway_0io2vo5" targetRef="ScriptTask_1csw2q1">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DVRCS_vnfsCount") > 0}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_19cxgtm" name="Yes" sourceRef="ExclusiveGateway_14hjmu4" targetRef="ScriptTask_1csw2q1">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DVRCS_vnfsDeletedCount") < execution.getVariable("DVRCS_vnfsCount")}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1lfph6u" sourceRef="ExclusiveGateway_1bm1vby" targetRef="IntermediateThrowEvent_1ks536f" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1ofw0fi" sourceRef="IntermediateCatchEvent_0hy32qu" targetRef="ExclusiveGateway_0io2vo5" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0vq7f6b" name="No" sourceRef="ExclusiveGateway_0io2vo5" targetRef="ExclusiveGateway_1bm1vby" />
+    <bpmn2:sequenceFlow id="SequenceFlow_10scc5r" name="No" sourceRef="ExclusiveGateway_14hjmu4" targetRef="ExclusiveGateway_1bm1vby" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1o5cutr" sourceRef="ScriptTask_0wqfeak" targetRef="ExclusiveGateway_14hjmu4" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_19nq9li" name="GoToStartVnfs">
+      <bpmn2:incoming>SequenceFlow_1jjh8rv</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartVnfs" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1svwsxy" name="DeleteTXC">
+      <bpmn2:outgoing>SequenceFlow_0xgpd0u</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="DeleteTXC" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0xgpd0u" sourceRef="IntermediateCatchEvent_1svwsxy" targetRef="ExclusiveGateway_12i24vc" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteVcpeResCustService">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createVCPE_startEvent">
+        <dc:Bounds x="96" y="121" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="90" y="162" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="285" y="99" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="132" y="139" />
+        <di:waypoint xsi:type="dc:Point" x="285" y="139" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="174" y="139" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_4" bpmnElement="callCompleteMsoProcess_CallActivity">
+        <dc:Bounds x="476" y="1192" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_80" bpmnElement="postProcessAndCompletionRequest_ScriptTask">
+        <dc:Bounds x="285" y="1193" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_61" targetElement="_BPMNShape_ScriptTask_127">
+        <di:waypoint xsi:type="dc:Point" x="385" y="139" />
+        <di:waypoint xsi:type="dc:Point" x="476" y="139" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="274" y="100" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="sendSyncAckResponse_ScriptTask">
+        <dc:Bounds x="476" y="99" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_80" targetElement="_BPMNShape_CallActivity_4">
+        <di:waypoint xsi:type="dc:Point" x="385" y="1233" />
+        <di:waypoint xsi:type="dc:Point" x="476" y="1232" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="431" y="1217.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="DeleteVCPE_EndEvent">
+        <dc:Bounds x="1046" y="1213" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1054" y="1254" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_CallActivity_4" targetElement="_BPMNShape_ScriptTask_337">
+        <di:waypoint xsi:type="dc:Point" x="576" y="1233" />
+        <di:waypoint xsi:type="dc:Point" x="636" y="1233" />
+        <di:waypoint xsi:type="dc:Point" x="636" y="1230" />
+        <di:waypoint xsi:type="dc:Point" x="803" y="1230" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="651" y="1231.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true">
+        <dc:Bounds x="686" y="1374" width="405" height="205" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1">
+        <dc:Bounds x="754" y="1479" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="772" y="1520" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="829" y="1457" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1">
+        <dc:Bounds x="982" y="1479" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1000" y="1520" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269">
+        <di:waypoint xsi:type="dc:Point" x="790" y="1497" />
+        <di:waypoint xsi:type="dc:Point" x="829" y="1497" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="818" y="1497" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219">
+        <di:waypoint xsi:type="dc:Point" x="929" y="1497" />
+        <di:waypoint xsi:type="dc:Point" x="962" y="1497" />
+        <di:waypoint xsi:type="dc:Point" x="962" y="1497" />
+        <di:waypoint xsi:type="dc:Point" x="982" y="1497" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="977" y="1497" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_75" bpmnElement="doDeleteServiceInstance_CallActivity">
+        <dc:Bounds x="285" y="1009" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_127">
+        <di:waypoint xsi:type="dc:Point" x="576" y="139" />
+        <di:waypoint xsi:type="dc:Point" x="728" y="139" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="652" y="124" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_337" bpmnElement="ScriptTask_2">
+        <dc:Bounds x="803" y="1191" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_337" targetElement="_BPMNShape_EndEvent_177">
+        <di:waypoint xsi:type="dc:Point" x="903" y="1230" />
+        <di:waypoint xsi:type="dc:Point" x="1046" y="1231" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="975" y="1215.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_35" bpmnElement="IntermediateCatchEvent_3">
+        <dc:Bounds x="100" y="1031" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="92" y="1067" width="51" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_36" bpmnElement="IntermediateCatchEvent_4">
+        <dc:Bounds x="100" y="1216" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="82" y="1252" width="71" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_49" bpmnElement="IntermediateThrowEvent_2">
+        <dc:Bounds x="728" y="121" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="703" y="162" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0s6hpty_di" bpmnElement="SubProcess_0s6hpty" isExpanded="true">
+        <dc:Bounds x="52" y="1375" width="598" height="203" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1bwmffk_di" bpmnElement="StartEvent_1bwmffk">
+        <dc:Bounds x="123" y="1448" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="117" y="1489" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0jw5tqa_di" bpmnElement="CallActivity_0jw5tqa">
+        <dc:Bounds x="384" y="1426" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_04xute7_di" bpmnElement="EndEvent_04xute7">
+        <dc:Bounds x="539" y="1448" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="557" y="1489" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0yk02h3_di" bpmnElement="ScriptTask_0yk02h3">
+        <dc:Bounds x="237" y="1426" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_10o22u2_di" bpmnElement="SequenceFlow_10o22u2">
+        <di:waypoint xsi:type="dc:Point" x="136" y="1049" />
+        <di:waypoint xsi:type="dc:Point" x="285" y="1049" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="211" y="1034" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_12ilko1_di" bpmnElement="SequenceFlow_12ilko1">
+        <di:waypoint xsi:type="dc:Point" x="136" y="1234" />
+        <di:waypoint xsi:type="dc:Point" x="285" y="1233" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="211" y="1218.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0807ukc_di" bpmnElement="SequenceFlow_0807ukc">
+        <di:waypoint xsi:type="dc:Point" x="337" y="1466" />
+        <di:waypoint xsi:type="dc:Point" x="384" y="1466" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="361" y="1451" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19yywk8_di" bpmnElement="SequenceFlow_19yywk8">
+        <di:waypoint xsi:type="dc:Point" x="484" y="1466" />
+        <di:waypoint xsi:type="dc:Point" x="539" y="1466" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="512" y="1451" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0prlju0_di" bpmnElement="IntermediateThrowEvent_0prlju0">
+        <dc:Bounds x="508" y="1031" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="491" y="1072" width="70" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0nmoax4_di" bpmnElement="callGetServiceInstance">
+        <dc:Bounds x="285" y="254" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_05m3m2e_di" bpmnElement="ScriptTask_05m3m2e">
+        <dc:Bounds x="476" y="254" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_112zjtp_di" bpmnElement="IntermediateCatchEvent_112zjtp">
+        <dc:Bounds x="96" y="276" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="72" y="312" width="81" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_162gs5w_di" bpmnElement="IntermediateThrowEvent_162gs5w">
+        <dc:Bounds x="732" y="276" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="708" y="317" width="82" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jek18q_di" bpmnElement="SequenceFlow_0jek18q">
+        <di:waypoint xsi:type="dc:Point" x="132" y="294" />
+        <di:waypoint xsi:type="dc:Point" x="285" y="294" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="209" y="279" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18103ca_di" bpmnElement="SequenceFlow_18103ca">
+        <di:waypoint xsi:type="dc:Point" x="576" y="294" />
+        <di:waypoint xsi:type="dc:Point" x="732" y="294" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="654" y="279" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04ao07f_di" bpmnElement="SequenceFlow_04ao07f">
+        <di:waypoint xsi:type="dc:Point" x="385" y="1049" />
+        <di:waypoint xsi:type="dc:Point" x="508" y="1049" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="447" y="1034" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ttswdr_di" bpmnElement="SequenceFlow_1ttswdr">
+        <di:waypoint xsi:type="dc:Point" x="385" y="294" />
+        <di:waypoint xsi:type="dc:Point" x="422" y="294" />
+        <di:waypoint xsi:type="dc:Point" x="422" y="294" />
+        <di:waypoint xsi:type="dc:Point" x="476" y="294" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="437" y="294" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06llof4_di" bpmnElement="SequenceFlow_06llof4">
+        <di:waypoint xsi:type="dc:Point" x="159" y="1466" />
+        <di:waypoint xsi:type="dc:Point" x="237" y="1466" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="198" y="1441" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1yap348_di" bpmnElement="CallActivity_1yap348">
+        <dc:Bounds x="346" y="356" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0i8bmrc_di" bpmnElement="IntermediateThrowEvent_0i8bmrc">
+        <dc:Bounds x="1046" y="479" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1023" y="520" width="85" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_04bw3vy_di" bpmnElement="IntermediateCatchEvent_04bw3vy">
+        <dc:Bounds x="96" y="489" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="87" y="525" width="56" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0gw5gmo_di" bpmnElement="ExclusiveGateway_0gw5gmo" isMarkerVisible="true">
+        <dc:Bounds x="235" y="482" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="294" y="495" width="86" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1hmeube_di" bpmnElement="ExclusiveGateway_1hmeube" isMarkerVisible="true">
+        <dc:Bounds x="501" y="462" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="526" y="512" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_12i24vc_di" bpmnElement="ExclusiveGateway_12i24vc" isMarkerVisible="true">
+        <dc:Bounds x="658" y="462" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="715" y="475" width="84" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0190r3n_di" bpmnElement="ExclusiveGateway_0190r3n" isMarkerVisible="true">
+        <dc:Bounds x="911" y="472" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="936" y="522" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_05cjs89_di" bpmnElement="SequenceFlow_05cjs89">
+        <di:waypoint xsi:type="dc:Point" x="260" y="482" />
+        <di:waypoint xsi:type="dc:Point" x="260" y="396" />
+        <di:waypoint xsi:type="dc:Point" x="346" y="396" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="267" y="429" width="17" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0snq0kw_di" bpmnElement="SequenceFlow_0snq0kw">
+        <di:waypoint xsi:type="dc:Point" x="446" y="396" />
+        <di:waypoint xsi:type="dc:Point" x="527" y="396" />
+        <di:waypoint xsi:type="dc:Point" x="527" y="463" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="487" y="381" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_09i2jj0_di" bpmnElement="SequenceFlow_09i2jj0">
+        <di:waypoint xsi:type="dc:Point" x="132" y="507" />
+        <di:waypoint xsi:type="dc:Point" x="235" y="507" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="184" y="492" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zaircn_di" bpmnElement="SequenceFlow_0zaircn">
+        <di:waypoint xsi:type="dc:Point" x="961" y="497" />
+        <di:waypoint xsi:type="dc:Point" x="1004" y="497" />
+        <di:waypoint xsi:type="dc:Point" x="1004" y="497" />
+        <di:waypoint xsi:type="dc:Point" x="1046" y="497" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1019" y="497" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_03n4wb1_di" bpmnElement="SequenceFlow_03n4wb1">
+        <di:waypoint xsi:type="dc:Point" x="260" y="532" />
+        <di:waypoint xsi:type="dc:Point" x="260" y="567" />
+        <di:waypoint xsi:type="dc:Point" x="526" y="567" />
+        <di:waypoint xsi:type="dc:Point" x="526" y="512" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="389" y="552" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jjh8rv_di" bpmnElement="SequenceFlow_1jjh8rv">
+        <di:waypoint xsi:type="dc:Point" x="551" y="487" />
+        <di:waypoint xsi:type="dc:Point" x="576" y="487" />
+        <di:waypoint xsi:type="dc:Point" x="576" y="562" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="518.5" y="472" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0nk8vsb_di" bpmnElement="SequenceFlow_0nk8vsb">
+        <di:waypoint xsi:type="dc:Point" x="683" y="512" />
+        <di:waypoint xsi:type="dc:Point" x="683" y="557" />
+        <di:waypoint xsi:type="dc:Point" x="936" y="557" />
+        <di:waypoint xsi:type="dc:Point" x="936" y="522" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="803" y="542" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0npvfo3_di" bpmnElement="SequenceFlow_0npvfo3">
+        <di:waypoint xsi:type="dc:Point" x="683" y="462" />
+        <di:waypoint xsi:type="dc:Point" x="683" y="396" />
+        <di:waypoint xsi:type="dc:Point" x="770" y="396" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="693" y="433" width="17" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_00g5q0n_di" bpmnElement="CallActivity_00g5q0n">
+        <dc:Bounds x="771" y="356" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0et9p0i_di" bpmnElement="SequenceFlow_0et9p0i">
+        <di:waypoint xsi:type="dc:Point" x="871" y="396" />
+        <di:waypoint xsi:type="dc:Point" x="936" y="396" />
+        <di:waypoint xsi:type="dc:Point" x="936" y="472" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="904" y="381" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_14j22w3_di" bpmnElement="CallActivity_14j22w3">
+        <dc:Bounds x="578" y="759" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1csw2q1_di" bpmnElement="ScriptTask_1csw2q1">
+        <dc:Bounds x="436" y="759" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1ks536f_di" bpmnElement="IntermediateThrowEvent_1ks536f">
+        <dc:Bounds x="1059" y="848" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1033" y="889" width="87" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0hy32qu_di" bpmnElement="IntermediateCatchEvent_0hy32qu">
+        <dc:Bounds x="109" y="864" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="102" y="900" width="48" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0io2vo5_di" bpmnElement="ExclusiveGateway_0io2vo5" isMarkerVisible="true">
+        <dc:Bounds x="358" y="857" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="417" y="889" width="65" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1bm1vby_di" bpmnElement="ExclusiveGateway_1bm1vby" isMarkerVisible="true">
+        <dc:Bounds x="924" y="841" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="904" y="896" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0wqfeak_di" bpmnElement="ScriptTask_0wqfeak">
+        <dc:Bounds x="710" y="759" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_14hjmu4_di" bpmnElement="ExclusiveGateway_14hjmu4" isMarkerVisible="true">
+        <dc:Bounds x="851" y="774" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="818" y="832" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_128485i_di" bpmnElement="SequenceFlow_128485i">
+        <di:waypoint xsi:type="dc:Point" x="536" y="799" />
+        <di:waypoint xsi:type="dc:Point" x="578" y="799" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="512" y="784" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04fys47_di" bpmnElement="SequenceFlow_04fys47">
+        <di:waypoint xsi:type="dc:Point" x="678" y="799" />
+        <di:waypoint xsi:type="dc:Point" x="710" y="799" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="649" y="774" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yamcyn_di" bpmnElement="SequenceFlow_1yamcyn">
+        <di:waypoint xsi:type="dc:Point" x="383" y="857" />
+        <di:waypoint xsi:type="dc:Point" x="383" y="799" />
+        <di:waypoint xsi:type="dc:Point" x="436" y="799" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="388" y="818" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19cxgtm_di" bpmnElement="SequenceFlow_19cxgtm">
+        <di:waypoint xsi:type="dc:Point" x="876" y="774" />
+        <di:waypoint xsi:type="dc:Point" x="876" y="688" />
+        <di:waypoint xsi:type="dc:Point" x="486" y="688" />
+        <di:waypoint xsi:type="dc:Point" x="486" y="759" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="671" y="670" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lfph6u_di" bpmnElement="SequenceFlow_1lfph6u">
+        <di:waypoint xsi:type="dc:Point" x="974" y="866" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="866" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="971.5" y="845" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ofw0fi_di" bpmnElement="SequenceFlow_1ofw0fi">
+        <di:waypoint xsi:type="dc:Point" x="145" y="882" />
+        <di:waypoint xsi:type="dc:Point" x="358" y="882" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="207.5" y="857" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vq7f6b_di" bpmnElement="SequenceFlow_0vq7f6b">
+        <di:waypoint xsi:type="dc:Point" x="383" y="908" />
+        <di:waypoint xsi:type="dc:Point" x="383" y="931" />
+        <di:waypoint xsi:type="dc:Point" x="949" y="931" />
+        <di:waypoint xsi:type="dc:Point" x="949" y="892" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="628" y="907" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_10scc5r_di" bpmnElement="SequenceFlow_10scc5r">
+        <di:waypoint xsi:type="dc:Point" x="901" y="799" />
+        <di:waypoint xsi:type="dc:Point" x="949" y="799" />
+        <di:waypoint xsi:type="dc:Point" x="949" y="841" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="917" y="784" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1o5cutr_di" bpmnElement="SequenceFlow_1o5cutr">
+        <di:waypoint xsi:type="dc:Point" x="810" y="799" />
+        <di:waypoint xsi:type="dc:Point" x="851" y="799" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="786.5" y="784" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_19nq9li_di" bpmnElement="IntermediateThrowEvent_19nq9li">
+        <dc:Bounds x="558" y="562" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="537" y="603" width="80" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1svwsxy_di" bpmnElement="IntermediateCatchEvent_1svwsxy">
+        <dc:Bounds x="591" y="378" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="590" y="362" width="56" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xgpd0u_di" bpmnElement="SequenceFlow_0xgpd0u">
+        <di:waypoint xsi:type="dc:Point" x="609" y="414" />
+        <di:waypoint xsi:type="dc:Point" x="609" y="487" />
+        <di:waypoint xsi:type="dc:Point" x="658" y="487" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="624" y="444.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVfModuleInfra.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVfModuleInfra.bpmn
new file mode 100644
index 0000000..bfe5e02
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVfModuleInfra.bpmn
@@ -0,0 +1,331 @@
+<?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="DeleteVfModuleInfra" name="DeleteVfModuleInfra" isExecutable="true">
+    <bpmn2:scriptTask id="ScriptTask_1" name="Send Synch Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dvfm = new DeleteVfModuleInfra()
+dvfm.sendSynchResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="ScriptTask_1" targetRef="ScriptTask_7" />
+    <bpmn2:scriptTask id="ScriptTask_2" name="Pre-Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dvfm = new DeleteVfModuleInfra()
+dvfm.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_2" targetRef="ScriptTask_1" />
+    <bpmn2:scriptTask id="ScriptTask_7" name="DoDeleteVfModule (prep)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dvfm = new DeleteVfModuleInfra()
+dvfm.prepDoDeleteVfModule(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="ScriptTask_6" name="DoDeleteVfModule" calledElement="DoDeleteVfModule">
+      <bpmn2:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="DELVfModI_requestId" target="requestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="vfModuleId" target="vfModuleId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="DELVfModI_vfModuleName" target="vfModuleName" />
+        <camunda:in source="vfModuleModelInfo" target="vfModuleModelInfo" />
+        <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>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="ScriptTask_7" targetRef="ScriptTask_6" />
+    <bpmn2:callActivity id="CallActivity_1" name="Completion Handler" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in source="DELVfModI_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("DeleteVfModuleInfraSuccessIndicator", 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_13</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dvfm = new DeleteVfModuleInfra()
+dvfm.completionHandlerPrep(execution, 'DELVfModI_CompletionHandlerRequest')
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_10" targetRef="CallActivity_1" />
+    <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ScriptTask_6" targetRef="ScriptTask_5" />
+    <bpmn2:serviceTask id="ScriptTask_8" name="UpdateInfraRequest">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint", execution)}]]></camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</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="payload">${DELVfModI_updateInfraRequest}</camunda:inputParameter>
+            <camunda:outputParameter name="DELVfModI_updateInfraRequestResponse">${response}</camunda:outputParameter>
+            <camunda:outputParameter name="DELVfModI_updateInfraRequestResponseCode">${statusCode}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>soap-http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="ScriptTask_8" targetRef="ScriptTask_10" />
+    <bpmn2:scriptTask id="ScriptTask_5" name="Update Infra Request (prep)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dvfm = new DeleteVfModuleInfra()
+dvfm.prepUpdateInfraRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="ScriptTask_5" targetRef="ScriptTask_8" />
+    <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="ScriptTask_3" />
+      <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dvfm = new DeleteVfModuleInfra()
+dvfm.falloutHandlerPrep(execution, 'DELVfModI_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="DELVfModI_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: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="ScriptTask_2" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteVfModuleInfra">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1">
+        <dc:Bounds x="144" y="72" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="145" y="113" width="34" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_125" bpmnElement="EndEvent_1">
+        <dc:Bounds x="605" y="370" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="598" y="411" width="50" height="22" />
+        </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="180" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="299" y="90" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="230" y="90" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="ScriptTask_2">
+        <dc:Bounds x="299" 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="399" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="449" y="90" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="433" y="90" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_125" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="449" y="50" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_125" targetElement="_BPMNShape_ScriptTask_130">
+        <di:waypoint xsi:type="dc:Point" x="498" y="130" />
+        <di:waypoint xsi:type="dc:Point" x="498" y="160" />
+        <di:waypoint xsi:type="dc:Point" x="199" y="160" />
+        <di:waypoint xsi:type="dc:Point" x="199" y="190" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="717" y="169" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4">
+        <dc:Bounds x="449" y="348" 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="549" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="605" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="723" y="186" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_130" bpmnElement="ScriptTask_7">
+        <dc:Bounds x="149" y="190" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="ScriptTask_10">
+        <dc:Bounds x="149" y="348" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1">
+        <dc:Bounds x="299" y="348" 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="249" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="299" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="271" y="394" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_17" bpmnElement="SubProcess_1" isExpanded="true">
+        <dc:Bounds x="65" y="536" width="565" height="241" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3">
+        <dc:Bounds x="129" y="630" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="98" y="671" width="98" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_136" bpmnElement="ScriptTask_3">
+        <dc:Bounds x="209" y="608" 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="165" y="648" />
+        <di:waypoint xsi:type="dc:Point" x="209" y="648" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="209" y="948" width="6" height="6" />
+        </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="309" y="648" />
+        <di:waypoint xsi:type="dc:Point" x="377" y="648" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="325" y="648" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_126" bpmnElement="EndEvent_2">
+        <dc:Bounds x="533" y="630" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="551" y="671" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_43" bpmnElement="BoundaryEvent_1">
+        <dc:Bounds x="612" y="630" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="627" y="671" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_127" bpmnElement="EndEvent_3">
+        <dc:Bounds x="704" y="630" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="722" y="671" 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="648" y="648" />
+        <di:waypoint xsi:type="dc:Point" x="704" y="648" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="693" y="948" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_28" bpmnElement="CallActivity_2">
+        <dc:Bounds x="377" y="608" 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="399" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="449" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="439" y="356" width="6" height="6" />
+        </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="477" y="648" />
+        <di:waypoint xsi:type="dc:Point" x="533" y="648" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="373" y="456" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_181" bpmnElement="ScriptTask_6">
+        <dc:Bounds x="299" y="190" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ScriptTask_130" targetElement="_BPMNShape_ScriptTask_181">
+        <di:waypoint xsi:type="dc:Point" x="249" y="230" />
+        <di:waypoint xsi:type="dc:Point" x="299" y="230" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_182" bpmnElement="ScriptTask_5">
+        <dc:Bounds x="453" y="190" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_183" bpmnElement="ScriptTask_8">
+        <dc:Bounds x="598" y="190" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ScriptTask_181" targetElement="_BPMNShape_ScriptTask_182">
+        <di:waypoint xsi:type="dc:Point" x="399" y="230" />
+        <di:waypoint xsi:type="dc:Point" x="453" y="230" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="613" y="314" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_182" targetElement="_BPMNShape_ScriptTask_183">
+        <di:waypoint xsi:type="dc:Point" x="553" y="230" />
+        <di:waypoint xsi:type="dc:Point" x="598" y="230" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="575" y="230" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_183" targetElement="_BPMNShape_ScriptTask_133">
+        <di:waypoint xsi:type="dc:Point" x="647" y="270" />
+        <di:waypoint xsi:type="dc:Point" x="647" y="304" />
+        <di:waypoint xsi:type="dc:Point" x="199" y="304" />
+        <di:waypoint xsi:type="dc:Point" x="199" y="348" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="345" y="280" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVfModuleVolumeInfraV1.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVfModuleVolumeInfraV1.bpmn
new file mode 100644
index 0000000..b7ce608
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVfModuleVolumeInfraV1.bpmn
@@ -0,0 +1,568 @@
+<?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="DeleteVfModuleVolumeInfraV1" name="DeleteVfModuleVolumeInfraV1" isExecutable="true">
+    <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteVfMod = new DeleteVfModuleVolumeInfraV1()
+deleteVfMod.executeMethod('preProcessRequest', execution, isDebugLogEnabled)
+
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="sendSyncAckResponse_ScriptTask" />
+    <bpmn2:startEvent id="deleteNetwork_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="deleteNetwork_startEvent" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:scriptTask id="sendSyncAckResponse_ScriptTask" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteVfMod = new DeleteVfModuleVolumeInfraV1()
+deleteVfMod.executeMethod('sendSyncResponse', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="sendSyncAckResponse_ScriptTask" targetRef="ScriptTask_callRestCloudRegion" />
+    <bpmn2:scriptTask id="ScriptTask_callRestCloudRegion" name="Call REST Query Cloud Region " scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def delVfModuleVol = new DeleteVfModuleVolumeInfraV1()
+delVfModuleVol.executeMethod('callRESTQueryAAICloudRegion', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="prepareVnfAdapterDelete_ScriptTask_1" name="Prepare Vnf Adapter Delete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteVfMod = new DeleteVfModuleVolumeInfraV1()
+deleteVfMod.executeMethod('prepareVnfAdapterDeleteRequest', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="prepareVnfAdapterDelete_ScriptTask_1" targetRef="callVnfAdapterDeleteSubflow_CallActivity" />
+    <bpmn2:endEvent id="EndEvent_5">
+      <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" errorRef="Error_1" />
+    </bpmn2:endEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_3" name="TenantId Match?" default="SequenceFlow_21">
+      <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="ExclusiveGateway_3" targetRef="prepareVnfAdapterDelete_ScriptTask_1">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELVfModVol_tenantId") == execution.getVariable("DELVfModVol_volumeGroupTenantId")}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_21" name="" sourceRef="ExclusiveGateway_3" targetRef="ScriptTask_2" />
+    <bpmn2:callActivity id="callVnfAdapterDeleteSubflow_CallActivity" name="Call Vnf Adapter Delete subflow" calledElement="vnfAdapterRestV1">
+      <bpmn2:extensionElements>
+        <camunda:in source="DELVfModVol_deleteVnfARequest" target="vnfAdapterRestV1Request" />
+        <camunda:out source="vnfAdapterRestV1Response" target="DELVfModVol_deleteVnfAResponse" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:in variables="all" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="VNFREST_SuccessIndicator" target="VNFREST_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="callVnfAdapterDeleteSubflow_CallActivity" targetRef="ExclusiveGateway_2" />
+    <bpmn2:scriptTask id="callAAIQuery_scriptTask" name="Query AAI for Volume Group Info" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteVfMod = new DeleteVfModuleVolumeInfraV1()
+deleteVfMod.executeMethod('queryAAIForVolumeGroup', execution, isDebugLogEnabled)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="callAAIQuery_scriptTask" targetRef="ExclusiveGateway_3" />
+    <bpmn2:scriptTask id="ScriptTask_2" name="Handle TenantId Mismatch" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteVfMod = new DeleteVfModuleVolumeInfraV1()
+deleteVfMod.executeMethod('handleTenantIdMismatch', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ScriptTask_2" targetRef="EndEvent_5" />
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_callRestCloudRegion" targetRef="ExclusiveGateway_1" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="is Cloud Region Ok?" default="SequenceFlow_4">
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ExclusiveGateway_1" targetRef="EndEvent_3" />
+    <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ExclusiveGateway_1" targetRef="callAAIQuery_scriptTask">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELVfModVol_isCloudRegionGood") == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="ErrorEventDefinition_3" errorRef="Error_1" />
+    </bpmn2:endEvent>
+    <bpmn2:subProcess id="subProcessException_SubProcess" name="Subprocess For Exception / FalloutHandler " triggeredByEvent="true">
+      <bpmn2:startEvent id="subProcessStart_StartEvent" name="Fault Start">
+        <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" />
+      </bpmn2:startEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="subProcessStart_StartEvent" targetRef="ExclusiveGateway_synResponseSent" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_synResponseSent" name="Sync response sent?" default="SequenceFlow_responseNotSent">
+        <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_responseNotSent</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_responseSent</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:scriptTask id="ScriptTask_4" name="Send Sync Ack Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_responseNotSent</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteVfMod = new  DeleteVfModuleVolumeInfraV1()
+deleteVfMod.executeMethod('sendSyncError', execution, isDebugLogEnabled)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_responseNotSent" name="No" sourceRef="ExclusiveGateway_synResponseSent" targetRef="ScriptTask_4" />
+      <bpmn2:sequenceFlow id="SequenceFlow_responseSent" name="Yes" sourceRef="ExclusiveGateway_synResponseSent" targetRef="prepareFalloutHandler_ScriptTask">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{DELVfModVol_syncResponseSent == true}</bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:scriptTask id="prepareFalloutHandler_ScriptTask" name="Prepare FalloutHandler" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_responseSent</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_25</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteVfMod = new DeleteVfModuleVolumeInfraV1()
+deleteVfMod.executeMethod('prepareFalloutHandler', execution, isDebugLogEnabled)
+]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_25" name="" sourceRef="prepareFalloutHandler_ScriptTask" targetRef="faultHandler_CallActivity" />
+      <bpmn2:callActivity id="faultHandler_CallActivity" name="Call FalloutHandlerV1" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in variables="all" />
+          <camunda:out variables="all" />
+          <camunda:in source="DELVfModVol_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_25</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="faultHandler_CallActivity" targetRef="EndEvent_1" />
+      <bpmn2:endEvent id="EndEvent_1">
+        <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" />
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_4" targetRef="prepareFalloutHandler_ScriptTask" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="prepareDBInfraRequest_ScriptTask" name="Prepare DB Infra Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_37</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteVfMod = new DeleteVfModuleVolumeInfraV1()
+deleteVfMod.executeMethod('prepareDBRequest', execution, isDebugLogEnabled)
+
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_37" name="" sourceRef="prepareDBInfraRequest_ScriptTask" targetRef="callDBInfra_ServiceTask" />
+    <bpmn2:scriptTask id="postProcessAndCompletionRequest_ScriptTask" name="Prepare Completion Handler Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_27</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteVfMod = new DeleteVfModuleVolumeInfraV1()
+deleteVfMod.executeMethod('prepareCompletionHandlerRequest', execution, isDebugLogEnabled)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="postProcessAndCompletionRequest_ScriptTask" targetRef="callCompleteMsoProcess_CallActivity" />
+    <bpmn2:scriptTask id="ScriptTask_3" name="Set Success" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[// The following variable is checked by the unit test
+execution.setVariable("DELVfModVol_TransactionSuccessIndicator", true)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_24" name="" sourceRef="ScriptTask_3" targetRef="EndEvent_2" />
+    <bpmn2:callActivity id="callCompleteMsoProcess_CallActivity" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in variables="all" />
+        <camunda:out variables="all" />
+        <camunda:in source="DELVfModVol_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_29</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="callCompleteMsoProcess_CallActivity" targetRef="ScriptTask_3" />
+    <bpmn2:endEvent id="EndEvent_2" name="End">
+      <bpmn2:incoming>SequenceFlow_24</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="TerminateEventDefinition_3" />
+    </bpmn2:endEvent>
+    <bpmn2:serviceTask id="callDBInfra_ServiceTask" name="Call DB Infra Update">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint", execution)}]]></camunda:inputParameter>
+            <camunda:inputParameter name="payload">${DELVfModVol_updateInfraRequest}</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="DELVfModVol_createDBResponse">${response}</camunda:outputParameter>
+            <camunda:outputParameter name="DELVfModVol_dbReturnCode">${statusCode}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_37</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_27</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_27" name="" sourceRef="callDBInfra_ServiceTask" targetRef="postProcessAndCompletionRequest_ScriptTask" />
+    <bpmn2:scriptTask id="callRESTDeleteVolGrpId_ScriptTask" name="Call REST Delete AAI Vol Grp Id" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_vnfAdapterCallOK</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteVfMod = new DeleteVfModuleVolumeInfraV1()
+deleteVfMod.executeMethod('deleteVolGrpId', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="callRESTDeleteVolGrpId_ScriptTask" targetRef="prepareDBInfraRequest_ScriptTask" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_2" name="Is call to VNF Adapter OK?" default="SequenceFlow_vnfAdapterCallNotOK">
+      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_vnfAdapterCallOK</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_vnfAdapterCallNotOK</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_vnfAdapterCallOK" name="" sourceRef="ExclusiveGateway_2" targetRef="callRESTDeleteVolGrpId_ScriptTask">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{VNFREST_SuccessIndicator == true}</bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:endEvent id="EndEvent_6">
+      <bpmn2:incoming>SequenceFlow_vnfAdapterCallNotOK</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="ErrorEventDefinition_5" errorRef="Error_1" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_vnfAdapterCallNotOK" name="" sourceRef="ExclusiveGateway_2" targetRef="EndEvent_6" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteVfModuleVolumeInfraV1">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="deleteNetwork_startEvent">
+        <dc:Bounds x="103" y="94" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="89" y="135" width="65" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="355" y="72" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="139" y="112" />
+        <di:waypoint xsi:type="dc:Point" x="355" y="112" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="116" y="12" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_62" bpmnElement="callAAIQuery_scriptTask">
+        <dc:Bounds x="864" y="72" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_3" bpmnElement="faultHandler_CallActivity">
+        <dc:Bounds x="438" y="360" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_4" bpmnElement="callCompleteMsoProcess_CallActivity">
+        <dc:Bounds x="993" y="985" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_16" bpmnElement="subProcessException_SubProcess" isExpanded="true">
+        <dc:Bounds x="37" y="288" width="660" height="337" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="subProcessStart_StartEvent">
+        <dc:Bounds x="60" y="383" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="45" y="424" width="67" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_79" bpmnElement="prepareFalloutHandler_ScriptTask">
+        <dc:Bounds x="288" y="360" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_80" bpmnElement="postProcessAndCompletionRequest_ScriptTask">
+        <dc:Bounds x="993" y="877" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_83" bpmnElement="prepareDBInfraRequest_ScriptTask">
+        <dc:Bounds x="993" y="660" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_86" bpmnElement="callDBInfra_ServiceTask">
+        <dc:Bounds x="993" y="769" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_61" targetElement="_BPMNShape_ScriptTask_127">
+        <di:waypoint xsi:type="dc:Point" x="455" y="112" />
+        <di:waypoint xsi:type="dc:Point" x="496" y="112" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="486" y="112" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="sendSyncAckResponse_ScriptTask">
+        <dc:Bounds x="496" y="72" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_35" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ExclusiveGateway_255">
+        <di:waypoint xsi:type="dc:Point" x="96" y="401" />
+        <di:waypoint xsi:type="dc:Point" x="118" y="401" />
+        <di:waypoint xsi:type="dc:Point" x="118" y="400" />
+        <di:waypoint xsi:type="dc:Point" x="144" y="400" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="99" y="401" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_38" bpmnElement="SequenceFlow_25" sourceElement="_BPMNShape_ScriptTask_79" targetElement="_BPMNShape_CallActivity_3">
+        <di:waypoint xsi:type="dc:Point" x="388" y="400" />
+        <di:waypoint xsi:type="dc:Point" x="438" y="400" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="413" y="400" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_40" bpmnElement="SequenceFlow_27" sourceElement="_BPMNShape_ServiceTask_86" targetElement="_BPMNShape_ScriptTask_80">
+        <di:waypoint xsi:type="dc:Point" x="1043" y="849" />
+        <di:waypoint xsi:type="dc:Point" x="1043" y="877" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1258" y="857" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_80" targetElement="_BPMNShape_CallActivity_4">
+        <di:waypoint xsi:type="dc:Point" x="1043" y="957" />
+        <di:waypoint xsi:type="dc:Point" x="1043" y="985" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1289" y="898" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_134" bpmnElement="callRESTDeleteVolGrpId_ScriptTask">
+        <dc:Bounds x="993" y="528" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_54" bpmnElement="SequenceFlow_35" sourceElement="_BPMNShape_ScriptTask_134" targetElement="_BPMNShape_ScriptTask_83">
+        <di:waypoint xsi:type="dc:Point" x="1043" y="608" />
+        <di:waypoint xsi:type="dc:Point" x="1043" y="660" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1291" y="557" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_58" bpmnElement="SequenceFlow_37" sourceElement="_BPMNShape_ScriptTask_83" targetElement="_BPMNShape_ServiceTask_86">
+        <di:waypoint xsi:type="dc:Point" x="1043" y="740" />
+        <di:waypoint xsi:type="dc:Point" x="1043" y="769" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1258" y="751" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_22" bpmnElement="callVnfAdapterDeleteSubflow_CallActivity">
+        <dc:Bounds x="993" y="300" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_160" bpmnElement="prepareVnfAdapterDelete_ScriptTask_1">
+        <dc:Bounds x="993" y="180" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_160" targetElement="_BPMNShape_CallActivity_22">
+        <di:waypoint xsi:type="dc:Point" x="1043" y="260" />
+        <di:waypoint xsi:type="dc:Point" x="1043" y="300" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1112" y="280" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_CallActivity_22" targetElement="_BPMNShape_ExclusiveGateway_252">
+        <di:waypoint xsi:type="dc:Point" x="1043" y="380" />
+        <di:waypoint xsi:type="dc:Point" x="1043" y="401" />
+        <di:waypoint xsi:type="dc:Point" x="1042" y="401" />
+        <di:waypoint xsi:type="dc:Point" x="1042" y="422" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1039" y="415" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_163" bpmnElement="EndEvent_1">
+        <dc:Bounds x="588" y="382" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="606" y="423" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_3" targetElement="_BPMNShape_EndEvent_163">
+        <di:waypoint xsi:type="dc:Point" x="538" y="400" />
+        <di:waypoint xsi:type="dc:Point" x="588" y="400" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="558" y="400" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_167" bpmnElement="EndEvent_2">
+        <dc:Bounds x="1025" y="1201" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1029" y="1242" width="29" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_CallActivity_4" targetElement="_BPMNShape_ScriptTask_241">
+        <di:waypoint xsi:type="dc:Point" x="1043" y="1065" />
+        <di:waypoint xsi:type="dc:Point" x="1043" y="1093" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1258" y="1083" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_234" bpmnElement="ScriptTask_4">
+        <dc:Bounds x="120" y="492" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_ScriptTask_127" targetElement="_BPMNShape_ScriptTask_251">
+        <di:waypoint xsi:type="dc:Point" x="596" y="112" />
+        <di:waypoint xsi:type="dc:Point" x="623" y="112" />
+        <di:waypoint xsi:type="dc:Point" x="623" y="115" />
+        <di:waypoint xsi:type="dc:Point" x="636" y="115" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="613" y="112" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_62" targetElement="_BPMNShape_ExclusiveGateway_203">
+        <di:waypoint xsi:type="dc:Point" x="964" y="112" />
+        <di:waypoint xsi:type="dc:Point" x="1017" y="111" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1067" y="113" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_203" bpmnElement="ExclusiveGateway_3" isMarkerVisible="true">
+        <dc:Bounds x="1017" y="86" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="984" y="60" width="102" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_240" bpmnElement="ScriptTask_2">
+        <dc:Bounds x="1104" y="72" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ExclusiveGateway_203" targetElement="_BPMNShape_ScriptTask_160">
+        <di:waypoint xsi:type="dc:Point" x="1042" y="136" />
+        <di:waypoint xsi:type="dc:Point" x="1043" y="180" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1040" y="122" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_ExclusiveGateway_203" targetElement="_BPMNShape_ScriptTask_240">
+        <di:waypoint xsi:type="dc:Point" x="1067" y="111" />
+        <di:waypoint xsi:type="dc:Point" x="1085" y="111" />
+        <di:waypoint xsi:type="dc:Point" x="1085" y="112" />
+        <di:waypoint xsi:type="dc:Point" x="1104" y="112" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1216" y="113" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_178" bpmnElement="EndEvent_5">
+        <dc:Bounds x="1242" y="95" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1260" y="136" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_240" targetElement="_BPMNShape_EndEvent_178">
+        <di:waypoint xsi:type="dc:Point" x="1204" y="112" />
+        <di:waypoint xsi:type="dc:Point" x="1222" y="112" />
+        <di:waypoint xsi:type="dc:Point" x="1222" y="113" />
+        <di:waypoint xsi:type="dc:Point" x="1242" y="113" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1220" y="113" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_241" bpmnElement="ScriptTask_3">
+        <dc:Bounds x="993" y="1093" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_24" sourceElement="_BPMNShape_ScriptTask_241" targetElement="_BPMNShape_EndEvent_167">
+        <di:waypoint xsi:type="dc:Point" x="1043" y="1173" />
+        <di:waypoint xsi:type="dc:Point" x="1043" y="1201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1040" y="1320" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_251" bpmnElement="ScriptTask_callRestCloudRegion">
+        <dc:Bounds x="636" y="75" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_223" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true">
+        <dc:Bounds x="774" y="89" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="735" y="40" width="125" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_215" bpmnElement="EndEvent_3">
+        <dc:Bounds x="781" y="170" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="799" y="211" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ExclusiveGateway_223" targetElement="_BPMNShape_EndEvent_215">
+        <di:waypoint xsi:type="dc:Point" x="798" y="139" />
+        <di:waypoint xsi:type="dc:Point" x="798" y="153" />
+        <di:waypoint xsi:type="dc:Point" x="799" y="153" />
+        <di:waypoint xsi:type="dc:Point" x="799" y="170" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="796" y="166" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_251" targetElement="_BPMNShape_ExclusiveGateway_223">
+        <di:waypoint xsi:type="dc:Point" x="736" y="115" />
+        <di:waypoint xsi:type="dc:Point" x="754" y="115" />
+        <di:waypoint xsi:type="dc:Point" x="754" y="114" />
+        <di:waypoint xsi:type="dc:Point" x="774" y="114" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="752" y="114" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ExclusiveGateway_223" targetElement="_BPMNShape_ScriptTask_62">
+        <di:waypoint xsi:type="dc:Point" x="824" y="114" />
+        <di:waypoint xsi:type="dc:Point" x="844" y="114" />
+        <di:waypoint xsi:type="dc:Point" x="844" y="112" />
+        <di:waypoint xsi:type="dc:Point" x="864" y="112" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="841" y="113" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_252" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true">
+        <dc:Bounds x="1017" y="422" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="960" y="477" width="164" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_vnfAdapterCallOK" sourceElement="_BPMNShape_ExclusiveGateway_252" targetElement="_BPMNShape_ScriptTask_134">
+        <di:waypoint xsi:type="dc:Point" x="1042" y="472" />
+        <di:waypoint xsi:type="dc:Point" x="1043" y="528" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1040" y="500" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_236" bpmnElement="EndEvent_6">
+        <dc:Bounds x="1168" y="430" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1186" y="471" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_vnfAdapterCallNotOK" sourceElement="_BPMNShape_ExclusiveGateway_252" targetElement="_BPMNShape_EndEvent_236">
+        <di:waypoint xsi:type="dc:Point" x="1067" y="447" />
+        <di:waypoint xsi:type="dc:Point" x="1117" y="447" />
+        <di:waypoint xsi:type="dc:Point" x="1117" y="448" />
+        <di:waypoint xsi:type="dc:Point" x="1168" y="448" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_255" bpmnElement="ExclusiveGateway_synResponseSent" isMarkerVisible="true">
+        <dc:Bounds x="144" y="375" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="106" y="439" width="129" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_responseNotSent" sourceElement="_BPMNShape_ExclusiveGateway_255" targetElement="_BPMNShape_ScriptTask_234">
+        <di:waypoint xsi:type="dc:Point" x="169" y="425" />
+        <di:waypoint xsi:type="dc:Point" x="169" y="458" />
+        <di:waypoint xsi:type="dc:Point" x="170" y="458" />
+        <di:waypoint xsi:type="dc:Point" x="170" y="492" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="159" y="458" width="22" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_responseSent" sourceElement="_BPMNShape_ExclusiveGateway_255" targetElement="_BPMNShape_ScriptTask_79">
+        <di:waypoint xsi:type="dc:Point" x="194" y="400" />
+        <di:waypoint xsi:type="dc:Point" x="288" y="400" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="204" y="400" width="29" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_234" targetElement="_BPMNShape_ScriptTask_79">
+        <di:waypoint xsi:type="dc:Point" x="220" y="532" />
+        <di:waypoint xsi:type="dc:Point" x="254" y="532" />
+        <di:waypoint xsi:type="dc:Point" x="336" y="532" />
+        <di:waypoint xsi:type="dc:Point" x="336" y="508" />
+        <di:waypoint xsi:type="dc:Point" x="336" y="482" />
+        <di:waypoint xsi:type="dc:Point" x="337" y="440" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="317" y="532" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVnfInfra.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVnfInfra.bpmn
new file mode 100644
index 0000000..6092de6
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVnfInfra.bpmn
Binary files differ
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ReplaceVnfInfra.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ReplaceVnfInfra.bpmn
new file mode 100644
index 0000000..6a157eb
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ReplaceVnfInfra.bpmn
@@ -0,0 +1,1815 @@
+<?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="ReplaceVnfInfra" name="ReplaceVnfInfra" 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.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new ReplaceVnfInfra()
+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.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new ReplaceVnfInfra()
+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("UpdateVfModuleInfraSuccessIndicator", 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_19rrss6</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new ReplaceVnfInfra()
+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_1cl8ayk" />
+      <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0ph6862</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+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="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_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.onap.so.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.onap.so.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" />
+          <camunda:in source="controllerType" target="controllerType" />
+        </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>
+      <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:callActivity id="ScriptTask_6" name="DoDeleteVnfAndModules" calledElement="DoDeleteVnfAndModules">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <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>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="no" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="ScriptTask_10" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1w35ov3" sourceRef="Task_1gg76h7" targetRef="Task_1opcb4j" />
+    <bpmn2:callActivity id="Task_1gg76h7" name="Decompose Service" 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="WorkflowException" target="WorkflowException" />
+        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0y0jt4l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1w35ov3</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <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>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new ReplaceVnfInfra()
+uvfm.getVnfResourceDecomposition(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <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_0jph3mt</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new ReplaceVnfInfra()
+uvfm.checkIfVnfInMaintInAAI(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0usxnlk" sourceRef="Task_0vy2zge" targetRef="ExclusiveGateway_0q323wc" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1bkhs8m" name="no" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="Task_1dtbnuy" />
+    <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_1nodcf9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0k3fx7p</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new ReplaceVnfInfra()
+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_19lg15d</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0usoiza</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_12mfil6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new ReplaceVnfInfra()
+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_14yy8v4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0usxnlk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new ReplaceVnfInfra()
+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_06mv93h" />
+    <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_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_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="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_1cezgw4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0v0u7mf</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <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("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_1bkhs8m">
+      <bpmn2:incoming>SequenceFlow_0k3fx7p</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1bkhs8m</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_11b00u2</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0k3fx7p" sourceRef="Task_0ap39ka" targetRef="ExclusiveGateway_0ud5uwa" />
+    <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_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_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_032i8t0</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1c0vdki" name="no" sourceRef="ExclusiveGateway_1etgtgi" targetRef="Task_0eae8go" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0ulrq9g" name="Error on DoDeleteVnfAndNModules?" camunda:asyncBefore="true" default="SequenceFlow_0bxgny0">
+      <bpmn2:incoming>SequenceFlow_0gzzeru</bpmn2:incoming>
+      <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: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_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_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_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_3</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1sdol24</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_051zp79</bpmn2:incoming>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new ReplaceVnfInfra()
+uvfm.abortProcessing(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0xlxgl0" name="Check Disposition">
+      <bpmn2:incoming>SequenceFlow_0v0u7mf</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0vpd06n</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1qr8msw</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_05gpym3</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0y82zzx" name="Which step to skip?" default="SequenceFlow_051zp79">
+      <bpmn2:incoming>SequenceFlow_05gpym3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_051zp79</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("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_0aldwvz</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_19ba94v</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new ReplaceVnfInfra()
+uvfm.prepDoDeleteVnfAndModules(execution)]]></bpmn2:script>
+    </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.onap.so.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" />
+        <camunda:in source="platform" target="platform" />
+        <camunda:in source="lineOfBusiness" target="lineOfBusiness" />
+      </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?" default="SequenceFlow_04zwhw4">
+      <bpmn2:incoming>SequenceFlow_0he2w4b</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04zwhw4</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0pfvulx</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <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: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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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_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_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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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.onap.so.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">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ReplaceVnfInfra">
+      <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="599" y="1249" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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">
+        <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="525" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="601" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="563" y="222" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4">
+        <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="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="575" y="1267" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="ScriptTask_10">
+        <dc:Bounds x="134" y="1227" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1">
+        <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="234" y="1267" />
+        <di:waypoint xsi:type="dc:Point" x="284" y="1267" />
+        <bpmndi:BPMNLabel>
+          <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="88" y="1467" width="565" height="241" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3">
+        <dc:Bounds x="152" y="1561" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="131" y="1602" width="77" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_136" bpmnElement="ScriptTask_3">
+        <dc:Bounds x="232" y="1539" 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="188" y="1579" />
+        <di:waypoint xsi:type="dc:Point" x="232" y="1579" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="235" y="1879" 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="332" y="1579" />
+        <di:waypoint xsi:type="dc:Point" x="400" y="1579" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="348" y="1579" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_126" bpmnElement="EndEvent_2">
+        <dc:Bounds x="556" y="1561" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="574" y="1602" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_43" bpmnElement="BoundaryEvent_1">
+        <dc:Bounds x="635" y="1561" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="653" y="1602" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_127" bpmnElement="EndEvent_3">
+        <dc:Bounds x="729" y="1561" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="747" 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="671" y="1579" />
+        <di:waypoint xsi:type="dc:Point" x="729" y="1579" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="700" y="1564" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_28" bpmnElement="CallActivity_2">
+        <dc:Bounds x="400" y="1539" 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="384" y="1267" />
+        <di:waypoint xsi:type="dc:Point" x="434" y="1267" />
+        <bpmndi:BPMNLabel>
+          <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="500" y="1579" />
+        <di:waypoint xsi:type="dc:Point" x="556" y="1579" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="393" y="1639" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_181" bpmnElement="ScriptTask_6">
+        <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="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="1218" y="964.4017408047539" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1w35ov3_di" bpmnElement="SequenceFlow_1w35ov3">
+        <di:waypoint xsi:type="dc:Point" x="655" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="718" y="90" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="687" y="75" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0qfx7sz_di" bpmnElement="Task_1gg76h7">
+        <dc:Bounds x="555" y="50" width="100" height="80" />
+      </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="863" y="90" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="841" y="75" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_08xzuox_di" bpmnElement="Task_1opcb4j">
+        <dc:Bounds x="718" 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="555" y="90" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="514" y="75" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_19pf9z8_di" bpmnElement="Task_1rxiqe1">
+        <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="239" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="292" y="237" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="405" y="735" />
+        <di:waypoint xsi:type="dc:Point" x="464" y="735" />
+        <bpmndi:BPMNLabel>
+          <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="718" y="197" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0sgm9bu_di" bpmnElement="Task_1drglpt">
+        <dc:Bounds x="982" y="949" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_16jtt5t_di" bpmnElement="Task_0vy2zge">
+        <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="490" />
+        <di:waypoint xsi:type="dc:Point" x="292" y="490" />
+        <bpmndi:BPMNLabel>
+          <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="490" />
+        <di:waypoint xsi:type="dc:Point" x="601" y="490" />
+        <bpmndi:BPMNLabel>
+          <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="818" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="871" y="490" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="845" y="475" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1uno5rs_di" bpmnElement="SequenceFlow_1uno5rs">
+        <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="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="539" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="601" y="989" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="570" y="974" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xfbwpi_di" bpmnElement="SequenceFlow_1xfbwpi">
+        <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="849" y="974" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <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="273" y="170" width="87" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_16mo99z_di" bpmnElement="SequenceFlow_16mo99z">
+        <di:waypoint xsi:type="dc:Point" x="342" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="425" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="373" y="213" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <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="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="718" y="237" />
+        <bpmndi:BPMNLabel>
+          <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="1173" y="609" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0v0u7mf_di" bpmnElement="SequenceFlow_0v0u7mf">
+        <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="1294" y="634" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_0zbogrm_di" bpmnElement="Task_0zbogrm">
+        <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="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="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="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="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="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="818" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="871" y="237" />
+        <bpmndi:BPMNLabel>
+          <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="465" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="490" />
+        <di:waypoint xsi:type="dc:Point" x="425" y="490" />
+        <bpmndi:BPMNLabel>
+          <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="465" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="490" />
+        <di:waypoint xsi:type="dc:Point" x="718" y="490" />
+        <bpmndi:BPMNLabel>
+          <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="871" y="465" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="464" y="710" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="330" y="964" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="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="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" y="964" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="718" y="989" />
+        <bpmndi:BPMNLabel>
+          <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="880" y="964" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="1131" y="964" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="1082" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="1131" y="989" />
+        <bpmndi:BPMNLabel>
+          <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="1290" y="422" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1gmvi7n_di" bpmnElement="ExclusiveGateway_0xlxgl0" isMarkerVisible="true">
+        <dc:Bounds x="1315" y="624" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="1468" y="624" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="239" y="735" />
+        <di:waypoint xsi:type="dc:Point" x="305" y="735" />
+        <bpmndi:BPMNLabel>
+          <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="139" y="695" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_13zzxzd_di" bpmnElement="Task_040hi91">
+        <dc:Bounds x="567" y="695" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1qpajth_di" bpmnElement="Task_15hpowt">
+        <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="710" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="854" y="659" width="84" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bxgny0_di" bpmnElement="SequenceFlow_0bxgny0">
+        <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="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="667" y="735" />
+        <di:waypoint xsi:type="dc:Point" x="726" y="735" />
+        <bpmndi:BPMNLabel>
+          <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="826" y="735" />
+        <di:waypoint xsi:type="dc:Point" x="871" y="735" />
+        <bpmndi:BPMNLabel>
+          <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="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="1508" y="543" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <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="490" y="291" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <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="632" y="283.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <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="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/so-bpmn-infrastructure-flows/src/main/resources/process/ScaleCustomE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ScaleCustomE2EServiceInstance.bpmn
new file mode 100644
index 0000000..5b9ccea
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/ScaleCustomE2EServiceInstance.bpmn
@@ -0,0 +1,379 @@
+<?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.10.0">
+  <bpmn:process id="ScaleCustomE2EServiceInstance" name="ScaleCustomE2EServiceInstance" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1" name="Scale SI Start Flow">
+      <bpmn:outgoing>SequenceFlow_0c2denm</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:scriptTask id="Task_03ivdxi" name="Pre Process Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0c2denm</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ntnafv</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new ScaleCustomE2EServiceInstance()
+csi.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="Task_0oezp57" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_14zd9we</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0er6ddi</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  ScaleCustomE2EServiceInstance()
+csi.sendSyncResponse(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_13jdprk" name="success ?">
+      <bpmn:incoming>SequenceFlow_1fis1j1</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_06f0dx5</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_19b0pmt</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:scriptTask id="Task_1ogtanl" name="Prepare Completion Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_06f0dx5</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1q6spfu</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new ScaleCustomE2EServiceInstance()
+csi.prepareCompletionRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="Task_1p5x1em" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" />
+        <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" />
+        <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" />
+        <camunda:in source="CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1q6spfu</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0mm4eqd</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:endEvent id="EndEvent_116d9ds" name="End">
+      <bpmn:incoming>SequenceFlow_0mm4eqd</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0mm4eqd" sourceRef="Task_1p5x1em" targetRef="EndEvent_116d9ds" />
+    <bpmn:sequenceFlow id="SequenceFlow_0c2denm" sourceRef="StartEvent_1" targetRef="Task_03ivdxi" />
+    <bpmn:sequenceFlow id="SequenceFlow_1ntnafv" sourceRef="Task_03ivdxi" targetRef="Task_1rsd8qa" />
+    <bpmn:sequenceFlow id="SequenceFlow_0er6ddi" sourceRef="Task_0oezp57" targetRef="CallActivity_1vpyqzt" />
+    <bpmn:sequenceFlow id="SequenceFlow_06f0dx5" name="yes" sourceRef="ExclusiveGateway_13jdprk" targetRef="Task_1ogtanl">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" )  != null && execution.getVariable("jobId" )  != "" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_19b0pmt" name="no" sourceRef="ExclusiveGateway_13jdprk" targetRef="EndEvent_1sz49w7">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" )  == null || execution.getVariable("jobId" )  == "" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:endEvent id="EndEvent_1sz49w7">
+      <bpmn:incoming>SequenceFlow_19b0pmt</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_196t4z3" />
+    </bpmn:endEvent>
+    <bpmn:subProcess id="SubProcess_0bwngpt" name="Sub-process for FalloutHandler and Rollback" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0yncnrj">
+        <bpmn:outgoing>SequenceFlow_04f826i</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_1lp2j7l">
+        <bpmn:incoming>SequenceFlow_1t2ijcu</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_01p0bqh" name="Prepare Fallout Request" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_09z92mf</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1sooz22</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new ScaleCustomE2EServiceInstance()
+csi.prepareFalloutRequest(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:scriptTask id="ScriptTask_1quc7x4" name="Send Error Response" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_04f826i</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_09z92mf</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  ScaleCustomE2EServiceInstance()
+csi.sendSyncError(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_04f826i" sourceRef="StartEvent_0yncnrj" targetRef="ScriptTask_1quc7x4" />
+      <bpmn:sequenceFlow id="SequenceFlow_09z92mf" sourceRef="ScriptTask_1quc7x4" targetRef="ScriptTask_01p0bqh" />
+      <bpmn:sequenceFlow id="SequenceFlow_1t2ijcu" sourceRef="CallActivity_0miglgb" targetRef="EndEvent_1lp2j7l" />
+      <bpmn:sequenceFlow id="SequenceFlow_1sooz22" sourceRef="ScriptTask_01p0bqh" targetRef="CallActivity_0miglgb" />
+      <bpmn:callActivity id="CallActivity_0miglgb" name="Call FalloutHandler" calledElement="FalloutHandler">
+        <bpmn:extensionElements>
+          <camunda:in source="falloutRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="mso-request-id" target="mso-request-id" />
+          <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+          <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" />
+          <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" />
+          <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" />
+        </bpmn:extensionElements>
+        <bpmn:incoming>SequenceFlow_1sooz22</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1t2ijcu</bpmn:outgoing>
+      </bpmn:callActivity>
+    </bpmn:subProcess>
+    <bpmn:subProcess id="SubProcess_10vzjzh" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:scriptTask id="ScriptTask_1jgr212" name="Handle Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0gna7ys</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0re5dm7</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:startEvent id="StartEvent_1awfo4s">
+        <bpmn:outgoing>SequenceFlow_0gna7ys</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_04azej9">
+        <bpmn:incoming>SequenceFlow_0re5dm7</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_0gna7ys" name="" sourceRef="StartEvent_1awfo4s" targetRef="ScriptTask_1jgr212" />
+      <bpmn:sequenceFlow id="SequenceFlow_0re5dm7" name="" sourceRef="ScriptTask_1jgr212" targetRef="EndEvent_04azej9" />
+    </bpmn:subProcess>
+    <bpmn:callActivity id="CallActivity_1vpyqzt" name="Call DoScaleE2EServiceInstance&#10;" calledElement="DoScaleE2EServiceInstance">
+      <bpmn:extensionElements>
+        <camunda:out source="jobId" target="jobId" />
+        <camunda:in source="bpmnRequest" target="bpmnRequest" />
+        <camunda:out source="operationId" target="operationId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="serviceId" target="serviceId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="nodeTemplateUUID" target="nodeTemplateUUID" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="requestDescription" target="requestDescription" />
+        <camunda:in source="operationId" target="operationId" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0er6ddi</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1fis1j1</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_1fis1j1" sourceRef="CallActivity_1vpyqzt" targetRef="ExclusiveGateway_13jdprk" />
+    <bpmn:sequenceFlow id="SequenceFlow_1q6spfu" sourceRef="Task_1ogtanl" targetRef="Task_1p5x1em" />
+    <bpmn:sequenceFlow id="SequenceFlow_030pfun" sourceRef="Task_1rsd8qa" targetRef="Task_01n9mqa" />
+    <bpmn:scriptTask id="Task_1rsd8qa" name="Init Service Operation Status" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1ntnafv</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_030pfun</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new ScaleCustomE2EServiceInstance()
+csi.prepareInitServiceOperationStatus(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_14zd9we" sourceRef="Task_01n9mqa" targetRef="Task_0oezp57" />
+    <bpmn:serviceTask id="Task_01n9mqa" name="Update Service Operation Status">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_030pfun</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_14zd9we</bpmn:outgoing>
+    </bpmn:serviceTask>
+  </bpmn:process>
+  <bpmn:error id="Error_196t4z3" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ScaleCustomE2EServiceInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="-13" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-28" y="138" width="67" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0nye5g4_di" bpmnElement="Task_03ivdxi">
+        <dc:Bounds x="87" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_08uouf4_di" bpmnElement="Task_0oezp57">
+        <dc:Bounds x="560" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_13jdprk_di" bpmnElement="ExclusiveGateway_13jdprk" isMarkerVisible="true">
+        <dc:Bounds x="928" y="95" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="927" y="73" width="51" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_11xceoj_di" bpmnElement="Task_1ogtanl">
+        <dc:Bounds x="1068" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1qhplvz_di" bpmnElement="Task_1p5x1em">
+        <dc:Bounds x="1068" y="281" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_116d9ds_di" bpmnElement="EndEvent_116d9ds">
+        <dc:Bounds x="1100" y="554" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1109" y="594" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0mm4eqd_di" bpmnElement="SequenceFlow_0mm4eqd">
+        <di:waypoint xsi:type="dc:Point" x="1118" y="361" />
+        <di:waypoint xsi:type="dc:Point" x="1118" y="554" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1088" y="451.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c2denm_di" bpmnElement="SequenceFlow_0c2denm">
+        <di:waypoint xsi:type="dc:Point" x="23" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="87" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="10" y="99" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ntnafv_di" bpmnElement="SequenceFlow_1ntnafv">
+        <di:waypoint xsi:type="dc:Point" x="187" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="249" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="173" y="99" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0er6ddi_di" bpmnElement="SequenceFlow_0er6ddi">
+        <di:waypoint xsi:type="dc:Point" x="660" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="729" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="649.5" y="99" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06f0dx5_di" bpmnElement="SequenceFlow_06f0dx5">
+        <di:waypoint xsi:type="dc:Point" x="978" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="1068" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1014" y="99" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19b0pmt_di" bpmnElement="SequenceFlow_19b0pmt">
+        <di:waypoint xsi:type="dc:Point" x="953" y="145" />
+        <di:waypoint xsi:type="dc:Point" x="953" y="232" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="962" y="183" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_00ekif2_di" bpmnElement="EndEvent_1sz49w7">
+        <dc:Bounds x="935" y="232" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="953" y="272" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0bwngpt_di" bpmnElement="SubProcess_0bwngpt" isExpanded="true">
+        <dc:Bounds x="168" y="326" width="679" height="194" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0yncnrj_di" bpmnElement="StartEvent_0yncnrj">
+        <dc:Bounds x="183" y="412" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="66" y="453" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1lp2j7l_di" bpmnElement="EndEvent_1lp2j7l">
+        <dc:Bounds x="762" y="412" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="645" y="453" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_01p0bqh_di" bpmnElement="ScriptTask_01p0bqh">
+        <dc:Bounds x="441" y="390" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0miglgb_di" bpmnElement="CallActivity_0miglgb">
+        <dc:Bounds x="618" y="390" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1quc7x4_di" bpmnElement="ScriptTask_1quc7x4">
+        <dc:Bounds x="263" y="390" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_04f826i_di" bpmnElement="SequenceFlow_04f826i">
+        <di:waypoint xsi:type="dc:Point" x="219" y="430" />
+        <di:waypoint xsi:type="dc:Point" x="241" y="430" />
+        <di:waypoint xsi:type="dc:Point" x="241" y="430" />
+        <di:waypoint xsi:type="dc:Point" x="262" y="430" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="121" y="430" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_09z92mf_di" bpmnElement="SequenceFlow_09z92mf">
+        <di:waypoint xsi:type="dc:Point" x="363" y="430" />
+        <di:waypoint xsi:type="dc:Point" x="390" y="430" />
+        <di:waypoint xsi:type="dc:Point" x="390" y="430" />
+        <di:waypoint xsi:type="dc:Point" x="441" y="430" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="270" y="430" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t2ijcu_di" bpmnElement="SequenceFlow_1t2ijcu">
+        <di:waypoint xsi:type="dc:Point" x="718" y="430" />
+        <di:waypoint xsi:type="dc:Point" x="762" y="430" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="605" y="415" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sooz22_di" bpmnElement="SequenceFlow_1sooz22">
+        <di:waypoint xsi:type="dc:Point" x="541" y="430" />
+        <di:waypoint xsi:type="dc:Point" x="618" y="430" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="447" y="415" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_10vzjzh_di" bpmnElement="SubProcess_10vzjzh" isExpanded="true">
+        <dc:Bounds x="294" y="593" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1jgr212_di" bpmnElement="ScriptTask_1jgr212">
+        <dc:Bounds x="442" y="648" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1awfo4s_di" bpmnElement="StartEvent_1awfo4s">
+        <dc:Bounds x="327" y="670" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="210" y="711" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_04azej9_di" bpmnElement="EndEvent_04azej9">
+        <dc:Bounds x="603" y="670" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="486" y="711" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gna7ys_di" bpmnElement="SequenceFlow_0gna7ys">
+        <di:waypoint xsi:type="dc:Point" x="363" y="688" />
+        <di:waypoint xsi:type="dc:Point" x="442" y="688" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="272" y="688" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0re5dm7_di" bpmnElement="SequenceFlow_0re5dm7">
+        <di:waypoint xsi:type="dc:Point" x="542" y="688" />
+        <di:waypoint xsi:type="dc:Point" x="603" y="688" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="444" y="688" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1vpyqzt_di" bpmnElement="CallActivity_1vpyqzt">
+        <dc:Bounds x="729" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fis1j1_di" bpmnElement="SequenceFlow_1fis1j1">
+        <di:waypoint xsi:type="dc:Point" x="829" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="928" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="878.5" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q6spfu_di" bpmnElement="SequenceFlow_1q6spfu">
+        <di:waypoint xsi:type="dc:Point" x="1118" y="160" />
+        <di:waypoint xsi:type="dc:Point" x="1118" y="281" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1088" y="214.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_030pfun_di" bpmnElement="SequenceFlow_030pfun">
+        <di:waypoint xsi:type="dc:Point" x="349" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="393" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="371" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_16ll9yo_di" bpmnElement="Task_1rsd8qa">
+        <dc:Bounds x="249" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_14zd9we_di" bpmnElement="SequenceFlow_14zd9we">
+        <di:waypoint xsi:type="dc:Point" x="493" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="526.5" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_1kpeoxt_di" bpmnElement="Task_01n9mqa">
+        <dc:Bounds x="393" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateCustomE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateCustomE2EServiceInstance.bpmn
new file mode 100644
index 0000000..28bd3f7
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateCustomE2EServiceInstance.bpmn
@@ -0,0 +1,693 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3">
+  <bpmn:process id="UpdateCustomE2EServiceInstance" name="UpdateCustomE2EServiceInstance" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_00qj6ro" name="Update SI Start Flow">
+      <bpmn:outgoing>SequenceFlow_0s2spoq</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:subProcess id="SubProcess_0ka59nc" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:scriptTask id="ScriptTask_0u3lw39" name="Handle Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_1dsbjjb</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1yay321</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:startEvent id="StartEvent_0v1ffn4">
+        <bpmn:outgoing>SequenceFlow_1dsbjjb</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_0eznq6x">
+        <bpmn:incoming>SequenceFlow_1yay321</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_1dsbjjb" name="" sourceRef="StartEvent_0v1ffn4" targetRef="ScriptTask_0u3lw39" />
+      <bpmn:sequenceFlow id="SequenceFlow_1yay321" name="" sourceRef="ScriptTask_0u3lw39" targetRef="EndEvent_0eznq6x" />
+    </bpmn:subProcess>
+    <bpmn:callActivity id="DoUpdateE2EServiceInstance" name="Call DoUpdateE2EServiceInstance&#10;" calledElement="DoUpdateE2EServiceInstance">
+      <bpmn:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:out source="rollbackData" target="rollbackData" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="productFamilyId" target="productFamilyId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="uuiRequest" target="uuiRequest" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:in source="failIfExists" target="failIfExists" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <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" />
+        <camunda:in source="serviceDecomposition_Target" target="serviceDecomposition_Target" />
+        <camunda:in source="serviceDecomposition_Original" target="serviceDecomposition_Original" />
+        <camunda:in source="addResourceList" target="addResourceList" />
+        <camunda:in source="delResourceList" target="delResourceList" />
+        <camunda:in source="serviceRelationShip" target="serviceRelationShip" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_04qwbbf</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0klbpxx</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:endEvent id="EndEvent_0bpd6c0" name="End">
+      <bpmn:incoming>SequenceFlow_0yayvrf</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="ScriptTask_1s09c7d" name="Pre Process Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0s2spoq</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0az1n4y</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new UpdateCustomE2EServiceInstance()
+csi.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_0ttvn8r" name="Prepare Completion Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_14zu6wr</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0je30si</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new UpdateCustomE2EServiceInstance()
+csi.prepareCompletionRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="CallActivity_02fyxz0" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn:extensionElements>
+        <camunda:in source="completionRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" />
+        <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" />
+        <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0je30si</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0yayvrf</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:subProcess id="SubProcess_0vaws86" name="Sub-process for FalloutHandler and Rollback" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0dug28e">
+        <bpmn:outgoing>SequenceFlow_0e1r62n</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_03wysuk">
+        <bpmn:incoming>SequenceFlow_1ysapam</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_0u8o9p2" name="Prepare Fallout Request" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0n9pexp</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_01umodj</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new UpdateCustomE2EServiceInstance()
+csi.prepareFalloutRequest(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:callActivity id="CallActivity_1ang7q8" name="Call FalloutHandler" calledElement="FalloutHandler">
+        <bpmn:extensionElements>
+          <camunda:in source="falloutRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="mso-request-id" target="mso-request-id" />
+          <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+          <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" />
+          <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" />
+          <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" />
+        </bpmn:extensionElements>
+        <bpmn:incoming>SequenceFlow_01umodj</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1ysapam</bpmn:outgoing>
+      </bpmn:callActivity>
+      <bpmn:scriptTask id="ScriptTask_1rn6nqi" name="Send Error Response">
+        <bpmn:incoming>SequenceFlow_06o383f</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0n9pexp</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  UpdateCustomE2EServiceInstance()
+csi.sendSyncError(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_0e1r62n" sourceRef="StartEvent_0dug28e" targetRef="ScriptTask_14kqo0r" />
+      <bpmn:sequenceFlow id="SequenceFlow_1ysapam" sourceRef="CallActivity_1ang7q8" targetRef="EndEvent_03wysuk" />
+      <bpmn:sequenceFlow id="SequenceFlow_0n9pexp" sourceRef="ScriptTask_1rn6nqi" targetRef="ScriptTask_0u8o9p2" />
+      <bpmn:sequenceFlow id="SequenceFlow_01umodj" sourceRef="ScriptTask_0u8o9p2" targetRef="CallActivity_1ang7q8" />
+      <bpmn:scriptTask id="ScriptTask_14kqo0r" name="Prepare Update Service Oper Status(error)" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0e1r62n</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0t4nds2</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*		
+		execution.setVariable("progress", "100")
+		execution.setVariable("operationStatus", "Finished")
+		execution.setVariable("operationResult", "Error")
+		execution.setVariable("operationReason", "Exception happened")
+		def ddsi = new UpdateCustomE2EServiceInstance()
+		ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_0t4nds2" sourceRef="ScriptTask_14kqo0r" targetRef="ServiceTask_1af6rwh" />
+      <bpmn:serviceTask id="ServiceTask_1af6rwh" name="Update Service Oper Status">
+        <bpmn:extensionElements>
+          <camunda:connector>
+            <camunda:inputOutput>
+              <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter>
+              <camunda:inputParameter name="headers">
+                <camunda:map>
+                  <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                  <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+                </camunda:map>
+              </camunda:inputParameter>
+              <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
+              <camunda:inputParameter name="method">POST</camunda:inputParameter>
+              <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+              <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+            </camunda:inputOutput>
+            <camunda:connectorId>http-connector</camunda:connectorId>
+          </camunda:connector>
+        </bpmn:extensionElements>
+        <bpmn:incoming>SequenceFlow_0t4nds2</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_06o383f</bpmn:outgoing>
+      </bpmn:serviceTask>
+      <bpmn:sequenceFlow id="SequenceFlow_06o383f" sourceRef="ServiceTask_1af6rwh" targetRef="ScriptTask_1rn6nqi" />
+    </bpmn:subProcess>
+    <bpmn:scriptTask id="ScriptTask_0xupxj9" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_12dou7o</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0secadm</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  UpdateCustomE2EServiceInstance()
+csi.sendSyncResponse(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0aqn64l" name="Success?" default="SequenceFlow_1fueo69">
+      <bpmn:incoming>SequenceFlow_0klbpxx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_14zu6wr</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1fueo69</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:endEvent id="EndEvent_07uk5iy">
+      <bpmn:incoming>SequenceFlow_1fueo69</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_0nbdy47" />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0s2spoq" sourceRef="StartEvent_00qj6ro" targetRef="ScriptTask_1s09c7d" />
+    <bpmn:sequenceFlow id="SequenceFlow_0klbpxx" sourceRef="DoUpdateE2EServiceInstance" targetRef="ExclusiveGateway_0aqn64l" />
+    <bpmn:sequenceFlow id="SequenceFlow_0yayvrf" sourceRef="CallActivity_02fyxz0" targetRef="EndEvent_0bpd6c0" />
+    <bpmn:sequenceFlow id="SequenceFlow_14zu6wr" name="yes" sourceRef="ExclusiveGateway_0aqn64l" targetRef="ScriptTask_0ttvn8r">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") == null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0je30si" sourceRef="ScriptTask_0ttvn8r" targetRef="CallActivity_02fyxz0" />
+    <bpmn:sequenceFlow id="SequenceFlow_1fueo69" name="no" sourceRef="ExclusiveGateway_0aqn64l" targetRef="EndEvent_07uk5iy" />
+    <bpmn:callActivity id="CallActivity_1vejucv" name="Call AAI Generic GetService" calledElement="GenericGetService">
+      <bpmn:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in source="serviceType" target="GENGS_serviceType" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0az1n4y</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1bd4711</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:scriptTask id="ScriptTask_0cx1y0g" name="Post Process AAI GET" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1bd4711</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_03i6zhx</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new UpdateCustomE2EServiceInstance()
+dcsi.postProcessAAIGET(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1bd4711" sourceRef="CallActivity_1vejucv" targetRef="ScriptTask_0cx1y0g" />
+    <bpmn:scriptTask id="ScriptTask_11y3uq6" name="Post for Compare Model Versions" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0xhbobd</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0t7zinj</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new UpdateCustomE2EServiceInstance()
+csi.postCompareModelVersions(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_0hixtxc" name="Prepare for Compare Model Versions" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_03i6zhx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1pdv4qj</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new UpdateCustomE2EServiceInstance()
+ddsi.preCompareModelVersions(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="CallActivity_1rkoyc5" name="Call DoCompareModelVersions" calledElement="DoCompareModelVersions">
+      <bpmn:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="model-invariant-id-target" target="model-invariant-id-target" />
+        <camunda:in source="model-version-id-target" target="model-version-id-target" />
+        <camunda:in source="model-invariant-id-original" target="model-invariant-id-original" />
+        <camunda:in source="model-version-id-original" target="model-version-id-original" />
+        <camunda:out source="serviceDecomposition_Target" target="serviceDecomposition_Target" />
+        <camunda:out source="serviceDecomposition_Original" target="serviceDecomposition_Original" />
+        <camunda:out source="addResourceList" target="addResourceList" />
+        <camunda:out source="delResourceList" target="delResourceList" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1pdv4qj</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0xhbobd</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_03i6zhx" sourceRef="ScriptTask_0cx1y0g" targetRef="ScriptTask_0hixtxc" />
+    <bpmn:sequenceFlow id="SequenceFlow_1pdv4qj" sourceRef="ScriptTask_0hixtxc" targetRef="CallActivity_1rkoyc5" />
+    <bpmn:sequenceFlow id="SequenceFlow_0xhbobd" sourceRef="CallActivity_1rkoyc5" targetRef="ScriptTask_11y3uq6" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0mc34qe" name="HasResourcetoUpdate?" default="SequenceFlow_1n8h3zt">
+      <bpmn:incoming>SequenceFlow_0secadm</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0zmd4rt</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1n8h3zt</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0az1n4y" sourceRef="ScriptTask_1s09c7d" targetRef="CallActivity_1vejucv" />
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_0m01dm3" name="StartDoUpdate">
+      <bpmn:outgoing>SequenceFlow_04qwbbf</bpmn:outgoing>
+      <bpmn:linkEventDefinition name="StartDoUpdate" />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0secadm" sourceRef="ScriptTask_0xupxj9" targetRef="ExclusiveGateway_0mc34qe" />
+    <bpmn:sequenceFlow id="SequenceFlow_04qwbbf" sourceRef="IntermediateCatchEvent_0m01dm3" targetRef="DoUpdateE2EServiceInstance" />
+    <bpmn:endEvent id="EndEvent_1jvqhkf" name="End">
+      <bpmn:incoming>SequenceFlow_0kvl23y</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="ScriptTask_16sgdqw" name="Init Service Operation Status" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1bddzne</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1e3vtyq</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi= new UpdateCustomE2EServiceInstance()
+csi.prepareInitServiceOperationStatus(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:serviceTask id="ServiceTask_0qjpd5v" name="Update Service Operation Status">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1e3vtyq</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_12dou7o</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1e3vtyq" sourceRef="ScriptTask_16sgdqw" targetRef="ServiceTask_0qjpd5v" />
+    <bpmn:sequenceFlow id="SequenceFlow_12dou7o" sourceRef="ServiceTask_0qjpd5v" targetRef="ScriptTask_0xupxj9" />
+    <bpmn:serviceTask id="ServiceTask_0mj3kf2" name="Update Service Operation Status">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1wzk6tu</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0kvl23y</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_08mk8h9" name="GoToOperStatusInit">
+      <bpmn:incoming>SequenceFlow_0t7zinj</bpmn:incoming>
+      <bpmn:linkEventDefinition name="StartOperStatusInit" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0t7zinj" sourceRef="ScriptTask_11y3uq6" targetRef="IntermediateThrowEvent_08mk8h9" />
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_14w7v9s" name="StartOperStatusInit">
+      <bpmn:outgoing>SequenceFlow_1bddzne</bpmn:outgoing>
+      <bpmn:linkEventDefinition name="StartOperStatusInit" />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1bddzne" sourceRef="IntermediateCatchEvent_14w7v9s" targetRef="ScriptTask_16sgdqw" />
+    <bpmn:scriptTask id="ScriptTask_04a0t3p" name="Prepare Update Service Oper Status(100%)" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1n8h3zt</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1wzk6tu</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+execution.setVariable("progress", "100")
+execution.setVariable("operationStatus", "Finished")
+execution.setVariable("operationResult", "End")
+execution.setVariable("operationReason", "No resource to add or delete")
+def ddsi = new UpdateCustomE2EServiceInstance()
+ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1wzk6tu" sourceRef="ScriptTask_04a0t3p" targetRef="ServiceTask_0mj3kf2" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1k72hze" name="GoToDoUpdate">
+      <bpmn:incoming>SequenceFlow_0zmd4rt</bpmn:incoming>
+      <bpmn:linkEventDefinition name="StartDoUpdate" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0kvl23y" sourceRef="ServiceTask_0mj3kf2" targetRef="EndEvent_1jvqhkf" />
+    <bpmn:sequenceFlow id="SequenceFlow_0zmd4rt" name="Yes" sourceRef="ExclusiveGateway_0mc34qe" targetRef="IntermediateThrowEvent_1k72hze">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("hasResourcetoUpdate") == true}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1n8h3zt" name="No" sourceRef="ExclusiveGateway_0mc34qe" targetRef="ScriptTask_04a0t3p" />
+  </bpmn:process>
+  <bpmn:error id="Error_0nbdy47" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateCustomE2EServiceInstance">
+      <bpmndi:BPMNShape id="StartEvent_00qj6ro_di" bpmnElement="StartEvent_00qj6ro">
+        <dc:Bounds x="-6" y="180" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-24" y="221" width="73" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0ka59nc_di" bpmnElement="SubProcess_0ka59nc" isExpanded="true">
+        <dc:Bounds x="439" y="1170" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0rhljy8_di" bpmnElement="DoUpdateE2EServiceInstance">
+        <dc:Bounds x="284" y="585" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0bpd6c0_di" bpmnElement="EndEvent_0bpd6c0">
+        <dc:Bounds x="1192" y="607" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1204" y="643" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1s09c7d_di" bpmnElement="ScriptTask_1s09c7d">
+        <dc:Bounds x="105" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ttvn8r_di" bpmnElement="ScriptTask_0ttvn8r">
+        <dc:Bounds x="782" y="585" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_02fyxz0_di" bpmnElement="CallActivity_02fyxz0">
+        <dc:Bounds x="959" y="585" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0vaws86_di" bpmnElement="SubProcess_0vaws86" isExpanded="true">
+        <dc:Bounds x="-61" y="908" width="1322" height="164" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0xupxj9_di" bpmnElement="ScriptTask_0xupxj9">
+        <dc:Bounds x="451" y="337" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0aqn64l_di" bpmnElement="ExclusiveGateway_0aqn64l" isMarkerVisible="true">
+        <dc:Bounds x="639" y="600" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="640" y="572" width="49" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_07uk5iy_di" bpmnElement="EndEvent_07uk5iy">
+        <dc:Bounds x="646" y="713" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="527" y="1016" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s2spoq_di" bpmnElement="SequenceFlow_0s2spoq">
+        <di:waypoint xsi:type="dc:Point" x="30" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="105" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="22.5" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0klbpxx_di" bpmnElement="SequenceFlow_0klbpxx">
+        <di:waypoint xsi:type="dc:Point" x="384" y="625" />
+        <di:waypoint xsi:type="dc:Point" x="639" y="625" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="466.5" y="604" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yayvrf_di" bpmnElement="SequenceFlow_0yayvrf">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="625" />
+        <di:waypoint xsi:type="dc:Point" x="1192" y="625" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1080.5" y="604" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_14zu6wr_di" bpmnElement="SequenceFlow_14zu6wr">
+        <di:waypoint xsi:type="dc:Point" x="689" y="625" />
+        <di:waypoint xsi:type="dc:Point" x="782" y="625" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="727.1481481481482" y="622" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0je30si_di" bpmnElement="SequenceFlow_0je30si">
+        <di:waypoint xsi:type="dc:Point" x="882" y="625" />
+        <di:waypoint xsi:type="dc:Point" x="959" y="625" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="875.5" y="604" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fueo69_di" bpmnElement="SequenceFlow_1fueo69">
+        <di:waypoint xsi:type="dc:Point" x="664" y="650" />
+        <di:waypoint xsi:type="dc:Point" x="664" y="713" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="639" y="677" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0u3lw39_di" bpmnElement="ScriptTask_0u3lw39">
+        <dc:Bounds x="587" y="1225" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0v1ffn4_di" bpmnElement="StartEvent_0v1ffn4">
+        <dc:Bounds x="472" y="1247" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="400" y="1288" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0eznq6x_di" bpmnElement="EndEvent_0eznq6x">
+        <dc:Bounds x="748" y="1247" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="676" y="1288" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0dug28e_di" bpmnElement="StartEvent_0dug28e">
+        <dc:Bounds x="-20" y="994" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-92" y="1035" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_03wysuk_di" bpmnElement="EndEvent_03wysuk">
+        <dc:Bounds x="1194" y="994" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1122" y="1035" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0u8o9p2_di" bpmnElement="ScriptTask_0u8o9p2">
+        <dc:Bounds x="777" y="972" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ang7q8_di" bpmnElement="CallActivity_1ang7q8">
+        <dc:Bounds x="963" y="972" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rn6nqi_di" bpmnElement="ScriptTask_1rn6nqi">
+        <dc:Bounds x="577" y="972" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dsbjjb_di" bpmnElement="SequenceFlow_1dsbjjb">
+        <di:waypoint xsi:type="dc:Point" x="508" y="1265" />
+        <di:waypoint xsi:type="dc:Point" x="587" y="1265" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="461" y="1265" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yay321_di" bpmnElement="SequenceFlow_1yay321">
+        <di:waypoint xsi:type="dc:Point" x="687" y="1265" />
+        <di:waypoint xsi:type="dc:Point" x="748" y="1265" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="633" y="1265" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0e1r62n_di" bpmnElement="SequenceFlow_0e1r62n">
+        <di:waypoint xsi:type="dc:Point" x="16" y="1012" />
+        <di:waypoint xsi:type="dc:Point" x="122" y="1012" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="24" y="991" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ysapam_di" bpmnElement="SequenceFlow_1ysapam">
+        <di:waypoint xsi:type="dc:Point" x="1063" y="1012" />
+        <di:waypoint xsi:type="dc:Point" x="1194" y="1012" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1083.5" y="991" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n9pexp_di" bpmnElement="SequenceFlow_0n9pexp">
+        <di:waypoint xsi:type="dc:Point" x="677" y="1012" />
+        <di:waypoint xsi:type="dc:Point" x="777" y="1012" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="682" y="991" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_01umodj_di" bpmnElement="SequenceFlow_01umodj">
+        <di:waypoint xsi:type="dc:Point" x="877" y="1012" />
+        <di:waypoint xsi:type="dc:Point" x="963" y="1012" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="875" y="991" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1vejucv_di" bpmnElement="CallActivity_1vejucv">
+        <dc:Bounds x="274" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0cx1y0g_di" bpmnElement="ScriptTask_0cx1y0g">
+        <dc:Bounds x="451" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bd4711_di" bpmnElement="SequenceFlow_1bd4711">
+        <di:waypoint xsi:type="dc:Point" x="374" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="451" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="367.5" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_11y3uq6_di" bpmnElement="ScriptTask_11y3uq6">
+        <dc:Bounds x="959" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0hixtxc_di" bpmnElement="ScriptTask_0hixtxc">
+        <dc:Bounds x="614" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1rkoyc5_di" bpmnElement="CallActivity_1rkoyc5">
+        <dc:Bounds x="782" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_03i6zhx_di" bpmnElement="SequenceFlow_03i6zhx">
+        <di:waypoint xsi:type="dc:Point" x="551" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="614" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="537.5" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1pdv4qj_di" bpmnElement="SequenceFlow_1pdv4qj">
+        <di:waypoint xsi:type="dc:Point" x="714" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="782" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="703" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xhbobd_di" bpmnElement="SequenceFlow_0xhbobd">
+        <di:waypoint xsi:type="dc:Point" x="882" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="959" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="875.5" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0mc34qe_di" bpmnElement="ExclusiveGateway_0mc34qe" isMarkerVisible="true">
+        <dc:Bounds x="639" y="352" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="622" y="324" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0az1n4y_di" bpmnElement="SequenceFlow_0az1n4y">
+        <di:waypoint xsi:type="dc:Point" x="205" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="274" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="239.5" y="177" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0m01dm3_di" bpmnElement="IntermediateCatchEvent_0m01dm3">
+        <dc:Bounds x="-6" y="607" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-21" y="669" width="72" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0secadm_di" bpmnElement="SequenceFlow_0secadm">
+        <di:waypoint xsi:type="dc:Point" x="551" y="377" />
+        <di:waypoint xsi:type="dc:Point" x="639" y="377" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="550" y="356" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04qwbbf_di" bpmnElement="SequenceFlow_04qwbbf">
+        <di:waypoint xsi:type="dc:Point" x="30" y="625" />
+        <di:waypoint xsi:type="dc:Point" x="284" y="625" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="112" y="604" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1jvqhkf_di" bpmnElement="EndEvent_1jvqhkf">
+        <dc:Bounds x="1192" y="359" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1200" y="404" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_16sgdqw_di" bpmnElement="ScriptTask_16sgdqw">
+        <dc:Bounds x="97" y="337" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0qjpd5v_di" bpmnElement="ServiceTask_0qjpd5v">
+        <dc:Bounds x="274" y="337" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1e3vtyq_di" bpmnElement="SequenceFlow_1e3vtyq">
+        <di:waypoint xsi:type="dc:Point" x="197" y="377" />
+        <di:waypoint xsi:type="dc:Point" x="274" y="377" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="235.5" y="356" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_12dou7o_di" bpmnElement="SequenceFlow_12dou7o">
+        <di:waypoint xsi:type="dc:Point" x="374" y="377" />
+        <di:waypoint xsi:type="dc:Point" x="451" y="377" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="412.5" y="356" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_0mj3kf2_di" bpmnElement="ServiceTask_0mj3kf2">
+        <dc:Bounds x="959" y="337" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_08mk8h9_di" bpmnElement="IntermediateThrowEvent_08mk8h9">
+        <dc:Bounds x="1192" y="180" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1175" y="220" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0t7zinj_di" bpmnElement="SequenceFlow_0t7zinj">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="1192" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1125.5" y="177" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_14w7v9s_di" bpmnElement="IntermediateCatchEvent_14w7v9s">
+        <dc:Bounds x="-6" y="359" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-29" y="421" width="88" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bddzne_di" bpmnElement="SequenceFlow_1bddzne">
+        <di:waypoint xsi:type="dc:Point" x="30" y="377" />
+        <di:waypoint xsi:type="dc:Point" x="97" y="377" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="63.5" y="356" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_14kqo0r_di" bpmnElement="ScriptTask_14kqo0r">
+        <dc:Bounds x="122" y="972" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_1af6rwh_di" bpmnElement="ServiceTask_1af6rwh">
+        <dc:Bounds x="350" y="972" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0t4nds2_di" bpmnElement="SequenceFlow_0t4nds2">
+        <di:waypoint xsi:type="dc:Point" x="222" y="1012" />
+        <di:waypoint xsi:type="dc:Point" x="350" y="1012" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="286" y="991" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06o383f_di" bpmnElement="SequenceFlow_06o383f">
+        <di:waypoint xsi:type="dc:Point" x="450" y="1012" />
+        <di:waypoint xsi:type="dc:Point" x="577" y="1012" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="513.5" y="991" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_04a0t3p_di" bpmnElement="ScriptTask_04a0t3p">
+        <dc:Bounds x="782" y="337" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wzk6tu_di" bpmnElement="SequenceFlow_1wzk6tu">
+        <di:waypoint xsi:type="dc:Point" x="882" y="377" />
+        <di:waypoint xsi:type="dc:Point" x="959" y="377" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="920.5" y="356" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1k72hze_di" bpmnElement="IntermediateThrowEvent_1k72hze">
+        <dc:Bounds x="646" y="447" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="631" y="487" width="76" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0kvl23y_di" bpmnElement="SequenceFlow_0kvl23y">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="377" />
+        <di:waypoint xsi:type="dc:Point" x="1192" y="377" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1125.5" y="356" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zmd4rt_di" bpmnElement="SequenceFlow_0zmd4rt">
+        <di:waypoint xsi:type="dc:Point" x="664" y="402" />
+        <di:waypoint xsi:type="dc:Point" x="664" y="447" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="670" y="419" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1n8h3zt_di" bpmnElement="SequenceFlow_1n8h3zt">
+        <di:waypoint xsi:type="dc:Point" x="689" y="377" />
+        <di:waypoint xsi:type="dc:Point" x="782" y="377" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="729" y="356" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateNetworkInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateNetworkInstance.bpmn
new file mode 100644
index 0000000..e5236f9
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateNetworkInstance.bpmn
@@ -0,0 +1,322 @@
+<?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.14.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="UpdateNetworkInstance" name="UpdateNetworkInstance" 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>import org.onap.so.bpmn.infrastructure.scripts.*
+def networkMod = new UpdateNetworkInstance()
+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="doUpdateNetworkInstance_CallActivity" name="DoUpdate Network Instance&#10;" calledElement="DoUpdateNetworkInstance">
+      <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="CreateNetwork&#10;PostProcess Success&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_095crcd</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0x3znm5</bpmn2:outgoing>
+      <bpmn2:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def UpdateNetworkInstance = new  UpdateNetworkInstance()
+UpdateNetworkInstance.postProcessResponse(execution)
+</bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1lj31zp" sourceRef="doUpdateNetworkInstance_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>import org.onap.so.bpmn.infrastructure.scripts.*
+def preProcess = new UpdateNetworkInstance()
+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>import org.onap.so.bpmn.infrastructure.scripts.*
+def UpdateNetworkInstance = new UpdateNetworkInstance()
+UpdateNetworkInstance.prepareCompletion(execution)</bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_0sevgre" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in source="UPDNI_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_1hql91g" name="Prepare FalloutHandler" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0n4umjf</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1reso2f</bpmn2:outgoing>
+        <bpmn2:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def UpdateNetworkInstance = new UpdateNetworkInstance()
+UpdateNetworkInstance.buildErrorResponse(execution)</bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:callActivity id="CallActivity_1ksm1dz" name="Call FalloutHandlerV1" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in source="UPDNI_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_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_1hql91g" />
+    </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="doUpdateNetworkInstance_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>import org.onap.so.bpmn.infrastructure.scripts.*
+def UpdateNetworkInstance = new UpdateNetworkInstance()
+UpdateNetworkInstance.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>import org.onap.so.bpmn.infrastructure.scripts.*
+def UpdateNetworkInstance = new  UpdateNetworkInstance()
+UpdateNetworkInstance.sendSyncResponse(execution)</bpmn2:script>
+    </bpmn2:scriptTask>
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateNetworkInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createNetwork_startEvent">
+        <dc:Bounds x="3" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-3" y="120" width="48" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_28" bpmnElement="unexpectedErrors_SubProcess" isExpanded="true">
+        <dc:Bounds x="370" y="734" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_71" bpmnElement="StartEvent_1">
+        <dc:Bounds x="403" y="811" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="376" y="852" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_270" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="518" y="789" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_220" bpmnElement="EndEvent_1">
+        <dc:Bounds x="679" y="811" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="652" y="852" width="90" 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 x="439" y="829" />
+        <di:waypoint x="518" y="829" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="436" y="829" width="90" 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 x="618" y="829" />
+        <di:waypoint x="679" y="829" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="608" y="829" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_72" bpmnElement="doUpdateNetworkInstance_CallActivity">
+        <dc:Bounds x="692" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0o440av_di" bpmnElement="EndEvent_0o440av">
+        <dc:Bounds x="1408" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1419" y="115" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_09qt0pi_di" bpmnElement="ScriptTask_09qt0pi">
+        <dc:Bounds x="1253" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lj31zp_di" bpmnElement="SequenceFlow_1lj31zp">
+        <di:waypoint x="792" y="97" />
+        <di:waypoint x="907" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="850" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0x3znm5_di" bpmnElement="SequenceFlow_0x3znm5">
+        <di:waypoint x="1353" y="97" />
+        <di:waypoint x="1408" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1381" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0pvcr6j_di" bpmnElement="ScriptTask_0pvcr6j">
+        <dc:Bounds x="139" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0lp2z7l_di" bpmnElement="SequenceFlow_0lp2z7l">
+        <di:waypoint x="39" y="97" />
+        <di:waypoint x="89" y="97" />
+        <di:waypoint x="89" y="97" />
+        <di:waypoint x="139" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="104" y="97" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ablr60_di" bpmnElement="SequenceFlow_1ablr60">
+        <di:waypoint x="239" y="97" />
+        <di:waypoint x="306" y="97" />
+        <di:waypoint x="306" y="97" />
+        <di:waypoint x="372" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="321" y="97" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0cihgpv_di" bpmnElement="ScriptTask_0cihgpv">
+        <dc:Bounds x="907" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0sevgre_di" bpmnElement="CallActivity_0sevgre">
+        <dc:Bounds x="1071" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xxvjxq_di" bpmnElement="SequenceFlow_0xxvjxq">
+        <di:waypoint x="1007" y="97" />
+        <di:waypoint x="1071" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1039" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1hql91g_di" bpmnElement="ScriptTask_1hql91g">
+        <dc:Bounds x="436" y="461" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ksm1dz_di" bpmnElement="CallActivity_1ksm1dz">
+        <dc:Bounds x="611" y="461" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_1k2112i_di" bpmnElement="SubProcess_1k2112i" isExpanded="true">
+        <dc:Bounds x="200" y="354" width="681" height="293" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_110xxgx_di" bpmnElement="StartEvent_110xxgx">
+        <dc:Bounds x="283" y="483" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="256" y="524" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1rqikib_di" bpmnElement="EndEvent_1rqikib">
+        <dc:Bounds x="786" y="483" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="759" y="524" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1reso2f_di" bpmnElement="SequenceFlow_1reso2f">
+        <di:waypoint x="536" y="501" />
+        <di:waypoint x="611" y="501" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="529" y="486" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ghqolv_di" bpmnElement="SequenceFlow_1ghqolv">
+        <di:waypoint x="711" y="501" />
+        <di:waypoint x="786" y="501" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="704" y="486" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_095crcd_di" bpmnElement="SequenceFlow_095crcd">
+        <di:waypoint x="1171" y="97" />
+        <di:waypoint x="1253" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1212" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n4umjf_di" bpmnElement="SequenceFlow_0n4umjf">
+        <di:waypoint x="319" y="501" />
+        <di:waypoint x="436" y="501" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="332.5" y="486" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0rt8wax_di" bpmnElement="SequenceFlow_0rt8wax">
+        <di:waypoint x="472" y="97" />
+        <di:waypoint x="558" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="515" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eto8sn_di" bpmnElement="SequenceFlow_0eto8sn">
+        <di:waypoint x="658" y="97" />
+        <di:waypoint x="692" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="675" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1gpvlh8_di" bpmnElement="Task_19xbdbu">
+        <dc:Bounds x="372" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rb2dsd_di" bpmnElement="Task_1nko5zz">
+        <dc:Bounds x="558" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleInfra.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleInfra.bpmn
new file mode 100644
index 0000000..c35e7ec
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleInfra.bpmn
@@ -0,0 +1,297 @@
+<?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="UpdateVfModuleInfra" name="UpdateVfModuleInfra" isExecutable="true">
+    <bpmn2:scriptTask id="ScriptTask_1" name="Send Synch Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfra()
+uvfm.sendSynchResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="ScriptTask_1" targetRef="ScriptTask_7" />
+    <bpmn2:scriptTask id="ScriptTask_2" name="Pre-Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfra()
+uvfm.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_2" targetRef="ScriptTask_1" />
+    <bpmn2:scriptTask id="ScriptTask_7" name="DoUpdateVfModule (prep)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfra()
+uvfm.prepDoUpdateVfModule(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="ScriptTask_7" targetRef="ScriptTask_6" />
+    <bpmn2:callActivity id="CallActivity_1" name="Completion Handler" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in source="UPDVfModI_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("UpdateVfModuleInfraSuccessIndicator", 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:outgoing>SequenceFlow_17</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfra()
+uvfm.completionHandlerPrep(execution, 'UPDVfModI_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="ScriptTask_3" />
+      <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfra()
+uvfm.falloutHandlerPrep(execution, 'UPDVfModI_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="UPDVfModI_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: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="ScriptTask_2" />
+    <bpmn2:callActivity id="ScriptTask_6" name="DoUpdateVfModule" calledElement="DoUpdateVfModule">
+      <bpmn2:extensionElements>
+        <camunda:in source="UPDVfModI_requestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="isVidRequest" target="isVidRequest" />
+        <camunda:in source="UPDVfModI_vnfType" target="vnfType" />
+        <camunda:in source="UPDVfModI_vnfName" target="vnfName" />
+        <camunda:in source="UPDVfModI_vnfId" target="vnfId" />
+        <camunda:in source="UPDVfModI_vfModuleName" target="vfModuleName" />
+        <camunda:in source="UPDVfModI_vfModuleType" target="vfModuleType" />
+        <camunda:in source="UPDVfModI_vfModuleId" target="vfModuleId" />
+        <camunda:in source="UPDVfModI_volumeGroupId" target="volumeGroupId" />
+        <camunda:in source="UPDVfModI_volumeGroupName" target="volumeGroupName" />
+        <camunda:in source="UPDVfModI_isBaseVfModule" target="isBaseVfModule" />
+        <camunda:in source="UPDVfModI_asdcServiceModelVersion" target="asdcServiceModelVersion" />
+        <camunda:in source="UPDVfModI_serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="UPDVfModI_serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="UPDVfModI_vnfModelInfo" target="vnfModelInfo" />
+        <camunda:in source="UPDVfModI_globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="UPDVfModI_lcpCloudRegionId" target="lcpCloudRegionId" />
+        <camunda:in source="UPDVfModI_tenantId" target="tenantId" />
+        <camunda:in source="UPDVfModI_sdncVersion" target="sdncVersion" />
+        <camunda:in source="UPDVfModI_vfModuleModelInfo" target="vfModuleModelInfo" />
+        <camunda:in source="UPDVfModI_usePreload" target="usePreload" />
+        <camunda:in source="UPDVfModI_vfModuleInputParams" target="vfModuleInputParams" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="ScriptTask_6" targetRef="ScriptTask_10" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateVfModuleInfra">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1">
+        <dc:Bounds x="149" y="72" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="150" y="113" width="34" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_125" bpmnElement="EndEvent_1">
+        <dc:Bounds x="605" y="370" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="598" y="411" width="50" height="22" />
+        </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="185" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="299" y="90" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="235" y="90" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="ScriptTask_2">
+        <dc:Bounds x="299" 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="399" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="449" y="90" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="433" y="90" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_125" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="449" y="50" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_125" targetElement="_BPMNShape_ScriptTask_130">
+        <di:waypoint xsi:type="dc:Point" x="498" y="130" />
+        <di:waypoint xsi:type="dc:Point" x="498" y="160" />
+        <di:waypoint xsi:type="dc:Point" x="199" y="160" />
+        <di:waypoint xsi:type="dc:Point" x="199" y="190" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="717" y="169" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4">
+        <dc:Bounds x="449" y="348" 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="549" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="605" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="723" y="186" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_130" bpmnElement="ScriptTask_7">
+        <dc:Bounds x="149" y="190" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="ScriptTask_10">
+        <dc:Bounds x="149" y="348" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1">
+        <dc:Bounds x="299" y="348" 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="249" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="299" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="271" y="394" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_17" bpmnElement="SubProcess_1" isExpanded="true">
+        <dc:Bounds x="65" y="536" width="565" height="241" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3">
+        <dc:Bounds x="129" y="630" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="98" y="671" width="98" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_136" bpmnElement="ScriptTask_3">
+        <dc:Bounds x="209" y="608" 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="165" y="648" />
+        <di:waypoint xsi:type="dc:Point" x="209" y="648" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="209" y="948" width="6" height="6" />
+        </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="309" y="648" />
+        <di:waypoint xsi:type="dc:Point" x="377" y="648" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="325" y="648" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_126" bpmnElement="EndEvent_2">
+        <dc:Bounds x="533" y="630" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="551" y="671" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_43" bpmnElement="BoundaryEvent_1">
+        <dc:Bounds x="612" y="630" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="627" y="671" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_127" bpmnElement="EndEvent_3">
+        <dc:Bounds x="704" y="630" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="722" y="671" 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="648" y="648" />
+        <di:waypoint xsi:type="dc:Point" x="704" y="648" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="693" y="948" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_28" bpmnElement="CallActivity_2">
+        <dc:Bounds x="377" y="608" 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="399" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="449" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="439" y="356" width="6" height="6" />
+        </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="477" y="648" />
+        <di:waypoint xsi:type="dc:Point" x="533" y="648" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="373" y="456" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ScriptTask_130" targetElement="_BPMNShape_ScriptTask_181">
+        <di:waypoint xsi:type="dc:Point" x="249" y="230" />
+        <di:waypoint xsi:type="dc:Point" x="299" y="230" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="274" y="205" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_181" bpmnElement="ScriptTask_6">
+        <dc:Bounds x="299" y="190" 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="399" y="231" />
+        <di:waypoint xsi:type="dc:Point" x="624" y="233" />
+        <di:waypoint xsi:type="dc:Point" x="624" y="294" />
+        <di:waypoint xsi:type="dc:Point" x="99" y="294" />
+        <di:waypoint xsi:type="dc:Point" x="99" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="149" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="503" y="232" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleInfraV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleInfraV2.bpmn
new file mode 100644
index 0000000..1efb127
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleInfraV2.bpmn
@@ -0,0 +1,412 @@
+<?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:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="_F0omAMXGEeW834CKd-K10Q" 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="UpdateVfModuleInfraV2" name="UpdateVfModuleInfraV2" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1" name="start">
+      <bpmn2:outgoing>SequenceFlow_07r1tup</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_07r1tup" sourceRef="StartEvent_1" targetRef="preProcessRequest" />
+    <bpmn2:scriptTask id="checkPserverFlag" name="Pserver Flag Check (A&#38;AI)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_09izs9b</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0gyzpu9</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.checkPserverFlag(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="preProcessRequest" name="Pre-Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_07r1tup</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04cyigk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="sendSynchResponse" name="Send Synch Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_04cyigk</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_09izs9b</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.sendSynchResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="vfFlagCheck" name="VF+ Flag Check (A&#38;AI)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0gyzpu9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16xzdgi</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.vfFlagCheck(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="lockAppC" name="Lock (App-c)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1oa0jsk</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ozbxok</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.lockAppC(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="healthCheckAppC" name="Health Check (App-c)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1ozbxok</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17c5hhe</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.healthCheckAppC(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="healthDiagnosticSDNO" name="Health Diagnostic (SDN-O)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_17c5hhe</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1pqikpt</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.healthDiagnosticSDNO(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="stopVfModuleController" name="Stop VF Module (App-c)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1pqikpt</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0m6q3pf</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.stopVfModuleController(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="healthCheckController" name="Health Check (App-c)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0vj0wfl</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0cskhwy</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.healthCheckController(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="startVfModuleController" name="Start VF Module (App-c)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0cskhwy</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_067f4jv</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.startVfModuleController(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="vFFlagUnset" name="VF+ Flag Unset (A&#38;AI)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_067f4jv</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1trqy93</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.vFFlagUnset(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="unlockAppC" name="Unlock (App-C)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1trqy93</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0fc550l</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.unlockAppC(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="postUpgradeHealthCheckController" name="Post-Upgrade Health Check (App-c)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0fc550l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1uquo5r</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.postUpgradeHealthCheckController(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_04cyigk" sourceRef="preProcessRequest" targetRef="sendSynchResponse" />
+    <bpmn2:sequenceFlow id="SequenceFlow_09izs9b" sourceRef="sendSynchResponse" targetRef="checkPserverFlag" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0gyzpu9" sourceRef="checkPserverFlag" targetRef="vfFlagCheck" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1pqikpt" sourceRef="healthDiagnosticSDNO" targetRef="stopVfModuleController" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0cskhwy" sourceRef="healthCheckController" targetRef="startVfModuleController" />
+    <bpmn2:sequenceFlow id="SequenceFlow_067f4jv" sourceRef="startVfModuleController" targetRef="vFFlagUnset" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1trqy93" sourceRef="vFFlagUnset" targetRef="unlockAppC" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0fc550l" sourceRef="unlockAppC" targetRef="postUpgradeHealthCheckController" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1uquo5r" sourceRef="postUpgradeHealthCheckController" targetRef="EndEvent_1" />
+    <bpmn2:scriptTask id="doUpdateVfModulePrep" name="DoUpdateVfModule (prep)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0m6q3pf</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ykv4yr</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.doUpdateVfModulePrep(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="completionHandlerPrep" name="Completion Handler (prep)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1x3xeba</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_01yr04k</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.completionHandlerPrep(execution,"UPDVfModI_CompletionHandlerRequest")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="setSuccessIndicator" name="Set Success Indicator" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1rfmnuo</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0vj0wfl</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[// The following variable is checked by the unit test
+execution.setVariable("UpdateVfModuleInfraSuccessIndicator", true)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ozbxok" sourceRef="lockAppC" targetRef="healthCheckAppC" />
+    <bpmn2:sequenceFlow id="SequenceFlow_17c5hhe" sourceRef="healthCheckAppC" targetRef="healthDiagnosticSDNO" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0m6q3pf" sourceRef="stopVfModuleController" targetRef="doUpdateVfModulePrep" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0vj0wfl" sourceRef="setSuccessIndicator" targetRef="healthCheckController" />
+    <bpmn2:endEvent id="EndEvent_1" name="end">
+      <bpmn2:incoming>SequenceFlow_1uquo5r</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_16xzdgi" sourceRef="vfFlagCheck" targetRef="vfFlagSet" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1oa0jsk" sourceRef="vfFlagSet" targetRef="lockAppC" />
+    <bpmn2:scriptTask id="vfFlagSet" name="VF+ Flag Set(A&#38;AI)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_16xzdgi</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1oa0jsk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVfModuleInfraV2()
+uvfm.vfFlagSet(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1rfmnuo" sourceRef="CallActivity_1mn9pxh" targetRef="setSuccessIndicator" />
+    <bpmn2:callActivity id="CallActivity_12if1z7" name="DoUpdateVfModule" calledElement="DoUpdateVfModule">
+      <bpmn2:extensionElements>
+        <camunda:in source="UPDVfModI_requestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="isVidRequest" target="isVidRequest" />
+        <camunda:in source="UPDVfModI_vnfType" target="vnfType" />
+        <camunda:in source="UPDVfModI_vnfName" target="vnfName" />
+        <camunda:in source="UPDVfModI_vnfId" target="vnfId" />
+        <camunda:in source="UPDVfModI_vfModuleName" target="vfModuleName" />
+        <camunda:in source="UPDVfModI_vfModuleType" target="vfModuleType" />
+        <camunda:in source="UPDVfModI_vfModuleId" target="vfModuleId" />
+        <camunda:in source="UPDVfModI_volumeGroupId" target="volumeGroupId" />
+        <camunda:in source="UPDVfModI_volumeGroupName" target="volumeGroupName" />
+        <camunda:in source="UPDVfModI_isBaseVfModule" target="isBaseVfModule" />
+        <camunda:in source="UPDVfModI_asdcServiceModelVersion" target="asdcServiceModelVersion" />
+        <camunda:in source="UPDVfModI_serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="UPDVfModI_serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="UPDVfModI_vnfModelInfo" target="vnfModelInfo" />
+        <camunda:in source="UPDVfModI_globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="UPDVfModI_lcpCloudRegionId" target="lcpCloudRegionId" />
+        <camunda:in source="UPDVfModI_tenantId" target="tenantId" />
+        <camunda:in source="UPDVfModI_sdncVersion" target="sdncVersion" />
+        <camunda:in source="UPDVfModI_vfModuleModelInfo" target="vfModuleModelInfo" />
+        <camunda:in source="UPDVfModI_usePreload" target="usePreload" />
+        <camunda:in source="UPDVfModI_vfModuleInputParams" target="vfModuleInputParams" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1ykv4yr</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1x3xeba</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ykv4yr" sourceRef="doUpdateVfModulePrep" targetRef="CallActivity_12if1z7" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1x3xeba" sourceRef="CallActivity_12if1z7" targetRef="completionHandlerPrep" />
+    <bpmn2:callActivity id="CallActivity_1mn9pxh" name="Completion Handler" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in source="UPDVfModI_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_01yr04k</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1rfmnuo</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_01yr04k" sourceRef="completionHandlerPrep" targetRef="CallActivity_1mn9pxh" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateVfModuleInfraV2">
+      <bpmndi:BPMNShape id="StartEvent_0twxl8d_di" bpmnElement="StartEvent_1">
+        <dc:Bounds x="191" y="241" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="198" y="281" width="22" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_07r1tup_di" bpmnElement="SequenceFlow_07r1tup">
+        <di:waypoint xsi:type="dc:Point" x="227" y="259" />
+        <di:waypoint xsi:type="dc:Point" x="282" y="259" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="209.5" y="238" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_01hwh3t_di" bpmnElement="checkPserverFlag">
+        <dc:Bounds x="581" y="219" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0f4oi4p_di" bpmnElement="preProcessRequest">
+        <dc:Bounds x="282" y="219" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_03hqi4p_di" bpmnElement="sendSynchResponse">
+        <dc:Bounds x="430" y="219" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1s24r7g_di" bpmnElement="vfFlagCheck">
+        <dc:Bounds x="722" y="219" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1tjbc0n_di" bpmnElement="lockAppC">
+        <dc:Bounds x="1000" y="219" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0jqyljl_di" bpmnElement="healthCheckAppC">
+        <dc:Bounds x="1137" y="219" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0xd9t6y_di" bpmnElement="healthDiagnosticSDNO">
+        <dc:Bounds x="369" y="354" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_07v5qul_di" bpmnElement="stopVfModuleController">
+        <dc:Bounds x="521" y="354" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1fhh3ik_di" bpmnElement="healthCheckController">
+        <dc:Bounds x="521" y="493" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0y2p8lc_di" bpmnElement="startVfModuleController">
+        <dc:Bounds x="672" y="493" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0getlx7_di" bpmnElement="vFFlagUnset">
+        <dc:Bounds x="809" y="493" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_13ngoxl_di" bpmnElement="unlockAppC">
+        <dc:Bounds x="955" y="493" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_023ov5w_di" bpmnElement="postUpgradeHealthCheckController">
+        <dc:Bounds x="1103" y="493" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_04cyigk_di" bpmnElement="SequenceFlow_04cyigk">
+        <di:waypoint xsi:type="dc:Point" x="382" y="259" />
+        <di:waypoint xsi:type="dc:Point" x="430" y="259" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="361" y="238" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_09izs9b_di" bpmnElement="SequenceFlow_09izs9b">
+        <di:waypoint xsi:type="dc:Point" x="530" y="259" />
+        <di:waypoint xsi:type="dc:Point" x="581" y="259" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="510.5" y="238" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gyzpu9_di" bpmnElement="SequenceFlow_0gyzpu9">
+        <di:waypoint xsi:type="dc:Point" x="681" y="259" />
+        <di:waypoint xsi:type="dc:Point" x="722" y="259" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="656.5" y="238" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1pqikpt_di" bpmnElement="SequenceFlow_1pqikpt">
+        <di:waypoint xsi:type="dc:Point" x="469" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="521" y="394" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="495" y="373" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0cskhwy_di" bpmnElement="SequenceFlow_0cskhwy">
+        <di:waypoint xsi:type="dc:Point" x="621" y="533" />
+        <di:waypoint xsi:type="dc:Point" x="672" y="533" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="646.5" y="512" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_067f4jv_di" bpmnElement="SequenceFlow_067f4jv">
+        <di:waypoint xsi:type="dc:Point" x="772" y="533" />
+        <di:waypoint xsi:type="dc:Point" x="809" y="533" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="790.5" y="512" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1trqy93_di" bpmnElement="SequenceFlow_1trqy93">
+        <di:waypoint xsi:type="dc:Point" x="909" y="533" />
+        <di:waypoint xsi:type="dc:Point" x="955" y="533" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="932" y="512" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0fc550l_di" bpmnElement="SequenceFlow_0fc550l">
+        <di:waypoint xsi:type="dc:Point" x="1055" y="533" />
+        <di:waypoint xsi:type="dc:Point" x="1079" y="533" />
+        <di:waypoint xsi:type="dc:Point" x="1079" y="533" />
+        <di:waypoint xsi:type="dc:Point" x="1103" y="533" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1094" y="527" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1uquo5r_di" bpmnElement="SequenceFlow_1uquo5r">
+        <di:waypoint xsi:type="dc:Point" x="1203" y="533" />
+        <di:waypoint xsi:type="dc:Point" x="1254" y="533" />
+        <di:waypoint xsi:type="dc:Point" x="1254" y="533" />
+        <di:waypoint xsi:type="dc:Point" x="1304" y="533" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1224" y="527" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_00bft3s_di" bpmnElement="doUpdateVfModulePrep">
+        <dc:Bounds x="672" y="354" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_00moxf8_di" bpmnElement="completionHandlerPrep">
+        <dc:Bounds x="955" y="354" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_02qf1er_di" bpmnElement="setSuccessIndicator">
+        <dc:Bounds x="369" y="493" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ozbxok_di" bpmnElement="SequenceFlow_1ozbxok">
+        <di:waypoint xsi:type="dc:Point" x="1100" y="259" />
+        <di:waypoint xsi:type="dc:Point" x="1137" y="259" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1073.5" y="238" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17c5hhe_di" bpmnElement="SequenceFlow_17c5hhe">
+        <di:waypoint xsi:type="dc:Point" x="1187" y="299" />
+        <di:waypoint xsi:type="dc:Point" x="1187" y="324" />
+        <di:waypoint xsi:type="dc:Point" x="419" y="324" />
+        <di:waypoint xsi:type="dc:Point" x="419" y="354" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="758" y="303" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0m6q3pf_di" bpmnElement="SequenceFlow_0m6q3pf">
+        <di:waypoint xsi:type="dc:Point" x="621" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="672" y="394" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="646.5" y="373" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vj0wfl_di" bpmnElement="SequenceFlow_0vj0wfl">
+        <di:waypoint xsi:type="dc:Point" x="469" y="533" />
+        <di:waypoint xsi:type="dc:Point" x="521" y="533" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="495" y="512" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_12zreeo_di" bpmnElement="EndEvent_1">
+        <dc:Bounds x="1304" y="515" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1313" y="555" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_16xzdgi_di" bpmnElement="SequenceFlow_16xzdgi">
+        <di:waypoint xsi:type="dc:Point" x="822" y="259" />
+        <di:waypoint xsi:type="dc:Point" x="872" y="259" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="847" y="238" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1oa0jsk_di" bpmnElement="SequenceFlow_1oa0jsk">
+        <di:waypoint xsi:type="dc:Point" x="972" y="259" />
+        <di:waypoint xsi:type="dc:Point" x="1000" y="259" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="986" y="238" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0zgcd21_di" bpmnElement="vfFlagSet">
+        <dc:Bounds x="872" y="219" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rfmnuo_di" bpmnElement="SequenceFlow_1rfmnuo">
+        <di:waypoint xsi:type="dc:Point" x="1153" y="436" />
+        <di:waypoint xsi:type="dc:Point" x="1153" y="465" />
+        <di:waypoint xsi:type="dc:Point" x="419" y="465" />
+        <di:waypoint xsi:type="dc:Point" x="419" y="493" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="741" y="444" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_12if1z7_di" bpmnElement="CallActivity_12if1z7">
+        <dc:Bounds x="809" y="354" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ykv4yr_di" bpmnElement="SequenceFlow_1ykv4yr">
+        <di:waypoint xsi:type="dc:Point" x="772" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="809" y="394" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="790.5" y="373" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1x3xeba_di" bpmnElement="SequenceFlow_1x3xeba">
+        <di:waypoint xsi:type="dc:Point" x="909" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="955" y="394" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="932" y="373" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1mn9pxh_di" bpmnElement="CallActivity_1mn9pxh">
+        <dc:Bounds x="1103" y="354" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_01yr04k_di" bpmnElement="SequenceFlow_01yr04k">
+        <di:waypoint xsi:type="dc:Point" x="1055" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="1103" y="394" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1079" y="373" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleVolumeInfraV1.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleVolumeInfraV1.bpmn
new file mode 100644
index 0000000..078d72a
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleVolumeInfraV1.bpmn
@@ -0,0 +1,517 @@
+<?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="_ZBLUcCkQEeaY6ZhIaNLwzg" 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="UpdateVfModuleVolumeInfraV1" name="UpdateVfModuleVolumeInfraV1" isExecutable="true">
+    <bpmn2:endEvent id="EndEvent_4" name="TheEnd">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" />
+    </bpmn2:endEvent>
+    <bpmn2:callActivity id="CallActivity_completionHandler" name="Completion Handler" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in source="UPDVfModVol_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:out source="CMSO_ResponseCode" target="UPDVfModVol_CMSO_ResponseCode" />
+        <camunda:out source="CMSO_ErrorResponse" target="UPDVfModVol_CMSO_ErrorResponse" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="CallActivity_completionHandler" targetRef="ScriptTask_postProcessTemp" />
+    <bpmn2:serviceTask id="ServiceTask_callUpdateInfraDb" name="Call Update Infra DB">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint", execution)}]]></camunda:inputParameter>
+            <camunda:inputParameter name="payload">${UPDVfModVol_updateInfraRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">aapplication/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="UPDVfModVol_createDBResponse">${response}</camunda:outputParameter>
+            <camunda:outputParameter name="UPDVfModVol_dbReturnCode">${statusCode}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="ServiceTask_callUpdateInfraDb" targetRef="ScriptTask_prepCompletionHandlerRequest" />
+    <bpmn2:scriptTask id="ScriptTask_prepVnfRest" name="Prepare VNF Adapter Rest Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvmv = new UpdateVfModuleVolumeInfraV1()
+uvmv.executeMethod('prepVnfAdapterRest', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_21" name="" sourceRef="ScriptTask_prepVnfRest" targetRef="CallActivity_callVNFAdapterRest" />
+    <bpmn2:scriptTask id="ScriptTask_prepCompletionHandlerRequest" name="Prep Completion Handler Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvmv = new UpdateVfModuleVolumeInfraV1()
+uvmv.executeMethod('prepCompletionHandlerRequest', execution, UPDVfModVol_requestId, 'UPDATE', UPDVfModVol_source, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="ScriptTask_prepCompletionHandlerRequest" targetRef="CallActivity_completionHandler" />
+    <bpmn2:callActivity id="CallActivity_callVNFAdapterRest" name="VNFAdapterRest" calledElement="vnfAdapterRestV1">
+      <bpmn2:extensionElements>
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:out source="vnfAdapterRestV1Response" target="UPDVfModVol_vnfAdapterRestResponse" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:in source="UPDVfModVol_vnfAdapterRestRequest" target="vnfAdapterRestV1Request" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_callVNFAdapterRest" targetRef="ScriptTask_prepDbInfraRequest" />
+    <bpmn2:scriptTask id="ScriptTask_prepDbInfraRequest" name="Prep DB Infra Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvmv = new UpdateVfModuleVolumeInfraV1()
+uvmv.executeMethod('prepDbInfraDbRequest', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="ScriptTask_prepDbInfraRequest" targetRef="ServiceTask_callUpdateInfraDb" />
+    <bpmn2:scriptTask id="ScriptTask_postProcessTemp" name="Set Success" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[// The following variable is checked by the unit test
+execution.setVariable("UpdateVfModuleVolumeSuccessIndicator", true)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="ScriptTask_postProcessTemp" targetRef="EndEvent_4" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_2">
+      <bpmn2:incoming>SequenceFlow_noVfModuleRelation</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_personaModelIdMatchYes</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:subProcess id="SubProcess_errorHandler" name="Error Handler" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_catchAllErrors" name="Catch All Errors">
+        <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="_ErrorEventDefinition_77" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_3">
+        <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_11" />
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="StartEvent_catchAllErrors" targetRef="ScriptTask_preFalloutHandler" />
+      <bpmn2:scriptTask id="ScriptTask_preFalloutHandler" name="Fallout Handler (prep)" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvmv = new UpdateVfModuleVolumeInfraV1()
+uvmv.executeMethod('prepFalloutHandler', execution, isDebugLogEnabled)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ScriptTask_preFalloutHandler" targetRef="CallActivity_falloutHandler" />
+      <bpmn2:callActivity id="CallActivity_falloutHandler" name="Fallout Handler" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in source="UPDVfModVol_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" />
+          <camunda:out source="FH_ResponseCode" target="UPDVfModVol_FH_ResponseCode" />
+          <camunda:out source="FH_ErrorResponse" target="UPDVfModVol_FH_ErrorResponse" />
+          <camunda:out source="FalloutHandlerResponse" target="UPDVfModVol_FalloutHandlerResponse" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="CallActivity_falloutHandler" targetRef="EndEvent_3" />
+    </bpmn2:subProcess>
+    <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ExclusiveGateway_2" targetRef="ScriptTask_prepVnfRest" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_personaModelIdMatch" name="Persona Model ID match?" default="SequenceFlow_personaModelidMatchNo">
+      <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_personaModelIdMatchYes</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_personaModelidMatchNo</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_personaModelIdMatchYes" name="Yes" sourceRef="ExclusiveGateway_personaModelIdMatch" targetRef="ExclusiveGateway_2">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{UPDVfModVol_modelInvariantId == UPDVfModVol_personaModelId}</bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_personaModelidMatchNo" name="No" sourceRef="ExclusiveGateway_personaModelIdMatch" targetRef="ScriptTask_handlePersonaModelIdMismatch" />
+    <bpmn2:scriptTask id="ScriptTask_queryAaiForVfModule" name="Query AAI for VF Module" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_YesVfModuleRelation</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvmv = new UpdateVfModuleVolumeInfraV1()
+uvmv.executeMethod('queryAAIForVfModule', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ScriptTask_queryAaiForVfModule" targetRef="ExclusiveGateway_personaModelIdMatch" />
+    <bpmn2:scriptTask id="ScriptTask_handlePersonaModelIdMismatch" name="Handle Persona Model ID Mismatch" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_personaModelidMatchNo</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvmv = new UpdateVfModuleVolumeInfraV1()
+uvmv.executeMethod('handlePersonaModelIdMismatch', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="ScriptTask_handlePersonaModelIdMismatch" targetRef="EndEvent_personaModelIdMismatch" />
+    <bpmn2:endEvent id="EndEvent_personaModelIdMismatch">
+      <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_1" />
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="ScriptTask_preProcessRequest" name="Pre-process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvmv = new UpdateVfModuleVolumeInfraV1()
+uvmv.executeMethod('preProcessRequest', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="ScriptTask_preProcessRequest" targetRef="ScriptTask_sendSynchResponse" />
+    <bpmn2:startEvent id="StartEvent_1" name="Start">
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_preProcessRequest" />
+    <bpmn2:scriptTask id="ScriptTask_sendSynchResponse" name="Send Synch Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_20</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvmv = new UpdateVfModuleVolumeInfraV1()
+uvmv.executeMethod('sendSynchResponse', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_20" name="" sourceRef="ScriptTask_sendSynchResponse" targetRef="ScriptTask_queryAaiGenricVnf" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="VF-MODULE relation?" default="SequenceFlow_noVfModuleRelation">
+      <bpmn2:incoming>SequenceFlow_tenantIsMatch</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_YesVfModuleRelation</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_noVfModuleRelation</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_YesVfModuleRelation" name="Yes" sourceRef="ExclusiveGateway_1" targetRef="ScriptTask_queryAaiForVfModule">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{UPDVfModVol_relatedVfModuleLink != ''}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_noVfModuleRelation" name="No" sourceRef="ExclusiveGateway_1" targetRef="ExclusiveGateway_2" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_isTenantMatch" name="TenantId Match?" default="SequenceFlow_NoTenantMatch">
+      <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_NoTenantMatch</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_tenantIsMatch</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_NoTenantMatch" name="No" sourceRef="ExclusiveGateway_isTenantMatch" targetRef="ScriptTask_tenantIdMismatch" />
+    <bpmn2:sequenceFlow id="SequenceFlow_tenantIsMatch" name="Yes" sourceRef="ExclusiveGateway_isTenantMatch" targetRef="ExclusiveGateway_1">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{UPDVfModVol_tenantId == UPDVfModVol_volumeGroupTenantId}</bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:scriptTask id="ScriptTask_tenantIdMismatch" name="Handle TenantId Mismatch" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_NoTenantMatch</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvmv = new UpdateVfModuleVolumeInfraV1()
+uvmv.executeMethod('handleTenantIdMismatch', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_tenantIdMismatch" targetRef="EndEvent_2" />
+    <bpmn2:endEvent id="EndEvent_2">
+      <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_76" errorRef="Error_1" />
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="ScriptTask_queryAAI" name="Query AAI for Volume Group Info" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvmv = new UpdateVfModuleVolumeInfraV1()
+uvmv.executeMethod('queryAAIForVolumeGroup', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="ScriptTask_queryAAI" targetRef="ExclusiveGateway_isTenantMatch" />
+    <bpmn2:scriptTask id="ScriptTask_queryAaiGenricVnf" name="Query AAI for Generic VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_20</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvmv = new UpdateVfModuleVolumeInfraV1()
+uvmv.executeMethod('queryAAIForGenericVnf', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_queryAaiGenricVnf" targetRef="ScriptTask_queryAAI" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateVfModuleVolumeInfraV1">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_62" bpmnElement="StartEvent_1">
+        <dc:Bounds x="191" y="131" width="37" height="37" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="192" y="173" width="34" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_StartEvent_62" targetElement="_BPMNShape_ScriptTask_231">
+        <di:waypoint xsi:type="dc:Point" x="227" y="149" />
+        <di:waypoint xsi:type="dc:Point" x="268" y="149" />
+        <di:waypoint xsi:type="dc:Point" x="268" y="150" />
+        <di:waypoint xsi:type="dc:Point" x="295" y="150" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="248" y="149" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_42" bpmnElement="CallActivity_callVNFAdapterRest">
+        <dc:Bounds x="591" y="420" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_230" bpmnElement="ScriptTask_postProcessTemp">
+        <dc:Bounds x="1318" y="420" width="109" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_231" bpmnElement="ScriptTask_preProcessRequest">
+        <dc:Bounds x="295" y="111" width="109" height="78" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_232" bpmnElement="ScriptTask_sendSynchResponse">
+        <dc:Bounds x="454" y="112" width="109" height="76" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_231" targetElement="_BPMNShape_ScriptTask_232">
+        <di:waypoint xsi:type="dc:Point" x="403" y="150" />
+        <di:waypoint xsi:type="dc:Point" x="454" y="150" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="418" y="150" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_233" bpmnElement="ScriptTask_prepDbInfraRequest">
+        <dc:Bounds x="730" y="420" width="109" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_101" bpmnElement="ServiceTask_callUpdateInfraDb">
+        <dc:Bounds x="868" y="420" width="109" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_233" targetElement="_BPMNShape_ServiceTask_101">
+        <di:waypoint xsi:type="dc:Point" x="838" y="460" />
+        <di:waypoint xsi:type="dc:Point" x="868" y="460" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="853" y="491" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_ServiceTask_101" targetElement="_BPMNShape_ScriptTask_234">
+        <di:waypoint xsi:type="dc:Point" x="976" y="460" />
+        <di:waypoint xsi:type="dc:Point" x="1014" y="460" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="959" y="497" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_234" bpmnElement="ScriptTask_prepCompletionHandlerRequest">
+        <dc:Bounds x="1014" y="420" width="109" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_43" bpmnElement="CallActivity_completionHandler">
+        <dc:Bounds x="1162" y="429" width="109" height="61" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_234" targetElement="_BPMNShape_CallActivity_43">
+        <di:waypoint xsi:type="dc:Point" x="1122" y="460" />
+        <di:waypoint xsi:type="dc:Point" x="1162" y="459" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1134" y="477" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_43" targetElement="_BPMNShape_ScriptTask_230">
+        <di:waypoint xsi:type="dc:Point" x="1270" y="459" />
+        <di:waypoint xsi:type="dc:Point" x="1318" y="460" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1216" y="521" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_235" bpmnElement="ScriptTask_queryAAI">
+        <dc:Bounds x="742" y="113" width="109" height="73" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_126" bpmnElement="ExclusiveGateway_isTenantMatch" isMarkerVisible="true">
+        <dc:Bounds x="931" y="132" width="34" height="34" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="898" y="113" width="102" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_236" bpmnElement="ScriptTask_tenantIdMismatch">
+        <dc:Bounds x="1064" y="112" width="97" height="75" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ScriptTask_235" targetElement="_BPMNShape_ExclusiveGateway_126">
+        <di:waypoint xsi:type="dc:Point" x="850" y="149" />
+        <di:waypoint xsi:type="dc:Point" x="931" y="149" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="877" y="149" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_NoTenantMatch" sourceElement="_BPMNShape_ExclusiveGateway_126" targetElement="_BPMNShape_ScriptTask_236">
+        <di:waypoint xsi:type="dc:Point" x="965" y="149" />
+        <di:waypoint xsi:type="dc:Point" x="1064" y="149" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="986" y="149" width="22" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_169" bpmnElement="EndEvent_2">
+        <dc:Bounds x="1225" y="125" width="49" height="49" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1249" y="179" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_236" targetElement="_BPMNShape_EndEvent_169">
+        <di:waypoint xsi:type="dc:Point" x="1160" y="149" />
+        <di:waypoint xsi:type="dc:Point" x="1225" y="149" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1179" y="149" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_tenantIsMatch" sourceElement="_BPMNShape_ExclusiveGateway_126" targetElement="_BPMNShape_ExclusiveGateway_254">
+        <di:waypoint xsi:type="dc:Point" x="948" y="166" />
+        <di:waypoint xsi:type="dc:Point" x="948" y="244" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="915" y="173" width="29" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_42" targetElement="_BPMNShape_ScriptTask_233">
+        <di:waypoint xsi:type="dc:Point" x="691" y="460" />
+        <di:waypoint xsi:type="dc:Point" x="730" y="460" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="712" y="531" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_20" sourceElement="_BPMNShape_ScriptTask_232" targetElement="_BPMNShape_ScriptTask_318">
+        <di:waypoint xsi:type="dc:Point" x="562" y="150" />
+        <di:waypoint xsi:type="dc:Point" x="581" y="150" />
+        <di:waypoint xsi:type="dc:Point" x="581" y="149" />
+        <di:waypoint xsi:type="dc:Point" x="612" y="149" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="578" y="150" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_237" bpmnElement="ScriptTask_prepVnfRest">
+        <dc:Bounds x="454" y="420" width="109" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_ScriptTask_237" targetElement="_BPMNShape_CallActivity_42">
+        <di:waypoint xsi:type="dc:Point" x="562" y="460" />
+        <di:waypoint xsi:type="dc:Point" x="591" y="460" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="446" y="460" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_18" bpmnElement="SubProcess_errorHandler" isExpanded="true">
+        <dc:Bounds x="250" y="786" width="781" height="187" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_63" bpmnElement="StartEvent_catchAllErrors">
+        <dc:Bounds x="301" y="844" width="37" height="37" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="270" y="886" width="98" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_238" bpmnElement="ScriptTask_preFalloutHandler">
+        <dc:Bounds x="445" y="832" width="109" height="61" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_44" bpmnElement="CallActivity_falloutHandler">
+        <dc:Bounds x="639" y="832" width="109" height="61" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_238" targetElement="_BPMNShape_CallActivity_44">
+        <di:waypoint xsi:type="dc:Point" x="553" y="862" />
+        <di:waypoint xsi:type="dc:Point" x="639" y="862" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="573" y="946" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_170" bpmnElement="EndEvent_3">
+        <dc:Bounds x="862" y="844" width="37" height="37" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="880" y="886" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_CallActivity_44" targetElement="_BPMNShape_EndEvent_170">
+        <di:waypoint xsi:type="dc:Point" x="747" y="862" />
+        <di:waypoint xsi:type="dc:Point" x="862" y="862" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="765" y="1030" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_171" bpmnElement="EndEvent_4">
+        <dc:Bounds x="1461" y="438" width="43" height="43" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1457" y="486" width="50" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_ScriptTask_230" targetElement="_BPMNShape_EndEvent_171">
+        <di:waypoint xsi:type="dc:Point" x="1426" y="460" />
+        <di:waypoint xsi:type="dc:Point" x="1461" y="459" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1442" y="467" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_StartEvent_63" targetElement="_BPMNShape_ScriptTask_238">
+        <di:waypoint xsi:type="dc:Point" x="337" y="862" />
+        <di:waypoint xsi:type="dc:Point" x="445" y="862" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="385" y="1030" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_254" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true">
+        <dc:Bounds x="931" y="244" width="34" height="34" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="881" y="283" width="135" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_YesVfModuleRelation" sourceElement="_BPMNShape_ExclusiveGateway_254" targetElement="_BPMNShape_ScriptTask_313">
+        <di:waypoint xsi:type="dc:Point" x="931" y="261" />
+        <di:waypoint xsi:type="dc:Point" x="634" y="261" />
+        <di:waypoint xsi:type="dc:Point" x="634" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="405" y="262" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="729" y="261" width="29" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_313" bpmnElement="ScriptTask_queryAaiForVfModule">
+        <dc:Bounds x="297" y="222" width="109" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_255" bpmnElement="ExclusiveGateway_personaModelIdMatch" isMarkerVisible="true">
+        <dc:Bounds x="333" y="346" width="34" height="34" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="272" y="385" width="156" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ScriptTask_313" targetElement="_BPMNShape_ExclusiveGateway_255">
+        <di:waypoint xsi:type="dc:Point" x="350" y="302" />
+        <di:waypoint xsi:type="dc:Point" x="350" y="329" />
+        <di:waypoint xsi:type="dc:Point" x="350" y="346" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="347" y="318" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_personaModelIdMatchYes" sourceElement="_BPMNShape_ExclusiveGateway_255" targetElement="_BPMNShape_ExclusiveGateway_256">
+        <di:waypoint xsi:type="dc:Point" x="367" y="363" />
+        <di:waypoint xsi:type="dc:Point" x="491" y="363" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="398" y="363" width="29" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_256" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true">
+        <dc:Bounds x="491" y="346" width="34" height="34" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="508" y="385" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_noVfModuleRelation" sourceElement="_BPMNShape_ExclusiveGateway_254" targetElement="_BPMNShape_ExclusiveGateway_256">
+        <di:waypoint xsi:type="dc:Point" x="948" y="278" />
+        <di:waypoint xsi:type="dc:Point" x="948" y="363" />
+        <di:waypoint xsi:type="dc:Point" x="701" y="363" />
+        <di:waypoint xsi:type="dc:Point" x="525" y="363" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="795" y="363" width="22" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_personaModelidMatchNo" sourceElement="_BPMNShape_ExclusiveGateway_255" targetElement="_BPMNShape_ScriptTask_315">
+        <di:waypoint xsi:type="dc:Point" x="350" y="380" />
+        <di:waypoint xsi:type="dc:Point" x="350" y="401" />
+        <di:waypoint xsi:type="dc:Point" x="351" y="460" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="350" y="409" width="22" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_315" bpmnElement="ScriptTask_handlePersonaModelIdMismatch">
+        <dc:Bounds x="297" y="460" width="109" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_172" bpmnElement="EndEvent_personaModelIdMismatch">
+        <dc:Bounds x="330" y="600" width="43" height="43" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="351" y="648" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_ScriptTask_315" targetElement="_BPMNShape_EndEvent_172">
+        <di:waypoint xsi:type="dc:Point" x="351" y="540" />
+        <di:waypoint xsi:type="dc:Point" x="351" y="600" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="348" y="560" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_25" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ExclusiveGateway_256" targetElement="_BPMNShape_ScriptTask_237">
+        <di:waypoint xsi:type="dc:Point" x="508" y="380" />
+        <di:waypoint xsi:type="dc:Point" x="508" y="420" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_318" bpmnElement="ScriptTask_queryAaiGenricVnf">
+        <dc:Bounds x="612" y="112" width="97" height="75" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_318" targetElement="_BPMNShape_ScriptTask_235">
+        <di:waypoint xsi:type="dc:Point" x="708" y="149" />
+        <di:waypoint xsi:type="dc:Point" x="742" y="149" />
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVnfInfra.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVnfInfra.bpmn
new file mode 100644
index 0000000..e50eb7f
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVnfInfra.bpmn
@@ -0,0 +1,1685 @@
+<?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.11.3" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="UpdateVnfInfra" name="UpdateVnfInfra" 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.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVnfInfra()
+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.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVnfInfra()
+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("UpdateVfModuleInfraSuccessIndicator", 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_1dqbqqx</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVnfInfra()
+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_07rej8l" />
+      <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0slcwxc</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+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="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_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.onap.so.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.onap.so.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" />
+          <camunda:in source="controllerType" target="controllerType" />
+        </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>
+      <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:callActivity id="ScriptTask_6" name="DoUpdateVnfAndModules" calledElement="DoUpdateVnfAndModules">
+      <bpmn2:extensionElements>
+        <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="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>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="no" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="ScriptTask_10" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1w35ov3" sourceRef="Task_1gg76h7" targetRef="Task_1opcb4j" />
+    <bpmn2:callActivity id="Task_1gg76h7" name="Decompose Service" 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="WorkflowException" target="WorkflowException" />
+        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0y0jt4l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1w35ov3</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <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>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVnfInfra()
+uvfm.getVnfResourceDecomposition(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <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_1pj72fw</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVnfInfra()
+uvfm.checkIfVnfInMaintInAAI(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0usxnlk" sourceRef="Task_0vy2zge" targetRef="ExclusiveGateway_0q323wc" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1bkhs8m" name="no" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="Task_1dtbnuy" />
+    <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_1lmijmb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0k3fx7p</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVnfInfra()
+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_19lg15d</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_11p8elx</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_12mfil6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVnfInfra()
+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_178fxkj</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0usxnlk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVnfInfra()
+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_06mv93h" />
+    <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_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_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="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_1nplvhi</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0v0u7mf</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <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("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_1bkhs8m">
+      <bpmn2:incoming>SequenceFlow_0k3fx7p</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1bkhs8m</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_010ynjs</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0k3fx7p" sourceRef="Task_0ap39ka" targetRef="ExclusiveGateway_0ud5uwa" />
+    <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_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_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_1m84lq5</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1c0vdki" name="no" sourceRef="ExclusiveGateway_1etgtgi" targetRef="Task_0eae8go" />
+    <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_0fog99f</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_04zwhw4" name="no" sourceRef="ExclusiveGateway_0ulrq9g" targetRef="Task_1hdg951" />
+    <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_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_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_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_3</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0p94lgv</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:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVnfInfra()
+uvfm.abortProcessing(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0xlxgl0" name="Check Disposition">
+      <bpmn2:incoming>SequenceFlow_0v0u7mf</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0vpd06n</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1qr8msw</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_05gpym3</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0y82zzx" name="Which step to skip?" default="SequenceFlow_1c022sy">
+      <bpmn2:incoming>SequenceFlow_05gpym3</bpmn2:incoming>
+      <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("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_1hldqvv</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_19ba94v</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVnfInfra()
+uvfm.prepDoUpdateVnfAndModules(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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.onap.so.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">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateVnfInfra">
+      <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="589" y="1222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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">
+        <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="525" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="601" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="563" y="222" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4">
+        <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="533" y="1240" />
+        <di:waypoint xsi:type="dc:Point" x="589" y="1240" />
+        <bpmndi:BPMNLabel>
+          <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="133" y="1200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1">
+        <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="233" y="1240" />
+        <di:waypoint xsi:type="dc:Point" x="283" y="1240" />
+        <bpmndi:BPMNLabel>
+          <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="88" y="1464" width="966" height="240" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3">
+        <dc:Bounds x="152" y="1558" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="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="188" y="1576" />
+        <di:waypoint xsi:type="dc:Point" x="220" y="1576" />
+        <bpmndi:BPMNLabel>
+          <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="721" y="1576" />
+        <di:waypoint xsi:type="dc:Point" x="789" y="1576" />
+        <bpmndi:BPMNLabel>
+          <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="945" y="1558" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="1036" y="1558" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="1164" y="1558" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="1072" y="1576" />
+        <di:waypoint xsi:type="dc:Point" x="1164" y="1576" />
+        <bpmndi:BPMNLabel>
+          <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="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="383" y="1240" />
+        <di:waypoint xsi:type="dc:Point" x="433" y="1240" />
+        <bpmndi:BPMNLabel>
+          <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="889" y="1576" />
+        <di:waypoint xsi:type="dc:Point" x="945" y="1576" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="961" y="954.3909136697287" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1w35ov3_di" bpmnElement="SequenceFlow_1w35ov3">
+        <di:waypoint xsi:type="dc:Point" x="655" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="718" y="90" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="687" y="75" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0qfx7sz_di" bpmnElement="Task_1gg76h7">
+        <dc:Bounds x="555" y="50" width="100" height="80" />
+      </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="871" y="90" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="845" y="75" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_08xzuox_di" bpmnElement="Task_1opcb4j">
+        <dc:Bounds x="718" 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="555" y="90" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="514" y="75" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_19pf9z8_di" bpmnElement="Task_1rxiqe1">
+        <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="292" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="262" 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="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="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="519" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="595" y="725" />
+        <bpmndi:BPMNLabel>
+          <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="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="474" />
+        <di:waypoint xsi:type="dc:Point" x="292" y="474" />
+        <bpmndi:BPMNLabel>
+          <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="474" />
+        <di:waypoint xsi:type="dc:Point" x="601" y="474" />
+        <bpmndi:BPMNLabel>
+          <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="474" />
+        <di:waypoint xsi:type="dc:Point" x="871" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="843" y="459" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1uno5rs_di" bpmnElement="SequenceFlow_1uno5rs">
+        <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="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="239" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="292" y="983" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="266" y="968" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xfbwpi_di" bpmnElement="SequenceFlow_1xfbwpi">
+        <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="558" y="968" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <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="273" y="175" width="87" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_16mo99z_di" bpmnElement="SequenceFlow_16mo99z">
+        <di:waypoint xsi:type="dc:Point" x="342" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="425" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="373" y="213" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <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="168" 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" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="673" 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" />
+      </bpmndi:BPMNShape>
+      <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" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1273" y="495" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Task_0zbogrm_di" bpmnElement="Task_0zbogrm">
+        <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="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="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="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="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="859" y="167" 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="871" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="843" 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="449" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="474" />
+        <di:waypoint xsi:type="dc:Point" x="425" y="474" />
+        <bpmndi:BPMNLabel>
+          <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="449" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="474" />
+        <di:waypoint xsi:type="dc:Point" x="714" y="474" />
+        <bpmndi:BPMNLabel>
+          <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="871" y="449" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="595" y="700" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="645" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="712" y="725" />
+        <bpmndi:BPMNLabel>
+          <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="876" y="700" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="292" y="958" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="601" y="958" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="651" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="718" y="983" />
+        <bpmndi:BPMNLabel>
+          <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="882" y="958" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="818" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="882" y="983" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="1431" y="485" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="1364" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="1431" y="510" />
+        <bpmndi:BPMNLabel>
+          <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="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="376" y="725" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0rqgdju_di" bpmnElement="Task_0eae8go">
+        <dc:Bounds x="195" y="685" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <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="490" y="292.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_04ceksx_di" bpmnElement="IntermediateThrowEvent_1urs7gm">
+        <dc:Bounds x="746" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="720" y="344" width="88" height="24" />
+        </bpmndi:BPMNLabel>
+      </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="779" y="292.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0rq7l0k_di" bpmnElement="IntermediateThrowEvent_0wx980v">
+        <dc:Bounds x="878" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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/so-bpmn-infrastructure-flows/src/main/resources/process/VnfConfigUpdate.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/VnfConfigUpdate.bpmn
new file mode 100644
index 0000000..e296aef
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/VnfConfigUpdate.bpmn
@@ -0,0 +1,1636 @@
+<?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.11.3" 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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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" />
+          <camunda:in source="controllerType" target="controllerType" />
+        </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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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.onap.so.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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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/so-bpmn-infrastructure-flows/src/main/resources/process/VnfInPlaceUpdate.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/VnfInPlaceUpdate.bpmn
new file mode 100644
index 0000000..3c42320
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/VnfInPlaceUpdate.bpmn
@@ -0,0 +1,2302 @@
+<?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.onap.so.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.onap.so.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.onap.so.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.onap.so.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" />
+          <camunda:in source="controllerType" target="controllerType" />
+        </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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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" />
+        <camunda:in source="controllerType" target="controllerType" />
+        <camunda:in source="vserverIdList" target="vserverIdList" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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.onap.so.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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCompareModelVersions.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCompareModelVersions.bpmn
new file mode 100644
index 0000000..f7023c3
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCompareModelVersions.bpmn
@@ -0,0 +1,330 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCompareModelVersions" name="DoCompareModelVersions" isExecutable="true">
+    <bpmn2:scriptTask id="ScriptTask_04rn9mp" name="DoCompareModelVersions" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1rebkae</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lkpfe2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoCompareModelVersions()
+csi.doCompareModelVersions(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1rebkae" sourceRef="StartEvent_0jhv664" targetRef="ScriptTask_04rn9mp" />
+    <bpmn2:intermediateCatchEvent id="StartEvent_0jhv664" name="StartCompare">
+      <bpmn2:outgoing>SequenceFlow_1rebkae</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartCompare" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:endEvent id="EndEvent_0x8im5g">
+      <bpmn2:incoming>SequenceFlow_1lkpfe2</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1lkpfe2" sourceRef="ScriptTask_04rn9mp" targetRef="EndEvent_0x8im5g" />
+    <bpmn2:subProcess id="SubProcess_0roysbg" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_0xtpw6j">
+        <bpmn2:outgoing>SequenceFlow_19sogyb</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_05a2pr9">
+        <bpmn2:incoming>SequenceFlow_17mr4jl</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_0xk9fk3" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_19sogyb</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_17mr4jl</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_19sogyb" name="" sourceRef="StartEvent_0xtpw6j" targetRef="ScriptTask_0xk9fk3" />
+      <bpmn2:sequenceFlow id="SequenceFlow_17mr4jl" name="" sourceRef="ScriptTask_0xk9fk3" targetRef="EndEvent_05a2pr9" />
+    </bpmn2:subProcess>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0se5nzs" name="GoTo Decompose_Service_Original">
+      <bpmn2:incoming>SequenceFlow_0enm2cg</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="Decompose_Service_Original" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:scriptTask id="ScriptTask_1odhh8p" name="PostProcess&#10;Decompose&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1pe6r93</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0enm2cg</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi= new DoCompareModelVersions()
+dcsi.processDecomposition_Target(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_1va14ul" name="Call Decompose Service" calledElement="DecomposeService">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceModelInfo_Target" 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_1lta49u</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1pe6r93</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_1fau2rr" name="Prepare&#10;Decompose&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0frea3k</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lta49u</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi= new DoCompareModelVersions()
+dcsi.prepareDecomposeService_Target(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_07fy2ke" name="Decompose_Service_Target">
+      <bpmn2:outgoing>SequenceFlow_0frea3k</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="Decompose_Service_Target" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1pe6r93" sourceRef="CallActivity_1va14ul" targetRef="ScriptTask_1odhh8p" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0enm2cg" sourceRef="ScriptTask_1odhh8p" targetRef="IntermediateThrowEvent_0se5nzs" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1lta49u" sourceRef="ScriptTask_1fau2rr" targetRef="CallActivity_1va14ul" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0frea3k" sourceRef="IntermediateCatchEvent_07fy2ke" targetRef="ScriptTask_1fau2rr" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0b436w1" name="GoTo StartCompare">
+      <bpmn2:incoming>SequenceFlow_08zjjzw</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartCompare" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:scriptTask id="ScriptTask_1d9qb54" name="PostProcess&#10;Decompose&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1wudpuj</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_08zjjzw</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi= new DoCompareModelVersions()
+dcsi.processDecomposition_Original(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_1fc56sd" name="Call Decompose Service" calledElement="DecomposeService">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceModelInfo_Original" 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_04ciw70</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1wudpuj</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_1i06996" name="Prepare&#10;Decompose&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1fgkvpr</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04ciw70</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi= new DoCompareModelVersions()
+dcsi.prepareDecomposeService_Original(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1m9q0j7" name="Decompose_Service_Original">
+      <bpmn2:outgoing>SequenceFlow_1fgkvpr</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="Decompose_Service_Original" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_08zjjzw" sourceRef="ScriptTask_1d9qb54" targetRef="IntermediateThrowEvent_0b436w1" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1wudpuj" sourceRef="CallActivity_1fc56sd" targetRef="ScriptTask_1d9qb54" />
+    <bpmn2:sequenceFlow id="SequenceFlow_04ciw70" sourceRef="ScriptTask_1i06996" targetRef="CallActivity_1fc56sd" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1fgkvpr" sourceRef="IntermediateCatchEvent_1m9q0j7" targetRef="ScriptTask_1i06996" />
+    <bpmn2:startEvent id="StartEvent_13da9hl" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1chfao3</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:scriptTask id="ScriptTask_0nie46r" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1chfao3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_164yb3r</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCompareModelVersions()
+dcsi.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1dhdmdy" name="GoTo Decompose_Service_Target">
+      <bpmn2:incoming>SequenceFlow_164yb3r</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="Decompose_Service_Target" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1chfao3" name="" sourceRef="StartEvent_13da9hl" targetRef="ScriptTask_0nie46r" />
+    <bpmn2:sequenceFlow id="SequenceFlow_164yb3r" name="" sourceRef="ScriptTask_0nie46r" targetRef="IntermediateThrowEvent_1dhdmdy" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCompareModelVersions">
+      <bpmndi:BPMNShape id="ScriptTask_04rn9mp_di" bpmnElement="ScriptTask_04rn9mp">
+        <dc:Bounds x="426" y="426" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rebkae_di" bpmnElement="SequenceFlow_1rebkae">
+        <di:waypoint xsi:type="dc:Point" x="10" y="466" />
+        <di:waypoint xsi:type="dc:Point" x="426" y="466" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="173" y="445" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_05z1jyy_di" bpmnElement="StartEvent_0jhv664">
+        <dc:Bounds x="-26" y="448" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-42" y="488" width="68" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0x8im5g_di" bpmnElement="EndEvent_0x8im5g">
+        <dc:Bounds x="1040" y="448" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1013" y="488" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lkpfe2_di" bpmnElement="SequenceFlow_1lkpfe2">
+        <di:waypoint xsi:type="dc:Point" x="526" y="466" />
+        <di:waypoint xsi:type="dc:Point" x="1040" y="466" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="738" y="445" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_0roysbg_di" bpmnElement="SubProcess_0roysbg" isExpanded="true">
+        <dc:Bounds x="221" y="751" width="467" height="193" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0xtpw6j_di" bpmnElement="StartEvent_0xtpw6j">
+        <dc:Bounds x="289" y="818" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="172" y="859" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_05a2pr9_di" bpmnElement="EndEvent_05a2pr9">
+        <dc:Bounds x="582" y="818" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="465" y="859" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0xk9fk3_di" bpmnElement="ScriptTask_0xk9fk3">
+        <dc:Bounds x="393" y="796" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_19sogyb_di" bpmnElement="SequenceFlow_19sogyb">
+        <di:waypoint xsi:type="dc:Point" x="325" y="836" />
+        <di:waypoint xsi:type="dc:Point" x="393" y="836" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="224" y="821" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17mr4jl_di" bpmnElement="SequenceFlow_17mr4jl">
+        <di:waypoint xsi:type="dc:Point" x="493" y="836" />
+        <di:waypoint xsi:type="dc:Point" x="582" y="836" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="405" y="821" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0se5nzs_di" bpmnElement="IntermediateThrowEvent_0se5nzs">
+        <dc:Bounds x="1048" y="189" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1022" y="230" width="88" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1odhh8p_di" bpmnElement="ScriptTask_1odhh8p">
+        <dc:Bounds x="711" y="167" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1va14ul_di" bpmnElement="CallActivity_1va14ul">
+        <dc:Bounds x="426" y="167" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1fau2rr_di" bpmnElement="ScriptTask_1fau2rr">
+        <dc:Bounds x="144" y="167" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_07fy2ke_di" bpmnElement="IntermediateCatchEvent_07fy2ke">
+        <dc:Bounds x="-26" y="189" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-49" y="225" width="88" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1pe6r93_di" bpmnElement="SequenceFlow_1pe6r93">
+        <di:waypoint xsi:type="dc:Point" x="526" y="207" />
+        <di:waypoint xsi:type="dc:Point" x="711" y="207" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="573.5" y="186" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0enm2cg_di" bpmnElement="SequenceFlow_0enm2cg">
+        <di:waypoint xsi:type="dc:Point" x="811" y="207" />
+        <di:waypoint xsi:type="dc:Point" x="906" y="207" />
+        <di:waypoint xsi:type="dc:Point" x="906" y="207" />
+        <di:waypoint xsi:type="dc:Point" x="1048" y="207" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="876" y="201" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lta49u_di" bpmnElement="SequenceFlow_1lta49u">
+        <di:waypoint xsi:type="dc:Point" x="244" y="207" />
+        <di:waypoint xsi:type="dc:Point" x="426" y="207" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="290" y="186" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0frea3k_di" bpmnElement="SequenceFlow_0frea3k">
+        <di:waypoint xsi:type="dc:Point" x="10" y="207" />
+        <di:waypoint xsi:type="dc:Point" x="144" y="207" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="32" y="186" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0b436w1_di" bpmnElement="IntermediateThrowEvent_0b436w1">
+        <dc:Bounds x="1047" y="311" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1032" y="352" width="68" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1d9qb54_di" bpmnElement="ScriptTask_1d9qb54">
+        <dc:Bounds x="711" y="290" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1fc56sd_di" bpmnElement="CallActivity_1fc56sd">
+        <dc:Bounds x="426" y="290" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1i06996_di" bpmnElement="ScriptTask_1i06996">
+        <dc:Bounds x="144" y="290" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1m9q0j7_di" bpmnElement="IntermediateCatchEvent_1m9q0j7">
+        <dc:Bounds x="-26" y="312" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-50" y="348" width="88" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_08zjjzw_di" bpmnElement="SequenceFlow_08zjjzw">
+        <di:waypoint xsi:type="dc:Point" x="811" y="330" />
+        <di:waypoint xsi:type="dc:Point" x="1047" y="329" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="929" y="308.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wudpuj_di" bpmnElement="SequenceFlow_1wudpuj">
+        <di:waypoint xsi:type="dc:Point" x="526" y="330" />
+        <di:waypoint xsi:type="dc:Point" x="711" y="330" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="618.5" y="309" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04ciw70_di" bpmnElement="SequenceFlow_04ciw70">
+        <di:waypoint xsi:type="dc:Point" x="244" y="330" />
+        <di:waypoint xsi:type="dc:Point" x="426" y="330" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="245" y="309" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fgkvpr_di" bpmnElement="SequenceFlow_1fgkvpr">
+        <di:waypoint xsi:type="dc:Point" x="10" y="330" />
+        <di:waypoint xsi:type="dc:Point" x="144" y="330" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-13" y="309" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="StartEvent_13da9hl_di" bpmnElement="StartEvent_13da9hl">
+        <dc:Bounds x="-20" y="83" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-26" y="124" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0nie46r_di" bpmnElement="ScriptTask_0nie46r">
+        <dc:Bounds x="340" y="61" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1dhdmdy_di" bpmnElement="IntermediateThrowEvent_1dhdmdy">
+        <dc:Bounds x="1048" y="83" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1023" y="123" width="88" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1chfao3_di" bpmnElement="SequenceFlow_1chfao3">
+        <di:waypoint xsi:type="dc:Point" x="16" y="101" />
+        <di:waypoint xsi:type="dc:Point" x="181" y="101" />
+        <di:waypoint xsi:type="dc:Point" x="181" y="101" />
+        <di:waypoint xsi:type="dc:Point" x="340" y="101" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="196" y="95" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_164yb3r_di" bpmnElement="SequenceFlow_164yb3r">
+        <di:waypoint xsi:type="dc:Point" x="440" y="101" />
+        <di:waypoint xsi:type="dc:Point" x="1048" y="101" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="744" y="80" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCompareModelofE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCompareModelofE2EServiceInstance.bpmn
new file mode 100644
index 0000000..c04c2d9
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCompareModelofE2EServiceInstance.bpmn
@@ -0,0 +1,227 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCompareModelofE2EServiceInstance" name="DoCompareModelofE2EServiceInstance" isExecutable="true">
+    <bpmn2:sequenceFlow id="SequenceFlow_1rebkae" sourceRef="StartEvent_0jhv664" targetRef="CallActivity_1va14ul" />
+    <bpmn2:intermediateCatchEvent id="StartEvent_0jhv664" name="StartCompare">
+      <bpmn2:outgoing>SequenceFlow_1rebkae</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartCompare" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:endEvent id="EndEvent_0x8im5g">
+      <bpmn2:incoming>SequenceFlow_1lkpfe2</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1lkpfe2" sourceRef="ScriptTask_1odhh8p" targetRef="EndEvent_0x8im5g" />
+    <bpmn2:subProcess id="SubProcess_0roysbg" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_0xtpw6j">
+        <bpmn2:outgoing>SequenceFlow_19sogyb</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_05a2pr9">
+        <bpmn2:incoming>SequenceFlow_17mr4jl</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_0xk9fk3" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_19sogyb</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_17mr4jl</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_19sogyb" name="" sourceRef="StartEvent_0xtpw6j" targetRef="ScriptTask_0xk9fk3" />
+      <bpmn2:sequenceFlow id="SequenceFlow_17mr4jl" name="" sourceRef="ScriptTask_0xk9fk3" targetRef="EndEvent_05a2pr9" />
+    </bpmn2:subProcess>
+    <bpmn2:startEvent id="StartEvent_13da9hl" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1chfao3</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1dhdmdy" name="GoTo StartCompare">
+      <bpmn2:incoming>SequenceFlow_1cpg3ku</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartCompare" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1chfao3" name="" sourceRef="StartEvent_13da9hl" targetRef="ScriptTask_0ba0el1" />
+    <bpmn2:callActivity id="CallActivity_1va14ul" name="Call DoCompareModelVersions" calledElement="DoCompareModelVersions">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="serviceDecomposition_Target" target="serviceDecomposition_Target" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="model-invariant-id-target" target="model-invariant-id-target" />
+        <camunda:in source="model-version-id-target" target="model-version-id-target" />
+        <camunda:in source="model-invariant-id-original" target="model-invariant-id-original" />
+        <camunda:in source="model-version-id-original" target="model-version-id-original" />
+        <camunda:out source="addResourceList" target="addResourceList" />
+        <camunda:out source="delResourceList" target="delResourceList" />
+        <camunda:out source="serviceDecomposition_Original" target="serviceDecomposition_Original" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1rebkae</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1pe6r93</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_1odhh8p" name="Post for Compare Model Versions&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1pe6r93</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lkpfe2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi= new DoCompareModelofE2EServiceInstance()
+dcsi.postCompareModelVersions(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1pe6r93" sourceRef="CallActivity_1va14ul" targetRef="ScriptTask_1odhh8p" />
+    <bpmn2:scriptTask id="ScriptTask_0ba0el1" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1chfao3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1xzphe4</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCompareModelofE2EServiceInstance()
+dcsi.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_1a3n88w" name="Call AAI Generic GetService" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in source="serviceType" target="GENGS_serviceType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1xzphe4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0b6eqin</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_18k4xnm" name="Post Process AAI GET" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0b6eqin</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1cpg3ku</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCompareModelofE2EServiceInstance()
+dcsi.postProcessAAIGET(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1xzphe4" name="" sourceRef="ScriptTask_0ba0el1" targetRef="CallActivity_1a3n88w" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0b6eqin" sourceRef="CallActivity_1a3n88w" targetRef="ScriptTask_18k4xnm" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1cpg3ku" sourceRef="ScriptTask_18k4xnm" targetRef="IntermediateThrowEvent_1dhdmdy" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCompareModelofE2EServiceInstance">
+      <bpmndi:BPMNEdge id="SequenceFlow_1rebkae_di" bpmnElement="SequenceFlow_1rebkae">
+        <di:waypoint xsi:type="dc:Point" x="6" y="259" />
+        <di:waypoint xsi:type="dc:Point" x="363" y="259" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="139.5" y="238" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_05z1jyy_di" bpmnElement="StartEvent_0jhv664">
+        <dc:Bounds x="-30" y="241" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-46" y="281" width="68" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0x8im5g_di" bpmnElement="EndEvent_0x8im5g">
+        <dc:Bounds x="1038" y="241" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1011" y="281" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lkpfe2_di" bpmnElement="SequenceFlow_1lkpfe2">
+        <di:waypoint xsi:type="dc:Point" x="801" y="259" />
+        <di:waypoint xsi:type="dc:Point" x="1038" y="259" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="874.5" y="238" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_0roysbg_di" bpmnElement="SubProcess_0roysbg" isExpanded="true">
+        <dc:Bounds x="216" y="387" width="467" height="193" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0xtpw6j_di" bpmnElement="StartEvent_0xtpw6j">
+        <dc:Bounds x="284" y="454" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="167" y="495" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_05a2pr9_di" bpmnElement="EndEvent_05a2pr9">
+        <dc:Bounds x="577" y="454" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="460" y="495" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0xk9fk3_di" bpmnElement="ScriptTask_0xk9fk3">
+        <dc:Bounds x="388" y="432" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_19sogyb_di" bpmnElement="SequenceFlow_19sogyb">
+        <di:waypoint xsi:type="dc:Point" x="320" y="472" />
+        <di:waypoint xsi:type="dc:Point" x="388" y="472" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="219" y="457" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17mr4jl_di" bpmnElement="SequenceFlow_17mr4jl">
+        <di:waypoint xsi:type="dc:Point" x="488" y="472" />
+        <di:waypoint xsi:type="dc:Point" x="577" y="472" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="400" y="457" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="StartEvent_13da9hl_di" bpmnElement="StartEvent_13da9hl">
+        <dc:Bounds x="-20" y="83" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-26" y="124" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1dhdmdy_di" bpmnElement="IntermediateThrowEvent_1dhdmdy">
+        <dc:Bounds x="1048" y="83" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1023" y="123" width="88" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1chfao3_di" bpmnElement="SequenceFlow_1chfao3">
+        <di:waypoint xsi:type="dc:Point" x="16" y="101" />
+        <di:waypoint xsi:type="dc:Point" x="211" y="101" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="68.5" y="80" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1va14ul_di" bpmnElement="CallActivity_1va14ul">
+        <dc:Bounds x="363" y="219" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1odhh8p_di" bpmnElement="ScriptTask_1odhh8p">
+        <dc:Bounds x="701" y="219" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1pe6r93_di" bpmnElement="SequenceFlow_1pe6r93">
+        <di:waypoint xsi:type="dc:Point" x="463" y="259" />
+        <di:waypoint xsi:type="dc:Point" x="701" y="259" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="537" y="238" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0ba0el1_di" bpmnElement="ScriptTask_0ba0el1">
+        <dc:Bounds x="211" y="61" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1a3n88w_di" bpmnElement="CallActivity_1a3n88w">
+        <dc:Bounds x="499" y="59" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_18k4xnm_di" bpmnElement="ScriptTask_18k4xnm">
+        <dc:Bounds x="776" y="61" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xzphe4_di" bpmnElement="SequenceFlow_1xzphe4">
+        <di:waypoint xsi:type="dc:Point" x="311" y="101" />
+        <di:waypoint xsi:type="dc:Point" x="499" y="99" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="360" y="85" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0b6eqin_di" bpmnElement="SequenceFlow_0b6eqin">
+        <di:waypoint xsi:type="dc:Point" x="599" y="99" />
+        <di:waypoint xsi:type="dc:Point" x="776" y="101" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="643.5" y="79" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cpg3ku_di" bpmnElement="SequenceFlow_1cpg3ku">
+        <di:waypoint xsi:type="dc:Point" x="876" y="101" />
+        <di:waypoint xsi:type="dc:Point" x="968" y="101" />
+        <di:waypoint xsi:type="dc:Point" x="968" y="101" />
+        <di:waypoint xsi:type="dc:Point" x="1048" y="101" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="983" y="95" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceBRG.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceBRG.bpmn
new file mode 100644
index 0000000..d7bd54c
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceBRG.bpmn
@@ -0,0 +1,755 @@
+<?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.9.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCreateAllottedResourceBRG" name="DoCreateAllottedResourceBRG" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" />
+    <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="initialization" targetRef="GetAAIServiceInstance" />
+    <bpmn2:scriptTask id="buildWorkflowException" name="Create Workflow Exception" scriptFormat="groovy">
+      <bpmn2:incoming>notFound</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.buildWorkflowException(execution, 404, "Input Service Instance Id Not Found in AAI")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="buildWorkflowException" targetRef="EndEvent_1" />
+    <bpmn2:callActivity id="GetAAIServiceInstance" name="Get AAI Service Instance" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:out source="GENGS_FoundIndicator" target="CSI_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="CSI_SuccessIndicator" />
+        <camunda:out source="GENGS_serviceInstance" target="CSI_serviceInstance" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_resourceLink" target="CSI_resourceLink" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_service" target="CSI_service" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="GetAAIServiceInstance" targetRef="ServiceInstanceExists" />
+    <bpmn2:exclusiveGateway id="ServiceInstanceExists" name="Service Instance Exists in AAI?" default="notFound">
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:outgoing>notFound</bpmn2:outgoing>
+      <bpmn2:outgoing>found</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="notFound" name="No" sourceRef="ServiceInstanceExists" targetRef="buildWorkflowException" />
+    <bpmn2:scriptTask id="GetAAIAR" name="Get AAI AR" scriptFormat="groovy">
+      <bpmn2:incoming>found</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0gbsa12</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.getAaiAR(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_1">
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_2" />
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="CreateAAIAR" name="Create AAI  AR&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_17p4ohs</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.createAaiAR(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="CreateAAIAR" targetRef="IntermediateThrowEvent_1lqaeh8" />
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_09xwplc</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1q6udwm" sourceRef="PreProcessSDNCAssign" targetRef="SDNCAssign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCAssign" targetRef="PostProcessSDNCAssign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCAssign" targetRef="PreProcessSDNCCreate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1lalmvp" sourceRef="PreProcessSDNCCreate" targetRef="SDNCCreate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCCreate" targetRef="postProcessSDNCCreate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15z3gpq" sourceRef="postProcessSDNCCreate" targetRef="UpdateAAIARCreated" />
+    <bpmn2:scriptTask id="PreProcessSDNCAssign" name="PreProcess SDNC Assign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1q6udwm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.preProcessSDNCAssign(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCAssign" name="SDNC Assign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncAssignRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncAssignResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1q6udwm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCAssign" name="PostProcess SDNC Assign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncAssignResponse")
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.validateSDNCResp(execution, response, "assign" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCCreate" name="PreProcess SDNC Create" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lalmvp</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.preProcessSDNCCreate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCCreate" name="SDNC Create" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncCreateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncCreateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1lalmvp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="postProcessSDNCCreate" name="PostProcess SDNC Create " scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15z3gpq</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncCreateResponse")
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.validateSDNCResp(execution, response, "create" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCActivate" name="PreProcess SDNC Activate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_04t1zc2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_06w33tk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.preProcessSDNCActivate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCActivate" name="SDNC Activate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncActivateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncActivateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_06w33tk</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCActivate" name="PostProcess SDNC Activate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncActivateResponse")
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.validateSDNCResp(execution, response, "activate" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_06w33tk" sourceRef="PreProcessSDNCActivate" targetRef="SDNCActivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCActivate" targetRef="PostProcessSDNCActivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCActivate" targetRef="UpdateAAIARActive" />
+    <bpmn2:sequenceFlow id="SequenceFlow_04t1zc2" sourceRef="UpdateAAIARCreated" targetRef="PreProcessSDNCActivate" />
+    <bpmn2:callActivity id="SDNCGet" name="SDNC Get" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncGetRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncGetResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:out source="enhancedCallbackRequestData" target="enhancedCallbackRequestData" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_030mhcm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0q1hz2p</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1iy3cqb" sourceRef="postProcessSDNCGetResponse" targetRef="generateOutputs" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1dgzhsm" sourceRef="UpdateAAIARActive" targetRef="IntermediateCatchEvent_1f4tse6" />
+    <bpmn2:callActivity id="GetAAIParentSI" name="Get AAI  Parent ServiceInstance&#10;" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="parentServiceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_SuccessIndicator" target="PSI_SuccessIndicator" />
+        <camunda:out source="GENGS_FoundIndicator" target="PSI_FoundIndicator" />
+        <camunda:out source="GENGS_serviceInstance" target="PSI_serviceInstance" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_resourceLink" target="PSI_resourceLink" />
+        <camunda:out source="GENGS_service" target="PSI_service" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1m8u8dl</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1vg5rfa</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1vg5rfa" sourceRef="GetAAIParentSI" targetRef="ParentSIExists" />
+    <bpmn2:exclusiveGateway id="ParentSIExists" name="Parent Service Instance Exists in AAI?" default="SequenceFlow_0f7u5pu">
+      <bpmn2:incoming>SequenceFlow_1vg5rfa</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17p4ohs</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0f7u5pu</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_17p4ohs" name="Yes" sourceRef="ParentSIExists" targetRef="CreateAAIAR">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("PSI_FoundIndicator" ) == true && execution.getVariable("PSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:scriptTask id="ScriptTask_1hzsbck" name="Create Workflow Exception" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0f7u5pu</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16o7col</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.buildWorkflowException(execution, 404, "BRG alloted resource Parent ServiceInstance:"  +  
+execution.getVariable("parentServiceInstanceId") +
+ " was not found in AAI")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_0x4moh8">
+      <bpmn2:incoming>SequenceFlow_16o7col</bpmn2:incoming>
+      <bpmn2:errorEventDefinition errorRef="Error_2" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0f7u5pu" name="No" sourceRef="ParentSIExists" targetRef="ScriptTask_1hzsbck" />
+    <bpmn2:sequenceFlow id="SequenceFlow_16o7col" sourceRef="ScriptTask_1hzsbck" targetRef="EndEvent_0x4moh8" />
+    <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Application Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1ibe7qx">
+        <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1fgqhmi">
+        <bpmn2:incoming>SequenceFlow_0t4ut76</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_0ji3121" name="Pre Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.preProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:scriptTask id="ScriptTask_1kgumd4" name="Post Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1cxj4yz</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0t4ut76</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.postProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ScriptTask_0ji3121" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0t4ut76" sourceRef="ScriptTask_1kgumd4" targetRef="EndEvent_1fgqhmi" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ScriptTask_0ji3121" targetRef="CallActivity_0s6hs9u" />
+      <bpmn2:callActivity id="CallActivity_0s6hs9u" name="Rollback Create" calledElement="DoCreateAllottedResourceBRGRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="rollbackData" target="rollbackData" />
+          <camunda:in source="disableRollback" target="disableRollback" />
+          <camunda:out source="rolledBack" target="rolledBack" />
+          <camunda:out source="rollbackError" target="rollbackError" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1cxj4yz</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_1cxj4yz" sourceRef="CallActivity_0s6hs9u" targetRef="ScriptTask_1kgumd4" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="UpdateAAIARActive" name="Update AAI AR Active" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1dgzhsm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.updateAaiAROrchStatus(execution, "Active")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="UpdateAAIARCreated" name="Update AAI AR Created" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15z3gpq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04t1zc2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.updateAaiAROrchStatus(execution, "Created")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCGet" name="PreProcess SDNC Get" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0z8luou</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0ec9eiq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_030mhcm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.preProcessSDNCGet(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="postProcessSDNCGetResponse" name="PostProcess SDNC Get" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0q1hz2p</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1iy3cqb</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncGetResponse")
+
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.validateSDNCResp(execution, response, "get" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_030mhcm" sourceRef="PreProcessSDNCGet" targetRef="SDNCGet" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0q1hz2p" sourceRef="SDNCGet" targetRef="postProcessSDNCGetResponse" />
+    <bpmn2:exclusiveGateway id="ActiveARinAAI" name="Active AR Exists in AAI?" default="SequenceFlow_1m8u8dl">
+      <bpmn2:incoming>SequenceFlow_0gbsa12</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1m8u8dl</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0z8luou</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1m8u8dl" name="No" sourceRef="ActiveARinAAI" targetRef="GetAAIParentSI" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0z8luou" name="yes" sourceRef="ActiveARinAAI" targetRef="PreProcessSDNCGet">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("foundActiveAR" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks">
+      <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="PreProcessSDNCAssign" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1lqaeh8" name="To SDNCTasks">
+      <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="found" name="Yes" sourceRef="ServiceInstanceExists" targetRef="GetAAIAR">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CSI_FoundIndicator" ) == true && execution.getVariable("CSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gbsa12" sourceRef="GetAAIAR" targetRef="ActiveARinAAI" />
+    <bpmn2:scriptTask id="generateOutputs" name="Generate Outputs" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1iy3cqb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_09xwplc</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRG dcar = new DoCreateAllottedResourceBRG()
+dcar.generateOutputs(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_09xwplc" sourceRef="generateOutputs" targetRef="EndEvent_3" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1f4tse6" name="Await SDNC Replication&#10;&#10;">
+      <bpmn2:incoming>SequenceFlow_1dgzhsm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ec9eiq</bpmn2:outgoing>
+      <bpmn2:timerEventDefinition>
+        <bpmn2:timeDuration xsi:type="bpmn2:tFormalExpression">${sdncReplDelay}</bpmn2:timeDuration>
+      </bpmn2:timerEventDefinition>
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ec9eiq" sourceRef="IntermediateCatchEvent_1f4tse6" targetRef="PreProcessSDNCGet" />
+  </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" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateAllottedResourceBRG">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
+        <dc:Bounds x="-91" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-73" y="263" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization">
+        <dc:Bounds x="19" y="199" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="-55" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="19" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-18" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="119" y="239" />
+        <di:waypoint xsi:type="dc:Point" x="195" y="239" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="157" y="224" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_59" bpmnElement="GetAAIServiceInstance">
+        <dc:Bounds x="195" y="199" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_229" bpmnElement="ServiceInstanceExists" isMarkerVisible="true">
+        <dc:Bounds x="367" y="217" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="349" y="270" width="83" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_CallActivity_59" targetElement="_BPMNShape_ExclusiveGateway_229">
+        <di:waypoint xsi:type="dc:Point" x="295" y="239" />
+        <di:waypoint xsi:type="dc:Point" x="369" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="332" y="224.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_293" bpmnElement="buildWorkflowException">
+        <dc:Bounds x="342" y="85" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="notFound" sourceElement="_BPMNShape_ExclusiveGateway_229" targetElement="_BPMNShape_ScriptTask_293">
+        <di:waypoint xsi:type="dc:Point" x="392" y="217" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="165" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="371" y="192.6917250252067" width="14" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_225" bpmnElement="EndEvent_1">
+        <dc:Bounds x="374" y="-11" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="392" y="30" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_293" targetElement="_BPMNShape_EndEvent_225">
+        <di:waypoint xsi:type="dc:Point" x="392" y="85" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="58" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="58" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="25" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="407" y="58" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_299" bpmnElement="GetAAIAR">
+        <dc:Bounds x="506" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_300" bpmnElement="CreateAAIAR">
+        <dc:Bounds x="1206" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1527" y="776" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1545" y="817" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_300">
+        <di:waypoint xsi:type="dc:Point" x="1306" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1338" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1408" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1322" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q6udwm_di" bpmnElement="SequenceFlow_1q6udwm">
+        <di:waypoint xsi:type="dc:Point" x="92" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="609.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q">
+        <di:waypoint xsi:type="dc:Point" x="92" y="710" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="727.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o">
+        <di:waypoint xsi:type="dc:Point" x="142" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="205" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="205" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="309" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="220" y="665" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lalmvp_di" bpmnElement="SequenceFlow_1lalmvp">
+        <di:waypoint xsi:type="dc:Point" x="359" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="604.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb">
+        <di:waypoint xsi:type="dc:Point" x="359" y="707" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="725" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15z3gpq_di" bpmnElement="SequenceFlow_15z3gpq">
+        <di:waypoint xsi:type="dc:Point" x="409" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="709" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="485" y="770" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_01h1rx2_di" bpmnElement="PreProcessSDNCAssign">
+        <dc:Bounds x="42" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCAssign">
+        <dc:Bounds x="42" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCAssign">
+        <dc:Bounds x="42" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rr2xrc_di" bpmnElement="PreProcessSDNCCreate">
+        <dc:Bounds x="309" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCCreate">
+        <dc:Bounds x="309" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCCreate">
+        <dc:Bounds x="309" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0zm728u_di" bpmnElement="PreProcessSDNCActivate">
+        <dc:Bounds x="702" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCActivate">
+        <dc:Bounds x="702" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCActivate">
+        <dc:Bounds x="702" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_06w33tk_di" bpmnElement="SequenceFlow_06w33tk">
+        <di:waypoint xsi:type="dc:Point" x="752" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="752" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="767" y="609.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq">
+        <di:waypoint xsi:type="dc:Point" x="752" y="705" />
+        <di:waypoint xsi:type="dc:Point" x="752" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="752" y="742" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="767" y="715" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43">
+        <di:waypoint xsi:type="dc:Point" x="802" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="963" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="963" y="704" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="883" y="770" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04t1zc2_di" bpmnElement="SequenceFlow_04t1zc2">
+        <di:waypoint xsi:type="dc:Point" x="560" y="621" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="555" />
+        <di:waypoint xsi:type="dc:Point" x="702" y="555" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="575" y="588" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1pfpn41_di" bpmnElement="SDNCGet">
+        <dc:Bounds x="1143" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1iy3cqb_di" bpmnElement="SequenceFlow_1iy3cqb">
+        <di:waypoint xsi:type="dc:Point" x="1240" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="1313" y="794" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1277" y="779" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dgzhsm_di" bpmnElement="SequenceFlow_1dgzhsm">
+        <di:waypoint xsi:type="dc:Point" x="964" y="624" />
+        <di:waypoint xsi:type="dc:Point" x="964" y="563" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="934" y="593.5" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0e73um9_di" bpmnElement="GetAAIParentSI">
+        <dc:Bounds x="843" y="199" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vg5rfa_di" bpmnElement="SequenceFlow_1vg5rfa">
+        <di:waypoint xsi:type="dc:Point" x="943" y="239" />
+        <di:waypoint xsi:type="dc:Point" x="1033" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="988" y="224.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1q51t9m_di" bpmnElement="ParentSIExists" isMarkerVisible="true">
+        <dc:Bounds x="1033" y="215" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1012" y="265" width="92" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_17p4ohs_di" bpmnElement="SequenceFlow_17p4ohs">
+        <di:waypoint xsi:type="dc:Point" x="1083" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1206" y="241" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1127" y="222" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1hzsbck_di" bpmnElement="ScriptTask_1hzsbck">
+        <dc:Bounds x="1008" y="77" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0x4moh8_di" bpmnElement="EndEvent_0x4moh8">
+        <dc:Bounds x="1040" y="6" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1058" y="47" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0f7u5pu_di" bpmnElement="SequenceFlow_0f7u5pu">
+        <di:waypoint xsi:type="dc:Point" x="1058" y="215" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="186" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="157" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1034" y="173.413457125764" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_16o7col_di" bpmnElement="SequenceFlow_16o7col">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="77" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="42" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1074" y="59.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true">
+        <dc:Bounds x="53" y="910" width="783" height="195" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx">
+        <dc:Bounds x="150" y="987" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="168" y="1028" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi">
+        <dc:Bounds x="783" y="987" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="801" y="1028" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ScriptTask_0ji3121">
+        <dc:Bounds x="245" y="965" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1kgumd4_di" bpmnElement="ScriptTask_1kgumd4">
+        <dc:Bounds x="616" y="965" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs">
+        <di:waypoint xsi:type="dc:Point" x="186" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="245" y="1005" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="216" y="990" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0t4ut76_di" bpmnElement="SequenceFlow_0t4ut76">
+        <di:waypoint xsi:type="dc:Point" x="716" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="748" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="748" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="783" y="1005" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="763" y="1005" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v">
+        <di:waypoint xsi:type="dc:Point" x="345" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="434" y="1005" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="390" y="990" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="UpdateAAIARActive">
+        <dc:Bounds x="914" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0rfj6et_di" bpmnElement="UpdateAAIARCreated">
+        <dc:Bounds x="516" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0c8nrax_di" bpmnElement="PreProcessSDNCGet">
+        <dc:Bounds x="1140" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1xa2jlo_di" bpmnElement="postProcessSDNCGetResponse">
+        <dc:Bounds x="1140" y="754" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_030mhcm_di" bpmnElement="SequenceFlow_030mhcm">
+        <di:waypoint xsi:type="dc:Point" x="1190" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="1190" y="621" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1205" y="603" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0q1hz2p_di" bpmnElement="SequenceFlow_0q1hz2p">
+        <di:waypoint xsi:type="dc:Point" x="1193" y="704" />
+        <di:waypoint xsi:type="dc:Point" x="1193" y="753" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1208" y="728.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="ActiveARinAAI" isMarkerVisible="true">
+        <dc:Bounds x="700" y="215" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="695" y="184" width="75" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1m8u8dl_di" bpmnElement="SequenceFlow_1m8u8dl">
+        <di:waypoint xsi:type="dc:Point" x="750" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="843" y="239" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="777" y="224" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0z8luou_di" bpmnElement="SequenceFlow_0z8luou">
+        <di:waypoint xsi:type="dc:Point" x="725" y="265" />
+        <di:waypoint xsi:type="dc:Point" x="725" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="1190" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="1190" y="505" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="737" y="270.89473684210526" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8">
+        <dc:Bounds x="-70" y="527" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-79" y="568" width="60" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9">
+        <di:waypoint xsi:type="dc:Point" x="-34" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="42" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="4" y="530" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0sb45m9_di" bpmnElement="IntermediateThrowEvent_1lqaeh8">
+        <dc:Bounds x="1408" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1456" y="234" width="76" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="found" sourceElement="_BPMNShape_ExclusiveGateway_229">
+        <di:waypoint xsi:type="dc:Point" x="416" y="241" />
+        <di:waypoint xsi:type="dc:Point" x="506" y="242" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="432" y="220.27119611047112" width="17" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gbsa12_di" bpmnElement="SequenceFlow_0gbsa12">
+        <di:waypoint xsi:type="dc:Point" x="606" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="700" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="653" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0pjzuns_di" bpmnElement="generateOutputs">
+        <dc:Bounds x="1314" y="754" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_09xwplc_di" bpmnElement="SequenceFlow_09xwplc">
+        <di:waypoint xsi:type="dc:Point" x="1414" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="1527" y="794" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1471" y="779" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0s6hs9u_di" bpmnElement="CallActivity_0s6hs9u">
+        <dc:Bounds x="434" y="965" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cxj4yz_di" bpmnElement="SequenceFlow_1cxj4yz">
+        <di:waypoint xsi:type="dc:Point" x="534" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="616" y="1005" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="575" y="980" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1f4tse6_di" bpmnElement="IntermediateCatchEvent_1f4tse6">
+        <dc:Bounds x="946" y="527" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="933" y="492" width="61" height="48" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ec9eiq_di" bpmnElement="SequenceFlow_0ec9eiq">
+        <di:waypoint xsi:type="dc:Point" x="982" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="1140" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1061" y="524" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceBRGRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceBRGRollback.bpmn
new file mode 100644
index 0000000..f369504
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceBRGRollback.bpmn
@@ -0,0 +1,575 @@
+<?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.9.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCreateAllottedResourceBRGRollback" name="DoCreateAllottedResourceBRGRollback" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" />
+    <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0bfuk6l</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback()
+rbk.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_0ymy62j</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCDeactivate" targetRef="PostProcessSDNCDeactivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCDeactivate" targetRef="DeleteSDNC" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCDelete" targetRef="postProcessSDNCDelete" />
+    <bpmn2:callActivity id="SDNCDeactivate" name="SDNC Deactivate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeactivateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1fvfplx</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCDeactivate" name="PostProcess SDNC Deactivate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncDeactivateResponse")
+
+DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback()
+rbk.validateSDNCResp(execution, response, "deactivate" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCDelete" name="SDNC Delete" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeleteRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0m483rd</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="postProcessSDNCDelete" name="PostProcess SDNC Delete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0sh1u69</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncDeleteResponse")
+
+DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback()
+rbk.validateSDNCResp(execution, response, "delete" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCUnassign" name="SDNC Unassign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncUnassignRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncUnassignResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_04hdt5s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCUnassign" name="PostProcess SDNC Unassign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncUnassignResponse")
+
+DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback()
+rbk.validateSDNCResp(execution, response, "unassign" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCUnassign" targetRef="PostProcessSDNCUnassign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCUnassign" targetRef="DeleteAAIAR" />
+    <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1ibe7qx">
+        <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1fgqhmi">
+        <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ProcessError" name="Process Errors" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRGRollback rbk= new DoCreateAllottedResourceBRGRollback()
+rbk.processRollbackException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ProcessError" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ProcessError" targetRef="EndEvent_1fgqhmi" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="DeleteAAIAR" name="Delete AAI AR " scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_13mhe5h</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0m483td</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_03bkrg4</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback()
+rbk.deleteAaiAR(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="DeleteSDNC" name="Delete SDNC?&#10;" default="SequenceFlow_0m483st">
+      <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0dzz8fp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0m483rd</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0m483st</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks">
+      <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="ExclusiveGateway_0vw18rq" />
+    <bpmn2:scriptTask id="UpdateAAIARPendingDelete" name="Update AAI AR PendingDelete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_144pxkp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0g4cl5f</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback()
+rbk.updateAaiAROrchStatus(execution, "PendingDelete")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0v13nt6" name="To SDNCTasks">
+      <bpmn2:incoming>SequenceFlow_0g4cl5f</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0g4cl5f" sourceRef="UpdateAAIARPendingDelete" targetRef="IntermediateThrowEvent_0v13nt6" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ymy62j" sourceRef="postProcessRequest" targetRef="EndEvent_3" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0m483rd" name="Yes" sourceRef="DeleteSDNC" targetRef="SDNCDelete">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("deleteSdnc" ) == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0m483st" name="No" sourceRef="DeleteSDNC" targetRef="ExclusiveGateway_0mys1pj" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0bfuk6l" sourceRef="initialization" targetRef="ExclusiveGateway_1txpz34" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0xm9g9s" name="No" sourceRef="ExclusiveGateway_1086eg7" targetRef="IntermediateThrowEvent_0lwqzlv" />
+    <bpmn2:subProcess id="SubProcess_0g5bd80" name="Java Exception Handling Sub Process" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_11nscgh">
+        <bpmn2:outgoing>SequenceFlow_0ebobc7</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:scriptTask id="ScriptTask_0cexvpg" name="Process Java Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0ebobc7</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1ugqw84</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRGRollback rbk= new DoCreateAllottedResourceBRGRollback()
+rbk.processRollbackJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:endEvent id="EndEvent_1ce2d7j">
+        <bpmn2:incoming>SequenceFlow_1ugqw84</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition />
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_0ebobc7" name="" sourceRef="StartEvent_11nscgh" targetRef="ScriptTask_0cexvpg" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1ugqw84" name="" sourceRef="ScriptTask_0cexvpg" targetRef="EndEvent_1ce2d7j" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="postProcessRequest" name="Post Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_03bkrg4</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0oe57h4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ymy62j</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceBRGRollback rbk = new DoCreateAllottedResourceBRGRollback()
+rbk.postProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0mys1pj" name="Unassign SDNC?" default="SequenceFlow_0m483td">
+      <bpmn2:incoming>SequenceFlow_0sh1u69</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0m483st</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04hdt5s</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0m483td</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0sh1u69" sourceRef="postProcessSDNCDelete" targetRef="ExclusiveGateway_0mys1pj" />
+    <bpmn2:sequenceFlow id="SequenceFlow_04hdt5s" name="Yes" sourceRef="ExclusiveGateway_0mys1pj" targetRef="SDNCUnassign">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("unassignSdnc" ) == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_03bkrg4" sourceRef="DeleteAAIAR" targetRef="postProcessRequest" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1086eg7" name="Rollback SDNC?" default="SequenceFlow_0xm9g9s">
+      <bpmn2:incoming>SequenceFlow_1c07scr</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xm9g9s</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_144pxkp</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_144pxkp" name="Yes" sourceRef="ExclusiveGateway_1086eg7" targetRef="UpdateAAIARPendingDelete">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rollbackSDNC" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0lwqzlv" name="To AAI Delete">
+      <bpmn2:incoming>SequenceFlow_0xm9g9s</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="AAI Delete" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0m483td" name="No" sourceRef="ExclusiveGateway_0mys1pj" targetRef="DeleteAAIAR" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0kdn6a5" name="AAI Delete">
+      <bpmn2:outgoing>SequenceFlow_13mhe5h</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="AAI Delete" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_13mhe5h" sourceRef="IntermediateCatchEvent_0kdn6a5" targetRef="DeleteAAIAR" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1txpz34" name="Skip Rollback?" default="SequenceFlow_1c07scr">
+      <bpmn2:incoming>SequenceFlow_0bfuk6l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1c07scr</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0oe57h4</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1c07scr" name="No" sourceRef="ExclusiveGateway_1txpz34" targetRef="ExclusiveGateway_1086eg7" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0oe57h4" name="Yes" sourceRef="ExclusiveGateway_1txpz34" targetRef="postProcessRequest">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0vw18rq" name="Deactiavate SDNC?&#10;" default="SequenceFlow_0dzz8fp">
+      <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1fvfplx</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0dzz8fp</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1fvfplx" name="Yes" sourceRef="ExclusiveGateway_0vw18rq" targetRef="SDNCDeactivate">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("deactivateSdnc" ) == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0dzz8fp" name="No" sourceRef="ExclusiveGateway_0vw18rq" targetRef="DeleteSDNC" />
+  </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" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateAllottedResourceBRGRollback">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
+        <dc:Bounds x="66" y="392" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="84" y="433" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization">
+        <dc:Bounds x="160" y="370" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="101" y="412" />
+        <di:waypoint xsi:type="dc:Point" x="160" y="412" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="131" y="397" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3">
+        <dc:Bounds x="966" y="646" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="984" y="687" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q">
+        <di:waypoint xsi:type="dc:Point" x="92" y="710" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="727.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o">
+        <di:waypoint xsi:type="dc:Point" x="142" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="198" y="785" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="170" y="770" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb">
+        <di:waypoint xsi:type="dc:Point" x="359" y="707" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="725" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCDeactivate">
+        <dc:Bounds x="42" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCDeactivate">
+        <dc:Bounds x="42" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCDelete">
+        <dc:Bounds x="309" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCDelete">
+        <dc:Bounds x="309" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCUnassign">
+        <dc:Bounds x="590" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCUnassign">
+        <dc:Bounds x="590" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq">
+        <di:waypoint xsi:type="dc:Point" x="640" y="704" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="724.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43">
+        <di:waypoint xsi:type="dc:Point" x="690" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="787" y="785" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="739" y="770" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true">
+        <dc:Bounds x="-9" y="962" width="367" height="150" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx">
+        <dc:Bounds x="20" y="1025" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="38" y="1066" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi">
+        <dc:Bounds x="295" y="1025" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="313" y="1066" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ProcessError">
+        <dc:Bounds x="125" y="1003" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs">
+        <di:waypoint xsi:type="dc:Point" x="56" y="1043" />
+        <di:waypoint xsi:type="dc:Point" x="125" y="1043" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="91" y="1028" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v">
+        <di:waypoint xsi:type="dc:Point" x="225" y="1043" />
+        <di:waypoint xsi:type="dc:Point" x="264" y="1043" />
+        <di:waypoint xsi:type="dc:Point" x="264" y="1043" />
+        <di:waypoint xsi:type="dc:Point" x="295" y="1043" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="279" y="1043" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="DeleteAAIAR">
+        <dc:Bounds x="787" y="742" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="DeleteSDNC" isMarkerVisible="true">
+        <dc:Bounds x="197" y="761" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="219" y="648" width="71" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8">
+        <dc:Bounds x="-180" y="767" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-189" y="808" width="59" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9">
+        <di:waypoint xsi:type="dc:Point" x="-144" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="-112" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="-112" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="-79" y="785" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-97" y="785" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1k13o3m_di" bpmnElement="UpdateAAIARPendingDelete">
+        <dc:Bounds x="627" y="381" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0v13nt6_di" bpmnElement="IntermediateThrowEvent_0v13nt6">
+        <dc:Bounds x="659" y="298" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="650" y="275" width="73" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0g4cl5f_di" bpmnElement="SequenceFlow_0g4cl5f">
+        <di:waypoint xsi:type="dc:Point" x="677" y="381" />
+        <di:waypoint xsi:type="dc:Point" x="677" y="334" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="692" y="357.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ymy62j_di" bpmnElement="SequenceFlow_0ymy62j">
+        <di:waypoint xsi:type="dc:Point" x="887" y="664" />
+        <di:waypoint xsi:type="dc:Point" x="966" y="664" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="927" y="649" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_197vrli_di" bpmnElement="SequenceFlow_0m483rd">
+        <di:waypoint xsi:type="dc:Point" x="222" y="761" />
+        <di:waypoint xsi:type="dc:Point" x="222" y="672" />
+        <di:waypoint xsi:type="dc:Point" x="303" y="672" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="230" y="732.7173913043479" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ue1x4e_di" bpmnElement="SequenceFlow_0m483st">
+        <di:waypoint xsi:type="dc:Point" x="222" y="811" />
+        <di:waypoint xsi:type="dc:Point" x="222" y="889" />
+        <di:waypoint xsi:type="dc:Point" x="355" y="889" />
+        <di:waypoint xsi:type="dc:Point" x="481" y="796" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="227.96243516445685" y="823.5028190473831" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bfuk6l_di" bpmnElement="SequenceFlow_0bfuk6l">
+        <di:waypoint xsi:type="dc:Point" x="260" y="413" />
+        <di:waypoint xsi:type="dc:Point" x="334" y="413" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="297" y="398" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xm9g9s_di" bpmnElement="SequenceFlow_0xm9g9s">
+        <di:waypoint xsi:type="dc:Point" x="495" y="386" />
+        <di:waypoint xsi:type="dc:Point" x="496" y="334" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="477" y="353.9807135698298" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_0g5bd80_di" bpmnElement="SubProcess_0g5bd80" isExpanded="true">
+        <dc:Bounds x="515" y="979" width="405" height="139" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_11nscgh_di" bpmnElement="StartEvent_11nscgh">
+        <dc:Bounds x="563" y="1036" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="581" y="1077" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0cexvpg_di" bpmnElement="ScriptTask_0cexvpg">
+        <dc:Bounds x="683" y="1014" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1ce2d7j_di" bpmnElement="EndEvent_1ce2d7j">
+        <dc:Bounds x="845" y="1036" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="863" y="1077" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ebobc7_di" bpmnElement="SequenceFlow_0ebobc7">
+        <di:waypoint xsi:type="dc:Point" x="599" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="652" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="652" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="683" y="1054" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="667" y="1054" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ugqw84_di" bpmnElement="SequenceFlow_1ugqw84">
+        <di:waypoint xsi:type="dc:Point" x="783" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="813" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="813" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="845" y="1054" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="828" y="1054" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_13b9eww_di" bpmnElement="postProcessRequest">
+        <dc:Bounds x="787" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0mys1pj_di" bpmnElement="ExclusiveGateway_0mys1pj" isMarkerVisible="true">
+        <dc:Bounds x="470" y="760" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="490" y="640" width="86" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0sh1u69_di" bpmnElement="SequenceFlow_0sh1u69">
+        <di:waypoint xsi:type="dc:Point" x="409" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="437" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="437" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="470" y="785" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="452" y="785" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04hdt5s_di" bpmnElement="SequenceFlow_04hdt5s">
+        <di:waypoint xsi:type="dc:Point" x="495" y="759" />
+        <di:waypoint xsi:type="dc:Point" x="495" y="664" />
+        <di:waypoint xsi:type="dc:Point" x="590" y="664" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="502" y="732" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_03bkrg4_di" bpmnElement="SequenceFlow_03bkrg4">
+        <di:waypoint xsi:type="dc:Point" x="837" y="742" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="704" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="852" y="723" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1086eg7_di" bpmnElement="ExclusiveGateway_1086eg7" isMarkerVisible="true">
+        <dc:Bounds x="469" y="385" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="458" y="439" width="83" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_144pxkp_di" bpmnElement="SequenceFlow_144pxkp">
+        <di:waypoint xsi:type="dc:Point" x="519" y="410" />
+        <di:waypoint xsi:type="dc:Point" x="627" y="410" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="550" y="392.99583286074477" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0lwqzlv_di" bpmnElement="IntermediateThrowEvent_0lwqzlv">
+        <dc:Bounds x="479" y="298" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="473" y="277" width="67" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0m483td_di" bpmnElement="SequenceFlow_0m483td">
+        <di:waypoint xsi:type="dc:Point" x="495" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="495" y="890" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="890" />
+        <di:waypoint xsi:type="dc:Point" x="787" y="809" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="502.01898797901157" y="825.6730723011344" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0kdn6a5_di" bpmnElement="IntermediateCatchEvent_0kdn6a5">
+        <dc:Bounds x="819" y="876" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="809" y="916" width="53" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_13mhe5h_di" bpmnElement="SequenceFlow_13mhe5h">
+        <di:waypoint xsi:type="dc:Point" x="837" y="876" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="848" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="826" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="852" y="862" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1txpz34_di" bpmnElement="ExclusiveGateway_1txpz34" isMarkerVisible="true">
+        <dc:Bounds x="334" y="385" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="323" y="370" width="72" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1c07scr_di" bpmnElement="SequenceFlow_1c07scr">
+        <di:waypoint xsi:type="dc:Point" x="384" y="410" />
+        <di:waypoint xsi:type="dc:Point" x="469" y="410" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="421" y="394.9978753852595" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0oe57h4_di" bpmnElement="SequenceFlow_0oe57h4">
+        <di:waypoint xsi:type="dc:Point" x="359" y="435" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="535" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="535" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="589" y="520" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0vw18rq_di" bpmnElement="ExclusiveGateway_0vw18rq" isMarkerVisible="true">
+        <dc:Bounds x="-79" y="760" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-53" y="631" width="62" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fvfplx_di" bpmnElement="SequenceFlow_1fvfplx">
+        <di:waypoint xsi:type="dc:Point" x="-54" y="760" />
+        <di:waypoint xsi:type="dc:Point" x="-54" y="664" />
+        <di:waypoint xsi:type="dc:Point" x="42" y="664" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-49" y="733.3483834130782" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dzz8fp_di" bpmnElement="SequenceFlow_0dzz8fp">
+        <di:waypoint xsi:type="dc:Point" x="-54" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="-54" y="894" />
+        <di:waypoint xsi:type="dc:Point" x="93" y="894" />
+        <di:waypoint xsi:type="dc:Point" x="208" y="797" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-43.999999999999986" y="825" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceTXC.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceTXC.bpmn
new file mode 100644
index 0000000..f26bae0
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceTXC.bpmn
@@ -0,0 +1,755 @@
+<?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.9.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCreateAllottedResourceTXC" name="DoCreateAllottedResourceTXC" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" />
+    <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="initialization" targetRef="GetAAIServiceInstance" />
+    <bpmn2:scriptTask id="buildWorkflowException" name="Create Workflow Exception" scriptFormat="groovy">
+      <bpmn2:incoming>notFound</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.buildWorkflowException(execution, 404, "Input Service Instance Id Not Found in AAI")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="buildWorkflowException" targetRef="EndEvent_1" />
+    <bpmn2:callActivity id="GetAAIServiceInstance" name="Get AAI Service Instance" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:out source="GENGS_FoundIndicator" target="CSI_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="CSI_SuccessIndicator" />
+        <camunda:out source="GENGS_serviceInstance" target="CSI_serviceInstance" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_resourceLink" target="CSI_resourceLink" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_service" target="CSI_service" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="GetAAIServiceInstance" targetRef="ServiceInstanceExists" />
+    <bpmn2:exclusiveGateway id="ServiceInstanceExists" name="Service Instance Exists in AAI?" default="notFound">
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:outgoing>notFound</bpmn2:outgoing>
+      <bpmn2:outgoing>found</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="notFound" name="No" sourceRef="ServiceInstanceExists" targetRef="buildWorkflowException" />
+    <bpmn2:scriptTask id="GetAAIAR" name="Get AAI AR" scriptFormat="groovy">
+      <bpmn2:incoming>found</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0gbsa12</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.getAaiAR(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_1">
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_2" />
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="CreateAAIAR" name="Create AAI  AR&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_17p4ohs</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.createAaiAR(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="CreateAAIAR" targetRef="IntermediateThrowEvent_1lqaeh8" />
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_09xwplc</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1q6udwm" sourceRef="PreProcessSDNCAssign" targetRef="SDNCAssign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCAssign" targetRef="PostProcessSDNCAssign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCAssign" targetRef="PreProcessSDNCCreate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1lalmvp" sourceRef="PreProcessSDNCCreate" targetRef="SDNCCreate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCCreate" targetRef="postProcessSDNCCreate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15z3gpq" sourceRef="postProcessSDNCCreate" targetRef="UpdateAAIARCreated" />
+    <bpmn2:scriptTask id="PreProcessSDNCAssign" name="PreProcess SDNC Assign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1q6udwm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.preProcessSDNCAssign(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCAssign" name="SDNC Assign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncAssignRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncAssignResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1q6udwm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCAssign" name="PostProcess SDNC Assign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncAssignResponse")
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.validateSDNCResp(execution, response, "assign" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCCreate" name="PreProcess SDNC Create" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lalmvp</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.preProcessSDNCCreate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCCreate" name="SDNC Create" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncCreateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncCreateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1lalmvp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="postProcessSDNCCreate" name="PostProcess SDNC Create " scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15z3gpq</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncCreateResponse")
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.validateSDNCResp(execution, response, "create" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCActivate" name="PreProcess SDNC Activate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_04t1zc2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_06w33tk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.preProcessSDNCActivate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCActivate" name="SDNC Activate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncActivateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncActivateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_06w33tk</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCActivate" name="PostProcess SDNC Activate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncActivateResponse")
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.validateSDNCResp(execution, response, "activate" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_06w33tk" sourceRef="PreProcessSDNCActivate" targetRef="SDNCActivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCActivate" targetRef="PostProcessSDNCActivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCActivate" targetRef="UpdateAAIARActive" />
+    <bpmn2:sequenceFlow id="SequenceFlow_04t1zc2" sourceRef="UpdateAAIARCreated" targetRef="PreProcessSDNCActivate" />
+    <bpmn2:callActivity id="SDNCGet" name="SDNC Get" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncGetRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncGetResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:out source="enhancedCallbackRequestData" target="enhancedCallbackRequestData" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_030mhcm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0q1hz2p</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1iy3cqb" sourceRef="postProcessSDNCGetResponse" targetRef="generateOutputs" />
+    <bpmn2:callActivity id="GetAAIParentSI" name="Get AAI  Parent ServiceInstance&#10;" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="parentServiceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_SuccessIndicator" target="PSI_SuccessIndicator" />
+        <camunda:out source="GENGS_FoundIndicator" target="PSI_FoundIndicator" />
+        <camunda:out source="GENGS_serviceInstance" target="PSI_serviceInstance" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_resourceLink" target="PSI_resourceLink" />
+        <camunda:out source="GENGS_service" target="PSI_service" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1m8u8dl</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1vg5rfa</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1vg5rfa" sourceRef="GetAAIParentSI" targetRef="ParentSIExists" />
+    <bpmn2:exclusiveGateway id="ParentSIExists" name="Parent Service Instance Exists in AAI?" default="SequenceFlow_0f7u5pu">
+      <bpmn2:incoming>SequenceFlow_1vg5rfa</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17p4ohs</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0f7u5pu</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_17p4ohs" name="Yes" sourceRef="ParentSIExists" targetRef="CreateAAIAR">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("PSI_FoundIndicator" ) == true && execution.getVariable("PSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:scriptTask id="ScriptTask_1hzsbck" name="Create Workflow Exception" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0f7u5pu</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16o7col</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.buildWorkflowException(execution, 404, "TunnelXConn alloted resource Parent ServiceInstance:"  +  
+execution.getVariable("parentServiceInstanceId") +
+ " was not found in AAI")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_0x4moh8">
+      <bpmn2:incoming>SequenceFlow_16o7col</bpmn2:incoming>
+      <bpmn2:errorEventDefinition errorRef="Error_2" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0f7u5pu" name="No" sourceRef="ParentSIExists" targetRef="ScriptTask_1hzsbck" />
+    <bpmn2:sequenceFlow id="SequenceFlow_16o7col" sourceRef="ScriptTask_1hzsbck" targetRef="EndEvent_0x4moh8" />
+    <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Application Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1ibe7qx">
+        <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1fgqhmi">
+        <bpmn2:incoming>SequenceFlow_0t4ut76</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_0ji3121" name="Pre Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.preProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:scriptTask id="ScriptTask_1kgumd4" name="Post Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1cxj4yz</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0t4ut76</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.postProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ScriptTask_0ji3121" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0t4ut76" sourceRef="ScriptTask_1kgumd4" targetRef="EndEvent_1fgqhmi" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ScriptTask_0ji3121" targetRef="CallActivity_0s6hs9u" />
+      <bpmn2:callActivity id="CallActivity_0s6hs9u" name="Rollback Create" calledElement="DoCreateAllottedResourceTXCRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="rollbackData" target="rollbackData" />
+          <camunda:in source="disableRollback" target="disableRollback" />
+          <camunda:out source="rolledBack" target="rolledBack" />
+          <camunda:out source="rollbackError" target="rollbackError" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1cxj4yz</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_1cxj4yz" sourceRef="CallActivity_0s6hs9u" targetRef="ScriptTask_1kgumd4" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="UpdateAAIARActive" name="Update AAI AR Active" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_07kxd8t</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.updateAaiAROrchStatus(execution, "Active")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="UpdateAAIARCreated" name="Update AAI AR Created" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15z3gpq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04t1zc2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.updateAaiAROrchStatus(execution, "Created")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCGet" name="PreProcess SDNC Get" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0z8luou</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_08hhqb2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_030mhcm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.preProcessSDNCGet(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="postProcessSDNCGetResponse" name="PostProcess SDNC Get" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0q1hz2p</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1iy3cqb</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncGetResponse")
+
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.validateSDNCResp(execution, response, "get" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_030mhcm" sourceRef="PreProcessSDNCGet" targetRef="SDNCGet" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0q1hz2p" sourceRef="SDNCGet" targetRef="postProcessSDNCGetResponse" />
+    <bpmn2:exclusiveGateway id="ActiveARinAAI" name="Active AR Exists in AAI?" default="SequenceFlow_1m8u8dl">
+      <bpmn2:incoming>SequenceFlow_0gbsa12</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1m8u8dl</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0z8luou</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1m8u8dl" name="No" sourceRef="ActiveARinAAI" targetRef="GetAAIParentSI" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0z8luou" name="yes" sourceRef="ActiveARinAAI" targetRef="PreProcessSDNCGet">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("foundActiveAR" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks">
+      <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="PreProcessSDNCAssign" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1lqaeh8" name="To SDNCTasks">
+      <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="found" name="Yes" sourceRef="ServiceInstanceExists" targetRef="GetAAIAR">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CSI_FoundIndicator" ) == true && execution.getVariable("CSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gbsa12" sourceRef="GetAAIAR" targetRef="ActiveARinAAI" />
+    <bpmn2:scriptTask id="generateOutputs" name="Generate Outputs" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1iy3cqb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_09xwplc</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXC dcar = new DoCreateAllottedResourceTXC()
+dcar.generateOutputs(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_09xwplc" sourceRef="generateOutputs" targetRef="EndEvent_3" />
+    <bpmn2:sequenceFlow id="SequenceFlow_07kxd8t" sourceRef="UpdateAAIARActive" targetRef="IntermediateThrowEvent_0ti2fv8" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0ti2fv8" name="Await SDNC Replication&#10;&#10;">
+      <bpmn2:incoming>SequenceFlow_07kxd8t</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_08hhqb2</bpmn2:outgoing>
+      <bpmn2:timerEventDefinition>
+        <bpmn2:timeDuration xsi:type="bpmn2:tFormalExpression">${sdncReplDelay}</bpmn2:timeDuration>
+      </bpmn2:timerEventDefinition>
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_08hhqb2" sourceRef="IntermediateThrowEvent_0ti2fv8" targetRef="PreProcessSDNCGet" />
+  </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" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateAllottedResourceTXC">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
+        <dc:Bounds x="-91" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-73" y="263" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization">
+        <dc:Bounds x="19" y="199" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="-55" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="19" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-18" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="119" y="239" />
+        <di:waypoint xsi:type="dc:Point" x="195" y="239" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="157" y="224" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_59" bpmnElement="GetAAIServiceInstance">
+        <dc:Bounds x="195" y="199" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_229" bpmnElement="ServiceInstanceExists" isMarkerVisible="true">
+        <dc:Bounds x="367" y="217" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="349" y="270" width="83" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_CallActivity_59" targetElement="_BPMNShape_ExclusiveGateway_229">
+        <di:waypoint xsi:type="dc:Point" x="295" y="239" />
+        <di:waypoint xsi:type="dc:Point" x="369" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="332" y="224.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_293" bpmnElement="buildWorkflowException">
+        <dc:Bounds x="342" y="85" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="notFound" sourceElement="_BPMNShape_ExclusiveGateway_229" targetElement="_BPMNShape_ScriptTask_293">
+        <di:waypoint xsi:type="dc:Point" x="392" y="217" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="165" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="371" y="192.6917250252067" width="14" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_225" bpmnElement="EndEvent_1">
+        <dc:Bounds x="374" y="-11" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="392" y="30" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_293" targetElement="_BPMNShape_EndEvent_225">
+        <di:waypoint xsi:type="dc:Point" x="392" y="85" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="58" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="58" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="25" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="407" y="58" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_299" bpmnElement="GetAAIAR">
+        <dc:Bounds x="506" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_300" bpmnElement="CreateAAIAR">
+        <dc:Bounds x="1206" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1527" y="776" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1545" y="817" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_300">
+        <di:waypoint xsi:type="dc:Point" x="1306" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1338" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1408" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1322" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q6udwm_di" bpmnElement="SequenceFlow_1q6udwm">
+        <di:waypoint xsi:type="dc:Point" x="92" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="609.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q">
+        <di:waypoint xsi:type="dc:Point" x="92" y="710" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="727.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o">
+        <di:waypoint xsi:type="dc:Point" x="142" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="205" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="205" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="309" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="220" y="665" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lalmvp_di" bpmnElement="SequenceFlow_1lalmvp">
+        <di:waypoint xsi:type="dc:Point" x="359" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="604.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb">
+        <di:waypoint xsi:type="dc:Point" x="359" y="707" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="725" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15z3gpq_di" bpmnElement="SequenceFlow_15z3gpq">
+        <di:waypoint xsi:type="dc:Point" x="409" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="709" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="485" y="770" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_01h1rx2_di" bpmnElement="PreProcessSDNCAssign">
+        <dc:Bounds x="42" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCAssign">
+        <dc:Bounds x="42" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCAssign">
+        <dc:Bounds x="42" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rr2xrc_di" bpmnElement="PreProcessSDNCCreate">
+        <dc:Bounds x="309" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCCreate">
+        <dc:Bounds x="309" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCCreate">
+        <dc:Bounds x="309" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0zm728u_di" bpmnElement="PreProcessSDNCActivate">
+        <dc:Bounds x="702" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCActivate">
+        <dc:Bounds x="702" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCActivate">
+        <dc:Bounds x="702" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_06w33tk_di" bpmnElement="SequenceFlow_06w33tk">
+        <di:waypoint xsi:type="dc:Point" x="752" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="752" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="767" y="609.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq">
+        <di:waypoint xsi:type="dc:Point" x="752" y="705" />
+        <di:waypoint xsi:type="dc:Point" x="752" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="752" y="742" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="767" y="715" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43">
+        <di:waypoint xsi:type="dc:Point" x="802" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="963" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="963" y="704" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="883" y="770" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04t1zc2_di" bpmnElement="SequenceFlow_04t1zc2">
+        <di:waypoint xsi:type="dc:Point" x="560" y="621" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="555" />
+        <di:waypoint xsi:type="dc:Point" x="702" y="555" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="575" y="588" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1pfpn41_di" bpmnElement="SDNCGet">
+        <dc:Bounds x="1143" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1iy3cqb_di" bpmnElement="SequenceFlow_1iy3cqb">
+        <di:waypoint xsi:type="dc:Point" x="1240" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="1313" y="794" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1277" y="779" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0e73um9_di" bpmnElement="GetAAIParentSI">
+        <dc:Bounds x="843" y="199" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vg5rfa_di" bpmnElement="SequenceFlow_1vg5rfa">
+        <di:waypoint xsi:type="dc:Point" x="943" y="239" />
+        <di:waypoint xsi:type="dc:Point" x="1033" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="988" y="224.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1q51t9m_di" bpmnElement="ParentSIExists" isMarkerVisible="true">
+        <dc:Bounds x="1033" y="215" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1012" y="265" width="92" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_17p4ohs_di" bpmnElement="SequenceFlow_17p4ohs">
+        <di:waypoint xsi:type="dc:Point" x="1083" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1206" y="241" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1127" y="222" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1hzsbck_di" bpmnElement="ScriptTask_1hzsbck">
+        <dc:Bounds x="1008" y="77" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0x4moh8_di" bpmnElement="EndEvent_0x4moh8">
+        <dc:Bounds x="1040" y="6" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1058" y="47" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0f7u5pu_di" bpmnElement="SequenceFlow_0f7u5pu">
+        <di:waypoint xsi:type="dc:Point" x="1058" y="215" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="186" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="157" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1034" y="173.413457125764" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_16o7col_di" bpmnElement="SequenceFlow_16o7col">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="77" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="42" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1074" y="59.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true">
+        <dc:Bounds x="53" y="910" width="783" height="195" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx">
+        <dc:Bounds x="150" y="987" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="168" y="1028" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi">
+        <dc:Bounds x="783" y="987" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="801" y="1028" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ScriptTask_0ji3121">
+        <dc:Bounds x="245" y="965" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1kgumd4_di" bpmnElement="ScriptTask_1kgumd4">
+        <dc:Bounds x="616" y="965" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs">
+        <di:waypoint xsi:type="dc:Point" x="186" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="245" y="1005" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="216" y="990" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0t4ut76_di" bpmnElement="SequenceFlow_0t4ut76">
+        <di:waypoint xsi:type="dc:Point" x="716" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="748" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="748" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="783" y="1005" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="763" y="1005" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v">
+        <di:waypoint xsi:type="dc:Point" x="345" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="434" y="1005" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="390" y="990" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="UpdateAAIARActive">
+        <dc:Bounds x="914" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0rfj6et_di" bpmnElement="UpdateAAIARCreated">
+        <dc:Bounds x="516" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0c8nrax_di" bpmnElement="PreProcessSDNCGet">
+        <dc:Bounds x="1140" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1xa2jlo_di" bpmnElement="postProcessSDNCGetResponse">
+        <dc:Bounds x="1140" y="754" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_030mhcm_di" bpmnElement="SequenceFlow_030mhcm">
+        <di:waypoint xsi:type="dc:Point" x="1190" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="1190" y="621" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1205" y="603" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0q1hz2p_di" bpmnElement="SequenceFlow_0q1hz2p">
+        <di:waypoint xsi:type="dc:Point" x="1193" y="704" />
+        <di:waypoint xsi:type="dc:Point" x="1193" y="753" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1208" y="728.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="ActiveARinAAI" isMarkerVisible="true">
+        <dc:Bounds x="700" y="215" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="695" y="184" width="75" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1m8u8dl_di" bpmnElement="SequenceFlow_1m8u8dl">
+        <di:waypoint xsi:type="dc:Point" x="750" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="843" y="239" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="777" y="224" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0z8luou_di" bpmnElement="SequenceFlow_0z8luou">
+        <di:waypoint xsi:type="dc:Point" x="725" y="265" />
+        <di:waypoint xsi:type="dc:Point" x="725" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="1190" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="1190" y="505" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="737" y="270.89473684210526" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8">
+        <dc:Bounds x="-70" y="527" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-79" y="568" width="60" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9">
+        <di:waypoint xsi:type="dc:Point" x="-34" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="42" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="4" y="530" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0sb45m9_di" bpmnElement="IntermediateThrowEvent_1lqaeh8">
+        <dc:Bounds x="1408" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1456" y="234" width="76" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="found" sourceElement="_BPMNShape_ExclusiveGateway_229">
+        <di:waypoint xsi:type="dc:Point" x="416" y="241" />
+        <di:waypoint xsi:type="dc:Point" x="506" y="242" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="432" y="220.27119611047112" width="17" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gbsa12_di" bpmnElement="SequenceFlow_0gbsa12">
+        <di:waypoint xsi:type="dc:Point" x="606" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="700" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="653" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0pjzuns_di" bpmnElement="generateOutputs">
+        <dc:Bounds x="1314" y="754" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_09xwplc_di" bpmnElement="SequenceFlow_09xwplc">
+        <di:waypoint xsi:type="dc:Point" x="1414" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="1527" y="794" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1471" y="779" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0s6hs9u_di" bpmnElement="CallActivity_0s6hs9u">
+        <dc:Bounds x="434" y="965" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cxj4yz_di" bpmnElement="SequenceFlow_1cxj4yz">
+        <di:waypoint xsi:type="dc:Point" x="534" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="616" y="1005" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="575" y="980" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_07kxd8t_di" bpmnElement="SequenceFlow_07kxd8t">
+        <di:waypoint xsi:type="dc:Point" x="964" y="624" />
+        <di:waypoint xsi:type="dc:Point" x="964" y="563" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="979" y="587.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_038xgwf_di" bpmnElement="IntermediateThrowEvent_0ti2fv8">
+        <dc:Bounds x="946" y="527" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="933" y="492" width="61" height="48" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_08hhqb2_di" bpmnElement="SequenceFlow_08hhqb2">
+        <di:waypoint xsi:type="dc:Point" x="982" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="1140" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1061" y="524" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceTXCRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceTXCRollback.bpmn
new file mode 100644
index 0000000..490f2b6
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateAllottedResourceTXCRollback.bpmn
@@ -0,0 +1,575 @@
+<?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.9.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCreateAllottedResourceTXCRollback" name="DoCreateAllottedResourceTXCRollback" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" />
+    <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0bfuk6l</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback()
+rbk.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_0ymy62j</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCDeactivate" targetRef="PostProcessSDNCDeactivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCDeactivate" targetRef="DeleteSDNC" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCDelete" targetRef="postProcessSDNCDelete" />
+    <bpmn2:callActivity id="SDNCDeactivate" name="SDNC Deactivate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeactivateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1fvfplx</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCDeactivate" name="PostProcess SDNC Deactivate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncDeactivateResponse")
+
+DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback()
+rbk.validateSDNCResp(execution, response, "deactivate" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCDelete" name="SDNC Delete" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeleteRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0m483rd</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="postProcessSDNCDelete" name="PostProcess SDNC Delete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0sh1u69</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncDeleteResponse")
+
+DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback()
+rbk.validateSDNCResp(execution, response, "delete" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCUnassign" name="SDNC Unassign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncUnassignRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncUnassignResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_04hdt5s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCUnassign" name="PostProcess SDNC Unassign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncUnassignResponse")
+
+DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback()
+rbk.validateSDNCResp(execution, response, "unassign" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCUnassign" targetRef="PostProcessSDNCUnassign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCUnassign" targetRef="DeleteAAIAR" />
+    <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1ibe7qx">
+        <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1fgqhmi">
+        <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ProcessError" name="Process Errors" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXCRollback rbk= new DoCreateAllottedResourceTXCRollback()
+rbk.processRollbackException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ProcessError" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ProcessError" targetRef="EndEvent_1fgqhmi" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="DeleteAAIAR" name="Delete AAI AR " scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_13mhe5h</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0m483td</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_03bkrg4</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback()
+rbk.deleteAaiAR(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="DeleteSDNC" name="Delete SDNC?&#10;" default="SequenceFlow_0m483st">
+      <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0dzz8fp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0m483rd</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0m483st</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks">
+      <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="ExclusiveGateway_0vw18rq" />
+    <bpmn2:scriptTask id="UpdateAAIARPendingDelete" name="Update AAI AR PendingDelete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_144pxkp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0g4cl5f</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback()
+rbk.updateAaiAROrchStatus(execution, "PendingDelete")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0v13nt6" name="To SDNCTasks">
+      <bpmn2:incoming>SequenceFlow_0g4cl5f</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0g4cl5f" sourceRef="UpdateAAIARPendingDelete" targetRef="IntermediateThrowEvent_0v13nt6" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ymy62j" sourceRef="postProcessRequest" targetRef="EndEvent_3" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0m483rd" name="Yes" sourceRef="DeleteSDNC" targetRef="SDNCDelete">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("deleteSdnc" ) == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0m483st" name="No" sourceRef="DeleteSDNC" targetRef="ExclusiveGateway_0mys1pj" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0bfuk6l" sourceRef="initialization" targetRef="ExclusiveGateway_1txpz34" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0xm9g9s" name="No" sourceRef="ExclusiveGateway_1086eg7" targetRef="IntermediateThrowEvent_0lwqzlv" />
+    <bpmn2:subProcess id="SubProcess_0g5bd80" name="Java Exception Handling Sub Process" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_11nscgh">
+        <bpmn2:outgoing>SequenceFlow_0ebobc7</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:scriptTask id="ScriptTask_0cexvpg" name="Process Java Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0ebobc7</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1ugqw84</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXCRollback rbk= new DoCreateAllottedResourceTXCRollback()
+rbk.processRollbackJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:endEvent id="EndEvent_1ce2d7j">
+        <bpmn2:incoming>SequenceFlow_1ugqw84</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition />
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_0ebobc7" name="" sourceRef="StartEvent_11nscgh" targetRef="ScriptTask_0cexvpg" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1ugqw84" name="" sourceRef="ScriptTask_0cexvpg" targetRef="EndEvent_1ce2d7j" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="postProcessRequest" name="Post Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_03bkrg4</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0oe57h4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ymy62j</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoCreateAllottedResourceTXCRollback rbk = new DoCreateAllottedResourceTXCRollback()
+rbk.postProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0mys1pj" name="Unassign SDNC?" default="SequenceFlow_0m483td">
+      <bpmn2:incoming>SequenceFlow_0sh1u69</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0m483st</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04hdt5s</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0m483td</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0sh1u69" sourceRef="postProcessSDNCDelete" targetRef="ExclusiveGateway_0mys1pj" />
+    <bpmn2:sequenceFlow id="SequenceFlow_04hdt5s" name="Yes" sourceRef="ExclusiveGateway_0mys1pj" targetRef="SDNCUnassign">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("unassignSdnc" ) == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_03bkrg4" sourceRef="DeleteAAIAR" targetRef="postProcessRequest" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1086eg7" name="Rollback SDNC?" default="SequenceFlow_0xm9g9s">
+      <bpmn2:incoming>SequenceFlow_1c07scr</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xm9g9s</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_144pxkp</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_144pxkp" name="Yes" sourceRef="ExclusiveGateway_1086eg7" targetRef="UpdateAAIARPendingDelete">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rollbackSDNC" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0lwqzlv" name="To AAI Delete">
+      <bpmn2:incoming>SequenceFlow_0xm9g9s</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="AAI Delete" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0m483td" name="No" sourceRef="ExclusiveGateway_0mys1pj" targetRef="DeleteAAIAR" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0kdn6a5" name="AAI Delete">
+      <bpmn2:outgoing>SequenceFlow_13mhe5h</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="AAI Delete" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_13mhe5h" sourceRef="IntermediateCatchEvent_0kdn6a5" targetRef="DeleteAAIAR" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1txpz34" name="Skip Rollback?" default="SequenceFlow_1c07scr">
+      <bpmn2:incoming>SequenceFlow_0bfuk6l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1c07scr</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0oe57h4</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1c07scr" name="No" sourceRef="ExclusiveGateway_1txpz34" targetRef="ExclusiveGateway_1086eg7" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0oe57h4" name="Yes" sourceRef="ExclusiveGateway_1txpz34" targetRef="postProcessRequest">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0vw18rq" name="Deactiavate SDNC?&#10;" default="SequenceFlow_0dzz8fp">
+      <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1fvfplx</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0dzz8fp</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1fvfplx" name="Yes" sourceRef="ExclusiveGateway_0vw18rq" targetRef="SDNCDeactivate">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("deactivateSdnc" ) == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0dzz8fp" name="No" sourceRef="ExclusiveGateway_0vw18rq" targetRef="DeleteSDNC" />
+  </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" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateAllottedResourceTXCRollback">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
+        <dc:Bounds x="66" y="392" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="84" y="433" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization">
+        <dc:Bounds x="160" y="370" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="101" y="412" />
+        <di:waypoint xsi:type="dc:Point" x="160" y="412" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="131" y="397" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3">
+        <dc:Bounds x="966" y="646" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="984" y="687" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q">
+        <di:waypoint xsi:type="dc:Point" x="92" y="710" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="727.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o">
+        <di:waypoint xsi:type="dc:Point" x="142" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="198" y="785" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="170" y="770" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb">
+        <di:waypoint xsi:type="dc:Point" x="359" y="707" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="725" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCDeactivate">
+        <dc:Bounds x="42" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCDeactivate">
+        <dc:Bounds x="42" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCDelete">
+        <dc:Bounds x="309" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCDelete">
+        <dc:Bounds x="309" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCUnassign">
+        <dc:Bounds x="590" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCUnassign">
+        <dc:Bounds x="590" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq">
+        <di:waypoint xsi:type="dc:Point" x="640" y="704" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="724.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43">
+        <di:waypoint xsi:type="dc:Point" x="690" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="787" y="785" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="739" y="770" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true">
+        <dc:Bounds x="-9" y="962" width="367" height="150" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx">
+        <dc:Bounds x="20" y="1025" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="38" y="1066" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi">
+        <dc:Bounds x="295" y="1025" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="313" y="1066" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ProcessError">
+        <dc:Bounds x="125" y="1003" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs">
+        <di:waypoint xsi:type="dc:Point" x="56" y="1043" />
+        <di:waypoint xsi:type="dc:Point" x="125" y="1043" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="91" y="1028" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v">
+        <di:waypoint xsi:type="dc:Point" x="225" y="1043" />
+        <di:waypoint xsi:type="dc:Point" x="264" y="1043" />
+        <di:waypoint xsi:type="dc:Point" x="264" y="1043" />
+        <di:waypoint xsi:type="dc:Point" x="295" y="1043" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="279" y="1043" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="DeleteAAIAR">
+        <dc:Bounds x="787" y="742" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="DeleteSDNC" isMarkerVisible="true">
+        <dc:Bounds x="197" y="761" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="219" y="648" width="71" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8">
+        <dc:Bounds x="-180" y="767" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-189" y="808" width="59" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9">
+        <di:waypoint xsi:type="dc:Point" x="-144" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="-112" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="-112" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="-79" y="785" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-97" y="785" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1k13o3m_di" bpmnElement="UpdateAAIARPendingDelete">
+        <dc:Bounds x="627" y="381" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0v13nt6_di" bpmnElement="IntermediateThrowEvent_0v13nt6">
+        <dc:Bounds x="659" y="298" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="650" y="275" width="73" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0g4cl5f_di" bpmnElement="SequenceFlow_0g4cl5f">
+        <di:waypoint xsi:type="dc:Point" x="677" y="381" />
+        <di:waypoint xsi:type="dc:Point" x="677" y="334" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="692" y="357.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ymy62j_di" bpmnElement="SequenceFlow_0ymy62j">
+        <di:waypoint xsi:type="dc:Point" x="887" y="664" />
+        <di:waypoint xsi:type="dc:Point" x="966" y="664" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="927" y="649" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_197vrli_di" bpmnElement="SequenceFlow_0m483rd">
+        <di:waypoint xsi:type="dc:Point" x="222" y="761" />
+        <di:waypoint xsi:type="dc:Point" x="222" y="672" />
+        <di:waypoint xsi:type="dc:Point" x="303" y="672" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="230" y="732.7173913043479" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ue1x4e_di" bpmnElement="SequenceFlow_0m483st">
+        <di:waypoint xsi:type="dc:Point" x="222" y="811" />
+        <di:waypoint xsi:type="dc:Point" x="222" y="891" />
+        <di:waypoint xsi:type="dc:Point" x="358" y="891" />
+        <di:waypoint xsi:type="dc:Point" x="481" y="796" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="232.20103151493018" y="822.2200886262924" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bfuk6l_di" bpmnElement="SequenceFlow_0bfuk6l">
+        <di:waypoint xsi:type="dc:Point" x="260" y="413" />
+        <di:waypoint xsi:type="dc:Point" x="334" y="413" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="297" y="398" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xm9g9s_di" bpmnElement="SequenceFlow_0xm9g9s">
+        <di:waypoint xsi:type="dc:Point" x="495" y="386" />
+        <di:waypoint xsi:type="dc:Point" x="496" y="334" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="477" y="353.9807135698298" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_0g5bd80_di" bpmnElement="SubProcess_0g5bd80" isExpanded="true">
+        <dc:Bounds x="515" y="979" width="405" height="139" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_11nscgh_di" bpmnElement="StartEvent_11nscgh">
+        <dc:Bounds x="563" y="1036" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="581" y="1077" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0cexvpg_di" bpmnElement="ScriptTask_0cexvpg">
+        <dc:Bounds x="683" y="1014" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1ce2d7j_di" bpmnElement="EndEvent_1ce2d7j">
+        <dc:Bounds x="845" y="1036" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="863" y="1077" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ebobc7_di" bpmnElement="SequenceFlow_0ebobc7">
+        <di:waypoint xsi:type="dc:Point" x="599" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="652" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="652" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="683" y="1054" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="667" y="1054" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ugqw84_di" bpmnElement="SequenceFlow_1ugqw84">
+        <di:waypoint xsi:type="dc:Point" x="783" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="813" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="813" y="1054" />
+        <di:waypoint xsi:type="dc:Point" x="845" y="1054" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="828" y="1054" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_13b9eww_di" bpmnElement="postProcessRequest">
+        <dc:Bounds x="787" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0mys1pj_di" bpmnElement="ExclusiveGateway_0mys1pj" isMarkerVisible="true">
+        <dc:Bounds x="470" y="760" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="490" y="640" width="86" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0sh1u69_di" bpmnElement="SequenceFlow_0sh1u69">
+        <di:waypoint xsi:type="dc:Point" x="409" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="437" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="437" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="470" y="785" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="452" y="785" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04hdt5s_di" bpmnElement="SequenceFlow_04hdt5s">
+        <di:waypoint xsi:type="dc:Point" x="495" y="759" />
+        <di:waypoint xsi:type="dc:Point" x="495" y="664" />
+        <di:waypoint xsi:type="dc:Point" x="590" y="664" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="502" y="732" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_03bkrg4_di" bpmnElement="SequenceFlow_03bkrg4">
+        <di:waypoint xsi:type="dc:Point" x="837" y="742" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="704" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="852" y="723" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1086eg7_di" bpmnElement="ExclusiveGateway_1086eg7" isMarkerVisible="true">
+        <dc:Bounds x="469" y="385" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="458" y="439" width="83" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_144pxkp_di" bpmnElement="SequenceFlow_144pxkp">
+        <di:waypoint xsi:type="dc:Point" x="519" y="410" />
+        <di:waypoint xsi:type="dc:Point" x="627" y="410" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="550" y="392.99583286074477" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0lwqzlv_di" bpmnElement="IntermediateThrowEvent_0lwqzlv">
+        <dc:Bounds x="479" y="298" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="473" y="277" width="67" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0m483td_di" bpmnElement="SequenceFlow_0m483td">
+        <di:waypoint xsi:type="dc:Point" x="495" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="495" y="890" />
+        <di:waypoint xsi:type="dc:Point" x="639" y="890" />
+        <di:waypoint xsi:type="dc:Point" x="787" y="802" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="503.0189879790115" y="823.6755392339563" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0kdn6a5_di" bpmnElement="IntermediateCatchEvent_0kdn6a5">
+        <dc:Bounds x="819" y="876" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="809" y="916" width="53" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_13mhe5h_di" bpmnElement="SequenceFlow_13mhe5h">
+        <di:waypoint xsi:type="dc:Point" x="837" y="876" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="848" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="826" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="852" y="862" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1txpz34_di" bpmnElement="ExclusiveGateway_1txpz34" isMarkerVisible="true">
+        <dc:Bounds x="334" y="385" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="323" y="370" width="72" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1c07scr_di" bpmnElement="SequenceFlow_1c07scr">
+        <di:waypoint xsi:type="dc:Point" x="384" y="410" />
+        <di:waypoint xsi:type="dc:Point" x="469" y="410" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="421" y="394.9978753852595" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0oe57h4_di" bpmnElement="SequenceFlow_0oe57h4">
+        <di:waypoint xsi:type="dc:Point" x="359" y="435" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="535" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="535" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="589" y="520" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0vw18rq_di" bpmnElement="ExclusiveGateway_0vw18rq" isMarkerVisible="true">
+        <dc:Bounds x="-79" y="760" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-53" y="631" width="62" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fvfplx_di" bpmnElement="SequenceFlow_1fvfplx">
+        <di:waypoint xsi:type="dc:Point" x="-54" y="760" />
+        <di:waypoint xsi:type="dc:Point" x="-54" y="664" />
+        <di:waypoint xsi:type="dc:Point" x="42" y="664" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-49" y="733.3483834130782" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dzz8fp_di" bpmnElement="SequenceFlow_0dzz8fp">
+        <di:waypoint xsi:type="dc:Point" x="-54" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="-54" y="892" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="892" />
+        <di:waypoint xsi:type="dc:Point" x="208" y="797" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-48.00000000000003" y="827" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2ENetworkInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2ENetworkInstance.bpmn
new file mode 100644
index 0000000..07de3fc
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2ENetworkInstance.bpmn
@@ -0,0 +1,136 @@
+<?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.10.0">
+  <bpmn:process id="DoCreateE2ENetworkInstance" name="DoCreateE2ENetworkInstance" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1">
+      <bpmn:outgoing>SequenceFlow_1gomb9n</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:scriptTask id="ScriptTask_16gvaru" name="PreProcess SDNC Assign Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1gomb9n</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0s7w7gp</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateE2EServiceInstance()
+dcsi.preProcessSDNCAssignRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_0dp0qqq" name="Post Process SDNC Assign Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1wtx8gj</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0k06cqp</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateE2EServiceInstance()
+dcsi.postProcessSDNCAssign(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="CallActivity_0ao684p" name="Call SDNC Adapter Service Topology Assign" calledElement="DoUnderlayVpnOperation">
+      <bpmn:extensionElements>
+        <camunda:in source="sdncAssignRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncAdapterResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0s7w7gp</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1wtx8gj</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:endEvent id="EndEvent_0tpifgl">
+      <bpmn:incoming>SequenceFlow_0o6bjmn</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:callActivity id="CallActivity_11yzhx1" name="Call CustomE2EGetService2" calledElement="CustomE2EGetService">
+      <bpmn:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in source="subscriptionServiceType" target="GENGS_serviceType" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0k06cqp</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1oql7zl</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:scriptTask id="ScriptTask_0yz4lym" name="Post Process AAI GET2" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1oql7zl</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0o6bjmn</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateE2EServiceInstance()
+dcsi.postProcessAAIGET2(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0s7w7gp" name="" sourceRef="ScriptTask_16gvaru" targetRef="CallActivity_0ao684p" />
+    <bpmn:sequenceFlow id="SequenceFlow_1wtx8gj" name="" sourceRef="CallActivity_0ao684p" targetRef="ScriptTask_0dp0qqq" />
+    <bpmn:sequenceFlow id="SequenceFlow_0k06cqp" name="" sourceRef="ScriptTask_0dp0qqq" targetRef="CallActivity_11yzhx1" />
+    <bpmn:sequenceFlow id="SequenceFlow_0o6bjmn" sourceRef="ScriptTask_0yz4lym" targetRef="EndEvent_0tpifgl" />
+    <bpmn:sequenceFlow id="SequenceFlow_1oql7zl" sourceRef="CallActivity_11yzhx1" targetRef="ScriptTask_0yz4lym" />
+    <bpmn:sequenceFlow id="SequenceFlow_1gomb9n" sourceRef="StartEvent_1" targetRef="ScriptTask_16gvaru" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateE2ENetworkInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="173" y="102" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_16gvaru_di" bpmnElement="ScriptTask_16gvaru">
+        <dc:Bounds x="346" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0dp0qqq_di" bpmnElement="ScriptTask_0dp0qqq">
+        <dc:Bounds x="754" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0ao684p_di" bpmnElement="CallActivity_0ao684p">
+        <dc:Bounds x="546" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0tpifgl_di" bpmnElement="EndEvent_0tpifgl">
+        <dc:Bounds x="1432" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1405" y="143" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_11yzhx1_di" bpmnElement="CallActivity_11yzhx1">
+        <dc:Bounds x="983" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0yz4lym_di" bpmnElement="ScriptTask_0yz4lym">
+        <dc:Bounds x="1219" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s7w7gp_di" bpmnElement="SequenceFlow_0s7w7gp">
+        <di:waypoint xsi:type="dc:Point" x="446" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="546" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="496" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wtx8gj_di" bpmnElement="SequenceFlow_1wtx8gj">
+        <di:waypoint xsi:type="dc:Point" x="646" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="754" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="700" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0k06cqp_di" bpmnElement="SequenceFlow_0k06cqp">
+        <di:waypoint xsi:type="dc:Point" x="854" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="891" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="983" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="872.5" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0o6bjmn_di" bpmnElement="SequenceFlow_0o6bjmn">
+        <di:waypoint xsi:type="dc:Point" x="1319" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="1432" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1375.5" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1oql7zl_di" bpmnElement="SequenceFlow_1oql7zl">
+        <di:waypoint xsi:type="dc:Point" x="1083" y="115" />
+        <di:waypoint xsi:type="dc:Point" x="1151" y="115" />
+        <di:waypoint xsi:type="dc:Point" x="1219" y="115" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1117" y="94" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1gomb9n_di" bpmnElement="SequenceFlow_1gomb9n">
+        <di:waypoint xsi:type="dc:Point" x="209" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="346" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="277.5" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstance.bpmn
new file mode 100644
index 0000000..a5fadcf
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstance.bpmn
@@ -0,0 +1,544 @@
+<?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.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCreateE2EServiceInstanceV3" name="DoCreateE2EServiceInstanceV3" isExecutable="true">
+    <bpmn2:startEvent id="createSI_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1qiiycn</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1qiiycn</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0w9t6tc</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateE2EServiceInstance()
+dcsi.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="CustomE2EGetService" targetRef="ScriptTask_0i8cqdy" />
+    <bpmn2:callActivity id="CustomE2EGetService" name="Call Custom E2E Get Service" calledElement="CustomE2EGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceName" target="GENGS_serviceInstanceName" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="serviceType" target="GENGS_serviceType" />
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1i7t9hq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="CustomE2EPutService" name="Call Custom E2E Put Service" calledElement="CustomE2EPutService">
+      <bpmn2:extensionElements>
+        <camunda:in source="globalSubscriberId" target="GENPS_globalSubscriberId" />
+        <camunda:in source="serviceInstanceId" target="GENPS_serviceInstanceId" />
+        <camunda:in source="serviceType" target="GENPS_serviceType" />
+        <camunda:in sourceExpression="service-instance" target="GENPS_type" />
+        <camunda:in source="serviceInstanceData" target="GENPS_payload" />
+        <camunda:out source="GENPS_SuccessIndicator" target="GENPS_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="GENPS_requesId" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1w01tqs</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_129ih1g</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_129ih1g" sourceRef="CustomE2EPutService" targetRef="ScriptTask_0q37vn9" />
+    <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:startEvent>
+      <bpmn2:endEvent id="EndEvent_117lkk3">
+        <bpmn2:incoming>SequenceFlow_1xzgv5k</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:callActivity id="CallActivity_1srx6p6" name="Call DoCreateE2EServiceInstanceRollback" calledElement="DoCreateE2EServiceInstanceRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="mso-request-id" />
+          <camunda:in source="rollbackData" target="rollbackData" />
+          <camunda:out source="rolledBack" target="rolledBack" />
+          <camunda:in source="disableRollback" target="disableRollback" />
+          <camunda:out source="rollbackError" target="rollbackErrror" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1lqktwf</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0eumzpf</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_0eumzpf" sourceRef="CallActivity_1srx6p6" targetRef="ScriptTask_1p0vyip" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0tgrn11" sourceRef="StartEvent_0yljq9y" targetRef="ScriptTask_0ocetux" />
+      <bpmn2:scriptTask id="ScriptTask_0ocetux" name="Pre Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0tgrn11</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1lqktwf</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateE2EServiceInstance()
+dcsi.preProcessRollback(execution)
+]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1lqktwf" sourceRef="ScriptTask_0ocetux" targetRef="CallActivity_1srx6p6" />
+      <bpmn2:scriptTask id="ScriptTask_1p0vyip" name="Post Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0eumzpf</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1xzgv5k</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateE2EServiceInstance()
+dcsi.postProcessRollback(execution)
+]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1xzgv5k" sourceRef="ScriptTask_1p0vyip" targetRef="EndEvent_117lkk3" />
+    </bpmn2:subProcess>
+    <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.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateE2EServiceInstance()
+dcsi.postProcessAAIGET(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1w01tqs" sourceRef="ScriptTask_0i8cqdy" targetRef="CustomE2EPutService" />
+    <bpmn2:scriptTask id="ScriptTask_0q37vn9" name="Post Process AAI PUT" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_129ih1g</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1tkgqu3</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCreateE2EServiceInstance()
+ddsi.postProcessAAIPUT(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1qctzm0" sourceRef="Task_0uiekmn" targetRef="Task_0raqlqc" />
+    <bpmn2:scriptTask id="Task_0uiekmn" name="Prepare Resource Oper Status" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_03ebqhf</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1qctzm0</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCreateE2EServiceInstance()
+ddsi.preInitResourcesOperStatus(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:serviceTask id="Task_0raqlqc" name="Init Resource Oper Status">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_initResOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1qctzm0</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13xfsff</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0bq4fxs" name="Go to Decompose_Service">
+      <bpmn2:incoming>SequenceFlow_0w9t6tc</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="Decompose_Service" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1mlbhmt" name="GoTo StartService">
+      <bpmn2:incoming>SequenceFlow_012h7yx</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartService" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:scriptTask id="ScriptTask_1o01d7d" name="PostProcess&#10;Decompose&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0xjwb45</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_012h7yx</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi= new DoCreateE2EServiceInstance()
+dcsi.processDecomposition(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_0biblpc" name="Call Decompose Service" 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_0qxzgvq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xjwb45</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_1cllqk3" name="Prepare&#10;Decompose&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_166w91p</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0qxzgvq</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi= new DoCreateE2EServiceInstance()
+dcsi.prepareDecomposeService(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0tv85pg" name="Decompose_Service">
+      <bpmn2:outgoing>SequenceFlow_166w91p</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="Decompose_Service" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0xjwb45" sourceRef="CallActivity_0biblpc" targetRef="ScriptTask_1o01d7d" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0qxzgvq" sourceRef="ScriptTask_1cllqk3" targetRef="CallActivity_0biblpc" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1qiiycn" sourceRef="createSI_startEvent" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:sequenceFlow id="SequenceFlow_166w91p" sourceRef="IntermediateCatchEvent_0tv85pg" targetRef="ScriptTask_1cllqk3" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_16okck2" name="GoTo StartPrepareResource">
+      <bpmn2:incoming>SequenceFlow_1tkgqu3</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartPrepareResource" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1tkgqu3" sourceRef="ScriptTask_0q37vn9" targetRef="IntermediateThrowEvent_16okck2" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0w9t6tc" sourceRef="preProcessRequest_ScriptTask" targetRef="IntermediateThrowEvent_0bq4fxs" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0jrb3xu" name="StartService">
+      <bpmn2:outgoing>SequenceFlow_1i7t9hq</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartService" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1i7t9hq" sourceRef="IntermediateCatchEvent_0jrb3xu" targetRef="CustomE2EGetService" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_05dus9b" name="StartPrepareResource">
+      <bpmn2:outgoing>SequenceFlow_1hbesp9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartPrepareResource" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1hbesp9" sourceRef="IntermediateCatchEvent_05dus9b" targetRef="Task_0dqjp43" />
+    <bpmn2:scriptTask id="Task_0ush1g4" name="Call Service OOF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_01s0ef2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_03ebqhf</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi= new DoCreateE2EServiceInstance()
+dcsi.doServiceHoming(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_1ojtwas" name="Call DoCreateResources" calledElement="DoCreateResourcesV3">
+      <bpmn2:extensionElements>
+        <camunda:in source="nsServiceName" target="nsServiceName" />
+        <camunda:in source="nsServiceDescription" target="nsServiceDescription" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="resourceType" target="resourceType" />
+        <camunda:in source="resourceUUID" target="resourceUUID" />
+        <camunda:in source="resourceParameters" target="resourceParameters" />
+        <camunda:in source="operationType" target="operationType" />
+        <camunda:in source="addResourceList" target="addResourceList" />
+        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:in source="uuiRequest" target="uuiRequest" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0bf6bzp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0d0c20n</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_04b21gb" name="PreProcess for Add Resources" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_13xfsff</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0bf6bzp</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoCreateE2EServiceInstance()
+csi.preProcessForAddResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="ScriptTask_1y7jr4t" name="PostProcess for Add Resource" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0d0c20n</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0a6vgsu</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoCreateE2EServiceInstance()
+csi.postProcessForAddResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_13xfsff" sourceRef="Task_0raqlqc" targetRef="ScriptTask_04b21gb" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0bf6bzp" sourceRef="ScriptTask_04b21gb" targetRef="CallActivity_1ojtwas" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0d0c20n" sourceRef="CallActivity_1ojtwas" targetRef="ScriptTask_1y7jr4t" />
+    <bpmn2:endEvent id="EndEvent_0hzmoug">
+      <bpmn2:incoming>SequenceFlow_0a6vgsu</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0a6vgsu" sourceRef="ScriptTask_1y7jr4t" targetRef="EndEvent_0hzmoug" />
+    <bpmn2:sequenceFlow id="SequenceFlow_03ebqhf" sourceRef="Task_0ush1g4" targetRef="Task_0uiekmn" />
+    <bpmn2:sequenceFlow id="SequenceFlow_012h7yx" sourceRef="ScriptTask_1o01d7d" targetRef="IntermediateThrowEvent_1mlbhmt" />
+    <bpmn2:sequenceFlow id="SequenceFlow_01s0ef2" sourceRef="Task_0dqjp43" targetRef="Task_0ush1g4" />
+    <bpmn2:scriptTask id="Task_0dqjp43" name="Call Service Pre Operation" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1hbesp9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_01s0ef2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi= new DoCreateE2EServiceInstance()
+dcsi.doServicePreOperation(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateE2EServiceInstanceV3">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSI_startEvent">
+        <dc:Bounds x="18" y="-207" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="12" y="-166" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="126" y="-229" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_4">
+        <di:waypoint xsi:type="dc:Point" x="296" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="387" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="387" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="478" y="94" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="357" y="94" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1md4kyb_di" bpmnElement="CustomE2EGetService">
+        <dc:Bounds x="196" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0khp0qc_di" bpmnElement="CustomE2EPutService">
+        <dc:Bounds x="713" y="54" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_129ih1g_di" bpmnElement="SequenceFlow_129ih1g">
+        <di:waypoint xsi:type="dc:Point" x="813" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="941" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="941" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="1068" y="94" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="911" y="94" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_06d8lk8_di" bpmnElement="SubProcess_06d8lk8" isExpanded="true">
+        <dc:Bounds x="15" y="865" width="783" height="195" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0yljq9y_di" bpmnElement="StartEvent_0yljq9y">
+        <dc:Bounds x="111" y="942" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="84" y="983" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_117lkk3_di" bpmnElement="EndEvent_117lkk3">
+        <dc:Bounds x="744" y="942" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="717" y="983" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1srx6p6_di" bpmnElement="CallActivity_1srx6p6">
+        <dc:Bounds x="409" y="920" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eumzpf_di" bpmnElement="SequenceFlow_0eumzpf">
+        <di:waypoint xsi:type="dc:Point" x="509" y="960" />
+        <di:waypoint xsi:type="dc:Point" x="577" y="960" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="498" y="945" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0tgrn11_di" bpmnElement="SequenceFlow_0tgrn11">
+        <di:waypoint xsi:type="dc:Point" x="147" y="960" />
+        <di:waypoint xsi:type="dc:Point" x="246" y="960" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="152" y="945" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0i8cqdy_di" bpmnElement="ScriptTask_0i8cqdy">
+        <dc:Bounds x="478" y="54" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1w01tqs_di" bpmnElement="SequenceFlow_1w01tqs">
+        <di:waypoint xsi:type="dc:Point" x="578" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="646" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="646" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="713" y="94" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="616" y="94" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0q37vn9_di" bpmnElement="ScriptTask_0q37vn9">
+        <dc:Bounds x="1068" y="54" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ocetux_di" bpmnElement="ScriptTask_0ocetux">
+        <dc:Bounds x="246" y="920" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lqktwf_di" bpmnElement="SequenceFlow_1lqktwf">
+        <di:waypoint xsi:type="dc:Point" x="346" y="960" />
+        <di:waypoint xsi:type="dc:Point" x="409" y="960" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="333" y="945" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1p0vyip_di" bpmnElement="ScriptTask_1p0vyip">
+        <dc:Bounds x="577" y="920" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xzgv5k_di" bpmnElement="SequenceFlow_1xzgv5k">
+        <di:waypoint xsi:type="dc:Point" x="677" y="960" />
+        <di:waypoint xsi:type="dc:Point" x="709" y="960" />
+        <di:waypoint xsi:type="dc:Point" x="709" y="960" />
+        <di:waypoint xsi:type="dc:Point" x="744" y="960" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="679" y="960" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qctzm0_di" bpmnElement="SequenceFlow_1qctzm0">
+        <di:waypoint xsi:type="dc:Point" x="534" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="604" y="300" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="524" y="279" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0v81r5h_di" bpmnElement="Task_0uiekmn">
+        <dc:Bounds x="434" y="260" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_14tnuxf_di" bpmnElement="Task_0raqlqc">
+        <dc:Bounds x="604" y="260" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_11saqvj_di" bpmnElement="IntermediateThrowEvent_0bq4fxs">
+        <dc:Bounds x="1315" y="-207" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1290" y="-167" width="88" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1mlbhmt_di" bpmnElement="IntermediateThrowEvent_1mlbhmt">
+        <dc:Bounds x="1315" y="-57" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1288" y="-16" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1o01d7d_di" bpmnElement="ScriptTask_1o01d7d">
+        <dc:Bounds x="713" y="-79" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0biblpc_di" bpmnElement="CallActivity_0biblpc">
+        <dc:Bounds x="478" y="-79" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1cllqk3_di" bpmnElement="ScriptTask_1cllqk3">
+        <dc:Bounds x="196" y="-79" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0tv85pg_di" bpmnElement="IntermediateCatchEvent_0tv85pg">
+        <dc:Bounds x="26" y="-57" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2" y="-21" width="88" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xjwb45_di" bpmnElement="SequenceFlow_0xjwb45">
+        <di:waypoint xsi:type="dc:Point" x="578" y="-39" />
+        <di:waypoint xsi:type="dc:Point" x="713" y="-39" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="645.5" y="-60" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0qxzgvq_di" bpmnElement="SequenceFlow_0qxzgvq">
+        <di:waypoint xsi:type="dc:Point" x="296" y="-39" />
+        <di:waypoint xsi:type="dc:Point" x="478" y="-39" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="387" y="-60" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qiiycn_di" bpmnElement="SequenceFlow_1qiiycn">
+        <di:waypoint xsi:type="dc:Point" x="54" y="-189" />
+        <di:waypoint xsi:type="dc:Point" x="126" y="-189" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="90" y="-210" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_166w91p_di" bpmnElement="SequenceFlow_166w91p">
+        <di:waypoint xsi:type="dc:Point" x="62" y="-39" />
+        <di:waypoint xsi:type="dc:Point" x="196" y="-39" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="129" y="-60" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_16okck2_di" bpmnElement="IntermediateThrowEvent_16okck2">
+        <dc:Bounds x="1315" y="76" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1299" y="117" width="71" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1tkgqu3_di" bpmnElement="SequenceFlow_1tkgqu3">
+        <di:waypoint xsi:type="dc:Point" x="1168" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="1242" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="1242" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="1315" y="94" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1257" y="88" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0w9t6tc_di" bpmnElement="SequenceFlow_0w9t6tc">
+        <di:waypoint xsi:type="dc:Point" x="226" y="-189" />
+        <di:waypoint xsi:type="dc:Point" x="771" y="-189" />
+        <di:waypoint xsi:type="dc:Point" x="771" y="-189" />
+        <di:waypoint xsi:type="dc:Point" x="1315" y="-189" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="786" y="-195" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0jrb3xu_di" bpmnElement="IntermediateCatchEvent_0jrb3xu">
+        <dc:Bounds x="18" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="8" y="115" width="60" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1i7t9hq_di" bpmnElement="SequenceFlow_1i7t9hq">
+        <di:waypoint xsi:type="dc:Point" x="54" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="196" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="125" y="76" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_05dus9b_di" bpmnElement="IntermediateCatchEvent_05dus9b">
+        <dc:Bounds x="18" y="282" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-3" y="318" width="82" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1hbesp9_di" bpmnElement="SequenceFlow_1hbesp9">
+        <di:waypoint xsi:type="dc:Point" x="54" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="87" y="300" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="25.5" y="279" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0wr11dt_di" bpmnElement="Task_0ush1g4">
+        <dc:Bounds x="277" y="260" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ojtwas_di" bpmnElement="CallActivity_1ojtwas">
+        <dc:Bounds x="971" y="260" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_04b21gb_di" bpmnElement="ScriptTask_04b21gb">
+        <dc:Bounds x="799" y="260" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1y7jr4t_di" bpmnElement="ScriptTask_1y7jr4t">
+        <dc:Bounds x="1145" y="260" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_13xfsff_di" bpmnElement="SequenceFlow_13xfsff">
+        <di:waypoint xsi:type="dc:Point" x="704" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="799" y="300" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="706.5" y="279" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bf6bzp_di" bpmnElement="SequenceFlow_0bf6bzp">
+        <di:waypoint xsi:type="dc:Point" x="899" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="971" y="300" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="890" y="279" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0d0c20n_di" bpmnElement="SequenceFlow_0d0c20n">
+        <di:waypoint xsi:type="dc:Point" x="1071" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="1145" y="300" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1063" y="279" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0hzmoug_di" bpmnElement="EndEvent_0hzmoug">
+        <dc:Bounds x="1315" y="282.4076655052265" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1333" y="322.4076655052265" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0a6vgsu_di" bpmnElement="SequenceFlow_0a6vgsu">
+        <di:waypoint xsi:type="dc:Point" x="1245" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="1315" y="300" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1235" y="279" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_03ebqhf_di" bpmnElement="SequenceFlow_03ebqhf">
+        <di:waypoint xsi:type="dc:Point" x="377" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="434" y="300" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="405.5" y="278" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_012h7yx_di" bpmnElement="SequenceFlow_012h7yx">
+        <di:waypoint xsi:type="dc:Point" x="813" y="-39" />
+        <di:waypoint xsi:type="dc:Point" x="1315" y="-39" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1064" y="-61" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_01s0ef2_di" bpmnElement="SequenceFlow_01s0ef2">
+        <di:waypoint xsi:type="dc:Point" x="187" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="277" y="300" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="232" y="278" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1uhlqf5_di" bpmnElement="Task_0dqjp43">
+        <dc:Bounds x="87" y="260" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstanceRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstanceRollback.bpmn
new file mode 100644
index 0000000..c26ad9a
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstanceRollback.bpmn
@@ -0,0 +1,373 @@
+<?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.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCreateE2EServiceInstanceRollback" name="DoCreateE2EServiceInstanceRollback" isExecutable="true">
+    <bpmn2:startEvent id="createSIRollback_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createSIRollback_startEvent" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def rbk = new DoCreateE2EServiceInstanceRollback()
+rbk.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_01l4ssl</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1">
+        <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1">
+        <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" />
+      <bpmn2:scriptTask id="ScriptTask_1" name="Handle Errors" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def rbk= new DoCreateE2EServiceInstanceRollback()
+rbk.processRollbackException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" />
+    </bpmn2:subProcess>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="ExclusiveGateway_19tbjgn" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_09wkav2" name="RollbackSDNC?" default="SequenceFlow_1uw2p9a">
+      <bpmn2:incoming>SequenceFlow_06aasqh</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="CallActivity_0ak0ezb">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rollbackSDNC" )  == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1uw2p9a" name="no" sourceRef="ExclusiveGateway_09wkav2" targetRef="ExclusiveGateway_0ii31dq" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0ii31dq" name="RollBackAAI?" default="SequenceFlow_1n7wade">
+      <bpmn2:documentation>rollback AAI</bpmn2:documentation>
+      <bpmn2:incoming>SequenceFlow_1uw2p9a</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1njogr1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1n7wade</bpmn2:outgoing>
+      <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="deleteSI" targetRef="PostProcess_ScriptTask" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1x9eh33" name="yes" sourceRef="ExclusiveGateway_0ii31dq" targetRef="deleteSI">
+      <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>
+        <camunda:in source="sdncDeactivate" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_11fnnkb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0k28xib</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_1uxr0cx" name="Post Process SDNC Deactivate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0k28xib</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0khjo7l</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+String response = execution.getVariable("sdncDeactivateResponse")
+def rbk= new DoCreateE2EServiceInstanceRollback()
+rbk.validateSDNCResponse(execution, response, "deactivate")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0khjo7l" sourceRef="ScriptTask_1uxr0cx" targetRef="CallActivity_0ppz9nd" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_19tbjgn" name="skip Rollback" default="SequenceFlow_06aasqh">
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_06aasqh</bpmn2:outgoing>
+      <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:outgoing>SequenceFlow_01l4ssl</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def rbk = new DoCreateE2EServiceInstanceRollback()
+rbk.postProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_01l4ssl" sourceRef="PostProcess_ScriptTask" targetRef="EndEvent_3" />
+    <bpmn2:sequenceFlow id="SequenceFlow_06aasqh" name="no" sourceRef="ExclusiveGateway_19tbjgn" targetRef="ExclusiveGateway_09wkav2" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1rzlaoy" name="yes" sourceRef="ExclusiveGateway_19tbjgn" targetRef="PostProcess_ScriptTask">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" )  == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:subProcess id="SubProcess_11bi8mc" name="Java Exception Handling Sub Process" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1gxe17c">
+        <bpmn2:outgoing>SequenceFlow_1ch4xrf</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:scriptTask id="ScriptTask_15yddb0" name="Process Java Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1ch4xrf</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1pjk2ff</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def rbk= new DoCreateE2EServiceInstanceRollback()
+rbk.processRollbackJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:endEvent id="EndEvent_12e3h6k">
+        <bpmn2:incoming>SequenceFlow_1pjk2ff</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition />
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_1ch4xrf" name="" sourceRef="StartEvent_1gxe17c" targetRef="ScriptTask_15yddb0" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1pjk2ff" name="" sourceRef="ScriptTask_15yddb0" targetRef="EndEvent_12e3h6k" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="ScriptTask_1awt1ds" name="Post Process SDNC Delete">
+      <bpmn2:incoming>SequenceFlow_006g9e8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1njogr1</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+String response = execution.getVariable("sdncDeleteResponse")
+def rbk= new DoCreateE2EServiceInstanceRollback()
+rbk.validateSDNCResponse(execution, response, "delete")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_0ppz9nd" name="Call SDNC Service Topology Dekete" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDelete" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0khjo7l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_006g9e8</bpmn2:outgoing>
+    </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:scriptTask id="deleteSI" name="&#10;AAI&#10;Delete&#10;(svc instance)&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1x9eh33</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_05wu9i7</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def rbk = new DoCreateE2EServiceInstanceRollback()
+rbk.deleteServiceInstance(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateE2EServiceInstanceRollback">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSIRollback_startEvent">
+        <dc:Bounds x="151" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="146" y="120" width="48" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="234" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="187" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="234" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="211" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1208" y="350" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1226" y="391" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true">
+        <dc:Bounds x="508" y="323" width="467" height="193" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1">
+        <dc:Bounds x="576" y="389" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="594" y="430" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1">
+        <dc:Bounds x="869" y="389" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="887" y="430" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269">
+        <di:waypoint xsi:type="dc:Point" x="612" y="407" />
+        <di:waypoint xsi:type="dc:Point" x="680" y="407" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="647" y="392" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="334" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="366" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="350" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_09wkav2_di" bpmnElement="ExclusiveGateway_09wkav2" isMarkerVisible="true">
+        <dc:Bounds x="448" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="433" y="129" width="79" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_11fnnkb_di" bpmnElement="SequenceFlow_11fnnkb">
+        <di:waypoint xsi:type="dc:Point" x="498" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="539" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="501" y="100" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1uw2p9a_di" bpmnElement="SequenceFlow_1uw2p9a">
+        <di:waypoint xsi:type="dc:Point" x="473" y="72" />
+        <di:waypoint xsi:type="dc:Point" x="473" y="-23" />
+        <di:waypoint xsi:type="dc:Point" x="1071" y="-23" />
+        <di:waypoint xsi:type="dc:Point" x="1071" y="72" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="751" y="-41" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0ii31dq_di" bpmnElement="ExclusiveGateway_0ii31dq" isMarkerVisible="true">
+        <dc:Bounds x="1046" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1094" y="104" width="66" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1n7wade_di" bpmnElement="SequenceFlow_1n7wade">
+        <di:waypoint xsi:type="dc:Point" x="1071" y="122" />
+        <di:waypoint xsi:type="dc:Point" x="1071" y="241" />
+        <di:waypoint xsi:type="dc:Point" x="1176" y="241" />
+        <bpmndi:BPMNLabel>
+          <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="1187" y="169" width="90" 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="19" 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" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0ak0ezb_di" bpmnElement="CallActivity_0ak0ezb">
+        <dc:Bounds x="539" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1uxr0cx_di" bpmnElement="ScriptTask_1uxr0cx">
+        <dc:Bounds x="671" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0khjo7l_di" bpmnElement="SequenceFlow_0khjo7l">
+        <di:waypoint xsi:type="dc:Point" x="771" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="796" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="784" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_19tbjgn_di" bpmnElement="ExclusiveGateway_19tbjgn" isMarkerVisible="true">
+        <dc:Bounds x="366" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="358" y="54" width="65" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="680" y="367" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219">
+        <di:waypoint xsi:type="dc:Point" x="780" y="407" />
+        <di:waypoint xsi:type="dc:Point" x="869" y="407" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="825" y="392" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1wk55es_di" bpmnElement="PostProcess_ScriptTask">
+        <dc:Bounds x="1176" y="201" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_01l4ssl_di" bpmnElement="SequenceFlow_01l4ssl">
+        <di:waypoint xsi:type="dc:Point" x="1226" y="281" />
+        <di:waypoint xsi:type="dc:Point" x="1226" y="350" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1241" y="315.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06aasqh_di" bpmnElement="SequenceFlow_06aasqh">
+        <di:waypoint xsi:type="dc:Point" x="416" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="448" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="426" y="82" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rzlaoy_di" bpmnElement="SequenceFlow_1rzlaoy">
+        <di:waypoint xsi:type="dc:Point" x="391" y="122" />
+        <di:waypoint xsi:type="dc:Point" x="391" y="268" />
+        <di:waypoint xsi:type="dc:Point" x="1176" y="267" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="397" y="195" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_11bi8mc_di" bpmnElement="SubProcess_11bi8mc" isExpanded="true">
+        <dc:Bounds x="325" y="576" width="419" height="150" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1gxe17c_di" bpmnElement="StartEvent_1gxe17c">
+        <dc:Bounds x="360" y="628" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="378" y="669" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_15yddb0_di" bpmnElement="ScriptTask_15yddb0">
+        <dc:Bounds x="468" y="606" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_12e3h6k_di" bpmnElement="EndEvent_12e3h6k">
+        <dc:Bounds x="618" y="628" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="636" y="669" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ch4xrf_di" bpmnElement="SequenceFlow_1ch4xrf">
+        <di:waypoint xsi:type="dc:Point" x="396" y="646" />
+        <di:waypoint xsi:type="dc:Point" x="468" y="646" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="421" y="646" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1pjk2ff_di" bpmnElement="SequenceFlow_1pjk2ff">
+        <di:waypoint xsi:type="dc:Point" x="568" y="646" />
+        <di:waypoint xsi:type="dc:Point" x="618" y="646" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="593" y="646" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1awt1ds_di" bpmnElement="ScriptTask_1awt1ds">
+        <dc:Bounds x="921" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0ppz9nd_di" bpmnElement="CallActivity_0ppz9nd">
+        <dc:Bounds x="796" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_006g9e8_di" bpmnElement="SequenceFlow_006g9e8">
+        <di:waypoint xsi:type="dc:Point" x="896" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="921" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="909" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1njogr1_di" bpmnElement="SequenceFlow_1njogr1">
+        <di:waypoint xsi:type="dc:Point" x="1021" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1046" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1034" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0uml7gl_di" bpmnElement="deleteSI">
+        <dc:Bounds x="1167" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstanceV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstanceV2.bpmn
new file mode 100644
index 0000000..4c107c7
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateE2EServiceInstanceV2.bpmn
@@ -0,0 +1,1051 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCreateE2EServiceInstanceV2" name="DoCreateE2EServiceInstanceV2" isExecutable="true">
+    <bpmn2:startEvent id="createSI_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createSI_startEvent" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateE2EServiceInstanceV2()
+dcsi.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="CustomE2EGetService" targetRef="ScriptTask_0i8cqdy_PostProcessAAIGET" />
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="CustomE2EGetService" />
+    <bpmn2:callActivity id="CustomE2EGetService" name="Call Custom E2E Get Service" calledElement="CustomE2EGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceName" target="GENGS_serviceInstanceName" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="serviceType" target="GENGS_serviceType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="CustomE2EPutService" name="Call Custom E2E Put Service" calledElement="CustomE2EPutService">
+      <bpmn2:extensionElements>
+        <camunda:in source="globalSubscriberId" target="GENPS_globalSubscriberId" />
+        <camunda:in source="serviceInstanceId" target="GENPS_serviceInstanceId" />
+        <camunda:in source="serviceType" target="GENPS_serviceType" />
+        <camunda:in sourceExpression="service-instance" target="GENPS_type" />
+        <camunda:in source="serviceInstanceData" target="GENPS_payload" />
+        <camunda:out source="GENPS_SuccessIndicator" target="GENPS_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="GENPS_requesId" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0zmz5am</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_129ih1g</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_129ih1g" sourceRef="CustomE2EPutService" targetRef="ScriptTask_0q37vn9_PostProcessAAIPUT" />
+    <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:startEvent>
+      <bpmn2:endEvent id="EndEvent_117lkk3">
+        <bpmn2:incoming>SequenceFlow_1xzgv5k</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:callActivity id="CallActivity_1srx6p6" name="Call DoCreateE2EServiceInstanceRollback" calledElement="DoCreateE2EServiceInstanceRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="mso-request-id" />
+          <camunda:in source="rollbackData" target="rollbackData" />
+          <camunda:out source="rolledBack" target="rolledBack" />
+          <camunda:in source="disableRollback" target="disableRollback" />
+          <camunda:out source="rollbackError" target="rollbackErrror" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1lqktwf</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0eumzpf</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_0eumzpf" sourceRef="CallActivity_1srx6p6" targetRef="ScriptTask_1p0vyip" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0tgrn11" sourceRef="StartEvent_0yljq9y" targetRef="ScriptTask_0ocetux" />
+      <bpmn2:scriptTask id="ScriptTask_0ocetux" name="Pre Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0tgrn11</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1lqktwf</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateE2EServiceInstanceV2()
+dcsi.preProcessRollback(execution)
+]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1lqktwf" sourceRef="ScriptTask_0ocetux" targetRef="CallActivity_1srx6p6" />
+      <bpmn2:scriptTask id="ScriptTask_1p0vyip" name="Post Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0eumzpf</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1xzgv5k</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateE2EServiceInstanceV2()
+dcsi.postProcessRollback(execution)
+]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1xzgv5k" sourceRef="ScriptTask_1p0vyip" targetRef="EndEvent_117lkk3" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="ScriptTask_0i8cqdy_PostProcessAAIGET" name="Post Process AAI GET" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_10aubhh</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateE2EServiceInstanceV2()
+dcsi.postProcessAAIGET(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="ScriptTask_0q37vn9_PostProcessAAIPUT" name="Post Process AAI PUT" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_129ih1g</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_03fabby</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCreateE2EServiceInstanceV2()
+ddsi.postProcessAAIPUT(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_0kbbt94" />
+    <bpmn2:sequenceFlow id="SequenceFlow_03fabby" sourceRef="ScriptTask_0q37vn9_PostProcessAAIPUT" targetRef="IntermediateThrowEvent_0cabwkq" />
+    <bpmn2:scriptTask id="Task_1u82cbz" name="PreProcess Decompose Next Resouce" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_13l7ffp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0gorww6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoCreateE2EServiceInstanceV2()
+csi.preProcessDecomposeNextResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1761epe" default="SequenceFlow_14ef6wp">
+      <bpmn2:incoming>SequenceFlow_1wf52w6</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1t9tmp4</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_14ef6wp</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_163tmnq</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gorww6" sourceRef="Task_1u82cbz" targetRef="ScriptTask_1oc0qjo" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1t9tmp4" name="VFC" sourceRef="ExclusiveGateway_1761epe" targetRef="Task_09laxun">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("controllerType") =="VFC"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:scriptTask id="Task_09laxun" name="PreProcess Resource Request for VFC" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1t9tmp4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1t4cc7w</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoCreateE2EServiceInstanceV2()
+csi.preProcessResourceRequestForController(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1t4cc7w" sourceRef="Task_09laxun" targetRef="ExclusiveGateway_1xkr802" />
+    <bpmn2:callActivity id="Task_1wyyy33" name="Call DoCreateVFCNetworkServiceInstance" calledElement="DoCreateVFCNetworkServiceInstance">
+      <bpmn2:extensionElements>
+        <camunda:in source="nsServiceName" target="nsServiceName" />
+        <camunda:in source="nsServiceDescription" target="nsServiceDescription" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="serviceId" target="serviceId" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="resourceType" target="resourceType" />
+        <camunda:in source="resourceUUID" target="resourceUUID" />
+        <camunda:in source="resourceParameters" target="resourceParameters" />
+        <camunda:in source="operationType" target="operationType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1a1du22</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1p99k36</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1p99k36" sourceRef="Task_1wyyy33" targetRef="ExclusiveGateway_1iu2jb7" />
+    <bpmn2:scriptTask id="Task_0ag30bf" name="PostProcess Resource Request for VFC" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0cyffv0</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_07q8ra0</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoCreateE2EServiceInstanceV2()
+csi.postProcessResourceRequestForVFC(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="ScriptTask_1op29ls" name="PostProcess Resource Request for SDNC" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_06byir6</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ylmq2b</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoCreateE2EServiceInstanceV2()
+csi.postProcessResourceRequestForSDNC(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="ScriptTask_0g6otdg" name="PreProcess Resource Request for SDNC" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0vey6x4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0br9juy</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoCreateE2EServiceInstanceV2()
+csi.preProcessResourceRequestForController(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0r4jkig">
+      <bpmn2:incoming>SequenceFlow_0ylmq2b</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_07q8ra0</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0gxsqsa</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1yhd9dp</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ylmq2b" sourceRef="ScriptTask_1op29ls" targetRef="ExclusiveGateway_0r4jkig" />
+    <bpmn2:sequenceFlow id="SequenceFlow_07q8ra0" sourceRef="Task_0ag30bf" targetRef="ExclusiveGateway_0r4jkig" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1pwgsa8" name="Resource Finish?" default="SequenceFlow_13l7ffp">
+      <bpmn2:incoming>SequenceFlow_1rhn48b</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1mbrbsc</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13l7ffp</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1fq4qzy</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_13l7ffp" name="No" sourceRef="ExclusiveGateway_1pwgsa8" targetRef="Task_1u82cbz" />
+    <bpmn2:scriptTask id="Task_0vtxtuq_QueryServiceResources" name="Query Service Resources" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1r1hl23</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ct6u3o</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoCreateE2EServiceInstanceV2()
+csi.getServiceResources(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:serviceTask id="ServiceTask_1t9ln4p" name="Call Sync SDNC service Create " camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncServiceTopologyOperationTask">
+      <bpmn2:incoming>SequenceFlow_1vio1tn</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_07pkpa0</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:serviceTask id="CallActivity_0x5g3pa" name="Call DoCreateSDNCNetworkInstance" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncNetworkTopologyOperationTask">
+      <bpmn2:incoming>SequenceFlow_0br9juy</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_06byir6</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:scriptTask id="ScriptTask_04rn9mp" name="Post Config Service Instance Creation" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0cnuo36</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lkpfe2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoCreateE2EServiceInstanceV2()
+csi.postConfigRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1xkr802" name="skip VFC?" default="SequenceFlow_1a1du22">
+      <bpmn2:incoming>SequenceFlow_1t4cc7w</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1a1du22</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_14jy44g</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1a1du22" name="No" sourceRef="ExclusiveGateway_1xkr802" targetRef="Task_1wyyy33" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1iu2jb7">
+      <bpmn2:incoming>SequenceFlow_1p99k36</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_14jy44g</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0cyffv0</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0cyffv0" sourceRef="ExclusiveGateway_1iu2jb7" targetRef="Task_0ag30bf" />
+    <bpmn2:sequenceFlow id="SequenceFlow_14jy44g" name="yes" sourceRef="ExclusiveGateway_1xkr802" targetRef="ExclusiveGateway_1iu2jb7">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("skipVFC") == "true" }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0br9juy" sourceRef="ScriptTask_0g6otdg" targetRef="CallActivity_0x5g3pa" />
+    <bpmn2:sequenceFlow id="SequenceFlow_06byir6" sourceRef="CallActivity_0x5g3pa" targetRef="ScriptTask_1op29ls" />
+    <bpmn2:sequenceFlow id="SequenceFlow_14ef6wp" name="Other" sourceRef="ExclusiveGateway_1761epe" targetRef="Task_0zhvu4r_llllll" />
+    <bpmn2:scriptTask id="Task_0zhvu4r_llllll" name="PosOtherCotrollerType" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_14ef6wp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0gxsqsa</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoCreateE2EServiceInstanceV2()
+csi.postOtherControllerType(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gxsqsa" sourceRef="Task_0zhvu4r_llllll" targetRef="ExclusiveGateway_0r4jkig" />
+    <bpmn2:sequenceFlow id="SequenceFlow_10aubhh" sourceRef="ScriptTask_0i8cqdy_PostProcessAAIGET" targetRef="IntermediateThrowEvent_0aggdcl_GoToStartService" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0aggdcl_GoToStartService" name="GoTo StartService">
+      <bpmn2:incoming>SequenceFlow_10aubhh</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartService" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="StartEvent_0l5bz4h_StartService" name="StartService">
+      <bpmn2:outgoing>SequenceFlow_0zmz5am</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartService" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0zmz5am" sourceRef="StartEvent_0l5bz4h_StartService" targetRef="CustomE2EPutService" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1rhn48b" sourceRef="StartEvent_StartResource" targetRef="ExclusiveGateway_1pwgsa8" />
+    <bpmn2:intermediateCatchEvent id="StartEvent_StartResource" name="StartResource">
+      <bpmn2:outgoing>SequenceFlow_1rhn48b</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartResource" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ct6u3o" sourceRef="Task_0vtxtuq_QueryServiceResources" targetRef="IntermediateThrowEvent_1dwg5lz" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1dwg5lz" name="GoTo StartResource">
+      <bpmn2:incoming>SequenceFlow_1ct6u3o</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartResource" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1rebkae" sourceRef="StartEvent_0jhv664" targetRef="ScriptTask_1wk7zcu" />
+    <bpmn2:intermediateCatchEvent id="StartEvent_0jhv664" name="FinishProcess">
+      <bpmn2:outgoing>SequenceFlow_1rebkae</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="FinishProcess" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:endEvent id="EndEvent_0x8im5g">
+      <bpmn2:incoming>SequenceFlow_1lkpfe2</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1lkpfe2" sourceRef="ScriptTask_04rn9mp" targetRef="EndEvent_0x8im5g" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1fq4qzy" name="Yes" sourceRef="ExclusiveGateway_1pwgsa8" targetRef="IntermediateThrowEvent_GoToFinishProcess">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("DCRESI_resourceFinish") == true }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_GoToFinishProcess" name="GoTo FinishProcess">
+      <bpmn2:incoming>SequenceFlow_1fq4qzy</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="FinishProcess" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:scriptTask id="ScriptTask_1aszwcv_CheckResourceType" name="Check Resouce Type" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_10jgs3j</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1wf52w6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoCreateE2EServiceInstanceV2()
+csi.checkResourceType(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1wf52w6" sourceRef="ScriptTask_1aszwcv_CheckResourceType" targetRef="ExclusiveGateway_1761epe" />
+    <bpmn2:scriptTask id="ScriptTask_0jm9d9b" name="PostProcess Decompose Next Resouce" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1yhd9dp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0uj9myy</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoCreateE2EServiceInstanceV2()
+csi.postProcessDecomposeNextResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1yhd9dp" sourceRef="ExclusiveGateway_0r4jkig" targetRef="ScriptTask_0jm9d9b" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0uj9myy" sourceRef="ScriptTask_0jm9d9b" targetRef="ScriptTask_1vo6y1t" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0cabwkq" name="GoTo UpdateResourceOperStatus">
+      <bpmn2:incoming>SequenceFlow_03fabby</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="UpdateResourceOperStatus" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="StartEvent_1p7w4fj" name="Update Resource Oper Status">
+      <bpmn2:outgoing>SequenceFlow_0e8oxe4</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="UpdateResourceOperStatus" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0e8oxe4" sourceRef="StartEvent_1p7w4fj" targetRef="ScriptTask_0vaaotj" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0pz2s2d">
+      <bpmn2:incoming>SequenceFlow_07pkpa0</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_01zluif</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0vey6x4</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0vey6x4" sourceRef="ExclusiveGateway_0pz2s2d" targetRef="ScriptTask_0g6otdg" />
+    <bpmn2:sequenceFlow id="SequenceFlow_07pkpa0" sourceRef="ServiceTask_1t9ln4p" targetRef="ExclusiveGateway_0pz2s2d" />
+    <bpmn2:sequenceFlow id="SequenceFlow_163tmnq" name="SDNC" sourceRef="ExclusiveGateway_1761epe" targetRef="ExclusiveGateway_0k814as">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("controllerType") =="SDNC"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0k814as" name="SDNC service Create?" default="SequenceFlow_1vio1tn">
+      <bpmn2:incoming>SequenceFlow_163tmnq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_01zluif</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1vio1tn</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_01zluif" name="yes" sourceRef="ExclusiveGateway_0k814as" targetRef="ExclusiveGateway_0pz2s2d">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("unit_test") == "true"  ||  execution.getVariable("serviceSDNCCreate") == "true"  }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1vio1tn" name="no" sourceRef="ExclusiveGateway_0k814as" targetRef="ServiceTask_1t9ln4p" />
+    <bpmn2:scriptTask id="ScriptTask_0vaaotj" name="Prepare Update Service Oper Status" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0e8oxe4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1sata7n</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCreateE2EServiceInstanceV2()
+ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:serviceTask id="ServiceTask_1jbqff7" name="Update Service Oper Status">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1sata7n</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0x0jvs1</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1sata7n" sourceRef="ScriptTask_0vaaotj" targetRef="ServiceTask_1jbqff7" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0x0jvs1" sourceRef="ServiceTask_1jbqff7" targetRef="ScriptTask_1pwo0jp" />
+    <bpmn2:scriptTask id="ScriptTask_1wk7zcu" name="Prepare Update Service Oper Status(100%)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1rebkae</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0gr3l25</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+execution.setVariable("progress", "100")
+execution.setVariable("operationStatus", "End")
+def ddsi = new DoCreateE2EServiceInstanceV2()
+ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:serviceTask id="ServiceTask_1a6cmdu" name="Update Service Oper Status">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0gr3l25</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0cnuo36</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gr3l25" sourceRef="ScriptTask_1wk7zcu" targetRef="ServiceTask_1a6cmdu" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0cnuo36" sourceRef="ServiceTask_1a6cmdu" targetRef="ScriptTask_04rn9mp" />
+    <bpmn2:scriptTask id="ScriptTask_1vo6y1t" name="Prepare Update Service Oper Status" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0uj9myy</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_037rvnb</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+
+def ddsi = new DoCreateE2EServiceInstanceV2()
+ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_037rvnb" sourceRef="ScriptTask_1vo6y1t" targetRef="ServiceTask_13w9clz" />
+    <bpmn2:serviceTask id="ServiceTask_13w9clz" name="Update Service Oper Status">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_037rvnb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1mbrbsc</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1mbrbsc" sourceRef="ServiceTask_13w9clz" targetRef="ExclusiveGateway_1pwgsa8" />
+    <bpmn2:scriptTask id="ScriptTask_1pwo0jp" name="Prepare Resource Oper Status" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0x0jvs1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0aylb6e</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCreateE2EServiceInstanceV2()
+ddsi.preInitResourcesOperStatus(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0aylb6e" sourceRef="ScriptTask_1pwo0jp" targetRef="ServiceTask_1dqzdko" />
+    <bpmn2:serviceTask id="ServiceTask_1dqzdko" name="Init Resource Oper Status">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_initResOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0aylb6e</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1r1hl23</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1r1hl23" sourceRef="ServiceTask_1dqzdko" targetRef="Task_0vtxtuq_QueryServiceResources" />
+    <bpmn2:serviceTask id="ServiceTask_0uiibxn" name="Update Service Oper Status">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_01oo8ar</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_10jgs3j</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_10jgs3j" sourceRef="ServiceTask_0uiibxn" targetRef="ScriptTask_1aszwcv_CheckResourceType" />
+    <bpmn2:scriptTask id="ScriptTask_1oc0qjo" name="Prepare Update Service Oper Status" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0gorww6</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_01oo8ar</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+
+def ddsi = new DoCreateE2EServiceInstanceV2()
+ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_01oo8ar" sourceRef="ScriptTask_1oc0qjo" targetRef="ServiceTask_0uiibxn" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateE2EServiceInstanceV2">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSI_startEvent">
+        <dc:Bounds x="-14" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-20" y="120" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="187" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="22" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="187" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="59.5" y="82" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_4">
+        <di:waypoint xsi:type="dc:Point" x="664" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="917" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="745.5" y="82" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_61" targetElement="CallActivity_1md4kyb_di">
+        <di:waypoint xsi:type="dc:Point" x="287" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="564" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="380.5" y="82" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1md4kyb_di" bpmnElement="CustomE2EGetService">
+        <dc:Bounds x="564" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0khp0qc_di" bpmnElement="CustomE2EPutService">
+        <dc:Bounds x="564" y="244" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_129ih1g_di" bpmnElement="SequenceFlow_129ih1g">
+        <di:waypoint xsi:type="dc:Point" x="664" y="284" />
+        <di:waypoint xsi:type="dc:Point" x="917" y="284" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="745.5" y="269" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_06d8lk8_di" bpmnElement="SubProcess_06d8lk8" isExpanded="true">
+        <dc:Bounds x="-11" y="1751" width="783" height="195" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0yljq9y_di" bpmnElement="StartEvent_0yljq9y">
+        <dc:Bounds x="85" y="1828" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="58" y="1869" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_117lkk3_di" bpmnElement="EndEvent_117lkk3">
+        <dc:Bounds x="718" y="1828" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="691" y="1869" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1srx6p6_di" bpmnElement="CallActivity_1srx6p6">
+        <dc:Bounds x="383" y="1806" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eumzpf_di" bpmnElement="SequenceFlow_0eumzpf">
+        <di:waypoint xsi:type="dc:Point" x="483" y="1846" />
+        <di:waypoint xsi:type="dc:Point" x="551" y="1846" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="472" y="1831" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0tgrn11_di" bpmnElement="SequenceFlow_0tgrn11">
+        <di:waypoint xsi:type="dc:Point" x="121" y="1846" />
+        <di:waypoint xsi:type="dc:Point" x="220" y="1846" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="126" y="1831" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0i8cqdy_di" bpmnElement="ScriptTask_0i8cqdy_PostProcessAAIGET">
+        <dc:Bounds x="917" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0q37vn9_di" bpmnElement="ScriptTask_0q37vn9_PostProcessAAIPUT">
+        <dc:Bounds x="917" y="244" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ocetux_di" bpmnElement="ScriptTask_0ocetux">
+        <dc:Bounds x="220" y="1806" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lqktwf_di" bpmnElement="SequenceFlow_1lqktwf">
+        <di:waypoint xsi:type="dc:Point" x="320" y="1846" />
+        <di:waypoint xsi:type="dc:Point" x="383" y="1846" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="307" y="1831" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1p0vyip_di" bpmnElement="ScriptTask_1p0vyip">
+        <dc:Bounds x="551" y="1806" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xzgv5k_di" bpmnElement="SequenceFlow_1xzgv5k">
+        <di:waypoint xsi:type="dc:Point" x="651" y="1846" />
+        <di:waypoint xsi:type="dc:Point" x="683" y="1846" />
+        <di:waypoint xsi:type="dc:Point" x="683" y="1846" />
+        <di:waypoint xsi:type="dc:Point" x="718" y="1846" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="653" y="1846" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_01p249c_di" bpmnElement="EndEvent_0kbbt94">
+        <dc:Bounds x="-823" y="841" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-941" y="881" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_03fabby_di" bpmnElement="SequenceFlow_03fabby">
+        <di:waypoint xsi:type="dc:Point" x="1017" y="284" />
+        <di:waypoint xsi:type="dc:Point" x="1239" y="284" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1083" y="263" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1etg91s_di" bpmnElement="Task_1u82cbz">
+        <dc:Bounds x="398" y="625" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1761epe_di" bpmnElement="ExclusiveGateway_1761epe" isMarkerVisible="true">
+        <dc:Bounds x="1137" y="1189" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1117" y="1243" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gorww6_di" bpmnElement="SequenceFlow_0gorww6">
+        <di:waypoint xsi:type="dc:Point" x="498" y="665" />
+        <di:waypoint xsi:type="dc:Point" x="580" y="665" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="494" y="644" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t9tmp4_di" bpmnElement="SequenceFlow_1t9tmp4">
+        <di:waypoint xsi:type="dc:Point" x="1162" y="1189" />
+        <di:waypoint xsi:type="dc:Point" x="1162" y="1017" />
+        <di:waypoint xsi:type="dc:Point" x="1095" y="1017" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1166" y="1097" width="23" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1azssf7_di" bpmnElement="Task_09laxun">
+        <dc:Bounds x="995" y="977" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t4cc7w_di" bpmnElement="SequenceFlow_1t4cc7w">
+        <di:waypoint xsi:type="dc:Point" x="995" y="1017" />
+        <di:waypoint xsi:type="dc:Point" x="866" y="1017" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="885.5" y="996" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1v57nb9_di" bpmnElement="Task_1wyyy33">
+        <dc:Bounds x="539" y="977" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1p99k36_di" bpmnElement="SequenceFlow_1p99k36">
+        <di:waypoint xsi:type="dc:Point" x="539" y="1017" />
+        <di:waypoint xsi:type="dc:Point" x="401" y="1017" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="425" y="996" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1fj89ew_di" bpmnElement="Task_0ag30bf">
+        <dc:Bounds x="226" y="977" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1op29ls_di" bpmnElement="ScriptTask_1op29ls">
+        <dc:Bounds x="226" y="1339" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0g6otdg_di" bpmnElement="ScriptTask_0g6otdg">
+        <dc:Bounds x="643" y="1339" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0r4jkig_di" bpmnElement="ExclusiveGateway_0r4jkig" isMarkerVisible="true">
+        <dc:Bounds x="126" y="1189" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="123" y="1243" width="60" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ylmq2b_di" bpmnElement="SequenceFlow_0ylmq2b">
+        <di:waypoint xsi:type="dc:Point" x="226" y="1379" />
+        <di:waypoint xsi:type="dc:Point" x="151" y="1379" />
+        <di:waypoint xsi:type="dc:Point" x="151" y="1239" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="143.5" y="1358" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_07q8ra0_di" bpmnElement="SequenceFlow_07q8ra0">
+        <di:waypoint xsi:type="dc:Point" x="226" y="1017" />
+        <di:waypoint xsi:type="dc:Point" x="151" y="1017" />
+        <di:waypoint xsi:type="dc:Point" x="151" y="1189" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="143.5" y="996" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1pwgsa8_di" bpmnElement="ExclusiveGateway_1pwgsa8" isMarkerVisible="true">
+        <dc:Bounds x="212" y="640" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="194" y="694" width="86" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_13l7ffp_di" bpmnElement="SequenceFlow_13l7ffp">
+        <di:waypoint xsi:type="dc:Point" x="262" y="665" />
+        <di:waypoint xsi:type="dc:Point" x="398" y="665" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="377.03973509933775" y="644" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_08hez0f_di" bpmnElement="Task_0vtxtuq_QueryServiceResources">
+        <dc:Bounds x="917" y="451" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_1t9ln4p_di" bpmnElement="ServiceTask_1t9ln4p">
+        <dc:Bounds x="881" y="1339" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_1asiahh_di" bpmnElement="CallActivity_0x5g3pa">
+        <dc:Bounds x="429" y="1339" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_04rn9mp_di" bpmnElement="ScriptTask_04rn9mp">
+        <dc:Bounds x="539" y="1590" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1xkr802_di" bpmnElement="ExclusiveGateway_1xkr802" isMarkerVisible="true">
+        <dc:Bounds x="816" y="992" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="817" y="1051" width="51" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1a1du22_di" bpmnElement="SequenceFlow_1a1du22">
+        <di:waypoint xsi:type="dc:Point" x="816" y="1017" />
+        <di:waypoint xsi:type="dc:Point" x="639" y="1017" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="721.1366906474819" y="996" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1iu2jb7_di" bpmnElement="ExclusiveGateway_1iu2jb7" isMarkerVisible="true">
+        <dc:Bounds x="351" y="992" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="331" y="1051" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0cyffv0_di" bpmnElement="SequenceFlow_0cyffv0">
+        <di:waypoint xsi:type="dc:Point" x="351" y="1017" />
+        <di:waypoint xsi:type="dc:Point" x="326" y="1017" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="293.5" y="996" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_14jy44g_di" bpmnElement="SequenceFlow_14jy44g">
+        <di:waypoint xsi:type="dc:Point" x="841" y="992" />
+        <di:waypoint xsi:type="dc:Point" x="841" y="932" />
+        <di:waypoint xsi:type="dc:Point" x="376" y="932" />
+        <di:waypoint xsi:type="dc:Point" x="376" y="992" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="599.5643203883494" y="911" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0br9juy_di" bpmnElement="SequenceFlow_0br9juy">
+        <di:waypoint xsi:type="dc:Point" x="643" y="1379" />
+        <di:waypoint xsi:type="dc:Point" x="529" y="1379" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="541" y="1358" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06byir6_di" bpmnElement="SequenceFlow_06byir6">
+        <di:waypoint xsi:type="dc:Point" x="429" y="1379" />
+        <di:waypoint xsi:type="dc:Point" x="326" y="1379" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="332.5" y="1358" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_14ef6wp_di" bpmnElement="SequenceFlow_14ef6wp">
+        <di:waypoint xsi:type="dc:Point" x="1137" y="1214" />
+        <di:waypoint xsi:type="dc:Point" x="639" y="1214" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="874.1140567200987" y="1193" width="29" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1pcl6u1_di" bpmnElement="Task_0zhvu4r_llllll">
+        <dc:Bounds x="539" y="1174" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gxsqsa_di" bpmnElement="SequenceFlow_0gxsqsa">
+        <di:waypoint xsi:type="dc:Point" x="539" y="1214" />
+        <di:waypoint xsi:type="dc:Point" x="176" y="1214" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="312.5" y="1193" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_10aubhh_di" bpmnElement="SequenceFlow_10aubhh">
+        <di:waypoint xsi:type="dc:Point" x="1017" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1239" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1128" y="76" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1m5zb3d_di" bpmnElement="IntermediateThrowEvent_0aggdcl_GoToStartService">
+        <dc:Bounds x="1239" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1213" y="119" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1vjqlwn_di" bpmnElement="StartEvent_0l5bz4h_StartService">
+        <dc:Bounds x="-14" y="266" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-26" y="306" width="60" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zmz5am_di" bpmnElement="SequenceFlow_0zmz5am">
+        <di:waypoint xsi:type="dc:Point" x="22" y="284" />
+        <di:waypoint xsi:type="dc:Point" x="564" y="284" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="248" y="263" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rhn48b_di" bpmnElement="SequenceFlow_1rhn48b">
+        <di:waypoint xsi:type="dc:Point" x="22" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="237" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="237" y="640" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="129.5" y="574" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0jks7by_di" bpmnElement="StartEvent_StartResource">
+        <dc:Bounds x="-14" y="577" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-31" y="617" width="71" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ct6u3o_di" bpmnElement="SequenceFlow_1ct6u3o">
+        <di:waypoint xsi:type="dc:Point" x="1018" y="491" />
+        <di:waypoint xsi:type="dc:Point" x="1085" y="491" />
+        <di:waypoint xsi:type="dc:Point" x="1085" y="491" />
+        <di:waypoint xsi:type="dc:Point" x="1239" y="491" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1100" y="485" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0ys6800_di" bpmnElement="IntermediateThrowEvent_1dwg5lz">
+        <dc:Bounds x="1239" y="473" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1222" y="513" width="71" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rebkae_di" bpmnElement="SequenceFlow_1rebkae">
+        <di:waypoint xsi:type="dc:Point" x="40" y="1630" />
+        <di:waypoint xsi:type="dc:Point" x="148" y="1630" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="49" y="1609" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_05z1jyy_di" bpmnElement="StartEvent_0jhv664">
+        <dc:Bounds x="4" y="1612" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-13" y="1652" width="70" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0x8im5g_di" bpmnElement="EndEvent_0x8im5g">
+        <dc:Bounds x="723" y="1612" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="741" y="1652" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lkpfe2_di" bpmnElement="SequenceFlow_1lkpfe2">
+        <di:waypoint xsi:type="dc:Point" x="639" y="1630" />
+        <di:waypoint xsi:type="dc:Point" x="723" y="1630" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="636" y="1609" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fq4qzy_di" bpmnElement="SequenceFlow_1fq4qzy">
+        <di:waypoint xsi:type="dc:Point" x="237" y="690" />
+        <di:waypoint xsi:type="dc:Point" x="237" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="258" y="794" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="227.12763168720514" y="735.6050882148045" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_11jt9tx_di" bpmnElement="IntermediateThrowEvent_GoToFinishProcess">
+        <dc:Bounds x="258" y="776" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="242" y="816" width="70" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1aszwcv_di" bpmnElement="ScriptTask_1aszwcv_CheckResourceType">
+        <dc:Bounds x="1027" y="625" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wf52w6_di" bpmnElement="SequenceFlow_1wf52w6">
+        <di:waypoint xsi:type="dc:Point" x="1127" y="665" />
+        <di:waypoint xsi:type="dc:Point" x="1240" y="665" />
+        <di:waypoint xsi:type="dc:Point" x="1240" y="1214" />
+        <di:waypoint xsi:type="dc:Point" x="1187" y="1214" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1210" y="933.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0jm9d9b_di" bpmnElement="ScriptTask_0jm9d9b">
+        <dc:Bounds x="-9" y="1174" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yhd9dp_di" bpmnElement="SequenceFlow_1yhd9dp">
+        <di:waypoint xsi:type="dc:Point" x="126" y="1214" />
+        <di:waypoint xsi:type="dc:Point" x="91" y="1214" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="108.5" y="1193" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0uj9myy_di" bpmnElement="SequenceFlow_0uj9myy">
+        <di:waypoint xsi:type="dc:Point" x="41" y="1174" />
+        <di:waypoint xsi:type="dc:Point" x="41" y="985" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="11" y="1073.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0nf1193_di" bpmnElement="IntermediateThrowEvent_0cabwkq">
+        <dc:Bounds x="1239" y="266" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1219" y="306" width="83" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0v3ecwh_di" bpmnElement="StartEvent_1p7w4fj">
+        <dc:Bounds x="-14" y="473" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-38" y="513" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0e8oxe4_di" bpmnElement="SequenceFlow_0e8oxe4">
+        <di:waypoint xsi:type="dc:Point" x="22" y="491" />
+        <di:waypoint xsi:type="dc:Point" x="226" y="491" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="79" y="470" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0pz2s2d_di" bpmnElement="ExclusiveGateway_0pz2s2d" isMarkerVisible="true">
+        <dc:Bounds x="791" y="1354" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="726" y="1408" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vey6x4_di" bpmnElement="SequenceFlow_0vey6x4">
+        <di:waypoint xsi:type="dc:Point" x="791" y="1379" />
+        <di:waypoint xsi:type="dc:Point" x="743" y="1379" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="722" y="1358" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_07pkpa0_di" bpmnElement="SequenceFlow_07pkpa0">
+        <di:waypoint xsi:type="dc:Point" x="881" y="1379" />
+        <di:waypoint xsi:type="dc:Point" x="841" y="1379" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="816" y="1358" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_163tmnq_di" bpmnElement="SequenceFlow_163tmnq">
+        <di:waypoint xsi:type="dc:Point" x="1162" y="1239" />
+        <di:waypoint xsi:type="dc:Point" x="1162" y="1379" />
+        <di:waypoint xsi:type="dc:Point" x="1070" y="1379" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1171" y="1300" width="31" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0k814as_di" bpmnElement="ExclusiveGateway_0k814as" isMarkerVisible="true">
+        <dc:Bounds x="1020" y="1354" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1022" y="1410" width="46" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_01zluif_di" bpmnElement="SequenceFlow_01zluif">
+        <di:waypoint xsi:type="dc:Point" x="1045" y="1354" />
+        <di:waypoint xsi:type="dc:Point" x="1045" y="1295" />
+        <di:waypoint xsi:type="dc:Point" x="816" y="1295" />
+        <di:waypoint xsi:type="dc:Point" x="816" y="1354" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="922" y="1274" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vio1tn_di" bpmnElement="SequenceFlow_1vio1tn">
+        <di:waypoint xsi:type="dc:Point" x="1020" y="1379" />
+        <di:waypoint xsi:type="dc:Point" x="981" y="1379" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1001" y="1402" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0vaaotj_di" bpmnElement="ScriptTask_0vaaotj">
+        <dc:Bounds x="226" y="451" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_1jbqff7_di" bpmnElement="ServiceTask_1jbqff7">
+        <dc:Bounds x="390" y="451" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sata7n_di" bpmnElement="SequenceFlow_1sata7n">
+        <di:waypoint xsi:type="dc:Point" x="326" y="491" />
+        <di:waypoint xsi:type="dc:Point" x="390" y="491" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="313" y="470" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0x0jvs1_di" bpmnElement="SequenceFlow_0x0jvs1">
+        <di:waypoint xsi:type="dc:Point" x="490" y="491" />
+        <di:waypoint xsi:type="dc:Point" x="564" y="491" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="482" y="470" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1wk7zcu_di" bpmnElement="ScriptTask_1wk7zcu">
+        <dc:Bounds x="148" y="1590" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_1a6cmdu_di" bpmnElement="ServiceTask_1a6cmdu">
+        <dc:Bounds x="379" y="1590" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gr3l25_di" bpmnElement="SequenceFlow_0gr3l25">
+        <di:waypoint xsi:type="dc:Point" x="248" y="1630" />
+        <di:waypoint xsi:type="dc:Point" x="379" y="1630" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="313.5" y="1609" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0cnuo36_di" bpmnElement="SequenceFlow_0cnuo36">
+        <di:waypoint xsi:type="dc:Point" x="479" y="1630" />
+        <di:waypoint xsi:type="dc:Point" x="539" y="1630" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="509" y="1609" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1vo6y1t_di" bpmnElement="ScriptTask_1vo6y1t">
+        <dc:Bounds x="-9" y="905" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_037rvnb_di" bpmnElement="SequenceFlow_037rvnb">
+        <di:waypoint xsi:type="dc:Point" x="41" y="905" />
+        <di:waypoint xsi:type="dc:Point" x="41" y="844" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="56" y="868.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_13w9clz_di" bpmnElement="ServiceTask_13w9clz">
+        <dc:Bounds x="-9" y="764" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mbrbsc_di" bpmnElement="SequenceFlow_1mbrbsc">
+        <di:waypoint xsi:type="dc:Point" x="41" y="764" />
+        <di:waypoint xsi:type="dc:Point" x="41" y="665" />
+        <di:waypoint xsi:type="dc:Point" x="212" y="665" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="56" y="708.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1pwo0jp_di" bpmnElement="ScriptTask_1pwo0jp">
+        <dc:Bounds x="564" y="451" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0aylb6e_di" bpmnElement="SequenceFlow_0aylb6e">
+        <di:waypoint xsi:type="dc:Point" x="664" y="491" />
+        <di:waypoint xsi:type="dc:Point" x="741" y="491" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="702.5" y="470" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_1dqzdko_di" bpmnElement="ServiceTask_1dqzdko">
+        <dc:Bounds x="741" y="451" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1r1hl23_di" bpmnElement="SequenceFlow_1r1hl23">
+        <di:waypoint xsi:type="dc:Point" x="841" y="491" />
+        <di:waypoint xsi:type="dc:Point" x="917" y="491" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="879" y="470" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_0uiibxn_di" bpmnElement="ServiceTask_0uiibxn">
+        <dc:Bounds x="750" y="625" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_10jgs3j_di" bpmnElement="SequenceFlow_10jgs3j">
+        <di:waypoint xsi:type="dc:Point" x="850" y="665" />
+        <di:waypoint xsi:type="dc:Point" x="1027" y="665" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="938.5" y="644" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1oc0qjo_di" bpmnElement="ScriptTask_1oc0qjo">
+        <dc:Bounds x="580" y="625" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_01oo8ar_di" bpmnElement="SequenceFlow_01oo8ar">
+        <di:waypoint xsi:type="dc:Point" x="680" y="665" />
+        <di:waypoint xsi:type="dc:Point" x="750" y="665" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="715" y="644" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateNetworkInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateNetworkInstance.bpmn
new file mode 100644
index 0000000..12dbfe6
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateNetworkInstance.bpmn
@@ -0,0 +1,1363 @@
+<?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="DoCreateNetworkInstance" name="DoCreateNetworkInstance" isExecutable="true">
+    <bpmn2:startEvent id="createNetwork_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1n61wit</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:endEvent id="aai_Error_EndEvent" name="AAI Name Error">
+      <bpmn2:incoming>isReturnCode404_No_SequenceFlow</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_53" errorRef="Error_2" />
+    </bpmn2:endEvent>
+    <bpmn2:inclusiveGateway id="InclusiveGateway">
+      <bpmn2:incoming>isNetworkActiveNo_SequenceFlow</bpmn2:incoming>
+      <bpmn2:incoming>isReturnCode404_Yes_SequenceFlow</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing>
+    </bpmn2:inclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_21" sourceRef="InclusiveGateway" targetRef="callRESTQueryCloudRegion_ScriptTask" />
+    <bpmn2:scriptTask id="callRESTQueryCloudRegion_ScriptTask" name="Call REST Query Cloud Region " scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming>
+      <bpmn2:incoming>isNameSentNo_SequenceFlow</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_32</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.callRESTQueryAAICloudRegion(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="callRESTQueryCloudRegion_ScriptTask" targetRef="isSdncRpc1_ExclusiveGateway1" />
+    <bpmn2:scriptTask id="prepareSDNCTopoRequest_ScriptTask" name="Prepare Assign SDNC Request" scriptFormat="groovy">
+      <bpmn2:incoming>isSdncRpc1No_SequenceFlow1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.prepareSDNCRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="prepareSDNCTopoRequest_ScriptTask" targetRef="callAssignSDNCAdapter_CallActivity" />
+    <bpmn2:scriptTask id="validateSDNCResponse_ScriptTask" name="Validate SDNC Assign Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0d93bqw</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.validateSDNCResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="isSdncTopoOk_ExclusiveGateway" name="Is SDNC Ok?" default="sdncTopoNo_SequenceFlow">
+      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      <bpmn2:outgoing>sdncTopoNo_SequenceFlow</bpmn2:outgoing>
+      <bpmn2:outgoing>sdncTopoYes_SequenceFlow</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="sdncTopoNo_SequenceFlow" name="No" sourceRef="isSdncTopoOk_ExclusiveGateway" targetRef="sndcError_EndEvent" />
+    <bpmn2:sequenceFlow id="sdncTopoYes_SequenceFlow" name="Yes" sourceRef="isSdncTopoOk_ExclusiveGateway" targetRef="callRESTQueryNetworkId_ScriptTask">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_sdncResponseSuccess" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="validateSDNCResponse_ScriptTask" targetRef="isSdncTopoOk_ExclusiveGateway" />
+    <bpmn2:boundaryEvent id="BoundaryEvent_4" name="" attachedToRef="validateSDNCResponse_ScriptTask">
+      <bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_84" errorRef="Error_2" />
+    </bpmn2:boundaryEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_34" name="" sourceRef="BoundaryEvent_4" targetRef="sndcError_EndEvent" />
+    <bpmn2:endEvent id="sndcError_EndEvent" name="SNDC Error">
+      <bpmn2:incoming>sdncTopoNo_SequenceFlow</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_34</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_57" errorRef="Error_2" />
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="callRESTQueryNetworkId_ScriptTask" name="Call REST Query Network Id In AAI" scriptFormat="groovy">
+      <bpmn2:incoming>sdncTopoYes_SequenceFlow</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.callRESTQueryAAINetworkId(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="callRESTQueryNetworkId_ScriptTask" targetRef="callRESTQueryVpnBinding_ScriptTask" />
+    <bpmn2:callActivity id="callAssignSDNCAdapter_CallActivity" name="Call SDNC Assign Adapter V1 " calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="CRENWKI_assignSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:out source="sdncAdapterResponse" target="CRENWKI_assignSDNCResponse" />
+        <camunda:out source="SDNCA_ResponseCode" target="CRENWKI_sdncReturnCode" />
+        <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="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="callAssignSDNCAdapter_CallActivity" targetRef="validateSDNCResponse_ScriptTask" />
+    <bpmn2:scriptTask id="validateCreatePONetwork_ScriptTask" name="Validate Create PO Network" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_59</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.validateCreateNetworkResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="isNetworkActive_ExclusiveGateway" name="Is Network Active?" default="isNetworkActiveNo_SequenceFlow">
+      <bpmn2:incoming>isAAIQueryNameYes_SequenceFlow</bpmn2:incoming>
+      <bpmn2:outgoing>isNetworkActiveYes_SequenceFlow</bpmn2:outgoing>
+      <bpmn2:outgoing>isNetworkActiveNo_SequenceFlow</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="isNetworkActiveYes_SequenceFlow" name="Yes" sourceRef="isNetworkActive_ExclusiveGateway" targetRef="ScriptTask_0p3v749">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_orchestrationStatus") == "ACTIVE"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="isNetworkActiveNo_SequenceFlow" name="No" sourceRef="isNetworkActive_ExclusiveGateway" targetRef="InclusiveGateway" />
+    <bpmn2:exclusiveGateway id="isAAIQueryNameOk_ExclusiveGateway" name="Is Query Name&#10; Ok?&#10;" default="isAAIQueryNameNo_SequenceFlow">
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:outgoing>isAAIQueryNameNo_SequenceFlow</bpmn2:outgoing>
+      <bpmn2:outgoing>isAAIQueryNameYes_SequenceFlow</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="isAAIQueryNameNo_SequenceFlow" name="No" sourceRef="isAAIQueryNameOk_ExclusiveGateway" targetRef="isReturnCode404_ExclusiveGateway" />
+    <bpmn2:sequenceFlow id="isAAIQueryNameYes_SequenceFlow" name="Yes" sourceRef="isAAIQueryNameOk_ExclusiveGateway" targetRef="isNetworkActive_ExclusiveGateway">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_isAAIqueryNameGood") == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="isReturnCode404_ExclusiveGateway" name="Is Code 404?" default="isReturnCode404_No_SequenceFlow">
+      <bpmn2:incoming>isAAIQueryNameNo_SequenceFlow</bpmn2:incoming>
+      <bpmn2:outgoing>isReturnCode404_No_SequenceFlow</bpmn2:outgoing>
+      <bpmn2:outgoing>isReturnCode404_Yes_SequenceFlow</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="isReturnCode404_No_SequenceFlow" name="No" sourceRef="isReturnCode404_ExclusiveGateway" targetRef="aai_Error_EndEvent" />
+    <bpmn2:sequenceFlow id="isReturnCode404_Yes_SequenceFlow" name="Yes" sourceRef="isReturnCode404_ExclusiveGateway" targetRef="InclusiveGateway">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_aaiNameReturnCode" ) == "404"}
+
+]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:subProcess id="subProcessException_SubProcess" name="Subprocess For Prepare Rollback Data" triggeredByEvent="true">
+      <bpmn2:startEvent id="subProcessStart_StartEvent" name="Fault Start">
+        <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_2" />
+      </bpmn2:startEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="subProcessStart_StartEvent" targetRef="ScriptTask_0j3058g" />
+      <bpmn2:exclusiveGateway id="isPONR_ExclusiveGateway" name="isPONR?" default="isPONR_No_SequenceFlow">
+        <bpmn2:incoming>isRollbackOn_SequenceFlow_Yes</bpmn2:incoming>
+        <bpmn2:outgoing>isPONR_Yes_SequenceFlow</bpmn2:outgoing>
+        <bpmn2:outgoing>isPONR_No_SequenceFlow</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="isPONR_Yes_SequenceFlow" name="Yes" sourceRef="isPONR_ExclusiveGateway" targetRef="ExclusiveGateway_1umhuft">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_isPONR") == true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="isPONR_No_SequenceFlow" name="No" sourceRef="isPONR_ExclusiveGateway" targetRef="isSDNCActivate_ExclusiveGateway" />
+      <bpmn2:exclusiveGateway id="sdncOk_ExclusiveGateway" name="is SDNC Topo Ok?" default="sdncOk_No_ExclusiveGateway">
+        <bpmn2:incoming>SequenceFlow_0k7y7b5</bpmn2:incoming>
+        <bpmn2:outgoing>sdncOk_Yeso_ExclusiveGateway</bpmn2:outgoing>
+        <bpmn2:outgoing>sdncOk_No_ExclusiveGateway</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="sdncOk_Yeso_ExclusiveGateway" name="Yes" sourceRef="sdncOk_ExclusiveGateway" targetRef="isSdncRpc4_ExclusiveGateway4">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_isSdncRollbackNeeded" ) == true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="sdncOk_No_ExclusiveGateway" name="No" sourceRef="sdncOk_ExclusiveGateway" targetRef="ExclusiveGateway_1qb2vwe" />
+      <bpmn2:scriptTask id="prepareSDNCRollbackRequest_ScriptTask" name="Prepare SDNCRollback Request" scriptFormat="groovy">
+        <bpmn2:incoming>isSdncRpc4No_SequenceFlow4</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0lndbvr</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.prepareSDNCRollbackRequest(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:exclusiveGateway id="isSDNCActivate_ExclusiveGateway" name="is SDNC Activate Ok?" default="SequenceFlow_12tlymf">
+        <bpmn2:incoming>isPONR_No_SequenceFlow</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0cly7z2</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_12tlymf</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0cly7z2" name="Yes" sourceRef="isSDNCActivate_ExclusiveGateway" targetRef="Task_1imzwi3">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_isSdncActivateRollbackNeeded" ) == true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_12tlymf" name="No" sourceRef="isSDNCActivate_ExclusiveGateway" targetRef="ExclusiveGateway_1bk0tqd" />
+      <bpmn2:exclusiveGateway id="isSdncRpc4_ExclusiveGateway4" name="is not &#39;1610&#39; SNDC Call?" default="isSdncRpc4No_SequenceFlow4">
+        <bpmn2:incoming>sdncOk_Yeso_ExclusiveGateway</bpmn2:incoming>
+        <bpmn2:outgoing>isSdncRpc4Yes_SequenceFlow4</bpmn2:outgoing>
+        <bpmn2:outgoing>isSdncRpc4No_SequenceFlow4</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="isSdncRpc4Yes_SequenceFlow4" name="Yes" sourceRef="isSdncRpc4_ExclusiveGateway4" targetRef="Task_0q6pzpn">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="isSdncRpc4No_SequenceFlow4" name="No" sourceRef="isSdncRpc4_ExclusiveGateway4" targetRef="prepareSDNCRollbackRequest_ScriptTask" />
+      <bpmn2:scriptTask id="Task_0q6pzpn" name="Prepare RSRC SDNCRollback Request" scriptFormat="groovy">
+        <bpmn2:incoming>isSdncRpc4Yes_SequenceFlow4</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0bwpkkb</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.prepareRpcSDNCRollbackRequest(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:endEvent id="EndEvent_1kpt4kc">
+        <bpmn2:incoming>SequenceFlow_1qwubew</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_0myjg9k" name="Prepare RollbackData" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_15sffxc</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_096tad6</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.prepareRollbackData(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_0b8j5rw" sourceRef="Task_1imzwi3" targetRef="ExclusiveGateway_1bk0tqd" />
+      <bpmn2:scriptTask id="Task_1imzwi3" name="Prepare RSRC SDNC Activate Rollback Request" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0cly7z2</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0b8j5rw</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.prepareRpcSDNCActivateRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:callActivity id="CallActivity_1u07hp7" name="DoCreate&#10;NetworkInstanceRollback&#10;" calledElement="DoCreateNetworkInstanceRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+          <camunda:out source="wasDeleted" target="wasDeleted" />
+          <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+          <camunda:out source="rolledBack" target="rolledBack" />
+          <camunda:out source="workflowException" target="workflowException" />
+          <camunda:in source="rollbackData" target="rollbackData" />
+          <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="WorkflowException" target="WorkflowException" />
+          <camunda:in source="sdncVersion" target="sdncVersion" />
+          <camunda:in source="SavedWorkflowException1" target="SavedWorkflowException1" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_096tad6</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0vzsyrd</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_0vzsyrd" sourceRef="CallActivity_1u07hp7" targetRef="ScriptTask_0w2ekuz" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0bwpkkb" sourceRef="Task_0q6pzpn" targetRef="ExclusiveGateway_1qb2vwe" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0lndbvr" sourceRef="prepareSDNCRollbackRequest_ScriptTask" targetRef="ExclusiveGateway_1qb2vwe" />
+      <bpmn2:sequenceFlow id="SequenceFlow_096tad6" sourceRef="ScriptTask_0myjg9k" targetRef="CallActivity_1u07hp7" />
+      <bpmn2:scriptTask id="ScriptTask_0w2ekuz" name="PostProcess Response" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0vzsyrd</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_17nx822</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1qwubew</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.postProcessResponse(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1qwubew" sourceRef="ScriptTask_0w2ekuz" targetRef="EndEvent_1kpt4kc" />
+      <bpmn2:exclusiveGateway id="isRollbackOn_ExclusiveGateway" name="Is Rollback On?" default="isRollbackOn_SequenceFlow_No">
+        <bpmn2:incoming>SequenceFlow_10ttvwn</bpmn2:incoming>
+        <bpmn2:outgoing>isRollbackOn_SequenceFlow_Yes</bpmn2:outgoing>
+        <bpmn2:outgoing>isRollbackOn_SequenceFlow_No</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="isRollbackOn_SequenceFlow_Yes" name="Yes" sourceRef="isRollbackOn_ExclusiveGateway" targetRef="isPONR_ExclusiveGateway">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_rollbackEnabled") == true && execution.getVariable("CRENWKI_isSdncRollbackNeeded") == true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="isRollbackOn_SequenceFlow_No" name="No" sourceRef="isRollbackOn_ExclusiveGateway" targetRef="ExclusiveGateway_1umhuft" />
+      <bpmn2:inclusiveGateway id="ExclusiveGateway_1qb2vwe">
+        <bpmn2:incoming>SequenceFlow_0lndbvr</bpmn2:incoming>
+        <bpmn2:incoming>sdncOk_No_ExclusiveGateway</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_0bwpkkb</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_15sffxc</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_15sffxc" sourceRef="ExclusiveGateway_1qb2vwe" targetRef="ScriptTask_0myjg9k" />
+      <bpmn2:inclusiveGateway id="ExclusiveGateway_1bk0tqd">
+        <bpmn2:incoming>SequenceFlow_0b8j5rw</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_12tlymf</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0k7y7b5</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0k7y7b5" sourceRef="ExclusiveGateway_1bk0tqd" targetRef="sdncOk_ExclusiveGateway" />
+      <bpmn2:inclusiveGateway id="ExclusiveGateway_1umhuft">
+        <bpmn2:incoming>isPONR_Yes_SequenceFlow</bpmn2:incoming>
+        <bpmn2:incoming>isRollbackOn_SequenceFlow_No</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_17nx822</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_17nx822" sourceRef="ExclusiveGateway_1umhuft" targetRef="ScriptTask_0w2ekuz" />
+      <bpmn2:scriptTask id="ScriptTask_0j3058g" name="Set Exception Flag" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_10ttvwn</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.setExceptionFlag(execution)
+]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_10ttvwn" sourceRef="ScriptTask_0j3058g" targetRef="isRollbackOn_ExclusiveGateway" />
+      <bpmn2:textAnnotation id="TextAnnotation_1py1p84">      <bpmn2:text><![CDATA[  
+Include ONLY inputs/varrables:  
+rollbackData, as Map
+-rollbackSDNCRequest
+-rollbackActivateSDNCRequest
+-rollbackNetworkRequest
+WorkflowException
+ ]]></bpmn2:text>
+</bpmn2:textAnnotation>
+      <bpmn2:association id="Association_0nketgd" sourceRef="CallActivity_1u07hp7" targetRef="TextAnnotation_1py1p84" />
+      <bpmn2:textAnnotation id="TextAnnotation_0wjpv6r">      <bpmn2:text>PO Network Rollback is created in validation.</bpmn2:text>
+</bpmn2:textAnnotation>
+      <bpmn2:association id="Association_0eolbkz" sourceRef="ExclusiveGateway_1bk0tqd" targetRef="TextAnnotation_0wjpv6r" />
+    </bpmn2:subProcess>
+    <bpmn2:serviceTask id="callCreateNetwork_ServiceTask" name="Call Create Network">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="payload">${CRENWKI_createNetworkRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)}
+]]></camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="Authorization">#{BasicAuthHeaderValuePO}</camunda:entry>
+                <camunda:entry key="content-type">application/xml</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CRENWKI_networkReturnCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CRENWKI_createNetworkResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_61</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_59</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_59" name="" sourceRef="callCreateNetwork_ServiceTask" targetRef="validateCreatePONetwork_ScriptTask" />
+    <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="validateCreatePONetwork_ScriptTask" targetRef="callRESTReQueryNetworkID_ScriptTask" />
+    <bpmn2:scriptTask id="callRESTReQueryNetworkID_ScriptTask" name="Call REST ReQuery Network Id in AAI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.callRESTReQueryAAINetworkId(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="callRESTReQueryNetworkID_ScriptTask" targetRef="callRESTUpdateContrailNetwork_ScriptTask" />
+    <bpmn2:scriptTask id="callRESTUpdateContrailNetwork_ScriptTask" name="Call REST Update Contrail Network in AAI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ipz2ze</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.callRESTUpdateContrailAAINetwork(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <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.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.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="callGetServiceInstance" name="Get&#10;Service&#10;Instance" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="CRENWKI_serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:out source="GENGS_serviceInstance" target="CRENWKI_serviceInstance" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGSI_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGSI_SuccessIndicator" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGSI_siResourceLink" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="GENGS_type" target="GENGS_type" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0ftylq3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="callAAIQuery_scriptTask" name="Call REST Query Network Name In AAI" scriptFormat="groovy">
+      <bpmn2:incoming>isNameSentYes_SequenceFlow</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.callRESTQueryAAINetworkName(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="callAAIQuery_scriptTask" targetRef="isAAIQueryNameOk_ExclusiveGateway" />
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="callGetServiceInstance" targetRef="siFoundCheck" />
+    <bpmn2:exclusiveGateway id="siFoundCheck" name="Service Instance Found?" default="siFoundNo">
+      <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
+      <bpmn2:outgoing>siFoundYes</bpmn2:outgoing>
+      <bpmn2:outgoing>siFoundNo</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="siFoundYes" name="Yes" sourceRef="siFoundCheck" targetRef="isNameSent_ExclusiveGateway">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("GENGSI_FoundIndicator" ) == true && execution.getVariable("GENGSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="siFoundNo" name="No" sourceRef="siFoundCheck" targetRef="workflowExceptionSINotFound" />
+    <bpmn2:scriptTask id="workflowExceptionSINotFound" name="Create Workflow Exception" scriptFormat="groovy">
+      <bpmn2:incoming>siFoundNo</bpmn2:incoming>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.buildAndThrowWorkflowException(execution, 404, "Service Instance Not Found")
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="callRESTQueryVpnBinding_ScriptTask" name="Call REST Query Vpn Binding in AAI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.callRESTQueryAAINetworkVpnBinding(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="callRESTQueryVpnBinding_ScriptTask" targetRef="callRESTQueryNetworkPolicy_ScriptTask" />
+    <bpmn2:scriptTask id="callRESTQueryNetworkPolicy_ScriptTask" name="Call REST Query Network Policy in AAI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_38</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.callRESTQueryAAINetworkPolicy(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_38" name="" sourceRef="callRESTQueryNetworkPolicy_ScriptTask" targetRef="callRESTQueryNetworkTableRef_ScriptTask" />
+    <bpmn2:scriptTask id="prepareNetworkRequest_ScriptTask" name="Prepare Create Network Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_20</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_61</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.prepareCreateNetworkRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_61" name="" sourceRef="prepareNetworkRequest_ScriptTask" targetRef="callCreateNetwork_ServiceTask" />
+    <bpmn2:scriptTask id="callRESTQueryNetworkTableRef_ScriptTask" name="Call REST Query Network TableRef in AAI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_38</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_20</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.callRESTQueryAAINetworkTableRef(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_20" name="" sourceRef="callRESTQueryNetworkTableRef_ScriptTask" targetRef="prepareNetworkRequest_ScriptTask" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1n61wit" sourceRef="createNetwork_startEvent" targetRef="ScriptTask_preprocess" />
+    <bpmn2:scriptTask id="ScriptTask_preprocess" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1n61wit</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ftylq3</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ftylq3" sourceRef="ScriptTask_preprocess" targetRef="callGetServiceInstance" />
+    <bpmn2:exclusiveGateway id="isNameSent_ExclusiveGateway" name="is Network Name &#10;Sent?&#10;" default="isNameSentNo_SequenceFlow">
+      <bpmn2:incoming>siFoundYes</bpmn2:incoming>
+      <bpmn2:outgoing>isNameSentYes_SequenceFlow</bpmn2:outgoing>
+      <bpmn2:outgoing>isNameSentNo_SequenceFlow</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="isNameSentYes_SequenceFlow" name="Yes" sourceRef="isNameSent_ExclusiveGateway" targetRef="callAAIQuery_scriptTask">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_networkName") != ""}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="isNameSentNo_SequenceFlow" name="No" sourceRef="isNameSent_ExclusiveGateway" targetRef="callRESTQueryCloudRegion_ScriptTask" />
+    <bpmn2:callActivity id="Task_1ipbwbj" name="Call SDNC RSRC Activate&#10; Adapter V1&#10;" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="CRENWKI_activateSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="sdncAdapterResponse" target="CRENWKI_activateSDNCResponse" />
+        <camunda:out source="SDNCA_ResponseCode" target="CRENWKI_sdncActivateReturnCode" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_13deudk</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_08qibb9</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="Task_1rd6dg6" name="Prepare SDNC RSRC Activate Request" scriptFormat="groovy">
+      <bpmn2:incoming>isSdncRpc2Yes_SequenceFlow2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13deudk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.prepareRpcSDNCActivateRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0n0ptg6" name="is SDNC PRC&#10;Activate Ok?&#10;" default="SequenceFlow_18ybfu5">
+      <bpmn2:incoming>SequenceFlow_1t03rs2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1jia57e</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_18ybfu5</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_13deudk" sourceRef="Task_1rd6dg6" targetRef="Task_1ipbwbj" />
+    <bpmn2:sequenceFlow id="SequenceFlow_08qibb9" sourceRef="Task_1ipbwbj" targetRef="validateSDNCActivate_Task" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1t03rs2" sourceRef="validateSDNCActivate_Task" targetRef="ExclusiveGateway_0n0ptg6" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1jia57e" name="Yes" sourceRef="ExclusiveGateway_0n0ptg6" targetRef="Task_0zzobg6">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKI_sdncResponseSuccess" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_18ybfu5" name="No" sourceRef="ExclusiveGateway_0n0ptg6" targetRef="EndEvent_13v46cq" />
+    <bpmn2:scriptTask id="validateSDNCActivate_Task" name="Validate SDNCRSRC Activate&#10;Response&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_08qibb9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1t03rs2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.validateRpcSDNCActivateResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:boundaryEvent id="BoundaryEvent_0vb26bm" attachedToRef="validateSDNCActivate_Task">
+      <bpmn2:outgoing>SequenceFlow_0s51ns0</bpmn2:outgoing>
+      <bpmn2:errorEventDefinition errorRef="Error_2" />
+    </bpmn2:boundaryEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0s51ns0" sourceRef="BoundaryEvent_0vb26bm" targetRef="EndEvent_13v46cq" />
+    <bpmn2:endEvent id="EndEvent_13v46cq" name="SNDC Activate &#10;Error&#10;">
+      <bpmn2:incoming>SequenceFlow_18ybfu5</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0s51ns0</bpmn2:incoming>
+      <bpmn2:errorEventDefinition errorRef="Error_2" />
+    </bpmn2:endEvent>
+    <bpmn2:exclusiveGateway id="isSdncRpc1_ExclusiveGateway1" name="is not &#39;1610&#39; SNDC Call?" default="isSdncRpc1No_SequenceFlow1">
+      <bpmn2:incoming>SequenceFlow_32</bpmn2:incoming>
+      <bpmn2:outgoing>isSdncRpc1No_SequenceFlow1</bpmn2:outgoing>
+      <bpmn2:outgoing>isSdncRpc1Yes_SequenceFlow1</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="isSdncRpc1No_SequenceFlow1" name="No" sourceRef="isSdncRpc1_ExclusiveGateway1" targetRef="prepareSDNCTopoRequest_ScriptTask" />
+    <bpmn2:sequenceFlow id="isSdncRpc1Yes_SequenceFlow1" name="Yes" sourceRef="isSdncRpc1_ExclusiveGateway1" targetRef="Task_10lubzj">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:callActivity id="Task_0pbtywn" name="Call SDNC RSRC Assign Adapter V1 " calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="CRENWKI_assignSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="sdncAdapterResponse" target="CRENWKI_assignSDNCResponse" />
+        <camunda:out source="SDNCA_ResponseCode" target="CRENWKI_sdncReturnCode" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0j8bxnb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0d93bqw</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0j8bxnb" sourceRef="Task_10lubzj" targetRef="Task_0pbtywn" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0d93bqw" sourceRef="Task_0pbtywn" targetRef="validateSDNCResponse_ScriptTask" />
+    <bpmn2:exclusiveGateway id="isSdncRpc2_ExclusiveGateway2" name="is  not &#39;1610&#39; SNDC Call?" default="isSdncRpc2No_SequenceFlow2">
+      <bpmn2:incoming>SequenceFlow_1ipz2ze</bpmn2:incoming>
+      <bpmn2:outgoing>isSdncRpc2Yes_SequenceFlow2</bpmn2:outgoing>
+      <bpmn2:outgoing>isSdncRpc2No_SequenceFlow2</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="isSdncRpc2Yes_SequenceFlow2" name="Yes" sourceRef="isSdncRpc2_ExclusiveGateway2" targetRef="Task_1rd6dg6">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="isSdncRpc2No_SequenceFlow2" name="No" sourceRef="isSdncRpc2_ExclusiveGateway2" targetRef="Task_0zzobg6" />
+    <bpmn2:scriptTask id="Task_10lubzj" name="Prepare Assign SDNC RPC Request" scriptFormat="groovy">
+      <bpmn2:incoming>isSdncRpc1Yes_SequenceFlow1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0j8bxnb</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.prepareRpcSDNCRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_1te02c4">
+      <bpmn2:incoming>SequenceFlow_1s8b1m1</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:endEvent id="EndEvent_0ti2ctu" name="Silent Success">
+      <bpmn2:incoming>SequenceFlow_18ylufb</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1s8b1m1" sourceRef="Task_0zzobg6" targetRef="EndEvent_1te02c4" />
+    <bpmn2:scriptTask id="Task_0zzobg6" name="PostProcess Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1jia57e</bpmn2:incoming>
+      <bpmn2:incoming>isSdncRpc2No_SequenceFlow2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1s8b1m1</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.postProcessResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ipz2ze" sourceRef="callRESTUpdateContrailNetwork_ScriptTask" targetRef="isSdncRpc2_ExclusiveGateway2" />
+    <bpmn2:scriptTask id="ScriptTask_0p3v749" name="Post Process Response" scriptFormat="groovy">
+      <bpmn2:incoming>isNetworkActiveYes_SequenceFlow</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_18ylufb</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstance = new DoCreateNetworkInstance()
+DoCreateNetworkInstance.postProcessResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_18ylufb" sourceRef="ScriptTask_0p3v749" targetRef="EndEvent_0ti2ctu" />
+    <bpmn2:textAnnotation id="TextAnnotation_1orb6o6">    <bpmn2:text><![CDATA[if '200', Prepare PO Network Rollback]]></bpmn2:text>
+</bpmn2:textAnnotation>
+    <bpmn2:association id="Association_0c315jr" sourceRef="validateCreatePONetwork_ScriptTask" targetRef="TextAnnotation_1orb6o6" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateNetworkInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createNetwork_startEvent">
+        <dc:Bounds x="397" y="177" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="390" y="218" width="49" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_62" bpmnElement="callAAIQuery_scriptTask">
+        <dc:Bounds x="926" y="-31" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_62" bpmnElement="isAAIQueryNameOk_ExclusiveGateway" isMarkerVisible="true">
+        <dc:Bounds x="1098" y="-16" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1085" y="-56" width="75" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_62" targetElement="_BPMNShape_ExclusiveGateway_62">
+        <di:waypoint xsi:type="dc:Point" x="1026" y="8" />
+        <di:waypoint xsi:type="dc:Point" x="1098" y="9" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1062" y="-6.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_63" bpmnElement="validateCreatePONetwork_ScriptTask">
+        <dc:Bounds x="1457" y="1258" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="isAAIQueryNameNo_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_62" targetElement="_BPMNShape_ExclusiveGateway_64">
+        <di:waypoint xsi:type="dc:Point" x="1123" y="34" />
+        <di:waypoint xsi:type="dc:Point" x="1123" y="91" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1131" y="39.0514827586207" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="isAAIQueryNameYes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_62" targetElement="_BPMNShape_ExclusiveGateway_73">
+        <di:waypoint xsi:type="dc:Point" x="1148" y="9" />
+        <di:waypoint xsi:type="dc:Point" x="1186" y="9" />
+        <di:waypoint xsi:type="dc:Point" x="1186" y="9" />
+        <di:waypoint xsi:type="dc:Point" x="1224" y="9" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1151" y="14.164179104477611" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_64" bpmnElement="isReturnCode404_ExclusiveGateway" isMarkerVisible="true">
+        <dc:Bounds x="1098" y="91" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1026" y="110" width="65" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="isReturnCode404_No_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_64" targetElement="_BPMNShape_EndEvent_118">
+        <di:waypoint xsi:type="dc:Point" x="1123" y="141" />
+        <di:waypoint xsi:type="dc:Point" x="1123" y="187" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1132" y="138.4109225063519" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="isReturnCode404_Yes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_64" targetElement="_BPMNShape_InclusiveGateway_4">
+        <di:waypoint xsi:type="dc:Point" x="1148" y="116" />
+        <di:waypoint xsi:type="dc:Point" x="1186" y="116" />
+        <di:waypoint xsi:type="dc:Point" x="1186" y="116" />
+        <di:waypoint xsi:type="dc:Point" x="1224" y="116" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1151" y="118.55844155844156" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_118" bpmnElement="aai_Error_EndEvent">
+        <dc:Bounds x="1105" y="187" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1085" y="228" width="77" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_83" bpmnElement="callCreateNetwork_ServiceTask">
+        <dc:Bounds x="1454" y="1135" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_67" bpmnElement="prepareSDNCTopoRequest_ScriptTask">
+        <dc:Bounds x="1590" y="155" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_16" bpmnElement="subProcessException_SubProcess" isExpanded="true">
+        <dc:Bounds x="31" y="608" width="1266" height="686" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="subProcessStart_StartEvent">
+        <dc:Bounds x="107" y="1166" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="101" y="1207" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_67" bpmnElement="isSdncTopoOk_ExclusiveGateway" isMarkerVisible="true">
+        <dc:Bounds x="1615" y="520" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1606" y="580" width="67" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_26" bpmnElement="sdncTopoNo_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_67" targetElement="_BPMNShape_EndEvent_124">
+        <di:waypoint xsi:type="dc:Point" x="1665" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="1739" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1670" y="545.8651480742376" width="14" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="sdncTopoYes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_67" targetElement="_BPMNShape_ScriptTask_133">
+        <di:waypoint xsi:type="dc:Point" x="1615" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="1554" y="546" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1587" y="549.9992641545633" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_124" bpmnElement="sndcError_EndEvent">
+        <dc:Bounds x="1739" y="527" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1727" y="576" width="59" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_19" bpmnElement="callAssignSDNCAdapter_CallActivity">
+        <dc:Bounds x="1590" y="276" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_67" targetElement="_BPMNShape_CallActivity_19">
+        <di:waypoint xsi:type="dc:Point" x="1640" y="235" />
+        <di:waypoint xsi:type="dc:Point" x="1640" y="276" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1655" y="255.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_CallActivity_19" targetElement="_BPMNShape_ScriptTask_131">
+        <di:waypoint xsi:type="dc:Point" x="1640" y="356" />
+        <di:waypoint xsi:type="dc:Point" x="1640" y="395" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1655" y="375.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_35" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_StartEvent_50">
+        <di:waypoint xsi:type="dc:Point" x="143" y="1184" />
+        <di:waypoint xsi:type="dc:Point" x="170" y="1184" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="157" y="1169" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_131" bpmnElement="validateSDNCResponse_ScriptTask">
+        <dc:Bounds x="1590" y="395" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_131" targetElement="_BPMNShape_ExclusiveGateway_67">
+        <di:waypoint xsi:type="dc:Point" x="1640" y="475" />
+        <di:waypoint xsi:type="dc:Point" x="1640" y="498" />
+        <di:waypoint xsi:type="dc:Point" x="1640" y="498" />
+        <di:waypoint xsi:type="dc:Point" x="1640" y="520" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1655" y="498" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_73" bpmnElement="isNetworkActive_ExclusiveGateway" isMarkerVisible="true">
+        <dc:Bounds x="1224" y="-16" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1221" y="-57" width="56" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_39" bpmnElement="isNetworkActiveYes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_73">
+        <di:waypoint xsi:type="dc:Point" x="1274" y="9" />
+        <di:waypoint xsi:type="dc:Point" x="1335" y="9" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1275" y="14.380425096632202" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_44" bpmnElement="isNetworkActiveNo_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_73" targetElement="_BPMNShape_InclusiveGateway_4">
+        <di:waypoint xsi:type="dc:Point" x="1249" y="34" />
+        <di:waypoint xsi:type="dc:Point" x="1249" y="91" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1258" y="37.520779498373976" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_45" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_InclusiveGateway_4" targetElement="_BPMNShape_ScriptTask_245">
+        <di:waypoint xsi:type="dc:Point" x="1249" y="141" />
+        <di:waypoint xsi:type="dc:Point" x="1249" y="276" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1264" y="208.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_InclusiveGateway_4" bpmnElement="InclusiveGateway">
+        <dc:Bounds x="1224" y="91" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1306" y="86" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="callRESTQueryNetworkId_ScriptTask">
+        <dc:Bounds x="1454" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_134" bpmnElement="callRESTReQueryNetworkID_ScriptTask">
+        <dc:Bounds x="1454" y="1392" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_135" bpmnElement="callRESTUpdateContrailNetwork_ScriptTask">
+        <dc:Bounds x="1454" y="1538" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_54" bpmnElement="SequenceFlow_35" sourceElement="_BPMNShape_ScriptTask_134" targetElement="_BPMNShape_ScriptTask_135">
+        <di:waypoint xsi:type="dc:Point" x="1504" y="1472" />
+        <di:waypoint xsi:type="dc:Point" x="1504" y="1538" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1519" y="1505" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_156" bpmnElement="callRESTQueryVpnBinding_ScriptTask">
+        <dc:Bounds x="1454" y="627" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ScriptTask_156" targetElement="_BPMNShape_ScriptTask_215">
+        <di:waypoint xsi:type="dc:Point" x="1504" y="707" />
+        <di:waypoint xsi:type="dc:Point" x="1504" y="727" />
+        <di:waypoint xsi:type="dc:Point" x="1504" y="727" />
+        <di:waypoint xsi:type="dc:Point" x="1504" y="750" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1519" y="727" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_49" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_ScriptTask_156">
+        <di:waypoint xsi:type="dc:Point" x="1504" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="1504" y="606" />
+        <di:waypoint xsi:type="dc:Point" x="1504" y="606" />
+        <di:waypoint xsi:type="dc:Point" x="1504" y="627" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1519" y="606" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_87" bpmnElement="SequenceFlow_59" sourceElement="_BPMNShape_ServiceTask_83" targetElement="_BPMNShape_ScriptTask_63">
+        <di:waypoint xsi:type="dc:Point" x="1505" y="1215" />
+        <di:waypoint xsi:type="dc:Point" x="1505" y="1237" />
+        <di:waypoint xsi:type="dc:Point" x="1505" y="1237" />
+        <di:waypoint xsi:type="dc:Point" x="1505" y="1258" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1520" y="1237" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_157" bpmnElement="prepareNetworkRequest_ScriptTask">
+        <dc:Bounds x="1454" y="1009" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_89" bpmnElement="SequenceFlow_61" sourceElement="_BPMNShape_ScriptTask_157" targetElement="_BPMNShape_ServiceTask_83">
+        <di:waypoint xsi:type="dc:Point" x="1504" y="1089" />
+        <di:waypoint xsi:type="dc:Point" x="1504" y="1111" />
+        <di:waypoint xsi:type="dc:Point" x="1504" y="1111" />
+        <di:waypoint xsi:type="dc:Point" x="1504" y="1135" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1519" y="1111" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_215" bpmnElement="callRESTQueryNetworkPolicy_ScriptTask">
+        <dc:Bounds x="1454" y="750" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_60" bpmnElement="SequenceFlow_38" sourceElement="_BPMNShape_ScriptTask_215" targetElement="_BPMNShape_ScriptTask_333">
+        <di:waypoint xsi:type="dc:Point" x="1504" y="830" />
+        <di:waypoint xsi:type="dc:Point" x="1504" y="879" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1519" y="854.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_215" bpmnElement="isPONR_ExclusiveGateway" isMarkerVisible="true">
+        <dc:Bounds x="304" y="1060" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="248" y="1078" width="46" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_77" bpmnElement="isPONR_Yes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_215">
+        <di:waypoint xsi:type="dc:Point" x="354" y="1085" />
+        <di:waypoint xsi:type="dc:Point" x="457" y="1085" />
+        <di:waypoint xsi:type="dc:Point" x="457" y="1159" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="351" y="1088" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_85" bpmnElement="isPONR_No_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_215">
+        <di:waypoint xsi:type="dc:Point" x="329" y="1060" />
+        <di:waypoint xsi:type="dc:Point" x="329" y="1003" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="339" y="1051" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_217" bpmnElement="sdncOk_ExclusiveGateway" isMarkerVisible="true">
+        <dc:Bounds x="527" y="845" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="585" y="858" width="72" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_92" bpmnElement="sdncOk_Yeso_ExclusiveGateway" sourceElement="_BPMNShape_ExclusiveGateway_217" targetElement="_BPMNShape_ScriptTask_261">
+        <di:waypoint xsi:type="dc:Point" x="552" y="845" />
+        <di:waypoint xsi:type="dc:Point" x="552" y="776" />
+        <di:waypoint xsi:type="dc:Point" x="713" y="776" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="559" y="829" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_93" bpmnElement="sdncOk_No_ExclusiveGateway" sourceElement="_BPMNShape_ExclusiveGateway_217">
+        <di:waypoint xsi:type="dc:Point" x="551" y="894" />
+        <di:waypoint xsi:type="dc:Point" x="551" y="978" />
+        <di:waypoint xsi:type="dc:Point" x="713" y="978" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="559" y="895" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_245" bpmnElement="callRESTQueryCloudRegion_ScriptTask">
+        <dc:Bounds x="1199" y="276" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_53" bpmnElement="SequenceFlow_32" sourceElement="_BPMNShape_ScriptTask_245" targetElement="_BPMNShape_ScriptTask_67">
+        <di:waypoint xsi:type="dc:Point" x="1299" y="316" />
+        <di:waypoint xsi:type="dc:Point" x="1337" y="316" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1318" y="301" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_38" bpmnElement="BoundaryEvent_4">
+        <dc:Bounds x="1672" y="457" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1690" y="493" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_69" bpmnElement="SequenceFlow_34" sourceElement="_BPMNShape_BoundaryEvent_38" targetElement="_BPMNShape_EndEvent_124">
+        <di:waypoint xsi:type="dc:Point" x="1702" y="488" />
+        <di:waypoint xsi:type="dc:Point" x="1745" y="533" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1724" y="495.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_261" bpmnElement="prepareSDNCRollbackRequest_ScriptTask">
+        <dc:Bounds x="886" y="830" width="100" height="79" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_63" targetElement="_BPMNShape_ScriptTask_134">
+        <di:waypoint xsi:type="dc:Point" x="1507" y="1338" />
+        <di:waypoint xsi:type="dc:Point" x="1505" y="1392" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1506" y="1350" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_28" bpmnElement="unexpectedErrors_SubProcess" isExpanded="true">
+        <dc:Bounds x="21" y="381" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_71" bpmnElement="StartEvent_1">
+        <dc:Bounds x="54" y="458" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="72" y="499" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_270" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="169" y="436" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_220" bpmnElement="EndEvent_1">
+        <dc:Bounds x="330" y="458" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="348" y="499" 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="90" y="476" />
+        <di:waypoint xsi:type="dc:Point" x="169" y="476" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="129" y="476" width="6" height="6" />
+        </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="269" y="476" />
+        <di:waypoint xsi:type="dc:Point" x="330" y="476" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="301" y="476" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_72" bpmnElement="callGetServiceInstance">
+        <dc:Bounds x="759" y="155" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_244" bpmnElement="siFoundCheck" isMarkerVisible="true">
+        <dc:Bounds x="784" y="291" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="696" y="304" width="80" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_CallActivity_72" targetElement="_BPMNShape_ExclusiveGateway_244">
+        <di:waypoint xsi:type="dc:Point" x="809" y="235" />
+        <di:waypoint xsi:type="dc:Point" x="809" y="291" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="824" y="263" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="siFoundYes" sourceElement="_BPMNShape_ExclusiveGateway_244" targetElement="_BPMNShape_ScriptTask_62">
+        <di:waypoint xsi:type="dc:Point" x="834" y="316" />
+        <di:waypoint xsi:type="dc:Point" x="951" y="316" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="851" y="319" width="18" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_331" bpmnElement="workflowExceptionSINotFound">
+        <dc:Bounds x="759" y="395" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="siFoundNo" sourceElement="_BPMNShape_ExclusiveGateway_244" targetElement="_BPMNShape_ScriptTask_331">
+        <di:waypoint xsi:type="dc:Point" x="809" y="341" />
+        <di:waypoint xsi:type="dc:Point" x="809" y="395" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="823" y="340.55618916742606" width="14" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_333" bpmnElement="callRESTQueryNetworkTableRef_ScriptTask">
+        <dc:Bounds x="1454" y="879" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_20" sourceElement="_BPMNShape_ScriptTask_333" targetElement="_BPMNShape_ScriptTask_157">
+        <di:waypoint xsi:type="dc:Point" x="1504" y="959" />
+        <di:waypoint xsi:type="dc:Point" x="1504" y="981" />
+        <di:waypoint xsi:type="dc:Point" x="1504" y="981" />
+        <di:waypoint xsi:type="dc:Point" x="1504" y="1009" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1519" y="981" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1n61wit_di" bpmnElement="SequenceFlow_1n61wit">
+        <di:waypoint xsi:type="dc:Point" x="433" y="195" />
+        <di:waypoint xsi:type="dc:Point" x="492" y="195" />
+        <di:waypoint xsi:type="dc:Point" x="492" y="195" />
+        <di:waypoint xsi:type="dc:Point" x="546" y="195" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="507" y="195" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1jay2gg_di" bpmnElement="ScriptTask_preprocess">
+        <dc:Bounds x="546" y="155" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ftylq3_di" bpmnElement="SequenceFlow_0ftylq3">
+        <di:waypoint xsi:type="dc:Point" x="646" y="195" />
+        <di:waypoint xsi:type="dc:Point" x="706" y="195" />
+        <di:waypoint xsi:type="dc:Point" x="706" y="195" />
+        <di:waypoint xsi:type="dc:Point" x="759" y="195" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="721" y="195" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0lw40k5_di" bpmnElement="isNameSent_ExclusiveGateway" isMarkerVisible="true">
+        <dc:Bounds x="951" y="291" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="933" y="349" width="85" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0635hhm_di" bpmnElement="isNameSentYes_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="976" y="291" />
+        <di:waypoint xsi:type="dc:Point" x="976" y="170" />
+        <di:waypoint xsi:type="dc:Point" x="976" y="170" />
+        <di:waypoint xsi:type="dc:Point" x="976" y="49" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="988" y="275" width="18" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sirjgc_di" bpmnElement="isNameSentNo_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1001" y="316" />
+        <di:waypoint xsi:type="dc:Point" x="1199" y="316" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1005" y="328" width="14" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1uxa4p9_di" bpmnElement="Task_1ipbwbj">
+        <dc:Bounds x="1014" y="1538" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0m5hrmn_di" bpmnElement="Task_1rd6dg6">
+        <dc:Bounds x="1183" y="1538" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0n0ptg6_di" bpmnElement="ExclusiveGateway_0n0ptg6" isMarkerVisible="true">
+        <dc:Bounds x="724" y="1553" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="644" y="1566" width="68" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_13deudk_di" bpmnElement="SequenceFlow_13deudk">
+        <di:waypoint xsi:type="dc:Point" x="1183" y="1578" />
+        <di:waypoint xsi:type="dc:Point" x="1114" y="1578" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1149" y="1563" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_08qibb9_di" bpmnElement="SequenceFlow_08qibb9">
+        <di:waypoint xsi:type="dc:Point" x="1014" y="1578" />
+        <di:waypoint xsi:type="dc:Point" x="953" y="1578" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="984" y="1563" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t03rs2_di" bpmnElement="SequenceFlow_1t03rs2">
+        <di:waypoint xsi:type="dc:Point" x="853" y="1578" />
+        <di:waypoint xsi:type="dc:Point" x="774" y="1578" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="814" y="1563" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jia57e_di" bpmnElement="SequenceFlow_1jia57e">
+        <di:waypoint xsi:type="dc:Point" x="749" y="1553" />
+        <di:waypoint xsi:type="dc:Point" x="749" y="1484" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="757" y="1537.7047949008065" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18ybfu5_di" bpmnElement="SequenceFlow_18ybfu5">
+        <di:waypoint xsi:type="dc:Point" x="749" y="1603" />
+        <di:waypoint xsi:type="dc:Point" x="749" y="1669" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="758" y="1603.7606668519034" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1v458g5_di" bpmnElement="validateSDNCActivate_Task">
+        <dc:Bounds x="853" y="1538" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="BoundaryEvent_0pg57au_di" bpmnElement="BoundaryEvent_0vb26bm">
+        <dc:Bounds x="859" y="1600" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="877" y="1636" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s51ns0_di" bpmnElement="SequenceFlow_0s51ns0">
+        <di:waypoint xsi:type="dc:Point" x="877" y="1636" />
+        <di:waypoint xsi:type="dc:Point" x="877" y="1687" />
+        <di:waypoint xsi:type="dc:Point" x="767" y="1687" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="892" y="1661.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0h7h49p_di" bpmnElement="EndEvent_13v46cq">
+        <dc:Bounds x="731" y="1669" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="711" y="1715" width="76" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0f9d94i_di" bpmnElement="isSDNCActivate_ExclusiveGateway" isMarkerVisible="true">
+        <dc:Bounds x="304" y="953" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="210" y="966" width="84" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0cly7z2_di" bpmnElement="SequenceFlow_0cly7z2">
+        <di:waypoint xsi:type="dc:Point" x="329" y="953" />
+        <di:waypoint xsi:type="dc:Point" x="329" y="910" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="335" y="937" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_12tlymf_di" bpmnElement="SequenceFlow_12tlymf">
+        <di:waypoint xsi:type="dc:Point" x="354" y="978" />
+        <di:waypoint xsi:type="dc:Point" x="457" y="978" />
+        <di:waypoint xsi:type="dc:Point" x="457" y="895" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="350" y="988" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1ts3ph0_di" bpmnElement="isSdncRpc1_ExclusiveGateway1" isMarkerVisible="true">
+        <dc:Bounds x="1337.228" y="291" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1401" y="304" width="61" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1r5sja0_di" bpmnElement="isSdncRpc1No_SequenceFlow1">
+        <di:waypoint xsi:type="dc:Point" x="1362" y="291" />
+        <di:waypoint xsi:type="dc:Point" x="1362" y="195" />
+        <di:waypoint xsi:type="dc:Point" x="1590" y="195" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1371" y="273" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ow57qy_di" bpmnElement="isSdncRpc1Yes_SequenceFlow1">
+        <di:waypoint xsi:type="dc:Point" x="1362" y="341" />
+        <di:waypoint xsi:type="dc:Point" x="1362" y="395" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1373" y="341" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_067czgj_di" bpmnElement="Task_0pbtywn">
+        <dc:Bounds x="1454" y="395" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0j8bxnb_di" bpmnElement="SequenceFlow_0j8bxnb">
+        <di:waypoint xsi:type="dc:Point" x="1412" y="435" />
+        <di:waypoint xsi:type="dc:Point" x="1454" y="435" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1433" y="420" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0d93bqw_di" bpmnElement="SequenceFlow_0d93bqw">
+        <di:waypoint xsi:type="dc:Point" x="1554" y="435" />
+        <di:waypoint xsi:type="dc:Point" x="1590" y="435" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1572" y="420" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_00dh41t_di" bpmnElement="isSdncRpc4_ExclusiveGateway4" isMarkerVisible="true">
+        <dc:Bounds x="713" y="751" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="714" y="710" width="61" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0suu90e_di" bpmnElement="isSdncRpc4Yes_SequenceFlow4">
+        <di:waypoint xsi:type="dc:Point" x="738" y="801" />
+        <di:waypoint xsi:type="dc:Point" x="738" y="830" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="743" y="800" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xnyl6e_di" bpmnElement="isSdncRpc4No_SequenceFlow4">
+        <di:waypoint xsi:type="dc:Point" x="763" y="776" />
+        <di:waypoint xsi:type="dc:Point" x="936" y="776" />
+        <di:waypoint xsi:type="dc:Point" x="936" y="830" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="772" y="755" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1gghe34_di" bpmnElement="isSdncRpc2_ExclusiveGateway2" isMarkerVisible="true">
+        <dc:Bounds x="1360" y="1553" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1343" y="1619" width="83" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lphs99_di" bpmnElement="isSdncRpc2Yes_SequenceFlow2">
+        <di:waypoint xsi:type="dc:Point" x="1360" y="1578" />
+        <di:waypoint xsi:type="dc:Point" x="1283" y="1578" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1337" y="1580.0388981849903" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0lk1uut_di" bpmnElement="isSdncRpc2No_SequenceFlow2">
+        <di:waypoint xsi:type="dc:Point" x="1385" y="1553" />
+        <di:waypoint xsi:type="dc:Point" x="1385" y="1444" />
+        <di:waypoint xsi:type="dc:Point" x="799" y="1444" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1362" y="1543.660178848007" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1lkq0a3_di" bpmnElement="Task_10lubzj">
+        <dc:Bounds x="1312" y="395" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_19o9l99_di" bpmnElement="Task_0q6pzpn">
+        <dc:Bounds x="688" y="830" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1te02c4_di" bpmnElement="EndEvent_1te02c4">
+        <dc:Bounds x="467" y="1426" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="486" y="1462" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1kpt4kc_di" bpmnElement="EndEvent_1kpt4kc">
+        <dc:Bounds x="1160" y="1075" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1179" y="1111" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0ti2ctu_di" bpmnElement="EndEvent_0ti2ctu">
+        <dc:Bounds x="1486" y="-9" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1468" y="38" width="72" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s8b1m1_di" bpmnElement="SequenceFlow_1s8b1m1">
+        <di:waypoint xsi:type="dc:Point" x="699" y="1444" />
+        <di:waypoint xsi:type="dc:Point" x="597" y="1444" />
+        <di:waypoint xsi:type="dc:Point" x="597" y="1444" />
+        <di:waypoint xsi:type="dc:Point" x="503" y="1444" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="612" y="1444" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1feo4ms_di" bpmnElement="Task_0zzobg6">
+        <dc:Bounds x="699" y="1404" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0myjg9k_di" bpmnElement="ScriptTask_0myjg9k">
+        <dc:Bounds x="688" y="1053" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0b8j5rw_di" bpmnElement="SequenceFlow_0b8j5rw">
+        <di:waypoint xsi:type="dc:Point" x="379" y="870" />
+        <di:waypoint xsi:type="dc:Point" x="432" y="870" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="406" y="855" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_17adm0m_di" bpmnElement="Task_1imzwi3">
+        <dc:Bounds x="279" y="830" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ipz2ze_di" bpmnElement="SequenceFlow_1ipz2ze">
+        <di:waypoint xsi:type="dc:Point" x="1454" y="1578" />
+        <di:waypoint xsi:type="dc:Point" x="1432" y="1578" />
+        <di:waypoint xsi:type="dc:Point" x="1432" y="1578" />
+        <di:waypoint xsi:type="dc:Point" x="1410" y="1578" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1447" y="1578" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1u07hp7_di" bpmnElement="CallActivity_1u07hp7">
+        <dc:Bounds x="841" y="1053" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vzsyrd_di" bpmnElement="SequenceFlow_0vzsyrd">
+        <di:waypoint xsi:type="dc:Point" x="941" y="1093" />
+        <di:waypoint xsi:type="dc:Point" x="1007" y="1093" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="974" y="1078" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bwpkkb_di" bpmnElement="SequenceFlow_0bwpkkb">
+        <di:waypoint xsi:type="dc:Point" x="738" y="910" />
+        <di:waypoint xsi:type="dc:Point" x="738" y="953" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="753" y="922" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0lndbvr_di" bpmnElement="SequenceFlow_0lndbvr">
+        <di:waypoint xsi:type="dc:Point" x="936" y="909" />
+        <di:waypoint xsi:type="dc:Point" x="936" y="978" />
+        <di:waypoint xsi:type="dc:Point" x="763" y="978" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="951" y="944" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_096tad6_di" bpmnElement="SequenceFlow_096tad6">
+        <di:waypoint xsi:type="dc:Point" x="788" y="1093" />
+        <di:waypoint xsi:type="dc:Point" x="841" y="1093" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="815" y="1078" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="TextAnnotation_1py1p84_di" bpmnElement="TextAnnotation_1py1p84">
+        <dc:Bounds x="1036" y="901" width="252" height="119" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Association_0nketgd_di" bpmnElement="Association_0nketgd">
+        <di:waypoint xsi:type="dc:Point" x="941" y="1069" />
+        <di:waypoint xsi:type="dc:Point" x="1041" y="1020" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0w2ekuz_di" bpmnElement="ScriptTask_0w2ekuz">
+        <dc:Bounds x="1007" y="1053" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qwubew_di" bpmnElement="SequenceFlow_1qwubew">
+        <di:waypoint xsi:type="dc:Point" x="1107" y="1093" />
+        <di:waypoint xsi:type="dc:Point" x="1160" y="1093" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1134" y="1068" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1r7vhm5_di" bpmnElement="isRollbackOn_ExclusiveGateway" isMarkerVisible="true">
+        <dc:Bounds x="304" y="1159" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="290" y="1209" width="78" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_19kcbiw_di" bpmnElement="isRollbackOn_SequenceFlow_Yes">
+        <di:waypoint xsi:type="dc:Point" x="329" y="1159" />
+        <di:waypoint xsi:type="dc:Point" x="329" y="1110" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="337" y="1142" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0pl3e54_di" bpmnElement="isRollbackOn_SequenceFlow_No">
+        <di:waypoint xsi:type="dc:Point" x="354" y="1184" />
+        <di:waypoint xsi:type="dc:Point" x="432" y="1184" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="355" y="1190" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_0zl5xa8_di" bpmnElement="ExclusiveGateway_1qb2vwe">
+        <dc:Bounds x="713" y="953" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="738" y="1003" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_15sffxc_di" bpmnElement="SequenceFlow_15sffxc">
+        <di:waypoint xsi:type="dc:Point" x="738" y="1003" />
+        <di:waypoint xsi:type="dc:Point" x="738" y="1053" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="753" y="1028" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_0t3i8it_di" bpmnElement="ExclusiveGateway_1bk0tqd">
+        <dc:Bounds x="432" y="845" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="457" y="895" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0k7y7b5_di" bpmnElement="SequenceFlow_0k7y7b5">
+        <di:waypoint xsi:type="dc:Point" x="482" y="870" />
+        <di:waypoint xsi:type="dc:Point" x="527" y="870" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="505" y="845" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0p3v749_di" bpmnElement="ScriptTask_0p3v749">
+        <dc:Bounds x="1335" y="-31" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_18ylufb_di" bpmnElement="SequenceFlow_18ylufb">
+        <di:waypoint xsi:type="dc:Point" x="1435" y="9" />
+        <di:waypoint xsi:type="dc:Point" x="1486" y="9" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1461" y="-6" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_1eochiz_di" bpmnElement="ExclusiveGateway_1umhuft">
+        <dc:Bounds x="432" y="1159" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="457" y="1209" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_17nx822_di" bpmnElement="SequenceFlow_17nx822">
+        <di:waypoint xsi:type="dc:Point" x="482" y="1184" />
+        <di:waypoint xsi:type="dc:Point" x="1057" y="1184" />
+        <di:waypoint xsi:type="dc:Point" x="1057" y="1133" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="770" y="1169" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="TextAnnotation_1orb6o6_di" bpmnElement="TextAnnotation_1orb6o6">
+        <dc:Bounds x="1606" y="1241" width="233" height="37" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Association_0c315jr_di" bpmnElement="Association_0c315jr">
+        <di:waypoint xsi:type="dc:Point" x="1557" y="1289" />
+        <di:waypoint xsi:type="dc:Point" x="1621" y="1278" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="TextAnnotation_0wjpv6r_di" bpmnElement="TextAnnotation_0wjpv6r">
+        <dc:Bounds x="341" y="735" width="180" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Association_0eolbkz_di" bpmnElement="Association_0eolbkz">
+        <di:waypoint xsi:type="dc:Point" x="452" y="850" />
+        <di:waypoint xsi:type="dc:Point" x="435" y="771" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0j3058g_di" bpmnElement="ScriptTask_0j3058g">
+        <dc:Bounds x="170" y="1144" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_10ttvwn_di" bpmnElement="SequenceFlow_10ttvwn">
+        <di:waypoint xsi:type="dc:Point" x="270" y="1184" />
+        <di:waypoint xsi:type="dc:Point" x="304" y="1184" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="287" y="1159" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateNetworkInstanceRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateNetworkInstanceRollback.bpmn
new file mode 100644
index 0000000..6a4861b
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateNetworkInstanceRollback.bpmn
@@ -0,0 +1,517 @@
+<?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.4.0">
+  <bpmn:process id="DoCreateNetworkInstanceRollback" name="DoCreateNetworkInstanceRollback" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1">
+      <bpmn:outgoing>SequenceFlow_1krl2dg</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:scriptTask id="Task_0whino1" name="PreProcess Incoming Data" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1krl2dg</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0u41iz2</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
+DoCreateNetworkInstanceRollback.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1krl2dg" sourceRef="StartEvent_1" targetRef="Task_0whino1" />
+    <bpmn:sequenceFlow id="SequenceFlow_0u41iz2" sourceRef="Task_0whino1" targetRef="ExclusiveGateway_0p5zgdb" />
+    <bpmn:callActivity id="CallActivity_1x88fsq" name="Call RSRC SDNC Deactivate Adapter" calledElement="sdncAdapter">
+      <bpmn:extensionElements>
+        <camunda:in source="CRENWKIR_rollbackActivateSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="SDNCA_ResponseCode" target="CRENWKIR_rollbackActivateSDNCReturnCode" />
+        <camunda:out source="sdncAdapterResponse" target="CRENWKIR_rollbackActivateSDNCResponse" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1mxbdps</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_07s5r14</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:callActivity id="CallActivity_0kbwa1x" name="Call Unassign RSRC SDNC Adapter" calledElement="sdncAdapter">
+      <bpmn:extensionElements>
+        <camunda:in source="CRENWKIR_rollbackSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="SDNCA_ResponseCode" target="CRENWKIR_rollbackSDNCReturnCode" />
+        <camunda:out source="sdncAdapterResponse" target="CRENWKIR_rollbackSDNCResponse" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0mw0dgd</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1rrutp3</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0p5zgdb" name="is RPC Activate Rollback?" default="SequenceFlow_1bb7zpp">
+      <bpmn:incoming>SequenceFlow_0u41iz2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1bb7zpp</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1mxbdps</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0v0en47" name="is PO Network Rollback?" default="SequenceFlow_1lteduj">
+      <bpmn:incoming>SequenceFlow_1bb7zpp</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_07s5r14</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0e1uixp</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1lteduj</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:callActivity id="CallActivity_1xilevb" name="Call Rollback SDNC Adapter" calledElement="sdncAdapter">
+      <bpmn:extensionElements>
+        <camunda:in source="CRENWKIR_rollbackSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="SDNCA_ResponseCode" target="CRENWKIR_rollbackSDNCReturnCode" />
+        <camunda:out source="sdncAdapterResponse" target="CRENWKIR_rollbackSDNCResponse" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_101y57s</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0790olb</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_17g4q5c" name="is RSRC SDNC?" default="SequenceFlow_101y57s">
+      <bpmn:incoming>SequenceFlow_0virkpu</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_101y57s</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0mw0dgd</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:scriptTask id="ScriptTask_1ggaxfu" name="Validate Rollback Responses" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0qc4v9t</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0el8yzs</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0yto4gz</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
+DoCreateNetworkInstanceRollback.validateRollbackResponses(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1n5jck8" name="is SDNC Rollback?" default="SequenceFlow_0qc4v9t">
+      <bpmn:incoming>SequenceFlow_1lteduj</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_17o4w67</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0virkpu</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0qc4v9t</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1bb7zpp" name="No" sourceRef="ExclusiveGateway_0p5zgdb" targetRef="ExclusiveGateway_0v0en47" />
+    <bpmn:sequenceFlow id="SequenceFlow_1mxbdps" name="Yes" sourceRef="ExclusiveGateway_0p5zgdb" targetRef="CallActivity_1x88fsq">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKIR_rollbackActivateSDNCRequest") != null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0e1uixp" name="Yes" sourceRef="ExclusiveGateway_0v0en47" targetRef="ServiceTask_0bqh5yl">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKIR_rollbackNetworkRequest") != null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_07s5r14" sourceRef="CallActivity_1x88fsq" targetRef="ExclusiveGateway_0v0en47" />
+    <bpmn:sequenceFlow id="SequenceFlow_1lteduj" name="No" sourceRef="ExclusiveGateway_0v0en47" targetRef="ExclusiveGateway_1n5jck8" />
+    <bpmn:sequenceFlow id="SequenceFlow_0virkpu" name="Yes" sourceRef="ExclusiveGateway_1n5jck8" targetRef="ExclusiveGateway_17g4q5c">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("CRENWKIR_rollbackSDNCRequest") != null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_17o4w67" sourceRef="ServiceTask_0bqh5yl" targetRef="ExclusiveGateway_1n5jck8" />
+    <bpmn:sequenceFlow id="SequenceFlow_101y57s" name="No" sourceRef="ExclusiveGateway_17g4q5c" targetRef="CallActivity_1xilevb" />
+    <bpmn:sequenceFlow id="SequenceFlow_0mw0dgd" name="Yes" sourceRef="ExclusiveGateway_17g4q5c" targetRef="CallActivity_0kbwa1x">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:endEvent id="EndEvent_1fvr7ad">
+      <bpmn:incoming>SequenceFlow_0yto4gz</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0qc4v9t" name="No" sourceRef="ExclusiveGateway_1n5jck8" targetRef="ScriptTask_1ggaxfu" />
+    <bpmn:sequenceFlow id="SequenceFlow_0790olb" sourceRef="CallActivity_1xilevb" targetRef="ExclusiveGateway_0b9kbop" />
+    <bpmn:sequenceFlow id="SequenceFlow_1rrutp3" sourceRef="CallActivity_0kbwa1x" targetRef="ExclusiveGateway_0b9kbop" />
+    <bpmn:subProcess id="SubProcess_1p4663w" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:scriptTask id="ScriptTask_0by1uwk" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0xktw7v</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0soe5t3</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
+DoCreateNetworkInstanceRollback.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:startEvent id="StartEvent_1j0eixl">
+        <bpmn:outgoing>SequenceFlow_0xktw7v</bpmn:outgoing>
+        <bpmn:errorEventDefinition errorRef="Error_1" />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_0jxh015">
+        <bpmn:incoming>SequenceFlow_0soe5t3</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_0xktw7v" name="" sourceRef="StartEvent_1j0eixl" targetRef="ScriptTask_0by1uwk" />
+      <bpmn:sequenceFlow id="SequenceFlow_0soe5t3" name="" sourceRef="ScriptTask_0by1uwk" targetRef="EndEvent_0jxh015" />
+    </bpmn:subProcess>
+    <bpmn:inclusiveGateway id="ExclusiveGateway_0b9kbop">
+      <bpmn:incoming>SequenceFlow_1rrutp3</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0790olb</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0el8yzs</bpmn:outgoing>
+    </bpmn:inclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0el8yzs" sourceRef="ExclusiveGateway_0b9kbop" targetRef="ScriptTask_1ggaxfu" />
+    <bpmn:sequenceFlow id="SequenceFlow_0yto4gz" sourceRef="ScriptTask_1ggaxfu" targetRef="EndEvent_1fvr7ad" />
+    <bpmn:subProcess id="SubProcess_0y6ppiy" triggeredByEvent="true">
+      <bpmn:endEvent id="EndEvent_1aqh7ih">
+        <bpmn:incoming>SequenceFlow_0lomcvn</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="Task_07i164j" name="Catch Exception" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0q0te67</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0lomcvn</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+execution.setVariable("workflowException", execution.getVariable("WorkflowException")
+]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_0q0te67" sourceRef="StartEvent_1p75ok8" targetRef="Task_07i164j" />
+      <bpmn:sequenceFlow id="SequenceFlow_0lomcvn" sourceRef="Task_07i164j" targetRef="EndEvent_1aqh7ih" />
+      <bpmn:startEvent id="StartEvent_1p75ok8">
+        <bpmn:outgoing>SequenceFlow_0q0te67</bpmn:outgoing>
+        <bpmn:errorEventDefinition errorRef="Error_2" />
+      </bpmn:startEvent>
+    </bpmn:subProcess>
+    <bpmn:boundaryEvent id="BoundaryEvent_0dnnott" attachedToRef="CallActivity_1x88fsq">
+      <bpmn:outgoing>SequenceFlow_0ctlrql</bpmn:outgoing>
+      <bpmn:errorEventDefinition errorRef="Error_2" />
+    </bpmn:boundaryEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0ctlrql" sourceRef="BoundaryEvent_0dnnott" targetRef="EndEvent_0n9y395" />
+    <bpmn:endEvent id="EndEvent_0n9y395">
+      <bpmn:incoming>SequenceFlow_0ctlrql</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_2" />
+    </bpmn:endEvent>
+    <bpmn:boundaryEvent id="BoundaryEvent_1yj6513" attachedToRef="CallActivity_0kbwa1x">
+      <bpmn:outgoing>SequenceFlow_1j55a94</bpmn:outgoing>
+      <bpmn:errorEventDefinition errorRef="Error_2" />
+    </bpmn:boundaryEvent>
+    <bpmn:boundaryEvent id="BoundaryEvent_1y8kgef" attachedToRef="CallActivity_1xilevb">
+      <bpmn:outgoing>SequenceFlow_1yn24xq</bpmn:outgoing>
+      <bpmn:errorEventDefinition errorRef="Error_2" />
+    </bpmn:boundaryEvent>
+    <bpmn:endEvent id="EndEvent_05tcxw3">
+      <bpmn:incoming>SequenceFlow_1j55a94</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1yn24xq</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_2" />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1j55a94" sourceRef="BoundaryEvent_1yj6513" targetRef="EndEvent_05tcxw3" />
+    <bpmn:sequenceFlow id="SequenceFlow_1yn24xq" sourceRef="BoundaryEvent_1y8kgef" targetRef="EndEvent_05tcxw3" />
+    <bpmn:scriptTask id="ServiceTask_0bqh5yl" name="Call Rollback Network" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0e1uixp</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_17o4w67</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
+DoCreateNetworkInstanceRollback.callPONetworkAdapter(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:textAnnotation id="TextAnnotation_000ap15">    <bpmn:text><![CDATA[Include ONLY inputs/varrables:  
+rollbackData, as Map
+-rollbackSDNCRequest
+-rollbackActivateSDNCRequest
+-rollbackNetworkRequest
+WorkflowException
+ 
+]]></bpmn:text>
+</bpmn:textAnnotation>
+    <bpmn:association id="Association_0ybkmal" sourceRef="Task_0whino1" targetRef="TextAnnotation_000ap15" />
+    <bpmn:textAnnotation id="TextAnnotation_0vwyo82">    <bpmn:text><![CDATA[set value for:
+WorkflowException
+rolledBack
+wasDeleted
+]]></bpmn:text>
+</bpmn:textAnnotation>
+    <bpmn:association id="Association_1gx121b" sourceRef="ScriptTask_1ggaxfu" targetRef="TextAnnotation_0vwyo82" />
+  </bpmn:process>
+  <bpmn:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateNetworkInstanceRollback">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="214" y="240" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="232" y="276" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1dqe09s_di" bpmnElement="Task_0whino1">
+        <dc:Bounds x="333" y="218" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1krl2dg_di" bpmnElement="SequenceFlow_1krl2dg">
+        <di:waypoint xsi:type="dc:Point" x="250" y="258" />
+        <di:waypoint xsi:type="dc:Point" x="333" y="258" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="292" y="243" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0u41iz2_di" bpmnElement="SequenceFlow_0u41iz2">
+        <di:waypoint xsi:type="dc:Point" x="433" y="258" />
+        <di:waypoint xsi:type="dc:Point" x="556" y="258" />
+        <di:waypoint xsi:type="dc:Point" x="556" y="347" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="495" y="243" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1x88fsq_di" bpmnElement="CallActivity_1x88fsq">
+        <dc:Bounds x="506" y="481" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0kbwa1x_di" bpmnElement="CallActivity_0kbwa1x">
+        <dc:Bounds x="972" y="481" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0p5zgdb_di" bpmnElement="ExclusiveGateway_0p5zgdb" isMarkerVisible="true">
+        <dc:Bounds x="531" y="347" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="439" y="360" width="79" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0v0en47_di" bpmnElement="ExclusiveGateway_0v0en47" isMarkerVisible="true">
+        <dc:Bounds x="697" y="347" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="685" y="312" width="74" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_000ap15_di" bpmnElement="TextAnnotation_000ap15">
+        <dc:Bounds x="112" y="355" width="277" height="115" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Association_0ybkmal_di" bpmnElement="Association_0ybkmal">
+        <di:waypoint xsi:type="dc:Point" x="349" y="298" />
+        <di:waypoint xsi:type="dc:Point" x="300" y="355" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1xilevb_di" bpmnElement="CallActivity_1xilevb">
+        <dc:Bounds x="972" y="608" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_17g4q5c_di" bpmnElement="ExclusiveGateway_17g4q5c" isMarkerVisible="true">
+        <dc:Bounds x="879" y="496" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="914" y="460" width="82" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1ggaxfu_di" bpmnElement="ScriptTask_1ggaxfu">
+        <dc:Bounds x="1123" y="332" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1n5jck8_di" bpmnElement="ExclusiveGateway_1n5jck8" isMarkerVisible="true">
+        <dc:Bounds x="879" y="347" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="880" y="308" width="48" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_0vwyo82_di" bpmnElement="TextAnnotation_0vwyo82">
+        <dc:Bounds x="1287" y="410" width="165" height="60" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Association_1gx121b_di" bpmnElement="Association_1gx121b">
+        <di:waypoint xsi:type="dc:Point" x="1223" y="389" />
+        <di:waypoint xsi:type="dc:Point" x="1287" y="412" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bb7zpp_di" bpmnElement="SequenceFlow_1bb7zpp">
+        <di:waypoint xsi:type="dc:Point" x="581" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="697" y="372" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="582" y="349.27450980392155" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mxbdps_di" bpmnElement="SequenceFlow_1mxbdps">
+        <di:waypoint xsi:type="dc:Point" x="556" y="397" />
+        <di:waypoint xsi:type="dc:Point" x="556" y="481" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="560" y="397.10731155015196" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0e1uixp_di" bpmnElement="SequenceFlow_0e1uixp">
+        <di:waypoint xsi:type="dc:Point" x="722" y="397" />
+        <di:waypoint xsi:type="dc:Point" x="722" y="439" />
+        <di:waypoint xsi:type="dc:Point" x="722" y="439" />
+        <di:waypoint xsi:type="dc:Point" x="722" y="481" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="730" y="395" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_07s5r14_di" bpmnElement="SequenceFlow_07s5r14">
+        <di:waypoint xsi:type="dc:Point" x="606" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="647" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="647" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="697" y="372" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="662" y="446.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lteduj_di" bpmnElement="SequenceFlow_1lteduj">
+        <di:waypoint xsi:type="dc:Point" x="747" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="879" y="372" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="750" y="350.14631933618307" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0virkpu_di" bpmnElement="SequenceFlow_0virkpu">
+        <di:waypoint xsi:type="dc:Point" x="904" y="397" />
+        <di:waypoint xsi:type="dc:Point" x="904" y="496" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="914" y="392.7469456247061" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17o4w67_di" bpmnElement="SequenceFlow_17o4w67">
+        <di:waypoint xsi:type="dc:Point" x="772" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="817" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="817" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="879" y="372" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="832" y="446.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_101y57s_di" bpmnElement="SequenceFlow_101y57s">
+        <di:waypoint xsi:type="dc:Point" x="904" y="546" />
+        <di:waypoint xsi:type="dc:Point" x="904" y="648" />
+        <di:waypoint xsi:type="dc:Point" x="972" y="648" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="913" y="544" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0mw0dgd_di" bpmnElement="SequenceFlow_0mw0dgd">
+        <di:waypoint xsi:type="dc:Point" x="929" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="972" y="521" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="930" y="498" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1fvr7ad_di" bpmnElement="EndEvent_1fvr7ad">
+        <dc:Bounds x="1278" y="255" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1296" y="291" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0qc4v9t_di" bpmnElement="SequenceFlow_0qc4v9t">
+        <di:waypoint xsi:type="dc:Point" x="929" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="1123" y="372" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="941" y="351.1191898360114" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0790olb_di" bpmnElement="SequenceFlow_0790olb">
+        <di:waypoint xsi:type="dc:Point" x="1072" y="648" />
+        <di:waypoint xsi:type="dc:Point" x="1173" y="648" />
+        <di:waypoint xsi:type="dc:Point" x="1173" y="546" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1123" y="633" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rrutp3_di" bpmnElement="SequenceFlow_1rrutp3">
+        <di:waypoint xsi:type="dc:Point" x="1072" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="1148" y="521" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1110" y="506" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_1p4663w_di" bpmnElement="SubProcess_1p4663w" isExpanded="true">
+        <dc:Bounds x="-6" y="665" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0by1uwk_di" bpmnElement="ScriptTask_0by1uwk">
+        <dc:Bounds x="142" y="720" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1j0eixl_di" bpmnElement="StartEvent_1j0eixl">
+        <dc:Bounds x="27" y="742" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="45" y="783" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0jxh015_di" bpmnElement="EndEvent_0jxh015">
+        <dc:Bounds x="303" y="742" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="321" y="783" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xktw7v_di" bpmnElement="SequenceFlow_0xktw7v">
+        <di:waypoint xsi:type="dc:Point" x="63" y="760" />
+        <di:waypoint xsi:type="dc:Point" x="142" y="760" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="105" y="760" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0soe5t3_di" bpmnElement="SequenceFlow_0soe5t3">
+        <di:waypoint xsi:type="dc:Point" x="242" y="760" />
+        <di:waypoint xsi:type="dc:Point" x="303" y="760" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="277" y="760" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_0dot6c9_di" bpmnElement="ExclusiveGateway_0b9kbop">
+        <dc:Bounds x="1148" y="496" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1173" y="546" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0el8yzs_di" bpmnElement="SequenceFlow_0el8yzs">
+        <di:waypoint xsi:type="dc:Point" x="1173" y="496" />
+        <di:waypoint xsi:type="dc:Point" x="1173" y="412" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1188" y="444" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yto4gz_di" bpmnElement="SequenceFlow_0yto4gz">
+        <di:waypoint xsi:type="dc:Point" x="1173" y="332" />
+        <di:waypoint xsi:type="dc:Point" x="1173" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="1278" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1188" y="302.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_1laq87i_di" bpmnElement="SubProcess_0y6ppiy" isExpanded="true">
+        <dc:Bounds x="2" y="886" width="382" height="213" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1aqh7ih_di" bpmnElement="EndEvent_1aqh7ih">
+        <dc:Bounds x="305" y="964" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="323" y="1000" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0gg2fk5_di" bpmnElement="Task_07i164j">
+        <dc:Bounds x="132" y="942" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0q0te67_di" bpmnElement="SequenceFlow_0q0te67">
+        <di:waypoint xsi:type="dc:Point" x="68" y="982" />
+        <di:waypoint xsi:type="dc:Point" x="132" y="982" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="100" y="967" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0lomcvn_di" bpmnElement="SequenceFlow_0lomcvn">
+        <di:waypoint xsi:type="dc:Point" x="232" y="982" />
+        <di:waypoint xsi:type="dc:Point" x="305" y="982" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="269" y="957" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="BoundaryEvent_0i4ili6_di" bpmnElement="BoundaryEvent_0dnnott">
+        <dc:Bounds x="588" y="543" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="606" y="579" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ctlrql_di" bpmnElement="SequenceFlow_0ctlrql">
+        <di:waypoint xsi:type="dc:Point" x="612" y="577" />
+        <di:waypoint xsi:type="dc:Point" x="631" y="622" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="622" y="584.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1ra7y1s_di" bpmnElement="EndEvent_0n9y395">
+        <dc:Bounds x="621" y="620" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="639" y="656" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0a7qaw9_di" bpmnElement="StartEvent_1p75ok8">
+        <dc:Bounds x="32" y="964" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="50" y="1000" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="BoundaryEvent_13arr8o_di" bpmnElement="BoundaryEvent_1yj6513">
+        <dc:Bounds x="1054" y="543" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1072" y="579" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="BoundaryEvent_0qs2m90_di" bpmnElement="BoundaryEvent_1y8kgef">
+        <dc:Bounds x="1054" y="590" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1072" y="626" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0tnenxe_di" bpmnElement="EndEvent_05tcxw3">
+        <dc:Bounds x="1116" y="573" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1134" y="609" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1j55a94_di" bpmnElement="SequenceFlow_1j55a94">
+        <di:waypoint xsi:type="dc:Point" x="1088" y="569" />
+        <di:waypoint xsi:type="dc:Point" x="1118" y="584" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1103" y="561.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yn24xq_di" bpmnElement="SequenceFlow_1yn24xq">
+        <di:waypoint xsi:type="dc:Point" x="1088" y="599" />
+        <di:waypoint xsi:type="dc:Point" x="1116" y="591" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1102" y="580" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0c5jqhn_di" bpmnElement="ServiceTask_0bqh5yl">
+        <dc:Bounds x="672" y="481" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateResources.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateResources.bpmn
new file mode 100644
index 0000000..dc2cf9b
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateResources.bpmn
@@ -0,0 +1,370 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCreateResourcesV3" name="DoCreateResourcesV3" isExecutable="true">
+    <bpmn2:startEvent id="createSI_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1qiiycn</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1qiiycn</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0w9t6tc</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateResources()
+dcsi.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="ScriptTask_1xdjlzm" name="Post Config Service Instance Creation" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_16nxl6h</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0epxs3b</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoCreateResources()
+csi.postConfigRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:serviceTask id="Task_0io5qby" name="Call Sync SDNC service Create " camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncServiceTopologyOperationTask">
+      <bpmn2:incoming>SequenceFlow_0k0f7lm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_11f2zuu</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_11f2zuu" sourceRef="Task_0io5qby" targetRef="IntermediateThrowEvent_0f2w7aj" />
+    <bpmn2:scriptTask id="ScriptTask_1y0los4" name="Sequence Resource" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1hbesp9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13d9g1n</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCreateResources()
+ddsi.sequenceResoure(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_13d9g1n" sourceRef="ScriptTask_1y0los4" targetRef="ExclusiveGateway_07rr3wp" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0n9y4du" name="All ResourceFinished?" default="SequenceFlow_0q6uy30">
+      <bpmn2:incoming>SequenceFlow_1jenxlp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0q6uy30</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_16nxl6h</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0q6uy30" name="no" sourceRef="ExclusiveGateway_0n9y4du" targetRef="ScriptTask_0l4nkqr" />
+    <bpmn2:scriptTask id="ScriptTask_0y4u2ty" name="Parse Next Resource" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_13c7bhn</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1jenxlp</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCreateResources()
+ddsi.parseNextResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1jenxlp" sourceRef="ScriptTask_0y4u2ty" targetRef="ExclusiveGateway_0n9y4du" />
+    <bpmn2:scriptTask id="ScriptTask_0l4nkqr" name="Get Current Resource" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0q6uy30</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1qozd66</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0uiygod</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCreateResources()
+ddsi.getCurrentResoure(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_07rr3wp" name="Is SDN-C Service Needed" default="SequenceFlow_18wj44x">
+      <bpmn2:incoming>SequenceFlow_13d9g1n</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_18wj44x</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1vprtt9</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_18wj44x" name="no" sourceRef="ExclusiveGateway_07rr3wp" targetRef="IntermediateThrowEvent_0f2w7aj" />
+    <bpmn2:scriptTask id="Task_0qlkmvt" name="Prepare resource recipe Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0uiygod</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1u9k0dm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCreateResources()
+ddsi.prepareResourceRecipeRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="Task_12ghoph" name="Execute Resource Recipe" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1u9k0dm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13c7bhn</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCreateResources()
+ddsi.executeResourceRecipe(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0bq4fxs" name="Go to StratPrepareService">
+      <bpmn2:incoming>SequenceFlow_0w9t6tc</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartPrepareResource" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1qiiycn" sourceRef="createSI_startEvent" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0w9t6tc" sourceRef="preProcessRequest_ScriptTask" targetRef="IntermediateThrowEvent_0bq4fxs" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0f2w7aj" name="GoTo ResourceLoop">
+      <bpmn2:incoming>SequenceFlow_18wj44x</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_11f2zuu</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="ResourceLoop" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1vprtt9" name="yes" sourceRef="ExclusiveGateway_07rr3wp" targetRef="Task_1blaq0f">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("isContainsWanResource" )  == "true" )}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_05dus9b" name="StartPrepareResource">
+      <bpmn2:outgoing>SequenceFlow_1hbesp9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartPrepareResource" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1hbesp9" sourceRef="IntermediateCatchEvent_05dus9b" targetRef="ScriptTask_1y0los4" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_02bah5m" name="ResourceLoop">
+      <bpmn2:outgoing>SequenceFlow_1qozd66</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="ResourceLoop" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_16nxl6h" name="yes" sourceRef="ExclusiveGateway_0n9y4du" targetRef="ScriptTask_1xdjlzm">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("allResourceFinished" )  == "true" )}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0uiygod" sourceRef="ScriptTask_0l4nkqr" targetRef="Task_0qlkmvt" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1u9k0dm" sourceRef="Task_0qlkmvt" targetRef="Task_12ghoph" />
+    <bpmn2:sequenceFlow id="SequenceFlow_13c7bhn" sourceRef="Task_12ghoph" targetRef="ScriptTask_0y4u2ty" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1qozd66" sourceRef="IntermediateCatchEvent_02bah5m" targetRef="ScriptTask_0l4nkqr" />
+    <bpmn2:endEvent id="EndEvent_1ddg1di">
+      <bpmn2:incoming>SequenceFlow_0epxs3b</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0epxs3b" sourceRef="ScriptTask_1xdjlzm" targetRef="EndEvent_1ddg1di" />
+    <bpmn2:subProcess id="SubProcess_0sfdqc1" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_0x7o2ug">
+        <bpmn2:outgoing>SequenceFlow_0gr9xqj</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_0lgdyyb">
+        <bpmn2:incoming>SequenceFlow_0a6l29p</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_1648adp" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0gr9xqj</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0a6l29p</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_0gr9xqj" name="" sourceRef="StartEvent_0x7o2ug" targetRef="ScriptTask_1648adp" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0a6l29p" name="" sourceRef="ScriptTask_1648adp" targetRef="EndEvent_0lgdyyb" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="Task_1blaq0f" name="Prepare SDNC service Create" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1vprtt9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0k0f7lm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCreateResources()
+ddsi.prepareServiceTopologyRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0k0f7lm" sourceRef="Task_1blaq0f" targetRef="Task_0io5qby" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateResourcesV3">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSI_startEvent">
+        <dc:Bounds x="18" y="-207" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="12" y="-166" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="126" y="-229" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1xdjlzm_di" bpmnElement="ScriptTask_1xdjlzm">
+        <dc:Bounds x="1119" y="485" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0qi8cgg_di" bpmnElement="Task_0io5qby">
+        <dc:Bounds x="1047" y="353" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_11f2zuu_di" bpmnElement="SequenceFlow_11f2zuu">
+        <di:waypoint xsi:type="dc:Point" x="1147" y="393" />
+        <di:waypoint xsi:type="dc:Point" x="1219" y="393" />
+        <di:waypoint xsi:type="dc:Point" x="1219" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="1315" y="300" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1189" y="340.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1y0los4_di" bpmnElement="ScriptTask_1y0los4">
+        <dc:Bounds x="444" y="260" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_13d9g1n_di" bpmnElement="SequenceFlow_13d9g1n">
+        <di:waypoint xsi:type="dc:Point" x="544" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="753" y="300" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="603.5" y="279" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0n9y4du_di" bpmnElement="ExclusiveGateway_0n9y4du" isMarkerVisible="true">
+        <dc:Bounds x="929" y="500" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="911" y="454" width="85" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0q6uy30_di" bpmnElement="SequenceFlow_0q6uy30">
+        <di:waypoint xsi:type="dc:Point" x="954" y="550" />
+        <di:waypoint xsi:type="dc:Point" x="954" y="691" />
+        <di:waypoint xsi:type="dc:Point" x="246" y="691" />
+        <di:waypoint xsi:type="dc:Point" x="246" y="565" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="593" y="670" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0y4u2ty_di" bpmnElement="ScriptTask_0y4u2ty">
+        <dc:Bounds x="728" y="485" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jenxlp_di" bpmnElement="SequenceFlow_1jenxlp">
+        <di:waypoint xsi:type="dc:Point" x="828" y="525" />
+        <di:waypoint xsi:type="dc:Point" x="929" y="525" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="833.5" y="504" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0l4nkqr_di" bpmnElement="ScriptTask_0l4nkqr">
+        <dc:Bounds x="196" y="485" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_07rr3wp_di" bpmnElement="ExclusiveGateway_07rr3wp" isMarkerVisible="true">
+        <dc:Bounds x="753" y="275" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="734" y="243" width="88" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_18wj44x_di" bpmnElement="SequenceFlow_18wj44x">
+        <di:waypoint xsi:type="dc:Point" x="803" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="1315" y="300" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="831" y="294" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0u88n0f_di" bpmnElement="Task_0qlkmvt">
+        <dc:Bounds x="357" y="485" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1y17r20_di" bpmnElement="Task_12ghoph">
+        <dc:Bounds x="551" y="485" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_11saqvj_di" bpmnElement="IntermediateThrowEvent_0bq4fxs">
+        <dc:Bounds x="1315" y="-207" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1292" y="-167" width="88" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qiiycn_di" bpmnElement="SequenceFlow_1qiiycn">
+        <di:waypoint xsi:type="dc:Point" x="54" y="-189" />
+        <di:waypoint xsi:type="dc:Point" x="126" y="-189" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="90" y="-210" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0w9t6tc_di" bpmnElement="SequenceFlow_0w9t6tc">
+        <di:waypoint xsi:type="dc:Point" x="226" y="-189" />
+        <di:waypoint xsi:type="dc:Point" x="771" y="-189" />
+        <di:waypoint xsi:type="dc:Point" x="771" y="-189" />
+        <di:waypoint xsi:type="dc:Point" x="1315" y="-189" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="786" y="-195" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0f2w7aj_di" bpmnElement="IntermediateThrowEvent_0f2w7aj">
+        <dc:Bounds x="1315" y="282" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1299" y="323" width="73" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vprtt9_di" bpmnElement="SequenceFlow_1vprtt9">
+        <di:waypoint xsi:type="dc:Point" x="778" y="325" />
+        <di:waypoint xsi:type="dc:Point" x="778" y="393" />
+        <di:waypoint xsi:type="dc:Point" x="861" y="394" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="784" y="353" width="20" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_05dus9b_di" bpmnElement="IntermediateCatchEvent_05dus9b">
+        <dc:Bounds x="18" y="282" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-3" y="318" width="82" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1hbesp9_di" bpmnElement="SequenceFlow_1hbesp9">
+        <di:waypoint xsi:type="dc:Point" x="54" y="300" />
+        <di:waypoint xsi:type="dc:Point" x="444" y="300" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="204" y="279" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_02bah5m_di" bpmnElement="IntermediateCatchEvent_02bah5m">
+        <dc:Bounds x="18" y="507" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2" y="543" width="73" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_16nxl6h_di" bpmnElement="SequenceFlow_16nxl6h">
+        <di:waypoint xsi:type="dc:Point" x="979" y="525" />
+        <di:waypoint xsi:type="dc:Point" x="1119" y="525" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1040" y="504" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0uiygod_di" bpmnElement="SequenceFlow_0uiygod">
+        <di:waypoint xsi:type="dc:Point" x="296" y="525" />
+        <di:waypoint xsi:type="dc:Point" x="357" y="525" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="326.5" y="504" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1u9k0dm_di" bpmnElement="SequenceFlow_1u9k0dm">
+        <di:waypoint xsi:type="dc:Point" x="457" y="525" />
+        <di:waypoint xsi:type="dc:Point" x="551" y="525" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="504" y="504" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_13c7bhn_di" bpmnElement="SequenceFlow_13c7bhn">
+        <di:waypoint xsi:type="dc:Point" x="651" y="525" />
+        <di:waypoint xsi:type="dc:Point" x="728" y="525" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="689.5" y="504" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qozd66_di" bpmnElement="SequenceFlow_1qozd66">
+        <di:waypoint xsi:type="dc:Point" x="54" y="525" />
+        <di:waypoint xsi:type="dc:Point" x="196" y="525" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="125" y="504" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1ddg1di_di" bpmnElement="EndEvent_1ddg1di">
+        <dc:Bounds x="1314.8151147098515" y="506.9419703103914" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1332.8151147098515" y="546.9419703103914" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0epxs3b_di" bpmnElement="SequenceFlow_0epxs3b">
+        <di:waypoint xsi:type="dc:Point" x="1219" y="525" />
+        <di:waypoint xsi:type="dc:Point" x="1315" y="525" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1267" y="504" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_0sfdqc1_di" bpmnElement="SubProcess_0sfdqc1" isExpanded="true">
+        <dc:Bounds x="338" y="817" width="467" height="193" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0x7o2ug_di" bpmnElement="StartEvent_0x7o2ug">
+        <dc:Bounds x="407" y="885" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="335" y="926" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0lgdyyb_di" bpmnElement="EndEvent_0lgdyyb">
+        <dc:Bounds x="700" y="885" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="628" y="926" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1648adp_di" bpmnElement="ScriptTask_1648adp">
+        <dc:Bounds x="511" y="863" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gr9xqj_di" bpmnElement="SequenceFlow_0gr9xqj">
+        <di:waypoint xsi:type="dc:Point" x="443" y="903" />
+        <di:waypoint xsi:type="dc:Point" x="511" y="903" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="387" y="888" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0a6l29p_di" bpmnElement="SequenceFlow_0a6l29p">
+        <di:waypoint xsi:type="dc:Point" x="611" y="903" />
+        <di:waypoint xsi:type="dc:Point" x="700" y="903" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="567.5" y="888" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0dh2mj1_di" bpmnElement="Task_1blaq0f">
+        <dc:Bounds x="861" y="354" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0k0f7lm_di" bpmnElement="SequenceFlow_0k0f7lm">
+        <di:waypoint xsi:type="dc:Point" x="961" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="1047" y="393" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1004" y="372.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstance.bpmn
new file mode 100644
index 0000000..29116a6
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstance.bpmn
@@ -0,0 +1,515 @@
+<?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="DoCreateServiceInstance" name="DoCreateServiceInstance" isExecutable="true">
+    <bpmn2:startEvent id="createSI_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createSI_startEvent" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:scriptTask id="getAAICustomerById_scriptTask" name="Get AAI Customer By globalCustomerId " scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateServiceInstance()
+dcsi.getAAICustomerById(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="getAAICustomerById_scriptTask" targetRef="ExclusiveGateway_09wkav2" />
+    <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateServiceInstance()
+dcsi.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="callGenericGetService" targetRef="ScriptTask_0i8cqdy" />
+    <bpmn2:scriptTask id="PreProcessSDNCAssignRequest" name="PreProcess SDNC Assign Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_156ih25</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+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.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateServiceInstance()
+dcsi.postProcessSDNCAssign(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallSDNCAdapterServiceTopologyAssign" name="Call SDNC Adapter Service Topology Assign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncAssignRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncAdapterResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_01q6pl4</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="getAAICustomerById_scriptTask" />
+    <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="PreProcessSDNCAssignRequest" targetRef="CallSDNCAdapterServiceTopologyAssign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="CallSDNCAdapterServiceTopologyAssign" targetRef="PostProcessSDNCAssignRequest" />
+    <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="PostProcessSDNCAssignRequest" targetRef="CallActivity_1707jgc" />
+    <bpmn2:callActivity id="callGenericGetService" name="Call GenericGetService" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceName" target="GENGS_serviceInstanceName" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_11fnnkb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="callGenericPutService" name="Call Generic Put Service" calledElement="GenericPutService">
+      <bpmn2:extensionElements>
+        <camunda:in source="globalSubscriberId" target="GENPS_globalSubscriberId" />
+        <camunda:in source="serviceInstanceId" target="GENPS_serviceInstanceId" />
+        <camunda:in source="subscriptionServiceType" target="GENPS_serviceType" />
+        <camunda:in sourceExpression="service-instance" target="GENPS_type" />
+        <camunda:in source="serviceInstanceData" target="GENPS_payload" />
+        <camunda:out source="GENPS_SuccessIndicator" target="GENPS_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="GENPS_requesId" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1uw2p9a</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1w01tqs</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1jhzmzn</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <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("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 errorRef="Error_2" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_117lkk3">
+        <bpmn2:incoming>SequenceFlow_1xzgv5k</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:callActivity id="CallActivity_1srx6p6" name="Call DoCreateServiceInstanceRollback" calledElement="DoCreateServiceInstanceRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="mso-request-id" />
+          <camunda:in source="rollbackData" target="rollbackData" />
+          <camunda:out source="rolledBack" target="rolledBack" />
+          <camunda:in source="disableRollback" target="disableRollback" />
+          <camunda:out source="rollbackError" target="rollbackErrror" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1lqktwf</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0eumzpf</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_0eumzpf" sourceRef="CallActivity_1srx6p6" targetRef="ScriptTask_1p0vyip" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0tgrn11" sourceRef="StartEvent_0yljq9y" targetRef="ScriptTask_0ocetux" />
+      <bpmn2:scriptTask id="ScriptTask_0ocetux" name="Pre Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0tgrn11</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1lqktwf</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateServiceInstance()
+dcsi.preProcessRollback(execution)
+]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1lqktwf" sourceRef="ScriptTask_0ocetux" targetRef="CallActivity_1srx6p6" />
+      <bpmn2:scriptTask id="ScriptTask_1p0vyip" name="Post Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0eumzpf</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1xzgv5k</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+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 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>
+    <bpmn2:sequenceFlow id="SequenceFlow_156ih25" name="no" sourceRef="ExclusiveGateway_1nk6aol" targetRef="PreProcessSDNCAssignRequest" />
+    <bpmn2:endEvent id="EndEvent_10659gr">
+      <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("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.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateServiceInstance()
+dcsi.postProcessAAIGET(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1w01tqs" sourceRef="ScriptTask_0i8cqdy" targetRef="callGenericPutService" />
+    <bpmn2:callActivity id="CallActivity_1707jgc" name="Call GenericGetService2" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in source="subscriptionServiceType" target="GENGS_serviceType" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0tx5frq</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0tx5frq" sourceRef="CallActivity_1707jgc" targetRef="ScriptTask_1tp0fcx" />
+    <bpmn2:sequenceFlow id="SequenceFlow_01q6pl4" sourceRef="ScriptTask_1tp0fcx" targetRef="EndEvent_3" />
+    <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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateServiceInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSI_startEvent">
+        <dc:Bounds x="152" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="147" y="120" width="48" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="245" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="188" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="245" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="217" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_62" bpmnElement="getAAICustomerById_scriptTask">
+        <dc:Bounds x="393" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_62">
+        <di:waypoint xsi:type="dc:Point" x="493" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="565" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="529" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1122" y="1297" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1095" y="1338" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_4">
+        <di:waypoint xsi:type="dc:Point" x="839" y="94" />
+        <di:waypoint xsi:type="dc:Point" x="971" y="94" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="905" y="79" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_334" bpmnElement="PreProcessSDNCAssignRequest">
+        <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="1054" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_74" bpmnElement="CallSDNCAdapterServiceTopologyAssign">
+        <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" />
+        <di:waypoint xsi:type="dc:Point" x="393" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="369" y="82" width="0" height="0" />
+        </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="890" />
+        <di:waypoint xsi:type="dc:Point" x="1020" y="930" />
+        <bpmndi:BPMNLabel>
+          <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="1010" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="1054" />
+        <bpmndi:BPMNLabel>
+          <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="1134" />
+        <di:waypoint xsi:type="dc:Point" x="1024" y="1162" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="994" y="1148" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1md4kyb_di" bpmnElement="callGenericGetService">
+        <dc:Bounds x="739" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0khp0qc_di" bpmnElement="callGenericPutService">
+        <dc:Bounds x="972" y="206" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <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="27" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_11fnnkb_di" bpmnElement="SequenceFlow_11fnnkb">
+        <di:waypoint xsi:type="dc:Point" x="615" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="635" y="76" width="18" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1uw2p9a_di" bpmnElement="SequenceFlow_1uw2p9a">
+        <di:waypoint xsi:type="dc:Point" x="590" y="122" />
+        <di:waypoint xsi:type="dc:Point" x="590" y="246" />
+        <di:waypoint xsi:type="dc:Point" x="972" y="246" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="594" y="132.89706349694825" width="12" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_06d8lk8_di" bpmnElement="SubProcess_06d8lk8" isExpanded="true">
+        <dc:Bounds x="99" y="531" width="783" height="195" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0yljq9y_di" bpmnElement="StartEvent_0yljq9y">
+        <dc:Bounds x="195" y="608" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="213" y="649" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_117lkk3_di" bpmnElement="EndEvent_117lkk3">
+        <dc:Bounds x="828" y="608" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="846" y="649" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1srx6p6_di" bpmnElement="CallActivity_1srx6p6">
+        <dc:Bounds x="493" y="586" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eumzpf_di" bpmnElement="SequenceFlow_0eumzpf">
+        <di:waypoint xsi:type="dc:Point" x="593" y="626" />
+        <di:waypoint xsi:type="dc:Point" x="661" y="626" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="627" y="611" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0tgrn11_di" bpmnElement="SequenceFlow_0tgrn11">
+        <di:waypoint xsi:type="dc:Point" x="231" y="626" />
+        <di:waypoint xsi:type="dc:Point" x="330" y="626" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="281" y="611" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1nk6aol_di" bpmnElement="ExclusiveGateway_1nk6aol" isMarkerVisible="true">
+        <dc:Bounds x="997" y="717" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="767" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="810" />
+        <bpmndi:BPMNLabel>
+          <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="1105" y="724" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="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="1050.5" y="718" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0i8cqdy_di" bpmnElement="ScriptTask_0i8cqdy">
+        <dc:Bounds x="971" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1w01tqs_di" bpmnElement="SequenceFlow_1w01tqs">
+        <di:waypoint xsi:type="dc:Point" x="1021" y="137" />
+        <di:waypoint xsi:type="dc:Point" x="1021" y="172" />
+        <di:waypoint xsi:type="dc:Point" x="1021" y="172" />
+        <di:waypoint xsi:type="dc:Point" x="1021" y="206" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1036" y="172" 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>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lqktwf_di" bpmnElement="SequenceFlow_1lqktwf">
+        <di:waypoint xsi:type="dc:Point" x="430" y="626" />
+        <di:waypoint xsi:type="dc:Point" x="493" y="626" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="462" y="611" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1p0vyip_di" bpmnElement="ScriptTask_1p0vyip">
+        <dc:Bounds x="661" y="586" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xzgv5k_di" bpmnElement="SequenceFlow_1xzgv5k">
+        <di:waypoint xsi:type="dc:Point" x="761" y="626" />
+        <di:waypoint xsi:type="dc:Point" x="793" y="626" />
+        <di:waypoint xsi:type="dc:Point" x="793" y="626" />
+        <di:waypoint xsi:type="dc:Point" x="828" y="626" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="808" y="626" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1707jgc_di" bpmnElement="CallActivity_1707jgc">
+        <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="1242" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="1275" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="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/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstanceRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstanceRollback.bpmn
new file mode 100644
index 0000000..eb3e35f
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstanceRollback.bpmn
@@ -0,0 +1,373 @@
+<?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.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>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createSIRollback_startEvent" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def rbk = new DoCreateServiceInstanceRollback()
+rbk.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_01l4ssl</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1">
+        <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1">
+        <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" />
+      <bpmn2:scriptTask id="ScriptTask_1" name="Handle Errors" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def rbk= new DoCreateServiceInstanceRollback()
+rbk.processRollbackException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" />
+    </bpmn2:subProcess>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="ExclusiveGateway_19tbjgn" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_09wkav2" name="RollbackSDNC?" default="SequenceFlow_1uw2p9a">
+      <bpmn2:incoming>SequenceFlow_06aasqh</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="CallActivity_0ak0ezb">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rollbackSDNC" )  == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1uw2p9a" name="no" sourceRef="ExclusiveGateway_09wkav2" targetRef="ExclusiveGateway_0ii31dq" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0ii31dq" name="RollBackAAI?" default="SequenceFlow_1n7wade">
+      <bpmn2:documentation>rollback AAI</bpmn2:documentation>
+      <bpmn2:incoming>SequenceFlow_1uw2p9a</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1njogr1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1n7wade</bpmn2:outgoing>
+      <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_0k28xib" sourceRef="CallActivity_0ak0ezb" targetRef="ScriptTask_1uxr0cx" />
+    <bpmn2:callActivity id="CallActivity_0ak0ezb" name="Call SDNC Service Topology Deactivate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeactivate" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_11fnnkb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0k28xib</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_1uxr0cx" name="Post Process SDNC Deactivate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0k28xib</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0khjo7l</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+String response = execution.getVariable("sdncDeactivateResponse")
+def rbk= new DoCreateServiceInstanceRollback()
+rbk.validateSDNCResponse(execution, response, "deactivate")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0khjo7l" sourceRef="ScriptTask_1uxr0cx" targetRef="CallActivity_0ppz9nd" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_19tbjgn" name="skip Rollback" default="SequenceFlow_06aasqh">
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_06aasqh</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1rzlaoy</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:scriptTask id="PostProcess_ScriptTask" name="Post Process Request" scriptFormat="groovy">
+      <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.onap.so.bpmn.infrastructure.scripts.*
+def rbk = new DoCreateServiceInstanceRollback()
+rbk.postProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_01l4ssl" sourceRef="PostProcess_ScriptTask" targetRef="EndEvent_3" />
+    <bpmn2:sequenceFlow id="SequenceFlow_06aasqh" name="no" sourceRef="ExclusiveGateway_19tbjgn" targetRef="ExclusiveGateway_09wkav2" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1rzlaoy" name="yes" sourceRef="ExclusiveGateway_19tbjgn" targetRef="PostProcess_ScriptTask">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" )  == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:subProcess id="SubProcess_11bi8mc" name="Java Exception Handling Sub Process" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1gxe17c">
+        <bpmn2:outgoing>SequenceFlow_1ch4xrf</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:scriptTask id="ScriptTask_15yddb0" name="Process Java Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1ch4xrf</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1pjk2ff</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def rbk= new DoCreateServiceInstanceRollback()
+rbk.processRollbackJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:endEvent id="EndEvent_12e3h6k">
+        <bpmn2:incoming>SequenceFlow_1pjk2ff</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition />
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_1ch4xrf" name="" sourceRef="StartEvent_1gxe17c" targetRef="ScriptTask_15yddb0" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1pjk2ff" name="" sourceRef="ScriptTask_15yddb0" targetRef="EndEvent_12e3h6k" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="ScriptTask_1awt1ds" name="Post Process SDNC Delete">
+      <bpmn2:incoming>SequenceFlow_006g9e8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1njogr1</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+String response = execution.getVariable("sdncDeleteResponse")
+def rbk= new DoCreateServiceInstanceRollback()
+rbk.validateSDNCResponse(execution, response, "delete")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_0ppz9nd" name="Call SDNC Service Topology Dekete" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDelete" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0khjo7l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_006g9e8</bpmn2:outgoing>
+    </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.onap.so.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" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateServiceInstanceRollback">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSIRollback_startEvent">
+        <dc:Bounds x="151" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="146" y="120" width="48" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="234" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="187" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="234" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="211" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1208" y="350" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1226" y="391" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true">
+        <dc:Bounds x="508" y="323" width="467" height="193" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1">
+        <dc:Bounds x="576" y="389" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="594" y="430" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1">
+        <dc:Bounds x="869" y="389" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="887" y="430" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269">
+        <di:waypoint xsi:type="dc:Point" x="612" y="407" />
+        <di:waypoint xsi:type="dc:Point" x="680" y="407" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="647" y="392" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="334" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="366" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="350" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_09wkav2_di" bpmnElement="ExclusiveGateway_09wkav2" isMarkerVisible="true">
+        <dc:Bounds x="448" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="433" y="129" width="79" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_11fnnkb_di" bpmnElement="SequenceFlow_11fnnkb">
+        <di:waypoint xsi:type="dc:Point" x="498" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="539" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="501" y="100" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1uw2p9a_di" bpmnElement="SequenceFlow_1uw2p9a">
+        <di:waypoint xsi:type="dc:Point" x="473" y="72" />
+        <di:waypoint xsi:type="dc:Point" x="473" y="-23" />
+        <di:waypoint xsi:type="dc:Point" x="1071" y="-23" />
+        <di:waypoint xsi:type="dc:Point" x="1071" y="72" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="751" y="-41" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0ii31dq_di" bpmnElement="ExclusiveGateway_0ii31dq" isMarkerVisible="true">
+        <dc:Bounds x="1046" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1094" y="104" width="66" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1n7wade_di" bpmnElement="SequenceFlow_1n7wade">
+        <di:waypoint xsi:type="dc:Point" x="1071" y="122" />
+        <di:waypoint xsi:type="dc:Point" x="1071" y="241" />
+        <di:waypoint xsi:type="dc:Point" x="1176" y="241" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1081" y="124.63709677419354" width="12" 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" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0ak0ezb_di" bpmnElement="CallActivity_0ak0ezb">
+        <dc:Bounds x="539" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1uxr0cx_di" bpmnElement="ScriptTask_1uxr0cx">
+        <dc:Bounds x="671" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0khjo7l_di" bpmnElement="SequenceFlow_0khjo7l">
+        <di:waypoint xsi:type="dc:Point" x="771" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="796" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="784" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_19tbjgn_di" bpmnElement="ExclusiveGateway_19tbjgn" isMarkerVisible="true">
+        <dc:Bounds x="366" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="358" y="54" width="65" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="680" y="367" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219">
+        <di:waypoint xsi:type="dc:Point" x="780" y="407" />
+        <di:waypoint xsi:type="dc:Point" x="869" y="407" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="825" y="392" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1wk55es_di" bpmnElement="PostProcess_ScriptTask">
+        <dc:Bounds x="1176" y="201" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_01l4ssl_di" bpmnElement="SequenceFlow_01l4ssl">
+        <di:waypoint xsi:type="dc:Point" x="1226" y="281" />
+        <di:waypoint xsi:type="dc:Point" x="1226" y="350" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1241" y="315.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06aasqh_di" bpmnElement="SequenceFlow_06aasqh">
+        <di:waypoint xsi:type="dc:Point" x="416" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="448" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="426" y="82" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rzlaoy_di" bpmnElement="SequenceFlow_1rzlaoy">
+        <di:waypoint xsi:type="dc:Point" x="391" y="122" />
+        <di:waypoint xsi:type="dc:Point" x="391" y="268" />
+        <di:waypoint xsi:type="dc:Point" x="1176" y="267" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="397" y="195" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_11bi8mc_di" bpmnElement="SubProcess_11bi8mc" isExpanded="true">
+        <dc:Bounds x="325" y="576" width="419" height="150" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1gxe17c_di" bpmnElement="StartEvent_1gxe17c">
+        <dc:Bounds x="360" y="628" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="378" y="669" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_15yddb0_di" bpmnElement="ScriptTask_15yddb0">
+        <dc:Bounds x="468" y="606" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_12e3h6k_di" bpmnElement="EndEvent_12e3h6k">
+        <dc:Bounds x="618" y="628" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="636" y="669" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ch4xrf_di" bpmnElement="SequenceFlow_1ch4xrf">
+        <di:waypoint xsi:type="dc:Point" x="396" y="646" />
+        <di:waypoint xsi:type="dc:Point" x="468" y="646" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="421" y="646" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1pjk2ff_di" bpmnElement="SequenceFlow_1pjk2ff">
+        <di:waypoint xsi:type="dc:Point" x="568" y="646" />
+        <di:waypoint xsi:type="dc:Point" x="618" y="646" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="593" y="646" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1awt1ds_di" bpmnElement="ScriptTask_1awt1ds">
+        <dc:Bounds x="921" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0ppz9nd_di" bpmnElement="CallActivity_0ppz9nd">
+        <dc:Bounds x="796" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_006g9e8_di" bpmnElement="SequenceFlow_006g9e8">
+        <di:waypoint xsi:type="dc:Point" x="896" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="921" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="909" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1njogr1_di" bpmnElement="SequenceFlow_1njogr1">
+        <di:waypoint xsi:type="dc:Point" x="1021" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1046" y="97" />
+        <bpmndi:BPMNLabel>
+          <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/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstanceRollbackV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstanceRollbackV2.bpmn
new file mode 100644
index 0000000..88a99c2
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/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.onap.so.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.onap.so.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/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstanceV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateServiceInstanceV2.bpmn
new file mode 100644
index 0000000..e8dbc8c
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/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.onap.so.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.onap.so.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.onap.so.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.onap.so.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/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVFCNetworkServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVFCNetworkServiceInstance.bpmn
new file mode 100644
index 0000000..c151370
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVFCNetworkServiceInstance.bpmn
@@ -0,0 +1,261 @@
+<?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.10.0">
+  <bpmn:process id="DoCreateVFCNetworkServiceInstance" name="DoCreateVFCNetworkServiceInstance" isExecutable="true">
+    <bpmn:startEvent id="createNS_StartEvent" name="createNS_StartEvent">
+      <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="createNS_StartEvent" targetRef="PreprocessIncomingRequest_task" />
+    <bpmn:sequenceFlow id="SequenceFlow_0khtova" sourceRef="PreprocessIncomingRequest_task" targetRef="Task_09nzhwk" />
+    <bpmn:sequenceFlow id="SequenceFlow_1uiz85h" sourceRef="Task_09nzhwk" targetRef="ExclusiveGateway_0zfksms" />
+    <bpmn:scriptTask id="Task_09nzhwk" name="Create Network Service" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0khtova</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1uiz85h</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateVFCNetworkServiceInstance()
+dcsi.createNetworkService(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="Preprocess Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0khtova</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateVFCNetworkServiceInstance()
+dcsi.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="instantiate_NSTask" name="Instantiate Network Service" scriptFormat="groovy">
+      <bpmn:incoming>createNSSuccess_SequenceFlow</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ywe21t</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateVFCNetworkServiceInstance()
+dcsi.instantiateNetworkService(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0zfksms" name="Create NS Success?">
+      <bpmn:incoming>SequenceFlow_1uiz85h</bpmn:incoming>
+      <bpmn:outgoing>createNSSuccess_SequenceFlow</bpmn:outgoing>
+      <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("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("nsInstanceName" )  == null || execution.getVariable("nsInstanceName" )  == "" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1is7zys" name="Instantiate NS Success?">
+      <bpmn:incoming>SequenceFlow_1ywe21t</bpmn:incoming>
+      <bpmn:outgoing>instantiateFailed_SequenceFlow</bpmn:outgoing>
+      <bpmn:outgoing>instantiateSuccess_SequenceFlow</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1ywe21t" sourceRef="instantiate_NSTask" targetRef="ExclusiveGateway_1is7zys" />
+    <bpmn:sequenceFlow id="instantiateFailed_SequenceFlow" name="no" sourceRef="ExclusiveGateway_1is7zys" targetRef="EndEvent_1gkvvpn">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" )  == null || execution.getVariable("jobId" )  == "" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="instantiateSuccess_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_1is7zys" targetRef="queryJob_Task">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" )  != null && execution.getVariable("jobId" )  != "" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_15492gl" name="Instantiate Finished?">
+      <bpmn:incoming>SequenceFlow_0xqo13p</bpmn:incoming>
+      <bpmn:outgoing>operationFinished_SequenceFlow</bpmn:outgoing>
+      <bpmn:outgoing>operationProcessing_SequenceFlow</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="operationFinished_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_15492gl" targetRef="finishNSCreate_Task">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationStatus" )  != "processing" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="operationProcessing_SequenceFlow" name="no" sourceRef="ExclusiveGateway_15492gl" targetRef="timeDelay_Task">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationStatus" )  == "processing" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0cq2q6g" sourceRef="finishNSCreate_Task" targetRef="EndEvent_1x6k78c" />
+    <bpmn:endEvent id="createNSFailed_EndEvent" name="createNSFailed">
+      <bpmn:incoming>createNSFailed_SequenceFlow</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="EndEvent_1gkvvpn">
+      <bpmn:incoming>instantiateFailed_SequenceFlow</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="EndEvent_1x6k78c">
+      <bpmn:incoming>SequenceFlow_0cq2q6g</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="queryJob_Task" name="Query NS Progress" scriptFormat="groovy">
+      <bpmn:incoming>instantiateSuccess_SequenceFlow</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1gsbpxj</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0xqo13p</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateVFCNetworkServiceInstance()
+dcsi.queryNSProgress(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <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.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateVFCNetworkServiceInstance()
+dcsi.finishNSCreate(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0xqo13p" sourceRef="queryJob_Task" targetRef="ExclusiveGateway_15492gl" />
+    <bpmn:scriptTask id="timeDelay_Task" name="timeDelay" scriptFormat="groovy">
+      <bpmn:incoming>operationProcessing_SequenceFlow</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1gsbpxj</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateVFCNetworkServiceInstance()
+dcsi.timeDelay(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1gsbpxj" sourceRef="timeDelay_Task" targetRef="queryJob_Task" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVFCNetworkServiceInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="createNS_StartEvent">
+        <dc:Bounds x="175" y="111" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="152" y="147" width="83" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln">
+        <di:waypoint xsi:type="dc:Point" x="211" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="251" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="251" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="293" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="266" y="123" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0khtova_di" bpmnElement="SequenceFlow_0khtova">
+        <di:waypoint xsi:type="dc:Point" x="393" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="479" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="436" y="108" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1uiz85h_di" bpmnElement="SequenceFlow_1uiz85h">
+        <di:waypoint xsi:type="dc:Point" x="579" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="683" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="631" y="108" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1dw39hg_di" bpmnElement="Task_09nzhwk">
+        <dc:Bounds x="479" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task">
+        <dc:Bounds x="293" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qmmew8_di" bpmnElement="instantiate_NSTask">
+        <dc:Bounds x="839" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0zfksms_di" bpmnElement="ExclusiveGateway_0zfksms" isMarkerVisible="true">
+        <dc:Bounds x="683" y="104" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="685" y="158" width="52" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rt03zl_di" bpmnElement="createNSSuccess_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="733" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="839" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="777" y="108" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0df541u_di" bpmnElement="createNSFailed_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="708" y="104" />
+        <di:waypoint xsi:type="dc:Point" x="708" y="33" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="717" y="63" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1is7zys_di" bpmnElement="ExclusiveGateway_1is7zys" isMarkerVisible="true">
+        <dc:Bounds x="1034" y="105" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1029" y="159" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ywe21t_di" bpmnElement="SequenceFlow_1ywe21t">
+        <di:waypoint xsi:type="dc:Point" x="939" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="1034" y="130" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="986.5" y="108.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0j7xo94_di" bpmnElement="instantiateFailed_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="105" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="33" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1068" y="63" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ui2n9l_di" bpmnElement="instantiateSuccess_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="155" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="271" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1066" y="207" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_15492gl_di" bpmnElement="ExclusiveGateway_15492gl" isMarkerVisible="true">
+        <dc:Bounds x="1034" y="570" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1038" y="624" width="50" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0hftgi6_di" bpmnElement="operationFinished_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1034" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="909" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="909" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="783" y="595" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="963" y="574" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0omec46_di" bpmnElement="operationProcessing_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1084" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="1212" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="1212" y="486" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1131" y="607" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0cq2q6g_di" bpmnElement="SequenceFlow_0cq2q6g">
+        <di:waypoint xsi:type="dc:Point" x="683" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="520" y="595" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="556.5" y="574" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1ido9wi_di" bpmnElement="createNSFailed_EndEvent">
+        <dc:Bounds x="690" y="-3" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="626" y="37" width="75" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0xgvlmx_di" bpmnElement="EndEvent_1gkvvpn">
+        <dc:Bounds x="1041" y="-3" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1014" y="37" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c">
+        <dc:Bounds x="484" y="577" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="412" y="617" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0sxy5we_di" bpmnElement="queryJob_Task">
+        <dc:Bounds x="1009" y="271" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0xxyfku_di" bpmnElement="finishNSCreate_Task">
+        <dc:Bounds x="683" y="555" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xqo13p_di" bpmnElement="SequenceFlow_0xqo13p">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="351" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="570" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1074" y="454.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0rb5agx_di" bpmnElement="timeDelay_Task">
+        <dc:Bounds x="1162" y="406" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1gsbpxj_di" bpmnElement="SequenceFlow_1gsbpxj">
+        <di:waypoint xsi:type="dc:Point" x="1212" y="406" />
+        <di:waypoint xsi:type="dc:Point" x="1212" y="311" />
+        <di:waypoint xsi:type="dc:Point" x="1109" y="311" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1227" y="352.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModule.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModule.bpmn
new file mode 100644
index 0000000..820d117
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModule.bpmn
@@ -0,0 +1,1701 @@
+<?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="_pNTO8MRhEeWv36YLr7PC3Q" 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="DoCreateVfModule" name="DoCreateVfModule" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1" name="Start">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="PreProcessRequest" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1" name="DoCreateVfModule">
+      <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_26" name="DoCreateVfModule" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="IntermediateCatchEvent_1" targetRef="IsVolumeGroupIdSpecified" />
+    <bpmn2:exclusiveGateway id="IsVolumeGroupIdSpecified" name="Is volume_group_id specified?" default="SequenceFlow_11">
+      <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_40</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_11" name="no" sourceRef="IsVolumeGroupIdSpecified" targetRef="ExclusiveGateway_4" />
+    <bpmn2:callActivity id="ConfirmVolumeGroupTenant" 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_43</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ConfirmVolumeGroupTenant" targetRef="IsVolumeGroupNameSpecified" />
+    <bpmn2:exclusiveGateway id="IsVolumeGroupNameSpecified" name="Is volume_group_name specified?" default="SequenceFlow_21">
+      <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_19" name="yes" sourceRef="IsVolumeGroupNameSpecified" targetRef="ConfirmVolumeName">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFM_volumeGroupName") != null && execution.getVariable("DCVFM_volumeGroupName") != "" }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_21" name="no" sourceRef="IsVolumeGroupNameSpecified" targetRef="ExclusiveGateway_4" />
+    <bpmn2:callActivity id="ConfirmVolumeName" name="Confirm Volume Group Name" calledElement="ConfirmVolumeGroupName">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVFM_volumeGroupId" target="ConfirmVolumeGroupName_volumeGroupId" />
+        <camunda:in source="DCVFM_volumeGroupName" target="ConfirmVolumeGroupName_volumeGroupName" />
+        <camunda:in source="DCVFM_cloudRegionForVolume" target="ConfirmVolumeGroupName_aicCloudRegion" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="WorkflowResponse" target="DCVM_confirmResponse" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="ConfirmVolumeName" targetRef="ExclusiveGateway_4" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_4">
+      <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ExclusiveGateway_4" targetRef="CreateAAIVfModule" />
+    <bpmn2:callActivity id="CallSDNCAdapterVDModuleTopologyAssign" name="Call SDNC Adapter: VF Module Topology Assign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVFM_assignSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <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="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="DCVFM_assignSDNCAdapterResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_20</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCAssignRequest" name="PostProcess SDNC Assign  Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_20</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1nh92s8</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+
+String response = execution.getVariable("DCVFM_assignSDNCAdapterResponse")
+
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.validateSDNCResponse(execution, response, "assign")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCAssignRequest" name="PreProcess SDNC Assign Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.preProcessSDNCAssignRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <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_0p61zug</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0aegg0r</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.preProcessSDNCGetRequest(execution, "vfmodule")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallSDNCAdapterVFModuleTopologyGET" name="Call SDNC Adapter: VF Module Topology GET" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVFM_getSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="DCVFM_getSDNCAdapterResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <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">
+      <bpmn2:incoming>SequenceFlow_24</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_31</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+
+String response = execution.getVariable("DCVFM_getSDNCAdapterResponse")
+
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.validateSDNCResponse(execution, response, "get")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="UpdateAAIVfModule_1" name="UpdateAAIVfModule" 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="DCVM_updateAAIVfModuleResponse" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PreProcessUpdateAAIVfModule_1" name="PreProcess Update AAIVfModule" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1avfxsz</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.preProcessUpdateAAIVfModuleRequestOrch(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCActivateRequest" name="PreProcess SDNC Activate Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.preProcessSDNCActivateRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallSDNCAdapterVFModuleTopologyActivate" name="Call SDNC Adapter: VF Module Topology Activate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVFM_activateSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <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="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="DCVFM_activateSDNCAdapterResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCActivateRequest" name="PostProcess SDNC Activate Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+      
+      String response = execution.getVariable("DCVFM_activateSDNCAdapterResponse")
+      
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.validateSDNCResponse(execution, response, "activate")]]></bpmn2:script>
+    </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_30</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_28</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <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" />
+    <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="PreProcessSDNCActivateRequest" targetRef="CallSDNCAdapterVFModuleTopologyActivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="CallSDNCAdapterVFModuleTopologyActivate" targetRef="PostProcessSDNCActivateRequest" />
+    <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="PostProcessSDNCActivateRequest" targetRef="ExclusiveGateway_5" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" name="UpdateAndActivate">
+      <bpmn2:outgoing>SequenceFlow_0363dz7</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_30" name="UpdateAndActivate" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_2" name="Provision">
+      <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_29" name="Provision" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="IntermediateCatchEvent_2" targetRef="PreProcessSDNCAssignRequest" />
+    <bpmn2:scriptTask id="PrepareCreateAAIVfModuleVolumeGroupRequest" name="Prepare CreateAAIVfModuleVolumeGroup Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_28</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.prepareCreateAAIVfModuleVolumeGroupRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CreateAAIVfModuleVolumeGroup" name="CreateAAIVfModuleVolumeGroup" calledElement="CreateAAIVfModuleVolumeGroup">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVFM_createAAIVfModuleVolumeGroupRequest" target="CreateAAIVfModuleVolumeGroupRequest" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="WorkflowResponse" target="DCVM_updateAAIVfModuleResponse" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="CreateAAIVfModuleVolumeGroup" targetRef="ExclusiveGateway_6" />
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="PrepareCreateAAIVfModuleVolumeGroupRequest" targetRef="CreateAAIVfModuleVolumeGroup" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_6">
+      <bpmn2:incoming>SequenceFlow_30</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="ExclusiveGateway_6" targetRef="ScriptTask_setSuccess" />
+    <bpmn2:scriptTask id="PreProcessVNFAdapterRequest" name="PreProcess VNF Adapter Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_31</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_32</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.preProcessVNFAdapterRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallVNFAdapterVFModuleCreate" name="Call VNF Adapter to create VF Module" calledElement="vnfAdapterRestV1">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVFM_createVnfARequest" target="vnfAdapterRestV1Request" />
+        <camunda:out source="vnfAdapterRestV1Response" target="DCVFM_createVnfAResponse" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:in variables="all" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_32</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_33</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessVNFAdapterRequest" name="PostProcess VNF Adapter Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_33</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ushk1d</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.postProcessVNFAdapterRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_2" name="To UpdateAndActivate">
+      <bpmn2:incoming>SequenceFlow_0xfanpi</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0abffyj</bpmn2:incoming>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_31" name="UpdateAndActivate" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_31" name="" sourceRef="PostProcessSDNCGetRequest" targetRef="PreProcessVNFAdapterRequest" />
+    <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="PreProcessVNFAdapterRequest" targetRef="CallVNFAdapterVFModuleCreate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_33" name="" sourceRef="CallVNFAdapterVFModuleCreate" targetRef="PostProcessVNFAdapterRequest" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_3" name="To Provision">
+      <bpmn2:incoming>SequenceFlow_0zcfn2x</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_170kw7h</bpmn2:incoming>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_28" name="Provision" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_2" name="Need to query SDNC for VNF Topology?" default="SequenceFlow_0zcfn2x">
+      <bpmn2:incoming>SequenceFlow_39</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_37</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0zcfn2x</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0m382su</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:scriptTask id="PostProcessCreateAAIVfModule" name="PostProcess CreateAAIVfModule" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_25</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_27</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.postProcessCreateAAIVfModule(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_27" name="" sourceRef="PostProcessCreateAAIVfModule" targetRef="IsBaseVfModule" />
+    <bpmn2:exclusiveGateway id="IsBaseVfModule" name="Is Base VF Module?" default="SequenceFlow_36">
+      <bpmn2:incoming>SequenceFlow_27</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_36</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_39</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_36" name="no" sourceRef="IsBaseVfModule" targetRef="QueryAAIVfModule" />
+    <bpmn2:sequenceFlow id="SequenceFlow_39" name="yes" sourceRef="IsBaseVfModule" targetRef="ExclusiveGateway_2">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DCVFM_isBaseVfModule") == "true"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:scriptTask id="QueryAAIVfModule" name="Query AAI Vf Module" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_36</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_37</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.queryAAIVfModule(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_37" name="" sourceRef="QueryAAIVfModule" targetRef="ExclusiveGateway_2" />
+    <bpmn2:scriptTask id="ScriptTask_setSuccess" name="Set Success Indicator" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.setSuccessIndicator(execution, true)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_setSuccess" targetRef="EndEvent_1" />
+    <bpmn2:endEvent id="EndEvent_1">
+      <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_8" />
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="QueryCloudRegion" name="Query Cloud Region" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_40</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_43</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+return doCreateVfModule.queryCloudRegion(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_40" name="yes" sourceRef="IsVolumeGroupIdSpecified" targetRef="QueryCloudRegion">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFM_volumeGroupId") != null && execution.getVariable("DCVFM_volumeGroupId") != "" }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_43" name="" sourceRef="QueryCloudRegion" targetRef="ConfirmVolumeGroupTenant" />
+    <bpmn2:scriptTask id="PreProcessRequest" name="Pre-Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <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>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_25" name="DoCreateVfModule" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:callActivity id="CreateAAIVfModule" name="CreateAAIVfModule" calledElement="CreateAAIVfModule">
+      <bpmn2:extensionElements>
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="isVidRequest" target="isVidRequest" />
+        <camunda:in source="DCVFM_vfModuleId" target="newVfModuleId" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="CreateAAIVfModuleResponse" target="DCVFM_createVfModuleResponse" />
+        <camunda:in source="DCVFM_vnfId" target="vnfId" />
+        <camunda:in source="DCVFM_vnfName" target="vnfName" />
+        <camunda:in source="DCVFM_vnfType" target="vnfType" />
+        <camunda:in source="DCVFM_serviceId" target="serviceId" />
+        <camunda:in source="DCVFM_personaModelId" target="personaModelId" />
+        <camunda:in source="DCVFM_isBaseVfModule" target="isBaseVfModule" />
+        <camunda:in source="DCVFM_vfModuleName" target="vfModuleName" />
+        <camunda:in source="DCVFM_vfModuleModelName" target="vfModuleModelName" />
+        <camunda:in source="DCVFM_personaModelVersion" target="personaModelVersion" />
+        <camunda:in source="DCVFM_modelCustomizationUuid" target="modelCustomizationId" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_25</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_25" name="" sourceRef="CreateAAIVfModule" targetRef="PostProcessCreateAAIVfModule" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_183x8vk" name="need to create network policies in AAI?" default="SequenceFlow_0xfanpi">
+      <bpmn2:incoming>SequenceFlow_1ushk1d</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ery1pk</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0xfanpi</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ushk1d" sourceRef="PostProcessVNFAdapterRequest" targetRef="ExclusiveGateway_183x8vk" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ery1pk" name="yes" sourceRef="ExclusiveGateway_183x8vk" targetRef="CreateNetworkPoliciesInAAI">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DCVFM_contrailNetworkPolicyFqdnList") != null && !execution.getVariable("DCVFM_contrailNetworkPolicyFqdnList").isEmpty()]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0xfanpi" name="no" sourceRef="ExclusiveGateway_183x8vk" targetRef="IntermediateThrowEvent_2" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0abffyj" sourceRef="CreateNetworkPoliciesInAAI" targetRef="IntermediateThrowEvent_2" />
+    <bpmn2:scriptTask id="CreateNetworkPoliciesInAAI" name="Create Network Policies In AAI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0ery1pk</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0abffyj</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.createNetworkPoliciesInAAI(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0f54imv" name="need to update VNF in AAI?" default="SequenceFlow_1k5uku2">
+      <bpmn2:incoming>SequenceFlow_0363dz7</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0bi38s7</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1k5uku2</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1edqxlf">
+      <bpmn2:incoming>SequenceFlow_112los9</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1k5uku2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1avfxsz</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0bi38s7" name="yes" sourceRef="ExclusiveGateway_0f54imv" targetRef="PreProcessUpdateAAIGenericVnf">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[!execution.getVariable("DCVFM_oamManagementV4Address").isEmpty() || !execution.getVariable("DCVFM_oamManagementV6Address").isEmpty()]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1qm81ym" sourceRef="PreProcessUpdateAAIGenericVnf" targetRef="UpdateAAIGenericVNFTask" />
+    <bpmn2:sequenceFlow id="SequenceFlow_112los9" sourceRef="UpdateAAIGenericVNFTask" targetRef="ExclusiveGateway_1edqxlf" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1k5uku2" name="no" sourceRef="ExclusiveGateway_0f54imv" targetRef="ExclusiveGateway_1edqxlf" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1avfxsz" sourceRef="ExclusiveGateway_1edqxlf" targetRef="PreProcessUpdateAAIVfModule_1" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0363dz7" sourceRef="IntermediateCatchEvent_3" targetRef="ExclusiveGateway_0f54imv" />
+    <bpmn2:scriptTask id="PreProcessUpdateAAIGenericVnf" name="PreProcess Update AAI Generic VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0bi38s7</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1qm81ym</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.prepUpdateAAIGenericVnf(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="UpdateAAIGenericVNFTask" name="Update AAI Generic VNF" calledElement="UpdateAAIGenericVnf">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVM_updateAAIGenericVnfRequest" target="UpdateAAIGenericVnfRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-id" target="mso-service-id" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1qm81ym</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_112los9</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0zcfn2x" name="no" sourceRef="ExclusiveGateway_2" targetRef="IntermediateThrowEvent_3" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0m382su" name="yes" sourceRef="ExclusiveGateway_2" targetRef="QueryVNF">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFM_sdncVersion" ) == '1707'}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0g270u0" sourceRef="PreProcessSDNCVnfGetRequest" targetRef="CallSDNCAdapterVNFTopologyGET" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1yrlvgb" sourceRef="CallSDNCAdapterVNFTopologyGET" targetRef="PostProcessSDNCVnfGetRequest" />
+    <bpmn2:scriptTask id="PreProcessSDNCVnfGetRequest" name="PreProcess SDNC VNF Topology GET Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0d00zqi</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0g270u0</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.preProcessSDNCGetRequest(execution, 'vnf')]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallSDNCAdapterVNFTopologyGET" name="Call SDNC Adapter: VNF Topology GET" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVFM_getSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="DCVFM_getVnfSDNCAdapterResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0g270u0</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1yrlvgb</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCVnfGetRequest" name="PostProcess SDNC VNF Toplogy GET request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1yrlvgb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_170kw7h</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+
+String response = execution.getVariable("DCVFM_getVnfSDNCAdapterResponse")
+
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.validateSDNCResponse(execution, response, "get")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0d00zqi" sourceRef="QueryVNF" targetRef="PreProcessSDNCVnfGetRequest" />
+    <bpmn2:sequenceFlow id="SequenceFlow_170kw7h" sourceRef="PostProcessSDNCVnfGetRequest" targetRef="IntermediateThrowEvent_3" />
+    <bpmn2:callActivity id="QueryVNF" name="Query VNF" calledElement="GenericGetVnf">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVFM_vnfId" target="GENGV_vnfId" />
+        <camunda:in source="DCVFM_vnfTypeToQuery" target="GENGV_type" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="GENGV_vnf" target="DCVFM_vnfQueryResponse" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0m382su</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0d00zqi</bpmn2:outgoing>
+    </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_1y1ttqe</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0lilmm3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0270n5c</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_05og7iw</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0270n5c" name="yes" sourceRef="ExclusiveGateway_0ffvqla" targetRef="IntermediateThrowEvent_1" />
+    <bpmn2:sequenceFlow id="SequenceFlow_05og7iw" name="no" sourceRef="ExclusiveGateway_0ffvqla" targetRef="Task_0kuj2a1">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFM_vfModuleName") == null}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:callActivity id="Task_0kuj2a1" name="Generate VF Module Name" calledElement="GenerateVfModuleName">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVFM_vnfId" target="vnfId" />
+        <camunda:in source="DCVFM_vnfName" target="vnfName" />
+        <camunda:in source="DCVFM_vfModuleLabel" target="vfModuleLabel" />
+        <camunda:in source="DCVFM_pesonaModelId" target="personaModelId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="vfModuleName" target="DCVFM_vfModuleName" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_05og7iw</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1f53tby</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:subProcess id="SubProcess_0ltzufk" name="Sub-process for Application Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_18lzc5m">
+        <bpmn2:outgoing>SequenceFlow_02lc25j</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_0wsdptv">
+        <bpmn2:incoming>SequenceFlow_0z2rczk</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1pgo10r</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:callActivity id="CallDoCreateVfModuleRollback" name="Call DoCreateVfModuleRollback" calledElement="DoCreateVfModuleRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="rollbackData" target="rollbackData" />
+          <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+          <camunda:in source="isVidRequest" target="isVidRequest" />
+          <camunda:out source="rolledBack" target="rolledBack" />
+          <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>
+      </bpmn2:callActivity>
+      <bpmn2:scriptTask id="PreProcessRollback" name="Pre Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_04bd5in</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1i1q78e</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.preProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:scriptTask id="PostProcessRollback" name="Post Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0112l2c</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0z2rczk</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.postProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_02lc25j" sourceRef="StartEvent_18lzc5m" targetRef="ExclusiveGateway_039bib8" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0z2rczk" sourceRef="PostProcessRollback" targetRef="EndEvent_0wsdptv" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1i1q78e" sourceRef="PreProcessRollback" targetRef="CallDoCreateVfModuleRollback" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0112l2c" sourceRef="CallDoCreateVfModuleRollback" targetRef="PostProcessRollback" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_039bib8" name="Disable Rollback?" default="SequenceFlow_04bd5in">
+        <bpmn2:incoming>SequenceFlow_02lc25j</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_04bd5in</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_1nh7m8d</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_04bd5in" name="no" sourceRef="ExclusiveGateway_039bib8" targetRef="PreProcessRollback" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1nh7m8d" name="yes" sourceRef="ExclusiveGateway_039bib8" targetRef="Task_1fm09pi">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("disableRollback" )  == true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:scriptTask id="Task_1fm09pi" name="Process Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1nh7m8d</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1pgo10r</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.processBPMNException(execution)]]></bpmn2:script>
+      </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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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.onap.so.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" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVfModule">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1">
+        <dc:Bounds x="38" y="153" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="44" y="189" width="23" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124">
+        <di:waypoint xsi:type="dc:Point" x="74" y="171" />
+        <di:waypoint xsi:type="dc:Point" x="147" y="171" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="99" y="171" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="PreProcessRequest">
+        <dc:Bounds x="147" y="131" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_24" bpmnElement="IntermediateCatchEvent_1">
+        <dc:Bounds x="36" y="376" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="0" y="417" width="114" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_22" bpmnElement="IntermediateThrowEvent_1">
+        <dc:Bounds x="828" y="153" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="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" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="89" y="347" width="178" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_172" bpmnElement="ConfirmVolumeGroupTenant">
+        <dc:Bounds x="209" y="528" width="118" height="89" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_91" bpmnElement="ExclusiveGateway_4" isMarkerVisible="true">
+        <dc:Bounds x="559" y="368" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="584" y="423" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ExclusiveGateway_90" targetElement="_BPMNShape_ExclusiveGateway_91">
+        <di:waypoint xsi:type="dc:Point" x="194" y="393" />
+        <di:waypoint xsi:type="dc:Point" x="559" y="393" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="209" y="393" width="20" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_173" bpmnElement="CallVNFAdapterVFModuleCreate">
+        <dc:Bounds x="746" y="1031" width="121" height="97" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_174" bpmnElement="UpdateAAIVfModule_1">
+        <dc:Bounds x="717" y="1211" width="117" height="97" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_175" bpmnElement="CallSDNCAdapterVFModuleTopologyActivate">
+        <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="1384" y="1234" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="1688" y="1204" width="121" height="112" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_93" bpmnElement="ExclusiveGateway_6" isMarkerVisible="true">
+        <dc:Bounds x="1813" y="1072" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="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="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">
+        <di:waypoint xsi:type="dc:Point" x="72" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="120" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="120" y="393" />
+        <di:waypoint xsi:type="dc:Point" x="144" y="393" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="117" y="394" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_101" bpmnElement="IsVolumeGroupNameSpecified" isMarkerVisible="true">
+        <dc:Bounds x="360" y="547" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="309" y="496" width="200" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_172" targetElement="_BPMNShape_ExclusiveGateway_101">
+        <di:waypoint xsi:type="dc:Point" x="327" y="572" />
+        <di:waypoint xsi:type="dc:Point" x="360" y="572" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="338" y="572" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_Task_3" bpmnElement="ConfirmVolumeName">
+        <dc:Bounds x="453" y="528" width="109" height="89" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ExclusiveGateway_101" targetElement="_BPMNShape_Task_3">
+        <di:waypoint xsi:type="dc:Point" x="410" y="572" />
+        <di:waypoint xsi:type="dc:Point" x="453" y="572" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="410" y="576" width="27" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_ExclusiveGateway_101" targetElement="_BPMNShape_ExclusiveGateway_91">
+        <di:waypoint xsi:type="dc:Point" x="385" y="547" />
+        <di:waypoint xsi:type="dc:Point" x="385" y="393" />
+        <di:waypoint xsi:type="dc:Point" x="559" y="393" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="392" y="450" width="20" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_35" bpmnElement="SequenceFlow_35" sourceElement="_BPMNShape_Task_3" targetElement="_BPMNShape_ExclusiveGateway_91">
+        <di:waypoint xsi:type="dc:Point" x="561" y="572" />
+        <di:waypoint xsi:type="dc:Point" x="584" y="572" />
+        <di:waypoint xsi:type="dc:Point" x="584" y="418" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="581" y="492" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </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="302" y="171" />
+        <bpmndi:BPMNLabel>
+          <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">
+        <di:waypoint xsi:type="dc:Point" x="609" y="393" />
+        <di:waypoint xsi:type="dc:Point" x="628" y="393" />
+        <di:waypoint xsi:type="dc:Point" x="628" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="696" y="394" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="636" y="394" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_178" bpmnElement="PreProcessSDNCAssignRequest">
+        <dc:Bounds x="109" y="674" width="121" height="94" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_179" bpmnElement="PostProcessSDNCAssignRequest">
+        <dc:Bounds x="435" y="674" width="121" height="94" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_44" bpmnElement="IntermediateThrowEvent_3">
+        <dc:Bounds x="2193" y="376" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2181" y="417" width="60" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_29" bpmnElement="IntermediateCatchEvent_2">
+        <dc:Bounds x="24" y="706" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="13" y="747" width="58" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_IntermediateCatchEvent_29" targetElement="_BPMNShape_ScriptTask_178">
+        <di:waypoint xsi:type="dc:Point" x="60" y="724" />
+        <di:waypoint xsi:type="dc:Point" x="81" y="724" />
+        <di:waypoint xsi:type="dc:Point" x="81" y="721" />
+        <di:waypoint xsi:type="dc:Point" x="109" y="721" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="78" y="722" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_ScriptTask_178" targetElement="_BPMNShape_ScriptTask_157">
+        <di:waypoint xsi:type="dc:Point" x="229" y="721" />
+        <di:waypoint xsi:type="dc:Point" x="248" y="721" />
+        <di:waypoint xsi:type="dc:Point" x="248" y="719" />
+        <di:waypoint xsi:type="dc:Point" x="266" y="719" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_20" sourceElement="_BPMNShape_ScriptTask_157" targetElement="_BPMNShape_ScriptTask_179">
+        <di:waypoint xsi:type="dc:Point" x="386" y="719" />
+        <di:waypoint xsi:type="dc:Point" x="411" y="719" />
+        <di:waypoint xsi:type="dc:Point" x="411" y="721" />
+        <di:waypoint xsi:type="dc:Point" x="435" y="721" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_213" bpmnElement="PreProcessSDNCGetRequest">
+        <dc:Bounds x="98" y="1031" width="121" height="94" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_214" bpmnElement="PostProcessSDNCGetRequest">
+        <dc:Bounds x="434" y="1031" width="121" height="94" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_ScriptTask_213" targetElement="_BPMNShape_ScriptTask_158">
+        <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="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="410" y="1078" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_Task_2" bpmnElement="PreProcessUpdateAAIVfModule_1">
+        <dc:Bounds x="558" y="1211" width="118" height="97" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_Task_33" bpmnElement="PreProcessSDNCActivateRequest">
+        <dc:Bounds x="884" y="1210" width="118" height="98" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_Task_4" bpmnElement="PostProcessSDNCActivateRequest">
+        <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="676" y="1259" />
+        <di:waypoint xsi:type="dc:Point" x="717" y="1259" />
+        <bpmndi:BPMNLabel>
+          <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="833" y="1259" />
+        <di:waypoint xsi:type="dc:Point" x="884" y="1259" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="1157" y="1258" />
+        <di:waypoint xsi:type="dc:Point" x="1201" y="1258" />
+        <bpmndi:BPMNLabel>
+          <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="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="1368" y="1249" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_175" bpmnElement="EndEvent_1">
+        <dc:Bounds x="2107" y="1079" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="1863" y="1097" />
+        <di:waypoint xsi:type="dc:Point" x="1929" y="1096" />
+        <bpmndi:BPMNLabel>
+          <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="1281" y="1060" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="-27" y="1241" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="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="1623" y="1260" />
+        <di:waypoint xsi:type="dc:Point" x="1688" y="1260" />
+        <bpmndi:BPMNLabel>
+          <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="583" y="1031" width="121" height="96" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_Task_35" bpmnElement="PostProcessVNFAdapterRequest">
+        <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="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="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="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" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_211" bpmnElement="IsBaseVfModule" isMarkerVisible="true">
+        <dc:Bounds x="1128" y="368" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1092" y="336" width="124" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_212" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true">
+        <dc:Bounds x="1408" y="368" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1395" y="329" width="75" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_36" bpmnElement="SequenceFlow_36" sourceElement="_BPMNShape_ExclusiveGateway_211" targetElement="_BPMNShape_ScriptTask_215">
+        <di:waypoint xsi:type="dc:Point" x="1153" y="418" />
+        <di:waypoint xsi:type="dc:Point" x="1153" y="562" />
+        <di:waypoint xsi:type="dc:Point" x="1224" y="562" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1122" y="450" width="20" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_39" bpmnElement="SequenceFlow_39" sourceElement="_BPMNShape_ExclusiveGateway_211" targetElement="_BPMNShape_ExclusiveGateway_212">
+        <di:waypoint xsi:type="dc:Point" x="1178" y="393" />
+        <di:waypoint xsi:type="dc:Point" x="1408" y="393" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1285" y="393" width="27" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_216" bpmnElement="PostProcessCreateAAIVfModule">
+        <dc:Bounds x="897" y="348" width="125" height="92" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_27" bpmnElement="SequenceFlow_27" sourceElement="_BPMNShape_ScriptTask_216" targetElement="_BPMNShape_ExclusiveGateway_211">
+        <di:waypoint xsi:type="dc:Point" x="1021" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="1075" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="1075" y="393" />
+        <di:waypoint xsi:type="dc:Point" x="1128" y="393" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1072" y="394" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_37" bpmnElement="SequenceFlow_37" sourceElement="_BPMNShape_ScriptTask_215" targetElement="_BPMNShape_ExclusiveGateway_212">
+        <di:waypoint xsi:type="dc:Point" x="1348" y="562" />
+        <di:waypoint xsi:type="dc:Point" x="1378" y="562" />
+        <di:waypoint xsi:type="dc:Point" x="1378" y="393" />
+        <di:waypoint xsi:type="dc:Point" x="1408" y="393" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1393" y="468" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_218" bpmnElement="ScriptTask_setSuccess">
+        <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="2057" y="1097" />
+        <di:waypoint xsi:type="dc:Point" x="2107" y="1096" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2082" y="1082" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_254" bpmnElement="QueryCloudRegion">
+        <dc:Bounds x="101" y="440" width="134" height="81" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_40" bpmnElement="SequenceFlow_40" sourceElement="_BPMNShape_ExclusiveGateway_90" targetElement="_BPMNShape_ScriptTask_254">
+        <di:waypoint xsi:type="dc:Point" x="169" y="418" />
+        <di:waypoint xsi:type="dc:Point" x="169" y="429" />
+        <di:waypoint xsi:type="dc:Point" x="168" y="429" />
+        <di:waypoint xsi:type="dc:Point" x="168" y="440" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="180" y="417" width="27" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_43" bpmnElement="SequenceFlow_43" sourceElement="_BPMNShape_ScriptTask_254" targetElement="_BPMNShape_ScriptTask_172">
+        <di:waypoint xsi:type="dc:Point" x="168" y="520" />
+        <di:waypoint xsi:type="dc:Point" x="168" y="524" />
+        <di:waypoint xsi:type="dc:Point" x="168" y="581" />
+        <di:waypoint xsi:type="dc:Point" x="208" y="581" />
+        <di:waypoint xsi:type="dc:Point" x="209" y="581" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="165" y="574" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_156" bpmnElement="CreateAAIVfModule">
+        <dc:Bounds x="696" y="348" width="121" height="92" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_25" bpmnElement="SequenceFlow_25" sourceElement="_BPMNShape_ScriptTask_156" targetElement="_BPMNShape_ScriptTask_216">
+        <di:waypoint xsi:type="dc:Point" x="816" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="897" y="394" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="857" y="369" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_183x8vk_di" bpmnElement="ExclusiveGateway_183x8vk" isMarkerVisible="true">
+        <dc:Bounds x="1076" y="1055" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="1023" y="1079" />
+        <di:waypoint xsi:type="dc:Point" x="1076" y="1080" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="1126" y="1080" />
+        <di:waypoint xsi:type="dc:Point" x="1281" y="1078" />
+        <bpmndi:BPMNLabel>
+          <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="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="1273" y="964" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1dv7amn_di" bpmnElement="CreateNetworkPoliciesInAAI">
+        <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="64" y="1235" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="432" y="1235" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="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="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="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="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="114" y="1260" />
+        <di:waypoint xsi:type="dc:Point" x="432" y="1260" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="9" y="1259" />
+        <di:waypoint xsi:type="dc:Point" x="64" y="1260" />
+        <bpmndi:BPMNLabel>
+          <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="142" y="1399" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0j45ic9_di" bpmnElement="UpdateAAIGenericVNFTask">
+        <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" />
+        <di:waypoint xsi:type="dc:Point" x="2193" y="394" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1822" y="368.5010168687388" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0m382su_di" bpmnElement="SequenceFlow_0m382su">
+        <di:waypoint xsi:type="dc:Point" x="1433" y="418" />
+        <di:waypoint xsi:type="dc:Point" x="1433" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="1513" y="521" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1439" y="459.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0g270u0_di" bpmnElement="SequenceFlow_0g270u0">
+        <di:waypoint xsi:type="dc:Point" x="1766" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="1816" y="521" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1791" y="506" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yrlvgb_di" bpmnElement="SequenceFlow_1yrlvgb">
+        <di:waypoint xsi:type="dc:Point" x="1916" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="1969" y="521" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1943" y="506" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1j22oyj_di" bpmnElement="PreProcessSDNCVnfGetRequest">
+        <dc:Bounds x="1666" y="481" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_10t4tix_di" bpmnElement="CallSDNCAdapterVNFTopologyGET">
+        <dc:Bounds x="1816" y="481" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_09wgk9p_di" bpmnElement="PostProcessSDNCVnfGetRequest">
+        <dc:Bounds x="1969" y="481" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0d00zqi_di" bpmnElement="SequenceFlow_0d00zqi">
+        <di:waypoint xsi:type="dc:Point" x="1613" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="1666" y="521" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1640" y="506" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_170kw7h_di" bpmnElement="SequenceFlow_170kw7h">
+        <di:waypoint xsi:type="dc:Point" x="2069" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="2131" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="2131" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="2193" y="394" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2146" y="447.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0xev9kl_di" bpmnElement="QueryVNF">
+        <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="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="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="592" y="146" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="642" y="171" />
+        <di:waypoint xsi:type="dc:Point" x="828" y="171" />
+        <bpmndi:BPMNLabel>
+          <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="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="626" y="239" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_14nvmgk_di" bpmnElement="Task_0kuj2a1">
+        <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="-52" y="1578" width="1047" height="338" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_18lzc5m_di" bpmnElement="StartEvent_18lzc5m">
+        <dc:Bounds x="91" y="1682" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="859" y="1682" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="507" y="1660" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0upatdd_di" bpmnElement="PreProcessRollback">
+        <dc:Bounds x="327" y="1660" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0o1zc29_di" bpmnElement="PostProcessRollback">
+        <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="127" y="1700" />
+        <di:waypoint xsi:type="dc:Point" x="194" y="1700" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="427" y="1700" />
+        <di:waypoint xsi:type="dc:Point" x="507" y="1700" />
+        <bpmndi:BPMNLabel>
+          <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="607" y="1700" />
+        <di:waypoint xsi:type="dc:Point" x="692" y="1700" />
+        <bpmndi:BPMNLabel>
+          <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="194" y="1675" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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="244" y="1700" />
+        <di:waypoint xsi:type="dc:Point" x="327" y="1700" />
+        <bpmndi:BPMNLabel>
+          <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="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="225" y="1775" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_05v20n0_di" bpmnElement="Task_1fm09pi">
+        <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="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="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>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleRollback.bpmn
new file mode 100644
index 0000000..2508b31
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleRollback.bpmn
@@ -0,0 +1,978 @@
+<?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="_Wblj8GyfEeWUWLTvug7ZOg" 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="DoCreateVfModuleRollback" name="DoCreateVfModuleRollback" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="InitializeVariables" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="Rollback PrepareUpdateAAIVfModule?" default="SequenceFlow_9">
+      <bpmn2:incoming>SequenceFlow_11er1t8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:callActivity id="InvokePrepareUpdateAAIVfModule" name="Invoke&#10;PrepareUpdateAAIVfModule" calledElement="PrepareUpdateAAIVfModule">
+      <bpmn2:extensionElements>
+        <camunda:in source="PrepareUpdateAAIVfModuleRequest" target="PrepareUpdateAAIVfModuleRequest" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="PUAAIVfMod_heatStackId" target="DCVFMR_heatStackId" />
+      </bpmn2:extensionElements>
+      <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="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_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">
+      <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:scriptTask id="VNFAdapterPrep" name="VNFAdapter&#10;Prep" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1p0v6yk</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvfmr = new DoCreateVfModuleRollback()
+dcvfmr.prepVNFAdapterRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="VNFAdapterPrep" targetRef="InvokeVNFAdapterRestV1" />
+    <bpmn2:callActivity id="InvokeVNFAdapterRestV1" name="Invoke&#10;VNFAdapterRestV1" calledElement="vnfAdapterRestV1">
+      <bpmn2:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="vnfAdapterRestV1Request" target="vnfAdapterRestV1Request" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="vnfAdapterRestV1Response" target="DoDVfMod_DoCreateVfModuleRollbackResponse" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming>
+      <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_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>
+      <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvfmr = new DoCreateVfModuleRollback()
+dcvfmr.prepUpdateAAIVfModule(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="UpdateAAIVfModulePrep" targetRef="InvokeUpdateAAIVfModule" />
+    <bpmn2:callActivity id="InvokeUpdateAAIVfModule" name="Invoke&#10;UpdateAAIVfModule" calledElement="UpdateAAIVfModule">
+      <bpmn2:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="UpdateAAIVfModuleRequest" target="UpdateAAIVfModuleRequest" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing>
+    </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_1gcfdej</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_13" name="yes" sourceRef="ExclusiveGateway_3" targetRef="UpdateAAIVfModulePrep">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackUpdateAAIVfModule") == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_17" name="no" sourceRef="ExclusiveGateway_3" targetRef="ExclusiveGateway_4" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_4" name="Rollback SDNC Request?" default="SequenceFlow_20">
+      <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_20</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_19" name="yes" sourceRef="ExclusiveGateway_4" targetRef="ExclusiveGateway_1h87hhh">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackSDNCRequestAssign") == "true" || execution.getVariable("DCVFMR_rollbackSDNCRequestActivate") == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_20" name="no" sourceRef="ExclusiveGateway_4" targetRef="ExclusiveGateway_5" />
+    <bpmn2:scriptTask id="SDNCAdapterPrep2" name="SDNCAdapter&#10;Prep" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1rpg6ac</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_32</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvfmr = new DoCreateVfModuleRollback()
+dcvfmr.prepSDNCAdapterRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="SDNCAdapterPrep2" targetRef="InvokeSDNCAdapterV1_2" />
+    <bpmn2:callActivity id="InvokeSDNCAdapterV1_2" name="Invoke&#10;SDNCAdapterV1" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="sdncAdapterWorkflowRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="sdncAdapterResponse" target="DCVFMR_DoCreateVfModuleRollbackResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_32</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_5" name="Delete AAI VF Modlue?" default="SequenceFlow_21">
+      <bpmn2:incoming>SequenceFlow_20</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_12otwa4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_21" name="no" sourceRef="ExclusiveGateway_5" targetRef="SetSuccessfulRollbackStatus" />
+    <bpmn2:sequenceFlow id="SequenceFlow_24" name="yes" sourceRef="ExclusiveGateway_5" targetRef="DeleteAAIVfModulePrep">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackCreateAAIVfModule") == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:callActivity id="InvokeDeleteAAIVfModule" name="Invoke&#10;DeleteAAIVfModule" calledElement="DeleteAAIVfModule">
+      <bpmn2:extensionElements>
+        <camunda:in source="DeleteAAIVfModuleRequest" target="DeleteAAIVfModuleRequest" />
+        <camunda:in source="isVidRequest" target="isVidRequest" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_34</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="InvokeDeleteAAIVfModule" targetRef="SetSuccessfulRollbackStatus" />
+    <bpmn2:endEvent id="EndEvent_9">
+      <bpmn2:incoming>SequenceFlow_0ggp8wz</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1h8ve60</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="DeleteAAIVfModulePrep" name="DeleteAAIVfModule&#10;Prep" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_24</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvfmr = new DoCreateVfModuleRollback()
+dcvfmr.prepDeleteAAIVfModule(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_34" name="" sourceRef="DeleteAAIVfModulePrep" targetRef="InvokeDeleteAAIVfModule" />
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="InvokeSDNCAdapterV1_2" targetRef="ScriptTask_1" />
+    <bpmn2:scriptTask id="ScriptTask_1" name="Validate SDNC Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvfmr = new DoCreateVfModuleRollback()
+dcvfmr.sdncValidateResponse(execution, DCVFMR_DoCreateVfModuleRollbackResponse)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ScriptTask_1" targetRef="ExclusiveGateway_5" />
+    <bpmn2:subProcess id="SubProcess_1" name="Rollback Error Handling" triggeredByEvent="true">
+      <bpmn2:startEvent id="CatchExceptions" name="Catch Exceptions">
+        <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1">
+        <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="LogSaveWorkflowException" targetRef="EndEvent_1" />
+      <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="CatchExceptions" targetRef="SetFailedRollbackStatus" />
+      <bpmn2:scriptTask id="LogSaveWorkflowException" name="Log and Save Workflow Exception" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_02fx6z6</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvfmr = new DoCreateVfModuleRollback()
+dcvfmr.logWorkflowException(execution, 'DoCreateVfModuleRollback caught an event')
+dcvfmr.saveWorkflowException(execution, 'DCVFMR_CaughtWorkflowException1')]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_02fx6z6" sourceRef="SetFailedRollbackStatus" targetRef="LogSaveWorkflowException" />
+      <bpmn2:scriptTask id="SetFailedRollbackStatus" name="Set Failed Rollback Status" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_02fx6z6</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvfmr = new DoCreateVfModuleRollback()
+dcvfmr.setFailedRollbackStatus(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+    </bpmn2:subProcess>
+    <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1">
+      <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_86" />
+    </bpmn2:boundaryEvent>
+    <bpmn2:endEvent id="EndEvent_2">
+      <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_2" />
+    <bpmn2:scriptTask id="InitializeVariables" name="Initialize Variables" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvfmr = new DoCreateVfModuleRollback()
+dcvfmr.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="InitializeVariables" targetRef="ExclusiveGateway_1yozzae" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0a0hroy" name="Rollback Update AAI Generic VNF?" default="SequenceFlow_185bo77">
+      <bpmn2:incoming>SequenceFlow_0djpj3r</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0n58kg1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_185bo77</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_111l1he</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:scriptTask id="Task_08csf14" name="Delete Network Policies from AAI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0unumxv</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0djpj3r</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvfmr = new DoCreateVfModuleRollback()
+dcvfmr.deleteNetworkPoliciesFromAAI(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="Task_18r7u02" name="PreProcess Update AAI Generic VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_111l1he</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ca4brn</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvfmr = new DoCreateVfModuleRollback()
+dcvfmr.preProcessUpdateAAIGenericVnf(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="Task_01ajtiy" name="Update AAI Generic VNF" calledElement="UpdateAAIGenericVnf">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVFMR_updateAAIGenericVnfRequest" target="UpdateAAIGenericVnfRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-id" target="mso-service-id" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0ca4brn</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_19r2uus</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0djpj3r" sourceRef="Task_08csf14" targetRef="ExclusiveGateway_0a0hroy" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0uvarlv" name="Rollback VNF Adapter Create?" default="SequenceFlow_03i4czf">
+      <bpmn2:incoming>SequenceFlow_185bo77</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_19r2uus</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1p0v6yk</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_03i4czf</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_185bo77" name="no" sourceRef="ExclusiveGateway_0a0hroy" targetRef="ExclusiveGateway_0uvarlv" />
+    <bpmn2:sequenceFlow id="SequenceFlow_111l1he" name="yes" sourceRef="ExclusiveGateway_0a0hroy" targetRef="Task_18r7u02">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackUpdateVnfAAI") == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ca4brn" sourceRef="Task_18r7u02" targetRef="Task_01ajtiy" />
+    <bpmn2:sequenceFlow id="SequenceFlow_19r2uus" sourceRef="Task_01ajtiy" targetRef="ExclusiveGateway_0uvarlv" />
+    <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_0ahc44p" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1yozzae" name="Skip Rollback?" default="SequenceFlow_11er1t8">
+      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_11er1t8</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0ggp8wz</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_11er1t8" name="no" sourceRef="ExclusiveGateway_1yozzae" targetRef="ExclusiveGateway_1" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ggp8wz" name="yes" sourceRef="ExclusiveGateway_1yozzae" targetRef="EndEvent_9">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" )  == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1938vz9" name="Rollback Network Policies Creation?" default="SequenceFlow_0n58kg1">
+      <bpmn2:incoming>SequenceFlow_06rm0hg</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0n58kg1</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0unumxv</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:scriptTask id="PrepareSDNCDeactivateRequest" name="Prepare SDNC Deactivate Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ugalf8</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvfmr = new DoCreateVfModuleRollback()
+dcvfmr.preProcessSDNCDeactivateRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallSDNCDeactivate" name="Call SDNC Adapter Deactivate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVFMR_deactivateSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <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="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="DCVFMR_deactivateSDNCAdapterResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0ugalf8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0n78x37</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCDeactivateRequest" name="PostProcess SDNC Deactivate Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0n78x37</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_06rm0hg</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvfmr = new DoCreateVfModuleRollback()
+String response = execution.getVariable("DCVFMR_deactivateSDNCAdapterResponse")
+dcvfmr.sdncValidateResponse(execution, response)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ugalf8" sourceRef="PrepareSDNCDeactivateRequest" targetRef="CallSDNCDeactivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0n78x37" sourceRef="CallSDNCDeactivate" targetRef="PostProcessSDNCDeactivateRequest" />
+    <bpmn2:sequenceFlow id="SequenceFlow_06rm0hg" sourceRef="PostProcessSDNCDeactivateRequest" targetRef="ExclusiveGateway_1938vz9" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0n58kg1" name="no" sourceRef="ExclusiveGateway_1938vz9" targetRef="ExclusiveGateway_0a0hroy" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0unumxv" name="yes" sourceRef="ExclusiveGateway_1938vz9" targetRef="Task_08csf14">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackCreateNetworkPoliciesAAI") == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1iufuuu" sourceRef="PrepareSDNCUnassignRequest" targetRef="CallSDNCAdapterUnassign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1l4n37b" sourceRef="CallSDNCAdapterUnassign" targetRef="PostProcessSDNCUnassignRequest" />
+    <bpmn2:scriptTask id="PrepareSDNCUnassignRequest" name="Prepare SDNC Unassign Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_16ghmax</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1iufuuu</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvfmr = new DoCreateVfModuleRollback()
+dcvfmr.preProcessSDNCUnassignRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallSDNCAdapterUnassign" name="Call SDNC Adapter Unassign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVFMR_unassignSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <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="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="DCVFMR_unassignSDNCAdapterResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1iufuuu</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1l4n37b</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCUnassignRequest" name="PostProcess SDNC Unassign Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1l4n37b</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_12otwa4</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvfmr = new DoCreateVfModuleRollback()
+String response = execution.getVariable("DCVFMR_unassignSDNCAdapterResponse")
+dcvfmr.sdncValidateResponse(execution, response)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1h87hhh" name="Rollback 1707 SDNC Activate?" default="SequenceFlow_1rpg6ac">
+      <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1rpg6ac</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_16ghmax</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1rpg6ac" name="no" sourceRef="ExclusiveGateway_1h87hhh" targetRef="SDNCAdapterPrep2" />
+    <bpmn2:sequenceFlow id="SequenceFlow_16ghmax" name="yes" sourceRef="ExclusiveGateway_1h87hhh" targetRef="PrepareSDNCUnassignRequest">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackSDNCRequestAssign") == "true" && execution.getVariable("sdncVersion") == "1707"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_12otwa4" sourceRef="PostProcessSDNCUnassignRequest" targetRef="ExclusiveGateway_5" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1h8ve60" sourceRef="SetSuccessfulRollbackStatus" targetRef="EndEvent_9" />
+    <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.onap.so.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.onap.so.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" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVfModuleRollback">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_37" bpmnElement="StartEvent_1">
+        <dc:Bounds x="13" y="100" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="31" y="141" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_22" bpmnElement="InitializeVariables">
+        <dc:Bounds x="115" y="78" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_37" targetElement="_BPMNShape_ScriptTask_22">
+        <di:waypoint xsi:type="dc:Point" x="49" y="118" />
+        <di:waypoint xsi:type="dc:Point" x="115" y="118" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="82" y="103" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <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_170" bpmnElement="VNFAdapterPrep">
+        <dc:Bounds x="104" y="763" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_13" bpmnElement="InvokeVNFAdapterRestV1">
+        <dc:Bounds x="262" y="763" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ScriptTask_170" targetElement="_BPMNShape_CallActivity_13">
+        <di:waypoint xsi:type="dc:Point" x="204" y="803" />
+        <di:waypoint xsi:type="dc:Point" x="262" y="803" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="225" y="803" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_171" bpmnElement="UpdateAAIVfModulePrep">
+        <dc:Bounds x="732" y="758" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_14" bpmnElement="InvokeUpdateAAIVfModule">
+        <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" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_15" bpmnElement="InvokeSDNCAdapterV1_2">
+        <dc:Bounds x="327" y="995" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_173" bpmnElement="DeleteAAIVfModulePrep">
+        <dc:Bounds x="704" y="998" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_16" bpmnElement="InvokeDeleteAAIVfModule">
+        <dc:Bounds x="860" y="998" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_32" bpmnElement="SequenceFlow_32" sourceElement="_BPMNShape_ScriptTask_172" targetElement="_BPMNShape_CallActivity_15">
+        <di:waypoint xsi:type="dc:Point" x="287" y="1035" />
+        <di:waypoint xsi:type="dc:Point" x="327" y="1035" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="307" y="1035" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_34" bpmnElement="SequenceFlow_34" sourceElement="_BPMNShape_ScriptTask_173" targetElement="_BPMNShape_CallActivity_16">
+        <di:waypoint xsi:type="dc:Point" x="804" y="1038" />
+        <di:waypoint xsi:type="dc:Point" x="860" y="1038" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="820" y="1038" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_169" bpmnElement="EndEvent_9">
+        <dc:Bounds x="1159" y="1105" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1177" y="1146" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_35" bpmnElement="SequenceFlow_35" sourceElement="_BPMNShape_CallActivity_16" targetElement="_BPMNShape_EndEvent_169">
+        <di:waypoint xsi:type="dc:Point" x="960" y="1038" />
+        <di:waypoint xsi:type="dc:Point" x="1078" y="1038" />
+        <di:waypoint xsi:type="dc:Point" x="1078" y="1083" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1019" y="1023" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_223" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true">
+        <dc:Bounds x="538" y="93" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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">
+        <di:waypoint xsi:type="dc:Point" x="215" y="118" />
+        <di:waypoint xsi:type="dc:Point" x="278" y="118" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="247" y="103" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_224" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true">
+        <dc:Bounds x="912" y="92" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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">
+        <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" />
+        <di:waypoint xsi:type="dc:Point" x="862" y="63" />
+        <di:waypoint xsi:type="dc:Point" x="937" y="63" />
+        <di:waypoint xsi:type="dc:Point" x="937" y="92" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="888" y="63" width="6" height="6" />
+        </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="588" y="118" />
+        <di:waypoint xsi:type="dc:Point" x="912" y="117" />
+        <bpmndi:BPMNLabel>
+          <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">
+        <di:waypoint xsi:type="dc:Point" x="937" y="142" />
+        <di:waypoint xsi:type="dc:Point" x="937" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="29" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="29" y="321" />
+        <di:waypoint xsi:type="dc:Point" x="203" y="321" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="501" y="235" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_225" bpmnElement="ExclusiveGateway_3" isMarkerVisible="true">
+        <dc:Bounds x="594" y="837" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="578" y="892" width="83" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ExclusiveGateway_225" targetElement="_BPMNShape_ScriptTask_171">
+        <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="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="832" y="798" />
+        <di:waypoint xsi:type="dc:Point" x="912" y="798" />
+        <bpmndi:BPMNLabel>
+          <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="1092" y="837" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <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">
+        <di:waypoint xsi:type="dc:Point" x="962" y="117" />
+        <di:waypoint xsi:type="dc:Point" x="1025" y="117" />
+        <di:waypoint xsi:type="dc:Point" x="1025" y="212" />
+        <di:waypoint xsi:type="dc:Point" x="19" y="212" />
+        <di:waypoint xsi:type="dc:Point" x="19" y="382" />
+        <di:waypoint xsi:type="dc:Point" x="922" y="382" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="501" y="187" width="12" height="12" />
+        </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="644" y="862" />
+        <di:waypoint xsi:type="dc:Point" x="1092" y="862" />
+        <bpmndi:BPMNLabel>
+          <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="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="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="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="56" y="1103" />
+        <bpmndi:BPMNLabel>
+          <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">
+        <dc:Bounds x="589" y="1098" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="578" y="1153" width="71" height="24" />
+        </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="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" />
+        <di:waypoint xsi:type="dc:Point" x="25" y="1246" />
+        <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="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">
+        <di:waypoint xsi:type="dc:Point" x="639" y="1123" />
+        <di:waypoint xsi:type="dc:Point" x="1028" y="1123" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="811" y="1123" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_24" sourceElement="_BPMNShape_ExclusiveGateway_227" targetElement="_BPMNShape_ScriptTask_173">
+        <di:waypoint xsi:type="dc:Point" x="639" y="1123" />
+        <di:waypoint xsi:type="dc:Point" x="664" y="1123" />
+        <di:waypoint xsi:type="dc:Point" x="664" y="1067" />
+        <di:waypoint xsi:type="dc:Point" x="664" y="1038" />
+        <di:waypoint xsi:type="dc:Point" x="704" y="1038" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="679" y="1044" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_255" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="461" y="995" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_CallActivity_15" targetElement="_BPMNShape_ScriptTask_255">
+        <di:waypoint xsi:type="dc:Point" x="427" y="1035" />
+        <di:waypoint xsi:type="dc:Point" x="461" y="1035" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="446" y="1035" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_255" targetElement="_BPMNShape_ExclusiveGateway_227">
+        <di:waypoint xsi:type="dc:Point" x="561" y="1035" />
+        <di:waypoint xsi:type="dc:Point" x="614" y="1035" />
+        <di:waypoint xsi:type="dc:Point" x="614" y="1098" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="614" y="1040" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_22" bpmnElement="SubProcess_1" isExpanded="true">
+        <dc:Bounds x="27" y="1464" width="699" height="159" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_59" bpmnElement="CatchExceptions">
+        <dc:Bounds x="47" y="1515" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="391" y="1493" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_188" bpmnElement="EndEvent_1">
+        <dc:Bounds x="565" y="1515" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="708" y="1514" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="880" y="1514" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <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="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="833" y="1532" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0a0hroy_di" bpmnElement="ExclusiveGateway_0a0hroy" isMarkerVisible="true">
+        <dc:Bounds x="413" y="588" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="397" y="638" width="84" height="38" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0mnb4d7_di" bpmnElement="Task_08csf14">
+        <dc:Bounds x="212" y="507" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1shi2a6_di" bpmnElement="Task_18r7u02">
+        <dc:Bounds x="552" y="507" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0zvct4i_di" bpmnElement="Task_01ajtiy">
+        <dc:Bounds x="747" y="507" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0djpj3r_di" bpmnElement="SequenceFlow_0djpj3r">
+        <di:waypoint xsi:type="dc:Point" x="312" y="547" />
+        <di:waypoint xsi:type="dc:Point" x="438" y="547" />
+        <di:waypoint xsi:type="dc:Point" x="438" y="589" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="375" y="532" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0uvarlv_di" bpmnElement="ExclusiveGateway_0uvarlv" isMarkerVisible="true">
+        <dc:Bounds x="921" y="588" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="907" y="638" width="78" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_185bo77_di" bpmnElement="SequenceFlow_185bo77">
+        <di:waypoint xsi:type="dc:Point" x="463" y="613" />
+        <di:waypoint xsi:type="dc:Point" x="692" y="613" />
+        <di:waypoint xsi:type="dc:Point" x="692" y="613" />
+        <di:waypoint xsi:type="dc:Point" x="921" y="613" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="701" y="613" width="12" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_111l1he_di" bpmnElement="SequenceFlow_111l1he">
+        <di:waypoint xsi:type="dc:Point" x="463" y="613" />
+        <di:waypoint xsi:type="dc:Point" x="493" y="613" />
+        <di:waypoint xsi:type="dc:Point" x="493" y="547" />
+        <di:waypoint xsi:type="dc:Point" x="552" y="547" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="508" y="553" width="18" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ca4brn_di" bpmnElement="SequenceFlow_0ca4brn">
+        <di:waypoint xsi:type="dc:Point" x="652" y="547" />
+        <di:waypoint xsi:type="dc:Point" x="693" y="547" />
+        <di:waypoint xsi:type="dc:Point" x="693" y="547" />
+        <di:waypoint xsi:type="dc:Point" x="747" y="547" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="708" y="547" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19r2uus_di" bpmnElement="SequenceFlow_19r2uus">
+        <di:waypoint xsi:type="dc:Point" x="847" y="547" />
+        <di:waypoint xsi:type="dc:Point" x="946" y="547" />
+        <di:waypoint xsi:type="dc:Point" x="946" y="588" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="897" y="532" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1p0v6yk_di" bpmnElement="SequenceFlow_1p0v6yk">
+        <di:waypoint xsi:type="dc:Point" x="946" y="638" />
+        <di:waypoint xsi:type="dc:Point" x="946" y="724" />
+        <di:waypoint xsi:type="dc:Point" x="47" y="724" />
+        <di:waypoint xsi:type="dc:Point" x="47" y="803" />
+        <di:waypoint xsi:type="dc:Point" x="104" y="803" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="507" y="732" width="18" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_03i4czf_di" bpmnElement="SequenceFlow_03i4czf">
+        <di:waypoint xsi:type="dc:Point" x="971" y="613" />
+        <di:waypoint xsi:type="dc:Point" x="1036" y="613" />
+        <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="466" y="862" />
+        <bpmndi:BPMNLabel>
+          <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">
+        <dc:Bounds x="278" y="93" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="267" y="143" width="72" height="12" />
+        </bpmndi:BPMNLabel>
+      </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="538" y="118" />
+        <bpmndi:BPMNLabel>
+          <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="1158" y="-11" />
+        <di:waypoint xsi:type="dc:Point" x="1177" y="1105" />
+        <bpmndi:BPMNLabel>
+          <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="491" y="1533" />
+        <di:waypoint xsi:type="dc:Point" x="565" y="1533" />
+        <bpmndi:BPMNLabel>
+          <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="83" y="1533" />
+        <di:waypoint xsi:type="dc:Point" x="198" y="1533" />
+        <bpmndi:BPMNLabel>
+          <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">
+        <dc:Bounds x="921.561377245509" y="357" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="902" y="407" width="90" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_17dmaj7_di" bpmnElement="PrepareSDNCDeactivateRequest">
+        <dc:Bounds x="204" y="281" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0ouj5y6_di" bpmnElement="CallSDNCDeactivate">
+        <dc:Bounds x="401" y="280" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1fmh02z_di" bpmnElement="PostProcessSDNCDeactivateRequest">
+        <dc:Bounds x="613" y="280" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ugalf8_di" bpmnElement="SequenceFlow_0ugalf8">
+        <di:waypoint xsi:type="dc:Point" x="304" y="321" />
+        <di:waypoint xsi:type="dc:Point" x="401" y="320" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="353" y="295.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n78x37_di" bpmnElement="SequenceFlow_0n78x37">
+        <di:waypoint xsi:type="dc:Point" x="501" y="320" />
+        <di:waypoint xsi:type="dc:Point" x="613" y="320" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="557" y="295" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06rm0hg_di" bpmnElement="SequenceFlow_06rm0hg">
+        <di:waypoint xsi:type="dc:Point" x="713" y="320" />
+        <di:waypoint xsi:type="dc:Point" x="947" y="320" />
+        <di:waypoint xsi:type="dc:Point" x="947" y="357" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="830" y="305" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n58kg1_di" bpmnElement="SequenceFlow_0n58kg1">
+        <di:waypoint xsi:type="dc:Point" x="972" y="382" />
+        <di:waypoint xsi:type="dc:Point" x="1033" y="382" />
+        <di:waypoint xsi:type="dc:Point" x="1033" y="466" />
+        <di:waypoint xsi:type="dc:Point" x="14" y="466" />
+        <di:waypoint xsi:type="dc:Point" x="14" y="613" />
+        <di:waypoint xsi:type="dc:Point" x="413" y="613" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="508" y="444" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0unumxv_di" bpmnElement="SequenceFlow_0unumxv">
+        <di:waypoint xsi:type="dc:Point" x="947" y="407" />
+        <di:waypoint xsi:type="dc:Point" x="947" y="482" />
+        <di:waypoint xsi:type="dc:Point" x="32" y="482" />
+        <di:waypoint xsi:type="dc:Point" x="32" y="547" />
+        <di:waypoint xsi:type="dc:Point" x="211" y="547" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="506" y="493" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1iufuuu_di" bpmnElement="SequenceFlow_1iufuuu">
+        <di:waypoint xsi:type="dc:Point" x="287" y="1177" />
+        <di:waypoint xsi:type="dc:Point" x="328" y="1177" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="308" y="1162" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1l4n37b_di" bpmnElement="SequenceFlow_1l4n37b">
+        <di:waypoint xsi:type="dc:Point" x="428" y="1177" />
+        <di:waypoint xsi:type="dc:Point" x="469" y="1176" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="449" y="1161.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0qvylv2_di" bpmnElement="PrepareSDNCUnassignRequest">
+        <dc:Bounds x="187" y="1138" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1stidyk_di" bpmnElement="CallSDNCAdapterUnassign">
+        <dc:Bounds x="328" y="1137" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1ub9z2k_di" bpmnElement="PostProcessSDNCUnassignRequest">
+        <dc:Bounds x="469" y="1136" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1h87hhh_di" bpmnElement="ExclusiveGateway_1h87hhh" isMarkerVisible="true">
+        <dc:Bounds x="55.989141164856846" y="1077.9259624876604" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="41" y="1127.9259624876604" width="79" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rpg6ac_di" bpmnElement="SequenceFlow_1rpg6ac">
+        <di:waypoint xsi:type="dc:Point" x="81" y="1078" />
+        <di:waypoint xsi:type="dc:Point" x="81" y="1035" />
+        <di:waypoint xsi:type="dc:Point" x="187" y="1035" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="100" y="1010.5" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_16ghmax_di" bpmnElement="SequenceFlow_16ghmax">
+        <di:waypoint xsi:type="dc:Point" x="81" y="1128" />
+        <di:waypoint xsi:type="dc:Point" x="81" y="1178" />
+        <di:waypoint xsi:type="dc:Point" x="187" y="1178" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="92" y="1182" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_12otwa4_di" bpmnElement="SequenceFlow_12otwa4">
+        <di:waypoint xsi:type="dc:Point" x="569" y="1176" />
+        <di:waypoint xsi:type="dc:Point" x="579" y="1176" />
+        <di:waypoint xsi:type="dc:Point" x="579" y="1123" />
+        <di:waypoint xsi:type="dc:Point" x="589" y="1123" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="594" y="1139.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h8ve60_di" bpmnElement="SequenceFlow_1h8ve60">
+        <di:waypoint xsi:type="dc:Point" x="1128" y="1123" />
+        <di:waypoint xsi:type="dc:Point" x="1159" y="1123" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1144" y="1108" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0lrbhgj_di" bpmnElement="SetSuccessfulRollbackStatus">
+        <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="298" y="1533" />
+        <di:waypoint xsi:type="dc:Point" x="391" y="1533" />
+        <bpmndi:BPMNLabel>
+          <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="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>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleVolumeRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleVolumeRollback.bpmn
new file mode 100644
index 0000000..a762b7e
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleVolumeRollback.bpmn
@@ -0,0 +1,247 @@
+<?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.4.0">
+  <bpmn:process id="DoCreateVfModuleVolumeRollback" name="DoCreateVfModuleVolumeRollback" isExecutable="true">
+    <bpmn:subProcess id="SubProcess_1p4663w" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:scriptTask id="ScriptTask_0by1uwk" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0xktw7v</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0soe5t3</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModuleVolumeRollback = new DoCreateVfModuleVolumeRollback()
+doCreateVfModuleVolumeRollback.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:startEvent id="StartEvent_1j0eixl">
+        <bpmn:outgoing>SequenceFlow_0xktw7v</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_0jxh015">
+        <bpmn:incoming>SequenceFlow_0soe5t3</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_0xktw7v" name="" sourceRef="StartEvent_1j0eixl" targetRef="ScriptTask_0by1uwk" />
+      <bpmn:sequenceFlow id="SequenceFlow_0soe5t3" name="" sourceRef="ScriptTask_0by1uwk" targetRef="EndEvent_0jxh015" />
+    </bpmn:subProcess>
+    <bpmn:startEvent id="StartEvent_0128tti" name="Fault Start">
+      <bpmn:outgoing>SequenceFlow_0qreiaa</bpmn:outgoing>
+      <bpmn:errorEventDefinition />
+    </bpmn:startEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_128ycfs" name="Is RollBack On?" default="SequenceFlow_1wberw3">
+      <bpmn:incoming>SequenceFlow_1xah9es</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_11y7faf</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1wberw3</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_03qps8q" name="Is Vnf Ok?" default="SequenceFlow_10dawse">
+      <bpmn:incoming>SequenceFlow_11y7faf</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0h7k68j</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_10dawse</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:callActivity id="CallActivity_03pmk7v" name="Call VNF Adapter Rollback" calledElement="vnfAdapterRestV1">
+      <bpmn:extensionElements>
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="DCVFMODVOLRBK_rollbackVnfARequest" target="vnfAdapterRestV1Request" />
+        <camunda:out source="workflowException" target="workflowException" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0h7k68j</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0bv04qn</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_0h7k68j" sourceRef="ExclusiveGateway_03qps8q" targetRef="CallActivity_03pmk7v">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMODVOLRBK_isCreateVnfRollbackNeeded") == "true"}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:scriptTask id="ScriptTask_1numqm0" name="Delete Volume Group" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0bv04qn</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_17k6oyz</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_13nb3n0</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModuleVolumeRollback = new DoCreateVfModuleVolumeRollback()
+doCreateVfModuleVolumeRollback.executeMethod('callRESTDeleteAAIVolumeGroup', execution, isDebugLogEnabled)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0bv04qn" sourceRef="CallActivity_03pmk7v" targetRef="ScriptTask_1numqm0" />
+    <bpmn:sequenceFlow id="SequenceFlow_10dawse" sourceRef="ExclusiveGateway_03qps8q" targetRef="ExclusiveGateway_1dzejtx" />
+    <bpmn:sequenceFlow id="SequenceFlow_13nb3n0" sourceRef="ScriptTask_1numqm0" targetRef="EndEvent_11duf9p" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1dzejtx" name="Is AAI Ok?" default="SequenceFlow_1do0853">
+      <bpmn:incoming>SequenceFlow_10dawse</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_17k6oyz</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1do0853</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_17k6oyz" sourceRef="ExclusiveGateway_1dzejtx" targetRef="ScriptTask_1numqm0">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMODVOLRBK_isAAIRollbackNeeded" ) == "true"}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1do0853" sourceRef="ExclusiveGateway_1dzejtx" targetRef="EndEvent_1ddbl39" />
+    <bpmn:endEvent id="EndEvent_1ddbl39">
+      <bpmn:incoming>SequenceFlow_1do0853</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1wberw3</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="EndEvent_11duf9p">
+      <bpmn:incoming>SequenceFlow_13nb3n0</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_11y7faf" sourceRef="ExclusiveGateway_128ycfs" targetRef="ExclusiveGateway_03qps8q">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMODVOLRBK_backoutOnFailure") != "false"}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:scriptTask id="ScriptTask_0uhy9lc" name="Pre process" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0qreiaa</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1xah9es</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModuleVolumeRollback = new DoCreateVfModuleVolumeRollback()
+doCreateVfModuleVolumeRollback.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1wberw3" sourceRef="ExclusiveGateway_128ycfs" targetRef="EndEvent_1ddbl39" />
+    <bpmn:sequenceFlow id="SequenceFlow_0qreiaa" sourceRef="StartEvent_0128tti" targetRef="ScriptTask_0uhy9lc" />
+    <bpmn:sequenceFlow id="SequenceFlow_1xah9es" sourceRef="ScriptTask_0uhy9lc" targetRef="ExclusiveGateway_128ycfs" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVfModuleVolumeRollback">
+      <bpmndi:BPMNShape id="SubProcess_1p4663w_di" bpmnElement="SubProcess_1p4663w" isExpanded="true">
+        <dc:Bounds x="293" y="165" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0by1uwk_di" bpmnElement="ScriptTask_0by1uwk">
+        <dc:Bounds x="441" y="220" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1j0eixl_di" bpmnElement="StartEvent_1j0eixl">
+        <dc:Bounds x="326" y="242" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="344" y="283" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0jxh015_di" bpmnElement="EndEvent_0jxh015">
+        <dc:Bounds x="602" y="242" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="620" y="283" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xktw7v_di" bpmnElement="SequenceFlow_0xktw7v">
+        <di:waypoint xsi:type="dc:Point" x="362" y="260" />
+        <di:waypoint xsi:type="dc:Point" x="441" y="260" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="404" y="260" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0soe5t3_di" bpmnElement="SequenceFlow_0soe5t3">
+        <di:waypoint xsi:type="dc:Point" x="541" y="260" />
+        <di:waypoint xsi:type="dc:Point" x="602" y="260" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="576" y="260" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="StartEvent_0128tti_di" bpmnElement="StartEvent_0128tti">
+        <dc:Bounds x="173" y="-93" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="167" y="-52" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_128ycfs_di" bpmnElement="ExclusiveGateway_128ycfs" isMarkerVisible="true">
+        <dc:Bounds x="465" y="-100" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="450" y="-50" width="79" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_03qps8q_di" bpmnElement="ExclusiveGateway_03qps8q" isMarkerVisible="true">
+        <dc:Bounds x="607" y="-100" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="606" y="-50" width="52" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_03pmk7v_di" bpmnElement="CallActivity_03pmk7v">
+        <dc:Bounds x="786" y="-115" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0h7k68j_di" bpmnElement="SequenceFlow_0h7k68j">
+        <di:waypoint xsi:type="dc:Point" x="657" y="-75" />
+        <di:waypoint xsi:type="dc:Point" x="786" y="-75" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="722" y="-90" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1numqm0_di" bpmnElement="ScriptTask_1numqm0">
+        <dc:Bounds x="998" y="-115" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bv04qn_di" bpmnElement="SequenceFlow_0bv04qn">
+        <di:waypoint xsi:type="dc:Point" x="886" y="-75" />
+        <di:waypoint xsi:type="dc:Point" x="937" y="-75" />
+        <di:waypoint xsi:type="dc:Point" x="937" y="-75" />
+        <di:waypoint xsi:type="dc:Point" x="998" y="-75" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="952" y="-75" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_10dawse_di" bpmnElement="SequenceFlow_10dawse">
+        <di:waypoint xsi:type="dc:Point" x="632" y="-50" />
+        <di:waypoint xsi:type="dc:Point" x="632" y="40" />
+        <di:waypoint xsi:type="dc:Point" x="811" y="40" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="648" y="-5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_13nb3n0_di" bpmnElement="SequenceFlow_13nb3n0">
+        <di:waypoint xsi:type="dc:Point" x="1098" y="-75" />
+        <di:waypoint xsi:type="dc:Point" x="1151" y="-75" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1125" y="-90" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1dzejtx_di" bpmnElement="ExclusiveGateway_1dzejtx" isMarkerVisible="true">
+        <dc:Bounds x="811" y="15" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="809" y="65" width="53" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_17k6oyz_di" bpmnElement="SequenceFlow_17k6oyz">
+        <di:waypoint xsi:type="dc:Point" x="861" y="40" />
+        <di:waypoint xsi:type="dc:Point" x="1048" y="40" />
+        <di:waypoint xsi:type="dc:Point" x="1048" y="-35" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="955" y="25" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1do0853_di" bpmnElement="SequenceFlow_1do0853">
+        <di:waypoint xsi:type="dc:Point" x="836" y="65" />
+        <di:waypoint xsi:type="dc:Point" x="836" y="99" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="851" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0le8wga_di" bpmnElement="EndEvent_1ddbl39">
+        <dc:Bounds x="818" y="99" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="836" y="135" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1iibjyo_di" bpmnElement="EndEvent_11duf9p">
+        <dc:Bounds x="1151" y="-93" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1169" y="-57" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_11y7faf_di" bpmnElement="SequenceFlow_11y7faf">
+        <di:waypoint xsi:type="dc:Point" x="515" y="-75" />
+        <di:waypoint xsi:type="dc:Point" x="607" y="-75" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="561" y="-90" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0uhy9lc_di" bpmnElement="ScriptTask_0uhy9lc">
+        <dc:Bounds x="288" y="-115" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wberw3_di" bpmnElement="SequenceFlow_1wberw3">
+        <di:waypoint xsi:type="dc:Point" x="490" y="-50" />
+        <di:waypoint xsi:type="dc:Point" x="490" y="117" />
+        <di:waypoint xsi:type="dc:Point" x="818" y="117" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="505" y="23.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0qreiaa_di" bpmnElement="SequenceFlow_0qreiaa">
+        <di:waypoint xsi:type="dc:Point" x="209" y="-75" />
+        <di:waypoint xsi:type="dc:Point" x="288" y="-75" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="249" y="-100" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xah9es_di" bpmnElement="SequenceFlow_1xah9es">
+        <di:waypoint xsi:type="dc:Point" x="388" y="-75" />
+        <di:waypoint xsi:type="dc:Point" x="465" y="-75" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="427" y="-100" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleVolumeV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleVolumeV2.bpmn
new file mode 100644
index 0000000..ac48776
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleVolumeV2.bpmn
@@ -0,0 +1,362 @@
+<?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.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>
+      <bpmn2:outgoing>SequenceFlow_1wi1cf9</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2()
+doCreateVfModuleVolumeV2.executeMethod('preProcessRequest', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="ScriptTask_callRestAaiCloudRegion" name="Call REST AAI Cloud Region" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1dpt7ul</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2()
+doCreateVfModuleVolumeV2.executeMethod('callRESTQueryAAICloudRegion', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="ScriptTask_callRestAaiCloudRegion" targetRef="ScriptTask_callRestAaiQueryGenericVnf" />
+    <bpmn2:scriptTask id="ScriptTask_createVolGrpExistsException" name="Build Workflow Exception" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_volGrpName404No</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2()
+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">
+      <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_volGrpName404Yes</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_volGrpName404No</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_volGrpName404Yes" name="Yes" sourceRef="ExclusiveGateway_aaiReturnCode404" targetRef="ScriptTask_callRestAaiCreateVolumeGrp">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{DCVFMODVOLV2_AaiReturnCode == '404'}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_volGrpName404No" name="No" sourceRef="ExclusiveGateway_aaiReturnCode404" targetRef="ScriptTask_createVolGrpExistsException" />
+    <bpmn2:scriptTask id="ScriptTask_callRestAaiQueryGenericVnf" name="Call REST AAI Query Generic VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2()
+doCreateVfModuleVolumeV2.executeMethod('callRESTQueryAAIGenericVnf', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_callRestAaiQueryGenericVnf" targetRef="ScriptTask_callRestAaiQueryVolGrpName" />
+    <bpmn2:boundaryEvent id="BoundaryEvent_catchAaiError" name="" attachedToRef="ScriptTask_callRestAaiQueryVolGrpName">
+      <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing>
+      <bpmn2:errorEventDefinition id="ErrorEventDefinition_3" errorRef="Error_1" />
+    </bpmn2:boundaryEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="BoundaryEvent_catchAaiError" targetRef="ExclusiveGateway_aaiReturnCode404" />
+    <bpmn2:scriptTask id="ScriptTask_callRestAaiQueryVolGrpName" name="Call REST AAI Query Volume Grp Name" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2()
+doCreateVfModuleVolumeV2.executeMethod('callRESTQueryAAIVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_callRestAaiQueryVolGrpName" targetRef="ExclusiveGateway_aaiReturnCode404" />
+    <bpmn2:scriptTask id="ScriptTask_callRestAaiCreateVolumeGrp" name="Call REST AAI Create Volume Group" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_volGrpName404Yes</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2()
+doCreateVfModuleVolumeV2.executeMethod('callRESTCreateAAIVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="ScriptTask_callRestAaiCreateVolumeGrp" targetRef="ScriptTask_prepareVnfAdapterCreate" />
+    <bpmn2:callActivity id="CallActivity_callVnfAdapterCreate" name="Call VNF Adapter Create" calledElement="vnfAdapterRestV1">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVFMODVOLV2_createVnfARequest" target="vnfAdapterRestV1Request" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="vnfAdapterRestV1Response" target="DCVFMODVOLV2_createVnfAResponse" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="VNFREST_vnfAdapterStatusCode" target="DCVFMODVOLV2_createVnfAReturnCode" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="VNFREST_SuccessIndicator" target="VNFREST_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1qwurc5</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_callRestAaiRequeryVolGrpNm" name="Call REST AAI Requery Volume Group Name" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1gbt2n5</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_28</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2()
+doCreateVfModuleVolumeV2.executeMethod('callRESTQueryAAIVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_28" name="" sourceRef="ScriptTask_callRestAaiRequeryVolGrpNm" targetRef="ScriptTask_callRestAaiVolumeGrp" />
+    <bpmn2:scriptTask id="ScriptTask_prepareDbInfraRequest" name="Set Success Indicator" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2()
+doCreateVfModuleVolumeV2.executeMethod('setSuccessIndicator', execution, true)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="ScriptTask_prepareDbInfraRequest" targetRef="EndEvent_1" />
+    <bpmn2:scriptTask id="ScriptTask_callRestAaiVolumeGrp" name="Call REST AAI Update Volume Group" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_28</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2()
+doCreateVfModuleVolumeV2.executeMethod('callRESTUpdateCreatedVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_callRestAaiVolumeGrp" targetRef="ScriptTask_prepareDbInfraRequest" />
+    <bpmn2:endEvent id="EndEvent_1" name="End">
+      <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="ScriptTask_prepareVnfAdapterCreate" name="Prepare VNF Adapter Create Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2()
+doCreateVfModuleVolumeV2.executeMethod('prepareVnfAdapterCreateRequest', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="ScriptTask_prepareVnfAdapterCreate" targetRef="CallActivity_callVnfAdapterCreate" />
+    <bpmn2:startEvent id="StartEvent_doCreateVfModuleVolume" name="Start">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_doCreateVfModuleVolume" targetRef="ScriptTask_preProcessRequest" />
+    <bpmn2:endEvent id="EndEvent_6" name="End">
+      <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="Task_07psich" name="Validate VNF Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1qwurc5</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1gbt2n5</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2()
+doCreateVfModuleVolumeV2.executeMethod('validateVnfResponse', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1qwurc5" sourceRef="CallActivity_callVnfAdapterCreate" targetRef="Task_07psich" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1gbt2n5" sourceRef="Task_07psich" targetRef="ScriptTask_callRestAaiRequeryVolGrpNm" />
+    <bpmn2:callActivity id="Task_1u766ge" name="Call Generic Get Service instance" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="GENGS_type" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1wi1cf9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1vmbvy8</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="Task_0qbm5cz" name="Validate Get Service Instance Call" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1vmbvy8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1dpt7ul</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2()
+doCreateVfModuleVolumeV2.executeMethod('validateGetServiceInstanceCall', execution, isDebugLogEnabled)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1wi1cf9" sourceRef="ScriptTask_preProcessRequest" targetRef="Task_1u766ge" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1vmbvy8" sourceRef="Task_1u766ge" targetRef="Task_0qbm5cz" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1dpt7ul" sourceRef="Task_0qbm5cz" targetRef="ScriptTask_callRestAaiCloudRegion" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVfModuleVolumeV2">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_65" bpmnElement="StartEvent_doCreateVfModuleVolume">
+        <dc:Bounds x="270" y="128" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="276" y="169" width="23" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="ScriptTask_preProcessRequest">
+        <dc:Bounds x="369" y="106" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_287" bpmnElement="ScriptTask_callRestAaiCloudRegion">
+        <dc:Bounds x="768" y="106" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_288" bpmnElement="ScriptTask_callRestAaiQueryVolGrpName">
+        <dc:Bounds x="1045" y="106" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_247" bpmnElement="ExclusiveGateway_aaiReturnCode404" isMarkerVisible="true">
+        <dc:Bounds x="1242" y="121" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1224" y="176" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_289" bpmnElement="ScriptTask_callRestAaiCreateVolumeGrp">
+        <dc:Bounds x="256" y="307" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_290" bpmnElement="ScriptTask_prepareVnfAdapterCreate">
+        <dc:Bounds x="420" y="307" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_32" bpmnElement="CallActivity_callVnfAdapterCreate">
+        <dc:Bounds x="576" y="307" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_292" bpmnElement="ScriptTask_callRestAaiRequeryVolGrpNm">
+        <dc:Bounds x="857" y="307" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_293" bpmnElement="ScriptTask_callRestAaiVolumeGrp">
+        <dc:Bounds x="995" y="307" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_294" bpmnElement="ScriptTask_prepareDbInfraRequest">
+        <dc:Bounds x="1142" y="307" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_226" bpmnElement="EndEvent_1">
+        <dc:Bounds x="1283" y="328" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1292" y="369" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_65" targetElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="306" y="146" />
+        <di:waypoint xsi:type="dc:Point" x="369" y="146" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="338" y="131" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_volGrpName404Yes" sourceElement="_BPMNShape_ExclusiveGateway_247" targetElement="_BPMNShape_ScriptTask_289">
+        <di:waypoint xsi:type="dc:Point" x="1267" y="171" />
+        <di:waypoint xsi:type="dc:Point" x="1267" y="232" />
+        <di:waypoint xsi:type="dc:Point" x="811" y="232" />
+        <di:waypoint xsi:type="dc:Point" x="306" y="232" />
+        <di:waypoint xsi:type="dc:Point" x="306" y="307" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="582" y="232" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ScriptTask_289" targetElement="_BPMNShape_ScriptTask_290">
+        <di:waypoint xsi:type="dc:Point" x="356" y="347" />
+        <di:waypoint xsi:type="dc:Point" x="420" y="347" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="388" y="332" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_290" targetElement="_BPMNShape_CallActivity_32">
+        <di:waypoint xsi:type="dc:Point" x="520" y="347" />
+        <di:waypoint xsi:type="dc:Point" x="576" y="347" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="548" y="455" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_ScriptTask_287" targetElement="_BPMNShape_ScriptTask_311">
+        <di:waypoint xsi:type="dc:Point" x="868" y="146" />
+        <di:waypoint xsi:type="dc:Point" x="911" y="147" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="890" y="132" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_296" bpmnElement="ScriptTask_createVolGrpExistsException">
+        <dc:Bounds x="1355" y="106" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_296" targetElement="_BPMNShape_EndEvent_241">
+        <di:waypoint xsi:type="dc:Point" x="1455" y="146" />
+        <di:waypoint xsi:type="dc:Point" x="1493" y="146" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1474" y="131" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_BoundaryEvent_62" targetElement="_BPMNShape_ExclusiveGateway_247">
+        <di:waypoint xsi:type="dc:Point" x="1145" y="88" />
+        <di:waypoint xsi:type="dc:Point" x="1145" y="59" />
+        <di:waypoint xsi:type="dc:Point" x="1267" y="59" />
+        <di:waypoint xsi:type="dc:Point" x="1267" y="121" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1206" y="44" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_volGrpName404No" sourceElement="_BPMNShape_ExclusiveGateway_247" targetElement="_BPMNShape_ScriptTask_296">
+        <di:waypoint xsi:type="dc:Point" x="1292" y="146" />
+        <di:waypoint xsi:type="dc:Point" x="1355" y="146" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1320" y="146" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_28" sourceElement="_BPMNShape_ScriptTask_292" targetElement="_BPMNShape_ScriptTask_293">
+        <di:waypoint xsi:type="dc:Point" x="957" y="347" />
+        <di:waypoint xsi:type="dc:Point" x="995" y="347" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="976" y="332" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_293" targetElement="_BPMNShape_ScriptTask_294">
+        <di:waypoint xsi:type="dc:Point" x="1095" y="347" />
+        <di:waypoint xsi:type="dc:Point" x="1142" y="347" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1119" y="332" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ScriptTask_294" targetElement="_BPMNShape_EndEvent_226">
+        <di:waypoint xsi:type="dc:Point" x="1242" y="347" />
+        <di:waypoint xsi:type="dc:Point" x="1283" y="346" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1263" y="332" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_311" bpmnElement="ScriptTask_callRestAaiQueryGenericVnf">
+        <dc:Bounds x="911" y="106" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_311" targetElement="_BPMNShape_ScriptTask_288">
+        <di:waypoint xsi:type="dc:Point" x="1011" y="146" />
+        <di:waypoint xsi:type="dc:Point" x="1045" y="146" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1028" y="131" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_62" bpmnElement="BoundaryEvent_catchAaiError">
+        <dc:Bounds x="1127" y="88" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1145" y="129" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_288" targetElement="_BPMNShape_ExclusiveGateway_247">
+        <di:waypoint xsi:type="dc:Point" x="1145" y="146" />
+        <di:waypoint xsi:type="dc:Point" x="1242" y="146" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1194" y="131" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_241" bpmnElement="EndEvent_6">
+        <dc:Bounds x="1493" y="128" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1502" y="169" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_00lua86_di" bpmnElement="Task_07psich">
+        <dc:Bounds x="716" y="307" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qwurc5_di" bpmnElement="SequenceFlow_1qwurc5">
+        <di:waypoint xsi:type="dc:Point" x="676" y="347" />
+        <di:waypoint xsi:type="dc:Point" x="716" y="347" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="696" y="322" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1gbt2n5_di" bpmnElement="SequenceFlow_1gbt2n5">
+        <di:waypoint xsi:type="dc:Point" x="816" y="347" />
+        <di:waypoint xsi:type="dc:Point" x="857" y="347" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="837" y="322" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1u596hd_di" bpmnElement="Task_1u766ge">
+        <dc:Bounds x="506" y="106" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1n9cmka_di" bpmnElement="Task_0qbm5cz">
+        <dc:Bounds x="640" y="106" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wi1cf9_di" bpmnElement="SequenceFlow_1wi1cf9">
+        <di:waypoint xsi:type="dc:Point" x="469" y="146" />
+        <di:waypoint xsi:type="dc:Point" x="506" y="146" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="488" y="121" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vmbvy8_di" bpmnElement="SequenceFlow_1vmbvy8">
+        <di:waypoint xsi:type="dc:Point" x="606" y="146" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="146" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="623" y="121" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dpt7ul_di" bpmnElement="SequenceFlow_1dpt7ul">
+        <di:waypoint xsi:type="dc:Point" x="740" y="146" />
+        <di:waypoint xsi:type="dc:Point" x="768" y="146" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="754" y="121" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnf.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnf.bpmn
new file mode 100644
index 0000000..dacce53
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnf.bpmn
@@ -0,0 +1,635 @@
+<?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.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCreateVnf" name="DoCreateVnf" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" />
+    <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+DoCreateVnf createVnf = new DoCreateVnf()
+createVnf.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="initialization" targetRef="callGetService" />
+    <bpmn2:scriptTask id="buildWorkflowException" name="Create Workflow Exception" scriptFormat="groovy">
+      <bpmn2:incoming>notFound</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.buildWorkflowException(execution, 404, "Service Instance Not Found")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="buildWorkflowException" targetRef="EndEvent_1" />
+    <bpmn2:callActivity id="callGetService" name="Get&#10;&#10;Service&#10;&#10;Instance" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="DoCVNF_serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="GENGS_serviceInstance" target="CRTVI_serviceInstance" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <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>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="callGetService" targetRef="serviceInstanceFound" />
+    <bpmn2:exclusiveGateway id="serviceInstanceFound" name="Service Instance Found?" default="notFound">
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:outgoing>notFound</bpmn2:outgoing>
+      <bpmn2:outgoing>found</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="notFound" name="No" sourceRef="serviceInstanceFound" targetRef="buildWorkflowException" />
+    <bpmn2:sequenceFlow id="found" name="Yes" sourceRef="serviceInstanceFound" targetRef="ExclusiveGateway_0j73e7c">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("GENGS_FoundIndicator" ) == true && execution.getVariable("GENGS_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="vnfExist" name="Vnf Already Exist?" default="vnfExistYes">
+      <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+      <bpmn2:outgoing>vnfExistYes</bpmn2:outgoing>
+      <bpmn2:outgoing>vnfExistNo</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="vnfExistYes" name="Yes" sourceRef="vnfExist" targetRef="vnfExistWorkflowException" />
+    <bpmn2:sequenceFlow id="vnfExistNo" name="No" sourceRef="vnfExist" targetRef="prepareCreateGenericVnf">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("GENGV_FoundIndicator" ) == false && execution.getVariable("GENGV_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:callActivity id="callGetVnf" name="Get&#10;&#10;Generic Vnf" calledElement="GenericGetVnf">
+      <bpmn2:extensionElements>
+        <camunda:in source="DoCVNF_vnfName" target="GENGV_vnfName" />
+        <camunda:in source="DoCVNF_type" target="GENGV_type" />
+        <camunda:out source="GENGV_vnf" target="CRTVI_genericVnf" />
+        <camunda:out source="GENGV_FoundIndicator" target="GENGV_FoundIndicator" />
+        <camunda:out source="GENGV_SuccessIndicator" target="GENGV_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>VnfNameSpecified1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="callGetVnf" targetRef="vnfExist" />
+    <bpmn2:scriptTask id="vnfExistWorkflowException" name="Create Workflow Exception" scriptFormat="groovy">
+      <bpmn2:incoming>vnfExistYes</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.buildWorkflowException(execution, 5000, "Generic Vnf Already Exist.")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="vnfExistWorkflowException" targetRef="EndEvent_2" />
+    <bpmn2:endEvent id="EndEvent_1">
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_2" />
+    </bpmn2:endEvent>
+    <bpmn2:endEvent id="EndEvent_2">
+      <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" errorRef="Error_2" />
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="prepareCreateGenericVnf" name="&#10;AAI&#10;Create&#10;(generic vnf)&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>vnfExistNo</bpmn2:incoming>
+      <bpmn2:incoming>VnfNameNotSpecified1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+DoCreateVnf createVnf = new DoCreateVnf()
+createVnf.createGenericVnf(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="prepareCreateGenericVnf" targetRef="postProcessCreateGenericVnf" />
+    <bpmn2:subProcess id="javaErrorHandlingSubProcess" name="Java Exception Handling Sub Process" triggeredByEvent="true">
+      <bpmn2:scriptTask id="processJavaError" name="Process Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="processJavaError" targetRef="EndEvent_4" />
+      <bpmn2:endEvent id="EndEvent_4">
+        <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:startEvent id="StartEvent_2">
+        <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="ErrorEventDefinition_3" errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="StartEvent_2" targetRef="processJavaError" />
+    </bpmn2:subProcess>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SdncInteractionNotEnabled</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0bj7c4s</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1q6udwm" sourceRef="preProcessSDNCAssignRequest" targetRef="callSDNCAdapterVNFTopologyAssign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="callSDNCAdapterVNFTopologyAssign" targetRef="postProcessSDNCAssignRequest" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1lalmvp" sourceRef="preProcessSDNCActivateRequest" targetRef="callSDNCAdapterVNFTopologyActivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="callSDNCAdapterVNFTopologyActivate" targetRef="postProcessSDNCActivateRequest" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15z3gpq" sourceRef="postProcessSDNCActivateRequest" targetRef="Task_053tb0h" />
+    <bpmn2:scriptTask id="preProcessSDNCAssignRequest" name="PreProcess SDNC Assign Request" scriptFormat="groovy">
+      <bpmn2:incoming>SdncInteractionEnabled</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1q6udwm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+DoCreateVnf createVnf = new DoCreateVnf()
+createVnf.preProcessSDNCAssignRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="callSDNCAdapterVNFTopologyAssign" name="Call SDNC Adapter VNF Topology Assign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DoCVNF_assignSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <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="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="DoCVNF_assignSDNCAdapterResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1q6udwm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="postProcessSDNCAssignRequest" name="PostProcess SDNC Assign Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0lnh79j</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+String response = execution.getVariable("DoCVNF_assignSDNCAdapterResponse")
+
+def createVnfInfra = new DoCreateVnf()
+createVnfInfra.validateSDNCResponse(execution, response, "assign")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="preProcessSDNCActivateRequest" name="PreProcess SDNC Activate Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1q1poly</bpmn2:incoming>
+      <bpmn2:incoming>VnfNameSpecified2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lalmvp</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+DoCreateVnf createVnf = new DoCreateVnf()
+createVnf.preProcessSDNCActivateRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="callSDNCAdapterVNFTopologyActivate" name="Call SDNC Adapter VNF Topology Activate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DoCVNF_activateSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="mso-reqeuest-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="DoCVNF_activateSDNCAdapterResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1lalmvp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="postProcessSDNCActivateRequest" name="PostProcess SDNC Activate Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15z3gpq</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+
+String response = execution.getVariable("DoCVNF_assignSDNCAdapterResponse")
+
+def createVnfInfra = new DoCreateVnf()
+createVnfInfra.validateSDNCResponse(execution, response, "activate")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_045rm8i" name="Is SDNC Interaction Enabled?" default="SdncInteractionNotEnabled">
+      <bpmn2:incoming>SequenceFlow_1gc18ih</bpmn2:incoming>
+      <bpmn2:outgoing>SdncInteractionEnabled</bpmn2:outgoing>
+      <bpmn2:outgoing>SdncInteractionNotEnabled</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SdncInteractionEnabled" name="Yes" sourceRef="ExclusiveGateway_045rm8i" targetRef="preProcessSDNCAssignRequest">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DoCVNF_sdncVersion" ) != '1702'}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SdncInteractionNotEnabled" name="No" sourceRef="ExclusiveGateway_045rm8i" targetRef="EndEvent_3" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1gc18ih" sourceRef="postProcessCreateGenericVnf" targetRef="ExclusiveGateway_045rm8i" />
+    <bpmn2:scriptTask id="postProcessCreateGenericVnf" name="PostProcess Create Generic Vnf" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1gc18ih</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+DoCreateVnf createVnf = new DoCreateVnf()
+createVnf.postProcessCreateGenericVnf(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0j73e7c" name="Vnf-name specified?" default="VnfNameSpecified1">
+      <bpmn2:incoming>found</bpmn2:incoming>
+      <bpmn2:outgoing>VnfNameNotSpecified1</bpmn2:outgoing>
+      <bpmn2:outgoing>VnfNameSpecified1</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="VnfNameNotSpecified1" name="No" sourceRef="ExclusiveGateway_0j73e7c" targetRef="prepareCreateGenericVnf">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DoCVNF_vnfName" ) == null}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="VnfNameSpecified1" name="Yes" sourceRef="ExclusiveGateway_0j73e7c" targetRef="callGetVnf" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1h9jdgr" sourceRef="PreProcessSDNCGetRequest" targetRef="CallSDNCAdapterVNFTopologyGet" />
+    <bpmn2:sequenceFlow id="SequenceFlow_14xac2y" sourceRef="CallSDNCAdapterVNFTopologyGet" targetRef="PostProcessSDNCGetRequest" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1q1poly" sourceRef="PostProcessSDNCGetRequest" targetRef="preProcessSDNCActivateRequest" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0qnhlm1" name="Vnf-name specified?" default="VnfNameSpecified2">
+      <bpmn2:incoming>SequenceFlow_0lnh79j</bpmn2:incoming>
+      <bpmn2:outgoing>VnfNameNotSpecified2</bpmn2:outgoing>
+      <bpmn2:outgoing>VnfNameSpecified2</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0lnh79j" sourceRef="postProcessSDNCAssignRequest" targetRef="ExclusiveGateway_0qnhlm1" />
+    <bpmn2:sequenceFlow id="VnfNameNotSpecified2" name="No" sourceRef="ExclusiveGateway_0qnhlm1" targetRef="PreProcessSDNCGetRequest">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DoCVNF_vnfName" ) == null}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="VnfNameSpecified2" name="Yes" sourceRef="ExclusiveGateway_0qnhlm1" targetRef="preProcessSDNCActivateRequest" />
+    <bpmn2:scriptTask id="PreProcessSDNCGetRequest" name="PreProcess SDNC Get Request" scriptFormat="groovy">
+      <bpmn2:incoming>VnfNameNotSpecified2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1h9jdgr</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+DoCreateVnf createVnf = new DoCreateVnf()
+createVnf.preProcessSDNCGetRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallSDNCAdapterVNFTopologyGet" name="Call SDNC Adapter VNF Topology Get" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DoCVNF_getSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="DoCVNF_getSDNCAdapterResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1h9jdgr</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_14xac2y</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCGetRequest" name="PostProcess SDNC Get Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_14xac2y</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1q1poly</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+
+String response = execution.getVariable("DoCVNF_getSDNCAdapterResponse")
+
+def createVnfInfra = new DoCreateVnf()
+createVnfInfra.validateSDNCResponse(execution, response, "get")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0bj7c4s" sourceRef="UpdateAAIOrchestrationStatus" targetRef="EndEvent_3" />
+    <bpmn2:callActivity id="UpdateAAIOrchestrationStatus" name="Update AAI Orchestration Status to Active" calledElement="UpdateAAIGenericVnf">
+      <bpmn2:extensionElements>
+        <camunda:in source="DoCVNF_updateAAIGenericVnfRequest" target="UpdateAAIGenericVnfRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-id" target="mso-service-id" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0nhsdmj</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0bj7c4s</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0nhsdmj" sourceRef="Task_053tb0h" targetRef="UpdateAAIOrchestrationStatus" />
+    <bpmn2:scriptTask id="Task_053tb0h" name="Prepare Update AAI Generic VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15z3gpq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0nhsdmj</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVnf = new DoCreateVnf()
+doCreateVnf.prepUpdateAAIGenericVnf(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" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVnf">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
+        <dc:Bounds x="96" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="114" y="263" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization">
+        <dc:Bounds x="216" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="132" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="216" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="165" y="240" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="316" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="406" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="361" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_59" bpmnElement="callGetService">
+        <dc:Bounds x="406" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_229" bpmnElement="serviceInstanceFound" isMarkerVisible="true">
+        <dc:Bounds x="552" y="215" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="536" y="267" width="82" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_CallActivity_59" targetElement="_BPMNShape_ExclusiveGateway_229">
+        <di:waypoint xsi:type="dc:Point" x="506" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="552" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="529" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_293" bpmnElement="buildWorkflowException">
+        <dc:Bounds x="720" y="115" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="notFound" sourceElement="_BPMNShape_ExclusiveGateway_229" targetElement="_BPMNShape_ScriptTask_293">
+        <di:waypoint xsi:type="dc:Point" x="577" y="215" />
+        <di:waypoint xsi:type="dc:Point" x="577" y="155" />
+        <di:waypoint xsi:type="dc:Point" x="720" y="155" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="580" y="174.4237288135593" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_225" bpmnElement="EndEvent_1">
+        <dc:Bounds x="876" y="137" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="894" y="178" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_293" targetElement="_BPMNShape_EndEvent_225">
+        <di:waypoint xsi:type="dc:Point" x="820" y="155" />
+        <di:waypoint xsi:type="dc:Point" x="876" y="155" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="846" y="155" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="found" sourceElement="_BPMNShape_ExclusiveGateway_229" targetElement="_BPMNShape_CallActivity_60">
+        <di:waypoint xsi:type="dc:Point" x="602" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="646" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="614" y="216.01288698145387" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_60" bpmnElement="callGetVnf">
+        <dc:Bounds x="720" y="288" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_232" bpmnElement="vnfExist" isMarkerVisible="true">
+        <dc:Bounds x="854" y="302" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="890" y="332" width="114" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_CallActivity_60" targetElement="_BPMNShape_ExclusiveGateway_232">
+        <di:waypoint xsi:type="dc:Point" x="820" y="328" />
+        <di:waypoint xsi:type="dc:Point" x="854" y="327" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="804" y="330" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_299" bpmnElement="vnfExistWorkflowException">
+        <dc:Bounds x="926" y="367" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_300" bpmnElement="prepareCreateGenericVnf">
+        <dc:Bounds x="959" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="vnfExistYes" sourceElement="_BPMNShape_ExclusiveGateway_232" targetElement="_BPMNShape_ScriptTask_299">
+        <di:waypoint xsi:type="dc:Point" x="879" y="352" />
+        <di:waypoint xsi:type="dc:Point" x="879" y="407" />
+        <di:waypoint xsi:type="dc:Point" x="926" y="407" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="880" y="367" width="29" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="vnfExistNo" sourceElement="_BPMNShape_ExclusiveGateway_232" targetElement="_BPMNShape_ScriptTask_300">
+        <di:waypoint xsi:type="dc:Point" x="879" y="302" />
+        <di:waypoint xsi:type="dc:Point" x="879" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="959" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="884" y="254" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_227" bpmnElement="EndEvent_2">
+        <dc:Bounds x="1092" y="389" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1110" y="430" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_299" targetElement="_BPMNShape_EndEvent_227">
+        <di:waypoint xsi:type="dc:Point" x="1026" y="407" />
+        <di:waypoint xsi:type="dc:Point" x="1092" y="407" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1034" y="407" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1765" y="537" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1783" y="578" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_300" targetElement="ScriptTask_0y55cyz_di">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1146" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1057.5" y="225" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_32" bpmnElement="javaErrorHandlingSubProcess" isExpanded="true">
+        <dc:Bounds x="109" y="668" width="313" height="169" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_76" bpmnElement="StartEvent_2">
+        <dc:Bounds x="133" y="735" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="151" y="776" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_308" bpmnElement="processJavaError">
+        <dc:Bounds x="216" y="713" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_234" bpmnElement="EndEvent_4">
+        <dc:Bounds x="361" y="735" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="379" y="776" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_StartEvent_76" targetElement="_BPMNShape_ScriptTask_308">
+        <di:waypoint xsi:type="dc:Point" x="169" y="753" />
+        <di:waypoint xsi:type="dc:Point" x="216" y="753" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="190" y="753" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ScriptTask_308" targetElement="_BPMNShape_EndEvent_234">
+        <di:waypoint xsi:type="dc:Point" x="316" y="753" />
+        <di:waypoint xsi:type="dc:Point" x="361" y="753" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="336" y="753" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q6udwm_di" bpmnElement="SequenceFlow_1q6udwm">
+        <di:waypoint xsi:type="dc:Point" x="306" y="555" />
+        <di:waypoint xsi:type="dc:Point" x="346" y="555" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="326" y="540" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q">
+        <di:waypoint xsi:type="dc:Point" x="446" y="555" />
+        <di:waypoint xsi:type="dc:Point" x="493" y="555" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="470" y="540" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lalmvp_di" bpmnElement="SequenceFlow_1lalmvp">
+        <di:waypoint xsi:type="dc:Point" x="1100" y="555" />
+        <di:waypoint xsi:type="dc:Point" x="1156" y="555" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1128" y="540" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb">
+        <di:waypoint xsi:type="dc:Point" x="1256" y="555" />
+        <di:waypoint xsi:type="dc:Point" x="1304" y="555" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1280" y="540" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15z3gpq_di" bpmnElement="SequenceFlow_15z3gpq">
+        <di:waypoint xsi:type="dc:Point" x="1404" y="555" />
+        <di:waypoint xsi:type="dc:Point" x="1445" y="555" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1425" y="540" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_01h1rx2_di" bpmnElement="preProcessSDNCAssignRequest">
+        <dc:Bounds x="206" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="callSDNCAdapterVNFTopologyAssign">
+        <dc:Bounds x="346" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="postProcessSDNCAssignRequest">
+        <dc:Bounds x="493" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rr2xrc_di" bpmnElement="preProcessSDNCActivateRequest">
+        <dc:Bounds x="1000" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="callSDNCAdapterVNFTopologyActivate">
+        <dc:Bounds x="1156" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCActivateRequest">
+        <dc:Bounds x="1304" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_045rm8i_di" bpmnElement="ExclusiveGateway_045rm8i" isMarkerVisible="true">
+        <dc:Bounds x="1758" y="215" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1756" y="163" width="54" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ttqcwx_di" bpmnElement="SdncInteractionEnabled">
+        <di:waypoint xsi:type="dc:Point" x="1783" y="265" />
+        <di:waypoint xsi:type="dc:Point" x="1783" y="475" />
+        <di:waypoint xsi:type="dc:Point" x="106" y="475" />
+        <di:waypoint xsi:type="dc:Point" x="106" y="555" />
+        <di:waypoint xsi:type="dc:Point" x="206" y="555" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="941" y="460" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ay5l4b_di" bpmnElement="SdncInteractionNotEnabled">
+        <di:waypoint xsi:type="dc:Point" x="1783" y="265" />
+        <di:waypoint xsi:type="dc:Point" x="1783" y="401" />
+        <di:waypoint xsi:type="dc:Point" x="1783" y="401" />
+        <di:waypoint xsi:type="dc:Point" x="1783" y="537" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1812" y="431.09791911764705" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1gc18ih_di" bpmnElement="SequenceFlow_1gc18ih">
+        <di:waypoint xsi:type="dc:Point" x="1246" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1758" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1457" y="225" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0y55cyz_di" bpmnElement="postProcessCreateGenericVnf">
+        <dc:Bounds x="1146" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0j73e7c_di" bpmnElement="ExclusiveGateway_0j73e7c" isMarkerVisible="true">
+        <dc:Bounds x="646" y="215" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="653" y="184" width="51" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0k2oavy_di" bpmnElement="VnfNameNotSpecified1">
+        <di:waypoint xsi:type="dc:Point" x="696" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="959" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="821.0502092050209" y="215" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1pwgmrg_di" bpmnElement="VnfNameSpecified1">
+        <di:waypoint xsi:type="dc:Point" x="671" y="265" />
+        <di:waypoint xsi:type="dc:Point" x="671" y="328" />
+        <di:waypoint xsi:type="dc:Point" x="720" y="328" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="677" y="286.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h9jdgr_di" bpmnElement="SequenceFlow_1h9jdgr">
+        <di:waypoint xsi:type="dc:Point" x="777" y="693" />
+        <di:waypoint xsi:type="dc:Point" x="799" y="693" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="788" y="678" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_14xac2y_di" bpmnElement="SequenceFlow_14xac2y">
+        <di:waypoint xsi:type="dc:Point" x="899" y="693" />
+        <di:waypoint xsi:type="dc:Point" x="926" y="693" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="913" y="678" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q1poly_di" bpmnElement="SequenceFlow_1q1poly">
+        <di:waypoint xsi:type="dc:Point" x="1026" y="693" />
+        <di:waypoint xsi:type="dc:Point" x="1050" y="693" />
+        <di:waypoint xsi:type="dc:Point" x="1050" y="595" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1038" y="678" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0qnhlm1_di" bpmnElement="ExclusiveGateway_0qnhlm1" isMarkerVisible="true">
+        <dc:Bounds x="625" y="530" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="624" y="495" width="51" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0lnh79j_di" bpmnElement="SequenceFlow_0lnh79j">
+        <di:waypoint xsi:type="dc:Point" x="593" y="555" />
+        <di:waypoint xsi:type="dc:Point" x="625" y="555" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="609" y="530" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mh1y3w_di" bpmnElement="VnfNameNotSpecified2">
+        <di:waypoint xsi:type="dc:Point" x="650" y="580" />
+        <di:waypoint xsi:type="dc:Point" x="650" y="693" />
+        <di:waypoint xsi:type="dc:Point" x="677" y="693" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="626" y="622" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_175qbtt_di" bpmnElement="VnfNameSpecified2">
+        <di:waypoint xsi:type="dc:Point" x="675" y="555" />
+        <di:waypoint xsi:type="dc:Point" x="1000" y="555" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="829" y="530" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1cpb0sg_di" bpmnElement="PreProcessSDNCGetRequest">
+        <dc:Bounds x="677" y="653" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0h8tpji_di" bpmnElement="CallSDNCAdapterVNFTopologyGet">
+        <dc:Bounds x="799" y="653" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1orism0_di" bpmnElement="PostProcessSDNCGetRequest">
+        <dc:Bounds x="926" y="653" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bj7c4s_di" bpmnElement="SequenceFlow_0bj7c4s">
+        <di:waypoint xsi:type="dc:Point" x="1700" y="555" />
+        <di:waypoint xsi:type="dc:Point" x="1765" y="555" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1733" y="540" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0a4a9lx_di" bpmnElement="UpdateAAIOrchestrationStatus">
+        <dc:Bounds x="1600" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0nhsdmj_di" bpmnElement="SequenceFlow_0nhsdmj">
+        <di:waypoint xsi:type="dc:Point" x="1545" y="555" />
+        <di:waypoint xsi:type="dc:Point" x="1600" y="555" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1573" y="540" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0aonzix_di" bpmnElement="Task_053tb0h">
+        <dc:Bounds x="1445" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn
new file mode 100644
index 0000000..d817f57
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn
@@ -0,0 +1,527 @@
+<?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="DoCreateVnfAndModules" name="DoCreateVnfAndModules" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1">
+      <bpmn:outgoing>SequenceFlow_0o4vuzt</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:scriptTask id="PreProcessRequest" name="PreProcess Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0o4vuzt</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1xd3ri5</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVnfAndModules = new DoCreateVnfAndModules()
+doCreateVnfAndModules.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="CreateBaseVfModule" name="Create Base VF Module" calledElement="DoCreateVfModule">
+      <bpmn:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="vnfType" target="vnfType" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="baseVfModuleName" target="vfModuleName" />
+        <camunda:in source="vfModuleType" target="vfModuleType" />
+        <camunda:in source="volumeGroupId" target="volumeGroupId" />
+        <camunda:in source="volumeGroupName" target="volumeGroupName" />
+        <camunda:in source="baseVfModuleId" target="vfModuleId" />
+        <camunda:in source="baseVfModuleModelInfo" target="vfModuleModelInfo" />
+        <camunda:in source="isBaseVfModule" target="isBaseVfModule" />
+        <camunda:in source="asdcServiceModelVersion" target="asdcServiceModelVersion" />
+        <camunda:out source="vfModuleId" target="createdVfModuleId" />
+        <camunda:out source="vfModuleOutputParams" target="createdVfModuleOutputParams" />
+        <camunda:out source="rollbackData" target="DCVAM_baseRollbackData" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <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="sdncVersion" target="sdncVersion" />
+        <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" />
+        <camunda:in source="tenantId" target="tenantId" />
+        <camunda:in source="false" target="usePreload" />
+        <camunda:in source="aLaCarte" target="aLaCarte" />
+        <camunda:in source="RegionOne_flavorList" target="RegionOne_flavorList" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1hf7k7q</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ixcnb6</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_0o4vuzt" sourceRef="StartEvent_1" targetRef="PreProcessRequest" />
+    <bpmn:sequenceFlow id="SequenceFlow_1xd3ri5" sourceRef="PreProcessRequest" targetRef="QueryCatalogDB" />
+    <bpmn:callActivity id="CreateAddOnVfModule" name="Create Add-On VF Module" calledElement="DoCreateVfModule">
+      <bpmn:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="vnfType" target="vnfType" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="addOnVfModuleName" target="vfModuleName" />
+        <camunda:in source="vfModuleType" target="vfModuleType" />
+        <camunda:in source="addOnVfModuleId" target="vfModuleId" />
+        <camunda:in source="volumeGroupId" target="volumeGroupId" />
+        <camunda:in source="volumeGroupName" target="volumeGroupName" />
+        <camunda:in source="addOnVfModuleModelInfo" target="vfModuleModelInfo" />
+        <camunda:in source="isBaseVfModule" target="isBaseVfModule" />
+        <camunda:in source="asdcServiceModelVersion" target="asdcServiceModelVersion" />
+        <camunda:out source="vfModuleId" target="createdVfModuleId" />
+        <camunda:out source="vfModuleOutputParameters" target="createdVfModuleOutputParameters" />
+        <camunda:out source="rollbackData" target="DCVAM_addOnRollbackData" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <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="sdncVersion" target="sdncVersion" />
+        <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>
+    </bpmn:callActivity>
+    <bpmn:scriptTask id="Task_1lfmdks" name="Validate Create Add-On VF Module Response" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1llbx0k</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1mguf2m</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVnfAndModules = new DoCreateVnfAndModules()
+doCreateVnfAndModules.validateAddOnModule(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:endEvent id="EndEvent_0v6povc">
+      <bpmn:incoming>SequenceFlow_132bohl</bpmn:incoming>
+      <bpmn:terminateEventDefinition />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1llbx0k" sourceRef="CreateAddOnVfModule" targetRef="Task_1lfmdks" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1vyqr5o" name="Are there more add-on modules?" default="SequenceFlow_132bohl">
+      <bpmn:extensionElements>
+        <camunda:properties>
+          <camunda:property />
+        </camunda:properties>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1a6wyuu</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0j52dxv</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_132bohl</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0jz6bqn</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_132bohl" name="No" sourceRef="ExclusiveGateway_1vyqr5o" targetRef="EndEvent_0v6povc" />
+    <bpmn:callActivity id="CreateVNF" name="Create VNF" calledElement="DoCreateVnf">
+      <bpmn:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="vnfModelInfo" target="vnfModelInfo" />
+        <camunda:in source="vnfType" target="vnfType" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="vnfInputParameters" target="vnfInputParameters" />
+        <camunda:in source="productFamilyId" target="productFamilyId" />
+        <camunda:out source="vnfId" target="vnfId" />
+        <camunda:out source="vnfOutputParams" target="vnfOutputParams" />
+        <camunda:out source="rollbackData" target="rollbackData" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="sdncVersion" target="sdncVersion" />
+        <camunda:out source="vnfName" target="vnfName" />
+        <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" />
+        <camunda:in source="tenantId" target="tenantId" />
+        <camunda:in source="rollbackData" target="rollbackData" />
+        <camunda:in source="vnfResourceDecomposition" target="vnfResourceDecomposition" />
+        <camunda:in source="RegionOne_flavorList" target="RegionOne_flavorList" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_19ohb1a</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_07u8e3l</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:scriptTask id="PreProcessAddOnModule" name="PreProcess Add-On Module" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0jz6bqn</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_12x4dvf</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVnfAndModules = new DoCreateVnfAndModules()
+doCreateVnfAndModules.preProcessAddOnModule(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="QueryCatalogDB" name="Query Catalog DB for VF Modules" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1xd3ri5</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_19ohb1a</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVnfAndModules = new DoCreateVnfAndModules()
+doCreateVnfAndModules.queryCatalogDB(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1hx9s0y" name="Less than initialCount?" default="SequenceFlow_1vrogpr">
+      <bpmn:incoming>SequenceFlow_1mguf2m</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_12x4dvf</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0kld3qt</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1vrogpr</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0jz6bqn" name="yes" sourceRef="ExclusiveGateway_1vyqr5o" targetRef="PreProcessAddOnModule">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("addOnModulesDeployed") <  execution.getVariable("addOnModulesToDeploy")}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0kld3qt" name="yes" sourceRef="ExclusiveGateway_1hx9s0y" targetRef="GenerateAddOnModuleName">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("instancesOfThisModuleDeployed") < execution.getVariable("initialCount")}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1mguf2m" sourceRef="Task_1lfmdks" targetRef="ExclusiveGateway_1hx9s0y" />
+    <bpmn:sequenceFlow id="SequenceFlow_1vrogpr" name="no" sourceRef="ExclusiveGateway_1hx9s0y" targetRef="PostProcessAddOnModule" />
+    <bpmn:sequenceFlow id="SequenceFlow_1hf7k7q" sourceRef="GenerateBaseModuleName" targetRef="CreateBaseVfModule" />
+    <bpmn:callActivity id="GenerateBaseModuleName" name="Generate Base Module Name" calledElement="GenerateVfModuleName">
+      <bpmn:extensionElements>
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:in source="baseVfModuleLabel" target="vfModuleLabel" />
+        <camunda:in source="basePersonaModelId" target="personaModelId" />
+        <camunda:out source="vfModuleName" target="baseVfModuleName" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_07u8e3l</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1hf7k7q</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:callActivity id="GenerateAddOnModuleName" name="Generate Add-On Module Name" calledElement="GenerateVfModuleName">
+      <bpmn:extensionElements>
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:in source="addOnVfModuleLabel" target="vfModuleLabel" />
+        <camunda:in source="addOnPersonaModelId" target="personaModelId" />
+        <camunda:out source="vfModuleName" target="addOnVfModuleName" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0kld3qt</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1lh21yl</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_1lh21yl" sourceRef="GenerateAddOnModuleName" targetRef="CreateAddOnVfModule" />
+    <bpmn:sequenceFlow id="SequenceFlow_12x4dvf" sourceRef="PreProcessAddOnModule" targetRef="ExclusiveGateway_1hx9s0y" />
+    <bpmn:sequenceFlow id="SequenceFlow_1ixcnb6" sourceRef="CreateBaseVfModule" targetRef="Task_054rz9i" />
+    <bpmn:sequenceFlow id="SequenceFlow_1a6wyuu" sourceRef="Task_054rz9i" targetRef="ExclusiveGateway_1vyqr5o" />
+    <bpmn:scriptTask id="Task_054rz9i" name="Validate Create Base VF Module Response" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1ixcnb6</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1a6wyuu</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVnfAndModules = new DoCreateVnfAndModules()
+doCreateVnfAndModules.validateBaseModule(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:subProcess id="SubProcess_0u7tbb2" name="Sub-process for Application Errors" triggeredByEvent="true">
+      <bpmn:endEvent id="EndEvent_16s0a3q">
+        <bpmn:incoming>SequenceFlow_1h74w1v</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:callActivity id="CallActivity_0gtajjm" name="Call DoCreateVnfAndModulesRollback" calledElement="DoCreateVnfAndModulesRollback">
+        <bpmn:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="rollbackData" target="rollbackData" />
+          <camunda:in source="disableRollback" target="disableRollback" />
+          <camunda:out source="rolledBack" target="rolledBack" />
+          <camunda:out source="rollbackError" target="rollbackError" />
+          <camunda:in source="sdncVersion" target="sdncVersion" />
+        </bpmn:extensionElements>
+        <bpmn:incoming>SequenceFlow_03v8mmc</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0yu0im2</bpmn:outgoing>
+      </bpmn:callActivity>
+      <bpmn:scriptTask id="PreProcessRollback" name="Pre Process Rollback" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_1l0rxnh</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_03v8mmc</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvam = new DoCreateVnfAndModules()
+dcvam.preProcessRollback(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:scriptTask id="PostProcessRollback" name="Post Process Rollback" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0yu0im2</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1h74w1v</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvam = new DoCreateVnfAndModules()
+dcvam.postProcessRollback(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_1l0rxnh" sourceRef="StartEvent_1nbwxby" targetRef="PreProcessRollback" />
+      <bpmn:sequenceFlow id="SequenceFlow_1h74w1v" sourceRef="PostProcessRollback" targetRef="EndEvent_16s0a3q" />
+      <bpmn:sequenceFlow id="SequenceFlow_03v8mmc" sourceRef="PreProcessRollback" targetRef="CallActivity_0gtajjm" />
+      <bpmn:sequenceFlow id="SequenceFlow_0yu0im2" sourceRef="CallActivity_0gtajjm" targetRef="PostProcessRollback" />
+      <bpmn:startEvent id="StartEvent_1nbwxby">
+        <bpmn:outgoing>SequenceFlow_1l0rxnh</bpmn:outgoing>
+        <bpmn:errorEventDefinition errorRef="Error_2" />
+      </bpmn:startEvent>
+    </bpmn:subProcess>
+    <bpmn:sequenceFlow id="SequenceFlow_19ohb1a" sourceRef="QueryCatalogDB" targetRef="CreateVNF" />
+    <bpmn:sequenceFlow id="SequenceFlow_07u8e3l" sourceRef="CreateVNF" targetRef="GenerateBaseModuleName" />
+    <bpmn:sequenceFlow id="SequenceFlow_0j52dxv" sourceRef="PostProcessAddOnModule" targetRef="ExclusiveGateway_1vyqr5o" />
+    <bpmn:scriptTask id="PostProcessAddOnModule" name="PostProcess Add-On Module" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1vrogpr</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0j52dxv</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVnfAndModules = new DoCreateVnfAndModules()
+doCreateVnfAndModules.postProcessAddOnModule(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1t407j7" sourceRef="Task_1mrb29r" targetRef="Task_0qrf3e8" />
+    <bpmn:sequenceFlow id="SequenceFlow_0baw1tl" sourceRef="Task_0qrf3e8" targetRef="GenerateBaseModuleName" />
+    <bpmn:scriptTask id="Task_1mrb29r" name="Create Platform" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_07u8e3l</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1t407j7</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVnfAndModules = new DoCreateVnfAndModules()
+doCreateVnfAndModules.createPlatform(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="Task_0qrf3e8" name="Create Line-of-Business" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1t407j7</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0baw1tl</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doCreateVnfAndModules = new DoCreateVnfAndModules()
+doCreateVnfAndModules.createLineOfBusiness(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+  </bpmn:process>
+  <bpmn:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" />
+  <bpmn:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVnfAndModules">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="152" y="147" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="170" y="183" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1tco8kw_di" bpmnElement="PreProcessRequest">
+        <dc:Bounds x="256" y="125" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1sztzw8_di" bpmnElement="CreateBaseVfModule">
+        <dc:Bounds x="1239" y="125" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0o4vuzt_di" bpmnElement="SequenceFlow_0o4vuzt">
+        <di:waypoint xsi:type="dc:Point" x="188" y="165" />
+        <di:waypoint xsi:type="dc:Point" x="256" y="165" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="222" y="150" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xd3ri5_di" bpmnElement="SequenceFlow_1xd3ri5">
+        <di:waypoint xsi:type="dc:Point" x="356" y="165" />
+        <di:waypoint xsi:type="dc:Point" x="418" y="165" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="387" y="150" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0auiwq0_di" bpmnElement="CreateAddOnVfModule">
+        <dc:Bounds x="2100" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1eeaxqn_di" bpmnElement="Task_1lfmdks">
+        <dc:Bounds x="2239" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1h41bs7_di" bpmnElement="EndEvent_0v6povc">
+        <dc:Bounds x="2362" y="147" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2380" y="183" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1llbx0k_di" bpmnElement="SequenceFlow_1llbx0k">
+        <di:waypoint xsi:type="dc:Point" x="2200" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="2239" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2220" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1vyqr5o_di" bpmnElement="ExclusiveGateway_1vyqr5o" isMarkerVisible="true">
+        <dc:Bounds x="1517" y="140" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1498" y="190" width="90" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_132bohl_di" bpmnElement="SequenceFlow_132bohl">
+        <di:waypoint xsi:type="dc:Point" x="1542" y="140" />
+        <di:waypoint xsi:type="dc:Point" x="1542" y="36" />
+        <di:waypoint xsi:type="dc:Point" x="2380" y="36" />
+        <di:waypoint xsi:type="dc:Point" x="2380" y="147" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1962" y="21" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0zr4ioh_di" bpmnElement="CreateVNF">
+        <dc:Bounds x="574" y="125" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0tknqn1_di" bpmnElement="PreProcessAddOnModule">
+        <dc:Bounds x="1651" y="125" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1u6qcio_di" bpmnElement="QueryCatalogDB">
+        <dc:Bounds x="418" y="125" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1hx9s0y_di" bpmnElement="ExclusiveGateway_1hx9s0y" isMarkerVisible="true">
+        <dc:Bounds x="1844" y="140" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1837" y="190" width="63" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jz6bqn_di" bpmnElement="SequenceFlow_0jz6bqn">
+        <di:waypoint xsi:type="dc:Point" x="1567" y="165" />
+        <di:waypoint xsi:type="dc:Point" x="1609" y="165" />
+        <di:waypoint xsi:type="dc:Point" x="1609" y="165" />
+        <di:waypoint xsi:type="dc:Point" x="1649" y="165" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1571" y="147" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0kld3qt_di" bpmnElement="SequenceFlow_0kld3qt">
+        <di:waypoint xsi:type="dc:Point" x="1869" y="140" />
+        <di:waypoint xsi:type="dc:Point" x="1869" y="89" />
+        <di:waypoint xsi:type="dc:Point" x="1952" y="89" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1886" y="96" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mguf2m_di" bpmnElement="SequenceFlow_1mguf2m">
+        <di:waypoint xsi:type="dc:Point" x="2289" y="137" />
+        <di:waypoint xsi:type="dc:Point" x="2289" y="165" />
+        <di:waypoint xsi:type="dc:Point" x="1894" y="165" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2304" y="151" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vrogpr_di" bpmnElement="SequenceFlow_1vrogpr">
+        <di:waypoint xsi:type="dc:Point" x="1869" y="190" />
+        <di:waypoint xsi:type="dc:Point" x="1869" y="221" />
+        <di:waypoint xsi:type="dc:Point" x="1869" y="221" />
+        <di:waypoint xsi:type="dc:Point" x="1869" y="301" />
+        <di:waypoint xsi:type="dc:Point" x="1751" y="301" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1878" y="247" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1hf7k7q_di" bpmnElement="SequenceFlow_1hf7k7q">
+        <di:waypoint xsi:type="dc:Point" x="1191" y="165" />
+        <di:waypoint xsi:type="dc:Point" x="1239" y="165" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1215" y="150" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0rz8zl9_di" bpmnElement="GenerateBaseModuleName">
+        <dc:Bounds x="1091" y="125" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0otq8mo_di" bpmnElement="GenerateAddOnModuleName">
+        <dc:Bounds x="1952" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lh21yl_di" bpmnElement="SequenceFlow_1lh21yl">
+        <di:waypoint xsi:type="dc:Point" x="2052" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="2100" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2076" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_12x4dvf_di" bpmnElement="SequenceFlow_12x4dvf">
+        <di:waypoint xsi:type="dc:Point" x="1751" y="165" />
+        <di:waypoint xsi:type="dc:Point" x="1844" y="165" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1798" y="140" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ixcnb6_di" bpmnElement="SequenceFlow_1ixcnb6">
+        <di:waypoint xsi:type="dc:Point" x="1339" y="165" />
+        <di:waypoint xsi:type="dc:Point" x="1381" y="165" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1360" y="150" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1a6wyuu_di" bpmnElement="SequenceFlow_1a6wyuu">
+        <di:waypoint xsi:type="dc:Point" x="1481" y="165" />
+        <di:waypoint xsi:type="dc:Point" x="1517" y="165" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1499" y="150" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1obevnp_di" bpmnElement="Task_054rz9i">
+        <dc:Bounds x="1381" y="125" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0u7tbb2_di" bpmnElement="SubProcess_0u7tbb2" isExpanded="true">
+        <dc:Bounds x="113" y="382" width="783" height="195" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_16s0a3q_di" bpmnElement="EndEvent_16s0a3q">
+        <dc:Bounds x="843" y="460" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="861" y="501" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0gtajjm_di" bpmnElement="CallActivity_0gtajjm">
+        <dc:Bounds x="508" y="438" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_12g5tld_di" bpmnElement="PreProcessRollback">
+        <dc:Bounds x="345" y="438" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1nk6apr_di" bpmnElement="PostProcessRollback">
+        <dc:Bounds x="676" y="438" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1l0rxnh_di" bpmnElement="SequenceFlow_1l0rxnh">
+        <di:waypoint xsi:type="dc:Point" x="246" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="345" y="478" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="296" y="463" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h74w1v_di" bpmnElement="SequenceFlow_1h74w1v">
+        <di:waypoint xsi:type="dc:Point" x="776" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="808" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="808" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="843" y="478" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="823" y="478" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_03v8mmc_di" bpmnElement="SequenceFlow_03v8mmc">
+        <di:waypoint xsi:type="dc:Point" x="445" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="508" y="478" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="477" y="463" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yu0im2_di" bpmnElement="SequenceFlow_0yu0im2">
+        <di:waypoint xsi:type="dc:Point" x="608" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="676" y="478" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="642" y="463" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="StartEvent_00jdkur_di" bpmnElement="StartEvent_1nbwxby">
+        <dc:Bounds x="210" y="460" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="228" y="501" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_19ohb1a_di" bpmnElement="SequenceFlow_19ohb1a">
+        <di:waypoint xsi:type="dc:Point" x="518" y="165" />
+        <di:waypoint xsi:type="dc:Point" x="574" y="165" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="546" y="140" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_07u8e3l_di" bpmnElement="SequenceFlow_07u8e3l">
+        <di:waypoint xsi:type="dc:Point" x="674" y="165" />
+        <di:waypoint xsi:type="dc:Point" x="742" y="165" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="708" y="150" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0j52dxv_di" bpmnElement="SequenceFlow_0j52dxv">
+        <di:waypoint xsi:type="dc:Point" x="1651" y="301" />
+        <di:waypoint xsi:type="dc:Point" x="1543" y="301" />
+        <di:waypoint xsi:type="dc:Point" x="1542" y="190" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1597" y="286" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0srhar8_di" bpmnElement="PostProcessAddOnModule">
+        <dc:Bounds x="1651" y="262" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t407j7_di" bpmnElement="SequenceFlow_1t407j7">
+        <di:waypoint xsi:type="dc:Point" x="842" y="165" />
+        <di:waypoint xsi:type="dc:Point" x="916" y="165" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="879" y="150" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0baw1tl_di" bpmnElement="SequenceFlow_0baw1tl">
+        <di:waypoint xsi:type="dc:Point" x="1016" y="165" />
+        <di:waypoint xsi:type="dc:Point" x="1091" y="165" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1054" y="150" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0i9vj5o_di" bpmnElement="Task_1mrb29r">
+        <dc:Bounds x="742" y="125" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0stghuy_di" bpmnElement="Task_0qrf3e8">
+        <dc:Bounds x="916" y="125" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnfAndModulesRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnfAndModulesRollback.bpmn
new file mode 100644
index 0000000..a900a4e
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVnfAndModulesRollback.bpmn
@@ -0,0 +1,541 @@
+<?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="_Wblj8GyfEeWUWLTvug7ZOg" 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="DoCreateVnfAndModulesRollback" name="DoCreateVnfAndModulesRollback" isExecutable="true">
+    <bpmn2:subProcess id="SubProcess_1" name="Rollback Error Handling" triggeredByEvent="true">
+      <bpmn2:startEvent id="CatchExceptions" name="Catch Exceptions">
+        <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1">
+        <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="CatchExceptions" targetRef="SetFailedRollbackStatus" />
+      <bpmn2:scriptTask id="LogSaveWorkflowException" name="Log and Save Workflow Exception" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1wch84s</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvfmr = new DoCreateVfModuleRollback()
+dcvfmr.logWorkflowException(execution, 'DoCreateVfModuleRollback caught an event')
+dcvfmr.saveWorkflowException(execution, 'DCVFMR_CaughtWorkflowException1')]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="LogSaveWorkflowException" targetRef="EndEvent_1" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1wch84s" sourceRef="SetFailedRollbackStatus" targetRef="LogSaveWorkflowException" />
+      <bpmn2:scriptTask id="SetFailedRollbackStatus" name="Set Failed Rollback Status" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1wch84s</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvamr= new DoCreateVnfAndModulesRollback()
+dcvamr.setFailedRollbackStatus(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+    </bpmn2:subProcess>
+    <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1">
+      <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_86" />
+    </bpmn2:boundaryEvent>
+    <bpmn2:endEvent id="EndEvent_2">
+      <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_2" />
+    <bpmn2:startEvent id="StartEvent_1gai4qr">
+      <bpmn2:outgoing>SequenceFlow_1537b7m</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_12v8g91" name="Are there VF Modules to roll back?" default="SequenceFlow_1r6wyy6">
+      <bpmn2:incoming>SequenceFlow_1srw52v</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0zjzorm</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_19xaddm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1r6wyy6</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0v85t87</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_09ajxqr" name="Delete VNF?" default="SequenceFlow_1yas9ol">
+      <bpmn2:incoming>SequenceFlow_1g6psjt</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_152tazp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1kr0r4a</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1yas9ol</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:endEvent id="EndEvent_1seag7u">
+      <bpmn2:incoming>SequenceFlow_0mk9lrj</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_03cc9y6</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1537b7m" sourceRef="StartEvent_1gai4qr" targetRef="PreProcessRequest" />
+    <bpmn2:scriptTask id="PreProcessRequest" name="PreProcess Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1537b7m</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0bmsi5h</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvamr = new DoCreateVnfAndModulesRollback()
+dcvamr.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0bmsi5h" sourceRef="PreProcessRequest" targetRef="ExclusiveGateway_01o1lkn" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1ycq005" sourceRef="Task_1sbxjc8" targetRef="RollbackCreateVFModule" />
+    <bpmn2:scriptTask id="Task_1sbxjc8" name="Prepare Rollback Create VF Module Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0v85t87</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ycq005</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvamr = new DoCreateVnfAndModulesRollback()
+dcvamr.preProcessCreateVfModuleRollback(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="RollbackCreateVFModule" name="Rollback Create VF Module " calledElement="DoCreateVfModuleRollback">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVAMR_RollbackData" target="rollbackData" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="&#34;true&#34;" target="isVidRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <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>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1r6wyy6" name="no" sourceRef="ExclusiveGateway_12v8g91" targetRef="ExclusiveGateway_07kr3gt" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0v85t87" name="yes" sourceRef="ExclusiveGateway_12v8g91" targetRef="Task_1sbxjc8">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAMR_numOfModulesToDelete") > 0}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1kr0r4a" name="yes" sourceRef="ExclusiveGateway_09ajxqr" targetRef="Task_0p8fmrm">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAMR_rollbackVnfCreate")  == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_04yd2yr" sourceRef="Task_0p8fmrm" targetRef="SetSuccessfulRollbackStatus" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1yas9ol" name="no" sourceRef="ExclusiveGateway_09ajxqr" targetRef="SetSuccessfulRollbackStatus" />
+    <bpmn2:callActivity id="Task_0p8fmrm" name="Delete VNF" calledElement="DoDeleteVnf">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVAMR_vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1kr0r4a</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04yd2yr</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_181hb2a" sourceRef="RollbackCreateVFModule" targetRef="Task_0kf9oby" />
+    <bpmn2:scriptTask id="Task_0kf9oby" name="PostProcess Rollback Create VF Module" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_181hb2a</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1srw52v</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvamr = new DoCreateVnfAndModulesRollback()
+dcvamr.postProcessCreateVfModuleRollback(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1srw52v" sourceRef="Task_0kf9oby" targetRef="ExclusiveGateway_12v8g91" />
+    <bpmn2:scriptTask id="PreProcessSDNCDeactivateRequest" name="PreProcess SDNC Deactivate Request" scriptFormat="groovy">
+      <bpmn2:incoming>SDNCDeactivateYes</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0nysmc9</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvamr= new DoCreateVnfAndModulesRollback()
+dcvamr.preProcessSDNCDeactivateRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="ScriptTask_1ug98j4" name="PostProcess SDNC Deactivate Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1hc04x2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_19xaddm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvamr = new DoDeleteVnfAndModules()
+String response = execution.getVariable("DCVAMR_deactivateSDNCAdapterResponse")
+dcvamr.validateSDNCResponse(execution, response, "deactivate")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCAdapterTopologyDeactivate" name="Call SDNC Adapter Topology Deactivate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVAMR_deactivateSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <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="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="DCVAMR_deactivateSDNCAdapterResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0nysmc9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1hc04x2</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0nysmc9" sourceRef="PreProcessSDNCDeactivateRequest" targetRef="SDNCAdapterTopologyDeactivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1hc04x2" sourceRef="SDNCAdapterTopologyDeactivate" targetRef="ScriptTask_1ug98j4" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1sr014x" name="Send SDNC Deactivate?" default="SequenceFlow_0zjzorm">
+      <bpmn2:incoming>SequenceFlow_1rezswi</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0zjzorm</bpmn2:outgoing>
+      <bpmn2:outgoing>SDNCDeactivateYes</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0zjzorm" name="no" sourceRef="ExclusiveGateway_1sr014x" targetRef="ExclusiveGateway_12v8g91" />
+    <bpmn2:sequenceFlow id="SDNCDeactivateYes" name="yes" sourceRef="ExclusiveGateway_1sr014x" targetRef="PreProcessSDNCDeactivateRequest">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAMR_rollbackSDNCActivate")  == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_19xaddm" sourceRef="ScriptTask_1ug98j4" targetRef="ExclusiveGateway_12v8g91" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_07kr3gt" name="Send SDNC Unassign?" default="SequenceFlow_1g6psjt">
+      <bpmn2:incoming>SequenceFlow_1r6wyy6</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1g6psjt</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_01am36p</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1g6psjt" name="no" sourceRef="ExclusiveGateway_07kr3gt" targetRef="ExclusiveGateway_09ajxqr" />
+    <bpmn2:scriptTask id="ScriptTask_1ma7nvr" name="PreProcess SDNC Unassign Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_01am36p</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0a5ecvu</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvamr= new DoCreateVnfAndModulesRollback()
+dcvamr.preProcessSDNCUnassignRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_018fqnd" name="Call SDNC Adapter Topology Unassign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVAMR_unassignSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <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="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="DCVAMR_unassignSDNCAdapterResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0a5ecvu</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ilok6u</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_0b3jyb7" name="PostProcess SDNC Unassign Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1ilok6u</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_152tazp</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvamr = new DoDeleteVnfAndModules()
+String response = execution.getVariable("DCVAMR_unassignSDNCAdapterResponse")
+dcvamr.validateSDNCResponse(execution, response, "unassign")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0a5ecvu" sourceRef="ScriptTask_1ma7nvr" targetRef="CallActivity_018fqnd" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1ilok6u" sourceRef="CallActivity_018fqnd" targetRef="ScriptTask_0b3jyb7" />
+    <bpmn2:sequenceFlow id="SequenceFlow_152tazp" sourceRef="ScriptTask_0b3jyb7" targetRef="ExclusiveGateway_09ajxqr" />
+    <bpmn2:sequenceFlow id="SequenceFlow_01am36p" name="yes" sourceRef="ExclusiveGateway_07kr3gt" targetRef="ScriptTask_1ma7nvr">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVAMR_rollbackSDNCAssign")  == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_01o1lkn" name="Skip rollback?" default="SequenceFlow_1rezswi">
+      <bpmn2:incoming>SequenceFlow_0bmsi5h</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1rezswi</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0mk9lrj</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1rezswi" name="no" sourceRef="ExclusiveGateway_01o1lkn" targetRef="ExclusiveGateway_1sr014x" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0mk9lrj" name="yes" sourceRef="ExclusiveGateway_01o1lkn" targetRef="EndEvent_1seag7u">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" )  == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_03cc9y6" sourceRef="SetSuccessfulRollbackStatus" targetRef="EndEvent_1seag7u" />
+    <bpmn2:scriptTask id="SetSuccessfulRollbackStatus" name="Set Successful Rollback Status" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1yas9ol</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_04yd2yr</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_03cc9y6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcvamr= new DoCreateVnfAndModulesRollback()
+dcvamr.setSuccessfulRollbackStatus(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmn2:message id="Message_1" name="DoCreateVfModuleRollbackRequest" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateVnfAndModulesRollback">
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_22" bpmnElement="SubProcess_1" isExpanded="true">
+        <dc:Bounds x="16" y="1012" width="621" height="152" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_59" bpmnElement="CatchExceptions">
+        <dc:Bounds x="36" y="1063" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="42" y="1108" width="85" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_281" bpmnElement="LogSaveWorkflowException">
+        <dc:Bounds x="361" y="1041" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_188" bpmnElement="EndEvent_1">
+        <dc:Bounds x="537" y="1063" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="555" y="1099" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_55" bpmnElement="BoundaryEvent_1">
+        <dc:Bounds x="619" y="1059" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="637" y="1095" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_189" bpmnElement="EndEvent_2">
+        <dc:Bounds x="710" y="1058" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="728" y="1099" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_StartEvent_59" targetElement="_BPMNShape_ScriptTask_281">
+        <di:waypoint xsi:type="dc:Point" x="72" y="1081" />
+        <di:waypoint xsi:type="dc:Point" x="161" y="1081" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="117" y="1066" width="0" height="0" />
+        </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="461" y="1081" />
+        <di:waypoint xsi:type="dc:Point" x="537" y="1081" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="499" y="1066" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_BoundaryEvent_55" targetElement="_BPMNShape_EndEvent_189">
+        <di:waypoint xsi:type="dc:Point" x="655" y="1077" />
+        <di:waypoint xsi:type="dc:Point" x="710" y="1076" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="683" y="1061.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="StartEvent_1gai4qr_di" bpmnElement="StartEvent_1gai4qr">
+        <dc:Bounds x="-91" y="655" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-73" y="691" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_12v8g91_di" bpmnElement="ExclusiveGateway_12v8g91" isMarkerVisible="true">
+        <dc:Bounds x="806" y="648" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="753" y="619" width="73" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_09ajxqr_di" bpmnElement="ExclusiveGateway_09ajxqr" isMarkerVisible="true">
+        <dc:Bounds x="1291" y="799" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1241" y="786" width="62" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1seag7u_di" bpmnElement="EndEvent_1seag7u">
+        <dc:Bounds x="1678" y="806" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2135" y="827" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1537b7m_di" bpmnElement="SequenceFlow_1537b7m">
+        <di:waypoint xsi:type="dc:Point" x="-55" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="-3" y="673" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-29" y="658" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0fckboe_di" bpmnElement="PreProcessRequest">
+        <dc:Bounds x="-3" y="633" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bmsi5h_di" bpmnElement="SequenceFlow_0bmsi5h">
+        <di:waypoint xsi:type="dc:Point" x="97" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="124" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="124" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="150" y="673" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="139" y="673" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ycq005_di" bpmnElement="SequenceFlow_1ycq005">
+        <di:waypoint xsi:type="dc:Point" x="983" y="494" />
+        <di:waypoint xsi:type="dc:Point" x="1016" y="495" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1000" y="480" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1sc2oye_di" bpmnElement="Task_1sbxjc8">
+        <dc:Bounds x="883" y="455" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1lj1iud_di" bpmnElement="RollbackCreateVFModule">
+        <dc:Bounds x="1016" y="455" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1r6wyy6_di" bpmnElement="SequenceFlow_1r6wyy6">
+        <di:waypoint xsi:type="dc:Point" x="831" y="698" />
+        <di:waypoint xsi:type="dc:Point" x="831" y="799" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="838" y="759.6519350414114" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0v85t87_di" bpmnElement="SequenceFlow_0v85t87">
+        <di:waypoint xsi:type="dc:Point" x="831" y="648" />
+        <di:waypoint xsi:type="dc:Point" x="831" y="495" />
+        <di:waypoint xsi:type="dc:Point" x="883" y="495" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="837" y="572.1521739130435" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kr0r4a_di" bpmnElement="SequenceFlow_1kr0r4a">
+        <di:waypoint xsi:type="dc:Point" x="1316" y="799" />
+        <di:waypoint xsi:type="dc:Point" x="1316" y="733" />
+        <di:waypoint xsi:type="dc:Point" x="1390" y="733" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1322" y="765.8928772635815" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04yd2yr_di" bpmnElement="SequenceFlow_04yd2yr">
+        <di:waypoint xsi:type="dc:Point" x="1490" y="733" />
+        <di:waypoint xsi:type="dc:Point" x="1592" y="733" />
+        <di:waypoint xsi:type="dc:Point" x="1592" y="784" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1541" y="718" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yas9ol_di" bpmnElement="SequenceFlow_1yas9ol">
+        <di:waypoint xsi:type="dc:Point" x="1341" y="824" />
+        <di:waypoint xsi:type="dc:Point" x="1542" y="824" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1503" y="807" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_01fs058_di" bpmnElement="Task_0p8fmrm">
+        <dc:Bounds x="1390" y="693" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_181hb2a_di" bpmnElement="SequenceFlow_181hb2a">
+        <di:waypoint xsi:type="dc:Point" x="1116" y="495" />
+        <di:waypoint xsi:type="dc:Point" x="1155" y="495" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1136" y="480" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_196e1px_di" bpmnElement="Task_0kf9oby">
+        <dc:Bounds x="1155" y="455" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1srw52v_di" bpmnElement="SequenceFlow_1srw52v">
+        <di:waypoint xsi:type="dc:Point" x="1205" y="535" />
+        <di:waypoint xsi:type="dc:Point" x="1205" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="856" y="673" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1220" y="604" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_12w53bf_di" bpmnElement="PreProcessSDNCDeactivateRequest">
+        <dc:Bounds x="323" y="795" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1ug98j4_di" bpmnElement="ScriptTask_1ug98j4">
+        <dc:Bounds x="617" y="795" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1gvc90m_di" bpmnElement="SDNCAdapterTopologyDeactivate">
+        <dc:Bounds x="473" y="795" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0nysmc9_di" bpmnElement="SequenceFlow_0nysmc9">
+        <di:waypoint xsi:type="dc:Point" x="423" y="835" />
+        <di:waypoint xsi:type="dc:Point" x="473" y="835" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="449" y="820" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1hc04x2_di" bpmnElement="SequenceFlow_1hc04x2">
+        <di:waypoint xsi:type="dc:Point" x="573" y="835" />
+        <di:waypoint xsi:type="dc:Point" x="617" y="835" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="595" y="820" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1sr014x_di" bpmnElement="ExclusiveGateway_1sr014x" isMarkerVisible="true">
+        <dc:Bounds x="277" y="648" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="271" y="608" width="62" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zjzorm_di" bpmnElement="SequenceFlow_0zjzorm">
+        <di:waypoint xsi:type="dc:Point" x="327" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="806" y="673" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="561" y="658" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1tgi77m_di" bpmnElement="SDNCDeactivateYes">
+        <di:waypoint xsi:type="dc:Point" x="302" y="698" />
+        <di:waypoint xsi:type="dc:Point" x="302" y="835" />
+        <di:waypoint xsi:type="dc:Point" x="323" y="835" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="308" y="756.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19xaddm_di" bpmnElement="SequenceFlow_19xaddm">
+        <di:waypoint xsi:type="dc:Point" x="717" y="835" />
+        <di:waypoint xsi:type="dc:Point" x="781" y="835" />
+        <di:waypoint xsi:type="dc:Point" x="781" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="806" y="673" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="796" y="754" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_07kr3gt_di" bpmnElement="ExclusiveGateway_07kr3gt" isMarkerVisible="true">
+        <dc:Bounds x="806" y="799" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="841" y="858" width="62" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1g6psjt_di" bpmnElement="SequenceFlow_1g6psjt">
+        <di:waypoint xsi:type="dc:Point" x="856" y="824" />
+        <di:waypoint xsi:type="dc:Point" x="1074" y="824" />
+        <di:waypoint xsi:type="dc:Point" x="1074" y="824" />
+        <di:waypoint xsi:type="dc:Point" x="1291" y="824" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1083" y="824" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1ma7nvr_di" bpmnElement="ScriptTask_1ma7nvr">
+        <dc:Bounds x="873" y="905" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_018fqnd_di" bpmnElement="CallActivity_018fqnd">
+        <dc:Bounds x="1034" y="905" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0b3jyb7_di" bpmnElement="ScriptTask_0b3jyb7">
+        <dc:Bounds x="1195" y="905" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0a5ecvu_di" bpmnElement="SequenceFlow_0a5ecvu">
+        <di:waypoint xsi:type="dc:Point" x="973" y="945" />
+        <di:waypoint xsi:type="dc:Point" x="1034" y="945" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1004" y="930" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ilok6u_di" bpmnElement="SequenceFlow_1ilok6u">
+        <di:waypoint xsi:type="dc:Point" x="1134" y="945" />
+        <di:waypoint xsi:type="dc:Point" x="1195" y="945" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1165" y="930" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_152tazp_di" bpmnElement="SequenceFlow_152tazp">
+        <di:waypoint xsi:type="dc:Point" x="1295" y="945" />
+        <di:waypoint xsi:type="dc:Point" x="1316" y="945" />
+        <di:waypoint xsi:type="dc:Point" x="1316" y="849" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1306" y="920" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_01am36p_di" bpmnElement="SequenceFlow_01am36p">
+        <di:waypoint xsi:type="dc:Point" x="831" y="849" />
+        <di:waypoint xsi:type="dc:Point" x="831" y="945" />
+        <di:waypoint xsi:type="dc:Point" x="873" y="945" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="838" y="897" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_01o1lkn_di" bpmnElement="ExclusiveGateway_01o1lkn" isMarkerVisible="true">
+        <dc:Bounds x="150" y="648" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="136" y="614" width="68" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rezswi_di" bpmnElement="SequenceFlow_1rezswi">
+        <di:waypoint xsi:type="dc:Point" x="200" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="239" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="239" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="277" y="673" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="214" y="648" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0mk9lrj_di" bpmnElement="SequenceFlow_0mk9lrj">
+        <di:waypoint xsi:type="dc:Point" x="175" y="698" />
+        <di:waypoint xsi:type="dc:Point" x="175" y="991" />
+        <di:waypoint xsi:type="dc:Point" x="1696" y="1002" />
+        <di:waypoint xsi:type="dc:Point" x="1696" y="842" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="147" y="775" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_03cc9y6_di" bpmnElement="SequenceFlow_03cc9y6">
+        <di:waypoint xsi:type="dc:Point" x="1642" y="824" />
+        <di:waypoint xsi:type="dc:Point" x="1678" y="824" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1660" y="809" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1a3lghn_di" bpmnElement="SetSuccessfulRollbackStatus">
+        <dc:Bounds x="1542" y="784" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wch84s_di" bpmnElement="SequenceFlow_1wch84s">
+        <di:waypoint xsi:type="dc:Point" x="261" y="1081" />
+        <di:waypoint xsi:type="dc:Point" x="361" y="1081" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="311" y="1066" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1od8f5n_di" bpmnElement="SetFailedRollbackStatus">
+        <dc:Bounds x="161" y="1041" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCustomDeleteE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCustomDeleteE2EServiceInstance.bpmn
new file mode 100644
index 0000000..73c2109
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCustomDeleteE2EServiceInstance.bpmn
@@ -0,0 +1,470 @@
+<?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.10.0">
+  <bpmn:process id="DoCustomDeleteE2EServiceInstanceV3" name="All Resources Deleted" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_0212h2r" name="Start Flow">
+      <bpmn:outgoing>SequenceFlow_0vz7cd9</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:scriptTask id="ScriptTask_06phzgv" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0vz7cd9</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_11e6bfy</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstance()
+ddsi.preProcessRequest(execution)
+]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:endEvent id="EndEvent_1uqzt26">
+      <bpmn:incoming>SequenceFlow_0e7inkl</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="ScriptTask_1rtnsh8" name="Post Process AAI GET" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_188ejvu</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0vi0sv6</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstance()
+ddsi.postProcessAAIGET(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_01erufg" name="&#10;AAI&#10;Delete&#10;(svc instance)&#10;" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0oj2anh</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1ev7z6q</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0e7inkl</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstance()
+ddsi.deleteServiceInstance(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:subProcess id="SubProcess_1u8zt9i" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0sf5lpt">
+        <bpmn:outgoing>SequenceFlow_1921mo3</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_06utmg4">
+        <bpmn:incoming>SequenceFlow_18vlzfo</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_0nha3pr" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_1921mo3</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_18vlzfo</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_1921mo3" name="" sourceRef="StartEvent_0sf5lpt" targetRef="ScriptTask_0nha3pr" />
+      <bpmn:sequenceFlow id="SequenceFlow_18vlzfo" name="" sourceRef="ScriptTask_0nha3pr" targetRef="EndEvent_06utmg4" />
+    </bpmn:subProcess>
+    <bpmn:sequenceFlow id="SequenceFlow_0vz7cd9" sourceRef="StartEvent_0212h2r" targetRef="ScriptTask_06phzgv" />
+    <bpmn:sequenceFlow id="SequenceFlow_11e6bfy" sourceRef="ScriptTask_06phzgv" targetRef="CallActivity_076pc2z" />
+    <bpmn:sequenceFlow id="SequenceFlow_0e7inkl" sourceRef="ScriptTask_01erufg" targetRef="EndEvent_1uqzt26" />
+    <bpmn:sequenceFlow id="SequenceFlow_0vi0sv6" sourceRef="ScriptTask_1rtnsh8" targetRef="ScriptTask_146jt8v" />
+    <bpmn:scriptTask id="ScriptTask_0z30dax" name="Prepare Resource Delele For WAN" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1ubor5z</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1dza4q4</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+String resourceName = execution.getVariable("resourceType")
+def ddsi = new DoCustomDeleteE2EServiceInstance()
+ddsi.preResourceDelete(execution, resourceName )]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1dza4q4" sourceRef="ScriptTask_0z30dax" targetRef="CallActivity_Del_SDNC_cust" />
+    <bpmn:sequenceFlow id="SequenceFlow_1wnkgpx" sourceRef="Task_0z1x3sg" targetRef="Task_0963dho" />
+    <bpmn:scriptTask id="Task_0z1x3sg" name="Prepare Resource Delele For NS" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1x3lehs</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1wnkgpx</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+String resourceName = execution.getVariable("resourceType")
+def ddsi = new DoCustomDeleteE2EServiceInstance()
+ddsi.preResourceDelete(execution, resourceName )]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="Task_0963dho" name="Call Network Service Delete for NS" calledElement="DoDeleteVFCNetworkServiceInstance">
+      <bpmn:extensionElements>
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="serviceInstanceId" target="serviceId" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="resourceTemplateId" target="resourceTemplateId" />
+        <camunda:in source="resourceInstanceId" target="resourceInstanceId" />
+        <camunda:in source="resourceType" target="resourceType" />
+        <camunda:in source="operationType" target="operationType" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1wnkgpx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0phwem2</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:serviceTask id="CallActivity_Del_SDNC_cust" name="Call Custom Delete SDNC Overlay" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncNetworkTopologyOperationTask">
+      <bpmn:incoming>SequenceFlow_1dza4q4</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1lxqjmp</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:serviceTask id="Task_0edkv0m" name="Call Delete SDNC Service Topology" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncServiceTopologyOperationTask">
+      <bpmn:incoming>SequenceFlow_1icwpye</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ev7z6q</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:scriptTask id="ScriptTask_146jt8v" name="Prepare Resource Oper Status" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0vi0sv6</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ym9otf</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstance()
+ddsi.preInitResourcesOperStatus(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:serviceTask id="ServiceTask_00tg69u" name="Init Resource Oper Status">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <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>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_initResOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1ym9otf</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1j08ko3</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1ym9otf" sourceRef="ScriptTask_146jt8v" targetRef="ServiceTask_00tg69u" />
+    <bpmn:callActivity id="CallActivity_076pc2z" name="Call AAI Generic GetService" calledElement="GenericGetService">
+      <bpmn:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in source="serviceType" target="GENGS_serviceType" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_11e6bfy</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_188ejvu</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_188ejvu" sourceRef="CallActivity_076pc2z" targetRef="ScriptTask_1rtnsh8" />
+    <bpmn:scriptTask id="ScriptTask_0o5bglz" name="Sequense Resources" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1j08ko3</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_03c0zlq</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstance()
+ddsi.sequenceResource(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1j08ko3" sourceRef="ServiceTask_00tg69u" targetRef="ScriptTask_0o5bglz" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_07toixi" name="Check Current Resource">
+      <bpmn:incoming>SequenceFlow_1htjmkv</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ubor5z</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1x3lehs</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:scriptTask id="ScriptTask_12q6a51" name="Get Current Resource" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_03c0zlq</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0s1lswk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1htjmkv</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstance()
+ddsi.getCurrentResource(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_03c0zlq" sourceRef="ScriptTask_0o5bglz" targetRef="ScriptTask_12q6a51" />
+    <bpmn:sequenceFlow id="SequenceFlow_1htjmkv" sourceRef="ScriptTask_12q6a51" targetRef="ExclusiveGateway_07toixi" />
+    <bpmn:sequenceFlow id="SequenceFlow_1ubor5z" name="SDN-C" sourceRef="ExclusiveGateway_07toixi" targetRef="ScriptTask_0z30dax">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("controllerInfo" )  == "SDN-C" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1x3lehs" name="VF-C" sourceRef="ExclusiveGateway_07toixi" targetRef="Task_0z1x3sg">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("controllerInfo" )  == "VF-C" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:scriptTask id="ScriptTask_0w46sge" name="Parse Next Resource" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1lxqjmp</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0phwem2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0l5r96s</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstance()
+ddsi.parseNextResource(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1lxqjmp" sourceRef="CallActivity_Del_SDNC_cust" targetRef="ScriptTask_0w46sge" />
+    <bpmn:sequenceFlow id="SequenceFlow_0phwem2" sourceRef="Task_0963dho" targetRef="ScriptTask_0w46sge" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1hgjg3u" name="Is All Resource Deleted">
+      <bpmn:incoming>SequenceFlow_0l5r96s</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0talboa</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0s1lswk</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0l5r96s" sourceRef="ScriptTask_0w46sge" targetRef="ExclusiveGateway_1hgjg3u" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_16046vb" name="Is SDNC Service Contained">
+      <bpmn:incoming>SequenceFlow_0talboa</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1icwpye</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0oj2anh</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1icwpye" name="yes" sourceRef="ExclusiveGateway_16046vb" targetRef="Task_0edkv0m">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("isContainsWanResource" )  == "true" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1ev7z6q" sourceRef="Task_0edkv0m" targetRef="ScriptTask_01erufg" />
+    <bpmn:sequenceFlow id="SequenceFlow_0oj2anh" name="no" sourceRef="ExclusiveGateway_16046vb" targetRef="ScriptTask_01erufg">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("isContainsWanResource" )  == "false" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0talboa" name="yes" sourceRef="ExclusiveGateway_1hgjg3u" targetRef="ExclusiveGateway_16046vb">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("allResourceFinished" )  == "true" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0s1lswk" name="no" sourceRef="ExclusiveGateway_1hgjg3u" targetRef="ScriptTask_12q6a51">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("allResourceFinished" )  == "false" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCustomDeleteE2EServiceInstanceV3">
+      <bpmndi:BPMNShape id="StartEvent_0212h2r_di" bpmnElement="StartEvent_0212h2r">
+        <dc:Bounds x="-612" y="-35" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-618" y="6" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_06phzgv_di" bpmnElement="ScriptTask_06phzgv">
+        <dc:Bounds x="-519" y="-57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1uqzt26_di" bpmnElement="EndEvent_1uqzt26">
+        <dc:Bounds x="1388" y="790" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1316" y="831" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rtnsh8_di" bpmnElement="ScriptTask_1rtnsh8">
+        <dc:Bounds x="-193" y="-57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_01erufg_di" bpmnElement="ScriptTask_01erufg">
+        <dc:Bounds x="1356" y="513" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_1u8zt9i_di" bpmnElement="SubProcess_1u8zt9i" isExpanded="true">
+        <dc:Bounds x="292" y="675" width="467" height="193" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vz7cd9_di" bpmnElement="SequenceFlow_0vz7cd9">
+        <di:waypoint xsi:type="dc:Point" x="-576" y="-17" />
+        <di:waypoint xsi:type="dc:Point" x="-519" y="-17" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-592.5" y="-38" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11e6bfy_di" bpmnElement="SequenceFlow_11e6bfy">
+        <di:waypoint xsi:type="dc:Point" x="-419" y="-17" />
+        <di:waypoint xsi:type="dc:Point" x="-357" y="-17" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-433" y="-38" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0e7inkl_di" bpmnElement="SequenceFlow_0e7inkl">
+        <di:waypoint xsi:type="dc:Point" x="1406" y="593" />
+        <di:waypoint xsi:type="dc:Point" x="1406" y="790" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1376" y="685.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vi0sv6_di" bpmnElement="SequenceFlow_0vi0sv6">
+        <di:waypoint xsi:type="dc:Point" x="-93" y="-17" />
+        <di:waypoint xsi:type="dc:Point" x="-26" y="-17" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-104.5" y="-38" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="StartEvent_0sf5lpt_di" bpmnElement="StartEvent_0sf5lpt">
+        <dc:Bounds x="360" y="742" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="288" y="783" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_06utmg4_di" bpmnElement="EndEvent_06utmg4">
+        <dc:Bounds x="653" y="742" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="581" y="783" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0nha3pr_di" bpmnElement="ScriptTask_0nha3pr">
+        <dc:Bounds x="464" y="720" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1921mo3_di" bpmnElement="SequenceFlow_1921mo3">
+        <di:waypoint xsi:type="dc:Point" x="396" y="760" />
+        <di:waypoint xsi:type="dc:Point" x="464" y="760" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="340" y="745" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18vlzfo_di" bpmnElement="SequenceFlow_18vlzfo">
+        <di:waypoint xsi:type="dc:Point" x="564" y="760" />
+        <di:waypoint xsi:type="dc:Point" x="653" y="760" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="520" y="745" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0z30dax_di" bpmnElement="ScriptTask_0z30dax">
+        <dc:Bounds x="470" y="111" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dza4q4_di" bpmnElement="SequenceFlow_1dza4q4">
+        <di:waypoint xsi:type="dc:Point" x="570" y="151" />
+        <di:waypoint xsi:type="dc:Point" x="688" y="152" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="584" y="130.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wnkgpx_di" bpmnElement="SequenceFlow_1wnkgpx">
+        <di:waypoint xsi:type="dc:Point" x="576" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="688" y="378" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="587" y="357" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_00301ai_di" bpmnElement="Task_0z1x3sg">
+        <dc:Bounds x="476" y="338" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1mwacgl_di" bpmnElement="Task_0963dho">
+        <dc:Bounds x="688" y="338" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0v9q75y_di" bpmnElement="CallActivity_Del_SDNC_cust">
+        <dc:Bounds x="688" y="112" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0p4b7e1_di" bpmnElement="Task_0edkv0m">
+        <dc:Bounds x="1356" y="233" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_146jt8v_di" bpmnElement="ScriptTask_146jt8v">
+        <dc:Bounds x="-26" y="-57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_00tg69u_di" bpmnElement="ServiceTask_00tg69u">
+        <dc:Bounds x="-26" y="67" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ym9otf_di" bpmnElement="SequenceFlow_1ym9otf">
+        <di:waypoint xsi:type="dc:Point" x="24" y="23" />
+        <di:waypoint xsi:type="dc:Point" x="24" y="67" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-6" y="39" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_076pc2z_di" bpmnElement="CallActivity_076pc2z">
+        <dc:Bounds x="-357" y="-57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_188ejvu_di" bpmnElement="SequenceFlow_188ejvu">
+        <di:waypoint xsi:type="dc:Point" x="-257" y="-17" />
+        <di:waypoint xsi:type="dc:Point" x="-193" y="-17" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-225" y="-38" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0o5bglz_di" bpmnElement="ScriptTask_0o5bglz">
+        <dc:Bounds x="-26" y="233" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1j08ko3_di" bpmnElement="SequenceFlow_1j08ko3">
+        <di:waypoint xsi:type="dc:Point" x="24" y="147" />
+        <di:waypoint xsi:type="dc:Point" x="24" y="233" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="39" y="184" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_07toixi_di" bpmnElement="ExclusiveGateway_07toixi" isMarkerVisible="true">
+        <dc:Bounds x="342.56962025316454" y="248" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="332" y="302" width="73" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_12q6a51_di" bpmnElement="ScriptTask_12q6a51">
+        <dc:Bounds x="159" y="450" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_03c0zlq_di" bpmnElement="SequenceFlow_03c0zlq">
+        <di:waypoint xsi:type="dc:Point" x="24" y="313" />
+        <di:waypoint xsi:type="dc:Point" x="24" y="494" />
+        <di:waypoint xsi:type="dc:Point" x="159" y="490" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="39" y="397.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1htjmkv_di" bpmnElement="SequenceFlow_1htjmkv">
+        <di:waypoint xsi:type="dc:Point" x="209" y="450" />
+        <di:waypoint xsi:type="dc:Point" x="209" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="343" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="224" y="355.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ubor5z_di" bpmnElement="SequenceFlow_1ubor5z">
+        <di:waypoint xsi:type="dc:Point" x="368" y="248" />
+        <di:waypoint xsi:type="dc:Point" x="368" y="151" />
+        <di:waypoint xsi:type="dc:Point" x="470" y="151" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="366" y="193.5" width="35" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1x3lehs_di" bpmnElement="SequenceFlow_1x3lehs">
+        <di:waypoint xsi:type="dc:Point" x="368" y="298" />
+        <di:waypoint xsi:type="dc:Point" x="368" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="476" y="378" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="379" y="353" width="27" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0w46sge_di" bpmnElement="ScriptTask_0w46sge">
+        <dc:Bounds x="865" y="233" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lxqjmp_di" bpmnElement="SequenceFlow_1lxqjmp">
+        <di:waypoint xsi:type="dc:Point" x="788" y="152" />
+        <di:waypoint xsi:type="dc:Point" x="827" y="152" />
+        <di:waypoint xsi:type="dc:Point" x="827" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="865" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="842" y="206.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0phwem2_di" bpmnElement="SequenceFlow_0phwem2">
+        <di:waypoint xsi:type="dc:Point" x="788" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="827" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="827" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="865" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="842" y="319.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1hgjg3u_di" bpmnElement="ExclusiveGateway_1hgjg3u" isMarkerVisible="true">
+        <dc:Bounds x="1040.9252217997464" y="248" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1029" y="302" width="74" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0l5r96s_di" bpmnElement="SequenceFlow_0l5r96s">
+        <di:waypoint xsi:type="dc:Point" x="965" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="1041" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1003" y="252" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_16046vb_di" bpmnElement="ExclusiveGateway_16046vb" isMarkerVisible="true">
+        <dc:Bounds x="1203.8174904942966" y="248.28010139416983" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1187" y="302" width="83" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1icwpye_di" bpmnElement="SequenceFlow_1icwpye">
+        <di:waypoint xsi:type="dc:Point" x="1254" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="1356" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1297" y="252" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ev7z6q_di" bpmnElement="SequenceFlow_1ev7z6q">
+        <di:waypoint xsi:type="dc:Point" x="1406" y="313" />
+        <di:waypoint xsi:type="dc:Point" x="1406" y="513" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1376" y="407" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0oj2anh_di" bpmnElement="SequenceFlow_0oj2anh">
+        <di:waypoint xsi:type="dc:Point" x="1229" y="298" />
+        <di:waypoint xsi:type="dc:Point" x="1229" y="553" />
+        <di:waypoint xsi:type="dc:Point" x="1356" y="553" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1238" y="419.5" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0talboa_di" bpmnElement="SequenceFlow_0talboa">
+        <di:waypoint xsi:type="dc:Point" x="1091" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="1204" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1138" y="252" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s1lswk_di" bpmnElement="SequenceFlow_0s1lswk">
+        <di:waypoint xsi:type="dc:Point" x="1066" y="298" />
+        <di:waypoint xsi:type="dc:Point" x="1066" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="259" y="490" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1075" y="388" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCustomDeleteE2EServiceInstanceV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCustomDeleteE2EServiceInstanceV2.bpmn
new file mode 100644
index 0000000..3e76f61
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCustomDeleteE2EServiceInstanceV2.bpmn
@@ -0,0 +1,928 @@
+<?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.10.0">
+  <bpmn:process id="DoCustomDeleteE2EServiceInstanceV2" name="DoCustomDeleteE2EServiceInstanceV2" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_0212h2r" name="Start Flow">
+      <bpmn:outgoing>SequenceFlow_0vz7cd9</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:scriptTask id="ScriptTask_06phzgv" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0vz7cd9</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_11e6bfy</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstanceV2()
+ddsi.preProcessRequest(execution)
+]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:endEvent id="EndEvent_1uqzt26">
+      <bpmn:incoming>SequenceFlow_06tonva</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="ScriptTask_1rtnsh8" name="Post Process AAI GET" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_188ejvu</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_00a3ijv</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstanceV2()
+ddsi.postProcessAAIGET(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_01erufg" name="&#10;AAI&#10;Delete&#10;(svc instance)&#10;" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0t5f2dt</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0e7inkl</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstance()
+ddsi.deleteServiceInstance(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:subProcess id="SubProcess_1u8zt9i" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0sf5lpt">
+        <bpmn:outgoing>SequenceFlow_1921mo3</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_06utmg4">
+        <bpmn:incoming>SequenceFlow_18vlzfo</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_0nha3pr" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_1921mo3</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_18vlzfo</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_1921mo3" name="" sourceRef="StartEvent_0sf5lpt" targetRef="ScriptTask_0nha3pr" />
+      <bpmn:sequenceFlow id="SequenceFlow_18vlzfo" name="" sourceRef="ScriptTask_0nha3pr" targetRef="EndEvent_06utmg4" />
+    </bpmn:subProcess>
+    <bpmn:sequenceFlow id="SequenceFlow_0vz7cd9" sourceRef="StartEvent_0212h2r" targetRef="ScriptTask_06phzgv" />
+    <bpmn:sequenceFlow id="SequenceFlow_11e6bfy" sourceRef="ScriptTask_06phzgv" targetRef="CallActivity_076pc2z" />
+    <bpmn:sequenceFlow id="SequenceFlow_0e7inkl" sourceRef="ScriptTask_01erufg" targetRef="ScriptTask_1vlvb1r" />
+    <bpmn:scriptTask id="ScriptTask_postProcessVFCDelete" name="Post Process VFC Delete" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1931m8u</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_17b01zs</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+
+String response = execution.getVariable("vfcDeleteResponse")
+def ddsi = new DoCustomDeleteE2EServiceInstanceV2()
+ddsi.postProcessVFCDelete(execution, response, "delete")]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_1g0tsto" name="Post Process SDNC Delete" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1w2n8dn</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_09z6zl7</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+
+String response = execution.getVariable("sdncDeleteResponse")
+def ddsi = new DoCustomDeleteE2EServiceInstanceV2()
+ddsi.postProcessSDNCDelete(execution, response, "delete")]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_0z30dax" name="Prepare Resource Delele For Overlay" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1jfyo1x</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1t1mg6y</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+String resourceName = "underlay"
+def ddsi = new DoCustomDeleteE2EServiceInstanceV2()
+ddsi.preSDNCResourceDelete(execution, resourceName )]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0rpu756" sourceRef="CallActivity_Del_SDNC_cust" targetRef="ExclusiveGateway_0plkf6p" />
+    <bpmn:sequenceFlow id="SequenceFlow_1wnkgpx" sourceRef="Task_preProcessVFCResourceDelete" targetRef="Task_CallNetworkServiceDeleteforVFC" />
+    <bpmn:sequenceFlow id="SequenceFlow_1931m8u" sourceRef="Task_CallNetworkServiceDeleteforVFC" targetRef="ScriptTask_postProcessVFCDelete" />
+    <bpmn:scriptTask id="Task_preProcessVFCResourceDelete" name="Prepare Resource Delele For VFC" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1bx4es4</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1wnkgpx</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstanceV2()
+ddsi.preProcessVFCResourceDelete(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="Task_CallNetworkServiceDeleteforVFC" name="Call Network Service Delete for VFC" calledElement="DoDeleteVFCNetworkServiceInstance">
+      <bpmn:extensionElements>
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="serviceInstanceId" target="serviceId" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="resourceTemplateId" target="resourceTemplateId" />
+        <camunda:in source="resourceInstanceId" target="resourceInstanceId" />
+        <camunda:in source="resourceType" target="resourceType" />
+        <camunda:in source="operationType" target="operationType" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1wnkgpx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1931m8u</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:serviceTask id="CallActivity_Del_SDNC_cust" name="Call Custom Delete SDNC Overlay" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncNetworkTopologyOperationTask">
+      <bpmn:incoming>SequenceFlow_0a1q5fw</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0rpu756</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1g4djgh" sourceRef="Task_1j1u666" targetRef="ExclusiveGateway_125wehq" />
+    <bpmn:sequenceFlow id="SequenceFlow_0uc2beq" sourceRef="Task_0edkv0m" targetRef="ExclusiveGateway_1kavnc9" />
+    <bpmn:scriptTask id="Task_14erap6" name="Prepare Resource Delele For Underlay" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1lv9vmb</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_16r9z75</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+String resourceName = "underlay"
+def ddsi = new DoCustomDeleteE2EServiceInstanceV2()
+ddsi.preSDNCResourceDelete(execution, resourceName )]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:serviceTask id="Task_1j1u666" name="Call Custom Delete SDNC Underlay" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncNetworkTopologyOperationTask">
+      <bpmn:incoming>SequenceFlow_0m7ks9t</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1g4djgh</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:serviceTask id="Task_0edkv0m" name="Call Delete SDNC Service Topology" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncServiceTopologyOperationTask">
+      <bpmn:incoming>SequenceFlow_0akcnw7</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0uc2beq</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:callActivity id="CallActivity_076pc2z" name="Call AAI Generic GetService" calledElement="GenericGetService">
+      <bpmn:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in source="serviceType" target="GENGS_serviceType" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_11e6bfy</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_188ejvu</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_188ejvu" sourceRef="CallActivity_076pc2z" targetRef="ScriptTask_1rtnsh8" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1d5z35x" name="GoTo Delete SDNC Resource">
+      <bpmn:incoming>SequenceFlow_1qzxy2i</bpmn:incoming>
+      <bpmn:linkEventDefinition name="DeleteSDNCResource" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateCatchEvent id="IntermediateThrowEvent_1h6kkwi" name="Start Delete SDNC Resource">
+      <bpmn:outgoing>SequenceFlow_1jfyo1x</bpmn:outgoing>
+      <bpmn:linkEventDefinition name="DeleteSDNCResource" />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1jfyo1x" sourceRef="IntermediateThrowEvent_1h6kkwi" targetRef="ScriptTask_0z30dax" />
+    <bpmn:sequenceFlow id="SequenceFlow_09z6zl7" sourceRef="ScriptTask_1g0tsto" targetRef="IntermediateThrowEvent_01vy71e" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_01vy71e" name="GoTo Delete VFC Resource">
+      <bpmn:incoming>SequenceFlow_09z6zl7</bpmn:incoming>
+      <bpmn:linkEventDefinition name="DeleteVFCResource" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_17b01zs" sourceRef="ScriptTask_postProcessVFCDelete" targetRef="ScriptTask_postProcessDecomposeNextResource" />
+    <bpmn:intermediateCatchEvent id="IntermediateThrowEvent_0ow0ck5" name="Start Delete VFC Resource">
+      <bpmn:outgoing>SequenceFlow_0homduu</bpmn:outgoing>
+      <bpmn:linkEventDefinition name="DeleteVFCResource" />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0homduu" sourceRef="IntermediateThrowEvent_0ow0ck5" targetRef="ExclusiveGateway_ServiceResourceIsFinish" />
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_03gc5du" name="Start Delete Service Instance">
+      <bpmn:outgoing>SequenceFlow_0t5f2dt</bpmn:outgoing>
+      <bpmn:linkEventDefinition name="DeleteServiceInstance" />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0t5f2dt" sourceRef="IntermediateCatchEvent_03gc5du" targetRef="ScriptTask_01erufg" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_ServiceResourceIsFinish" name="Service Resource Finish?" default="SequenceFlow_0n7qeqt">
+      <bpmn:incoming>SequenceFlow_0homduu</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0eoibq3</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0n7qeqt</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_13c2v9z</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0n7qeqt" name="No" sourceRef="ExclusiveGateway_ServiceResourceIsFinish" targetRef="ScriptTask_preProcessDecomposeNextResource" />
+    <bpmn:scriptTask id="ScriptTask_preProcessDecomposeNextResource" name="PreProcess Decompose Next Resouce" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0n7qeqt</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1a5ki3p</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstanceV2()
+ddsi.preProcessDecomposeNextResource(execution )]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1a5ki3p" sourceRef="ScriptTask_preProcessDecomposeNextResource" targetRef="ScriptTask_0mjvi2p" />
+    <bpmn:scriptTask id="ScriptTask_postProcessDecomposeNextResource" name="PostProcess Decompose Next Resouce" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_17b01zs</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0gxv0wp</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstanceV2()
+ddsi.postProcessDecomposeNextResource(execution )]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0gxv0wp" sourceRef="ScriptTask_postProcessDecomposeNextResource" targetRef="ScriptTask_06sbvjm" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_01fw8bb" name="GoTo Delete Servcie Instance">
+      <bpmn:incoming>SequenceFlow_13c2v9z</bpmn:incoming>
+      <bpmn:linkEventDefinition name="DeleteServiceInstance" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_13c2v9z" name="Yes" sourceRef="ExclusiveGateway_ServiceResourceIsFinish" targetRef="IntermediateThrowEvent_01fw8bb">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{ execution.getVariable("DDELSI_resourceFinish") != null && execution.getVariable("DDELSI_resourceFinish") == true }]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_052agzc" name="Found Resource?" default="SequenceFlow_1fac57w">
+      <bpmn:incoming>SequenceFlow_1t1mg6y</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0a1q5fw</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1fac57w</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1t1mg6y" sourceRef="ScriptTask_0z30dax" targetRef="ExclusiveGateway_052agzc" />
+    <bpmn:sequenceFlow id="SequenceFlow_0a1q5fw" name="Yes" sourceRef="ExclusiveGateway_052agzc" targetRef="CallActivity_Del_SDNC_cust">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{ execution.getVariable("foundResource") != null && execution.getVariable("foundResource") == true }]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0plkf6p">
+      <bpmn:incoming>SequenceFlow_0rpu756</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1fac57w</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1lv9vmb</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1lv9vmb" sourceRef="ExclusiveGateway_0plkf6p" targetRef="Task_14erap6" />
+    <bpmn:sequenceFlow id="SequenceFlow_1fac57w" name="No" sourceRef="ExclusiveGateway_052agzc" targetRef="ExclusiveGateway_0plkf6p" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0u98ylh" name="Found Resource?" default="SequenceFlow_00knko8">
+      <bpmn:incoming>SequenceFlow_16r9z75</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0m7ks9t</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_00knko8</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_16r9z75" sourceRef="Task_14erap6" targetRef="ExclusiveGateway_0u98ylh" />
+    <bpmn:sequenceFlow id="SequenceFlow_0m7ks9t" name="Yes" sourceRef="ExclusiveGateway_0u98ylh" targetRef="Task_1j1u666">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{ execution.getVariable("foundResource") != null && execution.getVariable("foundResource") == true }]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_125wehq" default="SequenceFlow_15pzf5n">
+      <bpmn:incoming>SequenceFlow_1g4djgh</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_00knko8</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0akcnw7</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_15pzf5n</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0akcnw7" name="yes" sourceRef="ExclusiveGateway_125wehq" targetRef="Task_0edkv0m">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{ execution.getVariable("foundResource") != null && execution.getVariable("foundResource") == true }]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_00knko8" name="No" sourceRef="ExclusiveGateway_0u98ylh" targetRef="ExclusiveGateway_125wehq" />
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1t1fier" name="Start UpateOperStatus">
+      <bpmn:outgoing>SequenceFlow_033eqeg</bpmn:outgoing>
+      <bpmn:linkEventDefinition name="UpateOperStatus" />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_033eqeg" sourceRef="IntermediateCatchEvent_1t1fier" targetRef="ScriptTask_1ut5zs5" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1q64g27" name="GoTo UpateOperStatus">
+      <bpmn:incoming>SequenceFlow_00a3ijv</bpmn:incoming>
+      <bpmn:linkEventDefinition name="UpateOperStatus" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_00a3ijv" sourceRef="ScriptTask_1rtnsh8" targetRef="IntermediateThrowEvent_1q64g27" />
+    <bpmn:scriptTask id="ScriptTask_PrepareServiceResources" name="Prepare Service Resources" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_18wibmi</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_11405m9</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstanceV2()
+ddsi.prepareServiceDeleteResource(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_11405m9" sourceRef="ScriptTask_PrepareServiceResources" targetRef="ScriptTask_0w4scer" />
+    <bpmn:scriptTask id="ScriptTask_1ut5zs5" name="Prepare Update Service Oper Status" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_033eqeg</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1sm5x5e</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstanceV2()
+ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:serviceTask id="ServiceTask_0kl5qtj" name="Update Service Oper Status">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1sm5x5e</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_18wibmi</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1sm5x5e" sourceRef="ScriptTask_1ut5zs5" targetRef="ServiceTask_0kl5qtj" />
+    <bpmn:sequenceFlow id="SequenceFlow_18wibmi" sourceRef="ServiceTask_0kl5qtj" targetRef="ScriptTask_PrepareServiceResources" />
+    <bpmn:scriptTask id="ScriptTask_1vlvb1r" name="Prepare Update Service Oper Status(100%)" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0e7inkl</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0l4qcge</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+execution.setVariable("progress", "100")
+execution.setVariable("operationStatus", "End")
+def ddsi = new DoCustomDeleteE2EServiceInstanceV2()
+ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:serviceTask id="ServiceTask_0lint2e" name="Update Service Oper Status">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0l4qcge</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_06tonva</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0l4qcge" sourceRef="ScriptTask_1vlvb1r" targetRef="ServiceTask_0lint2e" />
+    <bpmn:sequenceFlow id="SequenceFlow_06tonva" sourceRef="ServiceTask_0lint2e" targetRef="EndEvent_1uqzt26" />
+    <bpmn:scriptTask id="ScriptTask_06sbvjm" name="Prepare Update Service Oper Status" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0gxv0wp</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1i96ytk</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstanceV2()
+ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1i96ytk" sourceRef="ScriptTask_06sbvjm" targetRef="ServiceTask_0bia9bb" />
+    <bpmn:serviceTask id="ServiceTask_0bia9bb" name="Update Service Oper Status">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1i96ytk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0eoibq3</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0eoibq3" sourceRef="ServiceTask_0bia9bb" targetRef="ExclusiveGateway_ServiceResourceIsFinish" />
+    <bpmn:scriptTask id="ScriptTask_0mjvi2p" name="Prepare Update Service Oper Status" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1a5ki3p</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1oo4g4h</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+
+def ddsi = new DoCustomDeleteE2EServiceInstanceV2()
+ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1oo4g4h" sourceRef="ScriptTask_0mjvi2p" targetRef="ServiceTask_0vk2b9b" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1kavnc9">
+      <bpmn:incoming>SequenceFlow_0uc2beq</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_15pzf5n</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1w2n8dn</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1w2n8dn" sourceRef="ExclusiveGateway_1kavnc9" targetRef="ScriptTask_1g0tsto" />
+    <bpmn:sequenceFlow id="SequenceFlow_15pzf5n" sourceRef="ExclusiveGateway_125wehq" targetRef="ExclusiveGateway_1kavnc9" />
+    <bpmn:serviceTask id="ServiceTask_0vk2b9b" name="Update Service Oper Status">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1oo4g4h</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1bx4es4</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1bx4es4" sourceRef="ServiceTask_0vk2b9b" targetRef="Task_preProcessVFCResourceDelete" />
+    <bpmn:scriptTask id="ScriptTask_0w4scer" name="Prepare Resource Oper Status" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_11405m9</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_15d5odq</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstanceV2()
+ddsi.preInitResourcesOperStatus(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_15d5odq" sourceRef="ScriptTask_0w4scer" targetRef="ServiceTask_1mg7vnx" />
+    <bpmn:serviceTask id="ServiceTask_1mg7vnx" name="Init Resource Oper Status">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_initResOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_15d5odq</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1qzxy2i</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1qzxy2i" sourceRef="ServiceTask_1mg7vnx" targetRef="IntermediateThrowEvent_1d5z35x" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCustomDeleteE2EServiceInstanceV2">
+      <bpmndi:BPMNShape id="StartEvent_0212h2r_di" bpmnElement="StartEvent_0212h2r">
+        <dc:Bounds x="75" y="110" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="69" y="151" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_06phzgv_di" bpmnElement="ScriptTask_06phzgv">
+        <dc:Bounds x="311" y="88" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1uqzt26_di" bpmnElement="EndEvent_1uqzt26">
+        <dc:Bounds x="1127" y="1238" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1055" y="1279" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rtnsh8_di" bpmnElement="ScriptTask_1rtnsh8">
+        <dc:Bounds x="1055" y="88" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_01erufg_di" bpmnElement="ScriptTask_01erufg">
+        <dc:Bounds x="286" y="1216" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_1u8zt9i_di" bpmnElement="SubProcess_1u8zt9i" isExpanded="true">
+        <dc:Bounds x="192" y="1439" width="467" height="193" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vz7cd9_di" bpmnElement="SequenceFlow_0vz7cd9">
+        <di:waypoint xsi:type="dc:Point" x="111" y="128" />
+        <di:waypoint xsi:type="dc:Point" x="311" y="128" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="166" y="107" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11e6bfy_di" bpmnElement="SequenceFlow_11e6bfy">
+        <di:waypoint xsi:type="dc:Point" x="411" y="128" />
+        <di:waypoint xsi:type="dc:Point" x="461" y="128" />
+        <di:waypoint xsi:type="dc:Point" x="667" y="128" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="391" y="107" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0e7inkl_di" bpmnElement="SequenceFlow_0e7inkl">
+        <di:waypoint xsi:type="dc:Point" x="386" y="1256" />
+        <di:waypoint xsi:type="dc:Point" x="533" y="1256" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="414.5" y="1235" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="StartEvent_0sf5lpt_di" bpmnElement="StartEvent_0sf5lpt">
+        <dc:Bounds x="260" y="1506" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="188" y="1547" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_06utmg4_di" bpmnElement="EndEvent_06utmg4">
+        <dc:Bounds x="553" y="1506" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="481" y="1547" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0nha3pr_di" bpmnElement="ScriptTask_0nha3pr">
+        <dc:Bounds x="364" y="1484" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1921mo3_di" bpmnElement="SequenceFlow_1921mo3">
+        <di:waypoint xsi:type="dc:Point" x="296" y="1524" />
+        <di:waypoint xsi:type="dc:Point" x="364" y="1524" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="240" y="1509" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18vlzfo_di" bpmnElement="SequenceFlow_18vlzfo">
+        <di:waypoint xsi:type="dc:Point" x="464" y="1524" />
+        <di:waypoint xsi:type="dc:Point" x="553" y="1524" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="420" y="1509" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0mdub03_di" bpmnElement="ScriptTask_postProcessVFCDelete">
+        <dc:Bounds x="1046" y="1107" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1g0tsto_di" bpmnElement="ScriptTask_1g0tsto">
+        <dc:Bounds x="1045" y="775" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0z30dax_di" bpmnElement="ScriptTask_0z30dax">
+        <dc:Bounds x="311" y="577" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0rpu756_di" bpmnElement="SequenceFlow_0rpu756">
+        <di:waypoint xsi:type="dc:Point" x="411" y="823" />
+        <di:waypoint xsi:type="dc:Point" x="530" y="823" />
+        <di:waypoint xsi:type="dc:Point" x="530" y="743" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="426" y="802" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wnkgpx_di" bpmnElement="SequenceFlow_1wnkgpx">
+        <di:waypoint xsi:type="dc:Point" x="931" y="980" />
+        <di:waypoint xsi:type="dc:Point" x="1046" y="980" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="943.5" y="959" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1931m8u_di" bpmnElement="SequenceFlow_1931m8u">
+        <di:waypoint xsi:type="dc:Point" x="1096" y="1020" />
+        <di:waypoint xsi:type="dc:Point" x="1096" y="1107" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1066" y="1058" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_00301ai_di" bpmnElement="Task_preProcessVFCResourceDelete">
+        <dc:Bounds x="831" y="940" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1mwacgl_di" bpmnElement="Task_CallNetworkServiceDeleteforVFC">
+        <dc:Bounds x="1046" y="940" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0v9q75y_di" bpmnElement="CallActivity_Del_SDNC_cust">
+        <dc:Bounds x="311" y="784" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1g4djgh_di" bpmnElement="SequenceFlow_1g4djgh">
+        <di:waypoint xsi:type="dc:Point" x="757" y="815" />
+        <di:waypoint xsi:type="dc:Point" x="913" y="815" />
+        <di:waypoint xsi:type="dc:Point" x="913" y="743" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="790" y="794" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0uc2beq_di" bpmnElement="SequenceFlow_0uc2beq">
+        <di:waypoint xsi:type="dc:Point" x="1095" y="657" />
+        <di:waypoint xsi:type="dc:Point" x="1096" y="693" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1050.5" y="654" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1e5z0wu_di" bpmnElement="Task_14erap6">
+        <dc:Bounds x="657" y="577" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0f0965f_di" bpmnElement="Task_1j1u666">
+        <dc:Bounds x="657" y="775" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0p4b7e1_di" bpmnElement="Task_0edkv0m">
+        <dc:Bounds x="1055" y="577" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_076pc2z_di" bpmnElement="CallActivity_076pc2z">
+        <dc:Bounds x="667" y="88" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_188ejvu_di" bpmnElement="SequenceFlow_188ejvu">
+        <di:waypoint xsi:type="dc:Point" x="767" y="128" />
+        <di:waypoint xsi:type="dc:Point" x="1055" y="128" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="866" y="107" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1gbu8tc_di" bpmnElement="IntermediateThrowEvent_1d5z35x">
+        <dc:Bounds x="1294" y="376" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1275" y="416" width="82" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0a6c9bw_di" bpmnElement="IntermediateThrowEvent_1h6kkwi">
+        <dc:Bounds x="71" y="599" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="52" y="639" width="82" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jfyo1x_di" bpmnElement="SequenceFlow_1jfyo1x">
+        <di:waypoint xsi:type="dc:Point" x="107" y="617" />
+        <di:waypoint xsi:type="dc:Point" x="209" y="617" />
+        <di:waypoint xsi:type="dc:Point" x="209" y="617" />
+        <di:waypoint xsi:type="dc:Point" x="311" y="617" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="179" y="611" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_09z6zl7_di" bpmnElement="SequenceFlow_09z6zl7">
+        <di:waypoint xsi:type="dc:Point" x="1145" y="815" />
+        <di:waypoint xsi:type="dc:Point" x="1294" y="815" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1175" y="794" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_01qtcpf_di" bpmnElement="IntermediateThrowEvent_01vy71e">
+        <dc:Bounds x="1294" y="797" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1271" y="837" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_17b01zs_di" bpmnElement="SequenceFlow_17b01zs">
+        <di:waypoint xsi:type="dc:Point" x="1046" y="1147" />
+        <di:waypoint xsi:type="dc:Point" x="895" y="1147" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="925.5" y="1126" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_197wgz2_di" bpmnElement="IntermediateThrowEvent_0ow0ck5">
+        <dc:Bounds x="71" y="905" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="49" y="945" width="82" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0homduu_di" bpmnElement="SequenceFlow_0homduu">
+        <di:waypoint xsi:type="dc:Point" x="107" y="923" />
+        <di:waypoint xsi:type="dc:Point" x="204" y="923" />
+        <di:waypoint xsi:type="dc:Point" x="204" y="955" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="111" y="902" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_03gc5du_di" bpmnElement="IntermediateCatchEvent_03gc5du">
+        <dc:Bounds x="57" y="1238" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="36" y="1278" width="82" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0t5f2dt_di" bpmnElement="SequenceFlow_0t5f2dt">
+        <di:waypoint xsi:type="dc:Point" x="93" y="1256" />
+        <di:waypoint xsi:type="dc:Point" x="286" y="1256" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="144.5" y="1235" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_18ardb3_di" bpmnElement="ExclusiveGateway_ServiceResourceIsFinish" isMarkerVisible="true">
+        <dc:Bounds x="179" y="955" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="196" y="911" width="88" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n7qeqt_di" bpmnElement="SequenceFlow_0n7qeqt">
+        <di:waypoint xsi:type="dc:Point" x="229" y="980" />
+        <di:waypoint xsi:type="dc:Point" x="311" y="980" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="263" y="959" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_01wud4g_di" bpmnElement="ScriptTask_preProcessDecomposeNextResource">
+        <dc:Bounds x="311" y="940" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1a5ki3p_di" bpmnElement="SequenceFlow_1a5ki3p">
+        <di:waypoint xsi:type="dc:Point" x="411" y="980" />
+        <di:waypoint xsi:type="dc:Point" x="470" y="980" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="395.5" y="959" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_06p63xt_di" bpmnElement="ScriptTask_postProcessDecomposeNextResource">
+        <dc:Bounds x="795" y="1107" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gxv0wp_di" bpmnElement="SequenceFlow_0gxv0wp">
+        <di:waypoint xsi:type="dc:Point" x="795" y="1147" />
+        <di:waypoint xsi:type="dc:Point" x="612" y="1147" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="658.5" y="1126" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_01fw8bb_di" bpmnElement="IntermediateThrowEvent_01fw8bb">
+        <dc:Bounds x="186" y="1061" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="166" y="1101" width="82" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_13c2v9z_di" bpmnElement="SequenceFlow_13c2v9z">
+        <di:waypoint xsi:type="dc:Point" x="204" y="1005" />
+        <di:waypoint xsi:type="dc:Point" x="204" y="1061" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="219" y="1014" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_052agzc_di" bpmnElement="ExclusiveGateway_052agzc" isMarkerVisible="true">
+        <dc:Bounds x="336" y="693" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="253" y="691" width="88" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t1mg6y_di" bpmnElement="SequenceFlow_1t1mg6y">
+        <di:waypoint xsi:type="dc:Point" x="361" y="657" />
+        <di:waypoint xsi:type="dc:Point" x="361" y="693" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="331" y="669" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0a1q5fw_di" bpmnElement="SequenceFlow_0a1q5fw">
+        <di:waypoint xsi:type="dc:Point" x="361" y="743" />
+        <di:waypoint xsi:type="dc:Point" x="361" y="784" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="367" y="758" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0plkf6p_di" bpmnElement="ExclusiveGateway_0plkf6p" isMarkerVisible="true">
+        <dc:Bounds x="505" y="693" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="485" y="747" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lv9vmb_di" bpmnElement="SequenceFlow_1lv9vmb">
+        <di:waypoint xsi:type="dc:Point" x="530" y="693" />
+        <di:waypoint xsi:type="dc:Point" x="530" y="618" />
+        <di:waypoint xsi:type="dc:Point" x="657" y="618" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="500" y="650" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fac57w_di" bpmnElement="SequenceFlow_1fac57w">
+        <di:waypoint xsi:type="dc:Point" x="386" y="718" />
+        <di:waypoint xsi:type="dc:Point" x="505" y="718" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="439" y="697" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0u98ylh_di" bpmnElement="ExclusiveGateway_0u98ylh" isMarkerVisible="true">
+        <dc:Bounds x="682" y="693" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="612" y="687" width="88" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_16r9z75_di" bpmnElement="SequenceFlow_16r9z75">
+        <di:waypoint xsi:type="dc:Point" x="707" y="657" />
+        <di:waypoint xsi:type="dc:Point" x="707" y="693" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="677" y="669" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0m7ks9t_di" bpmnElement="SequenceFlow_0m7ks9t">
+        <di:waypoint xsi:type="dc:Point" x="707" y="743" />
+        <di:waypoint xsi:type="dc:Point" x="707" y="775" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="713" y="753" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_125wehq_di" bpmnElement="ExclusiveGateway_125wehq" isMarkerVisible="true">
+        <dc:Bounds x="888" y="693" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="868" y="747" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0akcnw7_di" bpmnElement="SequenceFlow_0akcnw7">
+        <di:waypoint xsi:type="dc:Point" x="913" y="693" />
+        <di:waypoint xsi:type="dc:Point" x="913" y="617" />
+        <di:waypoint xsi:type="dc:Point" x="1055" y="617" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="919" y="649" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00knko8_di" bpmnElement="SequenceFlow_00knko8">
+        <di:waypoint xsi:type="dc:Point" x="732" y="718" />
+        <di:waypoint xsi:type="dc:Point" x="888" y="718" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="803" y="697" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1t1fier_di" bpmnElement="IntermediateCatchEvent_1t1fier">
+        <dc:Bounds x="71" y="376" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="56" y="416" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_033eqeg_di" bpmnElement="SequenceFlow_033eqeg">
+        <di:waypoint xsi:type="dc:Point" x="107" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="209" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="209" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="311" y="394" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="179" y="388" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1q64g27_di" bpmnElement="IntermediateThrowEvent_1q64g27">
+        <dc:Bounds x="1294" y="110" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1274" y="150" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_00a3ijv_di" bpmnElement="SequenceFlow_00a3ijv">
+        <di:waypoint xsi:type="dc:Point" x="1155" y="128" />
+        <di:waypoint xsi:type="dc:Point" x="1294" y="128" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1179.5" y="107" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1fqk4c6_di" bpmnElement="ScriptTask_PrepareServiceResources">
+        <dc:Bounds x="657" y="354" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_11405m9_di" bpmnElement="SequenceFlow_11405m9">
+        <di:waypoint xsi:type="dc:Point" x="757" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="810" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="810" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="863" y="394" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="780" y="388" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1ut5zs5_di" bpmnElement="ScriptTask_1ut5zs5">
+        <dc:Bounds x="311" y="354" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0kl5qtj_di" bpmnElement="ServiceTask_0kl5qtj">
+        <dc:Bounds x="470" y="354" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sm5x5e_di" bpmnElement="SequenceFlow_1sm5x5e">
+        <di:waypoint xsi:type="dc:Point" x="411" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="470" y="394" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="395.5" y="373" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18wibmi_di" bpmnElement="SequenceFlow_18wibmi">
+        <di:waypoint xsi:type="dc:Point" x="570" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="657" y="394" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="568.5" y="373" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1vlvb1r_di" bpmnElement="ScriptTask_1vlvb1r">
+        <dc:Bounds x="533" y="1216" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0lint2e_di" bpmnElement="ServiceTask_0lint2e">
+        <dc:Bounds x="795" y="1216" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0l4qcge_di" bpmnElement="SequenceFlow_0l4qcge">
+        <di:waypoint xsi:type="dc:Point" x="633" y="1256" />
+        <di:waypoint xsi:type="dc:Point" x="795" y="1256" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="669" y="1235" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06tonva_di" bpmnElement="SequenceFlow_06tonva">
+        <di:waypoint xsi:type="dc:Point" x="895" y="1256" />
+        <di:waypoint xsi:type="dc:Point" x="1127" y="1256" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="966" y="1235" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_06sbvjm_di" bpmnElement="ScriptTask_06sbvjm">
+        <dc:Bounds x="512" y="1107" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1i96ytk_di" bpmnElement="SequenceFlow_1i96ytk">
+        <di:waypoint xsi:type="dc:Point" x="512" y="1147" />
+        <di:waypoint xsi:type="dc:Point" x="411" y="1147" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="461.5" y="1126" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_0bia9bb_di" bpmnElement="ServiceTask_0bia9bb">
+        <dc:Bounds x="311" y="1107" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eoibq3_di" bpmnElement="SequenceFlow_0eoibq3">
+        <di:waypoint xsi:type="dc:Point" x="311" y="1147" />
+        <di:waypoint xsi:type="dc:Point" x="106" y="1147" />
+        <di:waypoint xsi:type="dc:Point" x="106" y="980" />
+        <di:waypoint xsi:type="dc:Point" x="179" y="980" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="121" y="1057.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0mjvi2p_di" bpmnElement="ScriptTask_0mjvi2p">
+        <dc:Bounds x="470" y="940" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1oo4g4h_di" bpmnElement="SequenceFlow_1oo4g4h">
+        <di:waypoint xsi:type="dc:Point" x="570" y="980" />
+        <di:waypoint xsi:type="dc:Point" x="638" y="980" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="604" y="959" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1kavnc9_di" bpmnElement="ExclusiveGateway_1kavnc9" isMarkerVisible="true">
+        <dc:Bounds x="1071" y="693" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1051" y="747" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1w2n8dn_di" bpmnElement="SequenceFlow_1w2n8dn">
+        <di:waypoint xsi:type="dc:Point" x="1096" y="743" />
+        <di:waypoint xsi:type="dc:Point" x="1095" y="775" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1095.5" y="738" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15pzf5n_di" bpmnElement="SequenceFlow_15pzf5n">
+        <di:waypoint xsi:type="dc:Point" x="938" y="718" />
+        <di:waypoint xsi:type="dc:Point" x="1005" y="718" />
+        <di:waypoint xsi:type="dc:Point" x="1005" y="718" />
+        <di:waypoint xsi:type="dc:Point" x="1071" y="718" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1020" y="712" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_0vk2b9b_di" bpmnElement="ServiceTask_0vk2b9b">
+        <dc:Bounds x="638" y="940" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bx4es4_di" bpmnElement="SequenceFlow_1bx4es4">
+        <di:waypoint xsi:type="dc:Point" x="738" y="980" />
+        <di:waypoint xsi:type="dc:Point" x="831" y="980" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="784.5" y="959" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0w4scer_di" bpmnElement="ScriptTask_0w4scer">
+        <dc:Bounds x="863" y="354" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_15d5odq_di" bpmnElement="SequenceFlow_15d5odq">
+        <di:waypoint xsi:type="dc:Point" x="963" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="1055" y="394" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="964" y="373" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_1mg7vnx_di" bpmnElement="ServiceTask_1mg7vnx">
+        <dc:Bounds x="1055" y="354" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qzxy2i_di" bpmnElement="SequenceFlow_1qzxy2i">
+        <di:waypoint xsi:type="dc:Point" x="1155" y="394" />
+        <di:waypoint xsi:type="dc:Point" x="1294" y="394" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1224.5" y="373" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteAllottedResourceBRG.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteAllottedResourceBRG.bpmn
new file mode 100644
index 0000000..b10d6b1
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteAllottedResourceBRG.bpmn
@@ -0,0 +1,422 @@
+<?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:process id="DoDeleteAllottedResourceBRG" name="DoDeleteAllottedResourceBRG" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" />
+    <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0bfuk6l</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="GetAAIAR" name="Get AAI AR" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0bfuk6l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xm9g9s</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.getAaiAR(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_0ymy62j</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1q6udwm" sourceRef="PreProcessSDNCDeactivate" targetRef="SDNCDeactivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCDeactivate" targetRef="PostProcessSDNCDeactivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCDeactivate" targetRef="ARFoundInSDNC" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1lalmvp" sourceRef="PreProcessSDNCDelete" targetRef="SDNCDelete" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCDelete" targetRef="postProcessSDNCDelete" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15z3gpq" sourceRef="postProcessSDNCDelete" targetRef="PreProcessSDNCUnassign" />
+    <bpmn2:scriptTask id="PreProcessSDNCDeactivate" name="PreProcess SDNC Deactivate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1q6udwm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.preProcessSDNCDeactivate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCDeactivate" name="SDNC Deactivate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeactivateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1q6udwm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCDeactivate" name="PostProcess SDNC Deactivate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncDeactivateResponse")
+
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.validateSDNCResp(execution, response, "deactivate" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCDelete" name="PreProcess SDNC Delete" scriptFormat="groovy">
+      <bpmn2:incoming>foundInSDNC</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lalmvp</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.preProcessSDNCDelete(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCDelete" name="SDNC Delete" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeleteRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1lalmvp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="postProcessSDNCDelete" name="PostProcess SDNC Delete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15z3gpq</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncDeleteResponse")
+
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.validateSDNCResp(execution, response, "delete" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCUnassign" name="PreProcess SDNC Unassign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15z3gpq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_06w33tk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.preProcessSDNCUnassign(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCUnassign" name="SDNC Unassign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncUnassignRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncUnassignResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_06w33tk</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCUnassign" name="PostProcess SDNC Unassign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncUnassignResponse")
+
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.validateSDNCResp(execution, response, "unassign" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_06w33tk" sourceRef="PreProcessSDNCUnassign" targetRef="SDNCUnassign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCUnassign" targetRef="PostProcessSDNCUnassign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCUnassign" targetRef="DeleteAAIAR" />
+    <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Unexpected Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1ibe7qx">
+        <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1fgqhmi">
+        <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ProcessError" name="Log/Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ProcessError" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ProcessError" targetRef="EndEvent_1fgqhmi" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="DeleteAAIAR" name="Delete AAI AR " scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming>
+      <bpmn2:incoming>notFoundInSDNC</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ymy62j</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.deleteAaiAR(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ARFoundInSDNC" name="AR Found in SDNC?" default="foundInSDNC">
+      <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming>
+      <bpmn2:outgoing>foundInSDNC</bpmn2:outgoing>
+      <bpmn2:outgoing>notFoundInSDNC</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks">
+      <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="PreProcessSDNCDeactivate" />
+    <bpmn2:scriptTask id="UpdateAAIARPendingDelete" name="Update AAI AR PendingDelete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0xm9g9s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0g4cl5f</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceBRG ddar = new DoDeleteAllottedResourceBRG()
+ddar.updateAaiAROrchStatus(execution, "PendingDelete")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0v13nt6" name="To SDNCTasks">
+      <bpmn2:incoming>SequenceFlow_0g4cl5f</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0g4cl5f" sourceRef="UpdateAAIARPendingDelete" targetRef="IntermediateThrowEvent_0v13nt6" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ymy62j" sourceRef="DeleteAAIAR" targetRef="EndEvent_3" />
+    <bpmn2:sequenceFlow id="foundInSDNC" name="Yes" sourceRef="ARFoundInSDNC" targetRef="PreProcessSDNCDelete" />
+    <bpmn2:sequenceFlow id="notFoundInSDNC" name="No" sourceRef="ARFoundInSDNC" targetRef="DeleteAAIAR">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("ARNotFoundInSDNC" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0bfuk6l" sourceRef="initialization" targetRef="GetAAIAR" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0xm9g9s" sourceRef="GetAAIAR" targetRef="UpdateAAIARPendingDelete" />
+  </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" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteAllottedResourceBRG">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
+        <dc:Bounds x="217" y="227" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="235" y="268" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization">
+        <dc:Bounds x="336" y="203" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="253" y="245" />
+        <di:waypoint xsi:type="dc:Point" x="336" y="245" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="295" y="230" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_299" bpmnElement="GetAAIAR">
+        <dc:Bounds x="503" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1060" y="514" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1078" y="555" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q6udwm_di" bpmnElement="SequenceFlow_1q6udwm">
+        <di:waypoint xsi:type="dc:Point" x="92" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="609.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q">
+        <di:waypoint xsi:type="dc:Point" x="92" y="710" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="727.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o">
+        <di:waypoint xsi:type="dc:Point" x="142" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="205" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="206" y="748" />
+        <di:waypoint xsi:type="dc:Point" x="206" y="573" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="206" y="751.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lalmvp_di" bpmnElement="SequenceFlow_1lalmvp">
+        <di:waypoint xsi:type="dc:Point" x="359" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="604.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb">
+        <di:waypoint xsi:type="dc:Point" x="359" y="707" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="725" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15z3gpq_di" bpmnElement="SequenceFlow_15z3gpq">
+        <di:waypoint xsi:type="dc:Point" x="409" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="486" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="486" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="590" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="501" y="665" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_01h1rx2_di" bpmnElement="PreProcessSDNCDeactivate">
+        <dc:Bounds x="42" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCDeactivate">
+        <dc:Bounds x="42" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCDeactivate">
+        <dc:Bounds x="42" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rr2xrc_di" bpmnElement="PreProcessSDNCDelete">
+        <dc:Bounds x="309" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCDelete">
+        <dc:Bounds x="309" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCDelete">
+        <dc:Bounds x="309" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0zm728u_di" bpmnElement="PreProcessSDNCUnassign">
+        <dc:Bounds x="590" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCUnassign">
+        <dc:Bounds x="590" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCUnassign">
+        <dc:Bounds x="590" y="754" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_06w33tk_di" bpmnElement="SequenceFlow_06w33tk">
+        <di:waypoint xsi:type="dc:Point" x="640" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="604.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq">
+        <di:waypoint xsi:type="dc:Point" x="640" y="704" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="754" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="729" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43">
+        <di:waypoint xsi:type="dc:Point" x="690" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="782" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="782" y="532" />
+        <di:waypoint xsi:type="dc:Point" x="874" y="532" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="797" y="663" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true">
+        <dc:Bounds x="107" y="897" width="521" height="191" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx">
+        <dc:Bounds x="204" y="970" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="222" y="1011" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi">
+        <dc:Bounds x="481" y="970" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="499" y="1011" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ProcessError">
+        <dc:Bounds x="311" y="948" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs">
+        <di:waypoint xsi:type="dc:Point" x="240" y="988" />
+        <di:waypoint xsi:type="dc:Point" x="311" y="988" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="276" y="973" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v">
+        <di:waypoint xsi:type="dc:Point" x="411" y="988" />
+        <di:waypoint xsi:type="dc:Point" x="450" y="988" />
+        <di:waypoint xsi:type="dc:Point" x="450" y="988" />
+        <di:waypoint xsi:type="dc:Point" x="481" y="988" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="465" y="988" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="DeleteAAIAR">
+        <dc:Bounds x="874" y="492" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="ARFoundInSDNC" isMarkerVisible="true">
+        <dc:Bounds x="181" y="520" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="128" y="461" width="63" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8">
+        <dc:Bounds x="-70" y="527" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-79" y="568" width="60" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9">
+        <di:waypoint xsi:type="dc:Point" x="-34" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="42" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="4" y="530" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1k13o3m_di" bpmnElement="UpdateAAIARPendingDelete">
+        <dc:Bounds x="667" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0v13nt6_di" bpmnElement="IntermediateThrowEvent_0v13nt6">
+        <dc:Bounds x="837" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="887" y="234" width="71" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0g4cl5f_di" bpmnElement="SequenceFlow_0g4cl5f">
+        <di:waypoint xsi:type="dc:Point" x="767" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="802" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ymy62j_di" bpmnElement="SequenceFlow_0ymy62j">
+        <di:waypoint xsi:type="dc:Point" x="974" y="532" />
+        <di:waypoint xsi:type="dc:Point" x="1060" y="532" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1017" y="517" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_197vrli_di" bpmnElement="foundInSDNC">
+        <di:waypoint xsi:type="dc:Point" x="231" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="309" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="260" y="530" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ue1x4e_di" bpmnElement="notFoundInSDNC">
+        <di:waypoint xsi:type="dc:Point" x="206" y="520" />
+        <di:waypoint xsi:type="dc:Point" x="206" y="421" />
+        <di:waypoint xsi:type="dc:Point" x="924" y="421" />
+        <di:waypoint xsi:type="dc:Point" x="924" y="492" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="558" y="406" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bfuk6l_di" bpmnElement="SequenceFlow_0bfuk6l">
+        <di:waypoint xsi:type="dc:Point" x="436" y="243" />
+        <di:waypoint xsi:type="dc:Point" x="503" y="243" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="470" y="228" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xm9g9s_di" bpmnElement="SequenceFlow_0xm9g9s">
+        <di:waypoint xsi:type="dc:Point" x="603" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="667" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="635" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteAllottedResourceTXC.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteAllottedResourceTXC.bpmn
new file mode 100644
index 0000000..84895e2
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteAllottedResourceTXC.bpmn
@@ -0,0 +1,422 @@
+<?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:process id="DoDeleteAllottedResourceTXC" name="DoDeleteAllottedResourceTXC" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="initialization" />
+    <bpmn2:scriptTask id="initialization" name="Initialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0bfuk6l</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="GetAAIAR" name="Get AAI AR" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0bfuk6l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xm9g9s</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.getAaiAR(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_0ymy62j</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_35" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1q6udwm" sourceRef="PreProcessSDNCDeactivate" targetRef="SDNCDeactivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15knw0q" sourceRef="SDNCDeactivate" targetRef="PostProcessSDNCDeactivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0c5h00o" sourceRef="PostProcessSDNCDeactivate" targetRef="ARFoundInSDNC" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1lalmvp" sourceRef="PreProcessSDNCDelete" targetRef="SDNCDelete" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0eb41vb" sourceRef="SDNCDelete" targetRef="postProcessSDNCDelete" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15z3gpq" sourceRef="postProcessSDNCDelete" targetRef="PreProcessSDNCUnassign" />
+    <bpmn2:scriptTask id="PreProcessSDNCDeactivate" name="PreProcess SDNC Deactivate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0gd64w9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1q6udwm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.preProcessSDNCDeactivate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCDeactivate" name="SDNC Deactivate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeactivateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1q6udwm</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15knw0q</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCDeactivate" name="PostProcess SDNC Deactivate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15knw0q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0c5h00o</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncDeactivateResponse")
+
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.validateSDNCResp(execution, response, "deactivate" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCDelete" name="PreProcess SDNC Delete" scriptFormat="groovy">
+      <bpmn2:incoming>foundInSDNC</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lalmvp</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.preProcessSDNCDelete(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCDelete" name="SDNC Delete" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDeleteRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1lalmvp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0eb41vb</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="postProcessSDNCDelete" name="PostProcess SDNC Delete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0eb41vb</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15z3gpq</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncDeleteResponse")
+
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.validateSDNCResp(execution, response, "delete" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PreProcessSDNCUnassign" name="PreProcess SDNC Unassign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15z3gpq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_06w33tk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.preProcessSDNCUnassign(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="SDNCUnassign" name="SDNC Unassign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncUnassignRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncUnassignResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_06w33tk</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1s7yieq</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PostProcessSDNCUnassign" name="PostProcess SDNC Unassign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1s7yieq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+String response = execution.getVariable("sdncUnassignResponse")
+
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.validateSDNCResp(execution, response, "unassign" )]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_06w33tk" sourceRef="PreProcessSDNCUnassign" targetRef="SDNCUnassign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1s7yieq" sourceRef="SDNCUnassign" targetRef="PostProcessSDNCUnassign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_00i7x43" sourceRef="PostProcessSDNCUnassign" targetRef="DeleteAAIAR" />
+    <bpmn2:subProcess id="SubProcess_161pl4g" name="Sub-process for Unexpected Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1ibe7qx">
+        <bpmn2:outgoing>SequenceFlow_1h61pqs</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1fgqhmi">
+        <bpmn2:incoming>SequenceFlow_1kbzr5v</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ProcessError" name="Log/Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1h61pqs</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1kbzr5v</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1h61pqs" sourceRef="StartEvent_1ibe7qx" targetRef="ProcessError" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1kbzr5v" sourceRef="ProcessError" targetRef="EndEvent_1fgqhmi" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="DeleteAAIAR" name="Delete AAI AR " scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_00i7x43</bpmn2:incoming>
+      <bpmn2:incoming>notFoundInSDNC</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ymy62j</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.deleteAaiAR(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ARFoundInSDNC" name="AR Found in SDNC?" default="foundInSDNC">
+      <bpmn2:incoming>SequenceFlow_0c5h00o</bpmn2:incoming>
+      <bpmn2:outgoing>foundInSDNC</bpmn2:outgoing>
+      <bpmn2:outgoing>notFoundInSDNC</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1lqaeh8" name="SDNCTasks">
+      <bpmn2:outgoing>SequenceFlow_0gd64w9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0gd64w9" sourceRef="IntermediateCatchEvent_1lqaeh8" targetRef="PreProcessSDNCDeactivate" />
+    <bpmn2:scriptTask id="UpdateAAIARPendingDelete" name="Update AAI AR PendingDelete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0xm9g9s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0g4cl5f</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.vcpe.scripts.*
+
+DoDeleteAllottedResourceTXC ddar = new DoDeleteAllottedResourceTXC()
+ddar.updateAaiAROrchStatus(execution, "PendingDelete")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0v13nt6" name="To SDNCTasks">
+      <bpmn2:incoming>SequenceFlow_0g4cl5f</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNCTasks" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0g4cl5f" sourceRef="UpdateAAIARPendingDelete" targetRef="IntermediateThrowEvent_0v13nt6" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ymy62j" sourceRef="DeleteAAIAR" targetRef="EndEvent_3" />
+    <bpmn2:sequenceFlow id="foundInSDNC" name="Yes" sourceRef="ARFoundInSDNC" targetRef="PreProcessSDNCDelete" />
+    <bpmn2:sequenceFlow id="notFoundInSDNC" name="No" sourceRef="ARFoundInSDNC" targetRef="DeleteAAIAR">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("ARNotFoundInSDNC" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0bfuk6l" sourceRef="initialization" targetRef="GetAAIAR" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0xm9g9s" sourceRef="GetAAIAR" targetRef="UpdateAAIARPendingDelete" />
+  </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" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteAllottedResourceTXC">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_68" bpmnElement="StartEvent_1">
+        <dc:Bounds x="217" y="227" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="235" y="268" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="initialization">
+        <dc:Bounds x="336" y="203" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_68" targetElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="253" y="245" />
+        <di:waypoint xsi:type="dc:Point" x="336" y="245" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="295" y="230" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_299" bpmnElement="GetAAIAR">
+        <dc:Bounds x="503" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1060" y="514" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1078" y="555" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q6udwm_di" bpmnElement="SequenceFlow_1q6udwm">
+        <di:waypoint xsi:type="dc:Point" x="92" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="609.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15knw0q_di" bpmnElement="SequenceFlow_15knw0q">
+        <di:waypoint xsi:type="dc:Point" x="92" y="710" />
+        <di:waypoint xsi:type="dc:Point" x="92" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="107" y="727.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c5h00o_di" bpmnElement="SequenceFlow_0c5h00o">
+        <di:waypoint xsi:type="dc:Point" x="142" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="205" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="206" y="748" />
+        <di:waypoint xsi:type="dc:Point" x="206" y="573" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="206" y="751.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lalmvp_di" bpmnElement="SequenceFlow_1lalmvp">
+        <di:waypoint xsi:type="dc:Point" x="359" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="604.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eb41vb_di" bpmnElement="SequenceFlow_0eb41vb">
+        <di:waypoint xsi:type="dc:Point" x="359" y="707" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="725" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15z3gpq_di" bpmnElement="SequenceFlow_15z3gpq">
+        <di:waypoint xsi:type="dc:Point" x="409" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="486" y="785" />
+        <di:waypoint xsi:type="dc:Point" x="486" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="590" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="501" y="665" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_01h1rx2_di" bpmnElement="PreProcessSDNCDeactivate">
+        <dc:Bounds x="42" y="515" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0p5ncd0_di" bpmnElement="SDNCDeactivate">
+        <dc:Bounds x="42" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qa39wn_di" bpmnElement="PostProcessSDNCDeactivate">
+        <dc:Bounds x="42" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rr2xrc_di" bpmnElement="PreProcessSDNCDelete">
+        <dc:Bounds x="309" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ieo30p_di" bpmnElement="SDNCDelete">
+        <dc:Bounds x="309" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_04votlb_di" bpmnElement="postProcessSDNCDelete">
+        <dc:Bounds x="309" y="745" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0zm728u_di" bpmnElement="PreProcessSDNCUnassign">
+        <dc:Bounds x="590" y="505" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1uhgd2e_di" bpmnElement="SDNCUnassign">
+        <dc:Bounds x="590" y="624" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0rrv9dw_di" bpmnElement="PostProcessSDNCUnassign">
+        <dc:Bounds x="590" y="754" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_06w33tk_di" bpmnElement="SequenceFlow_06w33tk">
+        <di:waypoint xsi:type="dc:Point" x="640" y="585" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="624" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="604.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s7yieq_di" bpmnElement="SequenceFlow_1s7yieq">
+        <di:waypoint xsi:type="dc:Point" x="640" y="704" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="754" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="729" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00i7x43_di" bpmnElement="SequenceFlow_00i7x43">
+        <di:waypoint xsi:type="dc:Point" x="690" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="782" y="794" />
+        <di:waypoint xsi:type="dc:Point" x="782" y="532" />
+        <di:waypoint xsi:type="dc:Point" x="874" y="532" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="797" y="663" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_161pl4g_di" bpmnElement="SubProcess_161pl4g" isExpanded="true">
+        <dc:Bounds x="107" y="897" width="521" height="191" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1ibe7qx_di" bpmnElement="StartEvent_1ibe7qx">
+        <dc:Bounds x="204" y="970" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="222" y="1011" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1fgqhmi_di" bpmnElement="EndEvent_1fgqhmi">
+        <dc:Bounds x="481" y="970" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="499" y="1011" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ji3121_di" bpmnElement="ProcessError">
+        <dc:Bounds x="311" y="948" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h61pqs_di" bpmnElement="SequenceFlow_1h61pqs">
+        <di:waypoint xsi:type="dc:Point" x="240" y="988" />
+        <di:waypoint xsi:type="dc:Point" x="311" y="988" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="276" y="973" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kbzr5v_di" bpmnElement="SequenceFlow_1kbzr5v">
+        <di:waypoint xsi:type="dc:Point" x="411" y="988" />
+        <di:waypoint xsi:type="dc:Point" x="450" y="988" />
+        <di:waypoint xsi:type="dc:Point" x="450" y="988" />
+        <di:waypoint xsi:type="dc:Point" x="481" y="988" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="465" y="988" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_16x97wp_di" bpmnElement="DeleteAAIAR">
+        <dc:Bounds x="874" y="492" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0hxis7t_di" bpmnElement="ARFoundInSDNC" isMarkerVisible="true">
+        <dc:Bounds x="181" y="520" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="128" y="461" width="63" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1lqaeh8_di" bpmnElement="IntermediateCatchEvent_1lqaeh8">
+        <dc:Bounds x="-70" y="527" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-79" y="568" width="60" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gd64w9_di" bpmnElement="SequenceFlow_0gd64w9">
+        <di:waypoint xsi:type="dc:Point" x="-34" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="42" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="4" y="530" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1k13o3m_di" bpmnElement="UpdateAAIARPendingDelete">
+        <dc:Bounds x="667" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0v13nt6_di" bpmnElement="IntermediateThrowEvent_0v13nt6">
+        <dc:Bounds x="837" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="887" y="234" width="71" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0g4cl5f_di" bpmnElement="SequenceFlow_0g4cl5f">
+        <di:waypoint xsi:type="dc:Point" x="767" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="802" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ymy62j_di" bpmnElement="SequenceFlow_0ymy62j">
+        <di:waypoint xsi:type="dc:Point" x="974" y="532" />
+        <di:waypoint xsi:type="dc:Point" x="1060" y="532" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1017" y="517" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_197vrli_di" bpmnElement="foundInSDNC">
+        <di:waypoint xsi:type="dc:Point" x="231" y="545" />
+        <di:waypoint xsi:type="dc:Point" x="309" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="260" y="530" width="19" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ue1x4e_di" bpmnElement="notFoundInSDNC">
+        <di:waypoint xsi:type="dc:Point" x="206" y="520" />
+        <di:waypoint xsi:type="dc:Point" x="206" y="421" />
+        <di:waypoint xsi:type="dc:Point" x="924" y="421" />
+        <di:waypoint xsi:type="dc:Point" x="924" y="492" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="558" y="406" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bfuk6l_di" bpmnElement="SequenceFlow_0bfuk6l">
+        <di:waypoint xsi:type="dc:Point" x="436" y="243" />
+        <di:waypoint xsi:type="dc:Point" x="503" y="243" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="470" y="228" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xm9g9s_di" bpmnElement="SequenceFlow_0xm9g9s">
+        <di:waypoint xsi:type="dc:Point" x="603" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="667" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="635" y="225" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteE2EServiceInstance.bpmn
new file mode 100644
index 0000000..a975ebd
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteE2EServiceInstance.bpmn
@@ -0,0 +1,378 @@
+<?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.10.0">
+  <bpmn:process id="DoDeleteE2EServiceInstance" name="All Resources Deleted" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_0212h2r" name="Start Flow">
+      <bpmn:outgoing>SequenceFlow_0vz7cd9</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:scriptTask id="ScriptTask_06phzgv" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0vz7cd9</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_11e6bfy</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteE2EServiceInstance()
+ddsi.preProcessRequest(execution)
+]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:endEvent id="EndEvent_1uqzt26">
+      <bpmn:incoming>SequenceFlow_0e7inkl</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="ScriptTask_1rtnsh8" name="Post Process AAI GET" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_188ejvu</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0vi0sv6</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteE2EServiceInstance()
+ddsi.postProcessAAIGET(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_01erufg" name="&#10;AAI&#10;Delete&#10;(svc instance)&#10;" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1cevtpy</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0e7inkl</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoCustomDeleteE2EServiceInstance()
+ddsi.deleteServiceInstance(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:subProcess id="SubProcess_1u8zt9i" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0sf5lpt">
+        <bpmn:outgoing>SequenceFlow_1921mo3</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_06utmg4">
+        <bpmn:incoming>SequenceFlow_18vlzfo</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_0nha3pr" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_1921mo3</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_18vlzfo</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_1921mo3" name="" sourceRef="StartEvent_0sf5lpt" targetRef="ScriptTask_0nha3pr" />
+      <bpmn:sequenceFlow id="SequenceFlow_18vlzfo" name="" sourceRef="ScriptTask_0nha3pr" targetRef="EndEvent_06utmg4" />
+    </bpmn:subProcess>
+    <bpmn:sequenceFlow id="SequenceFlow_0vz7cd9" sourceRef="StartEvent_0212h2r" targetRef="ScriptTask_06phzgv" />
+    <bpmn:sequenceFlow id="SequenceFlow_11e6bfy" sourceRef="ScriptTask_06phzgv" targetRef="CallActivity_076pc2z" />
+    <bpmn:sequenceFlow id="SequenceFlow_0e7inkl" sourceRef="ScriptTask_01erufg" targetRef="EndEvent_1uqzt26" />
+    <bpmn:scriptTask id="ScriptTask_146jt8v" name="Prepare Resource Oper Status" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1961633</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ym9otf</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteE2EServiceInstance()
+ddsi.preInitResourcesOperStatus(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:serviceTask id="ServiceTask_00tg69u" name="Init Resource Oper Status">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <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>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_initResOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1ym9otf</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1j08ko3</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1ym9otf" sourceRef="ScriptTask_146jt8v" targetRef="ServiceTask_00tg69u" />
+    <bpmn:callActivity id="CallActivity_076pc2z" name="Call AAI Generic GetService" calledElement="GenericGetService">
+      <bpmn:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in source="serviceType" target="GENGS_serviceType" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_11e6bfy</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_188ejvu</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_188ejvu" sourceRef="CallActivity_076pc2z" targetRef="ScriptTask_1rtnsh8" />
+    <bpmn:sequenceFlow id="SequenceFlow_1j08ko3" sourceRef="ServiceTask_00tg69u" targetRef="Task_1f5dlsv" />
+    <bpmn:sequenceFlow id="SequenceFlow_0fo5vw5" sourceRef="Task_1ldvug1" targetRef="Task_0mhdfuu" />
+    <bpmn:sequenceFlow id="SequenceFlow_0orw2f8" sourceRef="Task_0mhdfuu" targetRef="Task_1yx1n05" />
+    <bpmn:sequenceFlow id="SequenceFlow_0ha8ix9" sourceRef="Task_1yx1n05" targetRef="IntermediateThrowEvent_0ve5ukt" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0ve5ukt" name="Go to Delete Resources">
+      <bpmn:incoming>SequenceFlow_0ha8ix9</bpmn:incoming>
+      <bpmn:linkEventDefinition name="StartDeleteResource" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateCatchEvent id="startDeleteResources" name="Start Delete Resources">
+      <bpmn:outgoing>SequenceFlow_1961633</bpmn:outgoing>
+      <bpmn:linkEventDefinition name="StartDeleteResource" />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1961633" sourceRef="startDeleteResources" targetRef="ScriptTask_146jt8v" />
+    <bpmn:scriptTask id="Task_1ldvug1" name="Prepare Decompose Service" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1q2mqnm</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0fo5vw5</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi= new DoDeleteE2EServiceInstance()
+dcsi.prepareDecomposeService(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="Task_0mhdfuu" name="Call Decompose Service" calledElement="DecomposeService">
+      <bpmn:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="requestParameters" target="requestParameters" />
+        <camunda:out source="rollbackData" target="rollbackData" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0fo5vw5</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0orw2f8</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:scriptTask id="Task_1yx1n05" name="Post Decompose Service" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0orw2f8</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0ha8ix9</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi= new DoDeleteE2EServiceInstance()
+dcsi.postDecomposeService(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="Task_1f5dlsv" name="Delete Resources" calledElement="DoDeleteResourcesV1">
+      <bpmn:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="URN_mso_workflow_sdncadapter_callback" target="URN_mso_workflow_sdncadapter_callback" />
+        <camunda:in source="serviceInputParams" target="serviceInputParams" />
+        <camunda:in source="deleteResourceList" target="deleteResourceList" />
+        <camunda:in source="resourceInstanceIDs" target="resourceInstanceIDs" />
+        <camunda:in source="operationType" target="operationType" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="serviceDecomposition" target="serviceDecomposition" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1j08ko3</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1cevtpy</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_1cevtpy" sourceRef="Task_1f5dlsv" targetRef="ScriptTask_01erufg" />
+    <bpmn:intermediateCatchEvent id="DecomposeService" name="Decompose Service">
+      <bpmn:outgoing>SequenceFlow_1q2mqnm</bpmn:outgoing>
+      <bpmn:linkEventDefinition name="DecomposeService" />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1q2mqnm" sourceRef="DecomposeService" targetRef="Task_1ldvug1" />
+    <bpmn:intermediateThrowEvent id="StartEvent_1qh5a34" name="Go to Decompse Service">
+      <bpmn:incoming>SequenceFlow_0vi0sv6</bpmn:incoming>
+      <bpmn:linkEventDefinition name="DecomposeService" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0vi0sv6" sourceRef="ScriptTask_1rtnsh8" targetRef="StartEvent_1qh5a34" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteE2EServiceInstance">
+      <bpmndi:BPMNShape id="StartEvent_0212h2r_di" bpmnElement="StartEvent_0212h2r">
+        <dc:Bounds x="-537" y="-51" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-544" y="-10" width="52" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_06phzgv_di" bpmnElement="ScriptTask_06phzgv">
+        <dc:Bounds x="-449" y="-73" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1uqzt26_di" bpmnElement="EndEvent_1uqzt26">
+        <dc:Bounds x="543" y="472" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="471" y="513" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rtnsh8_di" bpmnElement="ScriptTask_1rtnsh8">
+        <dc:Bounds x="-109" y="-73" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_01erufg_di" bpmnElement="ScriptTask_01erufg">
+        <dc:Bounds x="254" y="450" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_1u8zt9i_di" bpmnElement="SubProcess_1u8zt9i" isExpanded="true">
+        <dc:Bounds x="-166" y="672" width="467" height="193" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vz7cd9_di" bpmnElement="SequenceFlow_0vz7cd9">
+        <di:waypoint xsi:type="dc:Point" x="-501" y="-33" />
+        <di:waypoint xsi:type="dc:Point" x="-475" y="-33" />
+        <di:waypoint xsi:type="dc:Point" x="-475" y="-33" />
+        <di:waypoint xsi:type="dc:Point" x="-449" y="-33" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-505" y="-39" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11e6bfy_di" bpmnElement="SequenceFlow_11e6bfy">
+        <di:waypoint xsi:type="dc:Point" x="-349" y="-33" />
+        <di:waypoint xsi:type="dc:Point" x="-318" y="-33" />
+        <di:waypoint xsi:type="dc:Point" x="-318" y="-33" />
+        <di:waypoint xsi:type="dc:Point" x="-286" y="-33" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-348" y="-39" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0e7inkl_di" bpmnElement="SequenceFlow_0e7inkl">
+        <di:waypoint xsi:type="dc:Point" x="354" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="543" y="490" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="403.5" y="469" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="StartEvent_0sf5lpt_di" bpmnElement="StartEvent_0sf5lpt">
+        <dc:Bounds x="-98" y="739" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-170" y="780" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_06utmg4_di" bpmnElement="EndEvent_06utmg4">
+        <dc:Bounds x="195" y="739" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="123" y="780" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0nha3pr_di" bpmnElement="ScriptTask_0nha3pr">
+        <dc:Bounds x="6" y="717" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1921mo3_di" bpmnElement="SequenceFlow_1921mo3">
+        <di:waypoint xsi:type="dc:Point" x="-62" y="757" />
+        <di:waypoint xsi:type="dc:Point" x="6" y="757" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-118" y="742" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18vlzfo_di" bpmnElement="SequenceFlow_18vlzfo">
+        <di:waypoint xsi:type="dc:Point" x="106" y="757" />
+        <di:waypoint xsi:type="dc:Point" x="195" y="757" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="62" y="742" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_146jt8v_di" bpmnElement="ScriptTask_146jt8v">
+        <dc:Bounds x="-422" y="450" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_00tg69u_di" bpmnElement="ServiceTask_00tg69u">
+        <dc:Bounds x="-229" y="450" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ym9otf_di" bpmnElement="SequenceFlow_1ym9otf">
+        <di:waypoint xsi:type="dc:Point" x="-322" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="-229" y="490" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-320.5" y="469" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_076pc2z_di" bpmnElement="CallActivity_076pc2z">
+        <dc:Bounds x="-286" y="-73" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_188ejvu_di" bpmnElement="SequenceFlow_188ejvu">
+        <di:waypoint xsi:type="dc:Point" x="-186" y="-33" />
+        <di:waypoint xsi:type="dc:Point" x="-154" y="-33" />
+        <di:waypoint xsi:type="dc:Point" x="-154" y="-33" />
+        <di:waypoint xsi:type="dc:Point" x="-109" y="-33" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-184" y="-39" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1j08ko3_di" bpmnElement="SequenceFlow_1j08ko3">
+        <di:waypoint xsi:type="dc:Point" x="-129" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="-1" y="490" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-110" y="469" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0fo5vw5_di" bpmnElement="SequenceFlow_0fo5vw5">
+        <di:waypoint xsi:type="dc:Point" x="-278" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="-254" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="-254" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="-178" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-284" y="192" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0orw2f8_di" bpmnElement="SequenceFlow_0orw2f8">
+        <di:waypoint xsi:type="dc:Point" x="-78" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="-49" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="-49" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="47" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-79" y="192" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ha8ix9_di" bpmnElement="SequenceFlow_0ha8ix9">
+        <di:waypoint xsi:type="dc:Point" x="147" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="181" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="181" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="246" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="151" y="192" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_15myvzx_di" bpmnElement="IntermediateThrowEvent_0ve5ukt">
+        <dc:Bounds x="246" y="180" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="233" y="220" width="64" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1jcfnjr_di" bpmnElement="startDeleteResources">
+        <dc:Bounds x="-537" y="472" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-549" y="512" width="60" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1961633_di" bpmnElement="SequenceFlow_1961633">
+        <di:waypoint xsi:type="dc:Point" x="-501" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="-422" y="490" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-461.5" y="469" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_079nac8_di" bpmnElement="Task_1ldvug1">
+        <dc:Bounds x="-378" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_01b12fk_di" bpmnElement="Task_0mhdfuu">
+        <dc:Bounds x="-178" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0msjtc4_di" bpmnElement="Task_1yx1n05">
+        <dc:Bounds x="47" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_16sm2op_di" bpmnElement="Task_1f5dlsv">
+        <dc:Bounds x="-1" y="450" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cevtpy_di" bpmnElement="SequenceFlow_1cevtpy">
+        <di:waypoint xsi:type="dc:Point" x="99" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="254" y="490" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="131.5" y="469" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0s6bb2d_di" bpmnElement="DecomposeService">
+        <dc:Bounds x="-537" y="180" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-550" y="220" width="61" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q2mqnm_di" bpmnElement="SequenceFlow_1q2mqnm">
+        <di:waypoint xsi:type="dc:Point" x="-501" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="-378" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-484" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1j1awcj_di" bpmnElement="StartEvent_1qh5a34">
+        <dc:Bounds x="71" y="-51" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="46" y="-11" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vi0sv6_di" bpmnElement="SequenceFlow_0vi0sv6">
+        <di:waypoint xsi:type="dc:Point" x="-9" y="-33" />
+        <di:waypoint xsi:type="dc:Point" x="14" y="-33" />
+        <di:waypoint xsi:type="dc:Point" x="14" y="-33" />
+        <di:waypoint xsi:type="dc:Point" x="71" y="-33" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-16" y="-39" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteNetworkInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteNetworkInstance.bpmn
new file mode 100644
index 0000000..d6069d7
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteNetworkInstance.bpmn
@@ -0,0 +1,933 @@
+<?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="DoDeleteNetworkInstance" name="DoDeleteNetworkInstance" isExecutable="true">
+    <bpmn2:startEvent id="deleteNetwork_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="deleteNetwork_startEvent" targetRef="ScriptTask_01w2cd9" />
+    <bpmn2:scriptTask id="callAAIQuery_scriptTask" name="Call REST Query In AAI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0msqfwu</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def callRESTDeleteAAI = new DoDeleteNetworkInstance()
+callRESTDeleteAAI.callRESTQueryAAI(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="callAAIQuery_scriptTask" targetRef="isRelationshipExists_ExclusiveGateway" />
+    <bpmn2:callActivity id="callDeleteSDNCAdapter_CallActivity" name="Call SDNC Unassign Adapter V1 Sub-process" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DELNWKI_deleteSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:out source="sdncAdapterResponse" target="DELNWKI_deleteSDNCResponse" />
+        <camunda:out source="SDNCA_ResponseCode" target="DELNWKI_sdncReturnCode" />
+        <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="WorkflowException" target="WorkflowException" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1pdp4d2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="callDeleteSDNCAdapter_CallActivity" targetRef="validateSDNCResponse_ScriptTask" />
+    <bpmn2:scriptTask id="validateSDNCResponse_ScriptTask" name="Validate SDNC Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1jnva78</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def validateSDNCResponse = new DoDeleteNetworkInstance()
+validateSDNCResponse.validateSDNCResponse(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="validateSDNCResponse_ScriptTask" targetRef="isSdncTopoDeleteOk_ExclusiveGateway" />
+    <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="validateSDNCResponse_ScriptTask">
+      <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_87" errorRef="Error_3" />
+    </bpmn2:boundaryEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="BoundaryEvent_1" targetRef="sndcError_EndEvent" />
+    <bpmn2:exclusiveGateway id="isSdncTopoDeleteOk_ExclusiveGateway" name="Is SDNC Unassign Ok?" default="sdncTopoDeleteNo_SequenceFlow">
+      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      <bpmn2:outgoing>sdncTopoDeleteNo_SequenceFlow</bpmn2:outgoing>
+      <bpmn2:outgoing>sdncTopoDeleteYes_SequenceFlow</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:endEvent id="sndcError_EndEvent" name="SNDC Error">
+      <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+      <bpmn2:incoming>sdncTopoDeleteNo_SequenceFlow</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_57" errorRef="Error_3" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="sdncTopoDeleteNo_SequenceFlow" name="No" sourceRef="isSdncTopoDeleteOk_ExclusiveGateway" targetRef="sndcError_EndEvent" />
+    <bpmn2:sequenceFlow id="sdncTopoDeleteYes_SequenceFlow" name="Yes" sourceRef="isSdncTopoDeleteOk_ExclusiveGateway" targetRef="ScriptTask_01xjfhu">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKI_sdncResponseSuccess" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:subProcess id="subProcessException_SubProcess" name="Subprocess For Exception" triggeredByEvent="true">
+      <bpmn2:startEvent id="subProcessStart_StartEvent" name="Fault Start">
+        <bpmn2:outgoing>SequenceFlow_1a51h25</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_3" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_2">
+        <bpmn2:incoming>SequenceFlow_1yvnovn</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_00lgy9f" name="PostProcess Response" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1nl99y6</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1yvnovn</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+DoDeleteNetworkInstance.postProcessResponse(execution)
+]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1a51h25" sourceRef="subProcessStart_StartEvent" targetRef="Task_0026x4v" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1yvnovn" sourceRef="ScriptTask_00lgy9f" targetRef="EndEvent_2" />
+      <bpmn2:scriptTask id="ScriptTask_0n4do0p" name="Prepare SDNC RPC Rollback Deactivate" scriptFormat="groovy">
+        <bpmn2:outgoing>SequenceFlow_1wif0e5</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+DoDeleteNetworkInstance.prepareRpcSDNCDeactivateRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_1gix2o6" name="Is Rollback On?">
+        <bpmn2:incoming>SequenceFlow_021b0sz</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0tiz0kk</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_1suj1nc</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0tiz0kk" name="Yes" sourceRef="ExclusiveGateway_1gix2o6" targetRef="ExclusiveGateway_1x7o5bo">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKI_rollbackEnabled") == true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_1suj1nc" name="No" sourceRef="ExclusiveGateway_1gix2o6" targetRef="ExclusiveGateway_01xin16" />
+      <bpmn2:callActivity id="CallActivity_0lku52d" name="DoDelete NetworkInstanceRollback&#10;" calledElement="DoDeleteNetworkInstanceRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:out source="rolledBack" target="rolledBack" />
+          <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+          <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+          <camunda:in source="rollbackData" target="rollbackData" />
+          <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="WorkflowException" target="WorkflowException" />
+          <camunda:in source="sdncVersion" target="sdncVersion" />
+          <camunda:out source="workflowException" target="workflowException" />
+          <camunda:in source="SavedWorkflowException1" target="SavedWorkflowException1" />
+          <camunda:out source="wasDeleted" target="wasDeleted" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_147vc14</bpmn2:incoming>
+      </bpmn2:callActivity>
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_1x7o5bo" name="is SDNC Rollback Needed? " default="SequenceFlow_1raa09h">
+        <bpmn2:incoming>SequenceFlow_0tiz0kk</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0jb7rws</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_1raa09h</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0jb7rws" name="Yes" sourceRef="ExclusiveGateway_1x7o5bo" targetRef="ExclusiveGateway_01xin16">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKI_isSdncDeactivateRollbackNeeded") == true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:inclusiveGateway id="ExclusiveGateway_01xin16">
+        <bpmn2:incoming>SequenceFlow_1suj1nc</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1raa09h</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_0jb7rws</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1nl99y6</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_1raa09h" sourceRef="ExclusiveGateway_1x7o5bo" targetRef="ExclusiveGateway_01xin16" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1nl99y6" sourceRef="ExclusiveGateway_01xin16" targetRef="ScriptTask_00lgy9f" />
+      <bpmn2:scriptTask id="ScriptTask_0n4ya47" name="Prepare RollbackData" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1wif0e5</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_147vc14</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+DoDeleteNetworkInstance.prepareRollbackData(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1wif0e5" sourceRef="ScriptTask_0n4do0p" targetRef="ScriptTask_0n4ya47" />
+      <bpmn2:sequenceFlow id="SequenceFlow_147vc14" sourceRef="ScriptTask_0n4ya47" targetRef="CallActivity_0lku52d" />
+      <bpmn2:sequenceFlow id="SequenceFlow_021b0sz" sourceRef="Task_0026x4v" targetRef="ExclusiveGateway_1gix2o6" />
+      <bpmn2:scriptTask id="Task_0026x4v" name="Set Exception Flag" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1a51h25</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_021b0sz</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+DoDeleteNetworkInstance.setExceptionFlag(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:textAnnotation id="TextAnnotation_0i06ryl">      <bpmn2:text>Rollback Not Needed for Delete.</bpmn2:text>
+</bpmn2:textAnnotation>
+      <bpmn2:association id="Association_0gzsxad" sourceRef="CallActivity_0lku52d" targetRef="TextAnnotation_0i06ryl" />
+    </bpmn2:subProcess>
+    <bpmn2:exclusiveGateway id="isAAIQueryOk_ExclusiveGateway_2" name="Is AAI Query Ok?" default="querySuccessNo_SequenceFlow">
+      <bpmn2:incoming>isRelationshipExistNo_SequenceFlow</bpmn2:incoming>
+      <bpmn2:outgoing>querySuccessYes_SequenceFlow</bpmn2:outgoing>
+      <bpmn2:outgoing>querySuccessNo_SequenceFlow</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="querySuccessYes_SequenceFlow" name="Yes" sourceRef="isAAIQueryOk_ExclusiveGateway_2" targetRef="isResponseEmpty_ExclusiveGateway_2">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKI_isAAIGood") == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="querySuccessNo_SequenceFlow" name="No" sourceRef="isAAIQueryOk_ExclusiveGateway_2" targetRef="isReturnCode404_ExclusiveGateway" />
+    <bpmn2:exclusiveGateway id="isReturnCode404_ExclusiveGateway" name="Is Return Code 404?" default="isReturnCode404_No_SequenceFlow">
+      <bpmn2:incoming>querySuccessNo_SequenceFlow</bpmn2:incoming>
+      <bpmn2:outgoing>isReturnCode404_No_SequenceFlow</bpmn2:outgoing>
+      <bpmn2:outgoing>isReturnCode404_Yes_SequenceFlow</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="isReturnCode404_No_SequenceFlow" name="No" sourceRef="isReturnCode404_ExclusiveGateway" targetRef="aai_Error_EndEvent" />
+    <bpmn2:sequenceFlow id="isReturnCode404_Yes_SequenceFlow" name="Yes" sourceRef="isReturnCode404_ExclusiveGateway" targetRef="silentSucces_InclusiveGateway">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKI_aaiReturnCode" ) == "404"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:endEvent id="aai_Error_EndEvent" name="AAI Error">
+      <bpmn2:incoming>isReturnCode404_No_SequenceFlow</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_53" errorRef="Error_3" />
+    </bpmn2:endEvent>
+    <bpmn2:exclusiveGateway id="isResponseEmpty_ExclusiveGateway_2" name="Is Resp Empty?" default="isResponseEmptyNo_SequenceFlow">
+      <bpmn2:incoming>querySuccessYes_SequenceFlow</bpmn2:incoming>
+      <bpmn2:outgoing>isResponseEmptyNo_SequenceFlow</bpmn2:outgoing>
+      <bpmn2:outgoing>isResponseEmptyYes_SequenceFlow</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="isResponseEmptyNo_SequenceFlow" name="No" sourceRef="isResponseEmpty_ExclusiveGateway_2" targetRef="callRESTQueryCloudRegion_ScriptTask" />
+    <bpmn2:sequenceFlow id="isResponseEmptyYes_SequenceFlow" name="Yes" sourceRef="isResponseEmpty_ExclusiveGateway_2" targetRef="silentSucces_InclusiveGateway">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKI_isSilentSuccess") == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:inclusiveGateway id="silentSucces_InclusiveGateway" name="Joint">
+      <bpmn2:incoming>isReturnCode404_Yes_SequenceFlow</bpmn2:incoming>
+      <bpmn2:incoming>isResponseEmptyYes_SequenceFlow</bpmn2:incoming>
+      <bpmn2:outgoing>silentSuccess_SequenceFlow</bpmn2:outgoing>
+    </bpmn2:inclusiveGateway>
+    <bpmn2:sequenceFlow id="silentSuccess_SequenceFlow" name="Silent Success" sourceRef="silentSucces_InclusiveGateway" targetRef="ScriptTask_0dtzzht" />
+    <bpmn2:endEvent id="EndEvent_1">
+      <bpmn2:incoming>SequenceFlow_0f25bme</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="callRESTQueryCloudRegion_ScriptTask" name="Call REST Query Cloud Region " scriptFormat="groovy">
+      <bpmn2:incoming>isResponseEmptyNo_SequenceFlow</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_30</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteNetMod = new DoDeleteNetworkInstance()
+deleteNetMod.callRESTQueryAAICloudRegion(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_30" name="" sourceRef="callRESTQueryCloudRegion_ScriptTask" targetRef="prepareNetworkRequest_ScriptTask" />
+    <bpmn2:exclusiveGateway id="isRelationshipExists_ExclusiveGateway" name="Is Relationship Exists?" default="isRelationshipExistNo_SequenceFlow">
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:outgoing>isRelationshipExistNo_SequenceFlow</bpmn2:outgoing>
+      <bpmn2:outgoing>isRelationshipExistYes_SequenceFlow</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="isRelationshipExistNo_SequenceFlow" name="No" sourceRef="isRelationshipExists_ExclusiveGateway" targetRef="isAAIQueryOk_ExclusiveGateway_2" />
+    <bpmn2:sequenceFlow id="isRelationshipExistYes_SequenceFlow" name="Yes" sourceRef="isRelationshipExists_ExclusiveGateway" targetRef="relationshipError_EndEvent">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKI_isVfRelationshipExist") == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:endEvent id="relationshipError_EndEvent" name="Relationship Error">
+      <bpmn2:incoming>isRelationshipExistYes_SequenceFlow</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_89" errorRef="Error_3" />
+    </bpmn2:endEvent>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_1pbgnr2</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="prepareSDNCTopoRequest_ScriptTask" name="Prepare SDNC Topology Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0r3pvf8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1pdp4d2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def prepareSDNCRequest = new DoDeleteNetworkInstance()
+prepareSDNCRequest.prepareSDNCRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="validateDeletePONetwork_ScriptTask" name="Validate Delete PO Network" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_20</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def validateNetworkResponse = new DoDeleteNetworkInstance()
+validateNetworkResponse.validateNetworkResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_20" name="" sourceRef="validateDeletePONetwork_ScriptTask" targetRef="ExclusiveGateway_02t94x3" />
+    <bpmn2:scriptTask id="prepareNetworkRequest_ScriptTask" name="Prepare Network Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_30</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def prepareNetworkRequest = new DoDeleteNetworkInstance()
+prepareNetworkRequest.prepareNetworkRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="prepareNetworkRequest_ScriptTask" targetRef="sendRequestToNewworkAdapater_ScriptTask" />
+    <bpmn2:scriptTask id="sendRequestToNewworkAdapater_ScriptTask" name="Send Request to Network Adapter" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def prepareNetworkRequest = new DoDeleteNetworkInstance()
+prepareNetworkRequest.sendRequestToVnfAdapter(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="sendRequestToNewworkAdapater_ScriptTask" targetRef="validateDeletePONetwork_ScriptTask" />
+    <bpmn2:subProcess id="SubProcess_1" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1">
+        <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="_ErrorEventDefinition_91" errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_4">
+        <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="unexpectedError_DeleteNetworkInfra_ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteNetMod = new DoDeleteNetworkInstance()
+deleteNetMod.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="StartEvent_1" targetRef="unexpectedError_DeleteNetworkInfra_ScriptTask_1" />
+      <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="unexpectedError_DeleteNetworkInfra_ScriptTask_1" targetRef="EndEvent_4" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="ScriptTask_01xjfhu" name="PostProcess Response" scriptFormat="groovy">
+      <bpmn2:incoming>sdncTopoDeleteYes_SequenceFlow</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1pbgnr2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+DoDeleteNetworkInstance.postProcessResponse(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1pbgnr2" sourceRef="ScriptTask_01xjfhu" targetRef="EndEvent_3" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1pdp4d2" sourceRef="prepareSDNCTopoRequest_ScriptTask" targetRef="callDeleteSDNCAdapter_CallActivity" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_02t94x3" name="is not &#39;1610&#39; SNDC Call?" default="SequenceFlow_0r3pvf8">
+      <bpmn2:incoming>SequenceFlow_20</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0r3pvf8</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0kqnddy</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0r3pvf8" name="No" sourceRef="ExclusiveGateway_02t94x3" targetRef="prepareSDNCTopoRequest_ScriptTask" />
+    <bpmn2:scriptTask id="ScriptTask_0iqzbz6" name="Prepare RSRC SDNC Unassign Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0f13b17</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0zlbzad</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def prepareSDNCRequest = new DoDeleteNetworkInstance()
+prepareSDNCRequest.prepareRpcSDNCRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_03wzdas" name="Call RSRC SDNC Unassign Adapter V1 " calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DELNWKI_deleteSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="sdncAdapterResponse" target="DELNWKI_deleteSDNCResponse" />
+        <camunda:out source="SDNCA_ResponseCode" target="DELNWKI_sdncReturnCode" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0zlbzad</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1jnva78</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1jnva78" sourceRef="CallActivity_03wzdas" targetRef="validateSDNCResponse_ScriptTask" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0zlbzad" sourceRef="ScriptTask_0iqzbz6" targetRef="CallActivity_03wzdas" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0kqnddy" name="Yes" sourceRef="ExclusiveGateway_02t94x3" targetRef="ScriptTask_1wf192s">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:scriptTask id="ScriptTask_01w2cd9" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0msqfwu</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+DoDeleteNetworkInstance.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0msqfwu" sourceRef="ScriptTask_01w2cd9" targetRef="callAAIQuery_scriptTask" />
+    <bpmn2:scriptTask id="ScriptTask_0dtzzht" name="PostProcess Response" scriptFormat="groovy">
+      <bpmn2:incoming>silentSuccess_SequenceFlow</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0f25bme</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+DoDeleteNetworkInstance.postProcessResponse(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0f25bme" sourceRef="ScriptTask_0dtzzht" targetRef="EndEvent_1" />
+    <bpmn2:callActivity id="CallActivity_0wyu1mx" name="Call RSRC SDNC Deactivate Adapter" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DELNWKI_deactivateSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="SDNCA_ResponseCode" target="DELNWKI_deactivateSdncReturnCode" />
+        <camunda:out source="sdncAdapterResponse" target="DELNWKI_deactivateSDNCResponse" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1o088sy</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1i3193l</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_1wf192s" name="Prepare SDNC RSRC Deactivate Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0kqnddy</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1o088sy</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+DoDeleteNetworkInstance.prepareRpcSDNCDeactivate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1o088sy" sourceRef="ScriptTask_1wf192s" targetRef="CallActivity_0wyu1mx" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_024qvqd" default="SequenceFlow_1qyo7ot">
+      <bpmn2:incoming>SequenceFlow_0n8sf23</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1qyo7ot</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0f13b17</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:scriptTask id="ScriptTask_00vwf2h" name="Validate Deactivate SDNC Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1i3193l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0n8sf23</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
+DoDeleteNetworkInstance.validateRpcSDNCDeactivateResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:boundaryEvent id="BoundaryEvent_0un9yyu" name="" attachedToRef="ScriptTask_00vwf2h">
+      <bpmn2:outgoing>SequenceFlow_08hus4u</bpmn2:outgoing>
+      <bpmn2:errorEventDefinition errorRef="Error_3" />
+    </bpmn2:boundaryEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1i3193l" sourceRef="CallActivity_0wyu1mx" targetRef="ScriptTask_00vwf2h" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0n8sf23" sourceRef="ScriptTask_00vwf2h" targetRef="ExclusiveGateway_024qvqd" />
+    <bpmn2:sequenceFlow id="SequenceFlow_08hus4u" sourceRef="BoundaryEvent_0un9yyu" targetRef="EndEvent_1l210ae" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1qyo7ot" name="No" sourceRef="ExclusiveGateway_024qvqd" targetRef="EndEvent_1l210ae" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0f13b17" name="Yes" sourceRef="ExclusiveGateway_024qvqd" targetRef="ScriptTask_0iqzbz6">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKI_sdncResponseSuccess" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:endEvent id="EndEvent_1l210ae">
+      <bpmn2:incoming>SequenceFlow_08hus4u</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1qyo7ot</bpmn2:incoming>
+      <bpmn2:errorEventDefinition errorRef="Error_3" />
+    </bpmn2:endEvent>
+  </bpmn2:process>
+  <bpmn2:error id="Error_3" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteNetworkInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="deleteNetwork_startEvent">
+        <dc:Bounds x="444" y="185" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="437" y="226" width="49" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47">
+        <di:waypoint xsi:type="dc:Point" x="480" y="203" />
+        <di:waypoint xsi:type="dc:Point" x="597" y="204" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="539" y="188.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_62" bpmnElement="callAAIQuery_scriptTask">
+        <dc:Bounds x="816" y="163" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_62" bpmnElement="isAAIQueryOk_ExclusiveGateway_2" isMarkerVisible="true">
+        <dc:Bounds x="984" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="966" y="44" width="87" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_62" targetElement="_BPMNShape_ExclusiveGateway_224">
+        <di:waypoint xsi:type="dc:Point" x="866" y="163" />
+        <di:waypoint xsi:type="dc:Point" x="865" y="122" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="862" y="135" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_63" bpmnElement="validateDeletePONetwork_ScriptTask">
+        <dc:Bounds x="1131" y="509" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="querySuccessYes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_62" targetElement="_BPMNShape_ExclusiveGateway_65">
+        <di:waypoint xsi:type="dc:Point" x="1009" y="122" />
+        <di:waypoint xsi:type="dc:Point" x="1009" y="177" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1008" y="120" width="29" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="querySuccessNo_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_62" targetElement="_BPMNShape_ExclusiveGateway_64">
+        <di:waypoint xsi:type="dc:Point" x="1034" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1126" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1036" y="97" width="22" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_64" bpmnElement="isReturnCode404_ExclusiveGateway" isMarkerVisible="true">
+        <dc:Bounds x="1126" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1115" y="41" width="77" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="isReturnCode404_No_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_64" targetElement="_BPMNShape_EndEvent_118">
+        <di:waypoint xsi:type="dc:Point" x="1176" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1212" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1212" y="98" />
+        <di:waypoint xsi:type="dc:Point" x="1281" y="98" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1176" y="97" width="22" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="isReturnCode404_Yes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_64" targetElement="_BPMNShape_InclusiveGateway_2">
+        <di:waypoint xsi:type="dc:Point" x="1151" y="122" />
+        <di:waypoint xsi:type="dc:Point" x="1151" y="177" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1152" y="120" width="29" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_65" bpmnElement="isResponseEmpty_ExclusiveGateway_2" isMarkerVisible="true">
+        <dc:Bounds x="984" y="177" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1016" y="163" width="95" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="isResponseEmptyNo_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_65" targetElement="_BPMNShape_ScriptTask_250">
+        <di:waypoint xsi:type="dc:Point" x="1009" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1010" y="269" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1016" y="227" width="22" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="isResponseEmptyYes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_65" targetElement="_BPMNShape_InclusiveGateway_2">
+        <di:waypoint xsi:type="dc:Point" x="1034" y="202" />
+        <di:waypoint xsi:type="dc:Point" x="1126" y="202" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1034" y="202" width="29" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_118" bpmnElement="aai_Error_EndEvent">
+        <dc:Bounds x="1281" y="80" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1270" y="121" width="59" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_66" bpmnElement="prepareNetworkRequest_ScriptTask">
+        <dc:Bounds x="1131" y="269" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ScriptTask_66" targetElement="_BPMNShape_ScriptTask_242">
+        <di:waypoint xsi:type="dc:Point" x="1181" y="349" />
+        <di:waypoint xsi:type="dc:Point" x="1181" y="387" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1196" y="368" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_67" bpmnElement="prepareSDNCTopoRequest_ScriptTask">
+        <dc:Bounds x="981" y="718" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_20" sourceElement="_BPMNShape_ScriptTask_63" targetElement="_BPMNShape_ScriptTask_67">
+        <di:waypoint xsi:type="dc:Point" x="1180" y="589" />
+        <di:waypoint xsi:type="dc:Point" x="1181" y="648" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1181" y="603.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_16" bpmnElement="subProcessException_SubProcess" isExpanded="true">
+        <dc:Bounds x="-1" y="576" width="902" height="448" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="subProcessStart_StartEvent">
+        <dc:Bounds x="49" y="896" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="43" y="938" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_67" bpmnElement="isSdncTopoDeleteOk_ExclusiveGateway" isMarkerVisible="true">
+        <dc:Bounds x="1156" y="997" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1070" y="1010" width="70" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_26" bpmnElement="sdncTopoDeleteNo_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_67" targetElement="_BPMNShape_EndEvent_124">
+        <di:waypoint xsi:type="dc:Point" x="1206" y="1022" />
+        <di:waypoint xsi:type="dc:Point" x="1244" y="1022" />
+        <di:waypoint xsi:type="dc:Point" x="1244" y="1022" />
+        <di:waypoint xsi:type="dc:Point" x="1278" y="1022" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1206" y="1029.0213702128942" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="sdncTopoDeleteYes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_67">
+        <di:waypoint xsi:type="dc:Point" x="1181" y="1047" />
+        <di:waypoint xsi:type="dc:Point" x="1181" y="1097" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1187" y="1053.3920491579422" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_124" bpmnElement="sndcError_EndEvent">
+        <dc:Bounds x="1278" y="1004" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1289" y="1047" width="59" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_19" bpmnElement="callDeleteSDNCAdapter_CallActivity">
+        <dc:Bounds x="981" y="851" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_CallActivity_19" targetElement="_BPMNShape_ScriptTask_131">
+        <di:waypoint xsi:type="dc:Point" x="1081" y="891" />
+        <di:waypoint xsi:type="dc:Point" x="1131" y="891" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1106" y="876" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_242" targetElement="_BPMNShape_ScriptTask_63">
+        <di:waypoint xsi:type="dc:Point" x="1181" y="467" />
+        <di:waypoint xsi:type="dc:Point" x="1181" y="509" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1196" y="488" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_InclusiveGateway_2" bpmnElement="silentSucces_InclusiveGateway">
+        <dc:Bounds x="1126" y="177" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1136" y="227" width="33" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_36" bpmnElement="silentSuccess_SequenceFlow" sourceElement="_BPMNShape_InclusiveGateway_2">
+        <di:waypoint xsi:type="dc:Point" x="1176" y="202" />
+        <di:waypoint xsi:type="dc:Point" x="1305" y="203" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1195" y="180.7648701031734" width="72" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_131" bpmnElement="validateSDNCResponse_ScriptTask">
+        <dc:Bounds x="1131" y="851" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_131" targetElement="_BPMNShape_ExclusiveGateway_67">
+        <di:waypoint xsi:type="dc:Point" x="1180" y="931" />
+        <di:waypoint xsi:type="dc:Point" x="1181" y="997" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1181" y="949" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_242" bpmnElement="sendRequestToNewworkAdapater_ScriptTask">
+        <dc:Bounds x="1131" y="387" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_179" bpmnElement="EndEvent_1">
+        <dc:Bounds x="1458" y="185" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1476" y="226" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_180" bpmnElement="EndEvent_2">
+        <dc:Bounds x="817" y="687" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="835" y="728" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_182" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1163" y="1228" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1181" y="1269" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_250" bpmnElement="callRESTQueryCloudRegion_ScriptTask">
+        <dc:Bounds x="960" y="269" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_52" bpmnElement="SequenceFlow_30" sourceElement="_BPMNShape_ScriptTask_250" targetElement="_BPMNShape_ScriptTask_66">
+        <di:waypoint xsi:type="dc:Point" x="1060" y="309" />
+        <di:waypoint xsi:type="dc:Point" x="1096" y="309" />
+        <di:waypoint xsi:type="dc:Point" x="1096" y="309" />
+        <di:waypoint xsi:type="dc:Point" x="1131" y="309" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1111" y="309" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_41" bpmnElement="BoundaryEvent_1">
+        <dc:Bounds x="1213" y="913" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1231" y="949" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_41" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_BoundaryEvent_41" targetElement="_BPMNShape_EndEvent_124">
+        <di:waypoint xsi:type="dc:Point" x="1241" y="945" />
+        <di:waypoint xsi:type="dc:Point" x="1286" y="1007" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1264" y="961" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_224" bpmnElement="isRelationshipExists_ExclusiveGateway" isMarkerVisible="true">
+        <dc:Bounds x="840" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="829" y="41" width="74" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_60" bpmnElement="isRelationshipExistNo_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_224" targetElement="_BPMNShape_ExclusiveGateway_62">
+        <di:waypoint xsi:type="dc:Point" x="890" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="984" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="890" y="97" width="22" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_216" bpmnElement="relationshipError_EndEvent">
+        <dc:Bounds x="730" y="80" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="701" y="117" width="109" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_61" bpmnElement="isRelationshipExistYes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_224" targetElement="_BPMNShape_EndEvent_216">
+        <di:waypoint xsi:type="dc:Point" x="840" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="800" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="800" y="98" />
+        <di:waypoint xsi:type="dc:Point" x="766" y="98" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="816" y="97" width="29" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_29" bpmnElement="SubProcess_1" isExpanded="true">
+        <dc:Bounds x="0" y="369" width="326" height="175" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_73" bpmnElement="StartEvent_1">
+        <dc:Bounds x="36" y="432" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="54" y="473" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_222" bpmnElement="EndEvent_4">
+        <dc:Bounds x="240" y="432" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="258" y="473" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_272" bpmnElement="unexpectedError_DeleteNetworkInfra_ScriptTask_1">
+        <dc:Bounds x="108" y="410" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_StartEvent_73" targetElement="_BPMNShape_ScriptTask_272">
+        <di:waypoint xsi:type="dc:Point" x="72" y="450" />
+        <di:waypoint xsi:type="dc:Point" x="108" y="450" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_272" targetElement="_BPMNShape_EndEvent_222">
+        <di:waypoint xsi:type="dc:Point" x="208" y="450" />
+        <di:waypoint xsi:type="dc:Point" x="240" y="450" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_00lgy9f_di" bpmnElement="ScriptTask_00lgy9f">
+        <dc:Bounds x="688" y="665" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1a51h25_di" bpmnElement="SequenceFlow_1a51h25">
+        <di:waypoint xsi:type="dc:Point" x="85" y="914" />
+        <di:waypoint xsi:type="dc:Point" x="124" y="914" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="105" y="899" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yvnovn_di" bpmnElement="SequenceFlow_1yvnovn">
+        <di:waypoint xsi:type="dc:Point" x="788" y="705" />
+        <di:waypoint xsi:type="dc:Point" x="817" y="705" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="803" y="690" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_01xjfhu_di" bpmnElement="ScriptTask_01xjfhu">
+        <dc:Bounds x="1131" y="1097" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1pbgnr2_di" bpmnElement="SequenceFlow_1pbgnr2">
+        <di:waypoint xsi:type="dc:Point" x="1181" y="1177" />
+        <di:waypoint xsi:type="dc:Point" x="1181" y="1228" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1196" y="1202.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1pdp4d2_di" bpmnElement="SequenceFlow_1pdp4d2">
+        <di:waypoint xsi:type="dc:Point" x="1031" y="798" />
+        <di:waypoint xsi:type="dc:Point" x="1031" y="851" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1046" y="824.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_02t94x3_di" bpmnElement="ExclusiveGateway_02t94x3" isMarkerVisible="true">
+        <dc:Bounds x="1156" y="648" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1150" y="707" width="61" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0r3pvf8_di" bpmnElement="SequenceFlow_0r3pvf8">
+        <di:waypoint xsi:type="dc:Point" x="1156" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="1031" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="1031" y="718" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1134" y="681" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0iqzbz6_di" bpmnElement="ScriptTask_0iqzbz6">
+        <dc:Bounds x="1426" y="851" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_03wzdas_di" bpmnElement="CallActivity_03wzdas">
+        <dc:Bounds x="1279" y="851" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jnva78_di" bpmnElement="SequenceFlow_1jnva78">
+        <di:waypoint xsi:type="dc:Point" x="1279" y="891" />
+        <di:waypoint xsi:type="dc:Point" x="1231" y="891" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1255" y="876" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zlbzad_di" bpmnElement="SequenceFlow_0zlbzad">
+        <di:waypoint xsi:type="dc:Point" x="1426" y="891" />
+        <di:waypoint xsi:type="dc:Point" x="1379" y="891" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1403" y="876" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0kqnddy_di" bpmnElement="SequenceFlow_0kqnddy">
+        <di:waypoint xsi:type="dc:Point" x="1206" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="1279" y="673" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1217" y="677.9562629793824" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_01w2cd9_di" bpmnElement="ScriptTask_01w2cd9">
+        <dc:Bounds x="597" y="163" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0msqfwu_di" bpmnElement="SequenceFlow_0msqfwu">
+        <di:waypoint xsi:type="dc:Point" x="697" y="203" />
+        <di:waypoint xsi:type="dc:Point" x="816" y="203" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="757" y="188" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0dtzzht_di" bpmnElement="ScriptTask_0dtzzht">
+        <dc:Bounds x="1305" y="163" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0f25bme_di" bpmnElement="SequenceFlow_0f25bme">
+        <di:waypoint xsi:type="dc:Point" x="1405" y="203" />
+        <di:waypoint xsi:type="dc:Point" x="1458" y="203" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1432" y="178" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0wyu1mx_di" bpmnElement="CallActivity_0wyu1mx">
+        <dc:Bounds x="1426" y="633" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1wf192s_di" bpmnElement="ScriptTask_1wf192s">
+        <dc:Bounds x="1279" y="633" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1o088sy_di" bpmnElement="SequenceFlow_1o088sy">
+        <di:waypoint xsi:type="dc:Point" x="1379" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="1403" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="1403" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="1426" y="673" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1418" y="673" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_024qvqd_di" bpmnElement="ExclusiveGateway_024qvqd" isMarkerVisible="true">
+        <dc:Bounds x="1597" y="775" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1622" y="825" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_00vwf2h_di" bpmnElement="ScriptTask_00vwf2h">
+        <dc:Bounds x="1572" y="633" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="BoundaryEvent_0un9yyu_di" bpmnElement="BoundaryEvent_0un9yyu">
+        <dc:Bounds x="1654" y="695" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1672" y="731" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1i3193l_di" bpmnElement="SequenceFlow_1i3193l">
+        <di:waypoint xsi:type="dc:Point" x="1526" y="673" />
+        <di:waypoint xsi:type="dc:Point" x="1572" y="673" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1549" y="648" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n8sf23_di" bpmnElement="SequenceFlow_0n8sf23">
+        <di:waypoint xsi:type="dc:Point" x="1622" y="713" />
+        <di:waypoint xsi:type="dc:Point" x="1622" y="775" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1637" y="734" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_08hus4u_di" bpmnElement="SequenceFlow_08hus4u">
+        <di:waypoint xsi:type="dc:Point" x="1680" y="729" />
+        <di:waypoint xsi:type="dc:Point" x="1710" y="784" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1695" y="741.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qyo7ot_di" bpmnElement="SequenceFlow_1qyo7ot">
+        <di:waypoint xsi:type="dc:Point" x="1647" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="1700" y="800" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1651" y="808" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0f13b17_di" bpmnElement="SequenceFlow_0f13b17">
+        <di:waypoint xsi:type="dc:Point" x="1622" y="825" />
+        <di:waypoint xsi:type="dc:Point" x="1622" y="891" />
+        <di:waypoint xsi:type="dc:Point" x="1526" y="891" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1629" y="824" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0p7ad9r_di" bpmnElement="EndEvent_1l210ae">
+        <dc:Bounds x="1700" y="782" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1718" y="818" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0n4do0p_di" bpmnElement="ScriptTask_0n4do0p">
+        <dc:Bounds x="245" y="665" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1gix2o6_di" bpmnElement="ExclusiveGateway_1gix2o6" isMarkerVisible="true">
+        <dc:Bounds x="270" y="889" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="256" y="939" width="77" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0tiz0kk_di" bpmnElement="SequenceFlow_0tiz0kk">
+        <di:waypoint xsi:type="dc:Point" x="295" y="889" />
+        <di:waypoint xsi:type="dc:Point" x="295" y="869" />
+        <di:waypoint xsi:type="dc:Point" x="295" y="869" />
+        <di:waypoint xsi:type="dc:Point" x="295" y="849" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="299" y="858.4545454545455" width="19" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1suj1nc_di" bpmnElement="SequenceFlow_1suj1nc">
+        <di:waypoint xsi:type="dc:Point" x="320" y="914" />
+        <di:waypoint xsi:type="dc:Point" x="437" y="914" />
+        <di:waypoint xsi:type="dc:Point" x="437" y="849" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="333" y="897" width="14" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0lku52d_di" bpmnElement="CallActivity_0lku52d">
+        <dc:Bounds x="523" y="665" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1x7o5bo_di" bpmnElement="ExclusiveGateway_1x7o5bo" isMarkerVisible="true">
+        <dc:Bounds x="270" y="799" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="173" y="812" width="87" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jb7rws_di" bpmnElement="SequenceFlow_0jb7rws">
+        <di:waypoint xsi:type="dc:Point" x="295" y="799" />
+        <di:waypoint xsi:type="dc:Point" x="295" y="772" />
+        <di:waypoint xsi:type="dc:Point" x="437" y="772" />
+        <di:waypoint xsi:type="dc:Point" x="437" y="799" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="312" y="776.0384854424079" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_17qke2s_di" bpmnElement="ExclusiveGateway_01xin16">
+        <dc:Bounds x="412" y="799" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="437" y="849" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1raa09h_di" bpmnElement="SequenceFlow_1raa09h">
+        <di:waypoint xsi:type="dc:Point" x="320" y="824" />
+        <di:waypoint xsi:type="dc:Point" x="412" y="824" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="366" y="809" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1nl99y6_di" bpmnElement="SequenceFlow_1nl99y6">
+        <di:waypoint xsi:type="dc:Point" x="462" y="824" />
+        <di:waypoint xsi:type="dc:Point" x="738" y="824" />
+        <di:waypoint xsi:type="dc:Point" x="738" y="745" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="600" y="809" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0n4ya47_di" bpmnElement="ScriptTask_0n4ya47">
+        <dc:Bounds x="387" y="665" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wif0e5_di" bpmnElement="SequenceFlow_1wif0e5">
+        <di:waypoint xsi:type="dc:Point" x="345" y="705" />
+        <di:waypoint xsi:type="dc:Point" x="387" y="705" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="366" y="690" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_147vc14_di" bpmnElement="SequenceFlow_147vc14">
+        <di:waypoint xsi:type="dc:Point" x="487" y="705" />
+        <di:waypoint xsi:type="dc:Point" x="523" y="705" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="505" y="690" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_021b0sz_di" bpmnElement="SequenceFlow_021b0sz">
+        <di:waypoint xsi:type="dc:Point" x="224" y="914" />
+        <di:waypoint xsi:type="dc:Point" x="270" y="914" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="247" y="899" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1gtl61j_di" bpmnElement="Task_0026x4v">
+        <dc:Bounds x="124" y="874" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_0i06ryl_di" bpmnElement="TextAnnotation_0i06ryl">
+        <dc:Bounds x="592" y="596" width="106" height="45" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Association_0gzsxad_di" bpmnElement="Association_0gzsxad">
+        <di:waypoint xsi:type="dc:Point" x="606" y="665" />
+        <di:waypoint xsi:type="dc:Point" x="627" y="641" />
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteNetworkInstanceRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteNetworkInstanceRollback.bpmn
new file mode 100644
index 0000000..7ec02ad
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteNetworkInstanceRollback.bpmn
@@ -0,0 +1,547 @@
+<?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.4.0">
+  <bpmn:process id="DoDeleteNetworkInstanceRollback" name="DoDeleteNetworkInstanceRollback" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1">
+      <bpmn:outgoing>SequenceFlow_1krl2dg</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:scriptTask id="Task_0whino1" name="PreProcess Incoming Data" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1krl2dg</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0u41iz2</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()
+DoDeleteNetworkInstanceRollback.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1krl2dg" sourceRef="StartEvent_1" targetRef="Task_0whino1" />
+    <bpmn:sequenceFlow id="SequenceFlow_0u41iz2" sourceRef="Task_0whino1" targetRef="ExclusiveGateway_0p5zgdb" />
+    <bpmn:callActivity id="CallActivity_1x88fsq" name="Call RSRC SDNC Activate Adapter" calledElement="sdncAdapter">
+      <bpmn:extensionElements>
+        <camunda:in source="DELNWKIR_rollbackDeactivateSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="SDNCA_ResponseCode" target="DELNWKIR_rollbackDeactivateSDNCReturnCode" />
+        <camunda:out source="sdncAdapterResponse" target="DELNWKIR_rollbackDeactivateSDNCResponse" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1mxbdps</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_07s5r14</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0p5zgdb" name="is RSRC Deactivate Rollback?" default="SequenceFlow_1bb7zpp">
+      <bpmn:incoming>SequenceFlow_0u41iz2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1bb7zpp</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1mxbdps</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:scriptTask id="ScriptTask_1ggaxfu" name="Validate Rollback Responses" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1xokvq6</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1xs882r</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ucaagl</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()
+DoDeleteNetworkInstanceRollback.validateRollbackResponses(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1bb7zpp" name="No" sourceRef="ExclusiveGateway_0p5zgdb" targetRef="ExclusiveGateway_03d5sol" />
+    <bpmn:sequenceFlow id="SequenceFlow_1mxbdps" name="Yes" sourceRef="ExclusiveGateway_0p5zgdb" targetRef="CallActivity_1x88fsq">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKIR_rollbackDeactivateSDNCRequest") != null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_07s5r14" sourceRef="CallActivity_1x88fsq" targetRef="ExclusiveGateway_03d5sol" />
+    <bpmn:endEvent id="EndEvent_1fvr7ad">
+      <bpmn:incoming>SequenceFlow_1ucaagl</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1eyt8z2" sourceRef="ServiceTask_1vx8ti9" targetRef="ExclusiveGateway_03fn5ks" />
+    <bpmn:subProcess id="SubProcess_1p4663w" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:scriptTask id="ScriptTask_0by1uwk" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0xktw7v</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0soe5t3</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()
+DoDeleteNetworkInstanceRollback.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:startEvent id="StartEvent_1j0eixl">
+        <bpmn:outgoing>SequenceFlow_0xktw7v</bpmn:outgoing>
+        <bpmn:errorEventDefinition errorRef="Error_1" />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_0jxh015">
+        <bpmn:incoming>SequenceFlow_0soe5t3</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_0xktw7v" name="" sourceRef="StartEvent_1j0eixl" targetRef="ScriptTask_0by1uwk" />
+      <bpmn:sequenceFlow id="SequenceFlow_0soe5t3" name="" sourceRef="ScriptTask_0by1uwk" targetRef="EndEvent_0jxh015" />
+    </bpmn:subProcess>
+    <bpmn:inclusiveGateway id="ExclusiveGateway_0798yby">
+      <bpmn:incoming>SequenceFlow_1hcmrh9</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1pi168e</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1xs882r</bpmn:outgoing>
+    </bpmn:inclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1xs882r" sourceRef="ExclusiveGateway_0798yby" targetRef="ScriptTask_1ggaxfu" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_03d5sol" name="is PO Network Rollback?" default="SequenceFlow_1yj3542">
+      <bpmn:incoming>SequenceFlow_1bb7zpp</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_07s5r14</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1yj3542</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_18e00sw</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1yj3542" name="No" sourceRef="ExclusiveGateway_03d5sol" targetRef="ExclusiveGateway_03fn5ks" />
+    <bpmn:serviceTask id="ServiceTask_1vx8ti9" name="Call Rollback Network">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="payload">${DELNWKIR_rollbackNetworkRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)}
+]]></camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="Authorization">#{BasicAuthHeaderValuePO}</camunda:entry>
+                <camunda:entry key="content-type">application/xml</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="DELNWKIR_rollbackNetworkResponse">${response}</camunda:outputParameter>
+            <camunda:outputParameter name="DELNWKIR_rollbackNetworkReturnCode">${statusCode}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_18e00sw</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1eyt8z2</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_18e00sw" name="Yes" sourceRef="ExclusiveGateway_03d5sol" targetRef="ServiceTask_1vx8ti9">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKIR_rollbackNetworkRequest") != null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_03fn5ks" name="is SDNC Rollback?" default="SequenceFlow_1xokvq6">
+      <bpmn:incoming>SequenceFlow_1yj3542</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1eyt8z2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1xokvq6</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_172safw</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1ga27si" name="is RSRC SDNC?" default="SequenceFlow_1wy1aba">
+      <bpmn:incoming>SequenceFlow_172safw</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1wy1aba</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1yltkyg</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1xokvq6" name="No" sourceRef="ExclusiveGateway_03fn5ks" targetRef="ScriptTask_1ggaxfu" />
+    <bpmn:sequenceFlow id="SequenceFlow_172safw" name="Yes" sourceRef="ExclusiveGateway_03fn5ks" targetRef="ExclusiveGateway_1ga27si">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("DELNWKIR_rollbackSDNCRequest") != null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1wy1aba" name="No" sourceRef="ExclusiveGateway_1ga27si" targetRef="Task_00chyig" />
+    <bpmn:sequenceFlow id="SequenceFlow_1yltkyg" name="Yes" sourceRef="ExclusiveGateway_1ga27si" targetRef="Task_1iuumxi">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1hcmrh9" sourceRef="Task_1iuumxi" targetRef="ExclusiveGateway_0798yby" />
+    <bpmn:sequenceFlow id="SequenceFlow_1pi168e" sourceRef="Task_00chyig" targetRef="ExclusiveGateway_0798yby" />
+    <bpmn:callActivity id="Task_1iuumxi" name="Call Assign RSRC SDNC Adapter" calledElement="sdncAdapter">
+      <bpmn:extensionElements>
+        <camunda:in source="DELNWKIR_rollbackSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="SDNCA_ResponseCode" target="DELNWKIR_rollbackSDNCReturnCode" />
+        <camunda:out source="sdncAdapterResponse" target="DELNWKIR_rollbackSDNCResponse" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1yltkyg</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1hcmrh9</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:callActivity id="Task_00chyig" name="Call Rollback SDNC Adapter" calledElement="sdncAdapter">
+      <bpmn:extensionElements>
+        <camunda:in source="DELNWKIR_rollbackSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="SDNCA_ResponseCode" target="DELNWKIR_rollbackSDNCReturnCode" />
+        <camunda:out source="sdncAdapterResponse" target="DELNWKIR_rollbackSDNCResponse" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1wy1aba</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1pi168e</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_1ucaagl" sourceRef="ScriptTask_1ggaxfu" targetRef="EndEvent_1fvr7ad" />
+    <bpmn:subProcess id="SubProcess_02vfqr7" triggeredByEvent="true">
+      <bpmn:endEvent id="EndEvent_0m7hpuj">
+        <bpmn:incoming>SequenceFlow_1s5yjuu</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_0yr3vca" name="Catch Exception" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_01hh1wq</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1s5yjuu</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+execution.setVariable("workflowException", execution.getVariable("WorkflowException")]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:startEvent id="StartEvent_001ol7f">
+        <bpmn:outgoing>SequenceFlow_01hh1wq</bpmn:outgoing>
+        <bpmn:errorEventDefinition errorRef="Error_2" />
+      </bpmn:startEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_1s5yjuu" sourceRef="ScriptTask_0yr3vca" targetRef="EndEvent_0m7hpuj" />
+      <bpmn:sequenceFlow id="SequenceFlow_01hh1wq" sourceRef="StartEvent_001ol7f" targetRef="ScriptTask_0yr3vca" />
+    </bpmn:subProcess>
+    <bpmn:boundaryEvent id="BoundaryEvent_1mrkh9x" attachedToRef="CallActivity_1x88fsq">
+      <bpmn:outgoing>SequenceFlow_0b0m3o7</bpmn:outgoing>
+      <bpmn:errorEventDefinition errorRef="Error_2" />
+    </bpmn:boundaryEvent>
+    <bpmn:boundaryEvent id="BoundaryEvent_16cracu" attachedToRef="ServiceTask_1vx8ti9">
+      <bpmn:outgoing>SequenceFlow_141226w</bpmn:outgoing>
+      <bpmn:errorEventDefinition errorRef="Error_2" />
+    </bpmn:boundaryEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_141226w" sourceRef="BoundaryEvent_16cracu" targetRef="EndEvent_00y9o8y" />
+    <bpmn:sequenceFlow id="SequenceFlow_0b0m3o7" sourceRef="BoundaryEvent_1mrkh9x" targetRef="EndEvent_00y9o8y" />
+    <bpmn:endEvent id="EndEvent_00y9o8y">
+      <bpmn:incoming>SequenceFlow_141226w</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0b0m3o7</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_2" />
+    </bpmn:endEvent>
+    <bpmn:boundaryEvent id="BoundaryEvent_1gk4tem" attachedToRef="Task_1iuumxi">
+      <bpmn:outgoing>SequenceFlow_1lr1613</bpmn:outgoing>
+      <bpmn:errorEventDefinition errorRef="Error_2" />
+    </bpmn:boundaryEvent>
+    <bpmn:boundaryEvent id="BoundaryEvent_1qaz277" attachedToRef="Task_00chyig">
+      <bpmn:outgoing>SequenceFlow_0np0b8p</bpmn:outgoing>
+      <bpmn:errorEventDefinition errorRef="Error_2" />
+    </bpmn:boundaryEvent>
+    <bpmn:endEvent id="EndEvent_1qfbudr">
+      <bpmn:incoming>SequenceFlow_1lr1613</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0np0b8p</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_2" />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1lr1613" sourceRef="BoundaryEvent_1gk4tem" targetRef="EndEvent_1qfbudr" />
+    <bpmn:sequenceFlow id="SequenceFlow_0np0b8p" sourceRef="BoundaryEvent_1qaz277" targetRef="EndEvent_1qfbudr" />
+    <bpmn:textAnnotation id="TextAnnotation_000ap15">    <bpmn:text><![CDATA[Include ONLY inputs/varrables:  
+rollbackData, as Map
+-rollbackDeactivateSDNCRequest
+-rollbackNetworkRequest 
+WorkflowException
+]]></bpmn:text>
+</bpmn:textAnnotation>
+    <bpmn:association id="Association_0ybkmal" sourceRef="Task_0whino1" targetRef="TextAnnotation_000ap15" />
+    <bpmn:textAnnotation id="TextAnnotation_0vwyo82">    <bpmn:text><![CDATA[set value for:
+WorkflowException
+rolledBack
+wasDeleted
+]]></bpmn:text>
+</bpmn:textAnnotation>
+    <bpmn:association id="Association_1gx121b" sourceRef="ScriptTask_1ggaxfu" targetRef="TextAnnotation_0vwyo82" />
+  </bpmn:process>
+  <bpmn:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteNetworkInstanceRollback">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="214" y="240" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="232" y="276" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1dqe09s_di" bpmnElement="Task_0whino1">
+        <dc:Bounds x="333" y="218" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1krl2dg_di" bpmnElement="SequenceFlow_1krl2dg">
+        <di:waypoint xsi:type="dc:Point" x="250" y="258" />
+        <di:waypoint xsi:type="dc:Point" x="333" y="258" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="292" y="243" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0u41iz2_di" bpmnElement="SequenceFlow_0u41iz2">
+        <di:waypoint xsi:type="dc:Point" x="433" y="258" />
+        <di:waypoint xsi:type="dc:Point" x="556" y="258" />
+        <di:waypoint xsi:type="dc:Point" x="556" y="347" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="495" y="243" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1x88fsq_di" bpmnElement="CallActivity_1x88fsq">
+        <dc:Bounds x="506" y="481" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0p5zgdb_di" bpmnElement="ExclusiveGateway_0p5zgdb" isMarkerVisible="true">
+        <dc:Bounds x="531" y="347" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="451" y="360" width="55" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_000ap15_di" bpmnElement="TextAnnotation_000ap15">
+        <dc:Bounds x="112" y="355" width="277" height="115" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Association_0ybkmal_di" bpmnElement="Association_0ybkmal">
+        <di:waypoint xsi:type="dc:Point" x="349" y="298" />
+        <di:waypoint xsi:type="dc:Point" x="300" y="355" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1ggaxfu_di" bpmnElement="ScriptTask_1ggaxfu">
+        <dc:Bounds x="1097" y="332" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_0vwyo82_di" bpmnElement="TextAnnotation_0vwyo82">
+        <dc:Bounds x="1230" y="448" width="165" height="60" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Association_1gx121b_di" bpmnElement="Association_1gx121b">
+        <di:waypoint xsi:type="dc:Point" x="1195" y="404" />
+        <di:waypoint xsi:type="dc:Point" x="1264" y="448" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bb7zpp_di" bpmnElement="SequenceFlow_1bb7zpp">
+        <di:waypoint xsi:type="dc:Point" x="581" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="711" y="372" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="589" y="350.17259171746633" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mxbdps_di" bpmnElement="SequenceFlow_1mxbdps">
+        <di:waypoint xsi:type="dc:Point" x="556" y="397" />
+        <di:waypoint xsi:type="dc:Point" x="556" y="481" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="560" y="397.10731155015196" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_07s5r14_di" bpmnElement="SequenceFlow_07s5r14">
+        <di:waypoint xsi:type="dc:Point" x="606" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="639" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="639" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="711" y="372" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="654" y="446.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1fvr7ad_di" bpmnElement="EndEvent_1fvr7ad">
+        <dc:Bounds x="1253" y="252" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1271" y="288" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1eyt8z2_di" bpmnElement="SequenceFlow_1eyt8z2">
+        <di:waypoint xsi:type="dc:Point" x="786" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="815" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="815" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="866" y="372" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="830" y="446.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_1p4663w_di" bpmnElement="SubProcess_1p4663w" isExpanded="true">
+        <dc:Bounds x="-6" y="665" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0by1uwk_di" bpmnElement="ScriptTask_0by1uwk">
+        <dc:Bounds x="142" y="720" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1j0eixl_di" bpmnElement="StartEvent_1j0eixl">
+        <dc:Bounds x="27" y="742" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="45" y="783" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0jxh015_di" bpmnElement="EndEvent_0jxh015">
+        <dc:Bounds x="303" y="742" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="321" y="783" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xktw7v_di" bpmnElement="SequenceFlow_0xktw7v">
+        <di:waypoint xsi:type="dc:Point" x="63" y="760" />
+        <di:waypoint xsi:type="dc:Point" x="142" y="760" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="105" y="760" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0soe5t3_di" bpmnElement="SequenceFlow_0soe5t3">
+        <di:waypoint xsi:type="dc:Point" x="242" y="760" />
+        <di:waypoint xsi:type="dc:Point" x="303" y="760" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="277" y="760" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_04myanb_di" bpmnElement="ExclusiveGateway_0798yby">
+        <dc:Bounds x="1122" y="496" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1147" y="546" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xs882r_di" bpmnElement="SequenceFlow_1xs882r">
+        <di:waypoint xsi:type="dc:Point" x="1147" y="496" />
+        <di:waypoint xsi:type="dc:Point" x="1147" y="412" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1162" y="454" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_03d5sol_di" bpmnElement="ExclusiveGateway_03d5sol" isMarkerVisible="true">
+        <dc:Bounds x="711" y="347" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="699" y="312" width="74" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yj3542_di" bpmnElement="SequenceFlow_1yj3542">
+        <di:waypoint xsi:type="dc:Point" x="761" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="866" y="372" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="774" y="354" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_1vx8ti9_di" bpmnElement="ServiceTask_1vx8ti9">
+        <dc:Bounds x="686" y="481" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_18e00sw_di" bpmnElement="SequenceFlow_18e00sw">
+        <di:waypoint xsi:type="dc:Point" x="736" y="397" />
+        <di:waypoint xsi:type="dc:Point" x="736" y="481" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="748" y="394" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_03fn5ks_di" bpmnElement="ExclusiveGateway_03fn5ks" isMarkerVisible="true">
+        <dc:Bounds x="866" y="347" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="867" y="310" width="48" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1ga27si_di" bpmnElement="ExclusiveGateway_1ga27si" isMarkerVisible="true">
+        <dc:Bounds x="866" y="496" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="898" y="456" width="82" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xokvq6_di" bpmnElement="SequenceFlow_1xokvq6">
+        <di:waypoint xsi:type="dc:Point" x="916" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="1097" y="372" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="926" y="353" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_172safw_di" bpmnElement="SequenceFlow_172safw">
+        <di:waypoint xsi:type="dc:Point" x="891" y="397" />
+        <di:waypoint xsi:type="dc:Point" x="891" y="496" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="898" y="396.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wy1aba_di" bpmnElement="SequenceFlow_1wy1aba">
+        <di:waypoint xsi:type="dc:Point" x="891" y="546" />
+        <di:waypoint xsi:type="dc:Point" x="891" y="677" />
+        <di:waypoint xsi:type="dc:Point" x="955" y="677" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="903" y="541.5" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yltkyg_di" bpmnElement="SequenceFlow_1yltkyg">
+        <di:waypoint xsi:type="dc:Point" x="916" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="955" y="521" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="915" y="502" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1hcmrh9_di" bpmnElement="SequenceFlow_1hcmrh9">
+        <di:waypoint xsi:type="dc:Point" x="1055" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="1122" y="521" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1089" y="506" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1pi168e_di" bpmnElement="SequenceFlow_1pi168e">
+        <di:waypoint xsi:type="dc:Point" x="1055" y="677" />
+        <di:waypoint xsi:type="dc:Point" x="1147" y="677" />
+        <di:waypoint xsi:type="dc:Point" x="1147" y="546" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1101" y="662" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_12rk9t5_di" bpmnElement="Task_1iuumxi">
+        <dc:Bounds x="955" y="481" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0l1dvlv_di" bpmnElement="Task_00chyig">
+        <dc:Bounds x="955" y="637" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ucaagl_di" bpmnElement="SequenceFlow_1ucaagl">
+        <di:waypoint xsi:type="dc:Point" x="1147" y="332" />
+        <di:waypoint xsi:type="dc:Point" x="1147" y="270" />
+        <di:waypoint xsi:type="dc:Point" x="1253" y="270" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1162" y="301" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_02vfqr7_di" bpmnElement="SubProcess_02vfqr7" isExpanded="true">
+        <dc:Bounds x="-10" y="898" width="382" height="213" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0m7hpuj_di" bpmnElement="EndEvent_0m7hpuj">
+        <dc:Bounds x="293" y="977" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="311" y="1013" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0yr3vca_di" bpmnElement="ScriptTask_0yr3vca">
+        <dc:Bounds x="120" y="955" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_001ol7f_di" bpmnElement="StartEvent_001ol7f">
+        <dc:Bounds x="20" y="977" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="38" y="1013" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s5yjuu_di" bpmnElement="SequenceFlow_1s5yjuu">
+        <di:waypoint xsi:type="dc:Point" x="220" y="995" />
+        <di:waypoint xsi:type="dc:Point" x="293" y="995" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="257" y="970" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_01hh1wq_di" bpmnElement="SequenceFlow_01hh1wq">
+        <di:waypoint xsi:type="dc:Point" x="56" y="995" />
+        <di:waypoint xsi:type="dc:Point" x="120" y="995" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="88" y="980" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="BoundaryEvent_10qmjw0_di" bpmnElement="BoundaryEvent_1mrkh9x">
+        <dc:Bounds x="588" y="543" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="606" y="579" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="BoundaryEvent_1n1s1n0_di" bpmnElement="BoundaryEvent_16cracu">
+        <dc:Bounds x="668" y="543" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="686" y="579" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_141226w_di" bpmnElement="SequenceFlow_141226w">
+        <di:waypoint xsi:type="dc:Point" x="677" y="577" />
+        <di:waypoint xsi:type="dc:Point" x="655" y="613" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="666" y="580" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0b0m3o7_di" bpmnElement="SequenceFlow_0b0m3o7">
+        <di:waypoint xsi:type="dc:Point" x="615" y="576" />
+        <di:waypoint xsi:type="dc:Point" x="637" y="614" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="626" y="580" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0yeci14_di" bpmnElement="EndEvent_00y9o8y">
+        <dc:Bounds x="628" y="611" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="646" y="647" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="BoundaryEvent_10psbey_di" bpmnElement="BoundaryEvent_1gk4tem">
+        <dc:Bounds x="1037" y="543" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1055" y="579" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="BoundaryEvent_0wka4xd_di" bpmnElement="BoundaryEvent_1qaz277">
+        <dc:Bounds x="1037" y="619" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1055" y="655" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0c33uj0_di" bpmnElement="EndEvent_1qfbudr">
+        <dc:Bounds x="1089" y="587" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1107" y="623" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lr1613_di" bpmnElement="SequenceFlow_1lr1613">
+        <di:waypoint xsi:type="dc:Point" x="1068" y="572" />
+        <di:waypoint xsi:type="dc:Point" x="1094" y="594" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1081" y="568" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0np0b8p_di" bpmnElement="SequenceFlow_0np0b8p">
+        <di:waypoint xsi:type="dc:Point" x="1070" y="628" />
+        <di:waypoint xsi:type="dc:Point" x="1092" y="614" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1081" y="606" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteResources.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteResources.bpmn
new file mode 100644
index 0000000..7fbfe46c
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteResources.bpmn
@@ -0,0 +1,486 @@
+<?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.10.0">
+  <bpmn:process id="DoDeleteResources" name="All Resources Deleted" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_0212h2r" name="Start Flow">
+      <bpmn:outgoing>SequenceFlow_0vz7cd9</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:endEvent id="EndEvent_1uqzt26">
+      <bpmn:incoming>SequenceFlow_1r5306k</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:subProcess id="SubProcess_1u8zt9i" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0sf5lpt">
+        <bpmn:outgoing>SequenceFlow_1921mo3</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_06utmg4">
+        <bpmn:incoming>SequenceFlow_18vlzfo</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_0nha3pr" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_1921mo3</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_18vlzfo</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_1921mo3" name="" sourceRef="StartEvent_0sf5lpt" targetRef="ScriptTask_0nha3pr" />
+      <bpmn:sequenceFlow id="SequenceFlow_18vlzfo" name="" sourceRef="ScriptTask_0nha3pr" targetRef="EndEvent_06utmg4" />
+    </bpmn:subProcess>
+    <bpmn:sequenceFlow id="SequenceFlow_0vz7cd9" sourceRef="StartEvent_0212h2r" targetRef="ScriptTask_14bl5a0" />
+    <bpmn:scriptTask id="ScriptTask_0z30dax" name="Prepare Resource Delele For WAN" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1ubor5z</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1dza4q4</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+String resourceName = execution.getVariable("resourceType")
+def ddsi = new DoDeleteResources()
+ddsi.preResourceDelete(execution, resourceName )]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1dza4q4" sourceRef="ScriptTask_0z30dax" targetRef="CallActivity_Del_SDNC_cust" />
+    <bpmn:sequenceFlow id="SequenceFlow_1wnkgpx" sourceRef="Task_0z1x3sg" targetRef="Task_0963dho" />
+    <bpmn:scriptTask id="Task_0z1x3sg" name="Prepare Resource Delele For NS" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1x3lehs</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1wnkgpx</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+String resourceName = execution.getVariable("resourceType")
+def ddsi = new DoDeleteResources()
+ddsi.preResourceDelete(execution, resourceName )]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="Task_0963dho" name="Call Network Service Delete for NS" calledElement="DoDeleteVFCNetworkServiceInstance">
+      <bpmn:extensionElements>
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="serviceInstanceId" target="serviceId" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="resourceTemplateId" target="resourceTemplateId" />
+        <camunda:in source="resourceInstanceId" target="resourceInstanceId" />
+        <camunda:in source="resourceType" target="resourceType" />
+        <camunda:in source="operationType" target="operationType" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1wnkgpx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0phwem2</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:serviceTask id="CallActivity_Del_SDNC_cust" name="Call Custom Delete SDNC Overlay" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncNetworkTopologyOperationTask">
+      <bpmn:incoming>SequenceFlow_1dza4q4</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1lxqjmp</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:serviceTask id="Task_0edkv0m" name="Call Delete SDNC Service Topology" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncServiceTopologyOperationTask">
+      <bpmn:incoming>SequenceFlow_1icwpye</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1yujjwx</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:scriptTask id="ScriptTask_0o5bglz" name="Sequense Resources" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0xqdf1z</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_03c0zlq</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteResources()
+ddsi.sequenceResource(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_07toixi" name="Check Current Resource" default="SequenceFlow_1x3lehs">
+      <bpmn:incoming>SequenceFlow_1htjmkv</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ubor5z</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1x3lehs</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:scriptTask id="ScriptTask_12q6a51" name="Get Current Resource" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_03c0zlq</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0s1lswk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1htjmkv</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteResources()
+ddsi.getCurrentResource(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_03c0zlq" sourceRef="ScriptTask_0o5bglz" targetRef="ScriptTask_12q6a51" />
+    <bpmn:sequenceFlow id="SequenceFlow_1htjmkv" sourceRef="ScriptTask_12q6a51" targetRef="ExclusiveGateway_07toixi" />
+    <bpmn:sequenceFlow id="SequenceFlow_1ubor5z" name="SDN-C" sourceRef="ExclusiveGateway_07toixi" targetRef="ScriptTask_0z30dax">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("controllerInfo" )  == "SDN-C" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1x3lehs" name="VF-C" sourceRef="ExclusiveGateway_07toixi" targetRef="Task_0z1x3sg" />
+    <bpmn:scriptTask id="ScriptTask_0w46sge" name="Parse Next Resource" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1lxqjmp</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0phwem2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0l5r96s</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteResources()
+ddsi.parseNextResource(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1lxqjmp" sourceRef="CallActivity_Del_SDNC_cust" targetRef="ScriptTask_0w46sge" />
+    <bpmn:sequenceFlow id="SequenceFlow_0phwem2" sourceRef="Task_0963dho" targetRef="ScriptTask_0w46sge" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1hgjg3u" name="Is All Resource Deleted" default="SequenceFlow_0s1lswk">
+      <bpmn:incoming>SequenceFlow_0l5r96s</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0talboa</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0s1lswk</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0l5r96s" sourceRef="ScriptTask_0w46sge" targetRef="ExclusiveGateway_1hgjg3u" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_16046vb" name="Is SDNC Service Contained" default="SequenceFlow_12avhgx">
+      <bpmn:incoming>SequenceFlow_0talboa</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1icwpye</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_12avhgx</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1icwpye" name="yes" sourceRef="ExclusiveGateway_16046vb" targetRef="Task_0edkv0m">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("isContainsWanResource" )  == "true" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0talboa" name="yes" sourceRef="ExclusiveGateway_1hgjg3u" targetRef="ExclusiveGateway_16046vb">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("allResourceFinished" )  == "true" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0s1lswk" name="no" sourceRef="ExclusiveGateway_1hgjg3u" targetRef="ScriptTask_12q6a51" />
+    <bpmn:sequenceFlow id="SequenceFlow_1yujjwx" sourceRef="Task_0edkv0m" targetRef="ScriptTask_14pmqni" />
+    <bpmn:scriptTask id="ScriptTask_14pmqni" name="Post Config Service Instance Creation" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1yujjwx</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_12avhgx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1r5306k</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoCreateResources()
+csi.postConfigRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1r5306k" sourceRef="ScriptTask_14pmqni" targetRef="EndEvent_1uqzt26" />
+    <bpmn:scriptTask id="ScriptTask_0ib77as" name="GET Current NS " scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_042d7oc</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1t2hfv0</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1t8hf8m</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteResources()
+ddsi.getCurrentNS(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="CallActivity_0kf50as" name="GET NS Info from AAI" calledElement="GenericGetService">
+      <bpmn:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in source="serviceType" target="GENGS_serviceType" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1t8hf8m</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0p5gr4z</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:scriptTask id="ScriptTask_1lqjyj9" name="Post Process GET NS Info from AAI" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0p5gr4z</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_131imj8</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteResources()
+ddsi.postProcessAAIGET(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1t8hf8m" sourceRef="ScriptTask_0ib77as" targetRef="CallActivity_0kf50as" />
+    <bpmn:sequenceFlow id="SequenceFlow_0p5gr4z" sourceRef="CallActivity_0kf50as" targetRef="ScriptTask_1lqjyj9" />
+    <bpmn:sequenceFlow id="SequenceFlow_1n85wxv" sourceRef="ScriptTask_197fr01" targetRef="ExclusiveGateway_1lt9ijz" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1lt9ijz" name="Is All Resource Info OK" default="SequenceFlow_042d7oc">
+      <bpmn:extensionElements>
+        <camunda:properties>
+          <camunda:property />
+        </camunda:properties>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1n85wxv</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0xqdf1z</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_042d7oc</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0xqdf1z" sourceRef="ExclusiveGateway_1lt9ijz" targetRef="ScriptTask_0o5bglz">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("allNsFinished" )  == "true" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_042d7oc" sourceRef="ExclusiveGateway_1lt9ijz" targetRef="ScriptTask_0ib77as" />
+    <bpmn:scriptTask id="ScriptTask_14bl5a0" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0vz7cd9</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1t2hfv0</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteResources()
+ddsi.preProcessRequest(execution)
+]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1t2hfv0" sourceRef="ScriptTask_14bl5a0" targetRef="ScriptTask_0ib77as" />
+    <bpmn:scriptTask id="ScriptTask_197fr01" name="Parse Next NS" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_131imj8</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1n85wxv</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteResources()
+ddsi.parseNextNS(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_131imj8" sourceRef="ScriptTask_1lqjyj9" targetRef="ScriptTask_197fr01" />
+    <bpmn:sequenceFlow id="SequenceFlow_12avhgx" name="no" sourceRef="ExclusiveGateway_16046vb" targetRef="ScriptTask_14pmqni" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteResources">
+      <bpmndi:BPMNShape id="StartEvent_0212h2r_di" bpmnElement="StartEvent_0212h2r">
+        <dc:Bounds x="-214" y="-319" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-220" y="-278" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1uqzt26_di" bpmnElement="EndEvent_1uqzt26">
+        <dc:Bounds x="1388" y="725" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1316" y="766" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_1u8zt9i_di" bpmnElement="SubProcess_1u8zt9i" isExpanded="true">
+        <dc:Bounds x="292" y="675" width="467" height="193" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vz7cd9_di" bpmnElement="SequenceFlow_0vz7cd9">
+        <di:waypoint xsi:type="dc:Point" x="-196" y="-283" />
+        <di:waypoint xsi:type="dc:Point" x="-196" y="-220" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-226" y="-257.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="StartEvent_0sf5lpt_di" bpmnElement="StartEvent_0sf5lpt">
+        <dc:Bounds x="360" y="742" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="288" y="783" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_06utmg4_di" bpmnElement="EndEvent_06utmg4">
+        <dc:Bounds x="653" y="742" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="581" y="783" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0nha3pr_di" bpmnElement="ScriptTask_0nha3pr">
+        <dc:Bounds x="464" y="720" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1921mo3_di" bpmnElement="SequenceFlow_1921mo3">
+        <di:waypoint xsi:type="dc:Point" x="396" y="760" />
+        <di:waypoint xsi:type="dc:Point" x="464" y="760" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="340" y="745" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18vlzfo_di" bpmnElement="SequenceFlow_18vlzfo">
+        <di:waypoint xsi:type="dc:Point" x="564" y="760" />
+        <di:waypoint xsi:type="dc:Point" x="653" y="760" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="520" y="745" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0z30dax_di" bpmnElement="ScriptTask_0z30dax">
+        <dc:Bounds x="470" y="111" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dza4q4_di" bpmnElement="SequenceFlow_1dza4q4">
+        <di:waypoint xsi:type="dc:Point" x="570" y="151" />
+        <di:waypoint xsi:type="dc:Point" x="688" y="152" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="584" y="130.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wnkgpx_di" bpmnElement="SequenceFlow_1wnkgpx">
+        <di:waypoint xsi:type="dc:Point" x="576" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="688" y="378" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="587" y="357" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_00301ai_di" bpmnElement="Task_0z1x3sg">
+        <dc:Bounds x="476" y="338" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1mwacgl_di" bpmnElement="Task_0963dho">
+        <dc:Bounds x="688" y="338" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0v9q75y_di" bpmnElement="CallActivity_Del_SDNC_cust">
+        <dc:Bounds x="688" y="112" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0p4b7e1_di" bpmnElement="Task_0edkv0m">
+        <dc:Bounds x="1356" y="233" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0o5bglz_di" bpmnElement="ScriptTask_0o5bglz">
+        <dc:Bounds x="-26" y="233" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_07toixi_di" bpmnElement="ExclusiveGateway_07toixi" isMarkerVisible="true">
+        <dc:Bounds x="342.56962025316454" y="248" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="404" y="261" width="73" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_12q6a51_di" bpmnElement="ScriptTask_12q6a51">
+        <dc:Bounds x="159" y="450" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_03c0zlq_di" bpmnElement="SequenceFlow_03c0zlq">
+        <di:waypoint xsi:type="dc:Point" x="24" y="313" />
+        <di:waypoint xsi:type="dc:Point" x="24" y="494" />
+        <di:waypoint xsi:type="dc:Point" x="159" y="490" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="39" y="397.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1htjmkv_di" bpmnElement="SequenceFlow_1htjmkv">
+        <di:waypoint xsi:type="dc:Point" x="209" y="450" />
+        <di:waypoint xsi:type="dc:Point" x="209" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="343" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="224" y="355.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ubor5z_di" bpmnElement="SequenceFlow_1ubor5z">
+        <di:waypoint xsi:type="dc:Point" x="368" y="248" />
+        <di:waypoint xsi:type="dc:Point" x="368" y="151" />
+        <di:waypoint xsi:type="dc:Point" x="470" y="151" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="381" y="161" width="37" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1x3lehs_di" bpmnElement="SequenceFlow_1x3lehs">
+        <di:waypoint xsi:type="dc:Point" x="368" y="298" />
+        <di:waypoint xsi:type="dc:Point" x="368" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="476" y="378" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="379" y="353" width="28" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0w46sge_di" bpmnElement="ScriptTask_0w46sge">
+        <dc:Bounds x="865" y="233" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lxqjmp_di" bpmnElement="SequenceFlow_1lxqjmp">
+        <di:waypoint xsi:type="dc:Point" x="788" y="152" />
+        <di:waypoint xsi:type="dc:Point" x="827" y="152" />
+        <di:waypoint xsi:type="dc:Point" x="827" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="865" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="842" y="206.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0phwem2_di" bpmnElement="SequenceFlow_0phwem2">
+        <di:waypoint xsi:type="dc:Point" x="788" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="827" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="827" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="865" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="842" y="319.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1hgjg3u_di" bpmnElement="ExclusiveGateway_1hgjg3u" isMarkerVisible="true">
+        <dc:Bounds x="1040.9252217997464" y="248" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1028" y="215" width="75" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0l5r96s_di" bpmnElement="SequenceFlow_0l5r96s">
+        <di:waypoint xsi:type="dc:Point" x="965" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="1041" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1003" y="252" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_16046vb_di" bpmnElement="ExclusiveGateway_16046vb" isMarkerVisible="true">
+        <dc:Bounds x="1203.8174904942966" y="248.28010139416983" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1187" y="214" width="84" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1icwpye_di" bpmnElement="SequenceFlow_1icwpye">
+        <di:waypoint xsi:type="dc:Point" x="1254" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="1356" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1297" y="252" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0talboa_di" bpmnElement="SequenceFlow_0talboa">
+        <di:waypoint xsi:type="dc:Point" x="1091" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="1204" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1138" y="252" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s1lswk_di" bpmnElement="SequenceFlow_0s1lswk">
+        <di:waypoint xsi:type="dc:Point" x="1066" y="298" />
+        <di:waypoint xsi:type="dc:Point" x="1066" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="259" y="490" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1074" y="388" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yujjwx_di" bpmnElement="SequenceFlow_1yujjwx">
+        <di:waypoint xsi:type="dc:Point" x="1406" y="313" />
+        <di:waypoint xsi:type="dc:Point" x="1406" y="523" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1421" y="412" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_14pmqni_di" bpmnElement="ScriptTask_14pmqni">
+        <dc:Bounds x="1356" y="523" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1r5306k_di" bpmnElement="SequenceFlow_1r5306k">
+        <di:waypoint xsi:type="dc:Point" x="1406" y="603" />
+        <di:waypoint xsi:type="dc:Point" x="1406" y="725" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1421" y="658" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0ib77as_di" bpmnElement="ScriptTask_0ib77as">
+        <dc:Bounds x="-246" y="-84" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0kf50as_di" bpmnElement="CallActivity_0kf50as">
+        <dc:Bounds x="-84" y="-84" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1lqjyj9_di" bpmnElement="ScriptTask_1lqjyj9">
+        <dc:Bounds x="80" y="-84" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t8hf8m_di" bpmnElement="SequenceFlow_1t8hf8m">
+        <di:waypoint xsi:type="dc:Point" x="-146" y="-44" />
+        <di:waypoint xsi:type="dc:Point" x="-84" y="-44" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-160" y="-65" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0p5gr4z_di" bpmnElement="SequenceFlow_0p5gr4z">
+        <di:waypoint xsi:type="dc:Point" x="16" y="-44" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="-44" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="3" y="-65" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1n85wxv_di" bpmnElement="SequenceFlow_1n85wxv">
+        <di:waypoint xsi:type="dc:Point" x="290" y="-4" />
+        <di:waypoint xsi:type="dc:Point" x="290" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="49" y="106" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="305" y="45" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1lt9ijz_di" bpmnElement="ExclusiveGateway_1lt9ijz" isMarkerVisible="true">
+        <dc:Bounds x="-1" y="81" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-13" y="135" width="75" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xqdf1z_di" bpmnElement="SequenceFlow_0xqdf1z">
+        <di:waypoint xsi:type="dc:Point" x="24" y="131" />
+        <di:waypoint xsi:type="dc:Point" x="24" y="233" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="39" y="176" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_042d7oc_di" bpmnElement="SequenceFlow_042d7oc">
+        <di:waypoint xsi:type="dc:Point" x="-1" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="-196" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="-196" y="-4" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-98.5" y="85" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_14bl5a0_di" bpmnElement="ScriptTask_14bl5a0">
+        <dc:Bounds x="-246" y="-220" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t2hfv0_di" bpmnElement="SequenceFlow_1t2hfv0">
+        <di:waypoint xsi:type="dc:Point" x="-196" y="-140" />
+        <di:waypoint xsi:type="dc:Point" x="-196" y="-84" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-181" y="-118" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_197fr01_di" bpmnElement="ScriptTask_197fr01">
+        <dc:Bounds x="240" y="-84" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_131imj8_di" bpmnElement="SequenceFlow_131imj8">
+        <di:waypoint xsi:type="dc:Point" x="180" y="-44" />
+        <di:waypoint xsi:type="dc:Point" x="240" y="-44" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="210" y="-65" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_12avhgx_di" bpmnElement="SequenceFlow_12avhgx">
+        <di:waypoint xsi:type="dc:Point" x="1229" y="298" />
+        <di:waypoint xsi:type="dc:Point" x="1229" y="563" />
+        <di:waypoint xsi:type="dc:Point" x="1356" y="563" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1237" y="425" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteResourcesV1.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteResourcesV1.bpmn
new file mode 100644
index 0000000..fe5e93c
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteResourcesV1.bpmn
@@ -0,0 +1,455 @@
+<?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.10.0">
+  <bpmn:process id="DoDeleteResourcesV1" name="DoDeleteResourcesV1" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1" name="Start Resource Delete">
+      <bpmn:outgoing>SequenceFlow_0stqur4</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:scriptTask id="ScriptTask_0ngvt9d" name="Prepare Delete Resource Recipe" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1oil1t3</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_13nyd1j</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1qm7owo</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddrs = new DoDeleteResourcesV1()
+ddrs.preResourceDelete(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_15zy0jf" name="Execute Delete Resource Recipe" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_098gain</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ly5jrs</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddr = new DoDeleteResourcesV1()
+ddr.executeResourceDelete(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_1gf78zz" name="Parse Next Resource" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1ly5jrs</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0djplpd</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0i1gez5</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddr = new DoDeleteResourcesV1()
+ddr.parseNextResource(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0rtr0n7" name="Is All Resource Deleted">
+      <bpmn:incoming>SequenceFlow_0i1gez5</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1oil1t3</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1d5mzit</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0stqur4" sourceRef="StartEvent_1" targetRef="Task_1ue68b0" />
+    <bpmn:sequenceFlow id="SequenceFlow_1qm7owo" sourceRef="ScriptTask_0ngvt9d" targetRef="ExclusiveGateway_0khn1my" />
+    <bpmn:sequenceFlow id="SequenceFlow_1ly5jrs" sourceRef="ScriptTask_15zy0jf" targetRef="ScriptTask_1gf78zz" />
+    <bpmn:sequenceFlow id="SequenceFlow_0i1gez5" sourceRef="ScriptTask_1gf78zz" targetRef="ExclusiveGateway_0rtr0n7" />
+    <bpmn:sequenceFlow id="SequenceFlow_1oil1t3" name="No" sourceRef="ExclusiveGateway_0rtr0n7" targetRef="ScriptTask_0ngvt9d">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("allResourceFinished" )  == "false" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:subProcess id="SubProcess_0sbt4ns" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_1cjikl5">
+        <bpmn:outgoing>SequenceFlow_0rkycoj</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_0gh3mcj">
+        <bpmn:incoming>SequenceFlow_117fiux</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_0plexin" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0rkycoj</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_117fiux</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_0rkycoj" name="" sourceRef="StartEvent_1cjikl5" targetRef="ScriptTask_0plexin" />
+      <bpmn:sequenceFlow id="SequenceFlow_117fiux" name="" sourceRef="ScriptTask_0plexin" targetRef="EndEvent_0gh3mcj" />
+    </bpmn:subProcess>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1x63i6w" name="Is SDNC Service Contained">
+      <bpmn:incoming>SequenceFlow_1yrkxjm</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1s1nnmj</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0lk19rm</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1yrkxjm" sourceRef="StartEvent_1eo3c2a" targetRef="ExclusiveGateway_1x63i6w" />
+    <bpmn:endEvent id="EndEvent_17bzayo" name="End Resource Deletion">
+      <bpmn:incoming>SequenceFlow_0o21fg8</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1s1nnmj" name="yes" sourceRef="ExclusiveGateway_1x63i6w" targetRef="prepareSDNCServiceTopologyDelete">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("isContainsWanResource" )  == "true" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0lk19rm" name="no" sourceRef="ExclusiveGateway_1x63i6w" targetRef="ExclusiveGateway_1jybr0n">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("isContainsWanResource" )  == "false" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1d5mzit" sourceRef="ExclusiveGateway_0rtr0n7" targetRef="EndEvent_17h3h92" />
+    <bpmn:intermediateThrowEvent id="EndEvent_17h3h92" name="Go To Delete SDNC Service Topology">
+      <bpmn:incoming>SequenceFlow_1d5mzit</bpmn:incoming>
+      <bpmn:linkEventDefinition name="DeleteSDNCServiceTopology" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateCatchEvent id="StartEvent_1eo3c2a" name="Delete SDNC Service Topology">
+      <bpmn:outgoing>SequenceFlow_1yrkxjm</bpmn:outgoing>
+      <bpmn:linkEventDefinition name="DeleteSDNCServiceTopology" />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1jybr0n">
+      <bpmn:incoming>SequenceFlow_0lk19rm</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_14fx6hv</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0o21fg8</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0o21fg8" sourceRef="ExclusiveGateway_1jybr0n" targetRef="EndEvent_17bzayo" />
+    <bpmn:scriptTask id="ScriptTask_12460xo" name="Sequense Resources" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_14dezx8</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_13nyd1j</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddrs = new DoDeleteResourcesV1()
+ddrs.sequenceResource(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_13nyd1j" sourceRef="ScriptTask_12460xo" targetRef="ScriptTask_0ngvt9d" />
+    <bpmn:sequenceFlow id="SequenceFlow_14dezx8" sourceRef="Task_1ue68b0" targetRef="ScriptTask_12460xo" />
+    <bpmn:scriptTask id="Task_1ue68b0" name="Preprocess Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0stqur4</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_14dezx8</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddrs = new DoDeleteResourcesV1()
+ddrs.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0khn1my" name="Is The Resource Instance Exists">
+      <bpmn:incoming>SequenceFlow_1qm7owo</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_098gain</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_19ccmqv</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_098gain" name="yes" sourceRef="ExclusiveGateway_0khn1my" targetRef="ScriptTask_15zy0jf">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("resourceInstanceId" )  != "" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:serviceTask id="ServiceTask_1bw1mjh" name="update progress update">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateResOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_11bgbsh</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0djplpd</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:scriptTask id="ScriptTask_0shhhxr" name="Prepare progress finished for the resource" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_19ccmqv</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_11bgbsh</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoDeleteResourcesV1()
+dcsi.prepareFinishedProgressForResource(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_11bgbsh" sourceRef="ScriptTask_0shhhxr" targetRef="ServiceTask_1bw1mjh" />
+    <bpmn:sequenceFlow id="SequenceFlow_19ccmqv" name="no" sourceRef="ExclusiveGateway_0khn1my" targetRef="ScriptTask_0shhhxr" />
+    <bpmn:sequenceFlow id="SequenceFlow_0djplpd" sourceRef="ServiceTask_1bw1mjh" targetRef="ScriptTask_1gf78zz" />
+    <bpmn:sequenceFlow id="SequenceFlow_11h5pba" sourceRef="prepareSDNCServiceTopologyDelete" targetRef="CallActivity_1ueonyc" />
+    <bpmn:scriptTask id="prepareSDNCServiceTopologyDelete" name="Prepare SDNC service Topology Deactivate" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1s1nnmj</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_11h5pba</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddr = new DoDeleteResourcesV1()
+ddr.prepareSDNCServiceDeactivateRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="CallActivity_1ueonyc" name="Call SDNC RSRC &#10; Adapter V1&#10;" calledElement="sdncAdapter">
+      <bpmn:extensionElements>
+        <camunda:in source="sdncAdapterWorkflowRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="sdncAdapterResponse" target="DELSDNCRES_activateSDNCResponse" />
+        <camunda:out source="SDNCA_ResponseCode" target="DELSDNCRES_sdncDeleteReturnCode" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="DELSDNCRES_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_11h5pba</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0gqlayv</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_0gqlayv" sourceRef="CallActivity_1ueonyc" targetRef="ScriptTask_0k6kwv7" />
+    <bpmn:callActivity id="CallActivity_0zuhttc" name="Call SDNC RSRC &#10; Adapter V1&#10;" calledElement="sdncAdapter">
+      <bpmn:extensionElements>
+        <camunda:in source="sdncAdapterWorkflowRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="sdncAdapterResponse" target="DELSDNCRES_activateSDNCResponse" />
+        <camunda:out source="SDNCA_ResponseCode" target="DELSDNCRES_sdncDeleteReturnCode" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="DELSDNCRES_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0etaubw</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_14fx6hv</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_14fx6hv" sourceRef="CallActivity_0zuhttc" targetRef="ExclusiveGateway_1jybr0n" />
+    <bpmn:scriptTask id="ScriptTask_0k6kwv7" name="Prepare SDNC service Topology Delete" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0gqlayv</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0etaubw</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddr = new DoDeleteResourcesV1()
+ddr.prepareSDNCServiceDeleteRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0etaubw" sourceRef="ScriptTask_0k6kwv7" targetRef="CallActivity_0zuhttc" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteResourcesV1">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="-70" y="255" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-89" y="291" width="76" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ngvt9d_di" bpmnElement="ScriptTask_0ngvt9d">
+        <dc:Bounds x="392" y="233" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_15zy0jf_di" bpmnElement="ScriptTask_15zy0jf">
+        <dc:Bounds x="665" y="233" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1gf78zz_di" bpmnElement="ScriptTask_1gf78zz">
+        <dc:Bounds x="865" y="233" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0rtr0n7_di" bpmnElement="ExclusiveGateway_0rtr0n7" isMarkerVisible="true">
+        <dc:Bounds x="1011" y="248" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="999" y="302" width="75" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0stqur4_di" bpmnElement="SequenceFlow_0stqur4">
+        <di:waypoint xsi:type="dc:Point" x="-34" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="38" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2" y="252" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qm7owo_di" bpmnElement="SequenceFlow_1qm7owo">
+        <di:waypoint xsi:type="dc:Point" x="492" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="550" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="476" y="252" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ly5jrs_di" bpmnElement="SequenceFlow_1ly5jrs">
+        <di:waypoint xsi:type="dc:Point" x="765" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="865" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="770" y="252" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0i1gez5_di" bpmnElement="SequenceFlow_0i1gez5">
+        <di:waypoint xsi:type="dc:Point" x="965" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="1011" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="943" y="252" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1oil1t3_di" bpmnElement="SequenceFlow_1oil1t3">
+        <di:waypoint xsi:type="dc:Point" x="1036" y="298" />
+        <di:waypoint xsi:type="dc:Point" x="1036" y="418" />
+        <di:waypoint xsi:type="dc:Point" x="442" y="418" />
+        <di:waypoint xsi:type="dc:Point" x="442" y="313" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="731" y="397" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_0sbt4ns_di" bpmnElement="SubProcess_0sbt4ns" isExpanded="true">
+        <dc:Bounds x="453" y="815" width="467" height="193" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1cjikl5_di" bpmnElement="StartEvent_1cjikl5">
+        <dc:Bounds x="523" y="884" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="406" y="925" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0gh3mcj_di" bpmnElement="EndEvent_0gh3mcj">
+        <dc:Bounds x="816" y="884" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="699" y="925" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0plexin_di" bpmnElement="ScriptTask_0plexin">
+        <dc:Bounds x="627" y="862" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0rkycoj_di" bpmnElement="SequenceFlow_0rkycoj">
+        <di:waypoint xsi:type="dc:Point" x="559" y="902" />
+        <di:waypoint xsi:type="dc:Point" x="627" y="902" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="458" y="887" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_117fiux_di" bpmnElement="SequenceFlow_117fiux">
+        <di:waypoint xsi:type="dc:Point" x="727" y="902" />
+        <di:waypoint xsi:type="dc:Point" x="816" y="902" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="639.5" y="887" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1x63i6w_di" bpmnElement="ExclusiveGateway_1x63i6w" isMarkerVisible="true">
+        <dc:Bounds x="396" y="581" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="379" y="635" width="84" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yrkxjm_di" bpmnElement="SequenceFlow_1yrkxjm">
+        <di:waypoint xsi:type="dc:Point" x="269" y="606" />
+        <di:waypoint xsi:type="dc:Point" x="396" y="606" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="332.5" y="585" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_17bzayo_di" bpmnElement="EndEvent_17bzayo">
+        <dc:Bounds x="1194" y="588" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1181" y="628" width="68" height="28" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s1nnmj_di" bpmnElement="SequenceFlow_1s1nnmj">
+        <di:waypoint xsi:type="dc:Point" x="446" y="606" />
+        <di:waypoint xsi:type="dc:Point" x="509" y="606" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="468.8987341772152" y="585" width="18" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0lk19rm_di" bpmnElement="SequenceFlow_0lk19rm">
+        <di:waypoint xsi:type="dc:Point" x="421" y="631" />
+        <di:waypoint xsi:type="dc:Point" x="421" y="721" />
+        <di:waypoint xsi:type="dc:Point" x="1130" y="721" />
+        <di:waypoint xsi:type="dc:Point" x="1130" y="631" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="770.322505800464" y="700" width="12" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1d5mzit_di" bpmnElement="SequenceFlow_1d5mzit">
+        <di:waypoint xsi:type="dc:Point" x="1061" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="1150" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1105.5" y="252" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_122grb2_di" bpmnElement="EndEvent_17h3h92">
+        <dc:Bounds x="1150" y="255" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1134" y="295" width="73" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_11q62m0_di" bpmnElement="StartEvent_1eo3c2a">
+        <dc:Bounds x="233" y="588" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="209" y="628" width="87" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1jybr0n_di" bpmnElement="ExclusiveGateway_1jybr0n" isMarkerVisible="true">
+        <dc:Bounds x="1105" y="581" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1086" y="635" width="90" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0o21fg8_di" bpmnElement="SequenceFlow_0o21fg8">
+        <di:waypoint xsi:type="dc:Point" x="1155" y="606" />
+        <di:waypoint xsi:type="dc:Point" x="1194" y="606" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1129.5" y="585" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_12460xo_di" bpmnElement="ScriptTask_12460xo">
+        <dc:Bounds x="219" y="233" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_13nyd1j_di" bpmnElement="SequenceFlow_13nyd1j">
+        <di:waypoint xsi:type="dc:Point" x="319" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="355.5" y="252" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_14dezx8_di" bpmnElement="SequenceFlow_14dezx8">
+        <di:waypoint xsi:type="dc:Point" x="138" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="219" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="178.5" y="252" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1tdnal8_di" bpmnElement="Task_1ue68b0">
+        <dc:Bounds x="38" y="233" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0khn1my_di" bpmnElement="ExclusiveGateway_0khn1my" isMarkerVisible="true">
+        <dc:Bounds x="550" y="248" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="536" y="301" width="79" height="28" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_098gain_di" bpmnElement="SequenceFlow_098gain">
+        <di:waypoint xsi:type="dc:Point" x="600" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="665" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="624" y="251" width="18" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_1bw1mjh_di" bpmnElement="ServiceTask_1bw1mjh">
+        <dc:Bounds x="865" y="112" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0shhhxr_di" bpmnElement="ScriptTask_0shhhxr">
+        <dc:Bounds x="665" y="112" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_11bgbsh_di" bpmnElement="SequenceFlow_11bgbsh">
+        <di:waypoint xsi:type="dc:Point" x="765" y="152" />
+        <di:waypoint xsi:type="dc:Point" x="865" y="152" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="815" y="130" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19ccmqv_di" bpmnElement="SequenceFlow_19ccmqv">
+        <di:waypoint xsi:type="dc:Point" x="575" y="248" />
+        <di:waypoint xsi:type="dc:Point" x="575" y="152" />
+        <di:waypoint xsi:type="dc:Point" x="665" y="152" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="584" y="193" width="12" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0djplpd_di" bpmnElement="SequenceFlow_0djplpd">
+        <di:waypoint xsi:type="dc:Point" x="915" y="192" />
+        <di:waypoint xsi:type="dc:Point" x="915" y="213" />
+        <di:waypoint xsi:type="dc:Point" x="915" y="213" />
+        <di:waypoint xsi:type="dc:Point" x="915" y="233" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="930" y="206" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11h5pba_di" bpmnElement="SequenceFlow_11h5pba">
+        <di:waypoint xsi:type="dc:Point" x="609" y="606" />
+        <di:waypoint xsi:type="dc:Point" x="654" y="606" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="586.5" y="585" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0va5zgp_di" bpmnElement="prepareSDNCServiceTopologyDelete">
+        <dc:Bounds x="509" y="566" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ueonyc_di" bpmnElement="CallActivity_1ueonyc">
+        <dc:Bounds x="654" y="566" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gqlayv_di" bpmnElement="SequenceFlow_0gqlayv">
+        <di:waypoint xsi:type="dc:Point" x="754" y="606" />
+        <di:waypoint xsi:type="dc:Point" x="789" y="606" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="771.5" y="584" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0zuhttc_di" bpmnElement="CallActivity_0zuhttc">
+        <dc:Bounds x="936" y="566" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_14fx6hv_di" bpmnElement="SequenceFlow_14fx6hv">
+        <di:waypoint xsi:type="dc:Point" x="1036" y="606" />
+        <di:waypoint xsi:type="dc:Point" x="1105" y="606" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1070.5" y="584" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0k6kwv7_di" bpmnElement="ScriptTask_0k6kwv7">
+        <dc:Bounds x="789" y="566" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0etaubw_di" bpmnElement="SequenceFlow_0etaubw">
+        <di:waypoint xsi:type="dc:Point" x="889" y="606" />
+        <di:waypoint xsi:type="dc:Point" x="936" y="606" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="912.5" y="584" width="0" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteServiceInstance.bpmn
new file mode 100644
index 0000000..fae66a7
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteServiceInstance.bpmn
@@ -0,0 +1,373 @@
+<?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.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoDeleteServiceInstance" name="DoDeleteServiceInstance" isExecutable="true">
+    <bpmn2:startEvent id="deleteSI_startEven" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_0jfgn05</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0jfgn05</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1jqc16k</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteServiceInstance()
+ddsi.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_1wyvxwi</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <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>
+        <camunda:in source="sdncDeactivate" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeactivateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0yohjl7</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0k28xib</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_1uxr0cx" name="Post Process SDNC Deactivate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0k28xib</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1w8ao21</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+
+String response = execution.getVariable("sdncDeactivateResponse")
+def ddsi = new DoDeleteServiceInstance()
+ddsi.postProcessSDNCDelete(execution, response, "deactivate")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0jfgn05" sourceRef="deleteSI_startEven" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:scriptTask id="ScriptTask_0xxwbdq" name="PreProcess SDNC Delete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1dwch0k</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ju26o1</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteServiceInstance()
+ddsi.preProcessSDNCDelete(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0590oev" name="SI found in AAI" default="SequenceFlow_05jfuko">
+      <bpmn2:incoming>SequenceFlow_1up0j5r</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1hcfvcj</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_05jfuko</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1hcfvcj" name="yes" sourceRef="ExclusiveGateway_0590oev" targetRef="ExclusiveGateway_1mrh7us">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("GENGS_FoundIndicator" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:endEvent id="EndEvent_0ronxsz">
+      <bpmn2:incoming>SequenceFlow_05jfuko</bpmn2:incoming>
+    </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="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="no" sourceRef="ExclusiveGateway_1mrh7us" targetRef="ScriptTask_1ybdq3e">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("sendToSDNC" )   == false }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <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" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1jqc16k</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1grea1r</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1jqc16k" sourceRef="preProcessRequest_ScriptTask" targetRef="CallActivity_1s8pf0x" />
+    <bpmn2:scriptTask id="ScriptTask_02da0lj" name="Post Process AAI GET" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1grea1r</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1up0j5r</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteServiceInstance()
+ddsi.postProcessAAIGET(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1grea1r" sourceRef="CallActivity_1s8pf0x" targetRef="ScriptTask_02da0lj" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1up0j5r" sourceRef="ScriptTask_02da0lj" targetRef="ExclusiveGateway_0590oev" />
+    <bpmn2:scriptTask id="ScriptTask_1ybdq3e" name="&#10;AAI&#10;Delete&#10;(svc instance)&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0riudmc</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0znbzxu</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1wyvxwi</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteServiceInstance()
+ddsi.deleteServiceInstance(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1wyvxwi" sourceRef="ScriptTask_1ybdq3e" targetRef="EndEvent_3" />
+    <bpmn2:subProcess id="SubProcess_1jggn82" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1antv0y">
+        <bpmn2:outgoing>SequenceFlow_0u33vy6</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_03iywf6">
+        <bpmn2:incoming>SequenceFlow_0hevfee</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_1va95un" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0u33vy6</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0hevfee</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_0u33vy6" name="" sourceRef="StartEvent_1antv0y" targetRef="ScriptTask_1va95un" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0hevfee" name="" sourceRef="ScriptTask_1va95un" targetRef="EndEvent_03iywf6" />
+    </bpmn2:subProcess>
+    <bpmn2:callActivity id="CallActivity_1c5wru8" name="Call SDNC Service Topology Delete" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="sdncDelete" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="msoRequestId" target="mso-request-id" />
+        <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="sdncDeleteResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1w8ao21</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1swzrij</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_14x55db</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_0lc115e" name="Post Process SDNC Delete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_14x55db</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0znbzxu</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+
+String response = execution.getVariable("sdncDeleteResponse")
+def ddsi = new DoDeleteServiceInstance()
+ddsi.postProcessSDNCDelete(execution, response, "delete")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_14x55db" sourceRef="CallActivity_1c5wru8" targetRef="ScriptTask_0lc115e" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0znbzxu" sourceRef="ScriptTask_0lc115e" targetRef="ScriptTask_1ybdq3e" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1xbefi3" name="skipDeactivate for TRANSPORT" default="SequenceFlow_0yohjl7">
+      <bpmn2:incoming>SequenceFlow_1ju26o1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0yohjl7</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1swzrij</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ju26o1" sourceRef="ScriptTask_0xxwbdq" targetRef="ExclusiveGateway_1xbefi3" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0yohjl7" name="no" sourceRef="ExclusiveGateway_1xbefi3" targetRef="CallActivity_0ak0ezb" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1swzrij" name="yes" sourceRef="ExclusiveGateway_1xbefi3" targetRef="CallActivity_1c5wru8">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("skipDeactivate" )   == 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" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteServiceInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="deleteSI_startEven">
+        <dc:Bounds x="-334" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-340" y="120" width="49" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="-265" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1277" y="201" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1250" y="242" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0k28xib_di" bpmnElement="SequenceFlow_0k28xib">
+        <di:waypoint xsi:type="dc:Point" x="713" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="776" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="745" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0ak0ezb_di" bpmnElement="CallActivity_0ak0ezb">
+        <dc:Bounds x="613" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1uxr0cx_di" bpmnElement="ScriptTask_1uxr0cx">
+        <dc:Bounds x="776" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jfgn05_di" bpmnElement="SequenceFlow_0jfgn05">
+        <di:waypoint xsi:type="dc:Point" x="-298" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="-265" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-281" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0xxwbdq_di" bpmnElement="ScriptTask_0xxwbdq">
+        <dc:Bounds x="354" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0590oev_di" bpmnElement="ExclusiveGateway_0590oev" isMarkerVisible="true">
+        <dc:Bounds x="150" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="138" y="51" width="74" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1hcfvcj_di" bpmnElement="SequenceFlow_1hcfvcj">
+        <di:waypoint xsi:type="dc:Point" x="200" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="236" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="222" y="99" width="18" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0ronxsz_di" bpmnElement="EndEvent_0ronxsz">
+        <dc:Bounds x="157" y="221" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="175" y="262" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_05jfuko_di" bpmnElement="SequenceFlow_05jfuko">
+        <di:waypoint xsi:type="dc:Point" x="175" y="122" />
+        <di:waypoint xsi:type="dc:Point" x="175" y="221" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="156" y="137.69226916562667" width="12" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1w8ao21_di" bpmnElement="SequenceFlow_1w8ao21">
+        <di:waypoint xsi:type="dc:Point" x="876" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="917" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="897" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <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="228" y="126" width="74" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0riudmc_di" bpmnElement="SequenceFlow_0riudmc">
+        <di:waypoint xsi:type="dc:Point" x="261" y="72" />
+        <di:waypoint xsi:type="dc:Point" x="261" y="-20" />
+        <di:waypoint xsi:type="dc:Point" x="1295" y="-20" />
+        <di:waypoint xsi:type="dc:Point" x="1295" y="57" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="777.7386478304746" y="-35.00000000000001" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dwch0k_di" bpmnElement="SequenceFlow_1dwch0k">
+        <di:waypoint xsi:type="dc:Point" x="286" y="97" />
+        <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="306" y="101" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1s8pf0x_di" bpmnElement="CallActivity_1s8pf0x">
+        <dc:Bounds x="-121" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jqc16k_di" bpmnElement="SequenceFlow_1jqc16k">
+        <di:waypoint xsi:type="dc:Point" x="-165" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="-121" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-143" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_02da0lj_di" bpmnElement="ScriptTask_02da0lj">
+        <dc:Bounds x="20" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1grea1r_di" bpmnElement="SequenceFlow_1grea1r">
+        <di:waypoint xsi:type="dc:Point" x="-21" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="20" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="0" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1up0j5r_di" bpmnElement="SequenceFlow_1up0j5r">
+        <di:waypoint xsi:type="dc:Point" x="120" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="150" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="135" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1ybdq3e_di" bpmnElement="ScriptTask_1ybdq3e">
+        <dc:Bounds x="1245" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wyvxwi_di" bpmnElement="SequenceFlow_1wyvxwi">
+        <di:waypoint xsi:type="dc:Point" x="1295" y="137" />
+        <di:waypoint xsi:type="dc:Point" x="1295" y="201" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1265" y="169" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_1jggn82_di" bpmnElement="SubProcess_1jggn82" isExpanded="true">
+        <dc:Bounds x="266" y="409" width="467" height="193" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1antv0y_di" bpmnElement="StartEvent_1antv0y">
+        <dc:Bounds x="334" y="475" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="352" y="516" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_03iywf6_di" bpmnElement="EndEvent_03iywf6">
+        <dc:Bounds x="627" y="475" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="645" y="516" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1va95un_di" bpmnElement="ScriptTask_1va95un">
+        <dc:Bounds x="438" y="453" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0u33vy6_di" bpmnElement="SequenceFlow_0u33vy6">
+        <di:waypoint xsi:type="dc:Point" x="370" y="493" />
+        <di:waypoint xsi:type="dc:Point" x="438" y="493" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="404" y="478" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0hevfee_di" bpmnElement="SequenceFlow_0hevfee">
+        <di:waypoint xsi:type="dc:Point" x="538" y="493" />
+        <di:waypoint xsi:type="dc:Point" x="627" y="493" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="583" y="478" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1c5wru8_di" bpmnElement="CallActivity_1c5wru8">
+        <dc:Bounds x="917" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0lc115e_di" bpmnElement="ScriptTask_0lc115e">
+        <dc:Bounds x="1058" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_14x55db_di" bpmnElement="SequenceFlow_14x55db">
+        <di:waypoint xsi:type="dc:Point" x="1017" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1038" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0znbzxu_di" bpmnElement="SequenceFlow_0znbzxu">
+        <di:waypoint xsi:type="dc:Point" x="1158" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1245" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1156.5" y="82" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1xbefi3_di" bpmnElement="ExclusiveGateway_1xbefi3" isMarkerVisible="true">
+        <dc:Bounds x="508" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="495" y="126" width="84" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ju26o1_di" bpmnElement="SequenceFlow_1ju26o1">
+        <di:waypoint xsi:type="dc:Point" x="454" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="508" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="481" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yohjl7_di" bpmnElement="SequenceFlow_0yohjl7">
+        <di:waypoint xsi:type="dc:Point" x="558" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="613" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="580" y="72" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1swzrij_di" bpmnElement="SequenceFlow_1swzrij">
+        <di:waypoint xsi:type="dc:Point" x="533" y="72" />
+        <di:waypoint xsi:type="dc:Point" x="533" y="26" />
+        <di:waypoint xsi:type="dc:Point" x="967" y="26" />
+        <di:waypoint xsi:type="dc:Point" x="967" y="57" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="741" y="11" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVFCNetworkServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVFCNetworkServiceInstance.bpmn
new file mode 100644
index 0000000..e6ad16b
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVFCNetworkServiceInstance.bpmn
@@ -0,0 +1,275 @@
+<?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.11.3">
+  <bpmn:process id="DoDeleteVFCNetworkServiceInstance" name="DoDeleteVFCNetworkServiceInstance" isExecutable="true">
+    <bpmn:startEvent id="deleteNS_StartEvent" name="deleteNS_StartEvent">
+      <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="deleteNS_StartEvent" targetRef="PreprocessIncomingRequest_task" />
+    <bpmn:scriptTask id="Task_09nzhwk" name="Delete Network Service" scriptFormat="groovy">
+      <bpmn:incoming>terminateFinished_SequenceFlow</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1sjop71</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoDeleteVFCNetworkServiceInstance()
+dcsi.deleteNetworkService(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="Preprocess Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_150q0fo</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoDeleteVFCNetworkServiceInstance()
+dcsi.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="terminate_NSTask" name="terminate Network Service" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1h1c24p</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ywe21t</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoDeleteVFCNetworkServiceInstance()
+dcsi.terminateNetworkService(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0zfksms" name="Delete NS Success?">
+      <bpmn:incoming>SequenceFlow_1sjop71</bpmn:incoming>
+      <bpmn:outgoing>deleteNSFailed_SequenceFlow</bpmn:outgoing>
+      <bpmn:outgoing>deleteNSSuccess_SequenceFlow</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="deleteNSFailed_SequenceFlow" name="no" sourceRef="ExclusiveGateway_0zfksms" targetRef="deleteNSFailed_EndEvent">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationStatus" )  != "finished")}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1is7zys" name="terminate NS Success?">
+      <bpmn:incoming>SequenceFlow_1ywe21t</bpmn:incoming>
+      <bpmn:outgoing>terminateFailed_SequenceFlow</bpmn:outgoing>
+      <bpmn:outgoing>terminateSuccess_SequenceFlow</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1ywe21t" sourceRef="terminate_NSTask" targetRef="ExclusiveGateway_1is7zys" />
+    <bpmn:sequenceFlow id="terminateFailed_SequenceFlow" name="no" sourceRef="ExclusiveGateway_1is7zys" targetRef="EndEvent_1gkvvpn">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" )  == null || execution.getVariable("jobId" )  == "" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="terminateSuccess_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_1is7zys" targetRef="queryJob_Task">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("jobId" )  != null && execution.getVariable("jobId" )  != "" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_15492gl" name="terminate Finished?">
+      <bpmn:incoming>SequenceFlow_0xqo13p</bpmn:incoming>
+      <bpmn:outgoing>terminateFinished_SequenceFlow</bpmn:outgoing>
+      <bpmn:outgoing>terminateProcessing_SequenceFlow</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="terminateFinished_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_15492gl" targetRef="Task_09nzhwk">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationProgress" )  == "100" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="terminateProcessing_SequenceFlow" name="no" sourceRef="ExclusiveGateway_15492gl" targetRef="timeDelay_Task">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationProgress" )  != "100" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0cq2q6g" sourceRef="finishNSDelete_Task" targetRef="EndEvent_1x6k78c" />
+    <bpmn:endEvent id="deleteNSFailed_EndEvent" name="deleteNSFailed">
+      <bpmn:incoming>deleteNSFailed_SequenceFlow</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="EndEvent_1gkvvpn">
+      <bpmn:incoming>terminateFailed_SequenceFlow</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="EndEvent_1x6k78c">
+      <bpmn:incoming>SequenceFlow_0cq2q6g</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="queryJob_Task" name="Query NS Progress" scriptFormat="groovy">
+      <bpmn:incoming>terminateSuccess_SequenceFlow</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1gsbpxj</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0xqo13p</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoDeleteVFCNetworkServiceInstance()
+dcsi.queryNSProgress(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="finishNSDelete_Task" name="Finish NS Delete">
+      <bpmn:incoming>deleteNSSuccess_SequenceFlow</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0cq2q6g</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateVFCNetworkServiceInstance()
+dcsi.finishNSDelete(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0xqo13p" sourceRef="queryJob_Task" targetRef="ExclusiveGateway_15492gl" />
+    <bpmn:scriptTask id="timeDelay_Task" name="timeDelay" scriptFormat="groovy">
+      <bpmn:incoming>terminateProcessing_SequenceFlow</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1gsbpxj</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoDeleteVFCNetworkServiceInstance()
+dcsi.timeDelay(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1gsbpxj" sourceRef="timeDelay_Task" targetRef="queryJob_Task" />
+    <bpmn:sequenceFlow id="SequenceFlow_150q0fo" sourceRef="PreprocessIncomingRequest_task" targetRef="deleteNSRelationship" />
+    <bpmn:sequenceFlow id="SequenceFlow_1sjop71" sourceRef="Task_09nzhwk" targetRef="ExclusiveGateway_0zfksms" />
+    <bpmn:sequenceFlow id="deleteNSSuccess_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_0zfksms" targetRef="finishNSDelete_Task">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("operationStatus" ) == "finished")}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1h1c24p" sourceRef="deleteNSRelationship" targetRef="terminate_NSTask" />
+    <bpmn:scriptTask id="deleteNSRelationship" name="Delete NS Relationship " scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_150q0fo</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1h1c24p</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoDeleteVFCNetworkServiceInstance()
+dcsi.deleteNSRelationship(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteVFCNetworkServiceInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="deleteNS_StartEvent">
+        <dc:Bounds x="175" y="111" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="151" y="147" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln">
+        <di:waypoint xsi:type="dc:Point" x="211" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="321" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="221" y="108" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1dw39hg_di" bpmnElement="Task_09nzhwk">
+        <dc:Bounds x="722" y="555" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task">
+        <dc:Bounds x="321" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qmmew8_di" bpmnElement="terminate_NSTask">
+        <dc:Bounds x="744" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0zfksms_di" bpmnElement="ExclusiveGateway_0zfksms" isMarkerVisible="true">
+        <dc:Bounds x="517" y="570" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="519" y="624" width="52" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0df541u_di" bpmnElement="deleteNSFailed_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="542" y="570" />
+        <di:waypoint xsi:type="dc:Point" x="542" y="446" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="551" y="474.11353711790395" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1is7zys_di" bpmnElement="ExclusiveGateway_1is7zys" isMarkerVisible="true">
+        <dc:Bounds x="1034" y="105" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1032" y="159" width="65" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ywe21t_di" bpmnElement="SequenceFlow_1ywe21t">
+        <di:waypoint xsi:type="dc:Point" x="844" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="1034" y="130" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="894" y="108.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0j7xo94_di" bpmnElement="terminateFailed_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="105" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="33" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1068" y="63" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ui2n9l_di" bpmnElement="terminateSuccess_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="155" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="271" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1066" y="207" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_15492gl_di" bpmnElement="ExclusiveGateway_15492gl" isMarkerVisible="true">
+        <dc:Bounds x="1034" y="570" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1040" y="624" width="47" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0hftgi6_di" bpmnElement="terminateFinished_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1034" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="822" y="595" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="891" y="574" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0omec46_di" bpmnElement="terminateProcessing_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="1084" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="1212" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="1212" y="486" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1131" y="607" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0cq2q6g_di" bpmnElement="SequenceFlow_0cq2q6g">
+        <di:waypoint xsi:type="dc:Point" x="321" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="256" y="595" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="243.5" y="574" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1ido9wi_di" bpmnElement="deleteNSFailed_EndEvent">
+        <dc:Bounds x="524" y="410" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="460" y="450" width="75" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0xgvlmx_di" bpmnElement="EndEvent_1gkvvpn">
+        <dc:Bounds x="1041" y="-3" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1014" y="37" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c">
+        <dc:Bounds x="220" y="577" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="148" y="617" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0sxy5we_di" bpmnElement="queryJob_Task">
+        <dc:Bounds x="1009" y="271" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0xxyfku_di" bpmnElement="finishNSDelete_Task">
+        <dc:Bounds x="321" y="555" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xqo13p_di" bpmnElement="SequenceFlow_0xqo13p">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="351" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="570" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1074" y="454.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0rb5agx_di" bpmnElement="timeDelay_Task">
+        <dc:Bounds x="1162" y="406" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1gsbpxj_di" bpmnElement="SequenceFlow_1gsbpxj">
+        <di:waypoint xsi:type="dc:Point" x="1212" y="406" />
+        <di:waypoint xsi:type="dc:Point" x="1212" y="311" />
+        <di:waypoint xsi:type="dc:Point" x="1109" y="311" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1227" y="352.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_150q0fo_di" bpmnElement="SequenceFlow_150q0fo">
+        <di:waypoint xsi:type="dc:Point" x="421" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="523" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="427" y="108" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sjop71_di" bpmnElement="SequenceFlow_1sjop71">
+        <di:waypoint xsi:type="dc:Point" x="722" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="567" y="595" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="644.5" y="574" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18n2g9j_di" bpmnElement="deleteNSSuccess_SequenceFlow">
+        <di:waypoint xsi:type="dc:Point" x="517" y="595" />
+        <di:waypoint xsi:type="dc:Point" x="421" y="595" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="460" y="574" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h1c24p_di" bpmnElement="SequenceFlow_1h1c24p">
+        <di:waypoint xsi:type="dc:Point" x="623" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="744" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="683.5" y="108" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_11l4g48_di" bpmnElement="deleteNSRelationship">
+        <dc:Bounds x="523" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModule.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModule.bpmn
new file mode 100644
index 0000000..848796c
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModule.bpmn
Binary files differ
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModuleFromVnf.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModuleFromVnf.bpmn
new file mode 100644
index 0000000..b7a1373
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModuleFromVnf.bpmn
Binary files differ
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModuleVolumeV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModuleVolumeV2.bpmn
new file mode 100644
index 0000000..4409f2a
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModuleVolumeV2.bpmn
@@ -0,0 +1,208 @@
+<?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="DoDeleteVfModuleVolumeV2" name="DoDeleteVfModuleVolumeV2" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1" name="Start">
+      <bpmn:outgoing>SequenceFlow_1gvfdp4</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:scriptTask id="Task_06u1lr0" name="Call REST AAI Query Cloud Region" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1vy2ojp</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1dlcqmc</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def delVfModuleVol = new DoDeleteVfModuleVolumeV2()
+delVfModuleVol.executeMethod('callRESTQueryAAICloudRegion', execution, isDebugLogEnabled)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="Task_1woqfjw" name="Call REST AAI Query for Volume Group" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1dlcqmc</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1kjccf1</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteVfMod = new DoDeleteVfModuleVolumeV2()
+deleteVfMod.executeMethod('callRESTQueryAAIForVolumeGroup', execution, isDebugLogEnabled)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="Task_0yjx0p2" name="Prepare VNF Adapter Delete" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1kjccf1</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1tgngf7</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteVfMod = new DoDeleteVfModuleVolumeV2()
+deleteVfMod.executeMethod('prepareVnfAdapterDeleteRequest', execution, isDebugLogEnabled)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="Task_14fsstq" name="Call REST VNF Adapter Delete" calledElement="vnfAdapterRestV1">
+      <bpmn:extensionElements>
+        <camunda:in source="DDVMV_deleteVnfARequest" target="vnfAdapterRestV1Request" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:in variables="all" />
+        <camunda:out source="vnfAdapterRestV1Response" target="DDVMV_deleteVnfAResponse" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="VNFREST_SuccessIndicator" target="VNFREST_SuccessIndicator" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1tgngf7</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1x3luyj</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:scriptTask id="Task_17q1roq" name="Call REST AAI Delete Volume Group" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0cy0y9t</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_13c3cv2</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteVfMod = new DoDeleteVfModuleVolumeV2()
+deleteVfMod.executeMethod('callRESTDeleteAAIVolumeGroup', execution, isDebugLogEnabled)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:endEvent id="EndEvent_0fw1gkf" name="Stop">
+      <bpmn:incoming>SequenceFlow_1sgtwr2</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1dlcqmc" sourceRef="Task_06u1lr0" targetRef="Task_1woqfjw" />
+    <bpmn:sequenceFlow id="SequenceFlow_1kjccf1" sourceRef="Task_1woqfjw" targetRef="Task_0yjx0p2" />
+    <bpmn:sequenceFlow id="SequenceFlow_1tgngf7" sourceRef="Task_0yjx0p2" targetRef="Task_14fsstq" />
+    <bpmn:scriptTask id="Task_1i432ud" name="Pre Process Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1gvfdp4</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1vy2ojp</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteVfMod = new DoDeleteVfModuleVolumeV2()
+deleteVfMod.executeMethod('preProcessRequest', execution, isDebugLogEnabled)
+]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1gvfdp4" sourceRef="StartEvent_1" targetRef="Task_1i432ud" />
+    <bpmn:sequenceFlow id="SequenceFlow_1vy2ojp" sourceRef="Task_1i432ud" targetRef="Task_06u1lr0" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0o3lxtf" name="VNF Adapter REST call success?">
+      <bpmn:incoming>SequenceFlow_1x3luyj</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0cy0y9t</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1rgd8dg</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1x3luyj" sourceRef="Task_14fsstq" targetRef="ExclusiveGateway_0o3lxtf" />
+    <bpmn:sequenceFlow id="SequenceFlow_0cy0y9t" name="Yes" sourceRef="ExclusiveGateway_0o3lxtf" targetRef="Task_17q1roq">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{VNFREST_SuccessIndicator == true}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:endEvent id="EndEvent_00cohim" name="throw MSOException">
+      <bpmn:incoming>SequenceFlow_1rgd8dg</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_0fa7ks7" />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1rgd8dg" sourceRef="ExclusiveGateway_0o3lxtf" targetRef="EndEvent_00cohim" />
+    <bpmn:scriptTask id="Task_018w43g" name="Post Process" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_13c3cv2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1sgtwr2</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def deleteVfMod = new DoDeleteVfModuleVolumeV2()
+deleteVfMod.executeMethod('postProcess', execution, isDebugLogEnabled)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_13c3cv2" sourceRef="Task_17q1roq" targetRef="Task_018w43g" />
+    <bpmn:sequenceFlow id="SequenceFlow_1sgtwr2" sourceRef="Task_018w43g" targetRef="EndEvent_0fw1gkf" />
+  </bpmn:process>
+  <bpmn:error id="Error_0fa7ks7" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteVfModuleVolumeV2">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="173" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="179" y="138" width="23" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1qojxu5_di" bpmnElement="Task_06u1lr0">
+        <dc:Bounds x="407" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1mht6f6_di" bpmnElement="Task_1woqfjw">
+        <dc:Bounds x="564" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_02ujn8y_di" bpmnElement="Task_0yjx0p2">
+        <dc:Bounds x="713" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0bf87en_di" bpmnElement="Task_14fsstq">
+        <dc:Bounds x="865" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_07kmkio_di" bpmnElement="Task_17q1roq">
+        <dc:Bounds x="1151" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0fw1gkf_di" bpmnElement="EndEvent_0fw1gkf">
+        <dc:Bounds x="1463" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1470" y="138" width="22" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dlcqmc_di" bpmnElement="SequenceFlow_1dlcqmc">
+        <di:waypoint xsi:type="dc:Point" x="507" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="564" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="536" y="95" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kjccf1_di" bpmnElement="SequenceFlow_1kjccf1">
+        <di:waypoint xsi:type="dc:Point" x="664" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="713" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="689" y="95" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1tgngf7_di" bpmnElement="SequenceFlow_1tgngf7">
+        <di:waypoint xsi:type="dc:Point" x="813" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="865" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="839" y="95" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0wjwf8w_di" bpmnElement="Task_1i432ud">
+        <dc:Bounds x="247" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1gvfdp4_di" bpmnElement="SequenceFlow_1gvfdp4">
+        <di:waypoint xsi:type="dc:Point" x="209" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="247" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="228" y="95" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vy2ojp_di" bpmnElement="SequenceFlow_1vy2ojp">
+        <di:waypoint xsi:type="dc:Point" x="347" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="407" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="377" y="95" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0o3lxtf_di" bpmnElement="ExclusiveGateway_0o3lxtf" isMarkerVisible="true">
+        <dc:Bounds x="1028" y="95" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1020" y="145" width="66" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1x3luyj_di" bpmnElement="SequenceFlow_1x3luyj">
+        <di:waypoint xsi:type="dc:Point" x="965" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="1028" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="997" y="95" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0cy0y9t_di" bpmnElement="SequenceFlow_0cy0y9t">
+        <di:waypoint xsi:type="dc:Point" x="1078" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="1151" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1106" y="95" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0zln0ww_di" bpmnElement="EndEvent_00cohim">
+        <dc:Bounds x="1035" y="274" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1016" y="310" width="73" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rgd8dg_di" bpmnElement="SequenceFlow_1rgd8dg">
+        <di:waypoint xsi:type="dc:Point" x="1053" y="145" />
+        <di:waypoint xsi:type="dc:Point" x="1053" y="274" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1068" y="199.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1ilduoy_di" bpmnElement="Task_018w43g">
+        <dc:Bounds x="1298" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_13c3cv2_di" bpmnElement="SequenceFlow_13c3cv2">
+        <di:waypoint xsi:type="dc:Point" x="1251" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="1298" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1275" y="95" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sgtwr2_di" bpmnElement="SequenceFlow_1sgtwr2">
+        <di:waypoint xsi:type="dc:Point" x="1398" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="1463" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1431" y="95" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVnf.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVnf.bpmn
new file mode 100644
index 0000000..d9596f0
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVnf.bpmn
@@ -0,0 +1,303 @@
+<?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="_9MhrcHqVEea26OhQB97uCQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoDeleteVnf" name="DoDeleteVnf" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="intialization" />
+    <bpmn2:scriptTask id="intialization" name="Intialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+DoDeleteVnf deleteVnf = new DoDeleteVnf()
+deleteVnf.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="intialization" targetRef="callGetVnf" />
+    <bpmn2:callActivity id="callGetVnf" name="Get&#10;&#10;Generic Vnf" calledElement="GenericGetVnf">
+      <bpmn2:extensionElements>
+        <camunda:out source="GENGV_vnf" target="DoDVNF_genericVnf" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGV_SuccessIndicator" target="GENGV_SuccessIndicator" />
+        <camunda:out source="GENGV_FoundIndicator" target="GENGV_FoundIndicator" />
+        <camunda:in source="DoDVNF_type" target="GENGV_type" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="DoDVNF_vnfId" target="GENGV_vnfId" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="callGetVnf" targetRef="vnfFoundCheck" />
+    <bpmn2:exclusiveGateway id="vnfFoundCheck" name="Vnf Found?" default="notFound">
+      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      <bpmn2:outgoing>vnfFound</bpmn2:outgoing>
+      <bpmn2:outgoing>notFound</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="vnfFound" name="Yes" sourceRef="vnfFoundCheck" targetRef="processResponse">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("GENGV_FoundIndicator") == true && execution.getVariable("GENGV_SuccessIndicator") == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="notFound" name="No" sourceRef="vnfFoundCheck" targetRef="IntermediateThrowEvent_1" />
+    <bpmn2:scriptTask id="processResponse" name="Process Response" scriptFormat="groovy">
+      <bpmn2:incoming>vnfFound</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+DoDeleteVnf deleteVnf = new DoDeleteVnf()
+deleteVnf.processGetVnfResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="processResponse" targetRef="vnfInUseCheck" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1" name="Skip Delete">
+      <bpmn2:incoming>notFound</bpmn2:incoming>
+      <bpmn2:linkEventDefinition id="LinkEventDefinition_1" name="Skip Delete" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:exclusiveGateway id="vnfInUseCheck" name="Vnf In Use?" default="notInUse">
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:outgoing>inUse</bpmn2:outgoing>
+      <bpmn2:outgoing>notInUse</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="inUse" name="Yes" sourceRef="vnfInUseCheck" targetRef="createWorkflowExceptionInUse">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DoDVNF_vnfInUse") == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="notInUse" name="No" sourceRef="vnfInUseCheck" targetRef="deleteVnf" />
+    <bpmn2:scriptTask id="createWorkflowExceptionInUse" name="Create Workflow Exception" scriptFormat="groovy">
+      <bpmn2:incoming>inUse</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Can't Delete Generic Vnf. Generic Vnf is still in use.")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="createWorkflowExceptionInUse" targetRef="EndEvent_1" />
+    <bpmn2:endEvent id="EndEvent_1">
+      <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_93" errorRef="Error_1" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="deleteVnf" targetRef="ExclusiveGateway_2" />
+    <bpmn2:subProcess id="javaErrorHandlingSubProcess" name="Java Exception Handling Sub Process" triggeredByEvent="true">
+      <bpmn2:endEvent id="EndEvent_4">
+        <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:startEvent id="StartEvent_3">
+        <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="_ErrorEventDefinition_95" errorRef="Error_2" />
+      </bpmn2:startEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="StartEvent_3" targetRef="processJavaException" />
+      <bpmn2:scriptTask id="processJavaException" name="Process Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="processJavaException" targetRef="EndEvent_4" />
+    </bpmn2:subProcess>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_2">
+      <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="ExclusiveGateway_2" targetRef="EndEvent_2" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1" name="Skip Delete">
+      <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition id="LinkEventDefinition_2" name="Skip Delete" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="IntermediateCatchEvent_1" targetRef="ExclusiveGateway_2" />
+    <bpmn2:endEvent id="EndEvent_2">
+      <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_36" />
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="deleteVnf" name="&#10;AAI&#10;Delete&#10;(generic vnf)&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>notInUse</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+DoDeleteVnf delete = new DoDeleteVnf()
+delete.deleteVnf(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_2" name="Java Lang Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteVnf">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_79" bpmnElement="StartEvent_1">
+        <dc:Bounds x="215" y="209" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="233" y="250" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_311" bpmnElement="intialization">
+        <dc:Bounds x="322" y="188" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_79" targetElement="_BPMNShape_ScriptTask_311">
+        <di:waypoint xsi:type="dc:Point" x="251" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="322" y="228" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="287" y="212.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_311">
+        <di:waypoint xsi:type="dc:Point" x="422" y="228" />
+        <di:waypoint xsi:type="dc:Point" x="504" y="228" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="463" y="213" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_314" bpmnElement="processResponse">
+        <dc:Bounds x="704" y="291" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_63" bpmnElement="callGetVnf">
+        <dc:Bounds x="504" y="188" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_236" bpmnElement="vnfInUseCheck" isMarkerVisible="true">
+        <dc:Bounds x="840" y="305" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="890" y="335" width="73" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_314" targetElement="_BPMNShape_ExclusiveGateway_236">
+        <di:waypoint xsi:type="dc:Point" x="804" y="331" />
+        <di:waypoint xsi:type="dc:Point" x="840" y="330" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="799" y="325" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_CallActivity_63" targetElement="_BPMNShape_ExclusiveGateway_237">
+        <di:waypoint xsi:type="dc:Point" x="604" y="228" />
+        <di:waypoint xsi:type="dc:Point" x="634" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="630" y="227" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_315" bpmnElement="createWorkflowExceptionInUse">
+        <dc:Bounds x="912" y="196" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="inUse" sourceElement="_BPMNShape_ExclusiveGateway_236" targetElement="_BPMNShape_ScriptTask_315">
+        <di:waypoint xsi:type="dc:Point" x="865" y="305" />
+        <di:waypoint xsi:type="dc:Point" x="865" y="236" />
+        <di:waypoint xsi:type="dc:Point" x="912" y="236" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="867" y="258" width="29" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="notInUse" sourceElement="_BPMNShape_ExclusiveGateway_236" targetElement="ScriptTask_1ps8v06_di">
+        <di:waypoint xsi:type="dc:Point" x="865" y="355" />
+        <di:waypoint xsi:type="dc:Point" x="865" y="424" />
+        <di:waypoint xsi:type="dc:Point" x="912" y="424" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="874" y="384" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_236" bpmnElement="EndEvent_1">
+        <dc:Bounds x="1100" y="218" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1118" y="259" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ScriptTask_315" targetElement="_BPMNShape_EndEvent_236">
+        <di:waypoint xsi:type="dc:Point" x="1012" y="236" />
+        <di:waypoint xsi:type="dc:Point" x="1100" y="236" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1062" y="236" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_237" bpmnElement="vnfFoundCheck" isMarkerVisible="true">
+        <dc:Bounds x="634" y="202" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="672" y="240" width="72" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="vnfFound" sourceElement="_BPMNShape_ExclusiveGateway_237" targetElement="_BPMNShape_ScriptTask_314">
+        <di:waypoint xsi:type="dc:Point" x="659" y="252" />
+        <di:waypoint xsi:type="dc:Point" x="659" y="331" />
+        <di:waypoint xsi:type="dc:Point" x="704" y="331" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="659" y="288" width="29" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_2" bpmnElement="IntermediateThrowEvent_1">
+        <dc:Bounds x="740" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="722" y="143" width="73" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="notFound" sourceElement="_BPMNShape_ExclusiveGateway_237" targetElement="_BPMNShape_IntermediateThrowEvent_2">
+        <di:waypoint xsi:type="dc:Point" x="659" y="202" />
+        <di:waypoint xsi:type="dc:Point" x="659" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="740" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="662" y="144" width="22" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_237" bpmnElement="EndEvent_2">
+        <dc:Bounds x="1174" y="405" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1192" y="446" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_238" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true">
+        <dc:Bounds x="1062" y="398" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1087" y="453" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_9" sourceElement="ScriptTask_1ps8v06_di" targetElement="_BPMNShape_ExclusiveGateway_238">
+        <di:waypoint xsi:type="dc:Point" x="1012" y="424" />
+        <di:waypoint xsi:type="dc:Point" x="1062" y="423" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="992" y="405.5" width="90" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ExclusiveGateway_238">
+        <di:waypoint xsi:type="dc:Point" x="1111" y="422" />
+        <di:waypoint xsi:type="dc:Point" x="1174" y="423" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1143" y="407.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_2" bpmnElement="IntermediateCatchEvent_1">
+        <dc:Bounds x="1069" y="492" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1051" y="533" width="73" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_IntermediateCatchEvent_2" targetElement="_BPMNShape_ExclusiveGateway_238">
+        <di:waypoint xsi:type="dc:Point" x="1087" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="1087" y="448" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1084" y="462" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_35" bpmnElement="javaErrorHandlingSubProcess" isExpanded="true">
+        <dc:Bounds x="379" y="614" width="312" height="157" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_81" bpmnElement="StartEvent_3">
+        <dc:Bounds x="408" y="675" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="426" y="716" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_239" bpmnElement="EndEvent_4">
+        <dc:Bounds x="624" y="675" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="642" y="716" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_319" bpmnElement="processJavaException">
+        <dc:Bounds x="486" y="653" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_StartEvent_81" targetElement="_BPMNShape_ScriptTask_319">
+        <di:waypoint xsi:type="dc:Point" x="444" y="693" />
+        <di:waypoint xsi:type="dc:Point" x="486" y="693" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="465" y="693" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ScriptTask_319" targetElement="_BPMNShape_EndEvent_239">
+        <di:waypoint xsi:type="dc:Point" x="586" y="693" />
+        <di:waypoint xsi:type="dc:Point" x="624" y="693" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="605" y="693" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1ps8v06_di" bpmnElement="deleteVnf">
+        <dc:Bounds x="912" y="384" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVnfAndModules.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVnfAndModules.bpmn
new file mode 100644
index 0000000..4d6d000
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVnfAndModules.bpmn
@@ -0,0 +1,490 @@
+<?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="_9MhrcHqVEea26OhQB97uCQ" 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="DoDeleteVnfAndModules" name="DoDeleteVnfAndModules" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="intialization" />
+    <bpmn2:scriptTask id="intialization" name="Intialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_08nd69s</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+DoDeleteVnfAndModules deleteVnfAndModules = new DoDeleteVnfAndModules()
+deleteVnfAndModules.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:subProcess id="javaErrorHandlingSubProcess" name="Java Exception Handling Sub Process" triggeredByEvent="true">
+      <bpmn2:endEvent id="EndEvent_4">
+        <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:startEvent id="StartEvent_3">
+        <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="_ErrorEventDefinition_95" errorRef="Error_2" />
+      </bpmn2:startEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="StartEvent_3" targetRef="processJavaException" />
+      <bpmn2:scriptTask id="processJavaException" name="Process Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="processJavaException" targetRef="EndEvent_4" />
+    </bpmn2:subProcess>
+    <bpmn2:endEvent id="EndEvent_2">
+      <bpmn2:incoming>SequenceFlow_1uqlr6b</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_36" />
+    </bpmn2:endEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1amun4k" name="Are there VF modules to delete?" default="SequenceFlow_1936oc0">
+      <bpmn2:incoming>SequenceFlow_0t4yszi</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1tt31qu</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1fccvli</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1qrkdn3</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1936oc0</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:callActivity id="DeleteVNF" name="Delete VNF" calledElement="DoDeleteVnf">
+      <bpmn2:extensionElements>
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="vnfId" target="vnfId" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_05ujwz8</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1x25m7t</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1uqlr6b</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_08nd69s" sourceRef="intialization" targetRef="QueryVnf" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1qrkdn3" name="yes" sourceRef="ExclusiveGateway_1amun4k" targetRef="PrepareModuleList">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DDVAM_nextModule") < execution.getVariable("DDVAM_moduleCount")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:callActivity id="DeleteVFModule" name="Delete VF Module" calledElement="DoDeleteVfModule">
+      <bpmn2:extensionElements>
+        <camunda:in source="requestId" target="requestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="DDVAM_vfModuleId" target="vfModuleId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="DDVAM_vfModuleName" target="vfModuleName" />
+        <camunda:in source="DDVAM_vfModuleModelInfo" target="vfModuleModelInfo" />
+        <camunda:in source="cloudConfiguration" target="cloudConfiguration" />
+        <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>
+    </bpmn2:callActivity>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0189gqf" name="Is SDNC Interaction Enabled?" default="SequenceFlow_05ujwz8">
+      <bpmn2:incoming>SequenceFlow_1936oc0</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_05ujwz8</bpmn2:outgoing>
+      <bpmn2:outgoing>SDNCInteractionEnabled2</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1p4ycii" sourceRef="DeleteVFModule" targetRef="PostProcessDeleteVfModule" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0t4yszi" sourceRef="PostProcessDeleteVfModule" targetRef="ExclusiveGateway_1amun4k" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1936oc0" name="no" sourceRef="ExclusiveGateway_1amun4k" targetRef="ExclusiveGateway_0189gqf" />
+    <bpmn2:sequenceFlow id="SequenceFlow_05ujwz8" name="no" sourceRef="ExclusiveGateway_0189gqf" targetRef="DeleteVNF" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1uqlr6b" sourceRef="DeleteVNF" targetRef="EndEvent_2" />
+    <bpmn2:scriptTask id="QueryVnf" name="Query VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_08nd69s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0lu7b1v</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddvam = new DoDeleteVnfAndModules()
+ddvam.queryAAIVfModule(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PrepareModuleList" name="Prepare Next Module To Delete" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1qrkdn3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1qoor0l</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddvam = new DoDeleteVnfAndModules()
+ddvam.prepareNextModuleToDelete(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0lu7b1v" sourceRef="QueryVnf" targetRef="ExclusiveGateway_027lai5" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1qoor0l" sourceRef="PrepareModuleList" targetRef="ExclusiveGateway_0b36mti" />
+    <bpmn2:scriptTask id="PostProcessDeleteVfModule" name="PostProcess Delete VF Module" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1p4ycii</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0xl033m</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0t4yszi</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+int nextModule = execution.getVariable("DDVAM_nextModule")
+			execution.setVariable("DDVAM_nextModule", nextModule + 1)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_027lai5" name="Is SDNC Interaction Enabled?" default="SequenceFlow_1tt31qu">
+      <bpmn2:incoming>SequenceFlow_0lu7b1v</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1tt31qu</bpmn2:outgoing>
+      <bpmn2:outgoing>SDNCInteractionEnabled1</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1tt31qu" name="no" sourceRef="ExclusiveGateway_027lai5" targetRef="ExclusiveGateway_1amun4k" />
+    <bpmn2:sequenceFlow id="SDNCInteractionEnabled1" name="yes" sourceRef="ExclusiveGateway_027lai5" targetRef="preProcessSDNCDeactivateRequest">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DDVAM_sdncVersion" ) != '1702'}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0fhhsyo" sourceRef="preProcessSDNCDeactivateRequest" targetRef="callSDNCAdapterTopologyDeactivate" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0qdn8k4" sourceRef="callSDNCAdapterTopologyDeactivate" targetRef="postProcessSDNCDeactivateRequest" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1fccvli" sourceRef="postProcessSDNCDeactivateRequest" targetRef="ExclusiveGateway_1amun4k" />
+    <bpmn2:scriptTask id="preProcessSDNCDeactivateRequest" name="PreProcess SDNC Deactivate Request" scriptFormat="groovy">
+      <bpmn2:incoming>SDNCInteractionEnabled1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0fhhsyo</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddvam = new DoDeleteVnfAndModules()
+ddvam.preProcessSDNCDeactivateRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="postProcessSDNCDeactivateRequest" name="PostProcess SDNC Deactivate Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0qdn8k4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1fccvli</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddvam = new DoDeleteVnfAndModules()
+String response = execution.getVariable("DDVAM_deactivateSDNCAdapterResponse")
+ddvam.validateSDNCResponse(execution, response, "deactivate")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="callSDNCAdapterTopologyDeactivate" name="Call SDNC Adapter Topology Deactivate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DDVAM_deactivateSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <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="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="DDVAM_deactivateSDNCAdapterResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0fhhsyo</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0qdn8k4</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SDNCInteractionEnabled2" name="yes" sourceRef="ExclusiveGateway_0189gqf" targetRef="preProcessSDNCUnassignRequest">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DDVAM_sdncVersion" ) != '1702'}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_001uxa1" sourceRef="preProcessSDNCUnassignRequest" targetRef="callSDNCAdapterTopologyUnassign" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1x29mht" sourceRef="callSDNCAdapterTopologyUnassign" targetRef="postProcessSDNCUnassignRequest" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1x25m7t" sourceRef="postProcessSDNCUnassignRequest" targetRef="DeleteVNF" />
+    <bpmn2:scriptTask id="preProcessSDNCUnassignRequest" name="PreProcess SDNC Unassign Request" scriptFormat="groovy">
+      <bpmn2:incoming>SDNCInteractionEnabled2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_001uxa1</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddvam = new DoDeleteVnfAndModules()
+ddvam.preProcessSDNCUnassignRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="callSDNCAdapterTopologyUnassign" name="Call SDNC Adapter Topology Unassign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DDVAM_unassignSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <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="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="DDVAM_unassignSDNCAdapterResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_001uxa1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1x29mht</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="postProcessSDNCUnassignRequest" name="PostProcess SDNC Unassign Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1x29mht</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1x25m7t</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddvam = new DoDeleteVnfAndModules()
+String response = execution.getVariable("DDVAM_unassignSDNCAdapterResponse")
+ddvam.validateSDNCResponse(execution, response, "unassign")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0b36mti" name="Is SDNC Interaction Enabled?" default="SequenceFlow_1xujrk5">
+      <bpmn2:incoming>SequenceFlow_1qoor0l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1xujrk5</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1laeenc</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:callActivity id="DoDeleteVfModuleFromVnf" name="Deiete VF Module From VNF" calledElement="DoDeleteVfModuleFromVnf">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" />
+        <camunda:in source="tenantId" target="tenantId" />
+        <camunda:in source="DDVAM_sdncVersion" target="sdncVersion" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="DDVAM_vfModuleId" target="vfModuleId" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1laeenc</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xl033m</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1xujrk5" name="no" sourceRef="ExclusiveGateway_0b36mti" targetRef="DeleteVFModule" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1laeenc" name="yes" sourceRef="ExclusiveGateway_0b36mti" targetRef="DoDeleteVfModuleFromVnf">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DDVAM_sdncVersion" ) != '1702'}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0xl033m" sourceRef="DoDeleteVfModuleFromVnf" targetRef="PostProcessDeleteVfModule" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_2" name="Java Lang Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteVnfAndModules">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_79" bpmnElement="StartEvent_1">
+        <dc:Bounds x="238" y="209" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="256" y="250" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_311" bpmnElement="intialization">
+        <dc:Bounds x="344" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_79" targetElement="_BPMNShape_ScriptTask_311">
+        <di:waypoint xsi:type="dc:Point" x="274" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="344" y="228" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="309" y="212.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_237" bpmnElement="EndEvent_2">
+        <dc:Bounds x="1983" y="372" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2001" y="413" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_35" bpmnElement="javaErrorHandlingSubProcess" isExpanded="true">
+        <dc:Bounds x="229" y="616" width="431" height="157" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_81" bpmnElement="StartEvent_3">
+        <dc:Bounds x="377" y="677" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="395" y="718" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_239" bpmnElement="EndEvent_4">
+        <dc:Bounds x="593" y="677" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="611" y="718" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_319" bpmnElement="processJavaException">
+        <dc:Bounds x="447" y="655" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_StartEvent_81" targetElement="_BPMNShape_ScriptTask_319">
+        <di:waypoint xsi:type="dc:Point" x="413" y="695" />
+        <di:waypoint xsi:type="dc:Point" x="447" y="695" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="430" y="680" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ScriptTask_319" targetElement="_BPMNShape_EndEvent_239">
+        <di:waypoint xsi:type="dc:Point" x="547" y="695" />
+        <di:waypoint xsi:type="dc:Point" x="593" y="695" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="570" y="680" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1amun4k_di" bpmnElement="ExclusiveGateway_1amun4k" isMarkerVisible="true">
+        <dc:Bounds x="1271" y="200" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1263" y="250" width="65" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0laaqvh_di" bpmnElement="DeleteVNF">
+        <dc:Bounds x="1812" y="350" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_08nd69s_di" bpmnElement="SequenceFlow_08nd69s">
+        <di:waypoint xsi:type="dc:Point" x="444" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="512" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="478" y="212" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qrkdn3_di" bpmnElement="SequenceFlow_1qrkdn3">
+        <di:waypoint xsi:type="dc:Point" x="1296" y="200" />
+        <di:waypoint xsi:type="dc:Point" x="1296" y="102" />
+        <di:waypoint xsi:type="dc:Point" x="1368" y="102" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1302" y="154" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0qmp9y5_di" bpmnElement="DeleteVFModule">
+        <dc:Bounds x="1648" y="-9" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0189gqf_di" bpmnElement="ExclusiveGateway_0189gqf" isMarkerVisible="true">
+        <dc:Bounds x="1271" y="365" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1302" y="319" width="54" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1p4ycii_di" bpmnElement="SequenceFlow_1p4ycii">
+        <di:waypoint xsi:type="dc:Point" x="1748" y="31" />
+        <di:waypoint xsi:type="dc:Point" x="1904" y="31" />
+        <di:waypoint xsi:type="dc:Point" x="1904" y="62" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1826" y="16" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0t4yszi_di" bpmnElement="SequenceFlow_0t4yszi">
+        <di:waypoint xsi:type="dc:Point" x="1904" y="142" />
+        <di:waypoint xsi:type="dc:Point" x="1904" y="225" />
+        <di:waypoint xsi:type="dc:Point" x="1321" y="225" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1919" y="183.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1936oc0_di" bpmnElement="SequenceFlow_1936oc0">
+        <di:waypoint xsi:type="dc:Point" x="1296" y="250" />
+        <di:waypoint xsi:type="dc:Point" x="1296" y="365" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1270" y="305.40625" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_05ujwz8_di" bpmnElement="SequenceFlow_05ujwz8">
+        <di:waypoint xsi:type="dc:Point" x="1321" y="390" />
+        <di:waypoint xsi:type="dc:Point" x="1812" y="390" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1361" y="362" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1uqlr6b_di" bpmnElement="SequenceFlow_1uqlr6b">
+        <di:waypoint xsi:type="dc:Point" x="1912" y="390" />
+        <di:waypoint xsi:type="dc:Point" x="1983" y="390" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1948" y="375" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_12xsp2f_di" bpmnElement="QueryVnf">
+        <dc:Bounds x="512" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_01c9qas_di" bpmnElement="PrepareModuleList">
+        <dc:Bounds x="1368" y="62" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0lu7b1v_di" bpmnElement="SequenceFlow_0lu7b1v">
+        <di:waypoint xsi:type="dc:Point" x="612" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="701" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="657" y="212" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qoor0l_di" bpmnElement="SequenceFlow_1qoor0l">
+        <di:waypoint xsi:type="dc:Point" x="1468" y="102" />
+        <di:waypoint xsi:type="dc:Point" x="1525" y="102" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1497" y="87" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_11i0rnd_di" bpmnElement="PostProcessDeleteVfModule">
+        <dc:Bounds x="1854" y="62" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_027lai5_di" bpmnElement="ExclusiveGateway_027lai5" isMarkerVisible="true">
+        <dc:Bounds x="701" y="202" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="699" y="145" width="54" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1tt31qu_di" bpmnElement="SequenceFlow_1tt31qu">
+        <di:waypoint xsi:type="dc:Point" x="751" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1271" y="225" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1005" y="201" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04lnhgt_di" bpmnElement="SDNCInteractionEnabled1">
+        <di:waypoint xsi:type="dc:Point" x="726" y="252" />
+        <di:waypoint xsi:type="dc:Point" x="726" y="337" />
+        <di:waypoint xsi:type="dc:Point" x="776" y="337" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="694" y="280.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0fhhsyo_di" bpmnElement="SequenceFlow_0fhhsyo">
+        <di:waypoint xsi:type="dc:Point" x="876" y="337" />
+        <di:waypoint xsi:type="dc:Point" x="926" y="337" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="901" y="322" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0qdn8k4_di" bpmnElement="SequenceFlow_0qdn8k4">
+        <di:waypoint xsi:type="dc:Point" x="1026" y="337" />
+        <di:waypoint xsi:type="dc:Point" x="1070" y="337" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1048" y="322" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fccvli_di" bpmnElement="SequenceFlow_1fccvli">
+        <di:waypoint xsi:type="dc:Point" x="1170" y="337" />
+        <di:waypoint xsi:type="dc:Point" x="1225" y="337" />
+        <di:waypoint xsi:type="dc:Point" x="1225" y="225" />
+        <di:waypoint xsi:type="dc:Point" x="1271" y="225" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1240" y="281" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1cj4pgd_di" bpmnElement="preProcessSDNCDeactivateRequest">
+        <dc:Bounds x="776" y="297" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1nug5hb_di" bpmnElement="postProcessSDNCDeactivateRequest">
+        <dc:Bounds x="1070" y="297" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0sl24xf_di" bpmnElement="callSDNCAdapterTopologyDeactivate">
+        <dc:Bounds x="926" y="297" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ftrgor_di" bpmnElement="SDNCInteractionEnabled2">
+        <di:waypoint xsi:type="dc:Point" x="1296" y="415" />
+        <di:waypoint xsi:type="dc:Point" x="1296" y="501" />
+        <di:waypoint xsi:type="dc:Point" x="1356" y="501" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1266" y="445.36046511627904" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_001uxa1_di" bpmnElement="SequenceFlow_001uxa1">
+        <di:waypoint xsi:type="dc:Point" x="1456" y="501" />
+        <di:waypoint xsi:type="dc:Point" x="1517" y="501" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1487" y="486" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1x29mht_di" bpmnElement="SequenceFlow_1x29mht">
+        <di:waypoint xsi:type="dc:Point" x="1617" y="501" />
+        <di:waypoint xsi:type="dc:Point" x="1678" y="501" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1648" y="486" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1x25m7t_di" bpmnElement="SequenceFlow_1x25m7t">
+        <di:waypoint xsi:type="dc:Point" x="1778" y="501" />
+        <di:waypoint xsi:type="dc:Point" x="1862" y="501" />
+        <di:waypoint xsi:type="dc:Point" x="1862" y="430" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1820" y="486" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_167oslm_di" bpmnElement="preProcessSDNCUnassignRequest">
+        <dc:Bounds x="1356" y="461" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0cv258c_di" bpmnElement="callSDNCAdapterTopologyUnassign">
+        <dc:Bounds x="1517" y="461" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1gb4lqf_di" bpmnElement="postProcessSDNCUnassignRequest">
+        <dc:Bounds x="1678" y="461" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0b36mti_di" bpmnElement="ExclusiveGateway_0b36mti" isMarkerVisible="true">
+        <dc:Bounds x="1525" y="77" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1581" y="84" width="54" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1y4alqc_di" bpmnElement="DoDeleteVfModuleFromVnf">
+        <dc:Bounds x="1648" y="121" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xujrk5_di" bpmnElement="SequenceFlow_1xujrk5">
+        <di:waypoint xsi:type="dc:Point" x="1550" y="77" />
+        <di:waypoint xsi:type="dc:Point" x="1550" y="31" />
+        <di:waypoint xsi:type="dc:Point" x="1648" y="31" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1524" y="42" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1laeenc_di" bpmnElement="SequenceFlow_1laeenc">
+        <di:waypoint xsi:type="dc:Point" x="1550" y="127" />
+        <di:waypoint xsi:type="dc:Point" x="1550" y="161" />
+        <di:waypoint xsi:type="dc:Point" x="1648" y="161" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1523" y="135" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xl033m_di" bpmnElement="SequenceFlow_0xl033m">
+        <di:waypoint xsi:type="dc:Point" x="1748" y="161" />
+        <di:waypoint xsi:type="dc:Point" x="1828" y="161" />
+        <di:waypoint xsi:type="dc:Point" x="1828" y="102" />
+        <di:waypoint xsi:type="dc:Point" x="1854" y="102" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1843" y="131.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoScaleE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoScaleE2EServiceInstance.bpmn
new file mode 100644
index 0000000..fa8a221
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoScaleE2EServiceInstance.bpmn
@@ -0,0 +1,187 @@
+<?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.10.0">
+  <bpmn:process id="DoScaleE2EServiceInstance" name="DoScaleE2EServiceInstance" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_08ndnk6" name="Start Flow">
+      <bpmn:outgoing>SequenceFlow_1fhno84</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:scriptTask id="ScriptTask_16yrgke" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1fhno84</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_194bhkx</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoScaleE2EServiceInstance()
+ddsi.preProcessRequest(execution)
+]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:endEvent id="EndEvent_1f5ursk">
+      <bpmn:incoming>SequenceFlow_1yee730</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="ScriptTask_0vmzliy" name="Prepare Resource Oper Status" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_194bhkx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0b5p6gy</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoScaleE2EServiceInstance()
+ddsi.preInitResourcesOperStatus(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:serviceTask id="ServiceTask_17d588b" name="Init Resource Oper Status">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_initResOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0b5p6gy</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0nqrq1k</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:callActivity id="CallActivity_1jkl1i3" name="Call Network Service Scale" calledElement="DoScaleVFCServiceInstance">
+      <bpmn:extensionElements>
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="serviceId" target="serviceId" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="resouceTemplateUUID" target="resouceTemplateUUID" />
+        <camunda:in source="resouceInstanceId" target="resouceInstanceId" />
+        <camunda:in source="resourceType" target="resourceType" />
+        <camunda:in source="operationType" target="operationType" />
+        <camunda:in source="nsScaleParams" target="nsScaleParams" />
+        <camunda:in source="bpmnRequest" target="bpmnRequest" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="nodeTemplateUUID" target="nodeTemplateUUID" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="requestDescription" target="requestDescription" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0nqrq1k</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1yee730</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_1fhno84" sourceRef="StartEvent_08ndnk6" targetRef="ScriptTask_16yrgke" />
+    <bpmn:sequenceFlow id="SequenceFlow_194bhkx" sourceRef="ScriptTask_16yrgke" targetRef="ScriptTask_0vmzliy" />
+    <bpmn:sequenceFlow id="SequenceFlow_1yee730" sourceRef="CallActivity_1jkl1i3" targetRef="EndEvent_1f5ursk" />
+    <bpmn:sequenceFlow id="SequenceFlow_0nqrq1k" sourceRef="ServiceTask_17d588b" targetRef="CallActivity_1jkl1i3" />
+    <bpmn:sequenceFlow id="SequenceFlow_0b5p6gy" sourceRef="ScriptTask_0vmzliy" targetRef="ServiceTask_17d588b" />
+    <bpmn:subProcess id="SubProcess_19qmltk" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0581c7y">
+        <bpmn:outgoing>SequenceFlow_0yyws1p</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_0k146bt">
+        <bpmn:incoming>SequenceFlow_0i814ke</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_0l79kxj" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0yyws1p</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0i814ke</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_0yyws1p" name="" sourceRef="StartEvent_0581c7y" targetRef="ScriptTask_0l79kxj" />
+      <bpmn:sequenceFlow id="SequenceFlow_0i814ke" name="" sourceRef="ScriptTask_0l79kxj" targetRef="EndEvent_0k146bt" />
+    </bpmn:subProcess>
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoScaleE2EServiceInstance">
+      <bpmndi:BPMNShape id="StartEvent_08ndnk6_di" bpmnElement="StartEvent_08ndnk6">
+        <dc:Bounds x="96" y="129" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="90" y="170" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_16yrgke_di" bpmnElement="ScriptTask_16yrgke">
+        <dc:Bounds x="189" y="107" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1f5ursk_di" bpmnElement="EndEvent_1f5ursk">
+        <dc:Bounds x="1016" y="279" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="899" y="320" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0vmzliy_di" bpmnElement="ScriptTask_0vmzliy">
+        <dc:Bounds x="436" y="107" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_17d588b_di" bpmnElement="ServiceTask_17d588b">
+        <dc:Bounds x="695" y="107" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1jkl1i3_di" bpmnElement="CallActivity_1jkl1i3">
+        <dc:Bounds x="984" y="107" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fhno84_di" bpmnElement="SequenceFlow_1fhno84">
+        <di:waypoint xsi:type="dc:Point" x="132" y="147" />
+        <di:waypoint xsi:type="dc:Point" x="189" y="147" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="72" y="126" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_194bhkx_di" bpmnElement="SequenceFlow_194bhkx">
+        <di:waypoint xsi:type="dc:Point" x="289" y="147" />
+        <di:waypoint xsi:type="dc:Point" x="436" y="147" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="317.5" y="126" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yee730_di" bpmnElement="SequenceFlow_1yee730">
+        <di:waypoint xsi:type="dc:Point" x="1033" y="187" />
+        <di:waypoint xsi:type="dc:Point" x="1034" y="279" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="988.5" y="212" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0nqrq1k_di" bpmnElement="SequenceFlow_0nqrq1k">
+        <di:waypoint xsi:type="dc:Point" x="795" y="147" />
+        <di:waypoint xsi:type="dc:Point" x="984" y="147" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="844.5" y="126" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0b5p6gy_di" bpmnElement="SequenceFlow_0b5p6gy">
+        <di:waypoint xsi:type="dc:Point" x="536" y="147" />
+        <di:waypoint xsi:type="dc:Point" x="695" y="147" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="570.5" y="126" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_19qmltk_di" bpmnElement="SubProcess_19qmltk" isExpanded="true">
+        <dc:Bounds x="132" y="351" width="467" height="193" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0581c7y_di" bpmnElement="StartEvent_0581c7y">
+        <dc:Bounds x="201" y="419" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="84" y="460" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0k146bt_di" bpmnElement="EndEvent_0k146bt">
+        <dc:Bounds x="494" y="419" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="377" y="460" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0l79kxj_di" bpmnElement="ScriptTask_0l79kxj">
+        <dc:Bounds x="305" y="397" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yyws1p_di" bpmnElement="SequenceFlow_0yyws1p">
+        <di:waypoint xsi:type="dc:Point" x="237" y="437" />
+        <di:waypoint xsi:type="dc:Point" x="305" y="437" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="136" y="422" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0i814ke_di" bpmnElement="SequenceFlow_0i814ke">
+        <di:waypoint xsi:type="dc:Point" x="405" y="437" />
+        <di:waypoint xsi:type="dc:Point" x="494" y="437" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="317" y="422" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoScaleVFCServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoScaleVFCServiceInstance.bpmn
new file mode 100644
index 0000000..f8b1ba5
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoScaleVFCServiceInstance.bpmn
@@ -0,0 +1,89 @@
+<?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.10.0">
+  <bpmn:process id="DoScaleVFCServiceInstance" name="DoScaleVFCServiceInstance" isExecutable="true">
+    <bpmn:startEvent id="scaleNS_StartEvent" name="scaleNS_StartEvent">
+      <bpmn:outgoing>SequenceFlow_00w1ntj</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="PreprocessIncomingRequest" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_00w1ntj</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0izumqq</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoScaleVFCNetworkServiceInstance()
+dcsi.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="Task_0ia872k" name="Scale Network Service" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0izumqq</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0hzy01n</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoScaleVFCNetworkServiceInstance()
+dcsi.scaleNetworkService(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_00w1ntj" sourceRef="scaleNS_StartEvent" targetRef="PreprocessIncomingRequest_task" />
+    <bpmn:sequenceFlow id="SequenceFlow_0izumqq" sourceRef="PreprocessIncomingRequest_task" targetRef="Task_0ia872k" />
+    <bpmn:endEvent id="EndEvent_1r0dxhy">
+      <bpmn:incoming>SequenceFlow_18hdal9</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_18hdal9" sourceRef="finishNSScale_Task" targetRef="EndEvent_1r0dxhy" />
+    <bpmn:scriptTask id="finishNSScale_Task" name="Finish NS Scale" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0hzy01n</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_18hdal9</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoScaleVFCNetworkServiceInstance()
+dcsi.finishNSScale(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0hzy01n" sourceRef="Task_0ia872k" targetRef="finishNSScale_Task" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoScaleVFCServiceInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="scaleNS_StartEvent">
+        <dc:Bounds x="-33" y="182" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-56" y="218" width="83" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0fxwmkv_di" bpmnElement="PreprocessIncomingRequest_task">
+        <dc:Bounds x="117" y="160" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_14ppugf_di" bpmnElement="Task_0ia872k">
+        <dc:Bounds x="739" y="160" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_00w1ntj_di" bpmnElement="SequenceFlow_00w1ntj">
+        <di:waypoint xsi:type="dc:Point" x="3" y="200" />
+        <di:waypoint xsi:type="dc:Point" x="117" y="200" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="15" y="179" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0izumqq_di" bpmnElement="SequenceFlow_0izumqq">
+        <di:waypoint xsi:type="dc:Point" x="217" y="200" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="200" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="433" y="179" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1r0dxhy_di" bpmnElement="EndEvent_1r0dxhy">
+        <dc:Bounds x="771" y="676" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="744" y="716" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_18hdal9_di" bpmnElement="SequenceFlow_18hdal9">
+        <di:waypoint xsi:type="dc:Point" x="789" y="451" />
+        <di:waypoint xsi:type="dc:Point" x="789" y="676" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="759" y="557.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1elwlqc_di" bpmnElement="finishNSScale_Task">
+        <dc:Bounds x="739" y="371" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0hzy01n_di" bpmnElement="SequenceFlow_0hzy01n">
+        <di:waypoint xsi:type="dc:Point" x="789" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="789" y="371" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="759" y="299.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUnderlayVpnOperation.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUnderlayVpnOperation.bpmn
new file mode 100644
index 0000000..ad79d47
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUnderlayVpnOperation.bpmn
@@ -0,0 +1,293 @@
+<?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.6.0">
+  <bpmn:process id="DoUnderlayVpnOperation" name="DoUnderlayVpnOperation" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1">
+      <bpmn:outgoing>SequenceFlow_0trm4dk</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0vvnd7x" name="is response ok?" default="SequenceFlow_083crve">
+      <bpmn:incoming>SequenceFlow_1vncx6p</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1amfirn</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_083crve</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:endEvent id="EndEvent_14p1b2x">
+      <bpmn:incoming>SequenceFlow_10j9lbs</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="EndEvent_0urwhzh">
+      <bpmn:incoming>SequenceFlow_083crve</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0al8gdl</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_1ajtcbe" />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0trm4dk" sourceRef="StartEvent_1" targetRef="Task_0p43ddw" />
+    <bpmn:sequenceFlow id="SequenceFlow_1amfirn" name="ok" sourceRef="ExclusiveGateway_0vvnd7x" targetRef="ServiceTask_1uy6bdu">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("SendSdncResult")=='ok'}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_083crve" name="error" sourceRef="ExclusiveGateway_0vvnd7x" targetRef="EndEvent_0urwhzh" />
+    <bpmn:serviceTask id="Task_0brg0a4" name="call sdnc network operation" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncNetworkTopologyOperationTask">
+      <bpmn:incoming>SequenceFlow_0h35z1p</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_07bp14s</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:serviceTask id="Task_0p43ddw" name="call SdncUnderlayVpnPreprocessTask" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncUnderlayVpnPreprocessTask">
+      <bpmn:incoming>SequenceFlow_0trm4dk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_199ig0b</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0qsgg4i" name="Is create?" default="SequenceFlow_0h35z1p">
+      <bpmn:incoming>SequenceFlow_199ig0b</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1rj6k5t</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0h35z1p</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_199ig0b" sourceRef="Task_0p43ddw" targetRef="ExclusiveGateway_0qsgg4i" />
+    <bpmn:serviceTask id="Task_0rfvkh0" name="call SdncServiceTopologyOperationTask" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncServiceTopologyOperationTask">
+      <bpmn:incoming>SequenceFlow_1rj6k5t</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1vncx6p</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1rj6k5t" name="yes" sourceRef="ExclusiveGateway_0qsgg4i" targetRef="Task_0rfvkh0">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("resourceOperType")=='create'}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0h35z1p" name="no" sourceRef="ExclusiveGateway_0qsgg4i" targetRef="Task_0brg0a4" />
+    <bpmn:sequenceFlow id="SequenceFlow_1vncx6p" sourceRef="Task_0rfvkh0" targetRef="ExclusiveGateway_0vvnd7x" />
+    <bpmn:serviceTask id="ServiceTask_1uy6bdu" name="call sdnc network operation" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncNetworkTopologyOperationTask">
+      <bpmn:incoming>SequenceFlow_1amfirn</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0bsmh51</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0bsmh51" sourceRef="ServiceTask_1uy6bdu" targetRef="ExclusiveGateway_09xxhiu" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_09xxhiu" name="is response ok?" default="SequenceFlow_0al8gdl">
+      <bpmn:incoming>SequenceFlow_0bsmh51</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_10j9lbs</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0al8gdl</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_10j9lbs" name="ok" sourceRef="ExclusiveGateway_09xxhiu" targetRef="EndEvent_14p1b2x">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("SendSdncResult")=='ok'}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1opobct" name="is response ok?" default="SequenceFlow_19glon5">
+      <bpmn:incoming>SequenceFlow_07bp14s</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1oz5grh</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_19glon5</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:serviceTask id="ServiceTask_0dixxe6" name="call SdncServiceTopologyOperationTask" camunda:class="org.onap.so.bpmn.infrastructure.workflow.serviceTask.SdncServiceTopologyOperationTask">
+      <bpmn:incoming>SequenceFlow_1oz5grh</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_06e7qr6</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1x7erbs" name="is response ok?" default="SequenceFlow_1q83qn9">
+      <bpmn:incoming>SequenceFlow_06e7qr6</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0koi1ia</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1q83qn9</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:endEvent id="EndEvent_1tt5u77">
+      <bpmn:incoming>SequenceFlow_0koi1ia</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:endEvent id="EndEvent_0ggbe9w">
+      <bpmn:incoming>SequenceFlow_19glon5</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1q83qn9</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_1ajtcbe" />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0al8gdl" name="error" sourceRef="ExclusiveGateway_09xxhiu" targetRef="EndEvent_0urwhzh" />
+    <bpmn:sequenceFlow id="SequenceFlow_07bp14s" sourceRef="Task_0brg0a4" targetRef="ExclusiveGateway_1opobct" />
+    <bpmn:sequenceFlow id="SequenceFlow_1oz5grh" name="ok" sourceRef="ExclusiveGateway_1opobct" targetRef="ServiceTask_0dixxe6">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("SendSdncResult")=='ok'}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_06e7qr6" sourceRef="ServiceTask_0dixxe6" targetRef="ExclusiveGateway_1x7erbs" />
+    <bpmn:sequenceFlow id="SequenceFlow_0koi1ia" name="ok" sourceRef="ExclusiveGateway_1x7erbs" targetRef="EndEvent_1tt5u77">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("SendSdncResult")=='ok'}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_19glon5" name="error" sourceRef="ExclusiveGateway_1opobct" targetRef="EndEvent_0ggbe9w" />
+    <bpmn:sequenceFlow id="SequenceFlow_1q83qn9" name="error" sourceRef="ExclusiveGateway_1x7erbs" targetRef="EndEvent_0ggbe9w" />
+  </bpmn:process>
+  <bpmn:error id="Error_1ajtcbe" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUnderlayVpnOperation">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="-38" y="193" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-65" y="229" width="90" height="20" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0vvnd7x_di" bpmnElement="ExclusiveGateway_0vvnd7x" isMarkerVisible="true">
+        <dc:Bounds x="593" y="26" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="578" y="80" width="80" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_14p1b2x_di" bpmnElement="EndEvent_14p1b2x">
+        <dc:Bounds x="1058" y="33" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1031" y="73" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0d0rf7s_di" bpmnElement="EndEvent_0urwhzh">
+        <dc:Bounds x="1058" y="-150" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1031" y="-110" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0trm4dk_di" bpmnElement="SequenceFlow_0trm4dk">
+        <di:waypoint xsi:type="dc:Point" x="-2" y="211" />
+        <di:waypoint xsi:type="dc:Point" x="100" y="211" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="4" y="190" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1amfirn_di" bpmnElement="SequenceFlow_1amfirn">
+        <di:waypoint xsi:type="dc:Point" x="643" y="51" />
+        <di:waypoint xsi:type="dc:Point" x="743" y="51" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="686.5" y="30.000000000000014" width="13" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_083crve_di" bpmnElement="SequenceFlow_083crve">
+        <di:waypoint xsi:type="dc:Point" x="618" y="26" />
+        <di:waypoint xsi:type="dc:Point" x="618" y="-132" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="-132" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="628.1578947368421" y="-151.89147286821705" width="26" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_035xqek_di" bpmnElement="Task_0brg0a4">
+        <dc:Bounds x="392" y="379" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0bjsvlv_di" bpmnElement="Task_0p43ddw">
+        <dc:Bounds x="100" y="171" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0qsgg4i_di" bpmnElement="ExclusiveGateway_0qsgg4i" isMarkerVisible="true">
+        <dc:Bounds x="247.99837398373984" y="186" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="250" y="240" width="51" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_199ig0b_di" bpmnElement="SequenceFlow_199ig0b">
+        <di:waypoint xsi:type="dc:Point" x="200" y="211" />
+        <di:waypoint xsi:type="dc:Point" x="248" y="211" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="224" y="190" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_1omqxl9_di" bpmnElement="Task_0rfvkh0">
+        <dc:Bounds x="379" y="11" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rj6k5t_di" bpmnElement="SequenceFlow_1rj6k5t">
+        <di:waypoint xsi:type="dc:Point" x="273" y="186" />
+        <di:waypoint xsi:type="dc:Point" x="273" y="51" />
+        <di:waypoint xsi:type="dc:Point" x="379" y="51" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="279" y="112.5" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0h35z1p_di" bpmnElement="SequenceFlow_0h35z1p">
+        <di:waypoint xsi:type="dc:Point" x="273" y="236" />
+        <di:waypoint xsi:type="dc:Point" x="273" y="419" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="419" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="282" y="322" width="13" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vncx6p_di" bpmnElement="SequenceFlow_1vncx6p">
+        <di:waypoint xsi:type="dc:Point" x="479" y="51" />
+        <di:waypoint xsi:type="dc:Point" x="593" y="51" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="536" y="30" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_1uy6bdu_di" bpmnElement="ServiceTask_1uy6bdu">
+        <dc:Bounds x="743" y="11" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bsmh51_di" bpmnElement="SequenceFlow_0bsmh51">
+        <di:waypoint xsi:type="dc:Point" x="843" y="51" />
+        <di:waypoint xsi:type="dc:Point" x="942" y="51" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="892.5" y="30" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_09xxhiu_di" bpmnElement="ExclusiveGateway_09xxhiu" isMarkerVisible="true">
+        <dc:Bounds x="942" y="26" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="927" y="80" width="80" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_10j9lbs_di" bpmnElement="SequenceFlow_10j9lbs">
+        <di:waypoint xsi:type="dc:Point" x="992" y="51" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="51" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1019" y="30" width="13" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1opobct_di" bpmnElement="ExclusiveGateway_1opobct" isMarkerVisible="true">
+        <dc:Bounds x="580" y="394" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="565" y="448" width="80" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0dixxe6_di" bpmnElement="ServiceTask_0dixxe6">
+        <dc:Bounds x="730" y="379" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1x7erbs_di" bpmnElement="ExclusiveGateway_1x7erbs" isMarkerVisible="true">
+        <dc:Bounds x="951" y="394" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="936" y="448" width="80" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1tt5u77_di" bpmnElement="EndEvent_1tt5u77">
+        <dc:Bounds x="1083" y="401" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1056" y="441" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0ggbe9w_di" bpmnElement="EndEvent_0ggbe9w">
+        <dc:Bounds x="1093" y="585" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1066" y="625" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0al8gdl_di" bpmnElement="SequenceFlow_0al8gdl">
+        <di:waypoint xsi:type="dc:Point" x="967" y="26" />
+        <di:waypoint xsi:type="dc:Point" x="967" y="-132" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="-132" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="969" y="-59" width="26" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_07bp14s_di" bpmnElement="SequenceFlow_07bp14s">
+        <di:waypoint xsi:type="dc:Point" x="492" y="419" />
+        <di:waypoint xsi:type="dc:Point" x="580" y="419" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="536" y="398" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1oz5grh_di" bpmnElement="SequenceFlow_1oz5grh">
+        <di:waypoint xsi:type="dc:Point" x="630" y="419" />
+        <di:waypoint xsi:type="dc:Point" x="730" y="419" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="674" y="398" width="13" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06e7qr6_di" bpmnElement="SequenceFlow_06e7qr6">
+        <di:waypoint xsi:type="dc:Point" x="830" y="419" />
+        <di:waypoint xsi:type="dc:Point" x="951" y="419" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="890.5" y="398" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0koi1ia_di" bpmnElement="SequenceFlow_0koi1ia">
+        <di:waypoint xsi:type="dc:Point" x="1001" y="419" />
+        <di:waypoint xsi:type="dc:Point" x="1083" y="419" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1036" y="398" width="13" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19glon5_di" bpmnElement="SequenceFlow_19glon5">
+        <di:waypoint xsi:type="dc:Point" x="605" y="444" />
+        <di:waypoint xsi:type="dc:Point" x="605" y="603" />
+        <di:waypoint xsi:type="dc:Point" x="1093" y="603" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="608" y="518" width="26" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q83qn9_di" bpmnElement="SequenceFlow_1q83qn9">
+        <di:waypoint xsi:type="dc:Point" x="976" y="444" />
+        <di:waypoint xsi:type="dc:Point" x="976" y="603" />
+        <di:waypoint xsi:type="dc:Point" x="1093" y="603" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="978" y="518" width="26" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateE2EServiceInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateE2EServiceInstance.bpmn
new file mode 100644
index 0000000..a46d8d4
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateE2EServiceInstance.bpmn
@@ -0,0 +1,648 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoUpdateE2EServiceInstance" name="DoUpdateE2EServiceInstance" isExecutable="true">
+    <bpmn2:startEvent id="createSI_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createSI_startEvent" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04xlw7s</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstance()
+dcsi.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="Task_09laxun" name="PreProcess for Add Resources" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_115mdln</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0yztz2p</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoUpdateE2EServiceInstance()
+csi.preProcessForAddResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="Task_0ag30bf" name="PostProcess for Add Resource" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1wwjugw</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_177wo8z</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoUpdateE2EServiceInstance()
+csi.postProcessForAddResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateCatchEvent id="StartEvent_StartResource" name="StartAddResources">
+      <bpmn2:outgoing>SequenceFlow_115mdln</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartAddResources" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_115mdln" sourceRef="StartEvent_StartResource" targetRef="Task_09laxun" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0yztz2p" sourceRef="Task_09laxun" targetRef="ExclusiveGateway_06gj84t" />
+    <bpmn2:scriptTask id="ScriptTask_1xxvnst" name="PreProcess for Delete Resources" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1qn0865</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1s799cp</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoUpdateE2EServiceInstance()
+csi.preProcessForDeleteResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="ScriptTask_00wgfrc" name="PostProcess for Delete Resource" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0w4t4ao</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1uu6uiu</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoUpdateE2EServiceInstance()
+csi.postProcessForDeleteResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0h6d9jb" name="StartDeleteResources">
+      <bpmn2:outgoing>SequenceFlow_1qn0865</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartDeleteResources" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1qn0865" sourceRef="IntermediateCatchEvent_0h6d9jb" targetRef="ScriptTask_1xxvnst" />
+    <bpmn2:scriptTask id="ScriptTask_0acnvkp" name="Prepare Resource Oper Status" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_04xlw7s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0r6c0ci</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoUpdateE2EServiceInstance()
+ddsi.preInitResourcesOperStatus(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:serviceTask id="ServiceTask_17u9q9u" name="Init Resource Oper Status">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_initResOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0r6c0ci</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1muxopq</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0r6c0ci" sourceRef="ScriptTask_0acnvkp" targetRef="ServiceTask_17u9q9u" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1muxopq" sourceRef="ServiceTask_17u9q9u" targetRef="IntermediateThrowEvent_09ur9ds" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0vneaao" name="GoTo StartDeleteResources">
+      <bpmn2:incoming>SequenceFlow_177wo8z</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartDeleteResources" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:callActivity id="CallActivity_1nm9zq7" name="Call Custom E2E Put Service" calledElement="CustomE2EPutService">
+      <bpmn2:extensionElements>
+        <camunda:in source="globalSubscriberId" target="GENPS_globalSubscriberId" />
+        <camunda:in source="serviceInstanceId" target="GENPS_serviceInstanceId" />
+        <camunda:in source="serviceType" target="GENPS_serviceType" />
+        <camunda:in sourceExpression="service-instance" target="GENPS_type" />
+        <camunda:in source="serviceInstanceData" target="GENPS_payload" />
+        <camunda:out source="GENPS_SuccessIndicator" target="GENPS_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="GENPS_requesId" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="GENPS_serviceResourceVersion" target="GENPS_serviceResourceVersion" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1kx5ke9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0f76thv</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_0xtabf8" name="Post Process AAI PUT" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0f76thv</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0x0mhlj</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def ddsi = new DoUpdateE2EServiceInstance()
+ddsi.postProcessAAIPUT(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0a9bdjw" name="UpdateAAI">
+      <bpmn2:outgoing>SequenceFlow_1demy08</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="UpdateAAI" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1demy08" sourceRef="IntermediateCatchEvent_0a9bdjw" targetRef="ScriptTask_195nptq" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0f76thv" sourceRef="CallActivity_1nm9zq7" targetRef="ScriptTask_0xtabf8" />
+    <bpmn2:scriptTask id="ScriptTask_19v8l1w" name="Post Config Service Instance Update" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0ku36oy</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_07aa121</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoUpdateE2EServiceInstance()
+csi.postConfigRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0z04o3s" name="FinishProcess">
+      <bpmn2:outgoing>SequenceFlow_0ku36oy</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="FinishProcess" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:endEvent id="EndEvent_0exzmfn">
+      <bpmn2:incoming>SequenceFlow_07aa121</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_07aa121" sourceRef="ScriptTask_19v8l1w" targetRef="EndEvent_0exzmfn" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ku36oy" sourceRef="IntermediateCatchEvent_0z04o3s" targetRef="ScriptTask_19v8l1w" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_06lo96a" name="GoTo UpdateAAI">
+      <bpmn2:incoming>SequenceFlow_1uu6uiu</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="UpdateAAI" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0hucdtk" name="GoTo FinishProcess">
+      <bpmn2:incoming>SequenceFlow_0x0mhlj</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="FinishProcess" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0x0mhlj" sourceRef="ScriptTask_0xtabf8" targetRef="IntermediateThrowEvent_0hucdtk" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_09ur9ds" name="GoTo StartAddResources">
+      <bpmn2:incoming>SequenceFlow_1muxopq</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartAddResources" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1uu6uiu" sourceRef="ScriptTask_00wgfrc" targetRef="IntermediateThrowEvent_06lo96a" />
+    <bpmn2:subProcess id="SubProcess_0jo0nms" name="Sub-process for Application Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_06768u3">
+        <bpmn2:outgoing>SequenceFlow_05j3sat</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_014jyvb">
+        <bpmn2:incoming>SequenceFlow_02znk15</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_1awrp72" name="Pre Process Exception" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_05j3sat</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_19ly8h7</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstance()
+dcsi.preProcessRollback(execution)
+]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:scriptTask id="ScriptTask_0vc9jgo" name="Post Process Exception" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_19ly8h7</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_02znk15</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstance()
+dcsi.postProcessRollback(execution)
+]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_05j3sat" sourceRef="StartEvent_06768u3" targetRef="ScriptTask_1awrp72" />
+      <bpmn2:sequenceFlow id="SequenceFlow_02znk15" sourceRef="ScriptTask_0vc9jgo" targetRef="EndEvent_014jyvb" />
+      <bpmn2:sequenceFlow id="SequenceFlow_19ly8h7" sourceRef="ScriptTask_1awrp72" targetRef="ScriptTask_0vc9jgo" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="ScriptTask_195nptq" name="Pre Process AAI GET" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1demy08</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1cy5gq2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstance()
+dcsi.preProcessAAIGET(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1cy5gq2" sourceRef="ScriptTask_195nptq" targetRef="CallActivity_069o6fn" />
+    <bpmn2:callActivity id="CallActivity_069o6fn" name="Call AAI Generic GetService" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in source="serviceType" target="GENGS_serviceType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1cy5gq2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1vy856f</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_0lp9y03" name="Post Process AAI GET" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1vy856f</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_14ggluy</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstance()
+dcsi.postProcessAAIGET(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1vy856f" sourceRef="CallActivity_069o6fn" targetRef="ScriptTask_0lp9y03" />
+    <bpmn2:sequenceFlow id="SequenceFlow_14ggluy" sourceRef="ScriptTask_0lp9y03" targetRef="ScriptTask_0sis7k0" />
+    <bpmn2:scriptTask id="ScriptTask_0sis7k0" name="Pre Process AAI PUT" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_14ggluy</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1kx5ke9</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstance()
+dcsi.preProcessAAIPUT(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1kx5ke9" sourceRef="ScriptTask_0sis7k0" targetRef="CallActivity_1nm9zq7" />
+    <bpmn2:sequenceFlow id="SequenceFlow_04xlw7s" sourceRef="preProcessRequest_ScriptTask" targetRef="ScriptTask_0acnvkp" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_06gj84t" name="HasResourcetoAdd?" default="SequenceFlow_01po987">
+      <bpmn2:incoming>SequenceFlow_0yztz2p</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ttlte0</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_01po987</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ttlte0" name="Yes" sourceRef="ExclusiveGateway_06gj84t" targetRef="CallActivity_07pl1uw">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("hasResourcetoAdd") == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0xny7on" name="GoTo StartDeleteResources">
+      <bpmn2:incoming>SequenceFlow_01po987</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartDeleteResources" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_01po987" name="No" sourceRef="ExclusiveGateway_06gj84t" targetRef="IntermediateThrowEvent_0xny7on" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0y1ii4i" name="GoTo UpdateAAI">
+      <bpmn2:incoming>SequenceFlow_070o30v</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="UpdateAAI" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_177wo8z" sourceRef="Task_0ag30bf" targetRef="IntermediateThrowEvent_0vneaao" />
+    <bpmn2:callActivity id="CallActivity_11obqi0" name="Call DoDeleteResources" calledElement="DoDeleteResourcesV1">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="URN_mso_workflow_sdncadapter_callback" target="URN_mso_workflow_sdncadapter_callback" />
+        <camunda:in source="deleteResourceList" target="deleteResourceList" />
+        <camunda:in source="operationType" target="operationType" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="serviceDecomposition_Original" target="serviceDecomposition" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0ur34hv</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0w4t4ao</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0w4t4ao" sourceRef="CallActivity_11obqi0" targetRef="ScriptTask_00wgfrc" />
+    <bpmn2:callActivity id="CallActivity_07pl1uw" name="Call DoCreateResources" calledElement="DoCreateResourcesV3">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceDescription" target="nsServiceDescription" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="operationType" target="operationType" />
+        <camunda:in source="addResourceList" target="addResourceList" />
+        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="serviceDecomposition_Target" target="serviceDecomposition" />
+        <camunda:in source="uuiRequest" target="uuiRequest" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0ttlte0</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1wwjugw</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1wwjugw" sourceRef="CallActivity_07pl1uw" targetRef="Task_0ag30bf" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1fcnq0g" name="HasResourcetoDelete?" default="SequenceFlow_070o30v">
+      <bpmn2:incoming>SequenceFlow_1s799cp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ur34hv</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_070o30v</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1s799cp" sourceRef="ScriptTask_1xxvnst" targetRef="ExclusiveGateway_1fcnq0g" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ur34hv" name="Yes" sourceRef="ExclusiveGateway_1fcnq0g" targetRef="CallActivity_11obqi0">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("hasResourcetoDelete") == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_070o30v" sourceRef="ExclusiveGateway_1fcnq0g" targetRef="IntermediateThrowEvent_0y1ii4i" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUpdateE2EServiceInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSI_startEvent">
+        <dc:Bounds x="74" y="622" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="68" y="663" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="293" y="600" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="110" y="640" />
+        <di:waypoint xsi:type="dc:Point" x="293" y="640" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="156.5" y="625" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1azssf7_di" bpmnElement="Task_09laxun">
+        <dc:Bounds x="293" y="828" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1fj89ew_di" bpmnElement="Task_0ag30bf">
+        <dc:Bounds x="1229" y="828" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0jks7by_di" bpmnElement="StartEvent_StartResource">
+        <dc:Bounds x="74" y="850" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="50" y="895" width="84" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_115mdln_di" bpmnElement="SequenceFlow_115mdln">
+        <di:waypoint xsi:type="dc:Point" x="110" y="868" />
+        <di:waypoint xsi:type="dc:Point" x="293" y="868" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="156.5" y="847" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yztz2p_di" bpmnElement="SequenceFlow_0yztz2p">
+        <di:waypoint xsi:type="dc:Point" x="393" y="868" />
+        <di:waypoint xsi:type="dc:Point" x="590" y="868" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="446.5" y="847" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1xxvnst_di" bpmnElement="ScriptTask_1xxvnst">
+        <dc:Bounds x="293" y="1081" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_00wgfrc_di" bpmnElement="ScriptTask_00wgfrc">
+        <dc:Bounds x="1240" y="1081" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0h6d9jb_di" bpmnElement="IntermediateCatchEvent_0h6d9jb">
+        <dc:Bounds x="74" y="1103" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="50" y="1143" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qn0865_di" bpmnElement="SequenceFlow_1qn0865">
+        <di:waypoint xsi:type="dc:Point" x="110" y="1121" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="1121" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="1121" />
+        <di:waypoint xsi:type="dc:Point" x="293" y="1121" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="172" y="1115" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0acnvkp_di" bpmnElement="ScriptTask_0acnvkp">
+        <dc:Bounds x="589" y="600" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_17u9q9u_di" bpmnElement="ServiceTask_17u9q9u">
+        <dc:Bounds x="872" y="600" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0r6c0ci_di" bpmnElement="SequenceFlow_0r6c0ci">
+        <di:waypoint xsi:type="dc:Point" x="689" y="640" />
+        <di:waypoint xsi:type="dc:Point" x="774" y="640" />
+        <di:waypoint xsi:type="dc:Point" x="774" y="640" />
+        <di:waypoint xsi:type="dc:Point" x="872" y="640" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="744" y="634" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1muxopq_di" bpmnElement="SequenceFlow_1muxopq">
+        <di:waypoint xsi:type="dc:Point" x="972" y="640" />
+        <di:waypoint xsi:type="dc:Point" x="1762" y="640" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1322" y="619" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0vneaao_di" bpmnElement="IntermediateThrowEvent_0vneaao">
+        <dc:Bounds x="1762" y="850" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1738" y="890" width="86" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1nm9zq7_di" bpmnElement="CallActivity_1nm9zq7">
+        <dc:Bounds x="1229" y="1333" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0xtabf8_di" bpmnElement="ScriptTask_0xtabf8">
+        <dc:Bounds x="1473" y="1333" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0a9bdjw_di" bpmnElement="IntermediateCatchEvent_0a9bdjw">
+        <dc:Bounds x="74" y="1355" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="69" y="1391" width="52" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1demy08_di" bpmnElement="SequenceFlow_1demy08">
+        <di:waypoint xsi:type="dc:Point" x="110" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="197" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="197" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="293" y="1373" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="212" y="1367" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0f76thv_di" bpmnElement="SequenceFlow_0f76thv">
+        <di:waypoint xsi:type="dc:Point" x="1329" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="1473" y="1373" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1356" y="1352" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_19v8l1w_di" bpmnElement="ScriptTask_19v8l1w">
+        <dc:Bounds x="858" y="1579" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0z04o3s_di" bpmnElement="IntermediateCatchEvent_0z04o3s">
+        <dc:Bounds x="74" y="1601" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="57" y="1641" width="70" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0exzmfn_di" bpmnElement="EndEvent_0exzmfn">
+        <dc:Bounds x="1772" y="1601" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1700" y="1641" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_07aa121_di" bpmnElement="SequenceFlow_07aa121">
+        <di:waypoint xsi:type="dc:Point" x="958" y="1619" />
+        <di:waypoint xsi:type="dc:Point" x="1772" y="1619" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1320" y="1598" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ku36oy_di" bpmnElement="SequenceFlow_0ku36oy">
+        <di:waypoint xsi:type="dc:Point" x="110" y="1619" />
+        <di:waypoint xsi:type="dc:Point" x="858" y="1619" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="439" y="1598" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_06lo96a_di" bpmnElement="IntermediateThrowEvent_06lo96a">
+        <dc:Bounds x="1762" y="1103" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1750" y="1143" width="82" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0hucdtk_di" bpmnElement="IntermediateThrowEvent_0hucdtk">
+        <dc:Bounds x="1762" y="1355" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1756" y="1395" width="70" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0x0mhlj_di" bpmnElement="SequenceFlow_0x0mhlj">
+        <di:waypoint xsi:type="dc:Point" x="1573" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="1762" y="1373" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1622.5" y="1352" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_09ur9ds_di" bpmnElement="IntermediateThrowEvent_09ur9ds">
+        <dc:Bounds x="1762" y="622" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1738" y="663" width="84" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1uu6uiu_di" bpmnElement="SequenceFlow_1uu6uiu">
+        <di:waypoint xsi:type="dc:Point" x="1340" y="1121" />
+        <di:waypoint xsi:type="dc:Point" x="1762" y="1121" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1506" y="1100" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_0jo0nms_di" bpmnElement="SubProcess_0jo0nms" isExpanded="true">
+        <dc:Bounds x="236" y="1818" width="1428" height="210" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_06768u3_di" bpmnElement="StartEvent_06768u3">
+        <dc:Bounds x="266" y="1895" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="194" y="1936" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_014jyvb_di" bpmnElement="EndEvent_014jyvb">
+        <dc:Bounds x="1581" y="1895" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1509" y="1936" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1awrp72_di" bpmnElement="ScriptTask_1awrp72">
+        <dc:Bounds x="557" y="1873" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0vc9jgo_di" bpmnElement="ScriptTask_0vc9jgo">
+        <dc:Bounds x="1248" y="1873" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_05j3sat_di" bpmnElement="SequenceFlow_05j3sat">
+        <di:waypoint xsi:type="dc:Point" x="302" y="1913" />
+        <di:waypoint xsi:type="dc:Point" x="557" y="1913" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="385" y="1892" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_02znk15_di" bpmnElement="SequenceFlow_02znk15">
+        <di:waypoint xsi:type="dc:Point" x="1348" y="1913" />
+        <di:waypoint xsi:type="dc:Point" x="1581" y="1913" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1376" y="1898" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19ly8h7_di" bpmnElement="SequenceFlow_19ly8h7">
+        <di:waypoint xsi:type="dc:Point" x="657" y="1913" />
+        <di:waypoint xsi:type="dc:Point" x="1248" y="1913" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="907.5" y="1892" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_195nptq_di" bpmnElement="ScriptTask_195nptq">
+        <dc:Bounds x="293" y="1333" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cy5gq2_di" bpmnElement="SequenceFlow_1cy5gq2">
+        <di:waypoint xsi:type="dc:Point" x="393" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="495" y="1373" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="399" y="1352" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_069o6fn_di" bpmnElement="CallActivity_069o6fn">
+        <dc:Bounds x="495" y="1333" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0lp9y03_di" bpmnElement="ScriptTask_0lp9y03">
+        <dc:Bounds x="724" y="1333" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vy856f_di" bpmnElement="SequenceFlow_1vy856f">
+        <di:waypoint xsi:type="dc:Point" x="595" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="724" y="1373" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="614.5" y="1352" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_14ggluy_di" bpmnElement="SequenceFlow_14ggluy">
+        <di:waypoint xsi:type="dc:Point" x="824" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="978" y="1373" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="856" y="1352" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0sis7k0_di" bpmnElement="ScriptTask_0sis7k0">
+        <dc:Bounds x="978" y="1333" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kx5ke9_di" bpmnElement="SequenceFlow_1kx5ke9">
+        <di:waypoint xsi:type="dc:Point" x="1078" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="1229" y="1373" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1108.5" y="1352" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04xlw7s_di" bpmnElement="SequenceFlow_04xlw7s">
+        <di:waypoint xsi:type="dc:Point" x="393" y="640" />
+        <di:waypoint xsi:type="dc:Point" x="589" y="640" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="491" y="619" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_06gj84t_di" bpmnElement="ExclusiveGateway_06gj84t" isMarkerVisible="true">
+        <dc:Bounds x="590" y="843" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="573" y="815" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ttlte0_di" bpmnElement="SequenceFlow_0ttlte0">
+        <di:waypoint xsi:type="dc:Point" x="640" y="868" />
+        <di:waypoint xsi:type="dc:Point" x="756" y="868" />
+        <di:waypoint xsi:type="dc:Point" x="756" y="868" />
+        <di:waypoint xsi:type="dc:Point" x="858" y="868" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="750" y="845" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0xny7on_di" bpmnElement="IntermediateThrowEvent_0xny7on">
+        <dc:Bounds x="597" y="955" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="573" y="995" width="86" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_01po987_di" bpmnElement="SequenceFlow_01po987">
+        <di:waypoint xsi:type="dc:Point" x="615" y="893" />
+        <di:waypoint xsi:type="dc:Point" x="615" y="955" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="623" y="918" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0y1ii4i_di" bpmnElement="IntermediateThrowEvent_0y1ii4i">
+        <dc:Bounds x="597" y="1215" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="585" y="1255" width="82" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_177wo8z_di" bpmnElement="SequenceFlow_177wo8z">
+        <di:waypoint xsi:type="dc:Point" x="1329" y="868" />
+        <di:waypoint xsi:type="dc:Point" x="1762" y="868" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1545.5" y="847" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_11obqi0_di" bpmnElement="CallActivity_11obqi0">
+        <dc:Bounds x="872" y="1081" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0w4t4ao_di" bpmnElement="SequenceFlow_0w4t4ao">
+        <di:waypoint xsi:type="dc:Point" x="972" y="1121" />
+        <di:waypoint xsi:type="dc:Point" x="1240" y="1121" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1106" y="1100" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_07pl1uw_di" bpmnElement="CallActivity_07pl1uw">
+        <dc:Bounds x="858" y="828" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wwjugw_di" bpmnElement="SequenceFlow_1wwjugw">
+        <di:waypoint xsi:type="dc:Point" x="958" y="868" />
+        <di:waypoint xsi:type="dc:Point" x="1101" y="868" />
+        <di:waypoint xsi:type="dc:Point" x="1101" y="868" />
+        <di:waypoint xsi:type="dc:Point" x="1229" y="868" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1116" y="862" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1fcnq0g_di" bpmnElement="ExclusiveGateway_1fcnq0g" isMarkerVisible="true">
+        <dc:Bounds x="589.8479623824451" y="1096.0329153605016" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="572" y="1062" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s799cp_di" bpmnElement="SequenceFlow_1s799cp">
+        <di:waypoint xsi:type="dc:Point" x="393" y="1121" />
+        <di:waypoint xsi:type="dc:Point" x="590" y="1121" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="491.5" y="1100" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ur34hv_di" bpmnElement="SequenceFlow_0ur34hv">
+        <di:waypoint xsi:type="dc:Point" x="640" y="1121" />
+        <di:waypoint xsi:type="dc:Point" x="872" y="1121" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="746.9754098360655" y="1100" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_070o30v_di" bpmnElement="SequenceFlow_070o30v">
+        <di:waypoint xsi:type="dc:Point" x="615" y="1146" />
+        <di:waypoint xsi:type="dc:Point" x="615" y="1182" />
+        <di:waypoint xsi:type="dc:Point" x="615" y="1182" />
+        <di:waypoint xsi:type="dc:Point" x="615" y="1215" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="630" y="1176" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateE2EServiceInstanceRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateE2EServiceInstanceRollback.bpmn
new file mode 100644
index 0000000..1589633
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateE2EServiceInstanceRollback.bpmn
@@ -0,0 +1,799 @@
+<?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.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoUpdateE2EServiceInstanceRollback" name="DoUpdateE2EServiceInstanceRollback" isExecutable="true">
+    <bpmn2:startEvent id="createSIRollback_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createSIRollback_startEvent" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def rbk = new DoCreateE2EServiceInstanceRollback()
+rbk.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_01l4ssl</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1">
+        <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1">
+        <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" />
+      <bpmn2:scriptTask id="ScriptTask_1" name="Handle Errors" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def rbk= new DoCreateE2EServiceInstanceRollback()
+rbk.processRollbackException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" />
+    </bpmn2:subProcess>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="ExclusiveGateway_19tbjgn" />
+    <bpmn2:scriptTask id="PostProcess_ScriptTask" name="Post Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1rzlaoy</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0a83f6m</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_01l4ssl</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def rbk = new DoCreateE2EServiceInstanceRollback()
+rbk.postProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_01l4ssl" sourceRef="PostProcess_ScriptTask" targetRef="EndEvent_3" />
+    <bpmn2:subProcess id="SubProcess_11bi8mc" name="Java Exception Handling Sub Process" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1gxe17c">
+        <bpmn2:outgoing>SequenceFlow_1ch4xrf</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:scriptTask id="ScriptTask_15yddb0" name="Process Java Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1ch4xrf</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1pjk2ff</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def rbk= new DoCreateE2EServiceInstanceRollback()
+rbk.processRollbackJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:endEvent id="EndEvent_12e3h6k">
+        <bpmn2:incoming>SequenceFlow_1pjk2ff</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition />
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_1ch4xrf" name="" sourceRef="StartEvent_1gxe17c" targetRef="ScriptTask_15yddb0" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1pjk2ff" name="" sourceRef="ScriptTask_15yddb0" targetRef="EndEvent_12e3h6k" />
+    </bpmn2:subProcess>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_19tbjgn" name="skip Rollback" default="SequenceFlow_06aasqh">
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1rzlaoy</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_06aasqh</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1rzlaoy" name="yes" sourceRef="ExclusiveGateway_19tbjgn" targetRef="PostProcess_ScriptTask">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" )  == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0ii31dq" name="RollBack Deleted Resources?" default="SequenceFlow_055b52t">
+      <bpmn2:documentation>rollback Deleted Resources</bpmn2:documentation>
+      <bpmn2:incoming>SequenceFlow_1uw2p9a</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0drjj7b</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_055b52t</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_09wkav2" name="Rollback Added Resources?" default="SequenceFlow_1uw2p9a">
+      <bpmn2:incoming>SequenceFlow_06aasqh</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1uw2p9a</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_11fnnkb</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1uw2p9a" name="no" sourceRef="ExclusiveGateway_09wkav2" targetRef="ExclusiveGateway_0ii31dq" />
+    <bpmn2:sequenceFlow id="SequenceFlow_11fnnkb" name="yes" sourceRef="ExclusiveGateway_09wkav2" targetRef="IntermediateThrowEvent_11l0okn">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("RollbackAdded" )  == "true" )}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_06aasqh" name="no" sourceRef="ExclusiveGateway_19tbjgn" targetRef="ExclusiveGateway_09wkav2" />
+    <bpmn2:callActivity id="CallActivity_05jnyuq" name="Call DoDeleteResources" calledElement="DoDeleteResources">
+      <bpmn2:extensionElements>
+        <camunda:in source="nsServiceName" target="nsServiceName" />
+        <camunda:in source="nsServiceDescription" target="nsServiceDescription" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="serviceId" target="serviceId" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="resourceType" target="resourceType" />
+        <camunda:in source="resourceUUID" target="resourceUUID" />
+        <camunda:in source="resourceParameters" target="resourceParameters" />
+        <camunda:in source="operationType" target="operationType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1fih4h0</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0pwixhh</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0pwixhh" sourceRef="CallActivity_05jnyuq" targetRef="ScriptTask_0ngehrz" />
+    <bpmn2:scriptTask id="ScriptTask_1i1ova8" name="PreProcess for Add Resources" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_06xv7b2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0b73i9r</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoUpdateE2EServiceInstanceRollback()
+csi.preProcessForAddResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="ScriptTask_0ngehrz" name="PostProcess for Add Resource" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0pwixhh</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_08p4pkv</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoUpdateE2EServiceInstanceRollback()
+csi.postProcessForAddResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="ScriptTask_01beerv" name="PreProcess for Delete Resources" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1g4qm2l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1fih4h0</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoUpdateE2EServiceInstanceRollback()
+csi.preProcessForDeleteResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_0l7jjb1" name="Call DoCreateResources" calledElement="DoCreateResources">
+      <bpmn2:extensionElements>
+        <camunda:in source="nsServiceName" target="nsServiceName" />
+        <camunda:in source="nsServiceDescription" target="nsServiceDescription" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="serviceId" target="serviceId" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="resourceType" target="resourceType" />
+        <camunda:in source="resourceUUID" target="resourceUUID" />
+        <camunda:in source="resourceParameters" target="resourceParameters" />
+        <camunda:in source="operationType" target="operationType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0b73i9r</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0q9ws1s</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_1afo620" name="PostProcess for Add Resource" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0q9ws1s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1bp5oce</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoUpdateE2EServiceInstanceRollback()
+csi.postProcessForAddResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0ybxh3b" name="RollBackAAI?" default="SequenceFlow_0a83f6m">
+      <bpmn2:documentation>rollback AAI</bpmn2:documentation>
+      <bpmn2:incoming>SequenceFlow_055b52t</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0a83f6m</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0zijz16</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0drjj7b" name="yes" sourceRef="ExclusiveGateway_0ii31dq" targetRef="IntermediateThrowEvent_14ed07u">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("RollbackDeleted" )  == "true" )}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_05uesi2" name="StartAddResources">
+      <bpmn2:outgoing>SequenceFlow_06xv7b2</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartAddResource" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1qn9srt" name="StartDeleteResources">
+      <bpmn2:outgoing>SequenceFlow_1g4qm2l</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartDeleteResources" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_11l0okn" name="GoTo StartDeleteResources">
+      <bpmn2:incoming>SequenceFlow_11fnnkb</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartDeleteResources" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_14ed07u" name="GoTo StartAddResources">
+      <bpmn2:incoming>SequenceFlow_0drjj7b</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartAddResource" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0a83f6m" name="no" sourceRef="ExclusiveGateway_0ybxh3b" targetRef="PostProcess_ScriptTask" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1fih4h0" sourceRef="ScriptTask_01beerv" targetRef="CallActivity_05jnyuq" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1g4qm2l" sourceRef="IntermediateCatchEvent_1qn9srt" targetRef="ScriptTask_01beerv" />
+    <bpmn2:sequenceFlow id="SequenceFlow_06xv7b2" sourceRef="IntermediateCatchEvent_05uesi2" targetRef="ScriptTask_1i1ova8" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0b73i9r" sourceRef="ScriptTask_1i1ova8" targetRef="CallActivity_0l7jjb1" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0q9ws1s" sourceRef="CallActivity_0l7jjb1" targetRef="ScriptTask_1afo620" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0546q5i" name="UpdateAAI">
+      <bpmn2:outgoing>SequenceFlow_1a65s3k</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="UpdateAAI" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:scriptTask id="ScriptTask_0gj4dj5" name="Pre Process AAI PUT" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1ixphei</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lppnhy</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstanceRollback()
+dcsi.preProcessAAIPUT(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_0zs5y0x" name="Call Custom E2E Put Service" calledElement="CustomE2EPutService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in source="serviceType" target="GENGS_serviceType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1lppnhy</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0kbisn8</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_1p96syr" name="Post Process AAI PUT" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0kbisn8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1azhgda</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstanceRollback()
+dcsi.postProcessAAIPUT(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1a65s3k" sourceRef="IntermediateCatchEvent_0546q5i" targetRef="ScriptTask_13h2onn" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1lppnhy" sourceRef="ScriptTask_0gj4dj5" targetRef="CallActivity_0zs5y0x" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0kbisn8" sourceRef="CallActivity_0zs5y0x" targetRef="ScriptTask_1p96syr" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1k16vgh" name="RollBackAAI?" default="SequenceFlow_161uzhj">
+      <bpmn2:documentation>rollback AAI</bpmn2:documentation>
+      <bpmn2:incoming>SequenceFlow_08p4pkv</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0cbnwwi</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_161uzhj</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_08p4pkv" sourceRef="ScriptTask_0ngehrz" targetRef="ExclusiveGateway_1k16vgh" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0x32fw8" name="GoTo UpdateAAI">
+      <bpmn2:incoming>SequenceFlow_0cbnwwi</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="UpdateAAI" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0cbnwwi" name="yes" sourceRef="ExclusiveGateway_1k16vgh" targetRef="IntermediateThrowEvent_0x32fw8">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("RollbackAAI" )  == "true" )}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:scriptTask id="ScriptTask_1c3q8hc" name="Post Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_161uzhj</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13r4lij</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def rbk = new DoCreateE2EServiceInstanceRollback()
+rbk.postProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_161uzhj" sourceRef="ExclusiveGateway_1k16vgh" targetRef="ScriptTask_1c3q8hc" />
+    <bpmn2:endEvent id="EndEvent_0knjkkx">
+      <bpmn2:incoming>SequenceFlow_13r4lij</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_13r4lij" sourceRef="ScriptTask_1c3q8hc" targetRef="EndEvent_0knjkkx" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0g7wcmb" name="RollBackAAI?" default="SequenceFlow_1isdxh1">
+      <bpmn2:documentation>rollback AAI</bpmn2:documentation>
+      <bpmn2:incoming>SequenceFlow_1bp5oce</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0bkvqao</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1isdxh1</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0q76lxg" name="GoTo UpdateAAI">
+      <bpmn2:incoming>SequenceFlow_0bkvqao</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="UpdateAAI" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:scriptTask id="ScriptTask_1y4us3g" name="Post Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1isdxh1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0a9xori</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def rbk = new DoCreateE2EServiceInstanceRollback()
+rbk.postProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_0yzh2qs">
+      <bpmn2:incoming>SequenceFlow_0a9xori</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0bkvqao" name="yes" sourceRef="ExclusiveGateway_0g7wcmb" targetRef="IntermediateThrowEvent_0q76lxg">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("RollbackAAI" )  == "true" )}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1isdxh1" sourceRef="ExclusiveGateway_0g7wcmb" targetRef="ScriptTask_1y4us3g" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0a9xori" sourceRef="ScriptTask_1y4us3g" targetRef="EndEvent_0yzh2qs" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1et42wh" name="GoTo UpdateAAI">
+      <bpmn2:incoming>SequenceFlow_0zijz16</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="UpdateAAI" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0zijz16" name="yes" sourceRef="ExclusiveGateway_0ybxh3b" targetRef="IntermediateThrowEvent_1et42wh">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("RollbackAAI" )  == "true" )}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1bp5oce" sourceRef="ScriptTask_1afo620" targetRef="ExclusiveGateway_0g7wcmb" />
+    <bpmn2:scriptTask id="ScriptTask_17k4l6y" name="Post Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1azhgda</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1n6foyw</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def rbk = new DoCreateE2EServiceInstanceRollback()
+rbk.postProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_193e9tt">
+      <bpmn2:incoming>SequenceFlow_1n6foyw</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1n6foyw" sourceRef="ScriptTask_17k4l6y" targetRef="EndEvent_193e9tt" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1azhgda" sourceRef="ScriptTask_1p96syr" targetRef="ScriptTask_17k4l6y" />
+    <bpmn2:sequenceFlow id="SequenceFlow_055b52t" name="no" sourceRef="ExclusiveGateway_0ii31dq" targetRef="ExclusiveGateway_0ybxh3b" />
+    <bpmn2:scriptTask id="ScriptTask_13h2onn" name="Pre Process AAI GET" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1a65s3k</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0870pzc</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstanceRollback()
+dcsi.preProcessAAIGET(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_1527zgc" name="Call AAI Generic GetService" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in source="serviceType" target="GENGS_serviceType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0870pzc</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1f31l5s</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0870pzc" sourceRef="ScriptTask_13h2onn" targetRef="CallActivity_1527zgc" />
+    <bpmn2:scriptTask id="ScriptTask_0td1f55" name="Post Process AAI GET" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1f31l5s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ixphei</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstanceRollback()
+dcsi.postProcessAAIGET(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1f31l5s" sourceRef="CallActivity_1527zgc" targetRef="ScriptTask_0td1f55" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1ixphei" sourceRef="ScriptTask_0td1f55" targetRef="ScriptTask_0gj4dj5" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUpdateE2EServiceInstanceRollback">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSIRollback_startEvent">
+        <dc:Bounds x="151" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="146" y="120" width="48" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="234" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="187" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="234" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="211" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3">
+        <dc:Bounds x="636" y="-160" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="609" y="-119" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true">
+        <dc:Bounds x="122" y="981" width="466" height="156" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1">
+        <dc:Bounds x="190" y="1047" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="163" y="1088" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1">
+        <dc:Bounds x="483" y="1047" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="456" y="1088" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269">
+        <di:waypoint xsi:type="dc:Point" x="226" y="1065" />
+        <di:waypoint xsi:type="dc:Point" x="294" y="1065" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="216" y="1050" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="334" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="391" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="342.5" y="82" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="294" y="1025" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219">
+        <di:waypoint xsi:type="dc:Point" x="394" y="1065" />
+        <di:waypoint xsi:type="dc:Point" x="483" y="1065" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="394" y="1050" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1wk55es_di" bpmnElement="PostProcess_ScriptTask">
+        <dc:Bounds x="604" y="-62" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_01l4ssl_di" bpmnElement="SequenceFlow_01l4ssl">
+        <di:waypoint xsi:type="dc:Point" x="654" y="-62" />
+        <di:waypoint xsi:type="dc:Point" x="654" y="-89" />
+        <di:waypoint xsi:type="dc:Point" x="654" y="-89" />
+        <di:waypoint xsi:type="dc:Point" x="654" y="-124" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="624" y="-89" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_11bi8mc_di" bpmnElement="SubProcess_11bi8mc" isExpanded="true">
+        <dc:Bounds x="612" y="982" width="463" height="152" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1gxe17c_di" bpmnElement="StartEvent_1gxe17c">
+        <dc:Bounds x="647" y="1034" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="620" y="1075" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_15yddb0_di" bpmnElement="ScriptTask_15yddb0">
+        <dc:Bounds x="755" y="1012" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_12e3h6k_di" bpmnElement="EndEvent_12e3h6k">
+        <dc:Bounds x="905" y="1034" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="878" y="1075" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ch4xrf_di" bpmnElement="SequenceFlow_1ch4xrf">
+        <di:waypoint xsi:type="dc:Point" x="683" y="1052" />
+        <di:waypoint xsi:type="dc:Point" x="755" y="1052" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="663" y="1052" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1pjk2ff_di" bpmnElement="SequenceFlow_1pjk2ff">
+        <di:waypoint xsi:type="dc:Point" x="855" y="1052" />
+        <di:waypoint xsi:type="dc:Point" x="905" y="1052" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="835" y="1052" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_19tbjgn_di" bpmnElement="ExclusiveGateway_19tbjgn" isMarkerVisible="true">
+        <dc:Bounds x="391" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="383" y="54" width="65" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rzlaoy_di" bpmnElement="SequenceFlow_1rzlaoy">
+        <di:waypoint xsi:type="dc:Point" x="416" y="72" />
+        <di:waypoint xsi:type="dc:Point" x="416" y="-22" />
+        <di:waypoint xsi:type="dc:Point" x="604" y="-22" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="463.0056179775281" y="-39" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0ii31dq_di" bpmnElement="ExclusiveGateway_0ii31dq" isMarkerVisible="true">
+        <dc:Bounds x="687" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="668" y="39" width="87" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_09wkav2_di" bpmnElement="ExclusiveGateway_09wkav2" isMarkerVisible="true">
+        <dc:Bounds x="520" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="507" y="38" width="76" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1uw2p9a_di" bpmnElement="SequenceFlow_1uw2p9a">
+        <di:waypoint xsi:type="dc:Point" x="570" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="687" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="592.125" y="107.5" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11fnnkb_di" bpmnElement="SequenceFlow_11fnnkb">
+        <di:waypoint xsi:type="dc:Point" x="545" y="122" />
+        <di:waypoint xsi:type="dc:Point" x="545" y="218" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="510" y="135.20000000000002" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06aasqh_di" bpmnElement="SequenceFlow_06aasqh">
+        <di:waypoint xsi:type="dc:Point" x="441" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="520" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="460.5" y="104" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_05jnyuq_di" bpmnElement="CallActivity_05jnyuq">
+        <dc:Bounds x="417" y="345" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0pwixhh_di" bpmnElement="SequenceFlow_0pwixhh">
+        <di:waypoint xsi:type="dc:Point" x="517" y="385" />
+        <di:waypoint xsi:type="dc:Point" x="594" y="385" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="511" y="364" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1i1ova8_di" bpmnElement="ScriptTask_1i1ova8">
+        <dc:Bounds x="230" y="533" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ngehrz_di" bpmnElement="ScriptTask_0ngehrz">
+        <dc:Bounds x="594" y="345" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_01beerv_di" bpmnElement="ScriptTask_01beerv">
+        <dc:Bounds x="230" y="345" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0l7jjb1_di" bpmnElement="CallActivity_0l7jjb1">
+        <dc:Bounds x="417" y="533" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1afo620_di" bpmnElement="ScriptTask_1afo620">
+        <dc:Bounds x="594" y="533" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0ybxh3b_di" bpmnElement="ExclusiveGateway_0ybxh3b" isMarkerVisible="true">
+        <dc:Bounds x="864" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="894" y="44" width="70" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0drjj7b_di" bpmnElement="SequenceFlow_0drjj7b">
+        <di:waypoint xsi:type="dc:Point" x="712" y="122" />
+        <di:waypoint xsi:type="dc:Point" x="712" y="218" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="687" y="141.6" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_05uesi2_di" bpmnElement="IntermediateCatchEvent_05uesi2">
+        <dc:Bounds x="159" y="555" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="135" y="600" width="84" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1qn9srt_di" bpmnElement="IntermediateCatchEvent_1qn9srt">
+        <dc:Bounds x="159" y="367" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="135" y="407" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_11l0okn_di" bpmnElement="IntermediateThrowEvent_11l0okn">
+        <dc:Bounds x="527" y="218" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="502" y="257" width="86" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_14ed07u_di" bpmnElement="IntermediateThrowEvent_14ed07u">
+        <dc:Bounds x="694" y="218" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="670" y="262" width="84" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0a83f6m_di" bpmnElement="SequenceFlow_0a83f6m">
+        <di:waypoint xsi:type="dc:Point" x="889" y="72" />
+        <di:waypoint xsi:type="dc:Point" x="889" y="-22" />
+        <di:waypoint xsi:type="dc:Point" x="704" y="-22" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="837" y="19" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fih4h0_di" bpmnElement="SequenceFlow_1fih4h0">
+        <di:waypoint xsi:type="dc:Point" x="330" y="385" />
+        <di:waypoint xsi:type="dc:Point" x="417" y="385" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="329" y="364" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1g4qm2l_di" bpmnElement="SequenceFlow_1g4qm2l">
+        <di:waypoint xsi:type="dc:Point" x="195" y="385" />
+        <di:waypoint xsi:type="dc:Point" x="230" y="385" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="168" y="364" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06xv7b2_di" bpmnElement="SequenceFlow_06xv7b2">
+        <di:waypoint xsi:type="dc:Point" x="195" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="230" y="573" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="168" y="552" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0b73i9r_di" bpmnElement="SequenceFlow_0b73i9r">
+        <di:waypoint xsi:type="dc:Point" x="330" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="363" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="363" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="417" y="573" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="333" y="567" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0q9ws1s_di" bpmnElement="SequenceFlow_0q9ws1s">
+        <di:waypoint xsi:type="dc:Point" x="517" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="545" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="545" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="594" y="573" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="515" y="567" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0546q5i_di" bpmnElement="IntermediateCatchEvent_0546q5i">
+        <dc:Bounds x="156" y="765" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="151" y="801" width="52" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0gj4dj5_di" bpmnElement="ScriptTask_0gj4dj5">
+        <dc:Bounds x="687" y="743" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0zs5y0x_di" bpmnElement="CallActivity_0zs5y0x">
+        <dc:Bounds x="841" y="743" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1p96syr_di" bpmnElement="ScriptTask_1p96syr">
+        <dc:Bounds x="1014" y="743" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1a65s3k_di" bpmnElement="SequenceFlow_1a65s3k">
+        <di:waypoint xsi:type="dc:Point" x="192" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="234" y="783" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="168" y="762" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lppnhy_di" bpmnElement="SequenceFlow_1lppnhy">
+        <di:waypoint xsi:type="dc:Point" x="787" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="841" y="783" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="769" y="762" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0kbisn8_di" bpmnElement="SequenceFlow_0kbisn8">
+        <di:waypoint xsi:type="dc:Point" x="941" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="978" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="978" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="1014" y="783" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="948" y="777" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1k16vgh_di" bpmnElement="ExclusiveGateway_1k16vgh" isMarkerVisible="true">
+        <dc:Bounds x="778" y="360" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="719" y="358" width="70" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_08p4pkv_di" bpmnElement="SequenceFlow_08p4pkv">
+        <di:waypoint xsi:type="dc:Point" x="694" y="385" />
+        <di:waypoint xsi:type="dc:Point" x="778" y="385" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="691" y="364" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0x32fw8_di" bpmnElement="IntermediateThrowEvent_0x32fw8">
+        <dc:Bounds x="785" y="454" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="762" y="495" width="82" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0cbnwwi_di" bpmnElement="SequenceFlow_0cbnwwi">
+        <di:waypoint xsi:type="dc:Point" x="803" y="410" />
+        <di:waypoint xsi:type="dc:Point" x="803" y="454" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="808" y="426" width="20" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1c3q8hc_di" bpmnElement="ScriptTask_1c3q8hc">
+        <dc:Bounds x="879" y="345" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_161uzhj_di" bpmnElement="SequenceFlow_161uzhj">
+        <di:waypoint xsi:type="dc:Point" x="828" y="385" />
+        <di:waypoint xsi:type="dc:Point" x="879" y="385" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="809" y="364" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0knjkkx_di" bpmnElement="EndEvent_0knjkkx">
+        <dc:Bounds x="1040" y="367" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1013" y="407" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_13r4lij_di" bpmnElement="SequenceFlow_13r4lij">
+        <di:waypoint xsi:type="dc:Point" x="979" y="385" />
+        <di:waypoint xsi:type="dc:Point" x="1040" y="385" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="965" y="364" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0g7wcmb_di" bpmnElement="ExclusiveGateway_0g7wcmb" isMarkerVisible="true">
+        <dc:Bounds x="778" y="548" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="719" y="546" width="70" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0q76lxg_di" bpmnElement="IntermediateThrowEvent_0q76lxg">
+        <dc:Bounds x="785" y="647" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="762" y="693" width="82" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1y4us3g_di" bpmnElement="ScriptTask_1y4us3g">
+        <dc:Bounds x="879" y="533" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0yzh2qs_di" bpmnElement="EndEvent_0yzh2qs">
+        <dc:Bounds x="1040" y="555" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1013" y="595" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bkvqao_di" bpmnElement="SequenceFlow_0bkvqao">
+        <di:waypoint xsi:type="dc:Point" x="803" y="598" />
+        <di:waypoint xsi:type="dc:Point" x="803" y="647" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="808" y="617" width="20" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1isdxh1_di" bpmnElement="SequenceFlow_1isdxh1">
+        <di:waypoint xsi:type="dc:Point" x="828" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="879" y="573" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="809" y="552" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0a9xori_di" bpmnElement="SequenceFlow_0a9xori">
+        <di:waypoint xsi:type="dc:Point" x="979" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="1040" y="573" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="965" y="552" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1et42wh_di" bpmnElement="IntermediateThrowEvent_1et42wh">
+        <dc:Bounds x="873" y="218" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="852" y="269" width="82" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zijz16_di" bpmnElement="SequenceFlow_0zijz16">
+        <di:waypoint xsi:type="dc:Point" x="889" y="122" />
+        <di:waypoint xsi:type="dc:Point" x="891" y="218" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="861.4067820523877" y="137.3057489950117" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bp5oce_di" bpmnElement="SequenceFlow_1bp5oce">
+        <di:waypoint xsi:type="dc:Point" x="694" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="778" y="573" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="691" y="552" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_17k4l6y_di" bpmnElement="ScriptTask_17k4l6y">
+        <dc:Bounds x="1171" y="743" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_193e9tt_di" bpmnElement="EndEvent_193e9tt">
+        <dc:Bounds x="1327" y="765" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1300" y="805" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1n6foyw_di" bpmnElement="SequenceFlow_1n6foyw">
+        <di:waypoint xsi:type="dc:Point" x="1271" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="1327" y="783" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1254" y="762" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1azhgda_di" bpmnElement="SequenceFlow_1azhgda">
+        <di:waypoint xsi:type="dc:Point" x="1114" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="1171" y="783" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1097.5" y="762" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_055b52t_di" bpmnElement="SequenceFlow_055b52t">
+        <di:waypoint xsi:type="dc:Point" x="737" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="864" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="769" y="106" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_13h2onn_di" bpmnElement="ScriptTask_13h2onn">
+        <dc:Bounds x="234" y="743" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1527zgc_di" bpmnElement="CallActivity_1527zgc">
+        <dc:Bounds x="391" y="743" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0870pzc_di" bpmnElement="SequenceFlow_0870pzc">
+        <di:waypoint xsi:type="dc:Point" x="334" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="391" y="783" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="362.5" y="762" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0td1f55_di" bpmnElement="ScriptTask_0td1f55">
+        <dc:Bounds x="543" y="743" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1f31l5s_di" bpmnElement="SequenceFlow_1f31l5s">
+        <di:waypoint xsi:type="dc:Point" x="491" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="543" y="783" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="517" y="762" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ixphei_di" bpmnElement="SequenceFlow_1ixphei">
+        <di:waypoint xsi:type="dc:Point" x="643" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="687" y="783" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="665" y="762" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateNetworkInstance.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateNetworkInstance.bpmn
new file mode 100644
index 0000000..306b05c
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateNetworkInstance.bpmn
@@ -0,0 +1,829 @@
+<?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="DoUpdateNetworkInstance" name="DoUpdateNetworkInstance" isExecutable="true">
+    <bpmn2:startEvent id="updateNetwork_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="updateNetwork_startEvent" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:scriptTask id="prepareSDNCTopoRequest_ScriptTask" name="Prepare SDNC Topology Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_32</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.prepareSDNCRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="prepareSDNCTopoRequest_ScriptTask" targetRef="callAssignSDNCAdapter_CallActivity" />
+    <bpmn2:scriptTask id="validateSDNCResponse_ScriptTask" name="Validate SDNC Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.validateSDNCResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="isSdncTopoOk_ExclusiveGateway" name="Is SDNC Ok?" default="sdncTopoNo_SequenceFlow">
+      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      <bpmn2:outgoing>sdncTopoNo_SequenceFlow</bpmn2:outgoing>
+      <bpmn2:outgoing>sdncTopoYes_SequenceFlow</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="sdncTopoNo_SequenceFlow" name="No" sourceRef="isSdncTopoOk_ExclusiveGateway" targetRef="sndcError_EndEvent" />
+    <bpmn2:sequenceFlow id="sdncTopoYes_SequenceFlow" name="Yes" sourceRef="isSdncTopoOk_ExclusiveGateway" targetRef="callRESTReQuery1NetworkID_ScriptTask">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("UPDNETI_sdncResponseSuccess" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="validateSDNCResponse_ScriptTask" targetRef="isSdncTopoOk_ExclusiveGateway" />
+    <bpmn2:boundaryEvent id="BoundaryEvent_4" name="" attachedToRef="validateSDNCResponse_ScriptTask">
+      <bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_84" errorRef="Error_2" />
+    </bpmn2:boundaryEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_34" name="" sourceRef="BoundaryEvent_4" targetRef="sndcError_EndEvent" />
+    <bpmn2:endEvent id="sndcError_EndEvent" name="SNDC Error">
+      <bpmn2:incoming>sdncTopoNo_SequenceFlow</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_34</bpmn2:incoming>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_57" errorRef="Error_2" />
+    </bpmn2:endEvent>
+    <bpmn2:callActivity id="callAssignSDNCAdapter_CallActivity" name="Call SDNC ChangeAssign Adapter V1 Sub-process" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="UPDNETI_changeAssignSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:out source="sdncAdapterResponse" target="UPDNETI_changeAssignSDNCResponse" />
+        <camunda:out source="SDNCA_ResponseCode" target="UPDNETI_sdncReturnCode" />
+        <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="WorkflowException" target="UPDNETI_WorkflowException" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:in variables="all" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="callAssignSDNCAdapter_CallActivity" targetRef="validateSDNCResponse_ScriptTask" />
+    <bpmn2:scriptTask id="postProcessAndCompletionRequest_ScriptTask" name="Post Process Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_46</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.postProcessResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="postProcessAndCompletionRequest_ScriptTask" targetRef="EndEvent_3" />
+    <bpmn2:subProcess id="subProcessException_SubProcess" name="Subprocess For Exception" triggeredByEvent="true">
+      <bpmn2:exclusiveGateway id="isRollbackOn_Network_ExclusiveGateway" name="Is Rollback On?" default="isRollbackOn_NoNetwork_SequenceFlow">
+        <bpmn2:incoming>SequenceFlow_053re4q</bpmn2:incoming>
+        <bpmn2:outgoing>isRollbackOn_YesNetwork_SequenceFlow</bpmn2:outgoing>
+        <bpmn2:outgoing>isRollbackOn_NoNetwork_SequenceFlow</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="isRollbackOn_YesNetwork_SequenceFlow" name="Yes" sourceRef="isRollbackOn_Network_ExclusiveGateway" targetRef="isPONR_ExclusiveGateway">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("UPDNETI_rollbackEnabled") == true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="isRollbackOn_NoNetwork_SequenceFlow" name="No" sourceRef="isRollbackOn_Network_ExclusiveGateway" targetRef="ExclusiveGateway_1dcb5p2" />
+      <bpmn2:startEvent id="subProcessStart_StartEvent" name="Fault Start">
+        <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" errorRef="Error_2" />
+      </bpmn2:startEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="subProcessStart_StartEvent" targetRef="ScriptTask_1gedbow" />
+      <bpmn2:exclusiveGateway id="isPONR_ExclusiveGateway" name="isPONR?" default="isPONR_No_SequenceFlow">
+        <bpmn2:incoming>isRollbackOn_YesNetwork_SequenceFlow</bpmn2:incoming>
+        <bpmn2:outgoing>isPONR_Yes_SequenceFlow</bpmn2:outgoing>
+        <bpmn2:outgoing>isPONR_No_SequenceFlow</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="isPONR_Yes_SequenceFlow" name="Yes" sourceRef="isPONR_ExclusiveGateway" targetRef="ExclusiveGateway_1dcb5p2">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("UPDNETI_isPONR") == true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="isPONR_No_SequenceFlow" name="No" sourceRef="isPONR_ExclusiveGateway" targetRef="ExclusiveGateway_1dcb5p2" />
+      <bpmn2:exclusiveGateway id="sdncOk_ExclusiveGateway" name="is Sdnc Ok?" default="sdncOk_No_ExclusiveGateway">
+        <bpmn2:incoming>SequenceFlow_0nrc66n</bpmn2:incoming>
+        <bpmn2:outgoing>sdncOk_Yeso_ExclusiveGateway</bpmn2:outgoing>
+        <bpmn2:outgoing>sdncOk_No_ExclusiveGateway</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="sdncOk_Yeso_ExclusiveGateway" name="Yes" sourceRef="sdncOk_ExclusiveGateway" targetRef="prepareSDNCRollbackRequest_ScriptTask">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("UPDNETI_isSdncRollbackNeeded" ) == true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="sdncOk_No_ExclusiveGateway" name="No" sourceRef="sdncOk_ExclusiveGateway" targetRef="InclusiveGateway_6" />
+      <bpmn2:scriptTask id="prepareSDNCRollbackRequest_ScriptTask" name="Prepare SDNCRollback Request" scriptFormat="groovy">
+        <bpmn2:incoming>sdncOk_Yeso_ExclusiveGateway</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_53</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.prepareSDNCRollbackRequest(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_53" name="" sourceRef="prepareSDNCRollbackRequest_ScriptTask" targetRef="InclusiveGateway_6" />
+      <bpmn2:endEvent id="EndEvent_4">
+        <bpmn2:incoming>SequenceFlow_04rdjfi</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:inclusiveGateway id="InclusiveGateway_6">
+        <bpmn2:incoming>SequenceFlow_53</bpmn2:incoming>
+        <bpmn2:incoming>sdncOk_No_ExclusiveGateway</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_0srdlf3</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_47</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_47" name="" sourceRef="InclusiveGateway_6" targetRef="ScriptTask_1p6n2yy" />
+      <bpmn2:scriptTask id="ScriptTask_1p6n2yy" name="Prepare RollbackData" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_47</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0qr4es6</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.prepareRollbackData(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:callActivity id="CallActivity_1kid5y0" name="DoUpdate&#10;NetworkInstanceRollback&#10;" calledElement="DoCreateNetworkInstanceRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+          <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+          <camunda:in source="rollbackData" target="rollbackData" />
+          <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="WorkflowException" target="WorkflowException" />
+          <camunda:in source="sdncVersion" target="sdncVersion" />
+          <camunda:out source="wasDeleted" target="wasDeleted" />
+          <camunda:out source="rolledBack" target="rolledBack" />
+          <camunda:out source="WorkflowException" target="WorkflowException" />
+          <camunda:out source="workflowException" target="workflowException" />
+          <camunda:in source="SavedWorkflowException1" target="SavedWorkflowException1" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_0qr4es6</bpmn2:incoming>
+      </bpmn2:callActivity>
+      <bpmn2:scriptTask id="ScriptTask_0voqz6r" name="Post Process Response" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0ze5k6c</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_04rdjfi</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.postProcessResponse(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_0qr4es6" sourceRef="ScriptTask_1p6n2yy" targetRef="CallActivity_1kid5y0" />
+      <bpmn2:sequenceFlow id="SequenceFlow_04rdjfi" sourceRef="ScriptTask_0voqz6r" targetRef="EndEvent_4" />
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_1kjh92x" name="is &#39;1702&#39; SNDC Call?">
+        <bpmn2:outgoing>SequenceFlow_0nrc66n</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_0srdlf3</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0nrc66n" name="No" sourceRef="ExclusiveGateway_1kjh92x" targetRef="sdncOk_ExclusiveGateway" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0srdlf3" name="Yes" sourceRef="ExclusiveGateway_1kjh92x" targetRef="InclusiveGateway_6">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:scriptTask id="ScriptTask_1gedbow" name="Set Exception Flag" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_053re4q</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.setExceptionFlag(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_053re4q" sourceRef="ScriptTask_1gedbow" targetRef="isRollbackOn_Network_ExclusiveGateway" />
+      <bpmn2:inclusiveGateway id="ExclusiveGateway_1dcb5p2">
+        <bpmn2:incoming>isPONR_Yes_SequenceFlow</bpmn2:incoming>
+        <bpmn2:incoming>isRollbackOn_NoNetwork_SequenceFlow</bpmn2:incoming>
+        <bpmn2:incoming>isPONR_No_SequenceFlow</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0ze5k6c</bpmn2:outgoing>
+      </bpmn2:inclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0ze5k6c" sourceRef="ExclusiveGateway_1dcb5p2" targetRef="ScriptTask_0voqz6r" />
+      <bpmn2:textAnnotation id="TextAnnotation_0qx19b9">      <bpmn2:text>Note: Rollback is not needed for UpdateNetwork,</bpmn2:text>
+</bpmn2:textAnnotation>
+      <bpmn2:association id="Association_10dk4x3" sourceRef="CallActivity_1kid5y0" targetRef="TextAnnotation_0qx19b9" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="callRESTReQuery2NetworkID_ScriptTask" name="Call REST ReQuery2 Network Id in AAI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.callRESTReQueryAAINetworkId(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="callRESTReQuery2NetworkID_ScriptTask" targetRef="callRESTUpdateContrailNetwork_ScriptTask" />
+    <bpmn2:scriptTask id="callRESTUpdateContrailNetwork_ScriptTask" name="Call REST Update Contrail Network in AAI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_46</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.callRESTUpdateContrailAAINetwork(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_46" name="PONR" sourceRef="callRESTUpdateContrailNetwork_ScriptTask" targetRef="postProcessAndCompletionRequest_ScriptTask" />
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <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.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.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:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="callGetServiceInstance" />
+    <bpmn2:scriptTask id="callRESTQueryCloudRegion_ScriptTask" name="Call REST Query Cloud Region " scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_24</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_32</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.callRESTQueryAAICloudRegion(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="callRESTQueryCloudRegion_ScriptTask" targetRef="prepareSDNCTopoRequest_ScriptTask" />
+    <bpmn2:scriptTask id="callRESTQueryNetworkId_ScriptTask" name="Call REST Query Network Id In AAI" scriptFormat="groovy">
+      <bpmn2:incoming>siFoundYes</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.callRESTQueryAAINetworkId(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_24" name="" sourceRef="callRESTQueryNetworkId_ScriptTask" targetRef="callRESTQueryCloudRegion_ScriptTask" />
+    <bpmn2:scriptTask id="workflowExceptionSINotFound" name="Create Workflow Exception" scriptFormat="groovy">
+      <bpmn2:incoming>siFoundNo</bpmn2:incoming>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.buildAndThrowWorkflowException(execution, 404, "Service Instance Not Found")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="siFoundCheck" name="is SI Found?" default="siFoundNo">
+      <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
+      <bpmn2:outgoing>siFoundYes</bpmn2:outgoing>
+      <bpmn2:outgoing>siFoundNo</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="siFoundYes" name="Yes" sourceRef="siFoundCheck" targetRef="callRESTQueryNetworkId_ScriptTask">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("GENGSI_FoundIndicator" ) == true && execution.getVariable("GENGSI_SuccessIndicator" ) == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="siFoundNo" name="No" sourceRef="siFoundCheck" targetRef="workflowExceptionSINotFound" />
+    <bpmn2:callActivity id="callGetServiceInstance" name="Get&#10;Service&#10;Instance" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="UPDNETI_serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:out source="GENGS_serviceInstance" target="UPDNETI_serviceInstanceId" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGSI_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGSI_SuccessIndicator" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGSI_siResourceLink" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="GENGS_type" target="GENGS_type" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="callGetServiceInstance" targetRef="siFoundCheck" />
+    <bpmn2:scriptTask id="validateUpdatePONetwork_ScriptTask" name="Validate Update PO Network" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_59</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.validateUpdateNetworkResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="validateUpdatePONetwork_ScriptTask" targetRef="callRESTReQuery2NetworkID_ScriptTask" />
+    <bpmn2:serviceTask id="callUpdateNetwork_ServiceTask" name="Call Update Network">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="payload">${UPDNETI_updateNetworkRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)}/${UPDNETI_networkId}
+]]></camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="Authorization">#{BasicAuthHeaderValuePO}</camunda:entry>
+                <camunda:entry key="content-type">application/xml</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="method">PUT</camunda:inputParameter>
+            <camunda:outputParameter name="UPDNETI_networkReturnCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="UPDNETI_updateNetworkResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_61</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_59</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_59" name="" sourceRef="callUpdateNetwork_ServiceTask" targetRef="validateUpdatePONetwork_ScriptTask" />
+    <bpmn2:scriptTask id="prepareNetworkRequest_ScriptTask" name="Prepare Create Network Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_61</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.prepareUpdateNetworkRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_61" name="" sourceRef="prepareNetworkRequest_ScriptTask" targetRef="callUpdateNetwork_ServiceTask" />
+    <bpmn2:scriptTask id="callRESTQueryNetworkTableRef_ScriptTask" name="Call REST Query Network TableRef in AAI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_38</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.callRESTQueryAAINetworkTableRef(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="callRESTQueryNetworkTableRef_ScriptTask" targetRef="prepareNetworkRequest_ScriptTask" />
+    <bpmn2:scriptTask id="callRESTReQuery1NetworkID_ScriptTask" name="Call REST ReQuery1 Network Id in AAI" scriptFormat="groovy">
+      <bpmn2:incoming>sdncTopoYes_SequenceFlow</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.callRESTReQueryAAINetworkId(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="callRESTReQuery1NetworkID_ScriptTask" targetRef="callRESTQueryVpnBinding_ScriptTask" />
+    <bpmn2:scriptTask id="callRESTQueryVpnBinding_ScriptTask" name="Call REST Query Vpn Binding in AAI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.callRESTQueryAAINetworkVpnBinding(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="callRESTQueryVpnBinding_ScriptTask" targetRef="callRESTQueryNetworkPolicy_ScriptTask" />
+    <bpmn2:scriptTask id="callRESTQueryNetworkPolicy_ScriptTask" name="Call REST Query Network Policy in AAI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_38</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+DoUpdateNetworkInstance.callRESTQueryAAINetworkPolicy(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_38" name="" sourceRef="callRESTQueryNetworkPolicy_ScriptTask" targetRef="callRESTQueryNetworkTableRef_ScriptTask" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUpdateNetworkInstance">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="updateNetwork_startEvent">
+        <dc:Bounds x="286" y="185" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="279" y="226" width="49" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="472" y="163" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="322" y="203" />
+        <di:waypoint xsi:type="dc:Point" x="472" y="203" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="397" y="188" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_63" bpmnElement="validateUpdatePONetwork_ScriptTask">
+        <dc:Bounds x="1343" y="1311" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_83" bpmnElement="callUpdateNetwork_ServiceTask">
+        <dc:Bounds x="1342" y="1176" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_67" bpmnElement="prepareSDNCTopoRequest_ScriptTask">
+        <dc:Bounds x="1519" y="100" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_16" bpmnElement="subProcessException_SubProcess" isExpanded="true">
+        <dc:Bounds x="-153" y="594" width="1288" height="701" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="subProcessStart_StartEvent">
+        <dc:Bounds x="-103" y="1160" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-109" y="1201" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_67" bpmnElement="isSdncTopoOk_ExclusiveGateway" isMarkerVisible="true">
+        <dc:Bounds x="1544" y="521" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1535" y="577" width="67" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_26" bpmnElement="sdncTopoNo_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_67" targetElement="_BPMNShape_EndEvent_124">
+        <di:waypoint xsi:type="dc:Point" x="1594" y="546" />
+        <di:waypoint xsi:type="dc:Point" x="1682" y="546" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1600" y="546.8622891951518" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="sdncTopoYes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_67" targetElement="_BPMNShape_ScriptTask_336">
+        <di:waypoint xsi:type="dc:Point" x="1544" y="546" />
+        <di:waypoint xsi:type="dc:Point" x="1393" y="546" />
+        <di:waypoint xsi:type="dc:Point" x="1393" y="576" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1526" y="546" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_80" bpmnElement="postProcessAndCompletionRequest_ScriptTask">
+        <dc:Bounds x="743" y="1390" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_124" bpmnElement="sndcError_EndEvent">
+        <dc:Bounds x="1682" y="528" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1663" y="569" width="74" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_19" bpmnElement="callAssignSDNCAdapter_CallActivity">
+        <dc:Bounds x="1519" y="242" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_67" targetElement="_BPMNShape_CallActivity_19">
+        <di:waypoint xsi:type="dc:Point" x="1569" y="180" />
+        <di:waypoint xsi:type="dc:Point" x="1569" y="242" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1584" y="211" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_CallActivity_19" targetElement="_BPMNShape_ScriptTask_131">
+        <di:waypoint xsi:type="dc:Point" x="1569" y="322" />
+        <di:waypoint xsi:type="dc:Point" x="1569" y="373" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1584" y="347.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="572" y="203" />
+        <di:waypoint xsi:type="dc:Point" x="686" y="203" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="629" y="188" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_35" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ExclusiveGateway_90">
+        <di:waypoint xsi:type="dc:Point" x="-67" y="1178" />
+        <di:waypoint xsi:type="dc:Point" x="-40" y="1178" />
+        <di:waypoint xsi:type="dc:Point" x="-11" y="1178" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-53" y="1163" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_131" bpmnElement="validateSDNCResponse_ScriptTask">
+        <dc:Bounds x="1519" y="373" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_131" targetElement="_BPMNShape_ExclusiveGateway_67">
+        <di:waypoint xsi:type="dc:Point" x="1569" y="453" />
+        <di:waypoint xsi:type="dc:Point" x="1569" y="521" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1584" y="487" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_42" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_80">
+        <di:waypoint xsi:type="dc:Point" x="743" y="1430" />
+        <di:waypoint xsi:type="dc:Point" x="635" y="1430" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="689" y="1415" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="callRESTQueryNetworkId_ScriptTask">
+        <dc:Bounds x="984" y="100" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_134" bpmnElement="callRESTReQuery2NetworkID_ScriptTask">
+        <dc:Bounds x="1176" y="1390" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_135" bpmnElement="callRESTUpdateContrailNetwork_ScriptTask">
+        <dc:Bounds x="984" y="1390" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_54" bpmnElement="SequenceFlow_35" sourceElement="_BPMNShape_ScriptTask_134" targetElement="_BPMNShape_ScriptTask_135">
+        <di:waypoint xsi:type="dc:Point" x="1176" y="1430" />
+        <di:waypoint xsi:type="dc:Point" x="1084" y="1430" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1130" y="1415" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_65" bpmnElement="SequenceFlow_46" sourceElement="_BPMNShape_ScriptTask_135">
+        <di:waypoint xsi:type="dc:Point" x="984" y="1430" />
+        <di:waypoint xsi:type="dc:Point" x="843" y="1430" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="935" y="1431.2411831373652" width="32" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_156" bpmnElement="callRESTQueryVpnBinding_ScriptTask">
+        <dc:Bounds x="1341" y="688" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ScriptTask_156" targetElement="_BPMNShape_ScriptTask_215">
+        <di:waypoint xsi:type="dc:Point" x="1391" y="768" />
+        <di:waypoint xsi:type="dc:Point" x="1391" y="810" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1388" y="781" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_87" bpmnElement="SequenceFlow_59" sourceElement="_BPMNShape_ServiceTask_83" targetElement="_BPMNShape_ScriptTask_63">
+        <di:waypoint xsi:type="dc:Point" x="1392" y="1256" />
+        <di:waypoint xsi:type="dc:Point" x="1393" y="1311" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1390" y="1284" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_157" bpmnElement="prepareNetworkRequest_ScriptTask">
+        <dc:Bounds x="1342" y="1052" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_89" bpmnElement="SequenceFlow_61" sourceElement="_BPMNShape_ScriptTask_157" targetElement="_BPMNShape_ServiceTask_83">
+        <di:waypoint xsi:type="dc:Point" x="1392" y="1132" />
+        <di:waypoint xsi:type="dc:Point" x="1392" y="1176" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1389" y="1159" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_90" bpmnElement="isRollbackOn_Network_ExclusiveGateway" isMarkerVisible="true">
+        <dc:Bounds x="156" y="1153" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="143" y="1213" width="78" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_25" bpmnElement="isRollbackOn_YesNetwork_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_90" targetElement="_BPMNShape_ExclusiveGateway_215">
+        <di:waypoint xsi:type="dc:Point" x="181" y="1153" />
+        <di:waypoint xsi:type="dc:Point" x="181" y="1089" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="187" y="1133.4787123394708" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_34" bpmnElement="isRollbackOn_NoNetwork_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_90" targetElement="_BPMNShape_InclusiveGateway_24">
+        <di:waypoint xsi:type="dc:Point" x="206" y="1178" />
+        <di:waypoint xsi:type="dc:Point" x="372" y="1178" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="206" y="1182.7278101950883" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_215" bpmnElement="callRESTQueryNetworkPolicy_ScriptTask">
+        <dc:Bounds x="1341" y="810" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_60" bpmnElement="SequenceFlow_38" sourceElement="_BPMNShape_ScriptTask_215" targetElement="_BPMNShape_ScriptTask_335">
+        <di:waypoint xsi:type="dc:Point" x="1391" y="890" />
+        <di:waypoint xsi:type="dc:Point" x="1391" y="926" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1388" y="900" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_InclusiveGateway_24" bpmnElement="InclusiveGateway_6">
+        <dc:Bounds x="626" y="859" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="651" y="914" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_215" bpmnElement="isPONR_ExclusiveGateway" isMarkerVisible="true">
+        <dc:Bounds x="156" y="1039" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="90" y="1054" width="46" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_77" bpmnElement="isPONR_Yes_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_215" targetElement="_BPMNShape_InclusiveGateway_24">
+        <di:waypoint xsi:type="dc:Point" x="206" y="1064" />
+        <di:waypoint xsi:type="dc:Point" x="397" y="1064" />
+        <di:waypoint xsi:type="dc:Point" x="397" y="1153" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="213" y="1067.6448598130842" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_85" bpmnElement="isPONR_No_SequenceFlow" sourceElement="_BPMNShape_ExclusiveGateway_215">
+        <di:waypoint xsi:type="dc:Point" x="181" y="1039" />
+        <di:waypoint xsi:type="dc:Point" x="181" y="971" />
+        <di:waypoint xsi:type="dc:Point" x="397" y="971" />
+        <di:waypoint xsi:type="dc:Point" x="397" y="1153" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="185" y="1027.872131147541" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_217" bpmnElement="sdncOk_ExclusiveGateway" isMarkerVisible="true">
+        <dc:Bounds x="493" y="709" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="488" y="683" width="60" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_92" bpmnElement="sdncOk_Yeso_ExclusiveGateway" sourceElement="_BPMNShape_ExclusiveGateway_217" targetElement="_BPMNShape_ScriptTask_261">
+        <di:waypoint xsi:type="dc:Point" x="543" y="734" />
+        <di:waypoint xsi:type="dc:Point" x="601" y="733" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="545" y="737.2172362208834" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_93" bpmnElement="sdncOk_No_ExclusiveGateway" sourceElement="_BPMNShape_ExclusiveGateway_217">
+        <di:waypoint xsi:type="dc:Point" x="517" y="758" />
+        <di:waypoint xsi:type="dc:Point" x="517" y="884" />
+        <di:waypoint xsi:type="dc:Point" x="626" y="884" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="526" y="761.1171067354646" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3">
+        <dc:Bounds x="599" y="1412" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="617" y="1453" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_178" bpmnElement="EndEvent_4">
+        <dc:Bounds x="1029" y="968" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1047" y="1009" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_245" bpmnElement="callRESTQueryCloudRegion_ScriptTask">
+        <dc:Bounds x="1200" y="100" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_53" bpmnElement="SequenceFlow_32" sourceElement="_BPMNShape_ScriptTask_245" targetElement="_BPMNShape_ScriptTask_67">
+        <di:waypoint xsi:type="dc:Point" x="1300" y="140" />
+        <di:waypoint xsi:type="dc:Point" x="1519" y="140" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1410" y="125" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_38" bpmnElement="BoundaryEvent_4">
+        <dc:Bounds x="1601" y="355" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1619" y="391" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_69" bpmnElement="SequenceFlow_34" sourceElement="_BPMNShape_BoundaryEvent_38" targetElement="_BPMNShape_EndEvent_124">
+        <di:waypoint xsi:type="dc:Point" x="1637" y="373" />
+        <di:waypoint xsi:type="dc:Point" x="1700" y="373" />
+        <di:waypoint xsi:type="dc:Point" x="1700" y="528" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1669" y="358" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_261" bpmnElement="prepareSDNCRollbackRequest_ScriptTask">
+        <dc:Bounds x="601" y="694" width="100" height="79" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_76" bpmnElement="SequenceFlow_47" sourceElement="_BPMNShape_InclusiveGateway_24">
+        <di:waypoint xsi:type="dc:Point" x="651" y="909" />
+        <di:waypoint xsi:type="dc:Point" x="651" y="946" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="666" y="927.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_84" bpmnElement="SequenceFlow_53" sourceElement="_BPMNShape_ScriptTask_261">
+        <di:waypoint xsi:type="dc:Point" x="651" y="773" />
+        <di:waypoint xsi:type="dc:Point" x="651" y="859" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="666" y="816" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_63" targetElement="_BPMNShape_ScriptTask_134">
+        <di:waypoint xsi:type="dc:Point" x="1393" y="1391" />
+        <di:waypoint xsi:type="dc:Point" x="1393" y="1430" />
+        <di:waypoint xsi:type="dc:Point" x="1310" y="1430" />
+        <di:waypoint xsi:type="dc:Point" x="1276" y="1430" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1390" y="1425" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_28" bpmnElement="unexpectedErrors_SubProcess" isExpanded="true">
+        <dc:Bounds x="-62" y="375" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_71" bpmnElement="StartEvent_1">
+        <dc:Bounds x="-29" y="452" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-11" y="493" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_270" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="86" y="430" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_220" bpmnElement="EndEvent_1">
+        <dc:Bounds x="247" y="452" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="265" y="493" 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="7" y="470" />
+        <di:waypoint xsi:type="dc:Point" x="86" y="470" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="49" y="470" 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="186" y="470" />
+        <di:waypoint xsi:type="dc:Point" x="247" y="470" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="221" y="470" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_72" bpmnElement="callGetServiceInstance">
+        <dc:Bounds x="686" y="163" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_244" bpmnElement="siFoundCheck" isMarkerVisible="true">
+        <dc:Bounds x="836" y="177" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="891" y="195" width="79" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_CallActivity_72" targetElement="_BPMNShape_ExclusiveGateway_244">
+        <di:waypoint xsi:type="dc:Point" x="786" y="203" />
+        <di:waypoint xsi:type="dc:Point" x="805" y="203" />
+        <di:waypoint xsi:type="dc:Point" x="805" y="202" />
+        <di:waypoint xsi:type="dc:Point" x="836" y="202" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="799" y="203" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="siFoundYes" sourceElement="_BPMNShape_ExclusiveGateway_244" targetElement="_BPMNShape_ScriptTask_133">
+        <di:waypoint xsi:type="dc:Point" x="861" y="177" />
+        <di:waypoint xsi:type="dc:Point" x="861" y="140" />
+        <di:waypoint xsi:type="dc:Point" x="910" y="140" />
+        <di:waypoint xsi:type="dc:Point" x="984" y="140" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="868" y="157" width="29" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_331" bpmnElement="workflowExceptionSINotFound">
+        <dc:Bounds x="984" y="256" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="siFoundNo" sourceElement="_BPMNShape_ExclusiveGateway_244" targetElement="_BPMNShape_ScriptTask_331">
+        <di:waypoint xsi:type="dc:Point" x="861" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="861" y="296" />
+        <di:waypoint xsi:type="dc:Point" x="984" y="296" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="871" y="233" width="22" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_24" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_ScriptTask_245">
+        <di:waypoint xsi:type="dc:Point" x="1084" y="140" />
+        <di:waypoint xsi:type="dc:Point" x="1200" y="140" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1127" y="140" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_335" bpmnElement="callRESTQueryNetworkTableRef_ScriptTask">
+        <dc:Bounds x="1341" y="926" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_335" targetElement="_BPMNShape_ScriptTask_157">
+        <di:waypoint xsi:type="dc:Point" x="1391" y="1006" />
+        <di:waypoint xsi:type="dc:Point" x="1392" y="1052" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1388" y="1028" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_336" bpmnElement="callRESTReQuery1NetworkID_ScriptTask">
+        <dc:Bounds x="1343" y="576" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_336" targetElement="_BPMNShape_ScriptTask_156">
+        <di:waypoint xsi:type="dc:Point" x="1393" y="656" />
+        <di:waypoint xsi:type="dc:Point" x="1393" y="672" />
+        <di:waypoint xsi:type="dc:Point" x="1391" y="672" />
+        <di:waypoint xsi:type="dc:Point" x="1391" y="688" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1390" y="666" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1p6n2yy_di" bpmnElement="ScriptTask_1p6n2yy">
+        <dc:Bounds x="601" y="946" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1kid5y0_di" bpmnElement="CallActivity_1kid5y0">
+        <dc:Bounds x="739" y="946" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0voqz6r_di" bpmnElement="ScriptTask_0voqz6r">
+        <dc:Bounds x="883" y="946" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0qr4es6_di" bpmnElement="SequenceFlow_0qr4es6">
+        <di:waypoint xsi:type="dc:Point" x="701" y="986" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="986" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="720" y="971" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04rdjfi_di" bpmnElement="SequenceFlow_04rdjfi">
+        <di:waypoint xsi:type="dc:Point" x="983" y="986" />
+        <di:waypoint xsi:type="dc:Point" x="1029" y="986" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1006" y="961" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1kjh92x_di" bpmnElement="ExclusiveGateway_1kjh92x" isMarkerVisible="true">
+        <dc:Bounds x="372" y="709" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="368" y="672" width="76" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0nrc66n_di" bpmnElement="SequenceFlow_0nrc66n">
+        <di:waypoint xsi:type="dc:Point" x="422" y="734" />
+        <di:waypoint xsi:type="dc:Point" x="493" y="734" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="427" y="735" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0srdlf3_di" bpmnElement="SequenceFlow_0srdlf3">
+        <di:waypoint xsi:type="dc:Point" x="397" y="759" />
+        <di:waypoint xsi:type="dc:Point" x="397" y="884" />
+        <di:waypoint xsi:type="dc:Point" x="626" y="884" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="402" y="760" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1gedbow_di" bpmnElement="ScriptTask_1gedbow">
+        <dc:Bounds x="-11" y="1138" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_053re4q_di" bpmnElement="SequenceFlow_053re4q">
+        <di:waypoint xsi:type="dc:Point" x="89" y="1178" />
+        <di:waypoint xsi:type="dc:Point" x="156" y="1178" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="123" y="1163" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_1adrta3_di" bpmnElement="ExclusiveGateway_1dcb5p2">
+        <dc:Bounds x="372" y="1153" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="397" y="1203" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ze5k6c_di" bpmnElement="SequenceFlow_0ze5k6c">
+        <di:waypoint xsi:type="dc:Point" x="422" y="1178" />
+        <di:waypoint xsi:type="dc:Point" x="933" y="1178" />
+        <di:waypoint xsi:type="dc:Point" x="933" y="1026" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="678" y="1163" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="TextAnnotation_0qx19b9_di" bpmnElement="TextAnnotation_0qx19b9">
+        <dc:Bounds x="736" y="808" width="168" height="39" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Association_10dk4x3_di" bpmnElement="Association_10dk4x3">
+        <di:waypoint xsi:type="dc:Point" x="797" y="946" />
+        <di:waypoint xsi:type="dc:Point" x="816" y="847" />
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateNetworkInstanceRollback.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateNetworkInstanceRollback.bpmn
new file mode 100644
index 0000000..9d37d80
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateNetworkInstanceRollback.bpmn
@@ -0,0 +1,374 @@
+<?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.4.0">
+  <bpmn:process id="DoUpdateNetworkInstanceRollback" name="DoUpdateNetworkInstanceRollback" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1">
+      <bpmn:outgoing>SequenceFlow_1krl2dg</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:scriptTask id="Task_0whino1" name="PreProcess Incoming Data" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1krl2dg</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0u41iz2</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback()
+DoUpdateNetworkInstanceRollback.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1krl2dg" sourceRef="StartEvent_1" targetRef="Task_0whino1" />
+    <bpmn:sequenceFlow id="SequenceFlow_0u41iz2" sourceRef="Task_0whino1" targetRef="ExclusiveGateway_0v0en47" />
+    <bpmn:serviceTask id="ServiceTask_0bqh5yl" name="Call Rollback Network">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="payload">${UPDNETIR_rollbackNetworkRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="url"><![CDATA[${UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint", execution)}
+]]></camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="Authorization">#{BasicAuthHeaderValuePO}</camunda:entry>
+                <camunda:entry key="content-type">application/xml</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="method">PUT</camunda:inputParameter>
+            <camunda:outputParameter name="UPDNETIR_rollbackNetworkReturnCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="UPDNETIR_rollbackNetworkResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0e1uixp</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_17o4w67</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0v0en47" name="is PO Network Rollback?" default="SequenceFlow_1lteduj">
+      <bpmn:incoming>SequenceFlow_0u41iz2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0e1uixp</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1lteduj</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:callActivity id="CallActivity_1xilevb" name="Call Rollback SDNC Adapter" calledElement="sdncAdapter">
+      <bpmn:extensionElements>
+        <camunda:in source="UPDNETIR_rollbackSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="SDNCA_ResponseCode" target="UPDNETIR_rollbackSDNCReturnCode" />
+        <camunda:out source="sdncAdapterResponse" target="UPDNETIR_rollbackSDNCResponse" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_101y57s</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0790olb</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_17g4q5c" name="is RSRC SDNC?" default="SequenceFlow_101y57s">
+      <bpmn:incoming>SequenceFlow_0virkpu</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_101y57s</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0mw0dgd</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:scriptTask id="ScriptTask_1ggaxfu" name="Validate Rollback Responses" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0qc4v9t</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0el8yzs</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0yto4gz</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback()
+DoUpdateNetworkInstanceRollback.validateRollbackResponses(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1n5jck8" name="is SDNC Rollback?" default="SequenceFlow_0qc4v9t">
+      <bpmn:incoming>SequenceFlow_1lteduj</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_17o4w67</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0virkpu</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0qc4v9t</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0e1uixp" name="Yes" sourceRef="ExclusiveGateway_0v0en47" targetRef="ServiceTask_0bqh5yl">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("UPDNETIR_rollbackNetworkRequest") != null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1lteduj" name="No" sourceRef="ExclusiveGateway_0v0en47" targetRef="ExclusiveGateway_1n5jck8" />
+    <bpmn:sequenceFlow id="SequenceFlow_0virkpu" name="Yes" sourceRef="ExclusiveGateway_1n5jck8" targetRef="ExclusiveGateway_17g4q5c">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("UPDNETIR_rollbackSDNCRequest") != null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_17o4w67" sourceRef="ServiceTask_0bqh5yl" targetRef="ExclusiveGateway_1n5jck8" />
+    <bpmn:sequenceFlow id="SequenceFlow_101y57s" name="No" sourceRef="ExclusiveGateway_17g4q5c" targetRef="CallActivity_1xilevb" />
+    <bpmn:sequenceFlow id="SequenceFlow_0mw0dgd" name="Yes" sourceRef="ExclusiveGateway_17g4q5c" targetRef="ExclusiveGateway_0b9kbop">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion") != '1610'} ]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:endEvent id="EndEvent_1fvr7ad">
+      <bpmn:incoming>SequenceFlow_0yto4gz</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0qc4v9t" name="No" sourceRef="ExclusiveGateway_1n5jck8" targetRef="ScriptTask_1ggaxfu" />
+    <bpmn:sequenceFlow id="SequenceFlow_0790olb" sourceRef="CallActivity_1xilevb" targetRef="ExclusiveGateway_0b9kbop" />
+    <bpmn:subProcess id="SubProcess_1p4663w" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:scriptTask id="ScriptTask_0by1uwk" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0xktw7v</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0soe5t3</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback()
+DoUpdateNetworkInstanceRollback.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:startEvent id="StartEvent_1j0eixl">
+        <bpmn:outgoing>SequenceFlow_0xktw7v</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_0jxh015">
+        <bpmn:incoming>SequenceFlow_0soe5t3</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_0xktw7v" name="" sourceRef="StartEvent_1j0eixl" targetRef="ScriptTask_0by1uwk" />
+      <bpmn:sequenceFlow id="SequenceFlow_0soe5t3" name="" sourceRef="ScriptTask_0by1uwk" targetRef="EndEvent_0jxh015" />
+    </bpmn:subProcess>
+    <bpmn:inclusiveGateway id="ExclusiveGateway_0b9kbop">
+      <bpmn:incoming>SequenceFlow_0790olb</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0mw0dgd</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0el8yzs</bpmn:outgoing>
+    </bpmn:inclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0el8yzs" sourceRef="ExclusiveGateway_0b9kbop" targetRef="ScriptTask_1ggaxfu" />
+    <bpmn:sequenceFlow id="SequenceFlow_0yto4gz" sourceRef="ScriptTask_1ggaxfu" targetRef="EndEvent_1fvr7ad" />
+    <bpmn:subProcess id="SubProcess_1b8rnqv" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:scriptTask id="ScriptTask_02d3i14" name="Catch Exception">
+        <bpmn:incoming>SequenceFlow_07kf49j</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_01syg1x</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+execution.setVariable("workflowException", execution.getVariable("WorkflowException")]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:startEvent id="StartEvent_0e8yrgo">
+        <bpmn:outgoing>SequenceFlow_07kf49j</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_1cmovvm">
+        <bpmn:incoming>SequenceFlow_01syg1x</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_07kf49j" name="" sourceRef="StartEvent_0e8yrgo" targetRef="ScriptTask_02d3i14" />
+      <bpmn:sequenceFlow id="SequenceFlow_01syg1x" name="" sourceRef="ScriptTask_02d3i14" targetRef="EndEvent_1cmovvm" />
+    </bpmn:subProcess>
+    <bpmn:textAnnotation id="TextAnnotation_000ap15">    <bpmn:text><![CDATA[Include ONLY inputs/varrables:  
+rollbackData, as Map
+-rollbackSDNCRequest
+-rollbackNetworkRequest
+WorkflowException
+ 
+]]></bpmn:text>
+</bpmn:textAnnotation>
+    <bpmn:association id="Association_0ybkmal" sourceRef="Task_0whino1" targetRef="TextAnnotation_000ap15" />
+    <bpmn:textAnnotation id="TextAnnotation_0vwyo82">    <bpmn:text><![CDATA[set value for:
+WorkflowException
+rolledBack
+wasDeleted
+]]></bpmn:text>
+</bpmn:textAnnotation>
+    <bpmn:association id="Association_1gx121b" sourceRef="ScriptTask_1ggaxfu" targetRef="TextAnnotation_0vwyo82" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUpdateNetworkInstanceRollback">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="240" y="354" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="258" y="390" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1dqe09s_di" bpmnElement="Task_0whino1">
+        <dc:Bounds x="403" y="332" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1krl2dg_di" bpmnElement="SequenceFlow_1krl2dg">
+        <di:waypoint xsi:type="dc:Point" x="276" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="382" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="382" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="403" y="372" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="397" y="372" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0u41iz2_di" bpmnElement="SequenceFlow_0u41iz2">
+        <di:waypoint xsi:type="dc:Point" x="503" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="660" y="372" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="582" y="357" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_0bqh5yl_di" bpmnElement="ServiceTask_0bqh5yl">
+        <dc:Bounds x="635" y="481" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0v0en47_di" bpmnElement="ExclusiveGateway_0v0en47" isMarkerVisible="true">
+        <dc:Bounds x="660" y="347" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="648" y="312" width="74" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_000ap15_di" bpmnElement="TextAnnotation_000ap15">
+        <dc:Bounds x="469" y="133" width="277" height="115" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Association_0ybkmal_di" bpmnElement="Association_0ybkmal">
+        <di:waypoint xsi:type="dc:Point" x="487" y="332" />
+        <di:waypoint xsi:type="dc:Point" x="559" y="248" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1xilevb_di" bpmnElement="CallActivity_1xilevb">
+        <dc:Bounds x="995" y="610" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_17g4q5c_di" bpmnElement="ExclusiveGateway_17g4q5c" isMarkerVisible="true">
+        <dc:Bounds x="879" y="496" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="926" y="474" width="82" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1ggaxfu_di" bpmnElement="ScriptTask_1ggaxfu">
+        <dc:Bounds x="1123" y="332" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1n5jck8_di" bpmnElement="ExclusiveGateway_1n5jck8" isMarkerVisible="true">
+        <dc:Bounds x="879" y="347" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="880" y="308" width="48" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="TextAnnotation_0vwyo82_di" bpmnElement="TextAnnotation_0vwyo82">
+        <dc:Bounds x="1287" y="410" width="165" height="60" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Association_1gx121b_di" bpmnElement="Association_1gx121b">
+        <di:waypoint xsi:type="dc:Point" x="1223" y="389" />
+        <di:waypoint xsi:type="dc:Point" x="1287" y="412" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0e1uixp_di" bpmnElement="SequenceFlow_0e1uixp">
+        <di:waypoint xsi:type="dc:Point" x="685" y="397" />
+        <di:waypoint xsi:type="dc:Point" x="685" y="439" />
+        <di:waypoint xsi:type="dc:Point" x="685" y="439" />
+        <di:waypoint xsi:type="dc:Point" x="685" y="481" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="693" y="395" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lteduj_di" bpmnElement="SequenceFlow_1lteduj">
+        <di:waypoint xsi:type="dc:Point" x="710" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="879" y="372" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="716" y="350" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0virkpu_di" bpmnElement="SequenceFlow_0virkpu">
+        <di:waypoint xsi:type="dc:Point" x="904" y="397" />
+        <di:waypoint xsi:type="dc:Point" x="904" y="496" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="914" y="392.7469456247061" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17o4w67_di" bpmnElement="SequenceFlow_17o4w67">
+        <di:waypoint xsi:type="dc:Point" x="735" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="817" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="817" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="879" y="372" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="832" y="446.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_101y57s_di" bpmnElement="SequenceFlow_101y57s">
+        <di:waypoint xsi:type="dc:Point" x="904" y="546" />
+        <di:waypoint xsi:type="dc:Point" x="904" y="650" />
+        <di:waypoint xsi:type="dc:Point" x="995" y="650" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="913" y="544.0784313725491" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0mw0dgd_di" bpmnElement="SequenceFlow_0mw0dgd">
+        <di:waypoint xsi:type="dc:Point" x="929" y="521" />
+        <di:waypoint xsi:type="dc:Point" x="1148" y="521" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="937" y="500" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1fvr7ad_di" bpmnElement="EndEvent_1fvr7ad">
+        <dc:Bounds x="1352" y="354" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1370" y="390" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0qc4v9t_di" bpmnElement="SequenceFlow_0qc4v9t">
+        <di:waypoint xsi:type="dc:Point" x="929" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="1123" y="372" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="941" y="351.1191898360114" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0790olb_di" bpmnElement="SequenceFlow_0790olb">
+        <di:waypoint xsi:type="dc:Point" x="1095" y="650" />
+        <di:waypoint xsi:type="dc:Point" x="1173" y="650" />
+        <di:waypoint xsi:type="dc:Point" x="1173" y="546" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1134" y="635" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_1p4663w_di" bpmnElement="SubProcess_1p4663w" isExpanded="true">
+        <dc:Bounds x="61" y="668" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0by1uwk_di" bpmnElement="ScriptTask_0by1uwk">
+        <dc:Bounds x="209" y="723" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1j0eixl_di" bpmnElement="StartEvent_1j0eixl">
+        <dc:Bounds x="94" y="745" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="112" y="786" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0jxh015_di" bpmnElement="EndEvent_0jxh015">
+        <dc:Bounds x="370" y="745" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="388" y="786" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xktw7v_di" bpmnElement="SequenceFlow_0xktw7v">
+        <di:waypoint xsi:type="dc:Point" x="130" y="763" />
+        <di:waypoint xsi:type="dc:Point" x="209" y="763" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="172" y="763" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0soe5t3_di" bpmnElement="SequenceFlow_0soe5t3">
+        <di:waypoint xsi:type="dc:Point" x="309" y="763" />
+        <di:waypoint xsi:type="dc:Point" x="370" y="763" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="344" y="763" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_0dot6c9_di" bpmnElement="ExclusiveGateway_0b9kbop">
+        <dc:Bounds x="1148" y="496" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1173" y="546" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0el8yzs_di" bpmnElement="SequenceFlow_0el8yzs">
+        <di:waypoint xsi:type="dc:Point" x="1173" y="496" />
+        <di:waypoint xsi:type="dc:Point" x="1173" y="412" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1188" y="444" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yto4gz_di" bpmnElement="SequenceFlow_0yto4gz">
+        <di:waypoint xsi:type="dc:Point" x="1223" y="372" />
+        <di:waypoint xsi:type="dc:Point" x="1352" y="372" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1288" y="357" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_1b8rnqv_di" bpmnElement="SubProcess_1b8rnqv" isExpanded="true">
+        <dc:Bounds x="61" y="916" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_02d3i14_di" bpmnElement="ScriptTask_02d3i14">
+        <dc:Bounds x="209" y="971" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0e8yrgo_di" bpmnElement="StartEvent_0e8yrgo">
+        <dc:Bounds x="94" y="993" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="112" y="1034" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1cmovvm_di" bpmnElement="EndEvent_1cmovvm">
+        <dc:Bounds x="370" y="993" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="388" y="1034" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_07kf49j_di" bpmnElement="SequenceFlow_07kf49j">
+        <di:waypoint xsi:type="dc:Point" x="130" y="1011" />
+        <di:waypoint xsi:type="dc:Point" x="209" y="1011" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="172" y="1011" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_01syg1x_di" bpmnElement="SequenceFlow_01syg1x">
+        <di:waypoint xsi:type="dc:Point" x="309" y="1011" />
+        <di:waypoint xsi:type="dc:Point" x="370" y="1011" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="344" y="1011" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateVfModule.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateVfModule.bpmn
new file mode 100644
index 0000000..46e7ddc
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateVfModule.bpmn
@@ -0,0 +1,671 @@
+<?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="_Wblj8GyfEeWUWLTvug7ZOg" 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="DoUpdateVfModule" name="DoUpdateVfModule" isExecutable="true">
+    <bpmn2:documentation><![CDATA[This flow expects its incoming request to be in the variable 'DoUpdateVfModuleRequest'.  This flow produces no output.]]></bpmn2:documentation>
+    <bpmn2:scriptTask id="PrepareUpdateAAIVfModule_prep" name="Prepare Update AAI Vf Module (prep)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_38</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def duvm = new DoUpdateVfModule()
+duvm.prepPrepareUpdateAAIVfModule(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="PrepareUpdateAAIVfModule_prep" targetRef="ScriptTask_1" />
+    <bpmn2:callActivity id="ScriptTask_1" name="Prepare Update AAI Vf Module" calledElement="PrepareUpdateAAIVfModule">
+      <bpmn2:extensionElements>
+        <camunda:in source="DOUPVfMod_prepareUpdateAAIVfModuleRequest" target="PrepareUpdateAAIVfModuleRequest" />
+        <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="PUAAIVfMod_outVfModule" target="DOUPVfMod_vfModule" />
+        <camunda:out source="PUAAIVfMod_vnfName" target="DOUPVfMod_vnfNameFromAAI" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ProcessReceivedRequest" name="Process Received Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_38</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def duvm = new DoUpdateVfModule()
+duvm.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_38" name="" sourceRef="ProcessReceivedRequest" targetRef="PrepareUpdateAAIVfModule_prep" />
+    <bpmn2:subProcess id="SubProcess_1" name="Catch Exception" triggeredByEvent="true">
+      <bpmn2:scriptTask id="ScriptTask_16" name="Handle Exception" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_35</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def duvm = new DoUpdateVfModule()
+duvm.handleWorkflowException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:endEvent id="EndEvent_3">
+        <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_11" />
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_35" name="" sourceRef="ScriptTask_16" targetRef="EndEvent_3" />
+      <bpmn2:startEvent id="StartEvent_3">
+        <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" />
+      </bpmn2:startEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="StartEvent_3" targetRef="ScriptTask_16" />
+    </bpmn2:subProcess>
+    <bpmn2:endEvent id="EndEvent_5">
+      <bpmn2:incoming>SequenceFlow_36</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_12" />
+    </bpmn2:endEvent>
+    <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1">
+      <bpmn2:outgoing>SequenceFlow_36</bpmn2:outgoing>
+      <bpmn2:errorEventDefinition id="_ErrorEventDefinition_70" />
+    </bpmn2:boundaryEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_36" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_5" />
+    <bpmn2:scriptTask id="ScriptTask_10" name="Update AAI Vf Module (prep)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_25</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def duvm = new DoUpdateVfModule()
+duvm.prepUpdateAAIVfModule(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_25" name="" sourceRef="ScriptTask_10" targetRef="ScriptTask_11" />
+    <bpmn2:callActivity id="ScriptTask_11" name="UpdateAAIVfModule" calledElement="UpdateAAIVfModule">
+      <bpmn2:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="DOUPVfMod_updateAAIVfModuleRequest" target="UpdateAAIVfModuleRequest" />
+        <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_25</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_26</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_26" name="" sourceRef="ScriptTask_11" targetRef="ScriptTask_12" />
+    <bpmn2:scriptTask id="ScriptTask_12" name="SDNC Topology Activate (prep)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_26</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_27</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def duvm = new DoUpdateVfModule()
+duvm.prepSDNCTopologyAct(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_27" name="" sourceRef="ScriptTask_12" targetRef="ScriptTask_13" />
+    <bpmn2:callActivity id="ScriptTask_13" name="SDNCAdapter Topology Activate" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DOUPVfMod_sdncActivateRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="DOUPVfMod_sdncActivateResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_27</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_14" name="Update AAI Generic Vnf (prep)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_24</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def duvm = new DoUpdateVfModule()
+duvm.prepUpdateAAIGenericVnf(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="ScriptTask_14" targetRef="ExclusiveGateway_1" />
+    <bpmn2:callActivity id="CallActivity_1" name="UpdateAAIGenericVnf" calledElement="UpdateAAIGenericVnf">
+      <bpmn2:extensionElements>
+        <camunda:in source="DOUPVfMod_updateAAIGenericVnfRequest" target="UpdateAAIGenericVnfRequest" />
+        <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="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_10" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="Skip Update
+&#10;Generic Vnf?" default="SequenceFlow_14">
+      <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_14" name="Do the update" sourceRef="ExclusiveGateway_1" targetRef="CallActivity_1" />
+    <bpmn2:sequenceFlow id="SequenceFlow_18" name="Skip the update" sourceRef="ExclusiveGateway_1" targetRef="ScriptTask_10">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[${execution.getVariable('DOUPVfMod_skipUpdateGenericVnf')} == true]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:startEvent id="StartEvent_1" name="Start">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="ProcessReceivedRequest" />
+    <bpmn2:scriptTask id="ScriptTask_4" name="SDNC Topology Change/Assign (prep)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def duvm = new DoUpdateVfModule()
+duvm.prepSDNCTopologyChg(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="ScriptTask_4" targetRef="ScriptTask_5" />
+    <bpmn2:callActivity id="ScriptTask_5" name="SDNC Adapter Topology Change/Assign" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DOUPVfMod_sdncChangeAssignRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="DOUPVfMod_sdncChangeAssignResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="ScriptTask_9" name="VnfAdapterRest" calledElement="vnfAdapterRestV1">
+      <bpmn2:extensionElements>
+        <camunda:in source="DOUPVfMod_vnfAdapterRestRequest" target="vnfAdapterRestV1Request" />
+        <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="WorkflowException" target="WorkflowException" />
+        <camunda:out source="vnfAdapterRestV1Response" target="DOUPVfMod_vnfAdapterRestResponse" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_24" name="" sourceRef="ScriptTask_9" targetRef="ScriptTask_14" />
+    <bpmn2:scriptTask id="ScriptTask_8" name="VNF Adapter (prep)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_21</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def duvm = new DoUpdateVfModule()
+duvm.prepVnfAdapterRest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_21" name="" sourceRef="ScriptTask_8" targetRef="ScriptTask_9" />
+    <bpmn2:scriptTask id="ScriptTask_15" name="Validate SDNC Query Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+String response = execution.getVariable("DOUPVfMod_sdncTopologyResponse")
+def duvm = new DoUpdateVfModule()
+duvm.validateSDNCResponse(execution, response, "query")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="ScriptTask_7" name="SDNCAdapter Topology Query" calledElement="sdncAdapter">
+      <bpmn2:extensionElements>
+        <camunda:in source="DOUPVfMod_sdncTopologyRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="sdncAdapterResponse" target="DOUPVfMod_sdncTopologyResponse" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_18" name="Validate SDNC Change/Assign Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+String response = execution.getVariable("DOUPVfMod_sdncChangeAssignResponse")
+def duvm = new DoUpdateVfModule()
+duvm.validateSDNCResponse(execution, response, "changeassign")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="ScriptTask_5" targetRef="ScriptTask_18" />
+    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ScriptTask_18" targetRef="ScriptTask_6" />
+    <bpmn2:scriptTask id="ScriptTask_6" name="SDNC Topology Query (prep)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def duvm = new DoUpdateVfModule()
+duvm.prepSDNCTopologyQuery(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="ScriptTask_6" targetRef="ScriptTask_7" />
+    <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="ScriptTask_7" targetRef="ScriptTask_15" />
+    <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="ScriptTask_15" targetRef="ScriptTask_8" />
+    <bpmn2:exclusiveGateway id="IsBaseVfModule" name="Is Base VF Module?" default="SequenceFlow_30">
+      <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_28</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_30</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="ScriptTask_1" targetRef="IsBaseVfModule" />
+    <bpmn2:callActivity id="ScriptTask_3" name="Confirm VolumeGroup Tenant" calledElement="ConfirmVolumeGroupTenant">
+      <bpmn2:extensionElements>
+        <camunda:in source="DOUPVfMod_volumeGroupId" target="volumeGroupId" />
+        <camunda:in source="DOUPVfMod_tenantId" target="tenantId" />
+        <camunda:in source="DOUPVfMod_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="WorkflowException" target="WorkflowException" />
+        <camunda:out source="ConfirmVolumeGroupTenantResponse" target="DOUPVfMod_volumeGroupStackId" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_3" targetRef="ScriptTask_4" />
+    <bpmn2:scriptTask id="ScriptTask_2" name="Confirm VolumeGroup Tenant (prep)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def duvm = new DoUpdateVfModule()
+duvm.prepConfirmVolumeGroupTenant(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="ScriptTask_2" targetRef="ScriptTask_3" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_2" name="VolumeGroupId 
+&#10;present?" default="SequenceFlow_16">
+      <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_10" name="Yes" sourceRef="ExclusiveGateway_2" targetRef="ScriptTask_2">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[${execution.getVariable('DOUPVfMod_volumeGroupId').isEmpty()} == false]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_16" name="No" sourceRef="ExclusiveGateway_2" targetRef="ScriptTask_4" />
+    <bpmn2:sequenceFlow id="SequenceFlow_28" name="yes" sourceRef="IsBaseVfModule" targetRef="ExclusiveGateway_3">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DOUPVfMod_isBaseVfModule") == "true"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:scriptTask id="QueryAAIVfModule" name="Query AAI Vf Module" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_30</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def doUpdateVfModule = new DoUpdateVfModule()
+doUpdateVfModule.queryAAIVfModule(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_30" name="no" sourceRef="IsBaseVfModule" targetRef="QueryAAIVfModule" />
+    <bpmn2:sequenceFlow id="SequenceFlow_34" name="" sourceRef="QueryAAIVfModule" targetRef="ExclusiveGateway_3" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_3">
+      <bpmn2:incoming>SequenceFlow_28</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_34</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="ExclusiveGateway_3" targetRef="ExclusiveGateway_2" />
+    <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_13" targetRef="ScriptTask_19" />
+    <bpmn2:scriptTask id="ScriptTask_19" name="PostProcess SDNC Adapter Activate" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_20</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+String response = execution.getVariable("DOUPVfMod_sdncActivateResponse")
+def duvm = new DoUpdateVfModule()
+duvm.validateSDNCResponse(execution, response, "activate")]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="ScriptTask_17" name="Set Success Indicator" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_20</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[// This variable is checked by the unit test
+execution.setVariable('DoUpdateVfModuleSuccessIndicator', true)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ScriptTask_17" targetRef="EndEvent_1" />
+    <bpmn2:endEvent id="EndEvent_1" name="TheEnd">
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_10" />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_20" name="" sourceRef="ScriptTask_19" targetRef="ScriptTask_17" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUpdateVfModule">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_37" bpmnElement="StartEvent_1">
+        <dc:Bounds x="150" y="214" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="151" y="255" width="34" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_22" bpmnElement="ProcessReceivedRequest">
+        <dc:Bounds x="300" y="192" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_37" targetElement="_BPMNShape_ScriptTask_22">
+        <di:waypoint xsi:type="dc:Point" x="186" y="232" />
+        <di:waypoint xsi:type="dc:Point" x="300" y="232" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="208" y="232" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_160" bpmnElement="PrepareUpdateAAIVfModule_prep">
+        <dc:Bounds x="456" y="192" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_38" bpmnElement="SequenceFlow_38" sourceElement="_BPMNShape_ScriptTask_22" targetElement="_BPMNShape_ScriptTask_160">
+        <di:waypoint xsi:type="dc:Point" x="400" y="232" />
+        <di:waypoint xsi:type="dc:Point" x="456" y="232" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="492" y="232" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_164" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="624" y="192" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_160" targetElement="_BPMNShape_ScriptTask_164">
+        <di:waypoint xsi:type="dc:Point" x="556" y="232" />
+        <di:waypoint xsi:type="dc:Point" x="624" y="232" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="575" y="232" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_88" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true">
+        <dc:Bounds x="1039" y="206" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1011" y="172" width="109" height="38" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_165" bpmnElement="ScriptTask_2">
+        <dc:Bounds x="1152" y="192" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ExclusiveGateway_88" targetElement="_BPMNShape_ScriptTask_165">
+        <di:waypoint xsi:type="dc:Point" x="1089" y="231" />
+        <di:waypoint xsi:type="dc:Point" x="1118" y="231" />
+        <di:waypoint xsi:type="dc:Point" x="1118" y="232" />
+        <di:waypoint xsi:type="dc:Point" x="1152" y="232" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1099" y="231" width="29" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_166" bpmnElement="ScriptTask_3">
+        <dc:Bounds x="1308" y="192" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_ScriptTask_165" targetElement="_BPMNShape_ScriptTask_166">
+        <di:waypoint xsi:type="dc:Point" x="1252" y="232" />
+        <di:waypoint xsi:type="dc:Point" x="1308" y="232" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1271" y="232" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_167" bpmnElement="ScriptTask_4">
+        <dc:Bounds x="72" y="420" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_168" bpmnElement="ScriptTask_5">
+        <dc:Bounds x="239" y="420" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_169" bpmnElement="ScriptTask_6">
+        <dc:Bounds x="535" y="420" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_ScriptTask_167" targetElement="_BPMNShape_ScriptTask_168">
+        <di:waypoint xsi:type="dc:Point" x="172" y="460" />
+        <di:waypoint xsi:type="dc:Point" x="239" y="460" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="197" y="460" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ExclusiveGateway_88" targetElement="_BPMNShape_ScriptTask_167">
+        <di:waypoint xsi:type="dc:Point" x="1064" y="256" />
+        <di:waypoint xsi:type="dc:Point" x="1064" y="351" />
+        <di:waypoint xsi:type="dc:Point" x="122" y="351" />
+        <di:waypoint xsi:type="dc:Point" x="122" y="420" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1073" y="271" width="22" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_166" targetElement="_BPMNShape_ScriptTask_167">
+        <di:waypoint xsi:type="dc:Point" x="1358" y="272" />
+        <di:waypoint xsi:type="dc:Point" x="1358" y="352" />
+        <di:waypoint xsi:type="dc:Point" x="639" y="352" />
+        <di:waypoint xsi:type="dc:Point" x="122" y="352" />
+        <di:waypoint xsi:type="dc:Point" x="122" y="420" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="927" y="352" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_170" bpmnElement="ScriptTask_7">
+        <dc:Bounds x="684" y="420" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ScriptTask_169" targetElement="_BPMNShape_ScriptTask_170">
+        <di:waypoint xsi:type="dc:Point" x="635" y="460" />
+        <di:waypoint xsi:type="dc:Point" x="684" y="460" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="648" y="460" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_171" bpmnElement="ScriptTask_8">
+        <dc:Bounds x="996" y="420" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_172" bpmnElement="ScriptTask_9">
+        <dc:Bounds x="1176" y="420" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_ScriptTask_171" targetElement="_BPMNShape_ScriptTask_172">
+        <di:waypoint xsi:type="dc:Point" x="1096" y="460" />
+        <di:waypoint xsi:type="dc:Point" x="1176" y="460" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1133" y="460" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_173" bpmnElement="ScriptTask_10">
+        <dc:Bounds x="466" y="636" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_174" bpmnElement="ScriptTask_11">
+        <dc:Bounds x="624" y="636" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_24" sourceElement="_BPMNShape_ScriptTask_172" targetElement="_BPMNShape_ScriptTask_219">
+        <di:waypoint xsi:type="dc:Point" x="1226" y="500" />
+        <di:waypoint xsi:type="dc:Point" x="1226" y="576" />
+        <di:waypoint xsi:type="dc:Point" x="194" y="576" />
+        <di:waypoint xsi:type="dc:Point" x="194" y="636" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="821" y="576" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_25" bpmnElement="SequenceFlow_25" sourceElement="_BPMNShape_ScriptTask_173" targetElement="_BPMNShape_ScriptTask_174">
+        <di:waypoint xsi:type="dc:Point" x="566" y="676" />
+        <di:waypoint xsi:type="dc:Point" x="624" y="676" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="591" y="676" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_175" bpmnElement="ScriptTask_12">
+        <dc:Bounds x="804" y="636" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_176" bpmnElement="ScriptTask_13">
+        <dc:Bounds x="984" y="636" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_26" bpmnElement="SequenceFlow_26" sourceElement="_BPMNShape_ScriptTask_174" targetElement="_BPMNShape_ScriptTask_175">
+        <di:waypoint xsi:type="dc:Point" x="724" y="676" />
+        <di:waypoint xsi:type="dc:Point" x="804" y="676" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="695" y="674" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_27" bpmnElement="SequenceFlow_27" sourceElement="_BPMNShape_ScriptTask_175" targetElement="_BPMNShape_ScriptTask_176">
+        <di:waypoint xsi:type="dc:Point" x="904" y="676" />
+        <di:waypoint xsi:type="dc:Point" x="984" y="676" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="902" y="676" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_162" bpmnElement="EndEvent_1">
+        <dc:Bounds x="1208" y="906" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1201" y="947" width="50" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_21" bpmnElement="SubProcess_1" isExpanded="true">
+        <dc:Bounds x="239" y="924" width="475" height="198" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_179" bpmnElement="ScriptTask_16">
+        <dc:Bounds x="399" y="984" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_163" bpmnElement="EndEvent_3">
+        <dc:Bounds x="617" y="1006" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="635" y="1047" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_35" bpmnElement="SequenceFlow_35" sourceElement="_BPMNShape_ScriptTask_179" targetElement="_BPMNShape_EndEvent_163">
+        <di:waypoint xsi:type="dc:Point" x="499" y="1024" />
+        <di:waypoint xsi:type="dc:Point" x="617" y="1024" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="555" y="1024" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_46" bpmnElement="BoundaryEvent_1">
+        <dc:Bounds x="696" y="1005" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="711" y="1046" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_164" bpmnElement="EndEvent_5">
+        <dc:Bounds x="814" y="1005" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="832" y="1046" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_36" bpmnElement="SequenceFlow_36" sourceElement="_BPMNShape_BoundaryEvent_46" targetElement="_BPMNShape_EndEvent_164">
+        <di:waypoint xsi:type="dc:Point" x="732" y="1023" />
+        <di:waypoint xsi:type="dc:Point" x="814" y="1023" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="770" y="1023" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_56" bpmnElement="StartEvent_3">
+        <dc:Bounds x="305" y="1006" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="323" y="1047" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_StartEvent_56" targetElement="_BPMNShape_ScriptTask_179">
+        <di:waypoint xsi:type="dc:Point" x="341" y="1024" />
+        <di:waypoint xsi:type="dc:Point" x="399" y="1024" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="302" y="1084" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_180" bpmnElement="ScriptTask_17">
+        <dc:Bounds x="1176" y="768" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_180" targetElement="_BPMNShape_EndEvent_162">
+        <di:waypoint xsi:type="dc:Point" x="1226" y="848" />
+        <di:waypoint xsi:type="dc:Point" x="1226" y="906" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1223" y="868" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_219" bpmnElement="ScriptTask_14">
+        <dc:Bounds x="144" y="636" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_2" bpmnElement="CallActivity_1">
+        <dc:Bounds x="300" y="636" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_CallActivity_2" targetElement="_BPMNShape_ScriptTask_173">
+        <di:waypoint xsi:type="dc:Point" x="400" y="676" />
+        <di:waypoint xsi:type="dc:Point" x="466" y="676" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="431" y="676" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_219" targetElement="_BPMNShape_ExclusiveGateway_213">
+        <di:waypoint xsi:type="dc:Point" x="194" y="716" />
+        <di:waypoint xsi:type="dc:Point" x="195" y="793" />
+        <di:waypoint xsi:type="dc:Point" x="284" y="793" />
+        <di:waypoint xsi:type="dc:Point" x="324" y="793" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="191" y="746" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_213" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true">
+        <dc:Bounds x="324" y="768" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="349" y="823" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ExclusiveGateway_213" targetElement="_BPMNShape_CallActivity_2">
+        <di:waypoint xsi:type="dc:Point" x="349" y="768" />
+        <di:waypoint xsi:type="dc:Point" x="350" y="716" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="357" y="733" width="80" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_ExclusiveGateway_213" targetElement="_BPMNShape_ScriptTask_173">
+        <di:waypoint xsi:type="dc:Point" x="374" y="793" />
+        <di:waypoint xsi:type="dc:Point" x="515" y="793" />
+        <di:waypoint xsi:type="dc:Point" x="516" y="716" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="380" y="768" width="97" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_220" bpmnElement="ScriptTask_15">
+        <dc:Bounds x="840" y="420" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_221" bpmnElement="ScriptTask_18">
+        <dc:Bounds x="384" y="420" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_168" targetElement="_BPMNShape_ScriptTask_221">
+        <di:waypoint xsi:type="dc:Point" x="339" y="460" />
+        <di:waypoint xsi:type="dc:Point" x="384" y="460" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_221" targetElement="_BPMNShape_ScriptTask_169">
+        <di:waypoint xsi:type="dc:Point" x="484" y="460" />
+        <di:waypoint xsi:type="dc:Point" x="535" y="460" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="511" y="460" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_170" targetElement="_BPMNShape_ScriptTask_220">
+        <di:waypoint xsi:type="dc:Point" x="784" y="460" />
+        <di:waypoint xsi:type="dc:Point" x="840" y="460" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_ScriptTask_220" targetElement="_BPMNShape_ScriptTask_171">
+        <di:waypoint xsi:type="dc:Point" x="940" y="460" />
+        <di:waypoint xsi:type="dc:Point" x="996" y="460" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_214" bpmnElement="ExclusiveGateway_3" isMarkerVisible="true">
+        <dc:Bounds x="965" y="206" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="990" y="261" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_215" bpmnElement="IsBaseVfModule" isMarkerVisible="true">
+        <dc:Bounds x="770" y="206" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="795" y="261" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_285" bpmnElement="QueryAAIVfModule">
+        <dc:Bounds x="849" y="72" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ScriptTask_164" targetElement="_BPMNShape_ExclusiveGateway_215">
+        <di:waypoint xsi:type="dc:Point" x="724" y="232" />
+        <di:waypoint xsi:type="dc:Point" x="747" y="232" />
+        <di:waypoint xsi:type="dc:Point" x="747" y="231" />
+        <di:waypoint xsi:type="dc:Point" x="770" y="231" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_28" sourceElement="_BPMNShape_ExclusiveGateway_215" targetElement="_BPMNShape_ExclusiveGateway_214">
+        <di:waypoint xsi:type="dc:Point" x="820" y="231" />
+        <di:waypoint xsi:type="dc:Point" x="965" y="231" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="888" y="231" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ExclusiveGateway_214" targetElement="_BPMNShape_ExclusiveGateway_88">
+        <di:waypoint xsi:type="dc:Point" x="1015" y="231" />
+        <di:waypoint xsi:type="dc:Point" x="1039" y="231" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1015" y="231" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_30" bpmnElement="SequenceFlow_30" sourceElement="_BPMNShape_ExclusiveGateway_215" targetElement="_BPMNShape_ScriptTask_285">
+        <di:waypoint xsi:type="dc:Point" x="795" y="206" />
+        <di:waypoint xsi:type="dc:Point" x="795" y="112" />
+        <di:waypoint xsi:type="dc:Point" x="849" y="112" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="770" y="151" width="20" height="22" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_34" bpmnElement="SequenceFlow_34" sourceElement="_BPMNShape_ScriptTask_285" targetElement="_BPMNShape_ExclusiveGateway_214">
+        <di:waypoint xsi:type="dc:Point" x="949" y="112" />
+        <di:waypoint xsi:type="dc:Point" x="966" y="112" />
+        <di:waypoint xsi:type="dc:Point" x="990" y="112" />
+        <di:waypoint xsi:type="dc:Point" x="990" y="206" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="987" y="136" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_286" bpmnElement="ScriptTask_19">
+        <dc:Bounds x="1176" y="636" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_176" targetElement="_BPMNShape_ScriptTask_286">
+        <di:waypoint xsi:type="dc:Point" x="1084" y="676" />
+        <di:waypoint xsi:type="dc:Point" x="1176" y="676" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1121" y="676" width="6" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_20" sourceElement="_BPMNShape_ScriptTask_286" targetElement="_BPMNShape_ScriptTask_180">
+        <di:waypoint xsi:type="dc:Point" x="1226" y="716" />
+        <di:waypoint xsi:type="dc:Point" x="1226" y="768" />
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateVnfAndModules.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateVnfAndModules.bpmn
new file mode 100644
index 0000000..ae77461
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateVnfAndModules.bpmn
@@ -0,0 +1,275 @@
+<?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="_9MhrcHqVEea26OhQB97uCQ" 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="DoUpdateVnfAndModules" name="DoUpdateVnfAndModules" isExecutable="true">
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="intialization" />
+    <bpmn2:scriptTask id="intialization" name="Intialization" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_08nd69s</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+DoUpdateVnfAndModules updateVnfAndModules = new DoUpdateVnfAndModules()
+updateVnfAndModules.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:subProcess id="javaErrorHandlingSubProcess" name="Java Exception Handling Sub Process" triggeredByEvent="true">
+      <bpmn2:endEvent id="EndEvent_4">
+        <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:startEvent id="StartEvent_3">
+        <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="_ErrorEventDefinition_95" errorRef="Error_2" />
+      </bpmn2:startEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="StartEvent_3" targetRef="processJavaException" />
+      <bpmn2:scriptTask id="processJavaException" name="Process Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil exceptionUtil = new ExceptionUtil()
+exceptionUtil.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="processJavaException" targetRef="EndEvent_4" />
+    </bpmn2:subProcess>
+    <bpmn2:endEvent id="EndEvent_2">
+      <bpmn2:incoming>SequenceFlow_0of4kmm</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_36" />
+    </bpmn2:endEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1amun4k" name="Are there VF modules to update?" default="SequenceFlow_19c7hcw">
+      <bpmn2:incoming>SequenceFlow_0t4yszi</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1f4mbkc</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1qrkdn3</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_19c7hcw</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_08nd69s" sourceRef="intialization" targetRef="QueryVnf" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1qrkdn3" name="yes" sourceRef="ExclusiveGateway_1amun4k" targetRef="PrepareModuleList">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DUVAM_nextModule") < execution.getVariable("DUVAM_moduleCount")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:callActivity id="UpdateVFModule" name="Do Update VF Module" calledElement="DoUpdateVfModule">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="isVidRequest" target="isVidRequest" />
+        <camunda:in source="vnfType" target="vnfType" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="DUVAM_vfModuleName" target="vfModuleName" />
+        <camunda:in source="DUVAM_vfModuleId" target="vfModuleId" />
+        <camunda:in source="DUVAM_volumeGroupId" target="volumeGroupId" />
+        <camunda:in source="DUVAM_volumeGroupName" target="volumeGroupName" />
+        <camunda:in source="DUVAM_isBaseVfModule" target="isBaseVfModule" />
+        <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="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>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_1p4ycii" sourceRef="UpdateVFModule" targetRef="PostProcessUpdateVfModule" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0t4yszi" sourceRef="PostProcessUpdateVfModule" targetRef="ExclusiveGateway_1amun4k" />
+    <bpmn2:scriptTask id="QueryVnf" name="Query VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_08nd69s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1f4mbkc</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def duvam = new DoUpdateVnfAndModules()
+duvam.queryAAIVfModule(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PrepareModuleList" name="Prepare Next Module To Update" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1qrkdn3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04o61yk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def duvam = new DoUpdateVnfAndModules()
+duvam.prepareNextModuleToUpdate(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="PostProcessUpdateVfModule" name="PostProcess Update VF Module" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1p4ycii</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0t4yszi</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+int nextModule = execution.getVariable("DUVAM_nextModule")
+			execution.setVariable("DUVAM_nextModule", nextModule + 1)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_04o61yk" sourceRef="PrepareModuleList" targetRef="UpdateVFModule" />
+    <bpmn2:sequenceFlow id="SequenceFlow_19c7hcw" name="no" sourceRef="ExclusiveGateway_1amun4k" targetRef="PreProcessUpdateAAIGenericVNF" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0of4kmm" sourceRef="UpdateAAIGenericVNFTask" targetRef="EndEvent_2" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1ltycz6" sourceRef="PreProcessUpdateAAIGenericVNF" targetRef="UpdateAAIGenericVNFTask" />
+    <bpmn2:callActivity id="UpdateAAIGenericVNFTask" name="Update AAI Generic VNF" calledElement="UpdateAAIGenericVnf">
+      <bpmn2:extensionElements>
+        <camunda:in source="DUVAM_updateAAIGenericVnfRequest" target="UpdateAAIGenericVnfRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-id" target="mso-service-id" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1ltycz6</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0of4kmm</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="PreProcessUpdateAAIGenericVNF" name="PreProcess Update AAI Generic VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_19c7hcw</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ltycz6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def duvam = new DoUpdateVnfAndModules()
+duvam.prepUpdateAAIGenericVnf(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1f4mbkc" sourceRef="QueryVnf" targetRef="ExclusiveGateway_1amun4k" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_2" name="Java Lang Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUpdateVnfAndModules">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_79" bpmnElement="StartEvent_1">
+        <dc:Bounds x="238" y="209" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="256" y="250" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_311" bpmnElement="intialization">
+        <dc:Bounds x="344" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_79" targetElement="_BPMNShape_ScriptTask_311">
+        <di:waypoint xsi:type="dc:Point" x="274" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="344" y="228" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="309" y="212.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_237" bpmnElement="EndEvent_2">
+        <dc:Bounds x="1441" y="279" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1459" y="320" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_35" bpmnElement="javaErrorHandlingSubProcess" isExpanded="true">
+        <dc:Bounds x="242" y="457" width="431" height="157" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_81" bpmnElement="StartEvent_3">
+        <dc:Bounds x="390" y="518" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="408" y="559" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_239" bpmnElement="EndEvent_4">
+        <dc:Bounds x="606" y="518" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="624" y="559" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_319" bpmnElement="processJavaException">
+        <dc:Bounds x="460" y="496" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_StartEvent_81" targetElement="_BPMNShape_ScriptTask_319">
+        <di:waypoint xsi:type="dc:Point" x="426" y="536" />
+        <di:waypoint xsi:type="dc:Point" x="460" y="536" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="443" y="521" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ScriptTask_319" targetElement="_BPMNShape_EndEvent_239">
+        <di:waypoint xsi:type="dc:Point" x="560" y="536" />
+        <di:waypoint xsi:type="dc:Point" x="606" y="536" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="583" y="521" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1amun4k_di" bpmnElement="ExclusiveGateway_1amun4k" isMarkerVisible="true">
+        <dc:Bounds x="706" y="201" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="660" y="248" width="65" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_08nd69s_di" bpmnElement="SequenceFlow_08nd69s">
+        <di:waypoint xsi:type="dc:Point" x="444" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="512" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="478" y="212" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qrkdn3_di" bpmnElement="SequenceFlow_1qrkdn3">
+        <di:waypoint xsi:type="dc:Point" x="731" y="201" />
+        <di:waypoint xsi:type="dc:Point" x="731" y="92" />
+        <di:waypoint xsi:type="dc:Point" x="816" y="92" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="737" y="151" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0qmp9y5_di" bpmnElement="UpdateVFModule">
+        <dc:Bounds x="983" y="52" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1p4ycii_di" bpmnElement="SequenceFlow_1p4ycii">
+        <di:waypoint xsi:type="dc:Point" x="1083" y="92" />
+        <di:waypoint xsi:type="dc:Point" x="1164" y="92" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1124" y="77" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0t4yszi_di" bpmnElement="SequenceFlow_0t4yszi">
+        <di:waypoint xsi:type="dc:Point" x="1214" y="132" />
+        <di:waypoint xsi:type="dc:Point" x="1214" y="226" />
+        <di:waypoint xsi:type="dc:Point" x="756" y="226" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1229" y="179" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_12xsp2f_di" bpmnElement="QueryVnf">
+        <dc:Bounds x="512" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_01c9qas_di" bpmnElement="PrepareModuleList">
+        <dc:Bounds x="816" y="52" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_11i0rnd_di" bpmnElement="PostProcessUpdateVfModule">
+        <dc:Bounds x="1164" y="52" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_04o61yk_di" bpmnElement="SequenceFlow_04o61yk">
+        <di:waypoint xsi:type="dc:Point" x="916" y="92" />
+        <di:waypoint xsi:type="dc:Point" x="983" y="92" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="950" y="77" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19c7hcw_di" bpmnElement="SequenceFlow_19c7hcw">
+        <di:waypoint xsi:type="dc:Point" x="731" y="251" />
+        <di:waypoint xsi:type="dc:Point" x="731" y="295" />
+        <di:waypoint xsi:type="dc:Point" x="1111" y="297" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="908" y="273" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0of4kmm_di" bpmnElement="SequenceFlow_0of4kmm">
+        <di:waypoint xsi:type="dc:Point" x="1367" y="297" />
+        <di:waypoint xsi:type="dc:Point" x="1404" y="297" />
+        <di:waypoint xsi:type="dc:Point" x="1404" y="297" />
+        <di:waypoint xsi:type="dc:Point" x="1441" y="297" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1419" y="297" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ltycz6_di" bpmnElement="SequenceFlow_1ltycz6">
+        <di:waypoint xsi:type="dc:Point" x="1211" y="297" />
+        <di:waypoint xsi:type="dc:Point" x="1267" y="297" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1239" y="282" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1cem00f_di" bpmnElement="UpdateAAIGenericVNFTask">
+        <dc:Bounds x="1267" y="257" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0snu9sv_di" bpmnElement="PreProcessUpdateAAIGenericVNF">
+        <dc:Bounds x="1111" y="257" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1f4mbkc_di" bpmnElement="SequenceFlow_1f4mbkc">
+        <di:waypoint xsi:type="dc:Point" x="612" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="706" y="226" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="659" y="211.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/RollbackVnf.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/RollbackVnf.bpmn
new file mode 100644
index 0000000..e1300c9
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/RollbackVnf.bpmn
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3">
+  <bpmn:process id="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.onap.so.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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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.onap.so.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.onap.so.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.onap.so.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" />
+        <camunda:in source="controllerType" target="controllerType" />
+      </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/so-bpmn-infrastructure-flows/src/main/resources/subprocess/SetRefactorServiceDecomp.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/SetRefactorServiceDecomp.bpmn
new file mode 100644
index 0000000..7afac44
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-flows/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.onap.so.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>
