diff --git a/adapters/mso-catalog-db-adapter/WebContent/WEB-INF/jboss-deployment-structure.xml b/adapters/mso-catalog-db-adapter/WebContent/WEB-INF/jboss-deployment-structure.xml
index 05f0a32..53bdbc9 100644
--- a/adapters/mso-catalog-db-adapter/WebContent/WEB-INF/jboss-deployment-structure.xml
+++ b/adapters/mso-catalog-db-adapter/WebContent/WEB-INF/jboss-deployment-structure.xml
@@ -5,12 +5,17 @@
 			<module name="org.apache.log4j" />
 			<module name="org.slf4j" />
 			<module name="org.slf4j.impl" />
+			<module name="org.jboss.resteasy.resteasy-jackson-provider" />
+			<module name="org.jboss.resteasy.resteasy-jettison-provider" />
 		</exclusions>
 		<dependencies>
 			<module name="org.jboss.jandex" slot="main" />
 			<module name="org.javassist" slot="main" />
 			<module name="org.antlr" slot="main" />
 			<module name="org.dom4j" slot="main" />
+			<module name="org.jboss.resteasy.resteasy-jackson2-provider" services="import" />
+			<!-- This module contain the ProviderBase class: -->
+			<module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" export="true" />
 		</dependencies>
 	</deployment>
 </jboss-deployment-structure>
diff --git a/adapters/mso-network-adapter/WebContent/WEB-INF/jboss-deployment-structure.xml b/adapters/mso-network-adapter/WebContent/WEB-INF/jboss-deployment-structure.xml
index 58ddb4a..fb26891 100644
--- a/adapters/mso-network-adapter/WebContent/WEB-INF/jboss-deployment-structure.xml
+++ b/adapters/mso-network-adapter/WebContent/WEB-INF/jboss-deployment-structure.xml
@@ -5,12 +5,17 @@
 			<module name="org.apache.log4j" />
 			<module name="org.slf4j" />
 			<module name="org.slf4j.impl" />
+			<module name="org.jboss.resteasy.resteasy-jackson-provider" />
+			<module name="org.jboss.resteasy.resteasy-jettison-provider" />
 		</exclusions>
 		<dependencies>
 			    <module name="org.jboss.jandex" slot="main" />
                 <module name="org.javassist" slot="main" />
                 <module name="org.antlr" slot="main" />
                 <module name="org.dom4j" slot="main" />
+                <module name="org.jboss.resteasy.resteasy-jackson2-provider" services="import" />
+                <!-- This module contain the ProviderBase class: -->
+                <module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" export="true" />
 		</dependencies>
 	</deployment>
-</jboss-deployment-structure>
\ No newline at end of file
+</jboss-deployment-structure>
diff --git a/adapters/mso-vnf-adapter/WebContent/WEB-INF/jboss-deployment-structure.xml b/adapters/mso-vnf-adapter/WebContent/WEB-INF/jboss-deployment-structure.xml
index 58ddb4a..56e2023 100644
--- a/adapters/mso-vnf-adapter/WebContent/WEB-INF/jboss-deployment-structure.xml
+++ b/adapters/mso-vnf-adapter/WebContent/WEB-INF/jboss-deployment-structure.xml
@@ -5,12 +5,17 @@
 			<module name="org.apache.log4j" />
 			<module name="org.slf4j" />
 			<module name="org.slf4j.impl" />
+			<module name="org.jboss.resteasy.resteasy-jackson-provider" />
+			<module name="org.jboss.resteasy.resteasy-jettison-provider" />
 		</exclusions>
 		<dependencies>
 			    <module name="org.jboss.jandex" slot="main" />
                 <module name="org.javassist" slot="main" />
                 <module name="org.antlr" slot="main" />
                 <module name="org.dom4j" slot="main" />
-		</dependencies>
+                <module name="org.jboss.resteasy.resteasy-jackson2-provider" services="import" />
+                <!-- This module contain the ProviderBase class: -->
+                <module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" export="true" />
+                </dependencies>
 	</deployment>
-</jboss-deployment-structure>
\ No newline at end of file
+</jboss-deployment-structure>
diff --git a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/HealthCheckHandler.java b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/HealthCheckHandler.java
index 55f6221..75858b1 100644
--- a/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/HealthCheckHandler.java
+++ b/bpmn/MSOCoreBPMN/src/main/java/org/openecomp/mso/bpmn/core/HealthCheckHandler.java
@@ -54,8 +54,8 @@
 
     private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL);
     private static final String SITENAME = "mso.sitename";
-    private static final String ADPTER_ENDPOINT = "mso.openecomp.adapters.db.endpoint";
-    private static final String OPENECOMP_ADAPTER_NAMESPACE = "mso.openecomp.adapter.namespace";
+    private static final String ADAPTER_ENDPOINT = "mso.adapters.db.endpoint";
+    private static final String ADAPTER_NAMESPACE = "mso.adapters.namespace";
     private static final String CONFIG = "mso.bpmn.urn.properties";
     private static final String CREDENTIAL = "mso.adapters.db.auth";
     private static final String MSOKEY = "mso.msoKey";
@@ -94,17 +94,17 @@
         }
 
         String siteName = props.get(SITENAME);
-        String endpoint = props.get(ADPTER_ENDPOINT);
+        String endpoint = props.get(ADAPTER_ENDPOINT);
 
         if (null == siteName || siteName.length () == 0 || null == endpoint || endpoint.length () == 0) {
 
-            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.DataError, "Unable to load key attributes (" + SITENAME + " or " + ADPTER_ENDPOINT + ") from the config file:" + CONFIG);
+            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.DataError, "Unable to load key attributes (" + SITENAME + " or " + ADAPTER_ENDPOINT + ") from the config file:" + CONFIG);
 
             return NOT_STARTED_RESPONSE;
         }
 
         try {
-            if (!this.getSiteStatus (endpoint, siteName, props.get(CREDENTIAL), props.get(MSOKEY), props.get(OPENECOMP_ADAPTER_NAMESPACE))) {
+            if (!this.getSiteStatus (endpoint, siteName, props.get(CREDENTIAL), props.get(MSOKEY), props.get(ADAPTER_NAMESPACE))) {
                 msoLogger.debug("This site is currently disabled for maintenance.");
                 return HEALTH_CHECK_NOK_RESPONSE;
             }
@@ -146,17 +146,17 @@
         }
 
         String siteName = props.get(SITENAME);
-        String endpoint = props.get(ADPTER_ENDPOINT);
+        String endpoint = props.get(ADAPTER_ENDPOINT);
 
         if (null == siteName || siteName.length () == 0 || null == endpoint || endpoint.length () == 0) {
 
-            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.DataError, "Unable to load key attributes (" + SITENAME + " or " + ADPTER_ENDPOINT + ") from the config file:" + CONFIG);
+            msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.DataError, "Unable to load key attributes (" + SITENAME + " or " + ADAPTER_ENDPOINT + ") from the config file:" + CONFIG);
 
             return NOT_STARTED_RESPONSE;
         }
 
         try {
-            if (!this.getSiteStatus (endpoint, siteName, props.get(CREDENTIAL), props.get(MSOKEY), props.get(OPENECOMP_ADAPTER_NAMESPACE))) {
+            if (!this.getSiteStatus (endpoint, siteName, props.get(CREDENTIAL), props.get(MSOKEY), props.get(ADAPTER_NAMESPACE))) {
                 msoLogger.debug("This site is currently disabled for maintenance.");
                 return HEALTH_CHECK_NOK_RESPONSE;
             }
@@ -169,7 +169,8 @@
         }
 
         try {
-        	ProcessEngines.getDefaultProcessEngine().getIdentityService().createGroupQuery().list();
+        	// TODO: check the appropriate process engine
+        	// ProcessEngines.getDefaultProcessEngine().getIdentityService().createGroupQuery().list();
         } catch (final Exception e) {
 
             msoLogger.error(MessageEnum.GENERAL_EXCEPTION_ARG, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception while verifying Camunda engine", e);
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericE2EServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericE2EServiceInstance.groovy
deleted file mode 100644
index 3302210..0000000
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericE2EServiceInstance.groovy
+++ /dev/null
@@ -1,160 +0,0 @@
-/*-
- * ============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.openecomp.mso.bpmn.infrastructure.scripts;
-
-import static org.apache.commons.lang3.StringUtils.*;
-import groovy.xml.XmlUtil
-import groovy.json.*
-import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor 
-import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil 
-import org.openecomp.mso.bpmn.common.scripts.VidUtils 
-import org.openecomp.mso.bpmn.core.WorkflowException 
-import org.openecomp.mso.bpmn.core.json.JsonUtils 
-import org.openecomp.mso.rest.APIResponse
-
-import java.util.UUID;
-
-import org.camunda.bpm.engine.delegate.BpmnError 
-import org.camunda.bpm.engine.runtime.Execution
-import org.apache.commons.lang3.*
-import org.apache.commons.codec.binary.Base64;
-import org.springframework.web.util.UriUtils
-
-/**
- * This groovy class supports the <class>CreateGenericE2EServiceInstance.bpmn</class> process.
- * flow for E2E ServiceInstance Create
- */
-public class CreateGenericE2EServiceInstance extends AbstractServiceTaskProcessor {
-
-    ExceptionUtil exceptionUtil = new ExceptionUtil()
-
-    JsonUtils jsonUtil = new JsonUtils()
-
-    VidUtils vidUtils = new VidUtils()
-
-    /**
-     * Pre Process the BPMN Flow Request
-     * Inclouds:
-     * Deal with the parameters
-     * generate the service instance id
-     * generate the operation id
-     */
-    public void preProcessRequest (Execution execution) {
-	   def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
-       String msg = ""
-       utils.log("DEBUG", " *** preProcessRequest() *** ", isDebugEnabled)
-       try {
-
-           String siRequest = execution.getVariable("bpmnRequest")
-           utils.logAudit(siRequest)
-
-           String requestId = execution.getVariable("mso-request-id")
-           execution.setVariable("msoRequestId", requestId)
-           utils.log("DEBUG", "Input Request:" + siRequest + " reqId:" + requestId, isDebugEnabled)
-
-           String serviceInstanceId = execution.getVariable("serviceInstanceId")
-           if (isBlank(serviceInstanceId)) {
-               serviceInstanceId = UUID.randomUUID().toString()
-           }
-           utils.log("DEBUG", "Generated new Service Instance:" + serviceInstanceId, isDebugEnabled)
-           serviceInstanceId = UriUtils.encode(serviceInstanceId,"UTF-8")
-           execution.setVariable("serviceInstanceId", serviceInstanceId)
-           
-           String operationId = execution.getVariable("operationId")
-           if (isBlank(operationId)) {
-               operationId = UUID.randomUUID().toString()
-           }
-           utils.log("DEBUG", "Generated new Service Instance Operation:" + operationId, isDebugEnabled)
-           serviceInstanceId = UriUtils.encode(operationId,"UTF-8")
-           execution.setVariable("operationId", operationId)
-           //subscriberInfo, TBD , there is no globalSubscriberId in R1 for E2E Service.
-           //requestInfo TBD , there is no requestDetails for R1 E2E service
-
-           //TBD need to insert operationInfo to RequestDb
-           
-           //set service Instance Name
-           execution.setVariable("serviceInstanceName", jsonUtil.getJsonValue(siRequest, "service.name"))
-           execution.setVariable("serviceDescription", jsonUtil.getJsonValue(siRequest, "service.description"))
-           execution.setVariable("templateId", jsonUtil.getJsonValue(siRequest, "service.templateId"))
-     
-           //serviceParamters
-           String serviceParamters = jsonUtil.getJsonValue(siRequest, "service.parameters")
-           if (isBlank(serviceParamters)) {
-               msg = "Input service paramters is null"
-               utils.log("DEBUG", msg, isDebugEnabled)
-               exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
-           } else
-           {
-               execution.setVariable("serviceParamters", serviceParamters)
-           }
-
-           utils.log("DEBUG", "service parameters:" + serviceParamters,  isDebugEnabled)
-       } catch (BpmnError e) {
-           throw e;
-       } catch (Exception ex){
-           msg = "Exception in preProcessRequest " + ex.getMessage()
-           utils.log("DEBUG", msg, isDebugEnabled)
-           exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-       }
-       utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
-	}
-
-    /**
-     * send the sync response
-     * the response incloudes the instance id and the operation id
-     */
-    public void sendSyncResponse(Execution execution) {
-        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
-        utils.log("DEBUG", " *** sendSyncResponse *** ", isDebugEnabled)
-
-        try {
-            String requestId = execution.getVariable("msoRequestId")
-            String serviceInstanceId = execution.getVariable("serviceInstanceId")
-            String operationId = execution.getVariable("operationId")
-            // RESTResponse for API Handler (APIH) Reply Task
-            String createServiceRestResponse = """{"service":{"serviceId":"${serviceInstanceId}","operationId":"${operationId}"}}""".trim()
-            utils.log("DEBUG", " sendSyncResponse to APIH:" + "\n" + createServiceRestResponse, isDebugEnabled)
-            sendWorkflowResponse(execution, 202, createServiceRestResponse)
-            execution.setVariable("sentSyncResponse", true)
-
-        } catch (Exception ex) {
-            String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage()
-            utils.log("DEBUG", msg, isDebugEnabled)
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-        }
-        utils.log("DEBUG"," ***** Exit sendSyncResopnse *****",  isDebugEnabled)
-    }
-
-    public void preCreateRequest(Execution execution) {
-    }
-
-    public void postConfigRequest(Execution execution) {
-    }
-
-    public void preVFCRequest(Execution execution) {
-    }
-
-    public void preAdaptorDataRequest(Execution execution) {
-    }
-
-    public void preSDNCRequest(Execution execution) {
-    }
-}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy
new file mode 100644
index 0000000..4a7f474
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVFCNetworkServiceInstance.groovy
@@ -0,0 +1,119 @@
+/*-
+ * ============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.openecomp.mso.bpmn.infrastructure.scripts;
+
+import static org.apache.commons.lang3.StringUtils.*;
+import groovy.xml.XmlUtil
+import groovy.json.*
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor 
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil 
+import org.openecomp.mso.bpmn.common.scripts.VidUtils 
+import org.openecomp.mso.bpmn.core.WorkflowException 
+import org.openecomp.mso.bpmn.core.json.JsonUtils 
+import org.openecomp.mso.rest.APIResponse
+
+import java.util.UUID;
+
+import org.camunda.bpm.engine.delegate.BpmnError 
+import org.camunda.bpm.engine.runtime.Execution
+import org.apache.commons.lang3.*
+import org.apache.commons.codec.binary.Base64;
+import org.springframework.web.util.UriUtils
+
+/**
+ * This groovy class supports the <class>CreateGenericE2EServiceInstance.bpmn</class> process.
+ * flow for E2E ServiceInstance Create
+ */
+public class CreateGenericE2EServiceInstance extends AbstractServiceTaskProcessor {
+
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+    JsonUtils jsonUtil = new JsonUtils()
+
+    VidUtils vidUtils = new VidUtils()
+
+    /**
+     * Pre Process the BPMN Flow Request
+     * Inclouds:
+     * Deal with the parameters
+     * generate the service instance id
+     * generate the operation id
+     */
+    public void preProcessRequest (Execution execution) {
+	   def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+       String msg = ""
+       utils.log("DEBUG", " *** preProcessRequest() *** ", isDebugEnabled)
+       try {                    
+           String globalSubscriberId = execution.getVariable("globalSubscriberId")
+           utils.log("DEBUG", "globalSubscriberId:" + globalSubscriberId, isDebugEnabled)
+           String serviceType = execution.getVariable("serviceType")
+           utils.log("DEBUG", "serviceType:" + serviceType, isDebugEnabled)
+           String serviceId = execution.getVariable("serviceId")
+           utils.log("DEBUG", "serviceId:" + serviceId, isDebugEnabled)
+           String operationId = execution.getVariable("operationId")
+           utils.log("DEBUG", "serviceType:" + serviceType, isDebugEnabled)
+           String nodeTemplateUUID = execution.getVariable("nodeTemplateUUID")
+           utils.log("DEBUG", "globalSubscriberId:" + globalSubscriberId, isDebugEnabled)
+           /*
+            * segmentInformation needed as a object of segment
+            * {
+            *     "domain":"",
+            *     "nodeTemplateName":"",
+            *     "nodeType":"",
+            *     "nsParameters":{
+            *       //this is the nsParameters sent to VF-C
+            *     }
+            * }
+            */
+           String siRequest = execution.getVariable("segmentInformation")
+           utils.log("DEBUG", "Input Request:" + siRequest, isDebugEnabled)
+           String nsOperationKey = "{\"globalSubscriberId\":" + globalSubscriberId + ",\"serviceType:\""
+                 + serviceType + ",\"serviceId\":" + serviceId + ",\"operationId\":" + operationId
+                 +",\"nodeTemplateUUID\":" + nodeTemplateUUID + "}";
+           execution.setVariable("nsOperationKey", nsOperationKey);
+           execution.setVariable("nsParameters", jsonUtil.getJsonValue(siRequest, "nsParameters"))
+
+       } catch (BpmnError e) {
+           throw e;
+       } catch (Exception ex){
+           msg = "Exception in preProcessRequest " + ex.getMessage()
+           utils.log("DEBUG", msg, isDebugEnabled)
+           exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+       }
+       utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+	}
+
+
+    public void createNetworkService(Execution execution) {
+    }
+
+    public void instantiateNetworkService(Execution execution) {
+    }
+
+    public void queryNSProgress(Execution execution) {
+    }
+
+    public void timeDelay(Execution execution) {
+    }
+
+    public void finishNSCreate(Execution execution) {
+    }
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/CreateVcpeResCustService.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/CreateVcpeResCustService.groovy
new file mode 100644
index 0000000..3b24ebf
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/CreateVcpeResCustService.groovy
@@ -0,0 +1,883 @@
+/*
+ * Â© 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe.scripts;
+
+import groovy.xml.XmlUtil
+import groovy.json.*
+
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.common.scripts.VidUtils
+import org.openecomp.mso.bpmn.core.RollbackData
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.core.domain.*
+
+import java.util.UUID;
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.json.JSONObject;
+import org.json.JSONArray;
+import org.apache.commons.lang3.*
+import org.apache.commons.codec.binary.Base64;
+import org.springframework.web.util.UriUtils;
+
+/**
+ * This groovy class supports the <class>CreateVcpeResCustService.bpmn</class> process.
+ *
+ * @author ek1439
+ *
+ */
+public class CreateVcpeResCustService extends AbstractServiceTaskProcessor {
+
+	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(Execution execution){
+		/* Initialize all the process variables in this block */
+
+		execution.setVariable("createVcpeServiceRequest", "")
+		execution.setVariable("globalSubscriberId", "")
+		execution.setVariable("serviceInstanceName", "")
+		execution.setVariable("msoRequestId", "")
+		execution.setVariable("CVRCS_NetworksCreatedCount", 0)
+		execution.setVariable("CVRCS_VnfsCreatedCount", 0)
+		execution.setVariable("productFamilyId", "")
+		execution.setVariable("brgWanMacAddress", "")
+
+		//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 (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+
+		utils.log("DEBUG", " ***** Inside preProcessRequest CreateVcpeResCustService Request ***** ", isDebugEnabled)
+
+		try {
+			// initialize flow variables
+			InitializeProcessVariables(execution)
+
+			// check for incoming json message/input
+			String createVcpeServiceRequest = execution.getVariable("bpmnRequest")
+			utils.logAudit(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()
+				utils.log("DEBUG", " Generated new Service Instance: " + serviceInstanceId , isDebugEnabled)
+			} else {
+				utils.log("DEBUG", "Using provided Service Instance ID: " + serviceInstanceId , isDebugEnabled)
+			}
+
+			serviceInstanceId = UriUtils.encode(serviceInstanceId,"UTF-8")
+			execution.setVariable("serviceInstanceId", serviceInstanceId)
+
+			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())) {
+				execution.setVariable("source", "VID")
+			} else {
+				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)
+			utils.log("DEBUG", "Incoming subscriptionServiceType is: " + subscriptionServiceType, isDebugEnabled)
+
+			String suppressRollback = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.suppressRollback")
+			execution.setVariable("disableRollback", suppressRollback)
+			utils.log("DEBUG", "Incoming Suppress/Disable Rollback is: " + suppressRollback, isDebugEnabled)
+
+			String productFamilyId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.requestInfo.productFamilyId")
+			execution.setVariable("productFamilyId", productFamilyId)
+			utils.log("DEBUG", "Incoming productFamilyId is: " + productFamilyId, isDebugEnabled)
+			
+			String subscriberInfo = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.subscriberInfo")
+			execution.setVariable("subscriberInfo", subscriberInfo)
+			utils.log("DEBUG", "Incoming subscriberInfo is: " + subscriberInfo, 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 {
+				  name, value -> inputMap.put(name, value)
+					if (name.equals("BRG_WAN_MAC_Address"))
+							execution.setVariable("brgWanMacAddress", value)
+			  }
+		  }
+
+		  utils.log("DEBUG", "User Input Parameters map: " + userParams.toString(), isDebugEnabled)
+		  execution.setVariable("serviceInputParams", inputMap)
+
+			utils.log("DEBUG", "Incoming brgWanMacAddress is: " + execution.getVariable('brgWanMacAddress'), isDebugEnabled)
+
+			//For Completion Handler & Fallout Handler
+			String requestInfo =
+			"""<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+					<request-id>${requestId}</request-id>
+					<action>CREATE</action>
+					<source>${source}</source>
+				   </request-info>"""
+
+			execution.setVariable("CVRCS_requestInfo", requestInfo)
+
+			utils.log("DEBUG", " ***** Completed preProcessRequest CreateVcpeResCustService Request ***** ", isDebugEnabled)
+
+		} 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 (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		utils.log("DEBUG", " ***** Inside sendSyncResponse of CreateVcpeResCustService ***** ", isDebugEnabled)
+
+		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()
+
+			utils.log("DEBUG", " sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse, isDebugEnabled)
+			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(Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		try {
+			utils.log("DEBUG", " ***** Inside prepareDecomposeService of CreateVcpeResCustService ***** ", isDebugEnabled)
+
+			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)
+
+			utils.log("DEBUG", " ***** Completed prepareDecomposeService of CreateVcpeResCustService ***** ", isDebugEnabled)
+		} 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(Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		try {
+			utils.log("DEBUG", " ***** Inside prepareCreateServiceInstance of CreateVcpeResCustService ***** ", isDebugEnabled)
+
+			/*
+			 * 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.toJsonString())
+
+			utils.log("DEBUG", " ***** Completed prepareCreateServiceInstance of CreateVcpeResCustService ***** ", isDebugEnabled)
+		} 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 (Execution execution){
+		def method = getClass().getSimpleName() + '.postProcessServiceInstanceCreate(' +'execution=' + execution.getId() +')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+		String source = execution.getVariable("source")
+		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.openecomp.mso/requestsdb">
+			<soapenv:Header/>
+			<soapenv:Body>
+			<req:updateInfraRequest>
+				<requestId>${requestId}</requestId>
+				<lastModifiedBy>BPEL</lastModifiedBy>
+				<serviceInstanceId>${serviceInstanceId}</serviceInstanceId>
+				<serviceInstanceName>${serviceInstanceName}</serviceInstanceName>
+			</req:updateInfraRequest>
+			</soapenv:Body>
+			</soapenv:Envelope>
+			"""
+			execution.setVariable("CVRCS_setUpdateDbInstancePayload", payload)
+			utils.logAudit("CVRCS_setUpdateDbInstancePayload: " + payload)
+			logDebug('Exited ' + method, isDebugLogEnabled)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error - Occured in" + method)
+		}
+	}
+
+
+	public void processDecomposition (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		utils.log("DEBUG", " ***** Inside getDataFromDecomposition() of CreateVcpeResCustService ***** ", isDebugEnabled)
+
+		try {
+
+			ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+			List<NetworkResource> networkList = serviceDecomposition.getServiceNetworks()
+
+
+			execution.setVariable("networkList", networkList)
+			execution.setVariable("networkListString", networkList.toString())
+
+			utils.log("DEBUG", "networkList: "+ networkList, isDebugEnabled)
+
+			if (networkList != null && networkList.size() > 0) {
+				execution.setVariable("CVRCS_NetworksCount", networkList.size())
+				utils.log("DEBUG", "networks to create: "+ networkList.size(), isDebugEnabled)
+			} else {
+				execution.setVariable("CVRCS_NetworksCount", 0)
+				utils.log("DEBUG", "no networks to create based upon serviceDecomposition content", isDebugEnabled)
+			}
+
+			// VNFs
+			List<VnfResource> vnfList = serviceDecomposition.getServiceVnfs()
+			execution.setVariable("vnfList", vnfList)
+			execution.setVariable("vnfListString", vnfList.toString())
+
+			String vnfModelInfoString = ""
+			if (vnfList != null && vnfList.size() > 0) {
+				execution.setVariable("CVRCS_VNFsCount", vnfList.size())
+				utils.log("DEBUG", "vnfs to create: "+ vnfList.size(), isDebugEnabled)
+				ModelInfo vnfModelInfo = vnfList[0].getModelInfo()
+
+				vnfModelInfoString = vnfModelInfo.toString()
+				String vnfModelInfoWithRoot = vnfModelInfo.toString()
+				vnfModelInfoString = jsonUtil.getJsonValue(vnfModelInfoWithRoot, "modelInfo")
+			} else {
+					execution.setVariable("CVRCS_VNFsCount", 0)
+					utils.log("DEBUG", "no vnfs to create based upon serviceDecomposition content", isDebugEnabled)
+			}
+
+			execution.setVariable("vnfModelInfo", vnfModelInfoString)
+			execution.setVariable("vnfModelInfoString", vnfModelInfoString)
+			utils.log("DEBUG", " vnfModelInfoString :" + vnfModelInfoString, isDebugEnabled)
+
+			utils.log("DEBUG", " ***** Completed getDataFromDecomposition() of CreateVcpeResCustService ***** ", isDebugEnabled)
+		} catch (Exception ex) {
+			sendSyncError(execution)
+		   String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. getDataFromDecomposition() - " + ex.getMessage()
+		   utils.log("DEBUG", exceptionMessage, isDebugEnabled)
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+	}
+
+	// *******************************
+	//     Generate Network request Section
+	// *******************************
+	public void prepareNetworkCreate (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		try {
+			utils.log("DEBUG", " ***** Inside preparenNetworkCreate of CreateVcpeResCustService ***** ", isDebugEnabled)
+
+
+			String createVcpeServiceRequest = execution.getVariable("createVcpeServiceRequest")
+
+			List<NetworkResource> networkList = execution.getVariable("networkList")
+			utils.log("DEBUG", "networkList: "+ networkList, isDebugEnabled)
+
+			Integer networksCreatedCount = execution.getVariable("CVRCS_NetworksCreatedCount")
+			String networkModelInfoString = ""
+
+			if (networkList != null) {
+				utils.log("DEBUG", " getting model info for network # :" + networksCreatedCount, isDebugEnabled)
+				ModelInfo networkModelInfo = networkList[networksCreatedCount.intValue()].getModelInfo()
+				//Currently use String representation in JSON format as an input
+				//execution.setVariable("networkModelInfo", networkModelInfo)
+				networkModelInfoString = networkModelInfo.toJsonStringNoRootName()
+			} else {
+				String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected number of networks to create - " + ex.getMessage()
+				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+			}
+
+			//Currently use String representation in JSON format as an input
+			execution.setVariable("networkModelInfo", networkModelInfoString)
+			utils.log("DEBUG", " networkModelInfoString :" + networkModelInfoString, isDebugEnabled)
+
+			// extract cloud configuration
+			String lcpCloudRegionId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.cloudConfiguration.lcpCloudRegionId")
+			execution.setVariable("lcpCloudRegionId", lcpCloudRegionId)
+			utils.log("DEBUG","lcpCloudRegionId: "+ lcpCloudRegionId, isDebugEnabled)
+			String tenantId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.cloudConfiguration.tenantId")
+			execution.setVariable("tenantId", tenantId)
+			utils.log("DEBUG","tenantId: "+ tenantId, isDebugEnabled)
+
+			String sdncVersion = execution.getVariable("sdncVersion")
+			utils.log("DEBUG","sdncVersion: "+ sdncVersion, isDebugEnabled)
+
+//			List<VnfResource> vnfList = execution.getVariable("vnfList")
+//			utils.log("DEBUG", "vnfList: "+ vnfList.toString(), isDebugEnabled)
+//
+//			String vnfModelInfo = execution.getVariable("vnfModelInfo")
+//			utils.log("DEBUG", "vnfModelInfo: "+ vnfModelInfo, isDebugEnabled)
+
+			utils.log("DEBUG", " ***** Completed preparenNetworkCreate of CreateVcpeResCustService ***** ", isDebugEnabled)
+		} catch (Exception ex) {
+			// try error in method block
+			String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method prepareNetworkCreate() - " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+	 }
+
+	// *******************************
+	//     Validate Network request Section -> increment count
+	// *******************************
+	public void validateNetworkCreate (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		try {
+			utils.log("DEBUG", " ***** Inside validateNetworkCreate of CreateVcpeResCustService ***** ", isDebugEnabled)
+
+			Integer networksCreatedCount = execution.getVariable("CVRCS_NetworksCreatedCount")
+			networksCreatedCount++
+			execution.setVariable("CVRCS_NetworksCreatedCount", networksCreatedCount)
+
+			execution.setVariable("DCRENI_rollbackData"+networksCreatedCount, execution.getVariable("DCRENI_rollbackData"))
+
+			utils.log("DEBUG", "networksCreatedCount: "+ networksCreatedCount, isDebugEnabled)
+			utils.log("DEBUG", "DCRENI_rollbackData N : "+ execution.getVariable("DCRENI_rollbackData"+networksCreatedCount), isDebugEnabled)
+
+//			JSONArray vnfList = execution.getVariable("vnfList")
+//			utils.log("DEBUG", "vnfList: "+ vnfList, isDebugEnabled)
+
+			String vnfModelInfo = execution.getVariable("vnfModelInfo")
+			utils.log("DEBUG", "vnfModelInfo: "+ vnfModelInfo, isDebugEnabled)
+
+			List<NetworkResource> networkList = execution.getVariable("networkList")
+			utils.log("DEBUG", "networkList: "+ networkList, isDebugEnabled)
+
+			utils.log("DEBUG", " ***** Completed validateNetworkCreate of CreateVcpeResCustService ***** "+" network # "+networksCreatedCount, isDebugEnabled)
+		} catch (Exception ex) {
+			// try error in method block
+			String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method validateNetworkCreate() - " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+	 }
+
+
+	public void prepareCreateAllottedResourceTXC(Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		try {
+			utils.log("DEBUG", " ***** Inside prepareCreateAllottedResourceTXC of CreateVcpeResCustService ***** ", isDebugEnabled)
+
+			/*
+			 * 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")
+
+			//parentServiceInstanceId
+			//The parentServiceInstanceId will be a Landing Network service.  This value will have been provided to the calling flow by SNIRO query (homing solution).
+			//serviceDecomposition.getServiceNetworks()
+
+			//For 1707, the vIPR Tenant OAM flow will use the BRG allotted resource parent service ID (since it is known that the security zone also comes from the vIPR FW).
+			//Beyond 1707, this would need to be captured somehow in TOSCA model and also provided by SNIRO.
+
+			//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.getServiceAllottedResources()
+			if (allottedResources != null) {
+				Iterator iter = allottedResources.iterator();
+				while (iter.hasNext()){
+					AllottedResource allottedResource = (AllottedResource)iter.next();
+
+					utils.log("DEBUG", " getting model info for AllottedResource # :" + allottedResource.toJsonString(), isDebugEnabled)
+					utils.log("DEBUG", " allottedResource.getAllottedResourceType() :" + allottedResource.getAllottedResourceType(), isDebugEnabled)
+					if(allottedResource.getAllottedResourceType() != null && allottedResource.getAllottedResourceType().equalsIgnoreCase("TunnelXConn")){
+						//set create flag to true
+						execution.setVariable("createTXCAR", true)
+						ModelInfo allottedResourceModelInfo = allottedResource.getModelInfo()
+						execution.setVariable("allottedResourceModelInfoTXC", allottedResourceModelInfo.toJsonString())
+						execution.setVariable("allottedResourceRoleTXC", allottedResource.getAllottedResourceRole())
+						execution.setVariable("allottedResourceTypeTXC", allottedResource.getAllottedResourceType())
+						
+						//from Homing Solution. This is the infraServiceInstanceId in the BRG Allotted Resource decomposition structure.
+						execution.setVariable("parentServiceInstanceIdTXC", allottedResource.getHomingSolution().getServiceInstanceId())
+					}
+				}
+			}
+
+			//Populate with the A&AI network ID (l3-network object) for the Tenant OAM network that was created in prior step
+			//String sourceNetworkId = execution.getVariable("networkId")
+			//execution.setVariable("sourceNetworkId", sourceNetworkId)
+			//Populate with the network-role (from A&AI l3-network object) for the Tenant OAM network from prior step
+			
+			//List<NetworkResource> networkResources = serviceDecomposition.getServiceNetworks()
+			//if (networkResources != null) {
+				//Iterator iter = networkResources.iterator();
+				//while (iter.hasNext()){
+					//NetworkResource networkResource = (NetworkResource)iter.next();
+					//execution.setVariable("sourceNetworkRole", networkResource.getNetworkRole())
+				//}
+			//}
+
+			//unit test only
+			String allottedResourceId = execution.getVariable("allottedResourceId")
+			execution.setVariable("allottedResourceIdTXC", allottedResourceId)
+			utils.log("DEBUG", "setting allottedResourceId CreateVcpeResCustService "+allottedResourceId, isDebugEnabled)
+			
+			utils.log("DEBUG", " ***** Completed prepareCreateAllottedResourceTXC of CreateVcpeResCustService ***** ", isDebugEnabled)
+		} 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(Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		try {
+			utils.log("DEBUG", " ***** Inside prepareCreateAllottedResourceBRG of CreateVcpeResCustService ***** ", isDebugEnabled)
+
+			/*
+			 * 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")
+
+			//parentServiceInstanceId
+			//The parentServiceInstanceId will be a Landing Network service.  This value will have been provided to the calling flow by SNIRO query (homing solution).
+			//serviceDecomposition.getServiceNetworks()
+
+			//For 1707, the vIPR Tenant OAM flow will use the BRG allotted resource parent service ID (since it is known that the security zone also comes from the vIPR FW).
+			//Beyond 1707, this would need to be captured somehow in TOSCA model and also provided by SNIRO.
+
+			//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.getServiceAllottedResources()
+			if (allottedResources != null) {
+				Iterator iter = allottedResources.iterator();
+				while (iter.hasNext()){
+					AllottedResource allottedResource = (AllottedResource)iter.next();
+
+					utils.log("DEBUG", " getting model info for AllottedResource # :" + allottedResource.toJsonString(), isDebugEnabled)
+					utils.log("DEBUG", " allottedResource.getAllottedResourceType() :" + allottedResource.getAllottedResourceType(), isDebugEnabled)
+					if (allottedResource.getAllottedResourceType() != null && allottedResource.getAllottedResourceType().equalsIgnoreCase("BRG")) {
+						//set create flag to true
+						execution.setVariable("createBRGAR", true)
+						ModelInfo allottedResourceModelInfo = allottedResource.getModelInfo()
+						execution.setVariable("allottedResourceModelInfoBRG", allottedResourceModelInfo.toJsonString())
+						execution.setVariable("allottedResourceRoleBRG", allottedResource.getAllottedResourceRole())
+						execution.setVariable("allottedResourceTypeBRG", allottedResource.getAllottedResourceType())
+						//For 1707, the vIPR Tenant OAM flow will use the BRG allotted resource parent service ID (since it is known that the security zone also comes from the vIPR FW).
+						//This Id should be taken from the homing solution for the BRG resource. 
+						//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).
+						
+						//from Homing Solution. This is the infraServiceInstanceId in the BRG Allotted Resource decomposition structure.
+						execution.setVariable("parentServiceInstanceIdBRG", allottedResource.getHomingSolution().getServiceInstanceId())
+					}
+				}
+			}
+
+			//Populate with the A&AI network ID (l3-network object) for the Tenant OAM network that was created in prior step
+			//String sourceNetworkId = execution.getVariable("networkId")
+			//execution.setVariable("sourceNetworkId", sourceNetworkId)
+			//Populate with the network-role (from A&AI l3-network object) for the Tenant OAM network from prior step
+			
+			//List<NetworkResource> networkResources = serviceDecomposition.getServiceNetworks()
+			//if (networkResources != null) {
+				//Iterator iter = networkResources.iterator();
+				//while (iter.hasNext()){
+					//NetworkResource networkResource = (NetworkResource)iter.next();
+					//execution.setVariable("sourceNetworkRole", networkResource.getNetworkRole())
+				//}
+			//}
+
+			//unit test only
+			String allottedResourceId = execution.getVariable("allottedResourceId")
+			execution.setVariable("allottedResourceIdBRG", allottedResourceId)
+			utils.log("DEBUG", "setting allottedResourceId CreateVcpeResCustService "+allottedResourceId, isDebugEnabled)
+			
+			utils.log("DEBUG", " ***** Completed prepareCreateAllottedResourceBRG of CreateVcpeResCustService ***** ", isDebugEnabled)
+		} 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 (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		try {
+			utils.log("DEBUG", " ***** Inside prepareVnfAndModulesCreate of CreateVcpeResCustService ***** ", isDebugEnabled)
+
+			//			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)
+			utils.log("DEBUG","productFamilyId: "+ productFamilyId, isDebugEnabled)
+
+			List<VnfResource> vnfList = execution.getVariable("vnfList")
+
+			Integer vnfsCreatedCount = execution.getVariable("CVRCS_VnfsCreatedCount")
+			String vnfModelInfoString = null;
+
+			if (vnfList != null && vnfList.size() > 0 ) {
+				utils.log("DEBUG", "getting model info for vnf # " + vnfsCreatedCount, isDebugEnabled)
+				ModelInfo vnfModelInfo1 = vnfList[0].getModelInfo()
+				utils.log("DEBUG", "got 0 ", isDebugEnabled)
+				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")
+			}
+
+			utils.log("DEBUG", " vnfModelInfoString :" + vnfModelInfoString, isDebugEnabled)
+
+			// extract cloud configuration
+			String lcpCloudRegionId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.cloudConfiguration.lcpCloudRegionId")
+			execution.setVariable("lcpCloudRegionId", lcpCloudRegionId)
+			utils.log("DEBUG","lcpCloudRegionId: "+ lcpCloudRegionId, isDebugEnabled)
+			String tenantId = jsonUtil.getJsonValue(createVcpeServiceRequest, "requestDetails.cloudConfiguration.tenantId")
+			execution.setVariable("tenantId", tenantId)
+			utils.log("DEBUG","tenantId: "+ tenantId, isDebugEnabled)
+
+			String sdncVersion = execution.getVariable("sdncVersion")
+			utils.log("DEBUG","sdncVersion: "+ sdncVersion, isDebugEnabled)
+
+			utils.log("DEBUG", " ***** Completed prepareVnfAndModulesCreate of CreateVcpeResCustService ***** ", isDebugEnabled)
+		} 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 (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		try {
+			utils.log("DEBUG", " ***** Inside validateVnfCreate of CreateVcpeResCustService ***** ", isDebugEnabled)
+
+			Integer vnfsCreatedCount = execution.getVariable("CVRCS_VnfsCreatedCount")
+			vnfsCreatedCount++
+
+			execution.setVariable("CVRCS_VnfsCreatedCount", vnfsCreatedCount)
+
+			utils.log("DEBUG", " ***** Completed validateVnfCreate of CreateVcpeResCustService ***** "+" vnf # "+vnfsCreatedCount, isDebugEnabled)
+		} 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)
+		}
+	 }
+
+	// *******************************
+	//     Validate Network request Section -> decrement count
+	// *******************************
+	public void validateNetworkRollback (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		try {
+			utils.log("DEBUG", " ***** Inside validateNetworkRollback of CreateVcpeResCustService ***** ", isDebugEnabled)
+
+			Integer networksCreatedCount = execution.getVariable("CVRCS_NetworksCreatedCount")
+			networksCreatedCount--
+
+			execution.setVariable("CVRCS_NetworksCreatedCount", networksCreatedCount)
+
+			execution.setVariable("DCRENI_rollbackData", execution.getVariable("DCRENI_rollbackData"+networksCreatedCount))
+
+			utils.log("DEBUG", " ***** Completed validateNetworkRollback of CreateVcpeResCustService ***** "+" network # "+networksCreatedCount, isDebugEnabled)
+		} catch (Exception ex) {
+			// try error in method block
+			String exceptionMessage = "Bpmn error encountered in CreateVcpeResCustService flow. Unexpected Error from method validateNetworkRollback() - " + ex.getMessage()
+			//exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+			utils.log("DEBUG", exceptionMessage, isDebugEnabled)
+			execution.setVariable("CVRCS_NetworksCreatedCount", 0)
+			utils.log("ERROR", exceptionMessage, true)
+		}
+	 }
+
+	// *****************************************
+	//     Prepare Completion request Section
+	// *****************************************
+	public void postProcessResponse (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		utils.log("DEBUG", " ***** Inside postProcessResponse of CreateVcpeResCustService ***** ", isDebugEnabled)
+
+		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.openecomp/mso/workflow/schema/v1"
+									xmlns:ns="http://org.openecomp/mso/request/types/v1">
+							<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+								<request-id>${requestId}</request-id>
+								<action>CREATE</action>
+								<source>${source}</source>
+							</request-info>
+							<status-message>Service Instance has been created successfully via macro orchestration</status-message>
+							<serviceInstanceId>${serviceInstanceId}</serviceInstanceId>
+							<mso-bpel-name>BPMN macro create</mso-bpel-name>
+						</aetgt:MsoCompletionRequest>"""
+
+			// Format Response
+			String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+
+			utils.logAudit(xmlMsoCompletionRequest)
+			execution.setVariable("CVRCS_Success", true)
+			execution.setVariable("CVRCS_CompleteMsoProcessRequest", xmlMsoCompletionRequest)
+			utils.log("DEBUG", " SUCCESS flow, going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest, isDebugEnabled)
+		} 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 (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** preProcessRollback of CreateVcpeResCustService ***** ", isDebugEnabled)
+		try {
+
+			Object workflowException = execution.getVariable("WorkflowException");
+
+			if (workflowException instanceof WorkflowException) {
+				utils.log("DEBUG", "Prev workflowException: " + workflowException.getErrorMessage(), isDebugEnabled)
+				execution.setVariable("prevWorkflowException", workflowException);
+				//execution.setVariable("WorkflowException", null);
+			}
+		} catch (BpmnError e) {
+			utils.log("DEBUG", "BPMN Error during preProcessRollback", isDebugEnabled)
+		} catch(Exception ex) {
+			String msg = "Exception in preProcessRollback. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+		utils.log("DEBUG"," *** Exit preProcessRollback of CreateVcpeResCustService *** ", isDebugEnabled)
+	}
+
+	public void postProcessRollback (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** postProcessRollback of CreateVcpeResCustService ***** ", isDebugEnabled)
+		String msg = ""
+		try {
+			Object workflowException = execution.getVariable("prevWorkflowException");
+			if (workflowException instanceof WorkflowException) {
+				utils.log("DEBUG", "Setting prevException to WorkflowException: ", isDebugEnabled)
+				execution.setVariable("WorkflowException", workflowException);
+			}
+		} catch (BpmnError b) {
+			utils.log("DEBUG", "BPMN Error during postProcessRollback", isDebugEnabled)
+			throw b;
+		} catch(Exception ex) {
+			msg = "Exception in postProcessRollback. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+		utils.log("DEBUG"," *** Exit postProcessRollback of CreateVcpeResCustService *** ", isDebugEnabled)
+	}
+
+	public void prepareFalloutRequest(Execution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		utils.log("DEBUG", " *** STARTED CreateVcpeResCustService prepareFalloutRequest Process *** ", isDebugEnabled)
+
+		try {
+			WorkflowException wfex = execution.getVariable("WorkflowException")
+			utils.log("DEBUG", " Incoming Workflow Exception: " + wfex.toString(), isDebugEnabled)
+			String requestInfo = execution.getVariable("CVRCS_requestInfo")
+			utils.log("DEBUG", " Incoming Request Info: " + requestInfo, isDebugEnabled)
+
+			//TODO. hmmm. there is no way to UPDATE error message.
+//			String errorMessage = wfex.getErrorMessage()
+//			boolean successIndicator = execution.getVariable("DCRESI_rollbackSuccessful")
+//			if (successIndicator){
+//				errorMessage = errorMessage + ". Rollback successful."
+//			} else {
+//				errorMessage = errorMessage + ". Rollback not completed."
+//			}
+
+			String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo)
+
+			execution.setVariable("CVRCS_falloutRequest", falloutRequest)
+
+		} catch (Exception ex) {
+			utils.log("DEBUG", "Error Occured in CreateVcpeResCustService prepareFalloutRequest Process " + ex.getMessage(), isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in CreateVcpeResCustService prepareFalloutRequest Process")
+		}
+		utils.log("DEBUG", "*** COMPLETED CreateVcpeResCustService prepareFalloutRequest Process ***", isDebugEnabled)
+	}
+
+
+	public void sendSyncError (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix", Prefix)
+
+		utils.log("DEBUG", " ***** Inside sendSyncError() of CreateVcpeResCustService ***** ", isDebugEnabled)
+
+		try {
+			String errorMessage = ""
+			if (execution.getVariable("WorkflowException") instanceof WorkflowException) {
+				WorkflowException wfe = execution.getVariable("WorkflowException")
+				errorMessage = wfe.getErrorMessage()
+			} else {
+				errorMessage = "Sending Sync Error."
+			}
+
+			String buildworkflowException =
+				"""<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+					<aetgt:ErrorMessage>${errorMessage}</aetgt:ErrorMessage>
+					<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+				   </aetgt:WorkflowException>"""
+
+			utils.logAudit(buildworkflowException)
+			sendWorkflowResponse(execution, 500, buildworkflowException)
+		} catch (Exception ex) {
+			utils.log("DEBUG", " Sending Sync Error Activity Failed. " + "\n" + ex.getMessage(), isDebugEnabled)
+		}
+	}
+
+	public void processJavaException(Execution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		try{
+			utils.log("DEBUG", "Caught a Java Exception", isDebugEnabled)
+			utils.log("DEBUG", "Started processJavaException Method", isDebugEnabled)
+			utils.log("DEBUG", "Variables List: " + execution.getVariables(), isDebugEnabled)
+			execution.setVariable("CRESI_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){
+			utils.log("ERROR", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		}catch(Exception e){
+			utils.log("DEBUG", "Caught Exception during processJavaException Method: " + e, isDebugEnabled)
+			execution.setVariable("CRESI_unexpectedError", "Exception in processJavaException method")  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception in processJavaException method")
+		}
+		utils.log("DEBUG", "Completed processJavaException Method", isDebugEnabled)
+	}
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DeleteVcpeResCustService.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DeleteVcpeResCustService.groovy
new file mode 100644
index 0000000..960bb5c
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DeleteVcpeResCustService.groovy
@@ -0,0 +1,495 @@
+/*
+ * Â© 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe.scripts
+
+import groovy.xml.XmlUtil
+import groovy.json.*
+
+import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils;
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.common.scripts.NetworkUtils;
+import org.openecomp.mso.bpmn.common.scripts.VidUtils;
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.rest.APIResponse
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+
+import java.util.UUID;
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.json.JSONObject;
+import org.json.JSONArray;
+import org.apache.commons.lang3.*
+import org.apache.commons.codec.binary.Base64;
+import org.springframework.web.util.UriUtils;
+
+/**
+ * This groovy class supports the <class>DeleteVcpeResCustService.bpmn</class> process.
+ *
+ * @author dm4252
+ *
+ */
+public class DeleteVcpeResCustService extends AbstractServiceTaskProcessor {
+
+	String Prefix="DELVAS_"
+	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(Execution execution){
+		/* Initialize all the process variables in this block */
+
+		execution.setVariable("DeleteVcpeResCustServiceRequest", "")
+		execution.setVariable("msoRequestId", "")
+		execution.setVariable("DELVAS_vnfsDeletedCount", 0)
+		execution.setVariable("DELVAS_vnfsCount", 0)
+		execution.setVariable("DELVAS_networksCount", 0)
+		execution.setVariable("DELVAS_networksDeletedCount", 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 (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+
+		utils.log("DEBUG", " ***** Inside preProcessRequest DeleteVcpeResCustService Request ***** ", isDebugEnabled)
+
+		try {
+			// initialize flow variables
+			InitializeProcessVariables(execution)
+
+			// check for incoming json message/input
+			String DeleteVcpeResCustServiceRequest = execution.getVariable("bpmnRequest")
+			utils.logAudit(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())) {
+				execution.setVariable("source", "VID")
+			} else {
+				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)
+			utils.log("DEBUG", "Incoming Suppress/Disable Rollback is: " + suppressRollback, isDebugEnabled)
+			
+			String productFamilyId = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.requestInfo.productFamilyId")
+			execution.setVariable("productFamilyId", productFamilyId)
+			utils.log("DEBUG", "Incoming productFamilyId is: " + productFamilyId, isDebugEnabled)
+			
+			// extract subscriptionServiceType
+			String subscriptionServiceType = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.requestParameters.subscriptionServiceType")
+			execution.setVariable("subscriptionServiceType", subscriptionServiceType)
+			utils.log("DEBUG", "Incoming subscriptionServiceType is: " + subscriptionServiceType, isDebugEnabled)
+			
+			// extract cloud configuration
+			String lcpCloudRegionId = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.cloudConfiguration.lcpCloudRegionId")
+			execution.setVariable("lcpCloudRegionId", lcpCloudRegionId)
+			utils.log("DEBUG","lcpCloudRegionId: "+ lcpCloudRegionId, isDebugEnabled)
+			String tenantId = jsonUtil.getJsonValue(DeleteVcpeResCustServiceRequest, "requestDetails.cloudConfiguration.tenantId")
+			execution.setVariable("tenantId", tenantId)
+			utils.log("DEBUG","tenantId: "+ tenantId, isDebugEnabled)
+
+			String sdncVersion = "1702"
+			execution.setVariable("sdncVersion", sdncVersion)
+			utils.log("DEBUG","sdncVersion: "+ sdncVersion, isDebugEnabled)
+			
+			//For Completion Handler & Fallout Handler
+			String requestInfo =
+			"""<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+					<request-id>${requestId}</request-id>
+					<action>DELETE</action>
+					<source>${source}</source>
+				   </request-info>"""
+
+			execution.setVariable("DELVAS_requestInfo", requestInfo)
+			
+			//Setting for Generic Sub Flows
+			execution.setVariable("GENGS_type", "service-instance")
+			
+			utils.log("DEBUG", " ***** Completed preProcessRequest DeleteVcpeResCustServiceRequest Request ***** ", isDebugEnabled)
+
+		} 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 (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		utils.log("DEBUG", " ***** Inside sendSyncResponse of DeleteVcpeResCustService ***** ", isDebugEnabled)
+
+		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()
+
+			utils.log("DEBUG", " sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse, isDebugEnabled)
+			sendWorkflowResponse(execution, 202, syncResponse)
+		} catch (Exception ex) {
+			String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. Unexpected from method preProcessRequest() - " + ex.getMessage()^M
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+	}
+
+	public void prepareServiceDelete (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " ***** Inside prepareServiceInstanceDelete() of DeleteVcpeResCustService ***** ", isDebugEnabled)
+		
+		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");
+			
+			utils.log("DEBUG", "serviceInstanceAaiRecord: "+serviceInstanceAaiRecord, isDebugEnabled)
+			
+			// determine if AR needs to be deleted
+			boolean DELVAS_TunnelXConn = false
+			boolean DELVAS_BRG = false
+			String TXC_allottedResourceId
+			String BRG_allottedResourceId
+			XmlParser xmlParser = new XmlParser()
+			def groovy.util.Node siNode = xmlParser.parseText(serviceInstanceAaiRecord)
+			def groovy.util.Node arList = utils.getChildNode(siNode, 'allotted-resources')
+			if (arList != null) {
+				def groovy.util.NodeList ars = utils.getIdenticalChildren(arList, 'allotted-resource')
+				for (groovy.util.Node ar in ars) {
+					def groovy.util.Node type = utils.getChildNode(ar, 'type')
+					if ((type != null) && (type.text().equals('TunnelXConn'))) {
+						utils.log("DEBUG","TunnelXConn AR found", isDebugEnabled)
+						def groovy.util.Node id = utils.getChildNode(ar, 'id')
+						if (id != null){
+							DELVAS_TunnelXConn = true
+							TXC_allottedResourceId = id
+						}
+					}
+					if ((type != null) && (type.text().equals('BRG'))) {
+						utils.log("DEBUG","FW AR found", isDebugEnabled)
+						def groovy.util.Node id = utils.getChildNode(ar, 'id')
+						if (id != null){
+							DELVAS_BRG = true
+							BRG_allottedResourceId = id
+						}
+					}
+				}
+			}
+			execution.setVariable("DELVAS_TunnelXConn", DELVAS_TunnelXConn)
+			utils.log("DEBUG", "DELVAS_TunnelXConn : " + DELVAS_TunnelXConn, isDebugEnabled)
+			execution.setVariable("TXC_allottedResourceId", TXC_allottedResourceId)
+			utils.log("DEBUG", "TXC_allottedResourceId : " + TXC_allottedResourceId, isDebugEnabled)
+			
+			execution.setVariable("DELVAS_BRG", DELVAS_BRG)
+			utils.log("DEBUG", "DELVAS_BRG : " + DELVAS_BRG, isDebugEnabled)
+			execution.setVariable("BRG_allottedResourceId", BRG_allottedResourceId)
+			utils.log("DEBUG", "BRG_allottedResourceId : " + BRG_allottedResourceId, isDebugEnabled)
+		
+			String relationship = ""
+			try {
+				relationship = networkUtils.getFirstNodeXml(serviceInstanceAaiRecord, "relationship-list")
+			} catch (Exception ex) {
+				//no relationships found
+			}
+			utils.log("DEBUG", " relationship string - " + relationship, isDebugEnabled)
+			
+			int vnfsCount = 0
+			int networksCount = 0
+			
+			if (relationship != null && relationship.length() > 0){
+				relationship = relationship.trim().replace("tag0:","").replace(":tag0","")
+				
+				// Check if Network TableREf is present, then build a List of network policy
+				List relatedVnfIdList = networkUtils.getRelatedVnfIdList(relationship)
+				vnfsCount = relatedVnfIdList.size()
+				execution.setVariable("DELVAS_vnfsCount", vnfsCount)
+				utils.log("DEBUG", " DELVAS_vnfsCount : " + vnfsCount, isDebugEnabled)
+				execution.setVariable("DELVAS_relatedVnfIdList", relatedVnfIdList)
+				
+				// Check if Network TableREf is present, then build a List of network policy
+				List relatedNetworkIdList = networkUtils.getRelatedNetworkIdList(relationship)
+				networksCount = relatedNetworkIdList.size()
+				execution.setVariable("DELVAS_networksCount", networksCount)
+				utils.log("DEBUG", " DELVAS_networksCount : " + networksCount, isDebugEnabled)
+				execution.setVariable("DELVAS_relatedNetworkIdList", relatedNetworkIdList)
+			} else {
+				execution.setVariable("DELVAS_vnfsCount", 0)
+				utils.log("DEBUG", " DELVAS_vnfsCount : " + vnfsCount, isDebugEnabled)
+				execution.setVariable("DELVAS_networksCount", 0)
+				utils.log("DEBUG", " DELVAS_networksCount : " + networksCount, isDebugEnabled)
+			}
+			
+			utils.log("DEBUG", " ***** Completed prepareServiceInstanceDelete() of DeleteVcpeCusRestService ***** ", isDebugEnabled)
+		} catch (BpmnError e){
+			throw e;
+		} catch (Exception ex) {
+			sendSyncError(execution)
+		   String exceptionMessage = "Bpmn error encountered in DeleteVcpeCusRestService flow. prepareServiceInstanceDelete() - " + ex.getMessage()
+		   utils.log("DEBUG", exceptionMessage, isDebugEnabled)
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+	}
+	
+	
+	// *******************************
+	//     
+	// *******************************
+	public void prepareVnfAndModulesDelete (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		try {
+			utils.log("DEBUG", " ***** Inside prepareVnfAndModulesDelete of DeleteServiceInstanceMacro ***** ", isDebugEnabled)
+
+			List vnfList = execution.getVariable("DELVAS_relatedVnfIdList")
+			Integer vnfsDeletedCount = execution.getVariable("DELVAS_vnfsDeletedCount")
+			String vnfModelInfoString = ""
+			String vnfId = ""
+			if (vnfList.size() > 0 ) {
+				vnfId = vnfList.get(vnfsDeletedCount.intValue())
+			}
+							
+			execution.setVariable("vnfId", vnfId)
+			utils.log("DEBUG", "need to delete vnfId:" + vnfId, isDebugEnabled)
+
+			utils.log("DEBUG", " ***** Completed prepareVnfAndModulesDelete of DeleteServiceInstanceMacro ***** ", isDebugEnabled)
+		} catch (Exception ex) {
+			// try error in method block
+			String exceptionMessage = "Bpmn error encountered in DeleteServiceInstanceMacro flow. Unexpected Error from method prepareVnfAndModulesDelete() - " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+	 }
+	
+	// *******************************
+	//     Validate Vnf request Section -> increment count
+	// *******************************
+	public void validateVnfDelete (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		try {
+			utils.log("DEBUG", " ***** Inside validateVnfDelete of DeleteVcpeCusRestService ***** ", isDebugEnabled)
+
+			String vnfsDeletedCount = execution.getVariable("DELVAS_vnfsDeletedCount")
+			vnfsDeletedCount++
+			
+			execution.setVariable("DELVAS_vnfsDeletedCount", vnfsDeletedCount)
+			
+			utils.log("DEBUG", " ***** Completed validateVnfDelete of DeleteVcpeCusRestService ***** "+" vnf # "+vnfsDeletedCount, isDebugEnabled)
+		} catch (Exception ex) {
+			// try error in method block
+			String exceptionMessage = "Bpmn error encountered in DeleteVcpeCusRestService flow. Unexpected Error from method validateVnfDelete() - " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+	 }
+	
+	// *******************************
+	//     Generate Network request Section
+	// *******************************
+	public void prepareNetworkDelete (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		try {
+			utils.log("DEBUG", " ***** Inside prepareNetworkDelete of DeleteVcpeCusRestService ***** ", isDebugEnabled)
+
+			List networkList = execution.getVariable("DELVAS_relatedNetworkIdList")
+			Integer networksDeletedCount = execution.getVariable("DELVAS_networksDeletedCount")
+
+			String networkId = ""
+			if (networkList.size() > 0) {
+				networkId = networkList.get(networksDeletedCount.intValue())
+			}
+							
+			execution.setVariable("networkId", networkId)
+			utils.log("DEBUG", "need to delete networkId:" + networkId, isDebugEnabled)
+			
+			utils.log("DEBUG", " ***** Completed prepareNetworkDelete of DeleteVcpeCusRestService ***** ", isDebugEnabled)
+		} catch (Exception ex) {
+			// try error in method block
+			String exceptionMessage = q"Bpmn error encountered in DeleteVcpeCusRestService flow. Unexpected Error from method prepareNetworkDelete() - " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+	 }
+	
+	// *******************************
+	//     Validate Network request Section
+	// *******************************
+	public void validateNetworkDelete (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+		try {
+			utils.log("DEBUG", " ***** Inside validateNetworkDelete of DeleteVcpeCusRestService ***** ", isDebugEnabled)
+
+			Integer networksDeletedCount = execution.getVariable("DELVAS_networksDeletedCount")
+			networksDeletedCount++
+			
+			execution.setVariable("DELVAS_networksDeletedCount", networksDeletedCount)
+			
+			utils.log("DEBUG", " ***** Completed validateNetworkDelete of DeleteVcpeCusRestService ***** ", isDebugEnabled)
+		} catch (Exception ex) {
+			// try error in method block
+			String exceptionMessage = "Bpmn error encountered in DeleteVcpeCusRestService flow. Unexpected Error from method validateNetworkDelete() - " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+	 }
+
+	
+	// *****************************************
+	//     Prepare Completion request Section
+	// *****************************************
+	public void postProcessResponse (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " ***** Inside postProcessResponse of DeleteVcpeCusRestService ***** ", isDebugEnabled)
+
+		try {
+			String source = execution.getVariable("source")
+			String requestId = execution.getVariable("msoRequestId")
+
+			String msoCompletionRequest =
+					"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+									xmlns:ns="http://org.openecomp/mso/request/types/v1">
+							<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+								<request-id>${requestId}</request-id>
+								<action>DELETE</action>
+								<source>${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)
+
+			utils.logAudit(xmlMsoCompletionRequest)
+			execution.setVariable("DELVAS_Success", true)
+			execution.setVariable("DELVAS_CompleteMsoProcessRequest", xmlMsoCompletionRequest)
+			utils.log("DEBUG", " SUCCESS flow, going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest, isDebugEnabled)
+		} 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(Execution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** STARTED DeleteVcpeCusRestService prepareFalloutRequest Process *** ", isDebugEnabled)
+
+		try {
+			WorkflowException wfex = execution.getVariable("WorkflowException")
+			utils.log("DEBUG", " Incoming Workflow Exception: " + wfex.toString(), isDebugEnabled)
+			String requestInfo = execution.getVariable("DELVAS_requestInfo")
+			utils.log("DEBUG", " Incoming Request Info: " + requestInfo, isDebugEnabled)
+
+			String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo)
+
+			execution.setVariable("DELVAS_falloutRequest", falloutRequest)
+		} catch (Exception ex) {
+			utils.log("DEBUG", "Error Occured in DeleteVcpeCusRestService prepareFalloutRequest Process " + ex.getMessage(), isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in DeleteVcpeCusRestService prepareFalloutRequest Process")
+		}
+		utils.log("DEBUG", "*** COMPLETED DeleteVcpeCusRestService prepareFalloutRequest Process ***", isDebugEnabled)
+	}
+
+
+	public void sendSyncError (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " ***** Inside sendSyncError() of DeleteServiceInstanceInfra ***** ", isDebugEnabled)
+
+		try {
+			String errorMessage = ""
+			if (execution.getVariable("WorkflowException") instanceof WorkflowException) {
+				WorkflowException wfe = execution.getVariable("WorkflowException")
+				errorMessage = wfe.getErrorMessage()
+			} else {
+				errorMessage = "Sending Sync Error."
+			}
+
+			String buildworkflowException =
+				"""<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
+					<aetgt:ErrorMessage>${errorMessage}</aetgt:ErrorMessage>
+					<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+				   </aetgt:WorkflowException>"""
+
+			utils.logAudit(buildworkflowException)
+			sendWorkflowResponse(execution, 500, buildworkflowException)
+		} catch (Exception ex) {
+			utils.log("DEBUG", " Sending Sync Error Activity Failed. " + "\n" + ex.getMessage(), isDebugEnabled)
+		}
+	}
+
+	public void processJavaException(Execution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		try{
+			utils.log("DEBUG", "Caught a Java Exception", isDebugEnabled)
+			utils.log("DEBUG", "Started processJavaException Method", isDebugEnabled)
+			utils.log("DEBUG", "Variables List: " + execution.getVariables(), isDebugEnabled)
+			execution.setVariable("DELVAS_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){
+			utils.log("ERROR", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		}catch(Exception e){
+			utils.log("DEBUG", "Caught Exception during processJavaException Method: " + e, isDebugEnabled)
+			execution.setVariable("DELVAS_unexpectedError", "Exception in processJavaException method")  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Exception in processJavaException method")
+		}
+		utils.log("DEBUG", "Completed processJavaException Method", isDebugEnabled)
+	}
+
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceBRG.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceBRG.groovy
new file mode 100644
index 0000000..528a804
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceBRG.groovy
@@ -0,0 +1,652 @@
+/*
+ * © 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe.scripts;
+
+import org.openecomp.mso.bpmn.common.scripts.*;
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.core.RollbackData
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.rest.APIResponse
+
+import java.util.UUID;
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.apache.commons.lang3.*
+import org.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+
+
+/**
+ * This groovy class supports the <class>DoCreateAllottedResourceBRG.bpmn</class> process.
+ *
+ * @author
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - isDEbugLogEnabled
+ * @param - disableRollback
+ * @param - failExists  - O
+ * @param - serviceInstanceId
+ * @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{
+
+	String Prefix="DCARBRG_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	public void preProcessRequest (Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessRequest *****",  isDebugEnabled)
+
+		try {
+			execution.setVariable("prefix", Prefix)
+
+			//Config Inputs
+			String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback')
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "URN_mso_workflow_sdncadapter_callback is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			utils.log("DEBUG","SDNC Callback URL: " + sdncCallbackUrl, isDebugEnabled)
+
+			//Request Inputs
+			if (isBlank(execution.getVariable("serviceInstanceId"))){
+				msg = "Input serviceInstanceId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("parentServiceInstanceId"))) {
+				msg = "Input parentServiceInstanceId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceModelInfo"))) {
+				msg = "Input allottedResourceModelInfo is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("vni"))) {
+				msg = "Input vni is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("vgmuxBearerIP"))) {
+				msg = "Input vgmuxBearerIP is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("brgWanMacAddress"))) {
+				msg = "Input brgWanMacAddress is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceRole"))) {
+				msg = "Input allottedResourceRole is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceType"))) {
+				msg = "Input allottedResourceType is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+		}catch(BpmnError b){
+			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+	}
+
+	public void getAaiAR (Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** getAaiAR ***** ", isDebugEnabled)
+
+		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)) {
+			utils.log("DEBUG", errorMsg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, errorMsg)
+		}
+		utils.log("DEBUG"," *****Exit getAaiAR *****", isDebugEnabled)
+	}
+
+	public void createAaiAR(Execution execution) {
+
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** createAaiAR ***** ", isDebugEnabled)
+		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 = execution.getVariable("URN_aai_endpoint")
+			String siResourceLink= execution.getVariable("PSI_resourceLink")
+
+			String siUri = ""
+			utils.log("DEBUG", "PSI_resourceLink:" + siResourceLink, isDebugEnabled)
+
+			if(!isBlank(siResourceLink)) {
+				utils.log("DEBUG", "Incoming PSI Resource Link is: " + siResourceLink, isDebugEnabled)
+				String[] split = siResourceLink.split("/aai/")
+				siUri = "/aai/" + split[1]
+			}
+			else
+			{
+				msg = "Parent Service Link in AAI is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+
+			arUrl = "${aaiEndpoint}${siUri}"  + "/allotted-resources/allotted-resource/" + UriUtils.encode(allottedResourceId,"UTF-8")
+			execution.setVariable("aaiARPath", arUrl)
+			utils.log("DEBUG", "GET AllottedResource AAI URL is:\n" + arUrl, isDebugEnabled)
+
+			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>${allottedResourceId}</id>
+				<description></description>
+				<type>${arType}</type>
+				<role>${arRole}</role>
+				<selflink></selflink>
+				<model-invariant-id>${modelInvariantId}</model-invariant-id>
+				<model-version-id>${modelVersionId}</model-version-id>
+				<model-customization-id>${modelCustomizationId}</model-customization-id>
+				<orchestration-status>PendingCreate</orchestration-status>
+				<operation-status></operation-status>
+				<relationship-list>
+					<relationship>
+               			<related-to>service-instance</related-to>
+               			<related-link>${CSI_resourceLink}</related-link>
+					</relationship>
+				</relationship-list>
+			</allotted-resource>""".trim()
+
+			execution.setVariable("AaiARPayload", payload)
+			utils.log("DEBUG", " payload to create AllottedResource in AAI:" + "\n" + payload, isDebugEnabled)
+
+			APIResponse response = aaiUriUtil.executeAAIPutCall(execution, arUrl, payload)
+			int responseCode = response.getStatusCode()
+			utils.log("DEBUG", "AllottedResource AAI PUT responseCode:" + responseCode, isDebugEnabled)
+
+			String aaiResponse = response.getResponseBodyAsString()
+			aaiResponse = StringEscapeUtils.unescapeXml(aaiResponse)
+			utils.log("DEBUG", "AllottedResource AAI PUT responseStr:" + aaiResponse, isDebugEnabled)
+
+			//200 OK 201 CREATED 202 ACCEPTED
+			if(responseCode == 200 || responseCode == 201 || responseCode == 202 )
+			{
+				utils.log("DEBUG", "AAI PUT AllottedResource received a Good Response", isDebugEnabled)
+			}
+			else{
+				utils.log("DEBUG", "AAI Put AllottedResouce received a Bad Response Code: " + responseCode, isDebugEnabled)
+				exceptionUtil.MapAAIExceptionToWorkflowExceptionGeneric(execution, aaiResponse, responseCode)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}catch(BpmnError b){
+			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		} catch (Exception ex) {
+			msg = "Exception in createAaiAR " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			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)
+		utils.log("DEBUG"," *** Exit createAaiAR*** ", isDebugEnabled)
+	}
+
+	public String buildSDNCRequest(Execution execution, String action, String sdncRequestId) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** buildSDNCRequest *****", isDebugEnabled)
+		String sdncReq = null
+
+		try {
+
+			String allottedResourceId = execution.getVariable("allottedResourceId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			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.openecomp/mso/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+				   <sdncadapter:RequestHeader>
+							<sdncadapter:RequestId>${sdncRequestId}</sdncadapter:RequestId>
+							<sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId>
+							<sdncadapter:SvcAction>${action}</sdncadapter:SvcAction>
+							<sdncadapter:SvcOperation>brg-topology-operation</sdncadapter:SvcOperation>
+							<sdncadapter:CallbackUrl>${callbackUrl}</sdncadapter:CallbackUrl>
+					</sdncadapter:RequestHeader>
+				<sdncadapterworkflow:SDNCRequestData>
+					<request-information>
+						<request-id>${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></subscription-service-type>
+						<ecomp-model-information></ecomp-model-information>
+						<service-instance-id>${parentServiceInstanceId}</service-instance-id>
+						<subscriber-name/>
+						<global-customer-id></global-customer-id>
+					</service-information>
+					<allotted-resource-information>
+						<allotted-resource-id>${allottedResourceId}</allotted-resource-id>    
+						<allotted-resource-type>brg</allotted-resource-type>
+						<parent-service-instance-id>${parentServiceInstanceId}</parent-service-instance-id>   
+						<ecomp-model-information>
+							<model-invariant-uuid>${modelInvariantId}</model-invariant-uuid>
+							<model-uuid>${modelUUId}</model-uuid>
+							<model-customization-uuid>${modelCustomizationId}</model-customization-uuid>
+							<model-version>${modelVersion}</model-version>
+							<model-name>${modelName}</model-name>
+						</ecomp-model-information>
+					</allotted-resource-information>
+					<brg-request-input>
+							<brg-wan-mac-address>${brgWanMacAddress}</brg-wan-mac-address>
+							<vni>${vni}</vni>
+							<vgmux-bearer-ip>${vgmuxBearerIP}</vgmux-bearer-ip>
+					</brg-request-input>
+				</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			utils.log("DEBUG","sdncRequest:\n" + sdncReq, isDebugEnabled)
+			sdncReq = utils.formatXml(sdncReq)
+
+		} catch(Exception ex) {
+			msg = "Exception in buildSDNCRequest. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit buildSDNCRequest *****", isDebugEnabled)
+		return sdncReq
+	}
+
+	public void preProcessSDNCAssign(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCAssign *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncAssignReq = buildSDNCRequest(execution, "assign", sdncRequestId)
+			execution.setVariable("sdncAssignRequest", sdncAssignReq)
+			utils.logAudit("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)
+
+			utils.log("DEBUG","sdncAssignRollbackReq:\n" + sdncAssignRollbackReq, isDebugEnabled)
+			utils.log("DEBUG","rollbackData:\n" + rollbackData.toString(), isDebugEnabled)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCAssign. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCAssign *****", isDebugEnabled)
+	}
+
+	public void preProcessSDNCCreate(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCCreate *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncCreateReq = buildSDNCRequest(execution, "create", sdncRequestId)
+			execution.setVariable("sdncCreateRequest", sdncCreateReq)
+			utils.logAudit("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)
+
+			utils.log("DEBUG","sdncCreateRollbackReq:\n" + sdncCreateRollbackReq, isDebugEnabled)
+			utils.log("DEBUG","rollbackData:\n" + rollbackData.toString(), isDebugEnabled)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCCreate. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCCreate *****", isDebugEnabled)
+	}
+
+	public void preProcessSDNCActivate(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCActivate *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncActivateReq = buildSDNCRequest(execution, "activate", sdncRequestId)
+			execution.setVariable("sdncActivateRequest", sdncActivateReq)
+			utils.logAudit("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)
+
+			utils.log("DEBUG","sdncActivateRollbackReq:\n" + sdncActivateRollbackReq, isDebugEnabled)
+			utils.log("DEBUG","rollbackData:\n" + rollbackData.toString(), isDebugEnabled)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCActivate. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCActivate *****", isDebugEnabled)
+	}
+
+	public void validateSDNCResp(Execution execution, String response, String method){
+
+		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			utils.logAudit("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			utils.logAudit("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				utils.log("DEBUG", "Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response, isDebugLogEnabled)
+
+				if (!"get".equals(method))
+				{
+					def rollbackData = execution.getVariable("rollbackData")
+					rollbackData.put(Prefix, "rollback" +  "SDNC" + method, "true")
+					execution.setVariable("rollbackData", rollbackData)
+				}
+
+			}else{
+				utils.log("DEBUG", "Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.", isDebugLogEnabled)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in validateSDNCResp. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
+	}
+
+	public void preProcessSDNCGet(Execution execution){
+		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", "*** preProcessSDNCGet *** ", isDebugLogEnabled)
+		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.getNodeText1(aaiQueryResponse, "selflink")
+				utils.log("DEBUG", "AR service operation/aaiARSelfLink: " + serviceOperation, isDebugLogEnabled)
+			}
+			else
+			{
+				String response = execution.getVariable("sdncAssignResponse")
+				String data = utils.getNodeXml(response, "response-data")
+				data = data.replaceAll("&lt;", "<")
+				data = data.replaceAll("&gt;", ">")
+				utils.log("DEBUG", "Assign responseData: " + data, isDebugLogEnabled)
+				serviceOperation = utils.getNodeText1(data, "object-path")
+				utils.log("DEBUG", "AR service operation:" + serviceOperation, isDebugLogEnabled)
+			}
+
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String sdncRequestId = UUID.randomUUID().toString()
+			
+			String tsleep = execution.getVariable("junitSleepMs")
+			
+			//workaround for sdnc replication issue
+			sleep(tsleep == null ? 5000 : tsleep as Long)
+
+			//neeed the same url as used by vfmodules
+			String SDNCGetRequest =
+			"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+											xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+											xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+					<sdncadapter:RequestHeader>
+					<sdncadapter:RequestId>${sdncRequestId}</sdncadapter:RequestId>
+					<sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId>
+					<sdncadapter:SvcAction>query</sdncadapter:SvcAction>
+					<sdncadapter:SvcOperation>${serviceOperation}</sdncadapter:SvcOperation>
+					<sdncadapter:CallbackUrl>${callbackUrl}</sdncadapter:CallbackUrl>
+					<sdncadapter:MsoAction>vfmodule</sdncadapter:MsoAction>
+				</sdncadapter:RequestHeader>
+					<sdncadapterworkflow:SDNCRequestData></sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			execution.setVariable("sdncGetRequest", SDNCGetRequest)
+
+		}catch(Exception e){
+			utils.log("ERROR", "Exception Occurred Processing preProcessSDNCGetRequest. Exception is:\n" + e, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + e.getMessage())
+		}
+		utils.log("DEBUG", "*** Exit preProcessSDNCGet *** ", isDebugLogEnabled)
+	}
+	
+	public void updateAaiAROrchStatus(Execution execution, String status){
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** updateAaiAROrchStatus *** ", isDebugEnabled)
+		String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) or create
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
+	}
+	
+	public void generateOutputs(Execution execution)
+	{
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** generateOutputs ***** ", isDebugEnabled)
+		try {
+			String sdncGetResponse = execution.getVariable("enhancedCallbackRequestData") //unescaped
+			utils.log("DEBUG", "resp:" + sdncGetResponse, isDebugEnabled)
+			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.getNodeText1(ari, "allotted-resource-name"))
+		} catch (BpmnError e) {
+			utils.log("DEBUG", "BPMN Error in generateOutputs ", isDebugEnabled)
+		} catch(Exception ex) {
+			String msg = "Exception in generateOutputs " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+		utils.log("DEBUG"," *** Exit generateOutputs *** ", isDebugEnabled)
+		
+	}
+
+	public void preProcessRollback (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** preProcessRollback ***** ", isDebugEnabled)
+		try {
+
+			Object workflowException = execution.getVariable("WorkflowException");
+
+			if (workflowException instanceof WorkflowException) {
+				utils.log("DEBUG", "Prev workflowException: " + workflowException.getErrorMessage(), isDebugEnabled)
+				execution.setVariable("prevWorkflowException", workflowException);
+				//execution.setVariable("WorkflowException", null);
+			}
+		} catch (BpmnError e) {
+			utils.log("DEBUG", "BPMN Error during preProcessRollback", isDebugEnabled)
+		} catch(Exception ex) {
+			String msg = "Exception in preProcessRollback. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+		utils.log("DEBUG"," *** Exit preProcessRollback *** ", isDebugEnabled)
+	}
+
+	public void postProcessRollback (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** postProcessRollback ***** ", isDebugEnabled)
+		String msg = ""
+		try {
+			Object workflowException = execution.getVariable("prevWorkflowException");
+			if (workflowException instanceof WorkflowException) {
+				utils.log("DEBUG", "Setting prevException to WorkflowException: ", isDebugEnabled)
+				execution.setVariable("WorkflowException", workflowException);
+			}
+			execution.setVariable("rollbackData", null)
+		} catch (BpmnError b) {
+			utils.log("DEBUG", "BPMN Error during postProcessRollback", isDebugEnabled)
+			throw b;
+		} catch(Exception ex) {
+			msg = "Exception in postProcessRollback. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+		utils.log("DEBUG"," *** Exit postProcessRollback *** ", isDebugEnabled)
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy
new file mode 100644
index 0000000..0e0f5c2
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy
@@ -0,0 +1,258 @@
+/*
+ * © 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe.scripts;
+
+import org.openecomp.mso.bpmn.common.scripts.*;
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
+import org.openecomp.mso.rest.APIResponse
+
+import java.util.UUID;
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.apache.commons.lang3.*
+import org.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+
+/**
+ * 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{
+
+	String Prefix="DCARBRGRB_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	public void preProcessRequest (Execution execution) {
+		
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessRequest *****",  isDebugEnabled)
+		execution.setVariable("prefix", Prefix)
+		String rbType = "DCARBRG_"
+		try {
+			
+			def rollbackData = execution.getVariable("rollbackData")
+			utils.log("DEBUG", "RollbackData:" + rollbackData, isDebugEnabled)
+
+			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"))
+						
+						utils.log("DEBUG","sdncDeactivate:\n" + execution.getVariable("deactivateSdnc") , isDebugEnabled)
+						utils.log("DEBUG","sdncDelete:\n" + execution.getVariable("deleteSdnc"), isDebugEnabled)
+						utils.log("DEBUG","sdncUnassign:\n" + execution.getVariable("unassignSdnc"), isDebugEnabled)
+						
+						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){
+			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+	}
+
+	// aaiARPath set during query (existing AR)
+	public void updateAaiAROrchStatus(Execution execution, String status){
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = null;
+		utils.log("DEBUG", " *** updateAaiAROrchStatus ***", isDebugEnabled)
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String aaiARPath  = execution.getVariable("aaiARPath")
+		utils.log("DEBUG", " aaiARPath:" + aaiARPath, isDebugEnabled)
+		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
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+		}
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
+	}
+
+	public void validateSDNCResp(Execution execution, String response, String method){
+
+		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			utils.logAudit("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			utils.logAudit("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				utils.log("DEBUG", "Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response, isDebugLogEnabled)
+
+			}else{
+
+				utils.log("DEBUG", "Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.", isDebugLogEnabled)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		} catch (BpmnError e) {
+			if (e.getErrorCode() == 404)
+			{
+				msg = "SDNC rollback " + method + " returned a 404. Proceding with rollback"
+				utils.log("DEBUG", msg, isDebugEnabled)
+			}
+			else {
+				throw e;
+			}
+		} catch(Exception ex) {
+			msg = "Exception in validateSDNCResp. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
+	}
+
+	public void deleteAaiAR(Execution execution){
+		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+		try{
+			utils.log("DEBUG", " *** deleteAaiAR *** ", isDebugLogEnabled)
+			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){
+			utils.log("ERROR", "Exception Occurred Processing preProcessSDNCGetRequest. Exception is:\n" + ex, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + ex.getMessage())
+		}
+		utils.log("DEBUG", " *** Exit deleteAaiAR *** ", isDebugLogEnabled)
+	}
+	
+	public void postProcessRequest(Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** postProcessRequest ***** ", isDebugEnabled)
+		String msg = ""
+		try {
+			execution.setVariable("rollbackData", null)
+			boolean skipRollback = execution.getVariable("skipRollback")
+			if (skipRollback != true)
+			{
+				execution.setVariable("rolledBack", true)
+				utils.log("DEBUG","rolledBack", isDebugEnabled)
+			}
+			utils.log("DEBUG","*** Exit postProcessRequest ***", isDebugEnabled)
+
+		} catch (BpmnError e) {
+			msg = "Bpmn Exception in  postProcessRequest. "
+			utils.log("DEBUG", msg, isDebugEnabled)
+		} catch (Exception ex) {
+			msg = "Exception in postProcessRequest. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+
+	}
+	
+	public void processRollbackException(Execution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** processRollbackException ***** ", isDebugEnabled)
+		try{
+			utils.log("DEBUG", "Caught an Exception in DoCreateAllottedResourceRollback", isDebugEnabled)
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rolledBack", false)
+			execution.setVariable("rollbackError", "Caught exception in AllottedResource Create Rollback")
+			execution.setVariable("WorkflowException", null)
+
+		}catch(BpmnError b){
+			utils.log("DEBUG", "BPMN Error during processRollbackExceptions Method: ", isDebugEnabled)
+		}catch(Exception e){
+			utils.log("DEBUG", "Caught Exception during processRollbackExceptions Method: " + e.getMessage(), isDebugEnabled)
+		}
+
+		utils.log("DEBUG", " Exit processRollbackException", isDebugEnabled)
+	}
+
+	public void processRollbackJavaException(Execution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** processRollbackJavaException ***** ", isDebugEnabled)
+		try{
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rolledBack", false)
+			execution.setVariable("rollbackError", "Caught Java exception in AllottedResource Create Rollback")
+			utils.log("DEBUG", "Caught Exception in processRollbackJavaException", isDebugEnabled)
+
+		}catch(Exception e){
+			utils.log("DEBUG", "Caught Exception in processRollbackJavaException " + e.getMessage(), isDebugEnabled)
+		}
+		utils.log("DEBUG", "***** Exit processRollbackJavaException *****", isDebugEnabled)
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceTXC.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceTXC.groovy
new file mode 100644
index 0000000..28f3d6a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceTXC.groovy
@@ -0,0 +1,643 @@
+/*
+ * © 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe.scripts;
+
+import org.openecomp.mso.bpmn.common.scripts.*;
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.core.RollbackData
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.rest.APIResponse
+
+import java.util.UUID;
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.apache.commons.lang3.*
+import org.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+
+
+/**
+ * This groovy class supports the <class>DoCreateAllottedResourceTXC.bpmn</class> process.
+ *
+ * @author
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - isDEbugLogEnabled
+ * @param - disableRollback
+ * @param - failExists  - O
+ * @param - serviceInstanceId
+ * @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{
+
+	String Prefix="DCARTXC_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	public void preProcessRequest (Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessRequest *****",  isDebugEnabled)
+
+		try {
+			execution.setVariable("prefix", Prefix)
+
+			//Config Inputs
+			String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback')
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "URN_mso_workflow_sdncadapter_callback is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			utils.log("DEBUG","SDNC Callback URL: " + sdncCallbackUrl, isDebugEnabled)
+
+			//Request Inputs
+			if (isBlank(execution.getVariable("serviceInstanceId"))){
+				msg = "Input serviceInstanceId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("parentServiceInstanceId"))) {
+				msg = "Input parentServiceInstanceId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceModelInfo"))) {
+				msg = "Input allottedResourceModelInfo is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("brgWanMacAddress"))) {
+				msg = "Input brgWanMacAddress is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceRole"))) {
+				msg = "Input allottedResourceRole is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceType"))) {
+				msg = "Input allottedResourceType is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+		}catch(BpmnError b){
+			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+	}
+
+	public void getAaiAR (Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** getAaiAR ***** ", isDebugEnabled)
+
+		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)) {
+			utils.log("DEBUG", errorMsg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, errorMsg)
+		}
+		utils.log("DEBUG"," *****Exit getAaiAR *****", isDebugEnabled)
+	}
+
+	public void createAaiAR(Execution execution) {
+
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** createAaiAR ***** ", isDebugEnabled)
+		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 = execution.getVariable("URN_aai_endpoint")
+			String siResourceLink= execution.getVariable("PSI_resourceLink")
+
+			String siUri = ""
+			utils.log("DEBUG", "PSI_resourceLink:" + siResourceLink, isDebugEnabled)
+
+			if(!isBlank(siResourceLink)) {
+				utils.log("DEBUG", "Incoming PSI Resource Link is: " + siResourceLink, isDebugEnabled)
+				String[] split = siResourceLink.split("/aai/")
+				siUri = "/aai/" + split[1]
+			}
+			else
+			{
+				msg = "Parent Service Link in AAI is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+
+			arUrl = "${aaiEndpoint}${siUri}"  + "/allotted-resources/allotted-resource/" + UriUtils.encode(allottedResourceId,"UTF-8")
+			execution.setVariable("aaiARPath", arUrl)
+			utils.log("DEBUG", "GET AllottedResource AAI URL is:\n" + arUrl, isDebugEnabled)
+
+			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>${allottedResourceId}</id>
+				<description></description>
+				<type>${arType}</type>
+				<role>${arRole}</role>
+				<selflink></selflink>
+				<model-invariant-id>${modelInvariantId}</model-invariant-id>
+				<model-version-id>${modelVersionId}</model-version-id>
+				<model-customization-id>${modelCustomizationId}</model-customization-id>
+				<orchestration-status>PendingCreate</orchestration-status>
+				<operation-status></operation-status>
+				<relationship-list>
+					<relationship>
+               			<related-to>service-instance</related-to>
+               			<related-link>${CSI_resourceLink}</related-link>
+					</relationship>
+				</relationship-list>
+			</allotted-resource>""".trim()
+
+			execution.setVariable("AaiARPayload", payload)
+			utils.log("DEBUG", " payload to create AllottedResource in AAI:" + "\n" + payload, isDebugEnabled)
+
+			APIResponse response = aaiUriUtil.executeAAIPutCall(execution, arUrl, payload)
+			int responseCode = response.getStatusCode()
+			utils.log("DEBUG", "AllottedResource AAI PUT responseCode:" + responseCode, isDebugEnabled)
+
+			String aaiResponse = response.getResponseBodyAsString()
+			aaiResponse = StringEscapeUtils.unescapeXml(aaiResponse)
+			utils.log("DEBUG", "AllottedResource AAI PUT responseStr:" + aaiResponse, isDebugEnabled)
+
+			//200 OK 201 CREATED 202 ACCEPTED
+			if(responseCode == 200 || responseCode == 201 || responseCode == 202 )
+			{
+				utils.log("DEBUG", "AAI PUT AllottedResource received a Good Response", isDebugEnabled)
+			}
+			else{
+				utils.log("DEBUG", "AAI Put AllottedResouce received a Bad Response Code: " + responseCode, isDebugEnabled)
+				exceptionUtil.MapAAIExceptionToWorkflowExceptionGeneric(execution, aaiResponse, responseCode)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		}catch(BpmnError b){
+			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		} catch (Exception ex) {
+			msg = "Exception in createAaiAR " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			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)
+		utils.log("DEBUG"," *** Exit createAaiAR*** ", isDebugEnabled)
+	}
+
+	public String buildSDNCRequest(Execution execution, String action, String sdncRequestId) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** buildSDNCRequest *****", isDebugEnabled)
+		String sdncReq = null
+
+		try {
+
+			String allottedResourceId = execution.getVariable("allottedResourceId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			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.openecomp/mso/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+				   <sdncadapter:RequestHeader>
+							<sdncadapter:RequestId>${sdncRequestId}</sdncadapter:RequestId>
+							<sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId>
+							<sdncadapter:SvcAction>${action}</sdncadapter:SvcAction>
+							<sdncadapter:SvcOperation>tunnelxconn-topology-operation</sdncadapter:SvcOperation>
+							<sdncadapter:CallbackUrl>${callbackUrl}</sdncadapter:CallbackUrl>
+					</sdncadapter:RequestHeader>
+				<sdncadapterworkflow:SDNCRequestData>
+					<request-information>
+						<request-id>${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></subscription-service-type>
+						<ecomp-model-information></ecomp-model-information>
+						<service-instance-id>${parentServiceInstanceId}</service-instance-id>
+						<subscriber-name/>
+						<global-customer-id></global-customer-id>
+					</service-information>
+					<allotted-resource-information>
+						<allotted-resource-id>${allottedResourceId}</allotted-resource-id>    
+						<allotted-resource-type>tunnelxconn</allotted-resource-type>
+						<parent-service-instance-id>${parentServiceInstanceId}</parent-service-instance-id>   
+						<ecomp-model-information>
+							<model-invariant-uuid>${modelInvariantId}</model-invariant-uuid>
+							<model-uuid>${modelUUId}</model-uuid>
+							<model-customization-uuid>${modelCustomizationId}</model-customization-uuid>
+							<model-version>${modelVersion}</model-version>
+							<model-name>${modelName}</model-name>
+						</ecomp-model-information>
+					</allotted-resource-information>
+					<tunnelxconn-request-input>
+							<brg-wan-mac-address>${brgWanMacAddress}</brg-wan-mac-address>
+					</tunnelxconn-request-input>
+				</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			utils.log("DEBUG","sdncRequest:\n" + sdncReq, isDebugEnabled)
+			sdncReq = utils.formatXml(sdncReq)
+
+		} catch(Exception ex) {
+			msg = "Exception in buildSDNCRequest. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit buildSDNCRequest *****", isDebugEnabled)
+		return sdncReq
+	}
+
+	public void preProcessSDNCAssign(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCAssign *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncAssignReq = buildSDNCRequest(execution, "assign", sdncRequestId)
+			execution.setVariable("sdncAssignRequest", sdncAssignReq)
+			utils.logAudit("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)
+
+			utils.log("DEBUG","sdncAssignRollbackReq:\n" + sdncAssignRollbackReq, isDebugEnabled)
+			utils.log("DEBUG","rollbackData:\n" + rollbackData.toString(), isDebugEnabled)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCAssign. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCAssign *****", isDebugEnabled)
+	}
+
+	public void preProcessSDNCCreate(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCCreate *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncCreateReq = buildSDNCRequest(execution, "create", sdncRequestId)
+			execution.setVariable("sdncCreateRequest", sdncCreateReq)
+			utils.logAudit("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)
+
+			utils.log("DEBUG","sdncCreateRollbackReq:\n" + sdncCreateRollbackReq, isDebugEnabled)
+			utils.log("DEBUG","rollbackData:\n" + rollbackData.toString(), isDebugEnabled)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCCreate. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCCreate *****", isDebugEnabled)
+	}
+
+	public void preProcessSDNCActivate(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCActivate *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncActivateReq = buildSDNCRequest(execution, "activate", sdncRequestId)
+			execution.setVariable("sdncActivateRequest", sdncActivateReq)
+			utils.logAudit("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)
+
+			utils.log("DEBUG","sdncActivateRollbackReq:\n" + sdncActivateRollbackReq, isDebugEnabled)
+			utils.log("DEBUG","rollbackData:\n" + rollbackData.toString(), isDebugEnabled)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCActivate. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCActivate *****", isDebugEnabled)
+	}
+
+	public void validateSDNCResp(Execution execution, String response, String method){
+
+		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			utils.logAudit("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			utils.logAudit("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				utils.log("DEBUG", "Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response, isDebugLogEnabled)
+
+				if (!"get".equals(method))
+				{
+					def rollbackData = execution.getVariable("rollbackData")
+					rollbackData.put(Prefix, "rollback" +  "SDNC" + method, "true")
+					execution.setVariable("rollbackData", rollbackData)
+				}
+
+			}else{
+				utils.log("DEBUG", "Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.", isDebugLogEnabled)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in validateSDNCResp. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
+	}
+
+	public void preProcessSDNCGet(Execution execution){
+		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", "*** preProcessSDNCGet *** ", isDebugLogEnabled)
+		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.getNodeText1(aaiQueryResponse, "selflink")
+				utils.log("DEBUG", "AR service operation/aaiARSelfLink: " + serviceOperation, isDebugLogEnabled)
+			}
+			else
+			{
+				String response = execution.getVariable("sdncAssignResponse")
+				String data = utils.getNodeXml(response, "response-data")
+				data = data.replaceAll("&lt;", "<")
+				data = data.replaceAll("&gt;", ">")
+				utils.log("DEBUG", "Assign responseData: " + data, isDebugLogEnabled)
+				serviceOperation = utils.getNodeText1(data, "object-path")
+				utils.log("DEBUG", "AR service operation:" + serviceOperation, isDebugLogEnabled)
+			}
+
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String sdncRequestId = UUID.randomUUID().toString()
+			
+			String tsleep = execution.getVariable("junitSleepMs")
+			
+			//workaround for sdnc replication issue
+			sleep(tsleep == null ? 5000 : tsleep as Long)
+
+			//neeed the same url as used by vfmodules
+			String SDNCGetRequest =
+			"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+											xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+											xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+					<sdncadapter:RequestHeader>
+					<sdncadapter:RequestId>${sdncRequestId}</sdncadapter:RequestId>
+					<sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId>
+					<sdncadapter:SvcAction>query</sdncadapter:SvcAction>
+					<sdncadapter:SvcOperation>${serviceOperation}</sdncadapter:SvcOperation>
+					<sdncadapter:CallbackUrl>${callbackUrl}</sdncadapter:CallbackUrl>
+					<sdncadapter:MsoAction>vfmodule</sdncadapter:MsoAction>
+				</sdncadapter:RequestHeader>
+					<sdncadapterworkflow:SDNCRequestData></sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			execution.setVariable("sdncGetRequest", SDNCGetRequest)
+
+		}catch(Exception e){
+			utils.log("ERROR", "Exception Occurred Processing preProcessSDNCGetRequest. Exception is:\n" + e, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + e.getMessage())
+		}
+		utils.log("DEBUG", "*** Exit preProcessSDNCGet *** ", isDebugLogEnabled)
+	}
+	
+	public void updateAaiAROrchStatus(Execution execution, String status){
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** updateAaiAROrchStatus *** ", isDebugEnabled)
+		String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) or create
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
+	}
+	
+	public void generateOutputs(Execution execution)
+	{
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** generateOutputs ***** ", isDebugEnabled)
+		try {
+			String sdncGetResponse = execution.getVariable("enhancedCallbackRequestData") //unescaped
+			utils.log("DEBUG", "resp:" + sdncGetResponse, isDebugEnabled)
+			String arData = utils.getNodeXml(sdncGetResponse, "tunnelxconn-topology")
+			arData = utils.removeXmlNamespaces(arData)
+		
+			String txca = utils.getNodeXml(arData, "tunnelxconn-assignments")
+			String ari = utils.getNodeXml(arData, "allotted-resource-identifiers")
+			execution.setVariable("allotedResourceName", utils.getNodeText1(ari, "allotted-resource-name"))
+			execution.setVariable("vni", utils.getNodeText1(ari, "vni"))
+			execution.setVariable("vgmuxBearerIp", utils.getNodeText1(ari, "vgmux_bearer_ip"))
+			execution.setVariable("vgmuxLanIP", utils.getNodeText1(ari, "vgmux_lan_ip"))
+		} catch (BpmnError e) {
+			utils.log("DEBUG", "BPMN Error in generateOutputs ", isDebugEnabled)
+		} catch(Exception ex) {
+			String msg = "Exception in generateOutputs " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+		utils.log("DEBUG"," *** Exit generateOutputs *** ", isDebugEnabled)
+		
+	}
+
+	public void preProcessRollback (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** preProcessRollback ***** ", isDebugEnabled)
+		try {
+
+			Object workflowException = execution.getVariable("WorkflowException");
+
+			if (workflowException instanceof WorkflowException) {
+				utils.log("DEBUG", "Prev workflowException: " + workflowException.getErrorMessage(), isDebugEnabled)
+				execution.setVariable("prevWorkflowException", workflowException);
+				//execution.setVariable("WorkflowException", null);
+			}
+		} catch (BpmnError e) {
+			utils.log("DEBUG", "BPMN Error during preProcessRollback", isDebugEnabled)
+		} catch(Exception ex) {
+			String msg = "Exception in preProcessRollback. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+		utils.log("DEBUG"," *** Exit preProcessRollback *** ", isDebugEnabled)
+	}
+
+	public void postProcessRollback (Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** postProcessRollback ***** ", isDebugEnabled)
+		String msg = ""
+		try {
+			Object workflowException = execution.getVariable("prevWorkflowException");
+			if (workflowException instanceof WorkflowException) {
+				utils.log("DEBUG", "Setting prevException to WorkflowException: ", isDebugEnabled)
+				execution.setVariable("WorkflowException", workflowException);
+			}
+			execution.setVariable("rollbackData", null)
+		} catch (BpmnError b) {
+			utils.log("DEBUG", "BPMN Error during postProcessRollback", isDebugEnabled)
+			throw b;
+		} catch(Exception ex) {
+			msg = "Exception in postProcessRollback. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+		utils.log("DEBUG"," *** Exit postProcessRollback *** ", isDebugEnabled)
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy
new file mode 100644
index 0000000..142ddde
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy
@@ -0,0 +1,258 @@
+/*
+ * © 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe.scripts;
+
+import org.openecomp.mso.bpmn.common.scripts.*;
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
+import org.openecomp.mso.rest.APIResponse
+
+import java.util.UUID;
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.apache.commons.lang3.*
+import org.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+
+/**
+ * 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{
+
+	String Prefix="DCARTXCRB_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	public void preProcessRequest (Execution execution) {
+		
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessRequest *****",  isDebugEnabled)
+		execution.setVariable("prefix", Prefix)
+		String rbType = "DCARTXC_"
+		try {
+			
+			def rollbackData = execution.getVariable("rollbackData")
+			utils.log("DEBUG", "RollbackData:" + rollbackData, isDebugEnabled)
+
+			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"))
+						
+						utils.log("DEBUG","sdncDeactivate:\n" + execution.getVariable("deactivateSdnc") , isDebugEnabled)
+						utils.log("DEBUG","sdncDelete:\n" + execution.getVariable("deleteSdnc"), isDebugEnabled)
+						utils.log("DEBUG","sdncUnassign:\n" + execution.getVariable("unassignSdnc"), isDebugEnabled)
+						
+						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){
+			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+	}
+
+	// aaiARPath set during query (existing AR)
+	public void updateAaiAROrchStatus(Execution execution, String status){
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = null;
+		utils.log("DEBUG", " *** updateAaiAROrchStatus ***", isDebugEnabled)
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String aaiARPath  = execution.getVariable("aaiARPath")
+		utils.log("DEBUG", " aaiARPath:" + aaiARPath, isDebugEnabled)
+		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
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+		}
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
+	}
+
+	public void validateSDNCResp(Execution execution, String response, String method){
+
+		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			utils.logAudit("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			utils.logAudit("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				utils.log("DEBUG", "Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response, isDebugLogEnabled)
+
+			}else{
+
+				utils.log("DEBUG", "Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.", isDebugLogEnabled)
+				throw new BpmnError("MSOWorkflowException")
+			}
+		} catch (BpmnError e) {
+			if (e.getErrorCode() == 404)
+			{
+				msg = "SDNC rollback " + method + " returned a 404. Proceding with rollback"
+				utils.log("DEBUG", msg, isDebugEnabled)
+			}
+			else {
+				throw e;
+			}
+		} catch(Exception ex) {
+			msg = "Exception in validateSDNCResp. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
+	}
+
+	public void deleteAaiAR(Execution execution){
+		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+		try{
+			utils.log("DEBUG", " *** deleteAaiAR *** ", isDebugLogEnabled)
+			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){
+			utils.log("ERROR", "Exception Occurred Processing preProcessSDNCGetRequest. Exception is:\n" + ex, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + ex.getMessage())
+		}
+		utils.log("DEBUG", " *** Exit deleteAaiAR *** ", isDebugLogEnabled)
+	}
+	
+	public void postProcessRequest(Execution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** postProcessRequest ***** ", isDebugEnabled)
+		String msg = ""
+		try {
+			execution.setVariable("rollbackData", null)
+			boolean skipRollback = execution.getVariable("skipRollback")
+			if (skipRollback != true)
+			{
+				execution.setVariable("rolledBack", true)
+				utils.log("DEBUG","rolledBack", isDebugEnabled)
+			}
+			utils.log("DEBUG","*** Exit postProcessRequest ***", isDebugEnabled)
+
+		} catch (BpmnError e) {
+			msg = "Bpmn Exception in  postProcessRequest. "
+			utils.log("DEBUG", msg, isDebugEnabled)
+		} catch (Exception ex) {
+			msg = "Exception in postProcessRequest. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+
+	}
+	
+	public void processRollbackException(Execution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** processRollbackException ***** ", isDebugEnabled)
+		try{
+			utils.log("DEBUG", "Caught an Exception in DoCreateAllottedResourceRollback", isDebugEnabled)
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rolledBack", false)
+			execution.setVariable("rollbackError", "Caught exception in AllottedResource Create Rollback")
+			execution.setVariable("WorkflowException", null)
+
+		}catch(BpmnError b){
+			utils.log("DEBUG", "BPMN Error during processRollbackExceptions Method: ", isDebugEnabled)
+		}catch(Exception e){
+			utils.log("DEBUG", "Caught Exception during processRollbackExceptions Method: " + e.getMessage(), isDebugEnabled)
+		}
+
+		utils.log("DEBUG", " Exit processRollbackException", isDebugEnabled)
+	}
+
+	public void processRollbackJavaException(Execution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** processRollbackJavaException ***** ", isDebugEnabled)
+		try{
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rolledBack", false)
+			execution.setVariable("rollbackError", "Caught Java exception in AllottedResource Create Rollback")
+			utils.log("DEBUG", "Caught Exception in processRollbackJavaException", isDebugEnabled)
+
+		}catch(Exception e){
+			utils.log("DEBUG", "Caught Exception in processRollbackJavaException " + e.getMessage(), isDebugEnabled)
+		}
+		utils.log("DEBUG", "***** Exit processRollbackJavaException *****", isDebugEnabled)
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy
new file mode 100644
index 0000000..9dbca86
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy
@@ -0,0 +1,349 @@
+/*
+ * © 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe.scripts;
+
+import org.openecomp.mso.bpmn.common.scripts.*;
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
+import org.openecomp.mso.rest.APIResponse
+
+import java.util.UUID;
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.apache.commons.lang3.*
+import org.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+
+/**
+ * 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 - 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{
+
+	String Prefix="DDARBRG_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	public void preProcessRequest (Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessRequest *****",  isDebugEnabled)
+
+		try {
+			execution.setVariable("prefix", Prefix)
+
+			//Config Inputs
+			String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback')
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "URN_mso_workflow_sdncadapter_callback is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			utils.log("DEBUG","SDNC Callback URL: " + sdncCallbackUrl, isDebugEnabled)
+
+			//Request Inputs
+			if (isBlank(execution.getVariable("serviceInstanceId"))){
+				msg = "Input serviceInstanceId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceId"))){
+				msg = "Input allottedResourceId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+
+		}catch(BpmnError b){
+			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+	}
+
+	public void getAaiAR (Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** getAaiAR ***** ", isDebugEnabled)
+
+		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)) {
+			utils.log("DEBUG", errorMsg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, errorMsg)
+		}
+		utils.log("DEBUG"," ***** getAaiAR *****",  isDebugEnabled)
+
+	}
+
+	// aaiARPath set during query (existing AR)
+	public void updateAaiAROrchStatus(Execution execution, String status){
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** updateAaiAROrchStatus *** ", isDebugEnabled)
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) 
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
+	}
+
+	public String buildSDNCRequest(Execution execution, String action, String sdncRequestId) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** buildSDNCRequest *****", isDebugEnabled)
+		String sdncReq = null
+
+		try {
+
+			String allottedResourceId = execution.getVariable("allottedResourceId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String parentServiceInstanceId = execution.getVariable("parentServiceInstanceId")
+
+			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.openecomp/mso/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+				   <sdncadapter:RequestHeader>
+							<sdncadapter:RequestId>${sdncRequestId}</sdncadapter:RequestId>
+							<sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId>
+							<sdncadapter:SvcAction>${action}</sdncadapter:SvcAction>
+							<sdncadapter:SvcOperation>brg-topology-operation</sdncadapter:SvcOperation>
+							<sdncadapter:CallbackUrl>${callbackUrl}</sdncadapter:CallbackUrl>
+					</sdncadapter:RequestHeader>
+				<sdncadapterworkflow:SDNCRequestData>
+					<request-information>
+						<request-id>${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></subscription-service-type>
+						<ecomp-model-information></ecomp-model-information>
+						<service-instance-id>${parentServiceInstanceId}</service-instance-id>
+						<subscriber-name/>
+						<global-customer-id></global-customer-id>
+					</service-information>
+					<allotted-resource-information>
+						<allotted-resource-id>${allottedResourceId}</allotted-resource-id>    
+						<allotted-resource-type>brg</allotted-resource-type>
+						<parent-service-instance-id>${parentServiceInstanceId}</parent-service-instance-id>   
+						<ecomp-model-information>
+							<model-invariant-uuid>${modelInvariantId}</model-invariant-uuid>
+							<model-uuid>${modelUUId}</model-uuid>
+							<model-customization-uuid>${modelCustomizationId}</model-customization-uuid>
+							<model-version>${modelVersion}</model-version>
+							<model-name>${modelName}</model-name>
+						</ecomp-model-information>
+					</allotted-resource-information>
+					<brg-request-input>
+					</brg-request-input>
+				</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			utils.log("DEBUG","sdncRequest:\n" + sdncReq, isDebugEnabled)
+			sdncReq = utils.formatXml(sdncReq)
+
+		} catch(Exception ex) {
+			msg = "Exception in buildSDNCRequest. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit buildSDNCRequest *****", isDebugEnabled)
+		return sdncReq
+	}
+
+	public void preProcessSDNCUnassign(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCUnassign *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncUnassignReq = buildSDNCRequest(execution, "unassign", sdncRequestId)
+			execution.setVariable("sdncUnassignRequest", sdncUnassignReq)
+			utils.logAudit("sdncUnassignRequest:  " + sdncUnassignReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCUnassign. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCUnassign *****", isDebugEnabled)
+	}
+
+	public void preProcessSDNCDelete(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCDelete *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncDeleteReq = buildSDNCRequest(execution, "delete", sdncRequestId)
+			execution.setVariable("sdncDeleteRequest", sdncDeleteReq)
+			utils.logAudit("sdncDeleteReq:  " + sdncDeleteReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCDelete. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCDelete *****", isDebugEnabled)
+	}
+
+	public void preProcessSDNCDeactivate(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCDeactivate *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncDeactivateReq = buildSDNCRequest(execution, "deactivate", sdncRequestId)
+			execution.setVariable("sdncDeactivateRequest", sdncDeactivateReq)
+			utils.logAudit("sdncDeactivateReq:  " + sdncDeactivateReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCDeactivate. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCDeactivate *****", isDebugEnabled)
+	}
+
+	public void validateSDNCResp(Execution execution, String response, String method){
+
+		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			utils.logAudit("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			utils.logAudit("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				utils.log("DEBUG", "Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response, isDebugLogEnabled)
+
+			}else{
+				String sdncRespCode = execution.getVariable(Prefix + 'sdncRequestDataResponseCode')
+				utils.log("DEBUG", method + " AllottedResource received error response from SDNC. ResponseCode:" +  sdncRespCode, isDebugLogEnabled)
+				if (sdncRespCode.equals("404") && "deactivate".equals(method))
+				{
+					execution.setVariable("ARNotFoundInSDNC", true)
+					if ("true".equals(execution.getVariable("failNotFound")))
+					{
+						msg = "Allotted Resource Not found in SDNC"
+						utils.log("DEBUG", msg, isDebugEnabled)
+						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()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
+	}
+
+	public void deleteAaiAR(Execution execution){
+		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+		try{
+			utils.log("DEBUG", " *** deleteAaiAR *** ", isDebugLogEnabled)
+			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){
+			utils.log("ERROR", "Exception Occurred Processing preProcessSDNCGetRequest. Exception is:\n" + ex, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + ex.getMessage())
+		}
+		utils.log("DEBUG", " *** Exit deleteAaiAR *** ", isDebugLogEnabled)
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy
new file mode 100644
index 0000000..a66e888
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy
@@ -0,0 +1,349 @@
+/*
+ * © 2016 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe.scripts;
+
+import org.openecomp.mso.bpmn.common.scripts.*;
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
+import org.openecomp.mso.rest.APIResponse
+
+import java.util.UUID;
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.runtime.Execution
+import org.apache.commons.lang3.*
+import org.springframework.web.util.UriUtils;
+import static org.apache.commons.lang3.StringUtils.*
+
+/**
+ * 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 - 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{
+
+	String Prefix="DDARTXC_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+	public void preProcessRequest (Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessRequest *****",  isDebugEnabled)
+
+		try {
+			execution.setVariable("prefix", Prefix)
+
+			//Config Inputs
+			String sdncCallbackUrl = execution.getVariable('URN_mso_workflow_sdncadapter_callback')
+			if (isBlank(sdncCallbackUrl)) {
+				msg = "URN_mso_workflow_sdncadapter_callback is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+			utils.log("DEBUG","SDNC Callback URL: " + sdncCallbackUrl, isDebugEnabled)
+
+			//Request Inputs
+			if (isBlank(execution.getVariable("serviceInstanceId"))){
+				msg = "Input serviceInstanceId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+			if (isBlank(execution.getVariable("allottedResourceId"))){
+				msg = "Input allottedResourceId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			}
+
+		}catch(BpmnError b){
+			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
+			throw b
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+	}
+
+	public void getAaiAR (Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** getAaiAR ***** ", isDebugEnabled)
+
+		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)) {
+			utils.log("DEBUG", errorMsg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 500, errorMsg)
+		}
+		utils.log("DEBUG"," ***** getAaiAR *****",  isDebugEnabled)
+
+	}
+
+	// aaiARPath set during query (existing AR)
+	public void updateAaiAROrchStatus(Execution execution, String status){
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** updateAaiAROrchStatus *** ", isDebugEnabled)
+		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
+		String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) 
+		String orchStatus = arUtils.updateAROrchStatus(execution, status, aaiARPath)
+		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
+	}
+
+	public String buildSDNCRequest(Execution execution, String action, String sdncRequestId) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** buildSDNCRequest *****", isDebugEnabled)
+		String sdncReq = null
+
+		try {
+
+			String allottedResourceId = execution.getVariable("allottedResourceId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String parentServiceInstanceId = execution.getVariable("parentServiceInstanceId")
+
+			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.openecomp/mso/request/types/v1"
+													xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+													xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+				   <sdncadapter:RequestHeader>
+							<sdncadapter:RequestId>${sdncRequestId}</sdncadapter:RequestId>
+							<sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId>
+							<sdncadapter:SvcAction>${action}</sdncadapter:SvcAction>
+							<sdncadapter:SvcOperation>tunnelxconn-topology-operation</sdncadapter:SvcOperation>
+							<sdncadapter:CallbackUrl>${callbackUrl}</sdncadapter:CallbackUrl>
+					</sdncadapter:RequestHeader>
+				<sdncadapterworkflow:SDNCRequestData>
+					<request-information>
+						<request-id>${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></subscription-service-type>
+						<ecomp-model-information></ecomp-model-information>
+						<service-instance-id>${parentServiceInstanceId}</service-instance-id>
+						<subscriber-name/>
+						<global-customer-id></global-customer-id>
+					</service-information>
+					<allotted-resource-information>
+						<allotted-resource-id>${allottedResourceId}</allotted-resource-id>    
+						<allotted-resource-type>tunnelxconn</allotted-resource-type>
+						<parent-service-instance-id>${parentServiceInstanceId}</parent-service-instance-id>   
+						<ecomp-model-information>
+							<model-invariant-uuid>${modelInvariantId}</model-invariant-uuid>
+							<model-uuid>${modelUUId}</model-uuid>
+							<model-customization-uuid>${modelCustomizationId}</model-customization-uuid>
+							<model-version>${modelVersion}</model-version>
+							<model-name>${modelName}</model-name>
+						</ecomp-model-information>
+					</allotted-resource-information>
+					<tunnelxconn-request-input>
+					</tunnelxconn-request-input>
+				</sdncadapterworkflow:SDNCRequestData>
+				</sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
+
+			utils.log("DEBUG","sdncRequest:\n" + sdncReq, isDebugEnabled)
+			sdncReq = utils.formatXml(sdncReq)
+
+		} catch(Exception ex) {
+			msg = "Exception in buildSDNCRequest. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit buildSDNCRequest *****", isDebugEnabled)
+		return sdncReq
+	}
+
+	public void preProcessSDNCUnassign(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCUnassign *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncUnassignReq = buildSDNCRequest(execution, "unassign", sdncRequestId)
+			execution.setVariable("sdncUnassignRequest", sdncUnassignReq)
+			utils.logAudit("sdncUnassignRequest:  " + sdncUnassignReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCUnassign. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCUnassign *****", isDebugEnabled)
+	}
+
+	public void preProcessSDNCDelete(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCDelete *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncDeleteReq = buildSDNCRequest(execution, "delete", sdncRequestId)
+			execution.setVariable("sdncDeleteRequest", sdncDeleteReq)
+			utils.logAudit("sdncDeleteReq:  " + sdncDeleteReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCDelete. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCDelete *****", isDebugEnabled)
+	}
+
+	public void preProcessSDNCDeactivate(Execution execution) {
+
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessSDNCDeactivate *****", isDebugEnabled)
+
+		try {
+			String sdncRequestId = UUID.randomUUID().toString()
+			String sdncDeactivateReq = buildSDNCRequest(execution, "deactivate", sdncRequestId)
+			execution.setVariable("sdncDeactivateRequest", sdncDeactivateReq)
+			utils.logAudit("sdncDeactivateReq:  " + sdncDeactivateReq)
+		} catch (BpmnError e) {
+			throw e;
+		} catch(Exception ex) {
+			msg = "Exception in preProcessSDNCDeactivate. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *****Exit preProcessSDNCDeactivate *****", isDebugEnabled)
+	}
+
+	public void validateSDNCResp(Execution execution, String response, String method){
+
+		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
+		String msg = ""
+
+		try {
+			WorkflowException workflowException = execution.getVariable("WorkflowException")
+			utils.logAudit("workflowException: " + workflowException)
+
+			boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+			utils.logAudit("SDNCResponse: " + response)
+
+			SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+			sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+			if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+				utils.log("DEBUG", "Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + response, isDebugLogEnabled)
+
+			}else{
+				String sdncRespCode = execution.getVariable(Prefix + 'sdncRequestDataResponseCode')
+				utils.log("DEBUG", method + " AllottedResource received error response from SDNC. ResponseCode:" +  sdncRespCode, isDebugLogEnabled)
+				if (sdncRespCode.equals("404") && "deactivate".equals(method))
+				{
+					execution.setVariable("ARNotFoundInSDNC", true)
+					if ("true".equals(execution.getVariable("failNotFound")))
+					{
+						msg = "Allotted Resource Not found in SDNC"
+						utils.log("DEBUG", msg, isDebugEnabled)
+						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()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
+	}
+
+	public void deleteAaiAR(Execution execution){
+		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
+		try{
+			utils.log("DEBUG", " *** deleteAaiAR *** ", isDebugLogEnabled)
+			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){
+			utils.log("ERROR", "Exception Occurred Processing preProcessSDNCGetRequest. Exception is:\n" + ex, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during SDNC GET Method:\n" + ex.getMessage())
+		}
+		utils.log("DEBUG", " *** Exit deleteAaiAR *** ", isDebugLogEnabled)
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/vcpe/workflow/WorkflowAsyncVcpeResource.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/vcpe/workflow/WorkflowAsyncVcpeResource.java
new file mode 100644
index 0000000..6317be9
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/vcpe/workflow/WorkflowAsyncVcpeResource.java
@@ -0,0 +1,26 @@
+package org.openecomp.mso.bpmn.vcpe.workflow;
+
+import javax.ws.rs.Path;
+
+import org.camunda.bpm.engine.ProcessEngineServices;
+import org.camunda.bpm.engine.ProcessEngines;
+import org.openecomp.mso.bpmn.common.workflow.service.WorkflowAsyncResource;
+
+
+/**
+ * 
+ * @version 1.0
+ * Asynchronous Workflow processing using JAX RS RESTeasy implementation
+ * Both Synchronous and Asynchronous BPMN process can benefit from this implementation since the workflow gets executed in the background
+ * and the server thread is freed up, server scales better to process more incoming requests
+ * 
+ * Usage: For synchronous process, when you are ready to send the response invoke the callback to write the response
+ * For asynchronous process - the activity may send a acknowledgement response and then proceed further on executing the process
+ */
+@Path("/async")
+public class WorkflowAsyncVcpeResource extends WorkflowAsyncResource {
+	
+	protected ProcessEngineServices getProcessEngineServices() {
+		return pes4junit.orElse(ProcessEngines.getProcessEngine("vcpe"));
+	}
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn
new file mode 100644
index 0000000..c893690
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn
@@ -0,0 +1,1472 @@
+<?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="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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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" />
+      </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.openecomp.mso.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="rollbackSuccessful" target="DCRESI_rollbackSuccessful" />
+          <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.openecomp.mso.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.openecomp.mso.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="rollbackSuccessful" target="DCARCR_rollbackSuccessful" />
+          <camunda:out source="rollbackError" target="DCARCR_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_rollbackSuccessful") == 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("DCRENI_rollbackData") != null }]]></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="rollbackSuccessful" target="DCARBRG_rollbackSuccessful" />
+          <camunda:out source="rollbackError" target="DCARBRG_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?">
+        <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_rollbackSuccessful") == 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="rollbackSuccessful" target="DCVAM_rollbackSuccessful" />
+          <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.openecomp.mso.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_13uceka</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_13uceka" sourceRef="updateInfraRequest" targetRef="IntermediateThrowEvent_1as6hoa" />
+    <bpmn2:scriptTask id="ScriptTask_1qd3uwb" name="PostProcess&#10;Create&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1ky2sv9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0vj46ej</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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_13uceka</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" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_17g05fd</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="Task_1l0uvof" />
+    <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: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" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0b5ztoe</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0e9e6fo</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <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:sequenceFlow id="SequenceFlow_0e9e6fo" sourceRef="CallActivity_0xt1l8t" targetRef="ExclusiveGateway_0jqgskx" />
+    <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.openecomp.mso.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" />
+      </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.openecomp.mso.bpmn.infra.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_1mkdhw9</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_13iuk3s</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="ExclusiveGateway_1hlbkue">
+      <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" />
+      </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: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="-261" y="1650" width="1482" height="1528" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1vwgs6p_di" bpmnElement="ExclusiveGateway_1vwgs6p" isMarkerVisible="true">
+        <dc:Bounds x="55" y="2972" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="42" y="3032" width="79" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1bwmffk_di" bpmnElement="StartEvent_1bwmffk">
+        <dc:Bounds x="-58" y="2980" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-65" y="3021" width="53" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0ydrtdx_di" bpmnElement="ExclusiveGateway_0ydrtdx" isMarkerVisible="true">
+        <dc:Bounds x="55" y="2889" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-11" y="2904" width="48" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1kvn1pz_di" bpmnElement="ExclusiveGateway_1kvn1pz" isMarkerVisible="true">
+        <dc:Bounds x="182" y="1822" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="114" y="1816" width="80" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0jw5tqa_di" bpmnElement="CallActivity_0jw5tqa">
+        <dc:Bounds x="1028" y="2946" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_04xute7_di" bpmnElement="EndEvent_04xute7">
+        <dc:Bounds x="1165" y="2968" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1138" y="3009" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0yk02h3_di" bpmnElement="ScriptTask_0yk02h3">
+        <dc:Bounds x="896" y="2946" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zpbskl_di" bpmnElement="SequenceFlow_0zpbskl">
+        <di:waypoint xsi:type="dc:Point" x="80" y="2972" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2939" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="85" y="2959" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dhf2js_di" bpmnElement="SequenceFlow_0dhf2js">
+        <di:waypoint xsi:type="dc:Point" x="105" y="2997" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="2997" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="2939" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="144" y="3002" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sx5llu_di" bpmnElement="SequenceFlow_1sx5llu">
+        <di:waypoint xsi:type="dc:Point" x="105" y="2914" />
+        <di:waypoint xsi:type="dc:Point" x="410" y="2914" />
+        <di:waypoint xsi:type="dc:Point" x="410" y="2914" />
+        <di:waypoint xsi:type="dc:Point" x="714" y="2914" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="423" y="2918" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_02o4yqx_di" bpmnElement="SequenceFlow_02o4yqx">
+        <di:waypoint xsi:type="dc:Point" x="80" y="2889" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2867" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="90" y="2872" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19mxskt_di" bpmnElement="SequenceFlow_19mxskt">
+        <di:waypoint xsi:type="dc:Point" x="207" y="1822" />
+        <di:waypoint xsi:type="dc:Point" x="207" y="1726" />
+        <di:waypoint xsi:type="dc:Point" x="686" y="1726" />
+        <di:waypoint xsi:type="dc:Point" x="686" y="1942" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="395.6421052631579" y="1705" width="16" 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="981" y="1927" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_0foywso_di" bpmnElement="InclusiveGateway_0foywso">
+        <dc:Bounds x="714" y="2889" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="694" y="2944" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1f1hd3l_di" bpmnElement="SequenceFlow_1f1hd3l">
+        <di:waypoint xsi:type="dc:Point" x="1031" y="2007" />
+        <di:waypoint xsi:type="dc:Point" x="1031" y="2104" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1001" y="2056" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jg47xm_di" bpmnElement="SequenceFlow_0jg47xm">
+        <di:waypoint xsi:type="dc:Point" x="764" y="2914" />
+        <di:waypoint xsi:type="dc:Point" x="946" y="2914" />
+        <di:waypoint xsi:type="dc:Point" x="946" y="2946" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="810" y="2899" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0807ukc_di" bpmnElement="SequenceFlow_0807ukc">
+        <di:waypoint xsi:type="dc:Point" x="996" y="2986" />
+        <di:waypoint xsi:type="dc:Point" x="1028" y="2986" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="967" y="2971" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19yywk8_di" bpmnElement="SequenceFlow_19yywk8">
+        <di:waypoint xsi:type="dc:Point" x="1128" y="2986" />
+        <di:waypoint xsi:type="dc:Point" x="1165" y="2986" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1102" y="2971" 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="661" y="1942" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="721" y="1924" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0sezboq_di" bpmnElement="SequenceFlow_0sezboq">
+        <di:waypoint xsi:type="dc:Point" x="686" y="1992" />
+        <di:waypoint xsi:type="dc:Point" x="686" y="2129" />
+        <di:waypoint xsi:type="dc:Point" x="1006" y="2129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="693" y="2046" width="16" 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:BPMNEdge id="SequenceFlow_13uceka_di" bpmnElement="SequenceFlow_13uceka">
+        <di:waypoint xsi:type="dc:Point" x="894" y="583" />
+        <di:waypoint xsi:type="dc:Point" x="1053" y="583" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="974" y="568" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <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="30" y="2787" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zq7i3q_di" bpmnElement="SequenceFlow_0zq7i3q">
+        <di:waypoint xsi:type="dc:Point" x="-22" y="2998" />
+        <di:waypoint xsi:type="dc:Point" x="25" y="2998" />
+        <di:waypoint xsi:type="dc:Point" x="25" y="2997" />
+        <di:waypoint xsi:type="dc:Point" x="55" y="2997" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-51" y="2999" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_0m9f5ka_di" bpmnElement="InclusiveGateway_0m9f5ka">
+        <dc:Bounds x="1006" y="2104" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="986" y="2159" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0wyub4x_di" bpmnElement="ScriptTask_0wyub4x">
+        <dc:Bounds x="689" y="2787" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rabks0_di" bpmnElement="SequenceFlow_1rabks0">
+        <di:waypoint xsi:type="dc:Point" x="739" y="2867" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="2889" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="709" y="2878" 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="55" y="2604" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-33" y="2619" width="82" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1bpuf2p_di" bpmnElement="CallActivity_1bpuf2p">
+        <dc:Bounds x="157" y="2519" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_131ozdf_di" bpmnElement="InclusiveGateway_131ozdf">
+        <dc:Bounds x="55" y="2432" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="35" y="2487" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0orpdrl_di" bpmnElement="SequenceFlow_0orpdrl">
+        <di:waypoint xsi:type="dc:Point" x="105" y="2629" />
+        <di:waypoint xsi:type="dc:Point" x="207" y="2629" />
+        <di:waypoint xsi:type="dc:Point" x="207" y="2599" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="145" y="2614" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t3cnnx_di" bpmnElement="SequenceFlow_1t3cnnx">
+        <di:waypoint xsi:type="dc:Point" x="207" y="2519" />
+        <di:waypoint xsi:type="dc:Point" x="207" y="2482" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="177" y="2501" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ya1cr3_di" bpmnElement="SequenceFlow_0ya1cr3">
+        <di:waypoint xsi:type="dc:Point" x="80" y="2604" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2543" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2543" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2482" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="92" y="2509" width="16" 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="55" y="2283" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-31" y="2298" width="80" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_142br6v_di" bpmnElement="InclusiveGateway_142br6v">
+        <dc:Bounds x="55" y="2104" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="35" y="2159" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kpdu1j_di" bpmnElement="SequenceFlow_1kpdu1j">
+        <di:waypoint xsi:type="dc:Point" x="80" y="2283" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2154" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="87" y="2219" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1mjdcct_di" bpmnElement="ExclusiveGateway_1mjdcct" isMarkerVisible="true">
+        <dc:Bounds x="182" y="2432" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="183" y="2394" width="48" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sim44y_di" bpmnElement="SequenceFlow_1sim44y">
+        <di:waypoint xsi:type="dc:Point" x="182" y="2457" />
+        <di:waypoint xsi:type="dc:Point" x="105" y="2457" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="111" y="2432" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dr2fem_di" bpmnElement="SequenceFlow_0dr2fem">
+        <di:waypoint xsi:type="dc:Point" x="231" y="2458" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="2458" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="2696" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="320" y="2437" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_05dg1m1_di" bpmnElement="ExclusiveGateway_05dg1m1" isMarkerVisible="true">
+        <dc:Bounds x="182" y="2104" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="183" y="2065" width="48" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1quvahv_di" bpmnElement="SequenceFlow_1quvahv">
+        <di:waypoint xsi:type="dc:Point" x="182" y="2129" />
+        <di:waypoint xsi:type="dc:Point" x="105" y="2129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="133" y="2104" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mbymcu_di" bpmnElement="SequenceFlow_1mbymcu">
+        <di:waypoint xsi:type="dc:Point" x="232" y="2129" />
+        <di:waypoint xsi:type="dc:Point" x="1006" y="2129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="294" y="2098" width="16" 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="1056" y="565" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1037" y="606" width="72" height="24" />
+        </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="687" y="348" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jbuf1t_di" bpmnElement="SequenceFlow_1jbuf1t">
+        <di:waypoint xsi:type="dc:Point" x="787" y="388" />
+        <di:waypoint xsi:type="dc:Point" x="1056" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="922" y="373" width="0" 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="687" y="388" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="627" y="373" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0y7gtd9_di" bpmnElement="ExclusiveGateway_0y7gtd9" isMarkerVisible="true">
+        <dc:Bounds x="55" y="2696" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-36" y="2709" width="76" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ftzjjm_di" bpmnElement="SequenceFlow_0ftzjjm">
+        <di:waypoint xsi:type="dc:Point" x="80" y="2787" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2746" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="50" y="2767" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_12dakwh_di" bpmnElement="SequenceFlow_12dakwh">
+        <di:waypoint xsi:type="dc:Point" x="80" y="2696" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2654" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="87" y="2667" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="InclusiveGateway_1xenadu_di" bpmnElement="InclusiveGateway_1xenadu">
+        <dc:Bounds x="714" y="2696" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="694" y="2751" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lv5ld6_di" bpmnElement="SequenceFlow_1lv5ld6">
+        <di:waypoint xsi:type="dc:Point" x="1031" y="2154" />
+        <di:waypoint xsi:type="dc:Point" x="1031" y="2721" />
+        <di:waypoint xsi:type="dc:Point" x="764" y="2721" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1001" y="2438" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dvsqpp_di" bpmnElement="SequenceFlow_0dvsqpp">
+        <di:waypoint xsi:type="dc:Point" x="739" y="2746" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="2787" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="709" y="2767" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_09nn9a9_di" bpmnElement="SequenceFlow_09nn9a9">
+        <di:waypoint xsi:type="dc:Point" x="105" y="2721" />
+        <di:waypoint xsi:type="dc:Point" x="428" y="2721" />
+        <di:waypoint xsi:type="dc:Point" x="428" y="2721" />
+        <di:waypoint xsi:type="dc:Point" x="714" y="2721" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="148" y="2694" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_027lz43_di" bpmnElement="SequenceFlow_027lz43">
+        <di:waypoint xsi:type="dc:Point" x="80" y="2432" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="2333" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="50" y="2373" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0t3mtod_di" bpmnElement="SequenceFlow_0t3mtod">
+        <di:waypoint xsi:type="dc:Point" x="80" y="2104" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="1847" />
+        <di:waypoint xsi:type="dc:Point" x="182" y="1847" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="50" y="1966" 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:BPMNShape id="CallActivity_0xt1l8t_di" bpmnElement="CallActivity_0xt1l8t">
+        <dc:Bounds x="400" y="1151" width="100" height="80" />
+      </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="353" y="1216.4242424242425" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <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="485" y="1166" width="0" 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="617" y="942" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0n1k77c_di" bpmnElement="ScriptTask_0n1k77c">
+        <dc:Bounds x="450" 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="550" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="580" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="580" y="981" />
+        <di:waypoint xsi:type="dc:Point" x="617" y="981" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="550" y="982" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mkdhw9_di" bpmnElement="SequenceFlow_1mkdhw9">
+        <di:waypoint xsi:type="dc:Point" x="717" 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="803" y="929" width="87" 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="450" y="982" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="361" y="1015" width="21" 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="326" y="1807" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sl79hn_di" bpmnElement="SequenceFlow_1sl79hn">
+        <di:waypoint xsi:type="dc:Point" x="232" y="1847" />
+        <di:waypoint xsi:type="dc:Point" x="261" y="1847" />
+        <di:waypoint xsi:type="dc:Point" x="261" y="1847" />
+        <di:waypoint xsi:type="dc:Point" x="326" y="1847" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="275.2413793103448" y="1827" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0y158bb_di" bpmnElement="ExclusiveGateway_0y158bb" isMarkerVisible="true">
+        <dc:Bounds x="526" y="1822" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="527" y="1783" width="48" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ne9n0g_di" bpmnElement="SequenceFlow_0ne9n0g">
+        <di:waypoint xsi:type="dc:Point" x="426" y="1847" />
+        <di:waypoint xsi:type="dc:Point" x="526" y="1847" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="476" y="1826" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1a7e8l1_di" bpmnElement="SequenceFlow_1a7e8l1">
+        <di:waypoint xsi:type="dc:Point" x="711" y="1967" />
+        <di:waypoint xsi:type="dc:Point" x="981" y="1967" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="836" y="1946" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00by7l7_di" bpmnElement="SequenceFlow_00by7l7">
+        <di:waypoint xsi:type="dc:Point" x="551" y="1872" />
+        <di:waypoint xsi:type="dc:Point" x="551" y="2129" />
+        <di:waypoint xsi:type="dc:Point" x="1006" y="2129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="558" y="1995" width="16" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17cz98f_di" bpmnElement="SequenceFlow_17cz98f">
+        <di:waypoint xsi:type="dc:Point" x="551" y="1872" />
+        <di:waypoint xsi:type="dc:Point" x="551" y="1967" />
+        <di:waypoint xsi:type="dc:Point" x="661" y="1967" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="556" y="1914" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1cl4iu4_di" bpmnElement="CallActivity_1cl4iu4">
+        <dc:Bounds x="157" y="2194" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mpsdaj_di" bpmnElement="SequenceFlow_1mpsdaj">
+        <di:waypoint xsi:type="dc:Point" x="207" y="2194" />
+        <di:waypoint xsi:type="dc:Point" x="207" y="2154" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="222" y="2168" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_007p8k3_di" bpmnElement="SequenceFlow_007p8k3">
+        <di:waypoint xsi:type="dc:Point" x="105" y="2308" />
+        <di:waypoint xsi:type="dc:Point" x="207" y="2308" />
+        <di:waypoint xsi:type="dc:Point" x="207" y="2274" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="146" y="2287" width="21" 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:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVcpeResCustService.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVcpeResCustService.bpmn
new file mode 100644
index 0000000..39fcd66
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVcpeResCustService.bpmn
@@ -0,0 +1,807 @@
+<?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.openecomp.mso.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.openecomp.mso.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-CUSREST">
+      <bpmn2:outgoing>SequenceFlow_10o22u2</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition id="_LinkEventDefinition_37" name="vCPE-CUSREST" />
+    </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.openecomp.mso.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="DELVAS_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.openecomp.mso.bpmn.vcpe.scripts.*
+def DeleteServiceInstanceInfra = new DeleteServiceInstanceInfra()
+DeleteServiceInstanceInfra.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="DELVAS_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.openecomp.mso.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.openecomp.mso.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" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_05cjs89</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0snq0kw</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0i8bmrc" name="GoToVCPE-CUSREST">
+      <bpmn2:incoming>SequenceFlow_0zaircn</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="vCPE-CUSREST" />
+    </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("DELVAS_BRG") == null || execution.getVariable("DELVAS_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("DELVAS_TunnelXConn") == null || execution.getVariable("DELVAS_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" />
+      </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" />
+      </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.openecomp.mso.bpmn.infra.scripts.*
+def DeleteGenericMacroServiceNetworkVnf= new DeleteGenericMacroServiceNetworkVnf()
+DeleteGenericMacroServiceNetworkVnf.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.openecomp.mso.bpmn.infra.scripts.*
+def DeleteGenericMacroServiceNetworkVnf= new DeleteGenericMacroServiceNetworkVnf()
+DeleteGenericMacroServiceNetworkVnf.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("DELGMSNV_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("DELGMSNV_vnfsDeletedCountt") < execution.getVariable("DELGMSNV_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="972.5" y="841" width="0" 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/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceBRG.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceBRG.bpmn
new file mode 100644
index 0000000..c1cb102
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceBRG.bpmn
@@ -0,0 +1,735 @@
+<?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="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.openecomp.mso.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.openecomp.mso.bpmn.common.scripts.utils.*
+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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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="PreProcessSDNCGet" />
+    <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.openecomp.mso.bpmn.common.scripts.utils.*
+
+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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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_1dgzhsm</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0z8luou</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_030mhcm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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: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="545" />
+        <di:waypoint xsi:type="dc:Point" x="1140" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="979" y="584.5" 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:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceBRGRollback.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceBRGRollback.bpmn
new file mode 100644
index 0000000..380f4fd
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceBRGRollback.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.4.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.openecomp.mso.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.openecomp.mso.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:incoming>SequenceFlow_149adfw</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0sh1u69</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.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:incoming>SequenceFlow_041l824</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.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.openecomp.mso.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:outgoing>SequenceFlow_03bkrg4</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.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: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.openecomp.mso.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="IntermediateThrowEvent_0apj7jy" />
+    <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.openecomp.mso.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.openecomp.mso.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: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:intermediateThrowEvent id="IntermediateThrowEvent_0mdm7ig" name="To AAI Delete">
+      <bpmn2:incoming>SequenceFlow_0m483td</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="AAI Delete" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0m483td" name="No" sourceRef="ExclusiveGateway_0mys1pj" targetRef="IntermediateThrowEvent_0mdm7ig" />
+    <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="IntermediateThrowEvent_1vkyj76" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1vkyj76" name="To SDNC Delete">
+      <bpmn2:incoming>SequenceFlow_0dzz8fp</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNC Delete" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0apj7jy" name="To SDNC Unassign">
+      <bpmn2:incoming>SequenceFlow_0m483st</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNC Unassign" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1dkzo0o" name="SDNC Delete">
+      <bpmn2:outgoing>SequenceFlow_149adfw</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNC Delete" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0vz52ri" name="SDNC Unassign">
+      <bpmn2:outgoing>SequenceFlow_041l824</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNC Unassign" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_149adfw" sourceRef="IntermediateCatchEvent_1dkzo0o" targetRef="postProcessSDNCDelete" />
+    <bpmn2:sequenceFlow id="SequenceFlow_041l824" sourceRef="IntermediateCatchEvent_0vz52ri" targetRef="PostProcessSDNCUnassign" />
+  </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="223" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="224" y="836" />
+        <di:waypoint xsi:type="dc:Point" x="224" y="868" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="205" y="825.0864835800907" width="14" height="14" />
+        </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:BPMNShape id="IntermediateThrowEvent_0mdm7ig_di" bpmnElement="IntermediateThrowEvent_0mdm7ig">
+        <dc:Bounds x="476" y="872" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="460" y="911" 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="494" y="872" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="510" y="803" width="14" height="14" />
+        </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="863" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-46" y="792.5" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1vkyj76_di" bpmnElement="IntermediateThrowEvent_1vkyj76">
+        <dc:Bounds x="-72" y="863" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-78" y="901" width="79" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0apj7jy_di" bpmnElement="IntermediateThrowEvent_0apj7jy">
+        <dc:Bounds x="206" y="871" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="200" y="908" width="47" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1dkzo0o_di" bpmnElement="IntermediateCatchEvent_1dkzo0o">
+        <dc:Bounds x="341" y="876" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="325" y="916" width="65" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0vz52ri_di" bpmnElement="IntermediateCatchEvent_0vz52ri">
+        <dc:Bounds x="622" y="872" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="599" y="912" width="80" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_149adfw_di" bpmnElement="SequenceFlow_149adfw">
+        <di:waypoint xsi:type="dc:Point" x="359" y="876" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="825" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="850.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_041l824_di" bpmnElement="SequenceFlow_041l824">
+        <di:waypoint xsi:type="dc:Point" x="640" y="872" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="825" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="848.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceTXC.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceTXC.bpmn
new file mode 100644
index 0000000..7978ea6
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceTXC.bpmn
@@ -0,0 +1,735 @@
+<?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="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.openecomp.mso.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.openecomp.mso.bpmn.common.scripts.utils.*
+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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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:sequenceFlow id="SequenceFlow_1dgzhsm" sourceRef="UpdateAAIARActive" targetRef="PreProcessSDNCGet" />
+    <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.openecomp.mso.bpmn.common.scripts.utils.*
+
+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.openecomp.mso.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.openecomp.mso.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_1dgzhsm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.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.openecomp.mso.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_1dgzhsm</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0z8luou</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_030mhcm</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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: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: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="545" />
+        <di:waypoint xsi:type="dc:Point" x="1140" y="545" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="979" y="584.5" 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:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceTXCRollback.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceTXCRollback.bpmn
new file mode 100644
index 0000000..1c31913
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateAllottedResourceTXCRollback.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.4.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.openecomp.mso.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.openecomp.mso.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:incoming>SequenceFlow_149adfw</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0sh1u69</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.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:incoming>SequenceFlow_041l824</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00i7x43</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.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.openecomp.mso.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:outgoing>SequenceFlow_03bkrg4</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.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: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.openecomp.mso.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="IntermediateThrowEvent_0apj7jy" />
+    <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.openecomp.mso.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.openecomp.mso.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: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:intermediateThrowEvent id="IntermediateThrowEvent_0mdm7ig" name="To AAI Delete">
+      <bpmn2:incoming>SequenceFlow_0m483td</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="AAI Delete" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0m483td" name="No" sourceRef="ExclusiveGateway_0mys1pj" targetRef="IntermediateThrowEvent_0mdm7ig" />
+    <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="IntermediateThrowEvent_1vkyj76" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1vkyj76" name="To SDNC Delete">
+      <bpmn2:incoming>SequenceFlow_0dzz8fp</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNC Delete" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0apj7jy" name="To SDNC Unassign">
+      <bpmn2:incoming>SequenceFlow_0m483st</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="SDNC Unassign" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1dkzo0o" name="SDNC Delete">
+      <bpmn2:outgoing>SequenceFlow_149adfw</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNC Delete" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0vz52ri" name="SDNC Unassign">
+      <bpmn2:outgoing>SequenceFlow_041l824</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="SDNC Unassign" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_149adfw" sourceRef="IntermediateCatchEvent_1dkzo0o" targetRef="postProcessSDNCDelete" />
+    <bpmn2:sequenceFlow id="SequenceFlow_041l824" sourceRef="IntermediateCatchEvent_0vz52ri" targetRef="PostProcessSDNCUnassign" />
+  </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="223" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="224" y="836" />
+        <di:waypoint xsi:type="dc:Point" x="224" y="868" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="205" y="825.0864835800907" width="14" height="14" />
+        </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:BPMNShape id="IntermediateThrowEvent_0mdm7ig_di" bpmnElement="IntermediateThrowEvent_0mdm7ig">
+        <dc:Bounds x="476" y="872" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="460" y="911" 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="494" y="872" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="510" y="803" width="14" height="14" />
+        </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="863" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-46" y="792.5" width="14" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1vkyj76_di" bpmnElement="IntermediateThrowEvent_1vkyj76">
+        <dc:Bounds x="-72" y="863" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-78" y="901" width="79" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0apj7jy_di" bpmnElement="IntermediateThrowEvent_0apj7jy">
+        <dc:Bounds x="206" y="871" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="200" y="908" width="47" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1dkzo0o_di" bpmnElement="IntermediateCatchEvent_1dkzo0o">
+        <dc:Bounds x="341" y="876" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="325" y="916" width="65" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0vz52ri_di" bpmnElement="IntermediateCatchEvent_0vz52ri">
+        <dc:Bounds x="622" y="872" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="599" y="912" width="80" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_149adfw_di" bpmnElement="SequenceFlow_149adfw">
+        <di:waypoint xsi:type="dc:Point" x="359" y="876" />
+        <di:waypoint xsi:type="dc:Point" x="359" y="825" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="374" y="850.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_041l824_di" bpmnElement="SequenceFlow_041l824">
+        <di:waypoint xsi:type="dc:Point" x="640" y="872" />
+        <di:waypoint xsi:type="dc:Point" x="640" y="825" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="655" y="848.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateE2ENetworkInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateE2ENetworkInstance.bpmn
index 0010c14..9fad8dd 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateE2ENetworkInstance.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateE2ENetworkInstance.bpmn
@@ -1,6 +1,6 @@
 <?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.7.2">
-  <bpmn:process id="DoCreateNetworkInstance" name="DoCreateNetworkInstance" isExecutable="true">
+  <bpmn:process id="DoCreateE2ENetworkInstance" name="DoCreateE2ENetworkInstance" isExecutable="true">
     <bpmn:startEvent id="StartEvent_1">
       <bpmn:outgoing>SequenceFlow_1gomb9n</bpmn:outgoing>
     </bpmn:startEvent>
@@ -62,7 +62,7 @@
     <bpmn:sequenceFlow id="SequenceFlow_1gomb9n" sourceRef="StartEvent_1" targetRef="ScriptTask_16gvaru" />
   </bpmn:process>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateNetworkInstance">
+    <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>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateE2EServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateE2EServiceInstance.bpmn
index edbb03d..2b3cfa6 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateE2EServiceInstance.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateE2EServiceInstance.bpmn
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.6.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.7.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="DoCreateE2EServiceInstance" name="DoCreateE2EServiceInstance" isExecutable="true">
     <bpmn2:startEvent id="createSI_startEvent" name="Start Flow">
       <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
@@ -22,7 +22,6 @@
 ]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="CustomE2EGetService" targetRef="ScriptTask_0i8cqdy" />
-    <bpmn2:endEvent id="EndEvent_3" />
     <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="getAAICustomerById_scriptTask" />
     <bpmn2:callActivity id="CustomE2EGetService" name="Call Custom E2E Get Service" calledElement="CustomE2EGetService">
       <bpmn2:extensionElements>
@@ -101,12 +100,11 @@
       </bpmn2:scriptTask>
       <bpmn2:sequenceFlow id="SequenceFlow_1xzgv5k" sourceRef="ScriptTask_1p0vyip" targetRef="EndEvent_117lkk3" />
     </bpmn2:subProcess>
-    <bpmn2:exclusiveGateway id="ExclusiveGateway_1nk6aol" name="sdncVersion is 1610?" default="SequenceFlow_156ih25">
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1nk6aol" name="sdncVersion is 1610?">
       <bpmn2:incoming>SequenceFlow_1dd86x8</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_156ih25</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_00v4npo</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1170ztf</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
-    <bpmn2:sequenceFlow id="SequenceFlow_156ih25" name="no" sourceRef="ExclusiveGateway_1nk6aol" targetRef="ParallelGateway_01c99ru" />
     <bpmn2:endEvent id="EndEvent_10659gr">
       <bpmn2:incoming>SequenceFlow_00v4npo</bpmn2:incoming>
     </bpmn2:endEvent>
@@ -129,91 +127,66 @@
 ddsi.postProcessAAIPUT(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_1dd86x8" sourceRef="ScriptTask_0q37vn9" targetRef="ExclusiveGateway_1nk6aol" />
-    <bpmn2:scriptTask id="ScriptTask_1tp0fcx" name="Post Process AAI GET2" scriptFormat="groovy">    <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def dcsi = new DoCreateE2EServiceInstance()
-dcsi.postProcessAAIGET2(execution)]]></bpmn2:script>
-</bpmn2:scriptTask>
-    <bpmn2:parallelGateway id="ParallelGateway_01c99ru">
-      <bpmn2:incoming>SequenceFlow_156ih25</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_09sdmg1</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_1a9kmos</bpmn2:outgoing>
-    </bpmn2:parallelGateway>
     <bpmn2:scriptTask id="ScriptTask_0081lne" name="Prepare SDN-C Adaptor Data Request" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_09sdmg1</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0mcyg0e</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0ofqw6v</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def csi = new  DoCreateE2EServiceInstance()
 csi.preSDNCRequest(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:scriptTask id="ScriptTask_0wvq4t8" name="Prepare VF-C Adaptor Data Request" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_1a9kmos</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1170ztf</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_15zgrcq</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def csi = new  DoCreateE2EServiceInstance()
 csi.preVFCRequest(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
-    <bpmn2:callActivity id="CallActivity_09c3ajg" name="Call DoCreateNetworkInstance" calledElement="DoCreateNetworkInstance">
+    <bpmn2:callActivity id="CallActivity_09c3ajg" name="Call DoCreateE2ENetworkInstance" calledElement="DoCreateE2ENetworkInstance">
       <bpmn2:incoming>SequenceFlow_0ofqw6v</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1vvdkcs</bpmn2:outgoing>
     </bpmn2:callActivity>
-    <bpmn2:callActivity id="CallActivity_0uwm4l1" name="Call DoCreateNetworkServiceInstance" calledElement="DoCreateNetworkServiceInstance">
+    <bpmn2:callActivity id="CallActivity_0uwm4l1" name="Call DoCreateVFCNetworkServiceInstance" calledElement="DoCreateVFCNetworkServiceInstance">
       <bpmn2:incoming>SequenceFlow_15zgrcq</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1x8vphc</bpmn2:outgoing>
     </bpmn2:callActivity>
-    <bpmn2:exclusiveGateway id="ExclusiveGateway_0lczgac" name="Sueecss?">
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0lczgac" name="Sueecss?" default="SequenceFlow_1yv1kef">
       <bpmn2:incoming>SequenceFlow_1vvdkcs</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1yv1kef</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_1d4wn2y</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
-    <bpmn2:exclusiveGateway id="ExclusiveGateway_0cdz77v" name="Success?">
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0cdz77v" name="Success?" default="SequenceFlow_0ou0spo">
       <bpmn2:incoming>SequenceFlow_1x8vphc</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0ou0spo</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_1an6ial</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0mcyg0e</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
-    <bpmn2:parallelGateway id="ParallelGateway_0r1ne67">
-      <bpmn2:incoming>SequenceFlow_1d4wn2y</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_1an6ial</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0w7skxr</bpmn2:outgoing>
-    </bpmn2:parallelGateway>
-    <bpmn2:endEvent id="EndEvent_0kbbt94">
-      <bpmn2:incoming>SequenceFlow_092ghvu</bpmn2:incoming>
-      <bpmn2:terminateEventDefinition />
-    </bpmn2:endEvent>
     <bpmn2:scriptTask id="ScriptTask_1xdjlzm" name="Post Config Service Instance Creation" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_0w7skxr</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1d4wn2y</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_092ghvu</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def csi = new  DoCreateE2EServiceInstance()
 csi.postConfigRequest(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
-    <bpmn2:endEvent id="EndEvent_11lmyvs">
-      <bpmn2:incoming>SequenceFlow_1yv1kef</bpmn2:incoming>
-      <bpmn2:terminateEventDefinition />
-    </bpmn2:endEvent>
-    <bpmn2:endEvent id="EndEvent_01h4q8z">
-      <bpmn2:incoming>SequenceFlow_0ou0spo</bpmn2:incoming>
-      <bpmn2:terminateEventDefinition />
-    </bpmn2:endEvent>
-    <bpmn2:sequenceFlow id="SequenceFlow_09sdmg1" sourceRef="ParallelGateway_01c99ru" targetRef="ScriptTask_0081lne" />
-    <bpmn2:sequenceFlow id="SequenceFlow_1a9kmos" sourceRef="ParallelGateway_01c99ru" targetRef="ScriptTask_0wvq4t8" />
     <bpmn2:sequenceFlow id="SequenceFlow_0ofqw6v" sourceRef="ScriptTask_0081lne" targetRef="CallActivity_09c3ajg" />
     <bpmn2:sequenceFlow id="SequenceFlow_15zgrcq" sourceRef="ScriptTask_0wvq4t8" targetRef="CallActivity_0uwm4l1" />
     <bpmn2:sequenceFlow id="SequenceFlow_1vvdkcs" sourceRef="CallActivity_09c3ajg" targetRef="ExclusiveGateway_0lczgac" />
     <bpmn2:sequenceFlow id="SequenceFlow_1x8vphc" sourceRef="CallActivity_0uwm4l1" targetRef="ExclusiveGateway_0cdz77v" />
-    <bpmn2:sequenceFlow id="SequenceFlow_1yv1kef" name="No" sourceRef="ExclusiveGateway_0lczgac" targetRef="EndEvent_11lmyvs">
+    <bpmn2:sequenceFlow id="SequenceFlow_1yv1kef" name="No" sourceRef="ExclusiveGateway_0lczgac" targetRef="EndEvent_11lmyvs" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1d4wn2y" name="Yes" sourceRef="ExclusiveGateway_0lczgac" targetRef="ScriptTask_1xdjlzm">
       <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") != null}]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_1d4wn2y" name="Yes" sourceRef="ExclusiveGateway_0lczgac" targetRef="ParallelGateway_0r1ne67">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") != null}]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0ou0spo" name="No" sourceRef="ExclusiveGateway_0cdz77v" targetRef="EndEvent_01h4q8z">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") != null}]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_1an6ial" name="Yes" sourceRef="ExclusiveGateway_0cdz77v" targetRef="ParallelGateway_0r1ne67">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") != null}]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0w7skxr" sourceRef="ParallelGateway_0r1ne67" targetRef="ScriptTask_1xdjlzm" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ou0spo" name="No" sourceRef="ExclusiveGateway_0cdz77v" targetRef="EndEvent_01h4q8z" />
     <bpmn2:sequenceFlow id="SequenceFlow_092ghvu" sourceRef="ScriptTask_1xdjlzm" targetRef="EndEvent_0kbbt94" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0mcyg0e" sourceRef="ExclusiveGateway_0cdz77v" targetRef="ScriptTask_0081lne" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1170ztf" sourceRef="ExclusiveGateway_1nk6aol" targetRef="ScriptTask_0wvq4t8" />
+    <bpmn2:endEvent id="EndEvent_11lmyvs">
+      <bpmn2:incoming>SequenceFlow_1yv1kef</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:endEvent id="EndEvent_01h4q8z">
+      <bpmn2:incoming>SequenceFlow_0ou0spo</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:endEvent id="EndEvent_0kbbt94">
+      <bpmn2:incoming>SequenceFlow_092ghvu</bpmn2:incoming>
+    </bpmn2:endEvent>
   </bpmn2:process>
   <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
@@ -245,12 +218,6 @@
           <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="1670" y="1159" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1643" y="1200" 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" />
@@ -334,16 +301,9 @@
       <bpmndi:BPMNShape id="ExclusiveGateway_1nk6aol_di" bpmnElement="ExclusiveGateway_1nk6aol" isMarkerVisible="true">
         <dc:Bounds x="997" y="460" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="903" y="472" width="75" height="24" />
+          <dc:Bounds x="905" y="472" width="72" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_156ih25_di" bpmnElement="SequenceFlow_156ih25">
-        <di:waypoint xsi:type="dc:Point" x="1022" y="510" />
-        <di:waypoint xsi:type="dc:Point" x="1021" y="716" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="990.6229572950259" y="581.6137587257341" width="15" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_10659gr_di" bpmnElement="EndEvent_10659gr">
         <dc:Bounds x="1103" y="467" width="36" height="36" />
         <bpmndi:BPMNLabel>
@@ -401,159 +361,123 @@
           <dc:Bounds x="335" y="507" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_1tp0fcx_di" bpmnElement="ScriptTask_1tp0fcx">
-        <dc:Bounds x="1527" y="1137" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ParallelGateway_01c99ru_di" bpmnElement="ParallelGateway_01c99ru">
-        <dc:Bounds x="996" y="716" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="976" y="770" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_0081lne_di" bpmnElement="ScriptTask_0081lne">
-        <dc:Bounds x="845" y="894" width="100" height="80" />
+        <dc:Bounds x="786" y="818" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_0wvq4t8_di" bpmnElement="ScriptTask_0wvq4t8">
-        <dc:Bounds x="845" y="701" width="100" height="80" />
+        <dc:Bounds x="972" y="564" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_09c3ajg_di" bpmnElement="CallActivity_09c3ajg">
-        <dc:Bounds x="704" y="894" width="100" height="80" />
+        <dc:Bounds x="573" y="819" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_0uwm4l1_di" bpmnElement="CallActivity_0uwm4l1">
-        <dc:Bounds x="704" y="701" width="100" height="80" />
+        <dc:Bounds x="972" y="690" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_0lczgac_di" bpmnElement="ExclusiveGateway_0lczgac" isMarkerVisible="true">
-        <dc:Bounds x="566" y="909" width="50" height="50" />
+        <dc:Bounds x="402" y="833" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="565" y="884" width="51" height="12" />
+          <dc:Bounds x="402" y="808" width="49" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_0cdz77v_di" bpmnElement="ExclusiveGateway_0cdz77v" isMarkerVisible="true">
-        <dc:Bounds x="566" y="716" width="50" height="50" />
+        <dc:Bounds x="997" y="833" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="566" y="691" width="50" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ParallelGateway_0r1ne67_di" bpmnElement="ParallelGateway_0r1ne67">
-        <dc:Bounds x="403" y="804" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="383" y="858" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_0kbbt94_di" bpmnElement="EndEvent_0kbbt94">
-        <dc:Bounds x="109" y="811" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="81" y="851" width="0" height="12" />
+          <dc:Bounds x="998" y="808" width="49" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1xdjlzm_di" bpmnElement="ScriptTask_1xdjlzm">
-        <dc:Bounds x="231" y="789" width="100" height="80" />
+        <dc:Bounds x="218" y="818" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_11lmyvs_di" bpmnElement="EndEvent_11lmyvs">
-        <dc:Bounds x="573" y="1003" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="546" y="1042" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_01h4q8z_di" bpmnElement="EndEvent_01h4q8z">
-        <dc:Bounds x="573" y="601" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="546" y="640" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_09sdmg1_di" bpmnElement="SequenceFlow_09sdmg1">
-        <di:waypoint xsi:type="dc:Point" x="1021" y="766" />
-        <di:waypoint xsi:type="dc:Point" x="1021" y="934" />
-        <di:waypoint xsi:type="dc:Point" x="945" y="934" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="991" y="844" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1a9kmos_di" bpmnElement="SequenceFlow_1a9kmos">
-        <di:waypoint xsi:type="dc:Point" x="996" y="741" />
-        <di:waypoint xsi:type="dc:Point" x="945" y="741" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="926.5" y="720" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0ofqw6v_di" bpmnElement="SequenceFlow_0ofqw6v">
-        <di:waypoint xsi:type="dc:Point" x="845" y="934" />
-        <di:waypoint xsi:type="dc:Point" x="804" y="934" />
+        <di:waypoint xsi:type="dc:Point" x="786" y="858" />
+        <di:waypoint xsi:type="dc:Point" x="673" y="859" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="780.5" y="913" width="0" height="12" />
+          <dc:Bounds x="684.5" y="837.5" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_15zgrcq_di" bpmnElement="SequenceFlow_15zgrcq">
-        <di:waypoint xsi:type="dc:Point" x="845" y="741" />
-        <di:waypoint xsi:type="dc:Point" x="825" y="741" />
-        <di:waypoint xsi:type="dc:Point" x="825" y="741" />
-        <di:waypoint xsi:type="dc:Point" x="804" y="741" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="644" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="690" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="795" y="735" width="0" height="12" />
+          <dc:Bounds x="992" y="661" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1vvdkcs_di" bpmnElement="SequenceFlow_1vvdkcs">
-        <di:waypoint xsi:type="dc:Point" x="704" y="934" />
-        <di:waypoint xsi:type="dc:Point" x="616" y="934" />
+        <di:waypoint xsi:type="dc:Point" x="573" y="859" />
+        <di:waypoint xsi:type="dc:Point" x="452" y="858" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="615" y="913" width="0" height="12" />
+          <dc:Bounds x="467.5" y="837.5" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1x8vphc_di" bpmnElement="SequenceFlow_1x8vphc">
-        <di:waypoint xsi:type="dc:Point" x="704" y="741" />
-        <di:waypoint xsi:type="dc:Point" x="660" y="741" />
-        <di:waypoint xsi:type="dc:Point" x="660" y="741" />
-        <di:waypoint xsi:type="dc:Point" x="616" y="741" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="770" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="833" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="630" y="735" width="0" height="12" />
+          <dc:Bounds x="992" y="795.5" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1yv1kef_di" bpmnElement="SequenceFlow_1yv1kef">
-        <di:waypoint xsi:type="dc:Point" x="591" y="959" />
-        <di:waypoint xsi:type="dc:Point" x="591" y="982" />
-        <di:waypoint xsi:type="dc:Point" x="591" y="982" />
-        <di:waypoint xsi:type="dc:Point" x="591" y="1003" />
+        <di:waypoint xsi:type="dc:Point" x="427" y="883" />
+        <di:waypoint xsi:type="dc:Point" x="427" y="962" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="583" y="970" width="16" height="12" />
+          <dc:Bounds x="455" y="892" width="14" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1d4wn2y_di" bpmnElement="SequenceFlow_1d4wn2y">
-        <di:waypoint xsi:type="dc:Point" x="566" y="934" />
-        <di:waypoint xsi:type="dc:Point" x="428" y="934" />
-        <di:waypoint xsi:type="dc:Point" x="428" y="854" />
+        <di:waypoint xsi:type="dc:Point" x="402" y="858" />
+        <di:waypoint xsi:type="dc:Point" x="318" y="858" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="487" y="913" width="21" height="12" />
+          <dc:Bounds x="823.2259872894327" y="883.5416267409498" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0ou0spo_di" bpmnElement="SequenceFlow_0ou0spo">
-        <di:waypoint xsi:type="dc:Point" x="591" y="716" />
-        <di:waypoint xsi:type="dc:Point" x="591" y="637" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="883" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="962" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="613" y="636.5" width="16" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1an6ial_di" bpmnElement="SequenceFlow_1an6ial">
-        <di:waypoint xsi:type="dc:Point" x="566" y="741" />
-        <di:waypoint xsi:type="dc:Point" x="428" y="741" />
-        <di:waypoint xsi:type="dc:Point" x="428" y="804" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="487" y="720" width="21" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0w7skxr_di" bpmnElement="SequenceFlow_0w7skxr">
-        <di:waypoint xsi:type="dc:Point" x="403" y="829" />
-        <di:waypoint xsi:type="dc:Point" x="331" y="829" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="322" y="808" width="0" height="12" />
+          <dc:Bounds x="1045" y="895" width="14" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_092ghvu_di" bpmnElement="SequenceFlow_092ghvu">
-        <di:waypoint xsi:type="dc:Point" x="231" y="829" />
-        <di:waypoint xsi:type="dc:Point" x="145" y="829" />
+        <di:waypoint xsi:type="dc:Point" x="218" y="858" />
+        <di:waypoint xsi:type="dc:Point" x="182" y="858" />
+        <di:waypoint xsi:type="dc:Point" x="182" y="858" />
+        <di:waypoint xsi:type="dc:Point" x="137" y="858" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="143" y="808" width="0" height="12" />
+          <dc:Bounds x="152" y="852" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0mcyg0e_di" bpmnElement="SequenceFlow_0mcyg0e">
+        <di:waypoint xsi:type="dc:Point" x="997" y="858" />
+        <di:waypoint xsi:type="dc:Point" x="886" y="858" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="896.5" y="837" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1170ztf_di" bpmnElement="SequenceFlow_1170ztf">
+        <di:waypoint xsi:type="dc:Point" x="1022" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="564" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="992" y="531" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0g2btws_di" bpmnElement="EndEvent_11lmyvs">
+        <dc:Bounds x="409" y="962" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="292" y="1001" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0y0wvdf_di" bpmnElement="EndEvent_01h4q8z">
+        <dc:Bounds x="1004" y="962" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="887" y="1001" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_01p249c_di" bpmnElement="EndEvent_0kbbt94">
+        <dc:Bounds x="101" y="840" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="28" y="880" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
\ No newline at end of file
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVFCNetworkServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVFCNetworkServiceInstance.bpmn
index 75c5820..58eb1f0 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVFCNetworkServiceInstance.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVFCNetworkServiceInstance.bpmn
@@ -1,91 +1,108 @@
 <?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="StartEvent_1">
+    <bpmn:startEvent id="createNS_StartEvent" name="createNS_StartEvent">
       <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="StartEvent_1" targetRef="Task_0h2p1i1" />
-    <bpmn:sequenceFlow id="SequenceFlow_0khtova" sourceRef="Task_0h2p1i1" targetRef="Task_09nzhwk" />
+    <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">
+    <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.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateVFCNetworkServiceInstance()
+dcsi.createNetworkService(execution)]]></bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:scriptTask id="Task_0h2p1i1" name="Preprocess Incoming Request">
+    <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.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateVFCNetworkServiceInstance()
+dcsi.preProcessRequest(execution)]]></bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:scriptTask id="Task_15v20es" name="Instantiate Network Service">
-      <bpmn:incoming>SequenceFlow_1rt03zl</bpmn:incoming>
+    <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.openecomp.mso.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>SequenceFlow_1rt03zl</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0df541u</bpmn:outgoing>
+      <bpmn:outgoing>createNSSuccess_SequenceFlow</bpmn:outgoing>
+      <bpmn:outgoing>createNSFailed_SequenceFlow</bpmn:outgoing>
     </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_1rt03zl" name="yes" sourceRef="ExclusiveGateway_0zfksms" targetRef="Task_15v20es">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression" />
+    <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:endEvent id="EndEvent_1tncafd">
-      <bpmn:incoming>SequenceFlow_0df541u</bpmn:incoming>
-      <bpmn:terminateEventDefinition />
-    </bpmn:endEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_0df541u" name="no" sourceRef="ExclusiveGateway_0zfksms" targetRef="EndEvent_1tncafd" />
+    <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>SequenceFlow_0j7xo94</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_1ui2n9l</bpmn:outgoing>
+      <bpmn:outgoing>instantiateFailed_SequenceFlow</bpmn:outgoing>
+      <bpmn:outgoing>instantiateSuccess_SequenceFlow</bpmn:outgoing>
     </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_1ywe21t" sourceRef="Task_15v20es" targetRef="ExclusiveGateway_1is7zys" />
-    <bpmn:endEvent id="EndEvent_1gkvvpn">
-      <bpmn:incoming>SequenceFlow_0j7xo94</bpmn:incoming>
-      <bpmn:terminateEventDefinition />
-    </bpmn:endEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_0j7xo94" name="no" sourceRef="ExclusiveGateway_1is7zys" targetRef="EndEvent_1gkvvpn">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression" language=""></bpmn:conditionExpression>
+    <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="SequenceFlow_1ui2n9l" name="yes" sourceRef="ExclusiveGateway_1is7zys" targetRef="Task_0ff3d5r" />
-    <bpmn:scriptTask id="Task_0ff3d5r" name="Query NS Progress">
-      <bpmn:incoming>SequenceFlow_1ui2n9l</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_0omec46</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1jaltbk</bpmn:outgoing>
-    </bpmn:scriptTask>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_0y0tqb7" name="Query Job Success?">
-      <bpmn:incoming>SequenceFlow_1jaltbk</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0yegc4p</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_118dtip</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_1jaltbk" sourceRef="Task_0ff3d5r" targetRef="ExclusiveGateway_0y0tqb7" />
-    <bpmn:endEvent id="EndEvent_0ev3qbb">
-      <bpmn:incoming>SequenceFlow_0yegc4p</bpmn:incoming>
-      <bpmn:terminateEventDefinition />
-    </bpmn:endEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_0yegc4p" name="no" sourceRef="ExclusiveGateway_0y0tqb7" targetRef="EndEvent_0ev3qbb" />
+    <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_118dtip</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0hftgi6</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0omec46</bpmn:outgoing>
+      <bpmn:incoming>SequenceFlow_0xqo13p</bpmn:incoming>
+      <bpmn:outgoing>operationFinished_SequenceFlow</bpmn:outgoing>
+      <bpmn:outgoing>operationProcessing_SequenceFlow</bpmn:outgoing>
     </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_118dtip" name="yes" sourceRef="ExclusiveGateway_0y0tqb7" targetRef="ExclusiveGateway_15492gl" />
-    <bpmn:task id="Task_0hltnyg" name="Finish NS Create">
-      <bpmn:incoming>SequenceFlow_0hftgi6</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0cq2q6g</bpmn:outgoing>
-    </bpmn:task>
-    <bpmn:sequenceFlow id="SequenceFlow_0hftgi6" name="yes" sourceRef="ExclusiveGateway_15492gl" targetRef="Task_0hltnyg" />
-    <bpmn:sequenceFlow id="SequenceFlow_0omec46" name="no" sourceRef="ExclusiveGateway_15492gl" targetRef="Task_0ff3d5r" />
+    <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:terminateEventDefinition />
     </bpmn:endEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_0cq2q6g" sourceRef="Task_0hltnyg" targetRef="EndEvent_1x6k78c" />
+    <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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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="StartEvent_1">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="createNS_StartEvent">
         <dc:Bounds x="175" y="111" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="148" y="147" width="90" height="20" />
+          <dc:Bounds x="152" y="147" width="83" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln">
@@ -114,32 +131,26 @@
       <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="Task_0h2p1i1">
+      <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="Task_15v20es">
+      <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="684" y="158" width="52" height="24" />
+          <dc:Bounds x="685" y="158" width="52" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1rt03zl_di" bpmnElement="SequenceFlow_1rt03zl">
+      <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:BPMNShape id="EndEvent_1nhef11_di" bpmnElement="EndEvent_1tncafd">
-        <dc:Bounds x="690" y="-3" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="708" y="37" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0df541u_di" bpmnElement="SequenceFlow_0df541u">
+      <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>
@@ -149,7 +160,7 @@
       <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="1028" y="159" width="69" height="24" />
+          <dc:Bounds x="1029" y="159" width="69" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1ywe21t_di" bpmnElement="SequenceFlow_1ywe21t">
@@ -159,54 +170,18 @@
           <dc:Bounds x="986.5" y="108.5" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="EndEvent_1gkvvpn_di" bpmnElement="EndEvent_1gkvvpn">
-        <dc:Bounds x="1041" y="-3" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1059" y="37" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0j7xo94_di" bpmnElement="SequenceFlow_0j7xo94">
+      <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="SequenceFlow_1ui2n9l">
+      <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="1065" y="207" width="19" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_1dyd7pi_di" bpmnElement="Task_0ff3d5r">
-        <dc:Bounds x="1009" y="271" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_0y0tqb7_di" bpmnElement="ExclusiveGateway_0y0tqb7" isMarkerVisible="true">
-        <dc:Bounds x="1181" y="429" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1182" y="483" width="53" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1jaltbk_di" bpmnElement="SequenceFlow_1jaltbk">
-        <di:waypoint xsi:type="dc:Point" x="1109" y="311" />
-        <di:waypoint xsi:type="dc:Point" x="1206" y="311" />
-        <di:waypoint xsi:type="dc:Point" x="1206" y="429" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1157.5" y="290" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="EndEvent_0ev3qbb_di" bpmnElement="EndEvent_0ev3qbb">
-        <dc:Bounds x="1323" y="436" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1341" y="476" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0yegc4p_di" bpmnElement="SequenceFlow_0yegc4p">
-        <di:waypoint xsi:type="dc:Point" x="1231" y="454" />
-        <di:waypoint xsi:type="dc:Point" x="1323" y="454" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1270.6" y="433" width="12" height="12" />
+          <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">
@@ -215,42 +190,70 @@
           <dc:Bounds x="1038" y="624" width="50" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_118dtip_di" bpmnElement="SequenceFlow_118dtip">
-        <di:waypoint xsi:type="dc:Point" x="1206" y="479" />
-        <di:waypoint xsi:type="dc:Point" x="1206" y="595" />
-        <di:waypoint xsi:type="dc:Point" x="1084" y="595" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1212" y="589" width="19" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="Task_0hltnyg_di" bpmnElement="Task_0hltnyg">
-        <dc:Bounds x="740" y="555" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0hftgi6_di" bpmnElement="SequenceFlow_0hftgi6">
+      <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="840" 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="928" y="574" width="19" height="12" />
+          <dc:Bounds x="963" y="574" width="19" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0omec46_di" bpmnElement="SequenceFlow_0omec46">
-        <di:waypoint xsi:type="dc:Point" x="1059" y="570" />
-        <di:waypoint xsi:type="dc:Point" x="1059" y="351" />
+      <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="1068" y="455" width="12" height="12" />
+          <dc:Bounds x="1131" y="607" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="EndEvent_1j727tc_di" bpmnElement="EndEvent_1x6k78c">
-        <dc:Bounds x="576" y="577" width="36" height="36" />
+      <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="593.907" y="617" width="0" height="12" />
+          <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:BPMNEdge id="SequenceFlow_0cq2q6g_di" bpmnElement="SequenceFlow_0cq2q6g">
-        <di:waypoint xsi:type="dc:Point" x="740" y="595" />
-        <di:waypoint xsi:type="dc:Point" x="612" y="595" />
+      <bpmndi:BPMNShape id="EndEvent_0xgvlmx_di" bpmnElement="EndEvent_1gkvvpn">
+        <dc:Bounds x="1041" y="-3" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="676" y="574" width="0" height="12" />
+          <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>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteAllottedResourceBRG.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteAllottedResourceBRG.bpmn
new file mode 100644
index 0000000..82524a1
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteAllottedResourceTXC.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteAllottedResourceTXC.bpmn
new file mode 100644
index 0000000..cac6c24
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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.openecomp.mso.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/MSOInfrastructureBPMN/src/main/webapp/WEB-INF/jboss-deployment-structure.xml b/bpmn/MSOInfrastructureBPMN/src/main/webapp/WEB-INF/jboss-deployment-structure.xml
index 3dbfcce..fa35ead 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/webapp/WEB-INF/jboss-deployment-structure.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/main/webapp/WEB-INF/jboss-deployment-structure.xml
@@ -25,7 +25,14 @@
 			<module name="org.apache.log4j" />
 			<module name="org.slf4j" />
 			<module name="org.slf4j.impl" />
+			<module name="org.jboss.resteasy.resteasy-jackson-provider" />
+			<module name="org.jboss.resteasy.resteasy-jettison-provider" />
 		</exclusions>
+		<dependencies>
+			<module name="org.jboss.resteasy.resteasy-jackson2-provider" services="import" />
+			<!-- This module contain the ProviderBase class: -->
+			<module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" export="true" />
+		</dependencies>
 	</deployment>
 </jboss-deployment-structure>
 
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGTest.groovy
new file mode 100644
index 0000000..f34f84a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGTest.groovy
@@ -0,0 +1,1131 @@
+package org.openecomp.mso.bpmn.vcpe.scripts
+
+
+import org.camunda.bpm.engine.ProcessEngineServices
+import org.camunda.bpm.engine.RepositoryService
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.camunda.bpm.engine.repository.ProcessDefinition
+import org.camunda.bpm.engine.runtime.Execution
+import org.junit.Before
+import org.junit.BeforeClass
+import org.junit.Rule
+import org.junit.Test
+import org.junit.Ignore
+import org.mockito.MockitoAnnotations
+import org.mockito.ArgumentCaptor
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.mock.FileUtil
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse
+import static com.github.tomakehurst.wiremock.client.WireMock.get
+import static com.github.tomakehurst.wiremock.client.WireMock.patch
+import static com.github.tomakehurst.wiremock.client.WireMock.put
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor
+import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetAllottedResource
+import org.openecomp.mso.bpmn.core.RollbackData
+
+import com.github.tomakehurst.wiremock.junit.WireMockRule
+
+class DoCreateAllottedResourceBRGTest  {
+	
+	@Rule
+	public WireMockRule wireMockRule = new WireMockRule(28090)
+	
+		static def urnProps = new Properties()
+		static def aaiUriPfx
+	
+		String Prefix="DCARBRG_"
+		def utils = new MsoUtils()
+
+  		@BeforeClass
+		public static void setUpBeforeClass() {
+			def fr = new FileReader("src/test/resources/mso.bpmn.urn.properties")
+			urnProps.load(fr)
+			fr.close()
+			
+			aaiUriPfx = urnProps.get("aai.endpoint")
+		}
+		  
+	    @Before
+		public void init()
+		{
+			MockitoAnnotations.initMocks(this)
+		}
+		
+		
+		// ***** preProcessRequest *****
+				
+		@Test
+//		@Ignore  
+		public void preProcessRequest() {
+			ExecutionEntity mex = setupMock()
+			initPreProcess(mex)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.preProcessRequest(mex)
+
+			verify(mex).getVariable("isDebugLogEnabled")
+			verify(mex).setVariable("prefix", Prefix)
+					
+			assertTrue(checkMissingPreProcessRequest("URN_mso_workflow_sdncadapter_callback"))
+			assertTrue(checkMissingPreProcessRequest("serviceInstanceId"))
+			assertTrue(checkMissingPreProcessRequest("parentServiceInstanceId"))
+			assertTrue(checkMissingPreProcessRequest("allottedResourceModelInfo"))
+			assertTrue(checkMissingPreProcessRequest("vni"))
+			assertTrue(checkMissingPreProcessRequest("vgmuxBearerIP"))
+			assertTrue(checkMissingPreProcessRequest("brgWanMacAddress"))
+			assertTrue(checkMissingPreProcessRequest("allottedResourceRole"))
+			assertTrue(checkMissingPreProcessRequest("allottedResourceType"))
+		}
+		
+		
+		// ***** getAaiAR *****
+		
+		@Test
+//		@Ignore
+		public void getAaiAR() {
+			def arData = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getAR.xml")
+			def arBrg = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")
+			
+			wireMockRule
+				.stubFor(get(urlMatching("/aai/v[0-9]+/mylink"))
+						.willReturn(aResponse()
+							.withStatus(200)
+							.withHeader("Content-Type", "text/xml")
+							.withBodyFile("VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")))
+			
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("allottedResourceType")).thenReturn("BRGt")
+			when(mex.getVariable("allottedResourceRole")).thenReturn("BRGr")
+			when(mex.getVariable("CSI_service")).thenReturn(arData)
+			when(mex.getVariable("URN_aai_endpoint")).thenReturn(aaiUriPfx)
+			when(mex.getVariable("aaiAROrchStatus")).thenReturn("Active")
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.getAaiAR(mex)
+			
+			verify(mex).setVariable("foundActiveAR", true)
+		}
+		
+		@Test
+//		@Ignore
+		public void getAaiAR_Duplicate() {
+			def arData = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getAR.xml")
+			def arBrg = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")
+			
+			wireMockRule
+				.stubFor(get(urlMatching("/aai/v[0-9]+/mylink"))
+						.willReturn(aResponse()
+							.withStatus(200)
+							.withHeader("Content-Type", "text/xml")
+							.withBodyFile("VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")))
+			
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("allottedResourceType")).thenReturn("BRGt")
+			when(mex.getVariable("allottedResourceRole")).thenReturn("BRGr")
+			when(mex.getVariable("CSI_service")).thenReturn(arData)
+			when(mex.getVariable("URN_aai_endpoint")).thenReturn(aaiUriPfx)
+			when(mex.getVariable("aaiAROrchStatus")).thenReturn("Active")
+			
+			// fail if duplicate
+			when(mex.getVariable("failExists")).thenReturn("true")
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError( { _ -> DoCreateAllottedResourceBRG.getAaiAR(mex) }))
+		}
+		
+		@Test
+//		@Ignore
+		public void getAaiAR_NotActive() {
+			def arData = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getAR.xml")
+			def arBrg = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")
+			
+			wireMockRule
+				.stubFor(get(urlMatching("/aai/v[0-9]+/mylink"))
+						.willReturn(aResponse()
+							.withStatus(200)
+							.withHeader("Content-Type", "text/xml")
+							.withBodyFile("VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")))
+			
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("allottedResourceType")).thenReturn("BRGt")
+			when(mex.getVariable("allottedResourceRole")).thenReturn("BRGr")
+			when(mex.getVariable("CSI_service")).thenReturn(arData)
+			when(mex.getVariable("URN_aai_endpoint")).thenReturn(aaiUriPfx)
+			
+			// not active
+			when(mex.getVariable("aaiAROrchStatus")).thenReturn("not-active")
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError( { _ -> DoCreateAllottedResourceBRG.getAaiAR(mex) }))
+		}
+		
+		@Test
+//		@Ignore
+		public void getAaiAR_NoStatus() {
+			def arData = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getAR.xml")
+			def arBrg = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")
+			
+			wireMockRule
+				.stubFor(get(urlMatching("/aai/v[0-9]+/mylink"))
+						.willReturn(aResponse()
+							.withStatus(200)
+							.withHeader("Content-Type", "text/xml")
+							.withBodyFile("VCPE/DoCreateAllottedResourceBRG/getArBrg.xml")))
+			
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("allottedResourceType")).thenReturn("BRGt")
+			when(mex.getVariable("allottedResourceRole")).thenReturn("BRGr")
+			when(mex.getVariable("CSI_service")).thenReturn(arData)
+			when(mex.getVariable("URN_aai_endpoint")).thenReturn(aaiUriPfx)
+			
+			when(mex.getVariable("aaiAROrchStatus")).thenReturn(null)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.getAaiAR(mex)
+			
+			verify(mex, never()).setVariable("foundActiveAR", true)
+		}
+		
+		
+		// ***** createAaiAR *****
+		
+		@Test
+//		@Ignore
+		public void createAaiAR() {
+			ExecutionEntity mex = setupMock()
+			initCreateAaiAr(mex)
+			
+			wireMockRule
+				.stubFor(put(urlMatching("/aai/v[0-9]+/mypsi/allotted-resources/allotted-resource/myid"))
+						.willReturn(aResponse()
+							.withStatus(200)))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.createAaiAR(mex)
+			
+			ArgumentCaptor<String> keycap = ArgumentCaptor.forClass(String.class)
+			ArgumentCaptor<Object> valcap = ArgumentCaptor.forClass(Object.class)
+			
+			verify(mex, times(3)).setVariable(keycap.capture(), valcap.capture())
+			
+			assertFalse(keycap.getAllValues().isEmpty())
+			assertEquals("rollbackData", keycap.getAllValues().get(keycap.getAllValues().size()-1))
+			
+			def data = valcap.getAllValues().get(valcap.getAllValues().size()-1)
+			assertNotNull(data)
+			assertTrue(data instanceof RollbackData)
+			
+			assertEquals("45", data.get(Prefix, "disableRollback"))
+			assertEquals("true", data.get(Prefix, "rollbackAAI"))
+			assertEquals("myid", data.get(Prefix, "allottedResourceId"))
+			assertEquals("sii", data.get(Prefix, "serviceInstanceId"))
+			assertEquals("psii", data.get(Prefix, "parentServiceInstanceId"))
+			assertEquals(aaiUriPfx+"/aai/v9/mypsi/allotted-resources/allotted-resource/myid", data.get(Prefix, "aaiARPath"))
+		}
+		
+		@Test
+//		@Ignore
+		public void createAaiAR_NoArid_NoModelUuids() {
+			ExecutionEntity mex = setupMock()
+			initCreateAaiAr(mex)
+				
+			// no allottedResourceId - will be generated
+			
+			when(mex.getVariable("allottedResourceId")).thenReturn(null)
+			
+			wireMockRule
+				.stubFor(put(urlMatching("/aai/v[0-9]+/mypsi/allotted-resources/allotted-resource/.*"))
+						.willReturn(aResponse()
+							.withStatus(200)))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.createAaiAR(mex)
+			
+			ArgumentCaptor<String> keycap = ArgumentCaptor.forClass(String.class)
+			ArgumentCaptor<Object> valcap = ArgumentCaptor.forClass(Object.class)
+			
+			verify(mex, times(4)).setVariable(keycap.capture(), valcap.capture())
+			
+			assertFalse(keycap.getAllValues().isEmpty())
+			assertEquals("allottedResourceId", keycap.getAllValues().get(0))
+			assertEquals("rollbackData", keycap.getAllValues().get(keycap.getAllValues().size()-1))
+			
+			def arid = valcap.getAllValues().get(0)
+			assertNotNull(arid)
+			assertFalse(arid.isEmpty())
+			
+			def data = valcap.getAllValues().get(valcap.getAllValues().size()-1)
+			assertNotNull(data)
+			assertTrue(data instanceof RollbackData)
+			
+			assertEquals(arid, data.get(Prefix, "allottedResourceId"))
+		}
+		
+		@Test
+//		@Ignore
+		public void createAaiAR_MissingPsiLink() {
+			ExecutionEntity mex = setupMock()
+			initCreateAaiAr(mex)
+			
+			when(mex.getVariable("PSI_resourceLink")).thenReturn(null)
+			
+			wireMockRule
+				.stubFor(put(urlMatching("/aai/v[0-9]+/mypsi/allotted-resources/allotted-resource/myid"))
+						.willReturn(aResponse()
+							.withStatus(200)))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.createAaiAR(mex) }))
+		}
+		
+		@Test
+//		@Ignore
+		public void createAaiAR_HttpFailed() {
+			ExecutionEntity mex = setupMock()
+			initCreateAaiAr(mex)
+			
+			// return 500 status
+			wireMockRule
+				.stubFor(put(urlMatching("/aai/v[0-9]+/mypsi/allotted-resources/allotted-resource/myid"))
+						.willReturn(aResponse()
+							.withStatus(500)))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.createAaiAR(mex) }))
+		}
+		
+		@Test
+//		@Ignore
+		public void createAaiAR_BpmnError() {
+			ExecutionEntity mex = setupMock()
+			initCreateAaiAr(mex)
+			
+			when(mex.getVariable("URN_aai_endpoint")).thenThrow(new BpmnError("expected exception"))
+			
+			wireMockRule
+				.stubFor(put(urlMatching("/aai/v[0-9]+/mypsi/allotted-resources/allotted-resource/myid"))
+						.willReturn(aResponse()
+							.withStatus(200)))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.createAaiAR(mex) }))
+		}
+		
+		@Test
+//		@Ignore
+		public void createAaiAR_Ex() {
+			ExecutionEntity mex = setupMock()
+			initCreateAaiAr(mex)
+			
+			when(mex.getVariable("URN_aai_endpoint")).thenThrow(new RuntimeException("expected exception"))
+			
+			wireMockRule
+				.stubFor(put(urlMatching("/aai/v[0-9]+/mypsi/allotted-resources/allotted-resource/myid"))
+						.willReturn(aResponse()
+							.withStatus(200)))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.createAaiAR(mex) }))
+		}
+		
+		
+		// ***** buildSDNCRequest *****
+		
+		@Test
+//		@Ignore
+		public void buildSDNCRequest() {
+			ExecutionEntity mex = setupMock()
+			initBuildSDNCRequest(mex)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			String result = DoCreateAllottedResourceBRG.buildSDNCRequest(mex, "myact", "myreq")
+			
+			assertTrue(result.indexOf("<sdncadapter:RequestId>myreq</") >= 0)
+			assertTrue(result.indexOf("<sdncadapter:SvcAction>myact</") >= 0)
+			assertTrue(result.indexOf("<allotted-resource-id>ari</") >= 0)
+			assertTrue(result.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
+			assertTrue(result.indexOf("<service-instance-id>psii</") >= 0)
+			assertTrue(result.indexOf("<parent-service-instance-id>psii</") >= 0)
+			assertTrue(result.indexOf("<sdncadapter:CallbackUrl>scu</") >= 0)
+			assertTrue(result.indexOf("<request-id>mri</") >= 0)
+			assertTrue(result.indexOf("<brg-wan-mac-address>bwma</") >= 0)
+			assertTrue(result.indexOf("<vni>myvni</") >= 0)
+			assertTrue(result.indexOf("<vgmux-bearer-ip>vbi</") >= 0)
+			assertTrue(result.indexOf("<model-invariant-uuid>miu</") >= 0)
+			assertTrue(result.indexOf("<model-uuid>mu</") >= 0)
+			assertTrue(result.indexOf("<model-customization-uuid>mcu</") >= 0)
+			assertTrue(result.indexOf("<model-version>mv</") >= 0)
+			assertTrue(result.indexOf("<model-name>mn</") >= 0)
+		}
+		
+		@Test
+//		@Ignore
+		public void buildSDNCRequest_EmptyModelInfo() {
+			ExecutionEntity mex = setupMock()
+			initBuildSDNCRequest(mex)
+			
+			when(mex.getVariable("allottedResourceModelInfo")).thenReturn("{}")
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			String result = DoCreateAllottedResourceBRG.buildSDNCRequest(mex, "myact", "myreq")
+			
+			assertTrue(result.indexOf("<sdncadapter:RequestId>myreq</") >= 0)
+			assertTrue(result.indexOf("<sdncadapter:SvcAction>myact</") >= 0)
+			assertTrue(result.indexOf("<allotted-resource-id>ari</") >= 0)
+			assertTrue(result.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
+			assertTrue(result.indexOf("<service-instance-id>psii</") >= 0)
+			assertTrue(result.indexOf("<parent-service-instance-id>psii</") >= 0)
+			assertTrue(result.indexOf("<sdncadapter:CallbackUrl>scu</") >= 0)
+			assertTrue(result.indexOf("<request-id>mri</") >= 0)
+			assertTrue(result.indexOf("<brg-wan-mac-address>bwma</") >= 0)
+			assertTrue(result.indexOf("<vni>myvni</") >= 0)
+			assertTrue(result.indexOf("<vgmux-bearer-ip>vbi</") >= 0)
+			assertTrue(result.indexOf("<model-invariant-uuid/>") >= 0)
+			assertTrue(result.indexOf("<model-uuid/>") >= 0)
+			assertTrue(result.indexOf("<model-customization-uuid/>") >= 0)
+			assertTrue(result.indexOf("<model-version/>") >= 0)
+			assertTrue(result.indexOf("<model-name/>") >= 0)
+		}
+		
+		@Test
+//		@Ignore
+		public void buildSDNCRequest_Ex() {
+			ExecutionEntity mex = setupMock()
+			initBuildSDNCRequest(mex)
+			
+			when(mex.getVariable("allottedResourceId")).thenThrow(new RuntimeException("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.buildSDNCRequest(mex, "myact", "myreq") }))
+		}
+		
+		
+		// ***** preProcessSDNCAssign *****
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCAssign() {
+			ExecutionEntity mex = setupMock()
+			def data = initPreProcessSDNC(mex)
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.preProcessSDNCAssign(mex)
+			
+			ArgumentCaptor<String> keycap = ArgumentCaptor.forClass(String.class)
+			ArgumentCaptor<Object> valcap = ArgumentCaptor.forClass(Object.class)
+			
+			verify(mex, times(2)).setVariable(keycap.capture(), valcap.capture())
+			
+			assertFalse(keycap.getAllValues().isEmpty())
+			assertEquals("sdncAssignRequest", keycap.getAllValues().get(0))
+			assertEquals("rollbackData", keycap.getAllValues().get(keycap.getAllValues().size()-1))
+			
+			def req = valcap.getAllValues().get(0)
+			assertNotNull(req)
+			
+			assertEquals(data, valcap.getAllValues().get(valcap.getAllValues().size()-1))
+			
+			def rbreq = data.get(Prefix, "sdncAssignRollbackReq")
+			
+			assertTrue(req.indexOf("<sdncadapter:SvcAction>assign</") >= 0)
+			assertTrue(req.indexOf("<request-action>CreateBRGInstance</") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
+			
+			assertTrue(rbreq.indexOf("<sdncadapter:SvcAction>unassign</") >= 0)
+			assertTrue(rbreq.indexOf("<request-action>DeleteBRGInstance</") >= 0)
+			assertTrue(rbreq.indexOf("<sdncadapter:RequestId>") >= 0)
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCAssign_BpmnError() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNC(mex)
+			
+			when(mex.getVariable("rollbackData")).thenThrow(new BpmnError("expected exception"))
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCAssign(mex) }))
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCAssign_Ex() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNC(mex)
+			
+			when(mex.getVariable("rollbackData")).thenThrow(new RuntimeException("expected exception"))
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCAssign(mex) }))
+		}
+		
+		
+		// ***** preProcessSDNCCreate *****
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCCreate() {
+			ExecutionEntity mex = setupMock()
+			def data = initPreProcessSDNC(mex)
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.preProcessSDNCCreate(mex)
+			
+			ArgumentCaptor<String> keycap = ArgumentCaptor.forClass(String.class)
+			ArgumentCaptor<Object> valcap = ArgumentCaptor.forClass(Object.class)
+			
+			verify(mex, times(2)).setVariable(keycap.capture(), valcap.capture())
+			
+			assertFalse(keycap.getAllValues().isEmpty())
+			assertEquals("sdncCreateRequest", keycap.getAllValues().get(0))
+			assertEquals("rollbackData", keycap.getAllValues().get(keycap.getAllValues().size()-1))
+			
+			def req = valcap.getAllValues().get(0)
+			assertNotNull(req)
+			
+			assertEquals(data, valcap.getAllValues().get(valcap.getAllValues().size()-1))
+			
+			def rbreq = data.get(Prefix, "sdncCreateRollbackReq")
+			
+			assertTrue(req.indexOf("<sdncadapter:SvcAction>create</") >= 0)
+			assertTrue(req.indexOf("<request-action>CreateBRGInstance</") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
+			
+			assertTrue(rbreq.indexOf("<sdncadapter:SvcAction>delete</") >= 0)
+			assertTrue(rbreq.indexOf("<request-action>DeleteBRGInstance</") >= 0)
+			assertTrue(rbreq.indexOf("<sdncadapter:RequestId>") >= 0)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCCreate_BpmnError() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNC(mex)
+			
+			when(mex.getVariable("rollbackData")).thenThrow(new BpmnError("expected exception"))
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCCreate(mex) }))
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCCreate_Ex() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNC(mex)
+			
+			when(mex.getVariable("rollbackData")).thenThrow(new RuntimeException("expected exception"))
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCCreate(mex) }))
+		}
+		
+		
+		// ***** preProcessSDNCActivate *****
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCActivate() {
+			ExecutionEntity mex = setupMock()
+			def data = initPreProcessSDNC(mex)
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.preProcessSDNCActivate(mex)
+			
+			ArgumentCaptor<String> keycap = ArgumentCaptor.forClass(String.class)
+			ArgumentCaptor<Object> valcap = ArgumentCaptor.forClass(Object.class)
+			
+			verify(mex, times(2)).setVariable(keycap.capture(), valcap.capture())
+			
+			assertFalse(keycap.getAllValues().isEmpty())
+			assertEquals("sdncActivateRequest", keycap.getAllValues().get(0))
+			assertEquals("rollbackData", keycap.getAllValues().get(keycap.getAllValues().size()-1))
+			
+			def req = valcap.getAllValues().get(0)
+			assertNotNull(req)
+			
+			assertEquals(data, valcap.getAllValues().get(valcap.getAllValues().size()-1))
+			
+			def rbreq = data.get(Prefix, "sdncActivateRollbackReq")
+			
+			assertTrue(req.indexOf("<sdncadapter:SvcAction>activate</") >= 0)
+			assertTrue(req.indexOf("<request-action>CreateBRGInstance</") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
+			
+			assertTrue(rbreq.indexOf("<sdncadapter:SvcAction>deactivate</") >= 0)
+			assertTrue(rbreq.indexOf("<request-action>DeleteBRGInstance</") >= 0)
+			assertTrue(rbreq.indexOf("<sdncadapter:RequestId>") >= 0)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCActivate_BpmnError() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNC(mex)
+			
+			when(mex.getVariable("rollbackData")).thenThrow(new BpmnError("expected exception"))
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCActivate(mex) }))
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCActivate_Ex() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNC(mex)
+			
+			when(mex.getVariable("rollbackData")).thenThrow(new RuntimeException("expected exception"))
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCActivate(mex) }))
+		}
+		
+		
+		// ***** validateSDNCResp *****
+		
+		@Test
+//		@Ignore
+		public void validateSDNCResp() {
+			ExecutionEntity mex = setupMock()
+			def data = initValidateSDNCResp(mex)
+			def resp = initValidateSDNCResp_Resp()
+			
+			when(mex.getVariable(Prefix+"sdncResponseSuccess")).thenReturn(true)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "create")
+			
+			verify(mex).getVariable("WorkflowException")
+			verify(mex).getVariable("SDNCA_SuccessIndicator")
+			verify(mex).getVariable("rollbackData")
+			
+			ArgumentCaptor<String> keycap = ArgumentCaptor.forClass(String.class)
+			ArgumentCaptor<Object> valcap = ArgumentCaptor.forClass(Object.class)
+			
+			verify(mex, times(4)).setVariable(keycap.capture(), valcap.capture())
+			
+			assertFalse(keycap.getAllValues().isEmpty())
+			assertEquals("rollbackData", keycap.getAllValues().get(keycap.getAllValues().size()-1))
+			
+			assertEquals(data, valcap.getAllValues().get(valcap.getAllValues().size()-1))
+			
+			assertEquals("true", data.get(Prefix, "rollback" +  "SDNCcreate"))
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void validateSDNCResp_Get() {
+			ExecutionEntity mex = setupMock()
+			def data = initValidateSDNCResp(mex)
+			def resp = initValidateSDNCResp_Resp()
+			
+			when(mex.getVariable(Prefix+"sdncResponseSuccess")).thenReturn(true)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "get")
+			
+			verify(mex).getVariable("WorkflowException")
+			verify(mex).getVariable("SDNCA_SuccessIndicator")
+			
+			verify(mex, never()).getVariable("rollbackData")
+		}
+		
+		@Test
+//		@Ignore
+		public void validateSDNCResp_Unsuccessful() {
+			ExecutionEntity mex = setupMock()
+			initValidateSDNCResp(mex)
+			def resp = initValidateSDNCResp_Resp()
+			
+			// unsuccessful
+			when(mex.getVariable(Prefix+"sdncResponseSuccess")).thenReturn(false)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "create") }))
+		}
+		
+		@Test
+//		@Ignore
+		public void validateSDNCResp_BpmnError() {
+			ExecutionEntity mex = setupMock()
+			initValidateSDNCResp(mex)
+			def resp = initValidateSDNCResp_Resp()
+			
+			when(mex.getVariable("WorkflowException")).thenThrow(new BpmnError("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "create") }))
+		}
+		
+		@Test
+//		@Ignore
+		public void validateSDNCResp_Ex() {
+			ExecutionEntity mex = setupMock()
+			initValidateSDNCResp(mex)
+			def resp = initValidateSDNCResp_Resp()
+			
+			when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.validateSDNCResp(mex, resp, "create") }))
+		}
+		
+		
+		// ***** preProcessSDNCGet *****
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCGet_FoundAR() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNCGet(mex)
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.preProcessSDNCGet(mex)
+			
+			ArgumentCaptor<String> keycap = ArgumentCaptor.forClass(String.class)
+			ArgumentCaptor<Object> valcap = ArgumentCaptor.forClass(Object.class)
+			
+			verify(mex, times(1)).setVariable(keycap.capture(), valcap.capture())
+			
+			assertFalse(keycap.getAllValues().isEmpty())
+			assertEquals("sdncGetRequest", keycap.getAllValues().get(keycap.getAllValues().size()-1))
+			
+			String req = valcap.getAllValues().get(valcap.getAllValues().size()-1)
+			
+			assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:SvcOperation>arlink</") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:CallbackUrl>myurl</") >= 0)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCGet_NotFoundAR() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNCGet(mex)
+			
+			when(mex.getVariable("foundActiveAR")).thenReturn(false)
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.preProcessSDNCGet(mex)
+			
+			ArgumentCaptor<String> keycap = ArgumentCaptor.forClass(String.class)
+			ArgumentCaptor<Object> valcap = ArgumentCaptor.forClass(Object.class)
+			
+			verify(mex, times(1)).setVariable(keycap.capture(), valcap.capture())
+			
+			assertFalse(keycap.getAllValues().isEmpty())
+			assertEquals("sdncGetRequest", keycap.getAllValues().get(keycap.getAllValues().size()-1))
+			
+			String req = valcap.getAllValues().get(valcap.getAllValues().size()-1)
+			
+			assertTrue(req.indexOf("<sdncadapter:RequestId>") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:SvcInstanceId>sii</") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:SvcOperation>assignlink</") >= 0)
+			assertTrue(req.indexOf("<sdncadapter:CallbackUrl>myurl</") >= 0)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessSDNCGet_Ex() {
+			ExecutionEntity mex = setupMock()
+			initPreProcessSDNCGet(mex)
+			
+			when(mex.getVariable("foundActiveAR")).thenThrow(new RuntimeException("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.preProcessSDNCGet(mex) }))
+		}
+		
+		
+		// ***** updateAaiAROrchStatus *****
+		
+		@Test
+//		@Ignore
+		public void updateAaiAROrchStatus() {
+			ExecutionEntity mex = setupMock()
+			initUpdateAaiAROrchStatus(mex)
+						
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.updateAaiAROrchStatus(mex, "success")
+		}
+		
+		
+		// ***** generateOutputs *****
+		
+		@Test
+//		@Ignore
+		public void generateOutputs() {
+			ExecutionEntity mex = setupMock()
+			def brgtop = FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml")
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("enhancedCallbackRequestData")).thenReturn(brgtop)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.generateOutputs(mex)
+			
+			verify(mex).setVariable("allotedResourceName", "namefromrequest")
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void generateOutputs_BadXml() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("enhancedCallbackRequestData")).thenReturn("invalid xml")
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.generateOutputs(mex)
+			
+			verify(mex, never()).setVariable(anyString(), anyString())
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void generateOutputs_BpmnError() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("enhancedCallbackRequestData")).thenThrow(new BpmnError("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			DoCreateAllottedResourceBRG.generateOutputs(mex)
+			verify(mex, never()).setVariable(anyString(), anyString())
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void generateOutputs_Ex() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("enhancedCallbackRequestData")).thenThrow(new RuntimeException("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			DoCreateAllottedResourceBRG.generateOutputs(mex)
+			verify(mex, never()).setVariable(anyString(), anyString())
+			
+		}
+		
+		
+		// ***** preProcessRollback *****
+		
+		@Test
+//		@Ignore
+		public void preProcessRollback() {
+			ExecutionEntity mex = setupMock()
+			WorkflowException wfe = mock(WorkflowException.class)
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("WorkflowException")).thenReturn(wfe)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.preProcessRollback(mex)
+			
+			verify(mex).setVariable("prevWorkflowException", wfe)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessRollback_NotWFE() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("WorkflowException")).thenReturn("I'm not a WFE")
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.preProcessRollback(mex)
+			
+//			verify(mex, never()).setVariable("prevWorkflowException", any())
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessRollback_BpmnError() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("WorkflowException")).thenThrow(new BpmnError("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			DoCreateAllottedResourceBRG.preProcessRollback(mex)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void preProcessRollback_Ex() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("WorkflowException")).thenThrow(new RuntimeException("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			DoCreateAllottedResourceBRG.preProcessRollback(mex)
+			
+		}
+		
+		
+		// ***** postProcessRollback *****
+		
+		@Test
+//		@Ignore
+		public void postProcessRollback() {
+			ExecutionEntity mex = setupMock()
+			WorkflowException wfe = mock(WorkflowException.class)
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("prevWorkflowException")).thenReturn(wfe)
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.postProcessRollback(mex)
+			
+			verify(mex).setVariable("WorkflowException", wfe)
+			verify(mex).setVariable("rollbackData", null)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void postProcessRollback_NotWFE() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("prevWorkflowException")).thenReturn("I'm not a WFE")
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			DoCreateAllottedResourceBRG.postProcessRollback(mex)
+			
+//			verify(mex, never()).setVariable("WorkflowException", any())
+			verify(mex).setVariable("rollbackData", null)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void postProcessRollback_BpmnError() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("prevWorkflowException")).thenThrow(new BpmnError("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			assertTrue(doBpmnError({ _ -> DoCreateAllottedResourceBRG.postProcessRollback(mex) }))
+			verify(mex, never()).setVariable("rollbackData", null)
+			
+		}
+		
+		@Test
+//		@Ignore
+		public void postProcessRollback_Ex() {
+			ExecutionEntity mex = setupMock()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("prevWorkflowException")).thenThrow(new RuntimeException("expected exception"))
+			
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			DoCreateAllottedResourceBRG.postProcessRollback(mex)
+			verify(mex, never()).setVariable("rollbackData", null)
+			
+		}
+		
+		private boolean checkMissingPreProcessRequest(String fieldnm) {
+			ExecutionEntity mex = setupMock()
+			initPreProcess(mex)
+									
+			DoCreateAllottedResourceBRG DoCreateAllottedResourceBRG = new DoCreateAllottedResourceBRG()
+			
+			when(mex.getVariable(fieldnm)).thenReturn("")
+			
+			return doBpmnError( { _ -> DoCreateAllottedResourceBRG.preProcessRequest(mex) })
+		}
+		
+		private boolean doBpmnError(def func) {
+			
+			try {
+				func()
+				return false;
+				
+			} catch(BpmnError e) {
+				return true;
+			}
+		}
+		
+		private void initPreProcess(ExecutionEntity mex) {
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("URN_mso_workflow_sdncadapter_callback")).thenReturn("sdncurn")
+			when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
+			when(mex.getVariable("parentServiceInstanceId")).thenReturn("psii")
+			when(mex.getVariable("allottedResourceModelInfo")).thenReturn("armi")
+			when(mex.getVariable("vni")).thenReturn("myvni")
+			when(mex.getVariable("vgmuxBearerIP")).thenReturn("vbi")
+			when(mex.getVariable("brgWanMacAddress")).thenReturn("bwma")
+			when(mex.getVariable("allottedResourceRole")).thenReturn("arr")
+			when(mex.getVariable("allottedResourceType")).thenReturn("art")
+		}
+		
+		private initCreateAaiAr(ExecutionEntity mex) {				
+			when(mex.getVariable("disableRollback")).thenReturn(45)
+			when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
+			when(mex.getVariable("parentServiceInstanceId")).thenReturn("psii")
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("allottedResourceId")).thenReturn("myid")
+			when(mex.getVariable("URN_aai_endpoint")).thenReturn(aaiUriPfx)
+			when(mex.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn(urnProps.get("mso.workflow.global.default.aai.namespace"))
+			when(mex.getVariable("PSI_resourceLink")).thenReturn(aaiUriPfx+"/aai/v9/mypsi")
+			when(mex.getVariable("allottedResourceType")).thenReturn("BRGt")
+			when(mex.getVariable("allottedResourceRole")).thenReturn("BRGr")
+			when(mex.getVariable("CSI_resourceLink")).thenReturn(aaiUriPfx+"/aai/v9/mycsi")
+			when(mex.getVariable("allottedResourceModelInfo")).thenReturn("""
+					{
+						"modelInvariantUuid":"modelinvuuid",
+						"modelUuid":"modeluuid",
+						"modelCustomizationUuid":"modelcustuuid"
+					}
+				""")
+		}
+		
+		private initBuildSDNCRequest(ExecutionEntity mex) {
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("allottedResourceId")).thenReturn("ari")
+			when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
+			when(mex.getVariable("parentServiceInstanceId")).thenReturn("psii")
+			when(mex.getVariable("sdncCallbackUrl")).thenReturn("scu")
+			when(mex.getVariable("msoRequestId")).thenReturn("mri")
+			when(mex.getVariable("brgWanMacAddress")).thenReturn("bwma")
+			when(mex.getVariable("vni")).thenReturn("myvni")
+			when(mex.getVariable("vgmuxBearerIP")).thenReturn("vbi")
+			when(mex.getVariable("allottedResourceModelInfo")).thenReturn("""
+					{
+						"modelInvariantUuid":"miu",
+						"modelUuid":"mu",
+						"modelCustomizationUuid":"mcu",
+						"modelVersion":"mv",
+						"modelName":"mn"
+					}
+				""")
+		}
+		
+		private RollbackData initPreProcessSDNC(ExecutionEntity mex) {
+			def data = new RollbackData()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("rollbackData")).thenReturn(data)
+			
+			return data
+		}
+		
+		private initPreProcessSDNCGet(ExecutionEntity mex) {
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("sdncCallbackUrl")).thenReturn("myurl")
+			when(mex.getVariable("foundActiveAR")).thenReturn(true)
+			when(mex.getVariable("aaiARGetResponse")).thenReturn("<selflink>arlink</selflink>")
+			when(mex.getVariable("sdncAssignResponse")).thenReturn("<response-data>&lt;object-path&gt;assignlink&lt;/object-path&gt;</response-data>")
+			when(mex.getVariable("serviceInstanceId")).thenReturn("sii")
+			when(mex.getVariable("junitSleepMs")).thenReturn("5")
+			when(mex.getVariable("sdncCallbackUrl")).thenReturn("myurl")
+		}
+		
+		private RollbackData initValidateSDNCResp(ExecutionEntity mex) {
+			def data = new RollbackData()
+			
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("prefix")).thenReturn(Prefix)
+			when(mex.getVariable("SDNCA_SuccessIndicator")).thenReturn(true)
+			when(mex.getVariable("rollbackData")).thenReturn(data)
+			
+			return data
+		}
+		
+		private String initValidateSDNCResp_Resp() {
+			return "<response-data>&lt;response-code&gt;200&lt;/response-code&gt;</response-data>"
+		}
+		
+		private initUpdateAaiAROrchStatus(ExecutionEntity mex) {
+			when(mex.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mex.getVariable("aaiARPath")).thenReturn(aaiUriPfx+"/aai/v9/myurl")
+			
+			wireMockRule
+				.stubFor(patch(urlMatching("/aai/v[0-9]+/myurl"))
+							.willReturn(aResponse()
+								.withStatus(200)))
+		}
+		
+		private ExecutionEntity setupMock() {
+			
+			ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
+			when(mockProcessDefinition.getKey()).thenReturn("DoCreateAllottedResourceBRG")
+			RepositoryService mockRepositoryService = mock(RepositoryService.class)
+			when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
+			when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoCreateAllottedResourceBRG")
+			when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
+			ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
+			when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
+			
+			ExecutionEntity mex = mock(ExecutionEntity.class)
+			
+			when(mex.getId()).thenReturn("100")
+			when(mex.getProcessDefinitionId()).thenReturn("DoCreateAllottedResourceBRG")
+			when(mex.getProcessInstanceId()).thenReturn("DoCreateAllottedResourceBRG")
+			when(mex.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
+			when(mex.getProcessEngineServices().getRepositoryService().getProcessDefinition(mex.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
+			
+			return mex
+		}
+		
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/CreateVcpeResCustServiceTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/CreateVcpeResCustServiceTest.java
new file mode 100644
index 0000000..893eceb
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/CreateVcpeResCustServiceTest.java
@@ -0,0 +1,590 @@
+package org.openecomp.mso.bpmn.vcpe;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.post;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetCustomer;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+//		TODO: uncomment when Homing BB is merged
+// import static org.openecomp.mso.bpmn.mock.StubResponseSNIRO.mockSNIRO;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+public class CreateVcpeResCustServiceTest extends WorkflowTest {
+
+	private final CallbackSet callbacks = new CallbackSet();
+	private final String request;
+	
+	public CreateVcpeResCustServiceTest() throws IOException {
+		callbacks.put("assign", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyAssignCallback.xml"));
+		callbacks.put("query", FileUtil.readResourceFile("__files/VCPE/SDNCTopologyQueryCallbackNetworkInstance.xml"));
+		callbacks.put("activate", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyActivateCallback.xml"));
+		callbacks.put("vnfCreate", FileUtil.readResourceFile("__files/VCPE/VfModularity/VNFAdapterRestCreateCallback.xml"));
+		callbacks.put("create", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyCreateCallback.xml"));
+		callbacks.put("queryTXC", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXC/SDNCTopologyQueryCallback.xml"));
+		callbacks.put("queryBRG", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml"));
+		
+		callbacks.put("sniro", JSON, "SNIROResponse", FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallback2AR1Vnf"));
+		callbacks.put("sniro2", JSON, "SNIROResponse", FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallback2AR1Vnf2Net"));
+		callbacks.put("sniroNoSol", JSON, "SNIROResponse", FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackNoSolutionFound"));
+		callbacks.put("sniroPolicyEx", JSON, "SNIROResponse", FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackPolicyException"));
+		callbacks.put("sniroServiceEx", JSON, "SNIROResponse", FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackServiceException"));
+		
+		request = FileUtil.readResourceFile("__files/VCPE/request.json");
+	}
+
+
+//	/**
+//	 * End-to-End flow - Unit test for CreateVcpeResCustService.bpmn
+//	 *  - String input & String response
+//	 */
+//
+//	@Test
+//	@Ignore
+//	@Deployment(resources = {"process/CreateVcpeResCustService.bpmn",
+//			                 "subprocess/DoCreateServiceInstance.bpmn",
+//			                 "subprocess/DoCreateServiceInstanceRollback.bpmn",
+//			                 "subprocess/DoCreateNetworkInstance.bpmn",
+//			                 "subprocess/DoCreateNetworkInstanceRollback.bpmn",
+//			                 "subprocess/DoCreateVnfAndModules.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceTXC.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceTXCRollback.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceBRG.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceBRGRollback.bpmn",
+//			                 "subprocess/BuildingBlock/DecomposeService.bpmn",
+//			                 "subprocess/BuildingBlock/Homing.bpmn",
+//			                 "subprocess/GenericGetService.bpmn",
+//			                 "subprocess/GenericPutService.bpmn",
+//			                 "subprocess/SDNCAdapterV1.bpmn",
+//			                 "subprocess/DoCreateVnf.bpmn",
+//			                 "subprocess/GenericGetVnf.bpmn",
+//			                 "subprocess/GenericPutVnf.bpmn",
+//			                 "subprocess/FalloutHandler.bpmn",
+//			                 "subprocess/GenericDeleteService.bpmn",
+//			                 "subprocess/ReceiveWorkflowMessage.bpmn",
+//	                         "subprocess/CompleteMsoProcess.bpmn"})
+//
+//	public void invokeCreateServiceInstanceInfra_Success() throws Exception {
+//
+//		logStart();
+//
+//		// setup simulators
+//		//MockGetCustomer_VCPE();
+//		MockGetCustomer("MCBH-1610", "VCPE/getCustomer.xml");
+//		//MockGetNetworkCatalogData_VCPE();
+//		MockGetNetworkCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/getCatalogNetworkData.json");
+//		//MockGetVnfCatalogData_VCPE();
+//		MockGetVnfCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/getCatalogVnfData.json");
+//		//MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/getCatalogServiceResourcesData.json");
+//		MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/getCatalogServiceResourcesDataNoNetworkVnf.json");
+//		MockGetServiceInstanceById_VCPE();
+//		MockPutServiceInstance_VCPE();
+//
+//		//SDNC Adapter Mocks
+//		mockSDNCAdapterRest();
+//		mockSDNCAdapter();
+//
+//		//from CreateNetworkInstanceTest
+//		sdncAdapterNetworkTopologySimulator_CreateNetworkV2();
+//		MockNetworkAdapterResponse_CreateSuccessV2();
+//		MockAAIResponse_queryName_CreateNetwork_404V2();         // 'network-name' not in AAI , Ok to Create.
+//		MockAAIResponse_cloudRegion25_Success();
+//		MockAAIResponse_queryId_CreateNetwork_SuccessV2();
+//		MockAAIResponse_queryVpnBinding_CreateNetwork_SuccessV2();
+//		MockAAIResponse_queryVpnBinding2_CreateNetwork_SuccessV2();
+//		MockAAIResponse_queryNetworkPolicy_CreateNetwork_SuccessV2();
+//		MockAAIResponse_queryNetworkTableRef_CreateNetwork_SuccessV2();
+//		MockAAIResponse_updateContrail_CreateNetwork_SuccessV2();
+//		MockDBUpdate_Success();
+//		MocksAAIResponse_queryNetworkInstance_CreateNetwork_Success();
+//
+//		//network AAI Mocks
+//		MockGetNetworkById("680b7453-0ec4-4d96-b355-280d981d418f", "VCPE/getNetwork.xml");
+//		MockGetNetworkById("444a701a-6419-45b2-aa52-b45a1b719cf6", "VCPE/getNetwork.xml");
+//		MockGetNetworkById("cf82a73f-de7f-4f84-8dfc-16a487c63a36", "VCPE/getNetwork.xml");
+//		MockPutNetwork("680b7453-0ec4-4d96-b355-280d981d418f");
+//		MockPutNetwork("cf82a73f-de7f-4f84-8dfc-16a487c63a36");
+//
+//		MockPutGenericVnf("9c61db87-345c-49ae-ac80-472211df5deb");
+//		
+//		mockSNIRO();
+//
+//		String businessKey = UUID.randomUUID().toString();
+////		String createVfModuleRequest =
+////			FileUtil.readResourceFile("__files/VCPE/CreateVfModule_VID_request.json");
+//
+//		Map<String, Object> variables = setupVariablesObjectMap();
+//
+//		TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVcpeResCustService",
+//			"v1", businessKey, getRequest(), variables);
+//
+//		WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);
+//
+//		String responseBody = response.getResponse();
+//		System.out.println("Workflow (Synch) Response:\n" + responseBody);
+//
+//		injectSDNCCallbacks(callbacks, "assign, query");
+//		injectSDNCCallbacks(callbacks, "activate");
+//
+//		// TODO add appropriate assertions
+//
+//		waitForProcessEnd(businessKey, 10000);
+//		checkVariable(businessKey, "CreateVcpeResCustServiceSuccessIndicator", true);
+//
+//		logEnd();
+//	}
+	
+	
+	/**
+	 * TEST Decompose + Homing - Unit test for CreateVcpeResCustService.bpmn
+	 *  - String input & String response
+	 */
+
+	@Test
+//  TODO: run this test when Homing BB is merged
+	@Ignore
+	@Deployment(resources = {"process/CreateVcpeResCustService.bpmn",
+			                 "subprocess/DoCreateServiceInstance.bpmn",
+			                 "subprocess/DoCreateServiceInstanceRollback.bpmn",
+			                 "subprocess/DoCreateNetworkInstance.bpmn",
+			                 "subprocess/DoCreateNetworkInstanceRollback.bpmn",
+			                 "subprocess/BuildingBlock/DecomposeService.bpmn",
+			                 "subprocess/BuildingBlock/Homing.bpmn",
+			                 "subprocess/GenericGetService.bpmn",
+			                 "subprocess/GenericPutService.bpmn",
+			                 "subprocess/SDNCAdapterV1.bpmn",
+			                 "subprocess/DoCreateVnf.bpmn",
+			                 "subprocess/GenericGetVnf.bpmn",
+			                 "subprocess/GenericPutVnf.bpmn",
+			                 "subprocess/FalloutHandler.bpmn",
+			                 "subprocess/GenericDeleteService.bpmn",
+			                 "subprocess/DoCreateAllottedResourceBRG.bpmn",
+			                 "subprocess/DoCreateAllottedResourceBRGRollback.bpmn",
+			                 "subprocess/DoCreateAllottedResourceTXC.bpmn",
+			                 "subprocess/DoCreateAllottedResourceTXCRollback.bpmn",
+	                         "subprocess/CompleteMsoProcess.bpmn"})
+
+	public void invokeDecompositionHomingCreateServiceInstanceNetwork() throws Exception {
+
+		logStart();
+
+		// setup simulators
+		MockGetCustomer("MCBH-1610", "VCPE/getCustomer.xml");
+
+		MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "2", "VCPE/getCatalogVcpe.json");
+		
+//		MockPutServiceInstance_VCPE();
+		
+//		MockGetNetworkByIdWithDepth("680b7453-0ec4-4d96-b355-280d981d418f", "VCPE/CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+//		MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "VCPE/CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+
+		MockPutGenericVnf("39ae1b77-4edd-4e94-846a-d087a35a2260");
+		
+		// stuff to satisfy TXC & BRG subflows
+		MockNodeQueryServiceInstanceById("MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getSIUrlById.xml");
+		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
+		MockNodeQueryServiceInstanceById("MIS%252F1604%252F0027%252FSW_INTERNET", "GenericFlows/getParentSIUrlById.xml");
+		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "GenericFlows/getParentServiceInstance.xml");
+		MockPutAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "arId-1");
+		MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "arId-1");
+		
+		mockSDNCAdapter(200);
+
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+
+//		TODO: uncomment when Homing BB is merged
+//		mockSNIRO();
+
+		//Below works for Homing/Sniro
+		
+		Map<String, Object> variables = setupVariablesObjectMap();
+
+		String businessKey = UUID.randomUUID().toString();
+		TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVcpeResCustService",
+			"v1", businessKey, request, variables);
+				
+		WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);
+		
+		String responseBody = response.getResponse();
+		System.out.println("Workflow (Synch) Response:\n" + responseBody);
+
+		injectWorkflowMessages(callbacks, "sniro");
+		injectSDNCCallbacks(callbacks, "assign, create, activate, queryTXC");
+		injectSDNCCallbacks(callbacks, "assign, create, activate, queryBRG");
+
+		waitForProcessEnd(businessKey, 10000);
+		checkVariable(businessKey, "CreateVcpeResCustServiceSuccessIndicator", true);
+
+		logEnd();
+	}
+	
+	
+	/**
+	 * TEST Decompose + Homing - Unit test for CreateVcpeResCustService.bpmn
+	 *  - String input & String response
+	 */
+
+//	@Test
+//	@Deployment(resources = {"process/CreateVcpeResCustService.bpmn",
+//			                 "subprocess/DoCreateServiceInstance.bpmn",
+//			                 "subprocess/DoCreateServiceInstanceRollback.bpmn",
+//			                 "subprocess/DoCreateNetworkInstance.bpmn",
+//			                 "subprocess/DoCreateNetworkInstanceRollback.bpmn",
+//			                 "subprocess/BuildingBlock/DecomposeService.bpmn",
+//			                 "subprocess/BuildingBlock/Homing.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceTXC.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceTXCRollback.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceBRG.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceBRGRollback.bpmn",
+//			                 "subprocess/GenericGetService.bpmn",
+//			                 "subprocess/GenericPutService.bpmn",
+//			                 "subprocess/SDNCAdapterV1.bpmn",
+//			                 "subprocess/DoCreateVnf.bpmn",
+//			                 "subprocess/GenericGetVnf.bpmn",
+//			                 "subprocess/GenericPutVnf.bpmn",
+//			                 "subprocess/FalloutHandler.bpmn",
+//			                 "subprocess/GenericDeleteService.bpmn",
+//			                 "subprocess/ReceiveWorkflowMessage.bpmn",
+//	                         "subprocess/CompleteMsoProcess.bpmn"})
+//
+//	public void invokeDecompositionHomingCreateServiceInstanceARs() throws Exception {
+//
+//		logStart();
+//
+//		// setup simulators
+//		MockGetCustomer("MCBH-1610", "VCPE/getCustomer.xml");
+//
+//		MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/getCatalogServiceResourcesDataServiceAllotted.json");
+//		
+//		MockPutServiceInstance_VCPE();
+//		//network AAI Mocks
+//		MockGetNetworkById("cf82a73f-de7f-4f84-8dfc-16a487c63a36", "VCPE/getNetwork.xml");
+//		MockPutNetwork("cf82a73f-de7f-4f84-8dfc-16a487c63a36");
+//		
+//		MockNodeQueryServiceInstanceById("c763d462-dfe4-4577-9706-fa3a9db640be", "VCPE/getSIUrlById.xml");
+//		
+//		mockSDNCAdapter();
+//
+//		MockNodeQueryServiceInstanceById("MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getSIUrlById.xml");
+//		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET");
+//		MockPutAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1");
+//		MockPutAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET_in-use", "arId-1");
+//		MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET_in-use", "arId-1");
+//		
+//		
+//		MockDBUpdateVfModule();
+//		
+//		mockSNIRO();
+//
+//		String businessKey = UUID.randomUUID().toString();
+//
+//		//Below works for Homing/Sniro
+//		
+//		Map<String, Object> variables = setupVariablesObjectMap();
+//		TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVcpeResCustService", "v1", businessKey, getRequest(), variables);
+//		WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);
+//		String responseBody = response.getResponse();
+//		System.out.println("Workflow (Synch) Response:\n" + responseBody);
+//		
+//		//Below is from CreateVcpeResCustService
+////		Map<String, String> variables = setupVariables();
+////		WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "CreateVcpeResCustService", variables);
+////		waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
+////		String workflowResp = BPMNUtil.getVariable(processEngineRule, "CreateVcpeResCustService", "WorkflowResponse");
+//
+//		injectWorkflowMessages(callbacks, "sniro");
+//		// TODO add appropriate assertions
+//		injectSDNCCallbacks(callbacks, "assign, query, create, activate, queryTXC, assign, create, activate, queryBRG");
+//		waitForProcessEnd(businessKey, 10000);
+//
+////		checkVariable(businessKey, "CreateVcpeResCustServiceSuccessIndicator", true);
+//
+//		logEnd();
+//	}
+//
+//	
+//	/**
+//	 * TEST Decompose + Homing - Unit test for CreateVcpeResCustService.bpmn
+//	 *  - String input & String response
+//	 */
+//
+//	@Test
+//	//@Ignore
+//	@Deployment(resources = {"process/CreateVcpeResCustService.bpmn",
+//			                 "subprocess/DoCreateServiceInstance.bpmn",
+//			                 "subprocess/DoCreateServiceInstanceRollback.bpmn",
+//			                 "subprocess/DoCreateNetworkInstance.bpmn",
+//			                 "subprocess/DoCreateNetworkInstanceRollback.bpmn",
+//			                 "subprocess/BuildingBlock/DecomposeService.bpmn",
+//			                 "subprocess/BuildingBlock/Homing.bpmn",
+//			                 "subprocess/DoCreateVnfAndModules.bpmn",
+//			                 "subprocess/DoCreateVnfAndModulesRollback.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceTXC.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceTXCRollback.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceBRG.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceBRGRollback.bpmn",
+//			                 "subprocess/GenericGetService.bpmn",
+//			                 "subprocess/GenericPutService.bpmn",
+//			                 "subprocess/SDNCAdapterV1.bpmn",
+//			                 "subprocess/DoCreateVnf.bpmn",
+//			                 "subprocess/GenericGetVnf.bpmn",
+//			                 "subprocess/GenericPutVnf.bpmn",
+//			                 "subprocess/FalloutHandler.bpmn",
+//			                 "subprocess/GenericDeleteService.bpmn",
+//			                 "subprocess/ReceiveWorkflowMessage.bpmn",
+//	                         "subprocess/CompleteMsoProcess.bpmn"})
+//
+//	public void invokeDecompositionHomingCreateServiceVnf() throws Exception {
+//
+//		logStart();
+//
+//		// setup simulators
+//		MockGetCustomer("MCBH-1610", "VCPE/getCustomer.xml");
+//
+//		MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/getCatalogServiceResourcesServiceVnf.json");
+//		
+//		MockPutServiceInstance_VCPE();
+//		//network AAI Mocks
+//		MockGetNetworkById("cf82a73f-de7f-4f84-8dfc-16a487c63a36", "VCPE/getNetwork.xml");
+//		MockPutNetwork("cf82a73f-de7f-4f84-8dfc-16a487c63a36");
+//		
+//		MockNodeQueryServiceInstanceById("c763d462-dfe4-4577-9706-fa3a9db640be", "VCPE/getSIUrlById.xml");
+//		
+//		
+//		MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVcpe.xml");
+//		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET");
+//		MockGetGenericVnfById_404("testVnfId");
+//		MockPutGenericVnf(".*");
+//		MockAAIVfModule();
+//		MockPatchGenericVnf("skask");
+//		MockPatchVfModuleId("skask", ".*");
+//		MockSDNCAdapterVfModule();		
+//		MockVNFAdapterRestVfModule();
+//		MockDBUpdateVfModule();	
+//		
+//		
+//		mockSDNCAdapter();
+//		//mockSDNCAdapterRest();
+//		
+//		//MockSDNCAdapterServiceInstanceModule();
+//		
+//		//mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologyRsrcAssignResponse.xml", "SvcAction>assign");
+//		
+//		MockDBUpdateVfModule();
+//		
+//		mockSNIRO();
+//
+//		String businessKey = UUID.randomUUID().toString();
+//
+//		//Below works for Homing/Sniro
+//		
+//		Map<String, Object> variables = setupVariablesObjectMap();
+//		TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVcpeResCustService", "v1", businessKey, getRequest(), variables);
+//		WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);
+//		String responseBody = response.getResponse();
+//		System.out.println("Workflow (Synch) Response:\n" + responseBody);
+//		
+//		//Below is from CreateVcpeResCustService
+////		Map<String, String> variables = setupVariables();
+////		WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "CreateVcpeResCustService", variables);
+////		waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
+////		String workflowResp = BPMNUtil.getVariable(processEngineRule, "CreateVcpeResCustService", "WorkflowResponse");
+//
+//		injectWorkflowMessages(callbacks, "sniro");
+//		// TODO add appropriate assertions
+//		injectSDNCCallbacks(callbacks, "assign, query");
+//		waitForProcessEnd(businessKey, 10000);
+//
+////		checkVariable(businessKey, "CreateVcpeResCustServiceSuccessIndicator", true);
+//
+//		logEnd();
+//	}
+//	
+//	
+//	/**
+//	 * TEST Decompose + Homing - Unit test for CreateVcpeResCustService.bpmn
+//	 *  - String input & String response
+//	 */
+//
+//	@Test
+//	//@Ignore
+//	@Deployment(resources = {"process/CreateVcpeResCustService.bpmn",
+//			                 "subprocess/DoCreateServiceInstance.bpmn",
+//			                 "subprocess/DoCreateServiceInstanceRollback.bpmn",
+//			                 "subprocess/DoCreateNetworkInstance.bpmn",
+//			                 "subprocess/DoCreateNetworkInstanceRollback.bpmn",
+//			                 "subprocess/BuildingBlock/DecomposeService.bpmn",
+//			                 "subprocess/BuildingBlock/Homing.bpmn",
+//			                 "subprocess/DoCreateVnfAndModules.bpmn",
+//			                 "subprocess/DoCreateVnfAndModulesRollback.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceTXC.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceTXCRollback.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceBRG.bpmn",
+//			                 "subprocess/DoCreateAllottedResourceBRGRollback.bpmn",
+//			                 "subprocess/GenericGetService.bpmn",
+//			                 "subprocess/GenericPutService.bpmn",
+//			                 "subprocess/SDNCAdapterV1.bpmn",
+//			                 "subprocess/DoCreateVnf.bpmn",
+//			                 "subprocess/GenericGetVnf.bpmn",
+//			                 "subprocess/GenericPutVnf.bpmn",
+//			                 "subprocess/FalloutHandler.bpmn",
+//			                 "subprocess/GenericDeleteService.bpmn",
+//			                 "subprocess/ReceiveWorkflowMessage.bpmn",
+//	                         "subprocess/CompleteMsoProcess.bpmn"})
+//
+//	public void invokeCreateAll() throws Exception {
+//
+//		logStart();
+//
+//		// setup simulators
+//		MockGetCustomer("MCBH-1610", "VCPE/getCustomer.xml");
+//
+//		MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef", "VCPE/getCatalogServiceResourcesData.json");
+//		
+//		MockPutServiceInstance_VCPE();
+//		//network AAI Mocks
+//		MockGetNetworkById("cf82a73f-de7f-4f84-8dfc-16a487c63a36", "VCPE/getNetwork.xml");
+//		MockPutNetwork("cf82a73f-de7f-4f84-8dfc-16a487c63a36");
+//		
+//		MockNodeQueryServiceInstanceById("c763d462-dfe4-4577-9706-fa3a9db640be", "VCPE/getSIUrlById.xml");
+//		
+//		MockGetNetworkByIdWithDepth("680b7453-0ec4-4d96-b355-280d981d418f", "VCPE/CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+//		MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "VCPE/CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+//		MockNetworkAdapterPost("CreateNetworkV2/createNetworkResponse_Success.xml", "VCPE/createNetworkRequest");
+//		MockGetNetworkVpnBindingWithDepth("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017", "all");
+//		MockGetNetworkVpnBindingWithDepth("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6", "all");
+//		MockGetNetworkPolicyWithDepth("CreateNetworkV2/createNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg", "all");
+//		MockGetNetworkTableReferenceWithDepth("CreateNetworkV2/createNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN1", "all");
+//		MockGetNetworkTableReferenceWithDepth("CreateNetworkV2/createNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN2", "all");
+//		MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "680b7453-0ec4-4d96-b355-280d981d418f", "1");
+//		MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1");
+//		
+//		
+//		MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVcpe.xml");
+//		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET");
+//		MockGetGenericVnfById_404("testVnfId");
+//		MockPutGenericVnf(".*");
+//		MockAAIVfModule();
+//		MockPatchGenericVnf("skask");
+//		MockPatchVfModuleId("skask", ".*");
+//		MockSDNCAdapterVfModule();		
+//		MockVNFAdapterRestVfModule();
+//		MockDBUpdateVfModule();	
+//		
+//		
+//		mockSDNCAdapter();
+//		//mockSDNCAdapterRest();
+//		
+//		//MockSDNCAdapterServiceInstanceModule();
+//		
+//		//mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologyRsrcAssignResponse.xml", "SvcAction>assign");
+//		
+//		MockDBUpdateVfModule();
+//		
+//		mockSNIRO();
+//
+//		String businessKey = UUID.randomUUID().toString();
+//
+//		//Below works for Homing/Sniro
+//		
+//		Map<String, Object> variables = setupVariablesObjectMap();
+//		TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVcpeResCustService", "v1", businessKey, getRequest(), variables);
+//		WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);
+//		String responseBody = response.getResponse();
+//		System.out.println("Workflow (Synch) Response:\n" + responseBody);
+//		
+//		//Below is from CreateVcpeResCustService
+////		Map<String, String> variables = setupVariables();
+////		WorkflowResponse workflowResponse = executeWorkFlow(processEngineRule, "CreateVcpeResCustService", variables);
+////		waitForWorkflowToFinish(processEngineRule, workflowResponse.getProcessInstanceID());
+////		String workflowResp = BPMNUtil.getVariable(processEngineRule, "CreateVcpeResCustService", "WorkflowResponse");
+//
+//		injectWorkflowMessages(callbacks, "sniro");
+//		// TODO add appropriate assertions
+//		injectSDNCCallbacks(callbacks, "assign, query");
+//		waitForProcessEnd(businessKey, 10000);
+//
+////		checkVariable(businessKey, "CreateVcpeResCustServiceSuccessIndicator", true);
+//
+//		logEnd();
+//	}
+	
+	// *****************
+	// Utility Section
+	// *****************
+
+	// Success Scenario
+	private Map<String, Object> setupVariablesObjectMap() {
+		Map<String, Object> variables = new HashMap<>();
+		variables.put("requestId", "testRequestId");
+		variables.put("request-id", "testRequestId");
+		variables.put("CREVAS_testServiceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4"); // assigned for testing
+		variables.put("serviceInstanceId", "c763d462-dfe4-4577-9706-fa3a9db640be");// unit test
+		variables.put("sourceNetworkId", "c763d462-dfe4-4577-9706-fa3a9db640be");// unit test
+		variables.put("networkId", "c763d462-dfe4-4577-9706-fa3a9db640be");// unit test
+		variables.put("sourceNetworkRole", "whoknows");// unit test
+		variables.put("allottedResourceId", "arId-1");
+		variables.put("junitSleepMs", "5");
+		return variables;
+
+	}
+
+//	private Map<String, String> setupVariables() {
+//		Map<String, String> variables = new HashMap<String, String>();
+//		variables.put("bpmnRequest", getRequest());
+//		variables.put("mso-request-id", "testRequestId");
+//		variables.put("CREVAS_testServiceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4"); // assigned for testing
+//		variables.put("serviceInstanceId", "c763d462-dfe4-4577-9706-fa3a9db640be");// unit test
+//		variables.put("sourceNetworkId", "c763d462-dfe4-4577-9706-fa3a9db640be");// unit test
+//		variables.put("sourceNetworkRole", "whoknows");// unit test
+//		variables.put("allottedResourceId", "arId-1");
+//		variables.put("junitSleepMs", "5");
+//		return variables;
+//
+//	}
+	
+	// start of mocks used locally and by other VF Module unit tests
+	public static void MockSDNCAdapterVfModule() {
+		// simplified the implementation to return "success" for all requests
+		stubFor(post(urlEqualTo("/SDNCAdapter"))
+//			.withRequestBody(containing("SvcInstanceId><"))
+			.willReturn(aResponse()
+				.withStatus(200)
+				.withHeader("Content-Type", "text/xml")
+				.withBodyFile("VfModularity/StandardSDNCSynchResponse.xml")));
+//		stubFor(post(urlEqualTo("/SDNCAdapter"))
+//				.withRequestBody(containing("vnf-type>STMTN"))
+//				.willReturn(aResponse()
+//					.withStatus(200)
+//					.withHeader("Content-Type", "text/xml")
+//					.withBodyFile("VfModularity/StandardSDNCSynchResponse.xml")));
+//		stubFor(post(urlEqualTo("/SDNCAdapter"))
+//				.withRequestBody(containing("SvcAction>query"))
+//				.willReturn(aResponse()
+//					.withStatus(200)
+//					.withHeader("Content-Type", "text/xml")
+//					.withBodyFile("VfModularity/StandardSDNCSynchResponse.xml")));
+	}
+	
+
+	
+	
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceBRGRollbackTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceBRGRollbackTest.java
new file mode 100644
index 0000000..b702313
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceBRGRollbackTest.java
@@ -0,0 +1,96 @@
+/*
+ * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.core.RollbackData;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+
+public class DoCreateAllottedResourceBRGRollbackTest extends WorkflowTest {
+
+	private static final String RbType = "DCARBRG_";
+	private final CallbackSet callbacks = new CallbackSet();
+	
+	public DoCreateAllottedResourceBRGRollbackTest() throws IOException {
+		callbacks.put("deactivate", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeactivateCallback.xml"));
+		callbacks.put("delete", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeleteCallback.xml"));
+		callbacks.put("unassign", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyUnassignCallback.xml"));
+	}
+	
+	@Test
+	@Deployment(resources = {
+			"subprocess/SDNCAdapterV1.bpmn",
+			"subprocess/FalloutHandler.bpmn",
+			"subprocess/DoCreateAllottedResourceBRGRollback.bpmn"})
+	public void testDoCreateAllottedResourceBRGRollback_success() throws Exception {
+		
+		MockGetAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "VCPE/DoCreateAllottedResourceBRGRollback/arGetById.xml");
+		MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1");
+		MockDeleteAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "1490627351232");
+		mockSDNCAdapter(200);
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+		
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<>();
+		setVariablesSuccess(variables, "testRequestId1");
+		
+		invokeSubProcess("DoCreateAllottedResourceBRGRollback", businessKey, variables);
+		
+		injectSDNCCallbacks(callbacks, "deactivate");
+		injectSDNCCallbacks(callbacks, "delete");
+		injectSDNCCallbacks(callbacks, "unassign");
+
+		waitForProcessEnd(businessKey, 10000);
+		
+		Assert.assertTrue(isProcessEnded(businessKey));
+		String workflowException = BPMNUtil.getVariable(processEngineRule, "DoCreateAllottedResourceBRGRollback", "WorkflowException");
+		System.out.println("workflowException:\n" + workflowException);
+		assertEquals(null, workflowException);
+	}
+
+	private void setVariablesSuccess(Map<String, Object> variables, String requestId) {
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("failNotFound", "true");
+		variables.put("msoRequestId", requestId);
+		variables.put("mso-request-id", "requestId");
+		variables.put("allottedResourceId", "arId-1");
+		
+		variables.put("serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+		variables.put("parentServiceInstanceId","MIS%252F1604%252F0026%252FSW_INTERNET");
+		RollbackData rollbackData = new RollbackData();
+
+		rollbackData.put(RbType, "serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+		rollbackData.put(RbType, "serviceSubscriptionType", "123456789");
+		rollbackData.put(RbType, "disablerollback", "false");
+		rollbackData.put(RbType, "rollbackAAI", "true");
+		rollbackData.put(RbType, "rollbackSDNCassign", "true");
+		rollbackData.put(RbType, "rollbackSDNCactivate", "true");
+		rollbackData.put(RbType, "rollbackSDNCcreate", "true");
+		rollbackData.put(RbType, "aaiARPath", "http://localhost:28090/aai/v9/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1");
+		
+		rollbackData.put(RbType, "sdncActivateRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncActivateRollbackReq.xml"));
+		rollbackData.put(RbType, "sdncCreateRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncCreateRollbackReq.xml")); 
+		rollbackData.put(RbType, "sdncAssignRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncAssignRollbackReq.xml"));
+		
+		variables.put("rollbackData",rollbackData);
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceBRGTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceBRGTest.java
new file mode 100644
index 0000000..bc3bdd2
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceBRGTest.java
@@ -0,0 +1,107 @@
+/*
+ * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+
+public class DoCreateAllottedResourceBRGTest extends WorkflowTest {
+
+	private final CallbackSet callbacks = new CallbackSet();
+
+	public DoCreateAllottedResourceBRGTest() throws IOException {
+		callbacks.put("assign", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyAssignCallback.xml"));
+		callbacks.put("create", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyCreateCallback.xml"));
+		callbacks.put("activate", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyActivateCallback.xml"));
+		callbacks.put("query", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml"));
+	}
+	
+	@Test
+	@Deployment(resources = {
+			"subprocess/GenericGetService.bpmn", 
+			"subprocess/SDNCAdapterV1.bpmn", 
+			"subprocess/FalloutHandler.bpmn",
+			"subprocess/DoCreateAllottedResourceBRG.bpmn",
+			"subprocess/DoCreateAllottedResourceBRGRollback.bpmn"})
+	public void testDoCreateAllottedResourceBRG_success() throws Exception{
+
+		MockNodeQueryServiceInstanceById("MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getSIUrlById.xml");
+		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
+		MockNodeQueryServiceInstanceById("MIS%252F1604%252F0027%252FSW_INTERNET", "GenericFlows/getParentSIUrlById.xml");
+		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "GenericFlows/getParentServiceInstance.xml");
+		MockPutAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "arId-1");
+		MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "arId-1");
+		mockSDNCAdapter(200);
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<>();
+		setVariablesSuccess(variables, "testRequestId123");
+		
+		invokeSubProcess("DoCreateAllottedResourceBRG", businessKey, variables);
+		
+		injectSDNCCallbacks(callbacks, "assign");
+		injectSDNCCallbacks(callbacks, "create");
+		injectSDNCCallbacks(callbacks, "activate");
+		injectSDNCCallbacks(callbacks, "query");
+
+		waitForProcessEnd(businessKey, 10000);
+		
+		Assert.assertTrue(isProcessEnded(businessKey));
+		String allotedResourceName = BPMNUtil.getVariable(processEngineRule, "DoCreateAllottedResourceBRG", "allotedResourceName");
+		String workflowException = BPMNUtil.getVariable(processEngineRule, "DoCreateAllottedResourceBRG", "WorkflowException");
+		assertEquals("namefromrequest", allotedResourceName);
+		assertEquals(null, workflowException);
+	}
+
+	private void setVariablesSuccess(Map<String, Object> variables, String requestId) {
+		// TODO: need all of these?
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("failExists", "true");
+		variables.put("disableRollback", "true");
+		variables.put("msoRequestId", requestId);
+		variables.put("mso-request-id", "requestId");
+		variables.put("sourceNetworkId", "snId");
+		variables.put("sourceNetworkRole", "snRole");
+		variables.put("allottedResourceRole", "txc");
+		variables.put("allottedResourceType", "BRG");
+		variables.put("allottedResourceId", "arId-1");
+		variables.put("vni", "BRG");
+		variables.put("vgmuxBearerIP", "bearerip");
+		variables.put("brgWanMacAddress", "wanmac");
+		variables.put("junitSleepMs", "5");
+		
+		variables.put("serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+		variables.put("parentServiceInstanceId","MIS%252F1604%252F0027%252FSW_INTERNET");
+		variables.put("serviceChainServiceInstanceId", "scsiId");
+		
+		String arModelInfo = "{ "+ "\"modelType\": \"allotted-resource\"," +
+				"\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
+				"\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+				"\"modelName\": \"vSAMP12\"," +
+				"\"modelVersion\": \"1.0\"," +
+				"\"modelCustomizationUuid\": \"MODEL-ID-1234\"," +
+				"}";
+		variables.put("allottedResourceModelInfo", arModelInfo);
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceTXCRollbackTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceTXCRollbackTest.java
new file mode 100644
index 0000000..de5e0f2
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceTXCRollbackTest.java
@@ -0,0 +1,96 @@
+/*
+ * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.core.RollbackData;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+
+public class DoCreateAllottedResourceTXCRollbackTest extends WorkflowTest {
+
+	private static final String RbType = "DCARTXC_";
+	private final CallbackSet callbacks = new CallbackSet();
+	
+	public DoCreateAllottedResourceTXCRollbackTest() throws IOException {
+		callbacks.put("deactivate", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeactivateCallback.xml"));
+		callbacks.put("delete", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeleteCallback.xml"));
+		callbacks.put("unassign", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyUnassignCallback.xml"));
+	}
+	
+	@Test
+	@Deployment(resources = {
+			"subprocess/SDNCAdapterV1.bpmn",
+			"subprocess/FalloutHandler.bpmn",
+			"subprocess/DoCreateAllottedResourceTXCRollback.bpmn"})
+	public void testDoCreateAllottedResourceTXCRollback_success() throws Exception{
+		
+		MockGetAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml");
+		MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1");
+		MockDeleteAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "1490627351232");
+		mockSDNCAdapter(200);
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+		
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<>();
+		setVariablesSuccess(variables, "testRequestId1");
+		
+		invokeSubProcess("DoCreateAllottedResourceTXCRollback", businessKey, variables);
+		
+		injectSDNCCallbacks(callbacks, "deactivate");
+		injectSDNCCallbacks(callbacks, "delete");
+		injectSDNCCallbacks(callbacks, "unassign");
+
+		waitForProcessEnd(businessKey, 10000);
+		
+		Assert.assertTrue(isProcessEnded(businessKey));
+		String workflowException = BPMNUtil.getVariable(processEngineRule, "DoCreateAllottedResourceTXCRollback", "WorkflowException");
+		System.out.println("workflowException:\n" + workflowException);
+		assertEquals(null, workflowException);
+	}
+
+	private void setVariablesSuccess(Map<String, Object> variables, String requestId) {
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("failNotFound", "true");
+		variables.put("msoRequestId", requestId);
+		variables.put("mso-request-id", "requestId");
+		variables.put("allottedResourceId", "arId-1");
+		
+		variables.put("serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+		variables.put("parentServiceInstanceId","MIS%252F1604%252F0026%252FSW_INTERNET");
+		RollbackData rollbackData = new RollbackData();
+
+		rollbackData.put(RbType, "serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+		rollbackData.put(RbType, "serviceSubscriptionType", "123456789");
+		rollbackData.put(RbType, "disablerollback", "false");
+		rollbackData.put(RbType, "rollbackAAI", "true");
+		rollbackData.put(RbType, "rollbackSDNCassign", "true");
+		rollbackData.put(RbType, "rollbackSDNCactivate", "true");
+		rollbackData.put(RbType, "rollbackSDNCcreate", "true");
+		rollbackData.put(RbType, "aaiARPath", "http://localhost:28090/aai/v9/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1");
+		
+		rollbackData.put(RbType, "sdncActivateRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncActivateRollbackReq.xml"));
+		rollbackData.put(RbType, "sdncCreateRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncCreateRollbackReq.xml")); 
+		rollbackData.put(RbType, "sdncAssignRollbackReq", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncAssignRollbackReq.xml"));
+		
+		variables.put("rollbackData",rollbackData);
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceTXCTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceTXCTest.java
new file mode 100644
index 0000000..936cb4a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoCreateAllottedResourceTXCTest.java
@@ -0,0 +1,104 @@
+/*
+ * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+
+public class DoCreateAllottedResourceTXCTest extends WorkflowTest {
+
+	private final CallbackSet callbacks = new CallbackSet();
+
+	public DoCreateAllottedResourceTXCTest() throws IOException {
+		callbacks.put("assign", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyAssignCallback.xml"));
+		callbacks.put("create", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyCreateCallback.xml"));
+		callbacks.put("activate", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyActivateCallback.xml"));
+		callbacks.put("query", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXC/SDNCTopologyQueryCallback.xml"));
+	}
+	
+	@Test
+	@Deployment(resources = {
+			"subprocess/GenericGetService.bpmn", 
+			"subprocess/SDNCAdapterV1.bpmn", 
+			"subprocess/FalloutHandler.bpmn",
+			"subprocess/DoCreateAllottedResourceTXC.bpmn",
+			"subprocess/DoCreateAllottedResourceTXCRollback.bpmn"})
+	public void testDoCreateAllottedResourceTXC_success() throws Exception{
+
+		MockNodeQueryServiceInstanceById("MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getSIUrlById.xml");
+		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
+		MockNodeQueryServiceInstanceById("MIS%252F1604%252F0027%252FSW_INTERNET", "GenericFlows/getParentSIUrlById.xml");
+		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "GenericFlows/getParentServiceInstance.xml");
+		MockPutAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "arId-1");
+		MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0027%252FSW_INTERNET", "arId-1");
+		mockSDNCAdapter(200);
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<String, Object>();
+		setVariablesSuccess(variables, "testRequestId123");
+		
+		invokeSubProcess("DoCreateAllottedResourceTXC", businessKey, variables);
+		
+		injectSDNCCallbacks(callbacks, "assign");
+		injectSDNCCallbacks(callbacks, "create");
+		injectSDNCCallbacks(callbacks, "activate");
+		injectSDNCCallbacks(callbacks, "query");
+
+		waitForProcessEnd(businessKey, 10000);
+		
+		Assert.assertTrue(isProcessEnded(businessKey));
+		String workflowException = BPMNUtil.getVariable(processEngineRule, "DoCreateAllottedResourceTXC", "WorkflowException");
+		System.out.println("workflowException:\n" + workflowException);
+		assertEquals(null, workflowException);
+		logEnd();
+	}
+
+	private void setVariablesSuccess(Map<String, Object> variables, String requestId) {
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("failExists", "true");
+		variables.put("disableRollback", "true");
+		variables.put("msoRequestId", requestId);
+		variables.put("mso-request-id", "requestId");
+		variables.put("sourceNetworkId", "snId");
+		variables.put("sourceNetworkRole", "snRole");
+		variables.put("allottedResourceRole", "txc");
+		variables.put("allottedResourceType", "TunnelXConn");
+		variables.put("allottedResourceId", "arId-1");
+		variables.put("brgWanMacAddress", "wanmac");
+		variables.put("junitSleepMs", "5");
+		
+		variables.put("serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+		variables.put("parentServiceInstanceId","MIS%252F1604%252F0027%252FSW_INTERNET");
+		variables.put("serviceChainServiceInstanceId", "scsiId");
+		
+		String arModelInfo = "{ "+ "\"modelType\": \"allotted-resource\"," +
+				"\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
+				"\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+				"\"modelName\": \"vSAMP12\"," +
+				"\"modelVersion\": \"1.0\"," +
+				"\"modelCustomizationUuid\": \"MODEL-ID-1234\"," +
+				"}";
+		variables.put("allottedResourceModelInfo", arModelInfo);
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoDeleteAllottedResourceBRGTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoDeleteAllottedResourceBRGTest.java
new file mode 100644
index 0000000..054b6f5
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoDeleteAllottedResourceBRGTest.java
@@ -0,0 +1,80 @@
+/*
+ * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockQueryAllottedResourceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+
+public class DoDeleteAllottedResourceBRGTest extends WorkflowTest {
+
+	private final CallbackSet callbacks = new CallbackSet();
+	
+	public DoDeleteAllottedResourceBRGTest() throws IOException {
+		callbacks.put("deactivate", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeactivateCallback.xml"));
+		callbacks.put("delete", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeleteCallback.xml"));
+		callbacks.put("unassign", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyUnassignCallback.xml"));
+	}
+	
+	@Test
+	@Deployment(resources = {
+			"subprocess/SDNCAdapterV1.bpmn",
+			"subprocess/FalloutHandler.bpmn",
+			"subprocess/DoDeleteAllottedResourceBRG.bpmn"})
+	public void testDoDeleteAllottedResourceBRG_success() throws Exception {
+		
+		MockQueryAllottedResourceById("arId-1", "GenericFlows/getARUrlById.xml");
+		MockGetAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "VCPE/DoDeleteAllottedResourceBRG/arGetById.xml");
+		MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1");
+		MockDeleteAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "1490627351232");
+		mockSDNCAdapter(200);
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+		
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<>();
+		setVariablesSuccess(variables, "testRequestId1");
+		
+		invokeSubProcess("DoDeleteAllottedResourceBRG", businessKey, variables);
+		
+		injectSDNCCallbacks(callbacks, "deactivate");
+		injectSDNCCallbacks(callbacks, "delete");
+		injectSDNCCallbacks(callbacks, "unassign");
+
+		waitForProcessEnd(businessKey, 10000);
+		
+		Assert.assertTrue(isProcessEnded(businessKey));
+		String workflowException = BPMNUtil.getVariable(processEngineRule, "DoDeleteAllottedResourceBRG", "WorkflowException");
+		System.out.println("workflowException:\n" + workflowException);
+		assertEquals(null, workflowException);
+	}
+
+	private void setVariablesSuccess(Map<String, Object> variables, String requestId) {
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("failNotFound", "true");
+		variables.put("msoRequestId", requestId);
+		variables.put("mso-request-id", "requestId");
+		variables.put("allottedResourceId", "arId-1");
+		
+		variables.put("serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+		variables.put("parentServiceInstanceId","MIS%252F1604%252F0026%252FSW_INTERNET");
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoDeleteAllottedResourceTXCTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoDeleteAllottedResourceTXCTest.java
new file mode 100644
index 0000000..a3faef1
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/DoDeleteAllottedResourceTXCTest.java
@@ -0,0 +1,80 @@
+/*
+ * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
+ */
+package org.openecomp.mso.bpmn.vcpe;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchAllottedResource;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockQueryAllottedResourceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+
+public class DoDeleteAllottedResourceTXCTest extends WorkflowTest {
+
+	private final CallbackSet callbacks = new CallbackSet();
+	
+	public DoDeleteAllottedResourceTXCTest() throws IOException {
+		callbacks.put("deactivate", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeactivateCallback.xml"));
+		callbacks.put("delete", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyDeleteCallback.xml"));
+		callbacks.put("unassign", FileUtil.readResourceFile("__files/VCPE/VfModularity/SDNCTopologyUnassignCallback.xml"));
+	}
+	
+	@Test
+	@Deployment(resources = {
+			"subprocess/SDNCAdapterV1.bpmn",
+			"subprocess/FalloutHandler.bpmn",
+			"subprocess/DoDeleteAllottedResourceTXC.bpmn"})
+	public void testDoDeleteAllottedResourceTXC_success() throws Exception {
+		
+		MockQueryAllottedResourceById("arId-1", "GenericFlows/getARUrlById.xml");
+		MockGetAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "VCPE/DoDeleteAllottedResourceTXC/arGetById.xml");
+		MockPatchAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1");
+		MockDeleteAllottedResource("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "arId-1", "1490627351232");
+		mockSDNCAdapter(200);
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+		
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<>();
+		setVariablesSuccess(variables, "testRequestId1");
+		
+		invokeSubProcess("DoDeleteAllottedResourceTXC", businessKey, variables);
+		
+		injectSDNCCallbacks(callbacks, "deactivate");
+		injectSDNCCallbacks(callbacks, "delete");
+		injectSDNCCallbacks(callbacks, "unassign");
+
+		waitForProcessEnd(businessKey, 10000);
+		
+		Assert.assertTrue(isProcessEnded(businessKey));
+		String workflowException = BPMNUtil.getVariable(processEngineRule, "DoDeleteAllottedResourceTXC", "WorkflowException");
+		System.out.println("workflowException:\n" + workflowException);
+		assertEquals(null, workflowException);
+	}
+
+	private void setVariablesSuccess(Map<String, Object> variables, String requestId) {
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("failNotFound", "true");
+		variables.put("msoRequestId", requestId);
+		variables.put("mso-request-id", "requestId");
+		variables.put("allottedResourceId", "arId-1");
+		
+		variables.put("serviceInstanceId", "MIS%252F1604%252F0026%252FSW_INTERNET");
+		variables.put("parentServiceInstanceId","MIS%252F1604%252F0026%252FSW_INTERNET");
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf
new file mode 100644
index 0000000..19f18cc
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf
@@ -0,0 +1,107 @@
+{
+    "transactionId": "testRequestId",
+	"requestId": "testRequestId",
+	"requestState": "complete",
+	"statusMessage": "",
+    "solutionInfo": {
+        "licenseInfo": [
+            {
+                "entitlementPoolList": [
+                    "f1d563e8-e714-4393-8f99-cc480144a05e",
+                    "j1d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "licenseKeyGroupList": [
+                    "s1d563e8-e714-4393-8f99-cc480144a05e",
+                    "b1d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "resourceModuleName": "vHNPortalaaS_primary_1",
+                "serviceResourceId": "testResourceIdAR"
+            },
+            {
+                "entitlementPoolList": [
+                    "91d563e8-e714-4393-8f99-cc480144a05e",
+                    "21d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "licenseKeyGroupList": [
+                    "31d563e8-e714-4393-8f99-cc480144a05e",
+                    "71d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "resourceModuleName": "vHNPortalaaS_secondary_1",
+                "serviceResourceId": "testResourceIdVNF"
+            }
+        ],
+        "placement": [
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "vnfHostName",
+                        "variableValue": "MDTNJ01"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "KDTNJ01"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "dfwtx",
+                "inventoryType": "service",
+                "resourceModuleName": "ALLOTTED_RESOURCE",
+                "serviceInstanceId": "testSIID1",
+                "serviceResourceId": "testResourceIdAR"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "vnfHostName",
+                        "variableValue": "testVnfHostname2"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClli2"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionId2",
+                "inventoryType": "service",
+                "resourceModuleName": "ALLOTTED_RESOURCE",
+                "serviceInstanceId": "testSIID2",
+                "serviceResourceId": "testResourceIdAR2"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClli3"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionId3",
+                "inventoryType": "cloud",
+                "resourceModuleName": "VNF",
+                "serviceInstanceId": "",
+                "serviceResourceId": "testResourceIdVNF"
+            }
+        ]
+    }
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf2Net b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf2Net
new file mode 100644
index 0000000..5a9ef4b
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallback2AR1Vnf2Net
@@ -0,0 +1,165 @@
+{
+    "transactionId": "testRequestId",
+	"requestId": "testRequestId",
+	"requestState": "complete",
+	"statusMessage": "",
+    "solutionInfo": {
+        "licenseInfo": [
+            {
+                "entitlementPoolList": [
+                    "f1d563e8-e714-4393-8f99-cc480144a05e",
+                    "j1d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "licenseKeyGroupList": [
+                    "s1d563e8-e714-4393-8f99-cc480144a05e",
+                    "b1d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "resourceModuleName": "vHNPortalaaS_primary_1",
+                "serviceResourceId": "testResourceIdAR"
+            },
+            {
+                "entitlementPoolList": [
+                    "f1d563e8-e714-4393-8f99-cc480144a05n",
+                    "j1d563e8-e714-4393-8f99-cc480144a05n"
+                ],
+                "licenseKeyGroupList": [
+                    "s1d563e8-e714-4393-8f99-cc480144a05n",
+                    "b1d563e8-e714-4393-8f99-cc480144a05n"
+                ],
+                "resourceModuleName": "net",
+                "serviceResourceId": "testResourceIdNet2"
+            },
+            {
+                "entitlementPoolList": [
+                    "91d563e8-e714-4393-8f99-cc480144a05e",
+                    "21d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "licenseKeyGroupList": [
+                    "31d563e8-e714-4393-8f99-cc480144a05e",
+                    "71d563e8-e714-4393-8f99-cc480144a05e"
+                ],
+                "resourceModuleName": "vHNPortalaaS_secondary_1",
+                "serviceResourceId": "testResourceIdVNF"
+            }
+        ],
+        "placement": [
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "vnfHostName",
+                        "variableValue": "MDTNJ01"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "KDTNJ01"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "dfwtx",
+                "inventoryType": "service",
+                "resourceModuleName": "ALLOTTED_RESOURCE",
+                "serviceInstanceId": "testSIID1",
+                "serviceResourceId": "testResourceIdAR"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "vnfHostName",
+                        "variableValue": "testVnfHostname2"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClli2"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionId2",
+                "inventoryType": "service",
+                "resourceModuleName": "ALLOTTED_RESOURCE",
+                "serviceInstanceId": "testSIID2",
+                "serviceResourceId": "testResourceIdAR2"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "vnfHostName",
+                        "variableValue": "testVnfHostNameNet"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClliNet"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionIdNet",
+                "inventoryType": "service",
+                "resourceModuleName": "NETWORK",
+                "serviceInstanceId": "testServiceInstanceIdNet",
+                "serviceResourceId": "testResourceIdNet"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClliNet2"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionIdNet2",
+                "inventoryType": "cloud",
+                "resourceModuleName": "NETWORK",
+                "serviceInstanceId": "",
+                "serviceResourceId": "testResourceIdNet2"
+            },
+            {
+                "assignmentInfo": [
+                    {
+                        "variableName": "cloudOwner",
+                        "variableValue": "aic"
+                    },
+                    {
+                        "variableName": "aicClli",
+                        "variableValue": "testAicClli3"
+                    },
+                    {
+                        "variableName": "aicVersion",
+                        "variableValue": "3.0"
+                    }
+                ],
+                "cloudRegionId": "testCloudRegionId3",
+                "inventoryType": "cloud",
+                "resourceModuleName": "VNF",
+                "serviceInstanceId": "",
+                "serviceResourceId": "testResourceIdVNF"
+            }
+        ]
+    }
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackNoSolutionFound b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackNoSolutionFound
new file mode 100644
index 0000000..5cb748a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackNoSolutionFound
@@ -0,0 +1,15 @@
+{
+  "requestState": "",
+  "responseTime": "",
+  "solutionInfo": {
+    "placement": [],
+    "licenseInfo": {
+      "featureGroupId": ""
+    }
+  },
+  "percentProgress": "",
+  "requestId": "02c2e322-5839-4c97-9d46-0a5fa6bb642e",
+  "startTime": "",
+  "statusMessage": "No solution found for plan 08e1b8cf-144a-4bac-b293-d5e2eedc97e8",
+  "requestType": ""
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackPolicyException b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackPolicyException
new file mode 100644
index 0000000..b826884
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackPolicyException
@@ -0,0 +1,9 @@
+{
+	"requestError": {
+		"policyException": {
+		  "requestId": "ae81d9a8-c949-493a-999c-f76c80503233",
+		  "text": "Message content size exceeds the allowable limit",
+		  "messageId": "SVC0001"
+		}
+	}
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackServiceException b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackServiceException
new file mode 100644
index 0000000..6cc78a7
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/BuildingBlocks/sniroCallbackServiceException
@@ -0,0 +1,12 @@
+{
+	"requestError": {
+		"serviceException": {
+		"variables": [
+		"severity", 400
+		],
+		 "requestId": "ae81d9a8-c949-493a-999c-f76c80503233",
+		  "text": "SNIROPlacementError: requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http://135.21.171.200:8091/v1/plans/97b4e303-5f75-492c-8fb2-21098281c8b8",
+		   "messageId": "SVC0001"
+		}
+	}
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getARUrlById.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getARUrlById.xml
new file mode 100644
index 0000000..e178583
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getARUrlById.xml
@@ -0,0 +1,6 @@
+<search-results xmlns="http://org.openecomp.aai.inventory">
+     <result-data>
+        <resource-type>allotted-resource</resource-type>
+        <resource-link>https://aai-ext1.test.com:8443/aai/v7/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1</resource-link>
+     </result-data>
+</search-results>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getParentSIUrlById.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getParentSIUrlById.xml
new file mode 100644
index 0000000..c29133e
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getParentSIUrlById.xml
@@ -0,0 +1,6 @@
+<search-results xmlns="http://org.openecomp.aai.inventory">
+     <result-data>
+        <resource-type>service-instance</resource-type>
+        <resource-link>https://aai-ext1.test.com:8443/aai/v7/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0027%252FSW_INTERNET</resource-link>
+     </result-data>
+</search-results>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getParentServiceInstance.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getParentServiceInstance.xml
new file mode 100644
index 0000000..bc810c6
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/GenericFlows/getParentServiceInstance.xml
@@ -0,0 +1,30 @@
+<service-instance>
+   <service-instance-id>MIS/1604/0027/SW_INTERNET</service-instance-id>
+   <resource-version>123456789</resource-version>
+   <relationship-list>
+      <relationship>
+         <related-to>cvlan-tag</related-to>
+         <related-link>https://aai-ext1.test.com:8443/aai/v2/network/vces/vce/832bace2-3fb0-49e0-a6a4-07c47223c535/port-groups/port-group/slcp1447vbc.ipag/cvlan-tags/cvlan-tag/2003/</related-link>
+         <relationship-data>
+            <relationship-key>cvlan-tag.cvlan-tag</relationship-key>
+            <relationship-value>2003</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>port-group.interface-id</relationship-key>
+            <relationship-value>slcp1447vbc.ipag</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>vce.vnf-id</relationship-key>
+            <relationship-value>832bace2-3fb0-49e0-a6a4-07c47223c535</relationship-value>
+         </relationship-data>
+      </relationship>
+      <relationship>
+         <related-to>vce</related-to>
+         	<related-link>https://aai-ext1.test.com:8443/aai/v2/network/vces/vce/832bace2-3fb0-49e0-a6a4-07c47223c535/</related-link>
+         <relationship-data>
+            <relationship-key>vce.vnf-id</relationship-key>
+            <relationship-value>832bace2-3fb0-49e0-a6a4-07c47223c535</relationship-value>
+         </relationship-data>
+      </relationship>
+   </relationship-list>
+</service-instance>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/CreateServiceInstance/createServiceInstance_AAIResponse_success.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/CreateServiceInstance/createServiceInstance_AAIResponse_success.xml
new file mode 100644
index 0000000..5f810ba
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/CreateServiceInstance/createServiceInstance_AAIResponse_success.xml
@@ -0,0 +1,11 @@
+<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+                   statusCode="200">
+   <rest:headers>
+      <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+      <rest:header name="Content-Length" value="0"/>
+      <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+      <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:551-132672"/>
+      <rest:header name="Server" value="Apache-Coyote/1.1"/>
+      <rest:header name="Cache-Control" value="private"/>
+   </rest:headers>
+</rest:RESTResponse>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml
new file mode 100644
index 0000000..410ba05
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml
@@ -0,0 +1,37 @@
+<output xmlns="org:openecomp:sdnctl:vnf">
+<brg-topology  xmlns="org:openecomp:sdnctl:vnf">
+    <ecomp-model-information>
+        <model-invariant-uuid>36e20198-c67a-464b-96d0-aaa99eb2639e</model-invariant-uuid>
+        <model-uuid>5b9b15d0-5dd7-47dc-95b9-0440c340a3ba</model-uuid>
+        <model-version>1.0</model-version>
+        <model-name>BRGmodelname</model-name>
+        <model-customization-uuid>013bd784-9bca-4919-ae2f-ae57af27bad9</model-customization-uuid>
+    </ecomp-model-information>
+    <allotted-resource-identifiers>
+        <parent-service-instance-id>parent-service-instance-id</parent-service-instance-id>
+        <consuming-service-intance-id>consuming-service-instance-id</consuming-service-intance-id>
+        <allotted-resource-name>namefromrequest</allotted-resource-name>
+        <allotted-resource-type>brg</allotted-resource-type>
+        <allotted-resource-id>allottedresourceidfromrequest</allotted-resource-id>
+    </allotted-resource-identifiers>
+    <brg-assignments>
+        <fq-name>fq-name</fq-name>
+        <dest-network>
+            <network-id>d1</network-id>
+            <network-role>drole</network-role>
+        </dest-network>
+        <vlan-tag>vlan-tag</vlan-tag>
+        <source-network>
+            <network-id>s2</network-id>
+            <network-role>srole</network-role>
+        </source-network>
+        <txc-id>txc-id</txc-id>
+        <txc-applied-service>
+            <service-instance-id>1</service-instance-id>
+            <vnf-id>123</vnf-id>
+            <txc-fqdn>a.b.c.d</txc-fqdn>
+        </txc-applied-service>
+    </brg-assignments>
+</brg-topology>
+
+</output>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/getAR.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/getAR.xml
new file mode 100644
index 0000000..b6da551
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/getAR.xml
@@ -0,0 +1,8 @@
+<allotted-resource xmlns="http://org.openecomp.aai.inventory/v9">
+   <relationship-list>
+      <relationship>
+         <related-to>allotted-resource</related-to>
+         <related-link>http://localhost:28090/aai/v9/mylink</related-link>
+      </relationship>
+   </relationship-list>
+</allotted-resource>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/getArBrg.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/getArBrg.xml
new file mode 100644
index 0000000..361d440
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/getArBrg.xml
@@ -0,0 +1,31 @@
+<allotted-resource xmlns="http://org.openecomp.aai.inventory/v9">
+   <id>ar-1</id>
+   <orchestration-status>Active</orchestration-status>
+   <role>BRGr</role>
+   <type>BRGt</type>
+   <description>BRG</description>
+   <selflink/>
+   <resource-version>1490627351232</resource-version>
+   <relationship-list>
+      <relationship>
+         <related-to>service-instance</related-to>
+         <related-link>http://localhost:28090/aai/v9/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1</related-link>
+         <relationship-data>
+            <relationship-key>customer.global-customer-id</relationship-key>
+            <relationship-value>MCBH-1610</relationship-value>
+         </relationship-data> 
+         <relationship-data>
+            <relationship-key>service-subscription.service-type</relationship-key>
+            <relationship-value>vcpesvc</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>service-instance.service-instance-id</relationship-key>
+            <relationship-value>88819355-9a71-4ddc-9e22-373f0644b40b</relationship-value>
+         </relationship-data>
+         <related-to-property>
+            <property-key>service-instance.service-instance-name</property-key>
+            <property-value>vcpe-1702-m010904-name4</property-value>
+         </related-to-property>
+      </relationship>
+   </relationship-list>
+</allotted-resource>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/arGetById.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/arGetById.xml
new file mode 100644
index 0000000..6a35247
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/arGetById.xml
@@ -0,0 +1,31 @@
+<allotted-resource xmlns="http://org.openecomp.aai.inventory/v9">
+   <id>ar-1</id>
+   <orchestration-status>Active</orchestration-status>
+   <role>BRG</role>
+   <type>BRG</type>
+   <description>BRG</description>
+   <selflink/>
+   <resource-version>1490627351232</resource-version>
+   <relationship-list>
+      <relationship>
+         <related-to>service-instance</related-to>
+         <related-link>http://localhost:28090/aai/v9/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1</related-link>
+         <relationship-data>
+            <relationship-key>customer.global-customer-id</relationship-key>
+            <relationship-value>MCBH-1610</relationship-value>
+         </relationship-data> 
+         <relationship-data>
+            <relationship-key>service-subscription.service-type</relationship-key>
+            <relationship-value>vcpesvc</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>service-instance.service-instance-id</relationship-key>
+            <relationship-value>88819355-9a71-4ddc-9e22-373f0644b40b</relationship-value>
+         </relationship-data>
+         <related-to-property>
+            <property-key>service-instance.service-instance-name</property-key>
+            <property-value>vcpe-1702-m010904-name4</property-value>
+         </related-to-property>
+      </relationship>
+   </relationship-list>
+</allotted-resource>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncActivateRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncActivateRollbackReq.xml
new file mode 100644
index 0000000..6f86e0f
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncActivateRollbackReq.xml
@@ -0,0 +1,51 @@
+<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+                xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+	<sdncadapter:RequestHeader>
+        <sdncadapter:RequestId>b043d290-140d-4a38-a9b6-95d3b8bd27d1</sdncadapter:RequestId>
+        <sdncadapter:SvcInstanceId>MIS%252F1604%252F0026%252FSW_INTERNET</sdncadapter:SvcInstanceId>
+        <sdncadapter:SvcAction>deactvate</sdncadapter:SvcAction>
+        <sdncadapter:SvcOperation>brg-topology-operation</sdncadapter:SvcOperation>
+        <sdncadapter:CallbackUrl>http://localhost:28090/mso/SDNCAdapterCallbackService</sdncadapter:CallbackUrl>
+	</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+	<request-information>
+	<request-id>RaaTestRequestId1</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></subscription-service-type>
+	<ecomp-model-information></ecomp-model-information>
+	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
+	<subscriber-name/>
+	<global-customer-id></global-customer-id>
+	</service-information>
+	<allotted-resource-information>
+	<allotted-resource-id>arId-1</allotted-resource-id>
+	<allotted-resource-type>brg</allotted-resource-type>
+	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
+	<ecomp-model-information>
+        <model-invariant-uuid></model-invariant-uuid>
+        <model-uuid></model-uuid>
+        <model-customization-uuid></model-customization-uuid>
+        <model-version></model-version>
+        <model-name></model-name>
+	</ecomp-model-information>
+	</allotted-resource-information>
+	<brg-request-input>
+	<source-network>
+        <network-id>${sourceNetworkId}</network-id>
+        <network-role>${sourceNetworkRole}</network-role>
+	</source-network>
+	<dest-network>
+        <network-id/>
+        <network-role></network-role>
+	</dest-network>
+	</brg-request-input>
+	</sdncadapterworkflow:SDNCRequestData>
+</sdncadapterworkflow:SDNCAdapterWorkflowRequest>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncAssignRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncAssignRollbackReq.xml
new file mode 100644
index 0000000..30d4c7a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncAssignRollbackReq.xml
@@ -0,0 +1,51 @@
+<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+                xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+	<sdncadapter:RequestHeader>
+        <sdncadapter:RequestId>b043d290-140d-4a38-a9b6-95d3b8bd27d3</sdncadapter:RequestId>
+        <sdncadapter:SvcInstanceId>MIS%252F1604%252F0026%252FSW_INTERNET</sdncadapter:SvcInstanceId>
+        <sdncadapter:SvcAction>unassign</sdncadapter:SvcAction>
+        <sdncadapter:SvcOperation>brg-topology-operation</sdncadapter:SvcOperation>
+        <sdncadapter:CallbackUrl>http://localhost:28090/mso/SDNCAdapterCallbackService</sdncadapter:CallbackUrl>
+	</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+	<request-information>
+	<request-id>RaaTestRequestId1</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></subscription-service-type>
+	<ecomp-model-information></ecomp-model-information>
+	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
+	<subscriber-name/>
+	<global-customer-id></global-customer-id>
+	</service-information>
+	<allotted-resource-information>
+	<allotted-resource-id>arId-1</allotted-resource-id>
+	<allotted-resource-type>brg</allotted-resource-type>
+	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
+	<ecomp-model-information>
+        <model-invariant-uuid></model-invariant-uuid>
+        <model-uuid></model-uuid>
+        <model-customization-uuid></model-customization-uuid>
+        <model-version></model-version>
+        <model-name></model-name>
+	</ecomp-model-information>
+	</allotted-resource-information>
+	<brg-request-input>
+	<source-network>
+        <network-id>${sourceNetworkId}</network-id>
+        <network-role>${sourceNetworkRole}</network-role>
+	</source-network>
+	<dest-network>
+        <network-id/>
+        <network-role></network-role>
+	</dest-network>
+	</brg-request-input>
+	</sdncadapterworkflow:SDNCRequestData>
+</sdncadapterworkflow:SDNCAdapterWorkflowRequest>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncCreateRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncCreateRollbackReq.xml
new file mode 100644
index 0000000..e20850a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncCreateRollbackReq.xml
@@ -0,0 +1,51 @@
+<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+                xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+	<sdncadapter:RequestHeader>
+        <sdncadapter:RequestId>b043d290-140d-4a38-a9b6-95d3b8bd27d2</sdncadapter:RequestId>
+        <sdncadapter:SvcInstanceId>MIS%252F1604%252F0026%252FSW_INTERNET</sdncadapter:SvcInstanceId>
+        <sdncadapter:SvcAction>delete</sdncadapter:SvcAction>
+        <sdncadapter:SvcOperation>brg-topology-operation</sdncadapter:SvcOperation>
+        <sdncadapter:CallbackUrl>http://localhost:28090/mso/SDNCAdapterCallbackService</sdncadapter:CallbackUrl>
+	</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+	<request-information>
+	<request-id>RaaTestRequestId1</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></subscription-service-type>
+	<ecomp-model-information></ecomp-model-information>
+	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
+	<subscriber-name/>
+	<global-customer-id></global-customer-id>
+	</service-information>
+	<allotted-resource-information>
+	<allotted-resource-id>arId-1</allotted-resource-id>
+	<allotted-resource-type>brg</allotted-resource-type>
+	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
+	<ecomp-model-information>
+        <model-invariant-uuid></model-invariant-uuid>
+        <model-uuid></model-uuid>
+        <model-customization-uuid></model-customization-uuid>
+        <model-version></model-version>
+        <model-name></model-name>
+	</ecomp-model-information>
+	</allotted-resource-information>
+	<brg-request-input>
+	<source-network>
+        <network-id>${sourceNetworkId}</network-id>
+        <network-role>${sourceNetworkRole}</network-role>
+	</source-network>
+	<dest-network>
+        <network-id/>
+        <network-role></network-role>
+	</dest-network>
+	</brg-request-input>
+	</sdncadapterworkflow:SDNCRequestData>
+</sdncadapterworkflow:SDNCAdapterWorkflowRequest>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXC/SDNCTopologyQueryCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXC/SDNCTopologyQueryCallback.xml
new file mode 100644
index 0000000..ac85be4
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXC/SDNCTopologyQueryCallback.xml
@@ -0,0 +1,24 @@
+<output xmlns="org:openecomp:sdnctl:vnf">
+<tunnelxconn-topology  xmlns="org:openecomp:sdnctl:vnf">
+    <ecomp-model-information>
+        <model-invariant-uuid>36e20198-c67a-464b-96d0-aaa99eb2639e</model-invariant-uuid>
+        <model-uuid>5b9b15d0-5dd7-47dc-95b9-0440c340a3ba</model-uuid>
+        <model-version>1.0</model-version>
+        <model-name>TXCmodelname</model-name>
+        <model-customization-uuid>013bd784-9bca-4919-ae2f-ae57af27bad9</model-customization-uuid>
+    </ecomp-model-information>
+    <allotted-resource-identifiers>
+        <parent-service-instance-id>parent-service-instance-id</parent-service-instance-id>
+        <consuming-service-intance-id>consuming-service-instance-id</consuming-service-intance-id>
+        <allotted-resource-name>namefromrequest</allotted-resource-name>
+        <allotted-resource-type>tunnelxconn</allotted-resource-type>
+        <allotted-resource-id>allottedresourceidfromrequest</allotted-resource-id>
+    </allotted-resource-identifiers>
+    <tunnelxconn-assignments>
+    	<vni>my-vni</vni>
+    	<vgmux_bearer_ip>my-bearer-ip</vgmux_bearer_ip>
+    	<vgmux_lan_ip>my-lan-ip</vgmux_lan_ip>
+    </tunnelxconn-assignments>
+</tunnelxconn-topology>
+
+</output>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml
new file mode 100644
index 0000000..713ef56
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/arGetById.xml
@@ -0,0 +1,31 @@
+<allotted-resource xmlns="http://org.openecomp.aai.inventory/v9">
+   <id>ar-1</id>
+   <orchestration-status>Active</orchestration-status>
+   <role>TunnelXConn</role>
+   <type>TunnelXConn</type>
+   <description>TunnelXConn</description>
+   <selflink/>
+   <resource-version>1490627351232</resource-version>
+   <relationship-list>
+      <relationship>
+         <related-to>service-instance</related-to>
+         <related-link>http://localhost:28090/aai/v9/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1</related-link>
+         <relationship-data>
+            <relationship-key>customer.global-customer-id</relationship-key>
+            <relationship-value>MCBH-1610</relationship-value>
+         </relationship-data> 
+         <relationship-data>
+            <relationship-key>service-subscription.service-type</relationship-key>
+            <relationship-value>vcpesvc</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>service-instance.service-instance-id</relationship-key>
+            <relationship-value>88819355-9a71-4ddc-9e22-373f0644b40b</relationship-value>
+         </relationship-data>
+         <related-to-property>
+            <property-key>service-instance.service-instance-name</property-key>
+            <property-value>vcpe-1702-m010904-name4</property-value>
+         </related-to-property>
+      </relationship>
+   </relationship-list>
+</allotted-resource>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncActivateRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncActivateRollbackReq.xml
new file mode 100644
index 0000000..efec7eb
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncActivateRollbackReq.xml
@@ -0,0 +1,51 @@
+<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+                xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+	<sdncadapter:RequestHeader>
+        <sdncadapter:RequestId>b043d290-140d-4a38-a9b6-95d3b8bd27d1</sdncadapter:RequestId>
+        <sdncadapter:SvcInstanceId>MIS%252F1604%252F0026%252FSW_INTERNET</sdncadapter:SvcInstanceId>
+        <sdncadapter:SvcAction>deactvate</sdncadapter:SvcAction>
+        <sdncadapter:SvcOperation>tunnelxconn-topology-operation</sdncadapter:SvcOperation>
+        <sdncadapter:CallbackUrl>http://localhost:8080/mso/SDNCAdapterCallbackService</sdncadapter:CallbackUrl>
+	</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+	<request-information>
+	<request-id>RaaTestRequestId1</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></subscription-service-type>
+	<ecomp-model-information></ecomp-model-information>
+	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
+	<subscriber-name/>
+	<global-customer-id></global-customer-id>
+	</service-information>
+	<allotted-resource-information>
+	<allotted-resource-id>arId-1</allotted-resource-id>
+	<allotted-resource-type>tunnelxconn</allotted-resource-type>
+	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
+	<ecomp-model-information>
+        <model-invariant-uuid></model-invariant-uuid>
+        <model-uuid></model-uuid>
+        <model-customization-uuid></model-customization-uuid>
+        <model-version></model-version>
+        <model-name></model-name>
+	</ecomp-model-information>
+	</allotted-resource-information>
+	<tunnelxconn-request-input>
+	<source-network>
+        <network-id>${sourceNetworkId}</network-id>
+        <network-role>${sourceNetworkRole}</network-role>
+	</source-network>
+	<dest-network>
+        <network-id/>
+        <network-role></network-role>
+	</dest-network>
+	</tunnelxconn-request-input>
+	</sdncadapterworkflow:SDNCRequestData>
+</sdncadapterworkflow:SDNCAdapterWorkflowRequest>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncAssignRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncAssignRollbackReq.xml
new file mode 100644
index 0000000..9f52758
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncAssignRollbackReq.xml
@@ -0,0 +1,51 @@
+<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+                xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+	<sdncadapter:RequestHeader>
+        <sdncadapter:RequestId>b043d290-140d-4a38-a9b6-95d3b8bd27d3</sdncadapter:RequestId>
+        <sdncadapter:SvcInstanceId>MIS%252F1604%252F0026%252FSW_INTERNET</sdncadapter:SvcInstanceId>
+        <sdncadapter:SvcAction>unassign</sdncadapter:SvcAction>
+        <sdncadapter:SvcOperation>tunnelxconn-topology-operation</sdncadapter:SvcOperation>
+        <sdncadapter:CallbackUrl>http://localhost:8080/mso/SDNCAdapterCallbackService</sdncadapter:CallbackUrl>
+	</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+	<request-information>
+	<request-id>RaaTestRequestId1</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></subscription-service-type>
+	<ecomp-model-information></ecomp-model-information>
+	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
+	<subscriber-name/>
+	<global-customer-id></global-customer-id>
+	</service-information>
+	<allotted-resource-information>
+	<allotted-resource-id>arId-1</allotted-resource-id>
+	<allotted-resource-type>tunnelxconn</allotted-resource-type>
+	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
+	<ecomp-model-information>
+        <model-invariant-uuid></model-invariant-uuid>
+        <model-uuid></model-uuid>
+        <model-customization-uuid></model-customization-uuid>
+        <model-version></model-version>
+        <model-name></model-name>
+	</ecomp-model-information>
+	</allotted-resource-information>
+	<tunnelxconn-request-input>
+	<source-network>
+        <network-id>${sourceNetworkId}</network-id>
+        <network-role>${sourceNetworkRole}</network-role>
+	</source-network>
+	<dest-network>
+        <network-id/>
+        <network-role></network-role>
+	</dest-network>
+	</tunnelxconn-request-input>
+	</sdncadapterworkflow:SDNCRequestData>
+</sdncadapterworkflow:SDNCAdapterWorkflowRequest>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncCreateRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncCreateRollbackReq.xml
new file mode 100644
index 0000000..025195e
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncCreateRollbackReq.xml
@@ -0,0 +1,51 @@
+<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+                xmlns:sdncadapter="http://org.openecomp/workflow/sdnc/adapter/schema/v1">
+	<sdncadapter:RequestHeader>
+        <sdncadapter:RequestId>b043d290-140d-4a38-a9b6-95d3b8bd27d2</sdncadapter:RequestId>
+        <sdncadapter:SvcInstanceId>MIS%252F1604%252F0026%252FSW_INTERNET</sdncadapter:SvcInstanceId>
+        <sdncadapter:SvcAction>delete</sdncadapter:SvcAction>
+        <sdncadapter:SvcOperation>tunnelxconn-topology-operation</sdncadapter:SvcOperation>
+        <sdncadapter:CallbackUrl>http://localhost:8080/mso/SDNCAdapterCallbackService</sdncadapter:CallbackUrl>
+	</sdncadapter:RequestHeader>
+	<sdncadapterworkflow:SDNCRequestData>
+	<request-information>
+	<request-id>RaaTestRequestId1</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></subscription-service-type>
+	<ecomp-model-information></ecomp-model-information>
+	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
+	<subscriber-name/>
+	<global-customer-id></global-customer-id>
+	</service-information>
+	<allotted-resource-information>
+	<allotted-resource-id>arId-1</allotted-resource-id>
+	<allotted-resource-type>tunnelxconn</allotted-resource-type>
+	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
+	<ecomp-model-information>
+        <model-invariant-uuid></model-invariant-uuid>
+        <model-uuid></model-uuid>
+        <model-customization-uuid></model-customization-uuid>
+        <model-version></model-version>
+        <model-name></model-name>
+	</ecomp-model-information>
+	</allotted-resource-information>
+	<tunnelxconn-request-input>
+	<source-network>
+        <network-id>${sourceNetworkId}</network-id>
+        <network-role>${sourceNetworkRole}</network-role>
+	</source-network>
+	<dest-network>
+        <network-id/>
+        <network-role></network-role>
+	</dest-network>
+	</tunnelxconn-request-input>
+	</sdncadapterworkflow:SDNCRequestData>
+</sdncadapterworkflow:SDNCAdapterWorkflowRequest>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoDeleteAllottedResourceBRG/arGetById.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoDeleteAllottedResourceBRG/arGetById.xml
new file mode 100644
index 0000000..6a35247
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoDeleteAllottedResourceBRG/arGetById.xml
@@ -0,0 +1,31 @@
+<allotted-resource xmlns="http://org.openecomp.aai.inventory/v9">
+   <id>ar-1</id>
+   <orchestration-status>Active</orchestration-status>
+   <role>BRG</role>
+   <type>BRG</type>
+   <description>BRG</description>
+   <selflink/>
+   <resource-version>1490627351232</resource-version>
+   <relationship-list>
+      <relationship>
+         <related-to>service-instance</related-to>
+         <related-link>http://localhost:28090/aai/v9/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1</related-link>
+         <relationship-data>
+            <relationship-key>customer.global-customer-id</relationship-key>
+            <relationship-value>MCBH-1610</relationship-value>
+         </relationship-data> 
+         <relationship-data>
+            <relationship-key>service-subscription.service-type</relationship-key>
+            <relationship-value>vcpesvc</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>service-instance.service-instance-id</relationship-key>
+            <relationship-value>88819355-9a71-4ddc-9e22-373f0644b40b</relationship-value>
+         </relationship-data>
+         <related-to-property>
+            <property-key>service-instance.service-instance-name</property-key>
+            <property-value>vcpe-1702-m010904-name4</property-value>
+         </related-to-property>
+      </relationship>
+   </relationship-list>
+</allotted-resource>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoDeleteAllottedResourceTXC/arGetById.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoDeleteAllottedResourceTXC/arGetById.xml
new file mode 100644
index 0000000..713ef56
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoDeleteAllottedResourceTXC/arGetById.xml
@@ -0,0 +1,31 @@
+<allotted-resource xmlns="http://org.openecomp.aai.inventory/v9">
+   <id>ar-1</id>
+   <orchestration-status>Active</orchestration-status>
+   <role>TunnelXConn</role>
+   <type>TunnelXConn</type>
+   <description>TunnelXConn</description>
+   <selflink/>
+   <resource-version>1490627351232</resource-version>
+   <relationship-list>
+      <relationship>
+         <related-to>service-instance</related-to>
+         <related-link>http://localhost:28090/aai/v9/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1</related-link>
+         <relationship-data>
+            <relationship-key>customer.global-customer-id</relationship-key>
+            <relationship-value>MCBH-1610</relationship-value>
+         </relationship-data> 
+         <relationship-data>
+            <relationship-key>service-subscription.service-type</relationship-key>
+            <relationship-value>vcpesvc</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>service-instance.service-instance-id</relationship-key>
+            <relationship-value>88819355-9a71-4ddc-9e22-373f0644b40b</relationship-value>
+         </relationship-data>
+         <related-to-property>
+            <property-key>service-instance.service-instance-name</property-key>
+            <property-value>vcpe-1702-m010904-name4</property-value>
+         </related-to-property>
+      </relationship>
+   </relationship-list>
+</allotted-resource>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyCreateCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyCreateCallback.xml
new file mode 100644
index 0000000..11022f6
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyCreateCallback.xml
@@ -0,0 +1,16 @@
+	<output xmlns="org:openecomp:sdnctl:vnf">
+		<vnf-information>
+			<vnf-id>skask</vnf-id>			
+		</vnf-information>
+		<response-code>200</response-code>
+		<svc-request-id>{{REQUEST-ID}}</svc-request-id>
+		<ack-final-indicator>Y</ack-final-indicator>
+		<service-information>
+			<subscriber-name>dontcare</subscriber-name>
+			<service-instance-id>0</service-instance-id>
+			<service-type>SDN-MOBILITY</service-type>
+		</service-information>
+		<instance-reference>
+			<object-path>restconf/SDNCObjectPath</object-path>
+		</instance-reference>
+	</output>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyDeactivateCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyDeactivateCallback.xml
new file mode 100644
index 0000000..acea145
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyDeactivateCallback.xml
@@ -0,0 +1,13 @@
+<output xmlns="org:openecomp:sdnctl:vnf">
+	<vnf-information>
+		<vnf-id>skask</vnf-id>
+	</vnf-information>
+	<response-code>200</response-code>
+	<svc-request-id>{{REQUEST-ID}}</svc-request-id>
+	<ack-final-indicator>Y</ack-final-indicator>
+	<service-information>
+		<subscriber-name>dontcare</subscriber-name>
+		<service-instance-id>0</service-instance-id>
+		<service-type>SDN-MOBILITY</service-type>
+	</service-information>
+</output>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyDeleteCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyDeleteCallback.xml
new file mode 100644
index 0000000..11022f6
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyDeleteCallback.xml
@@ -0,0 +1,16 @@
+	<output xmlns="org:openecomp:sdnctl:vnf">
+		<vnf-information>
+			<vnf-id>skask</vnf-id>			
+		</vnf-information>
+		<response-code>200</response-code>
+		<svc-request-id>{{REQUEST-ID}}</svc-request-id>
+		<ack-final-indicator>Y</ack-final-indicator>
+		<service-information>
+			<subscriber-name>dontcare</subscriber-name>
+			<service-instance-id>0</service-instance-id>
+			<service-type>SDN-MOBILITY</service-type>
+		</service-information>
+		<instance-reference>
+			<object-path>restconf/SDNCObjectPath</object-path>
+		</instance-reference>
+	</output>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyUnassignCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyUnassignCallback.xml
new file mode 100644
index 0000000..11022f6
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/SDNCTopologyUnassignCallback.xml
@@ -0,0 +1,16 @@
+	<output xmlns="org:openecomp:sdnctl:vnf">
+		<vnf-information>
+			<vnf-id>skask</vnf-id>			
+		</vnf-information>
+		<response-code>200</response-code>
+		<svc-request-id>{{REQUEST-ID}}</svc-request-id>
+		<ack-final-indicator>Y</ack-final-indicator>
+		<service-information>
+			<subscriber-name>dontcare</subscriber-name>
+			<service-instance-id>0</service-instance-id>
+			<service-type>SDN-MOBILITY</service-type>
+		</service-information>
+		<instance-reference>
+			<object-path>restconf/SDNCObjectPath</object-path>
+		</instance-reference>
+	</output>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/VNFAdapterRestCreateCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/VNFAdapterRestCreateCallback.xml
new file mode 100644
index 0000000..49ecd0b
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/VNFAdapterRestCreateCallback.xml
@@ -0,0 +1,55 @@
+<createVfModuleResponse>
+    <vnfId>skask</vnfId>
+    <vfModuleId>supercool</vfModuleId>
+    <vfModuleStackId>slowburn</vfModuleStackId>
+    <vfModuleCreated>true</vfModuleCreated>
+    <vfModuleOutputs>
+        <entry>
+            <key>key1</key>
+            <value>value1</value>
+        </entry>
+        <entry>
+            <key>key2</key>
+            <value>value2</value>
+        </entry>
+        <entry>
+<key>server1_private_ip</key>
+<value>192.168.28.3</value>
+</entry>
+<entry>
+<key>contrail-service-instance-fqdn</key>
+<value>default-domain:MSOTest:MsoNW-RA</value>
+</entry>
+<entry>
+<key>policyKey1_contrail_network_policy_fqdn</key>
+<value>MSOTest:DefaultPolicyFQDN1</value>
+</entry>
+<entry>
+<key>policyKey2_contrail_network_policy_fqdn</key>
+<value>MSOTest:DefaultPolicyFQDN2</value>
+</entry>
+<entry>
+<key>oam_management_v6_address</key>
+<value>2000:abc:bce:1111</value>
+</entry>
+<entry>
+<key>oam_management_v4_address</key>
+<value>127.0.0.1</value>
+</entry>
+    </vfModuleOutputs>
+    <rollback> <!-- JC's doc has "vfModuleRollback" -->
+        <vnfId>skask</vnfId>
+        <vfModuleId>supercool</vfModuleId>
+        <vfModuleStackId>slowburn</vfModuleStackId>
+        <vfModuleCreated>true</vfModuleCreated>
+        <tenantId>tenantId</tenantId>
+        <cloudSiteId>cloudSiteId</cloudSiteId>
+        <msoRequest>
+            <requestId>requestId</requestId>
+            <serviceInstanceId>serviceInstanceId</serviceInstanceId>
+        </msoRequest>
+        <messageId>{{MESSAGE-ID}}</messageId> <!-- JC's doc does not have this -->
+    </rollback>
+    <messageId>{{MESSAGE-ID}}</messageId>
+</createVfModuleResponse>
+
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/createServiceInstance_genericQueryByInstance_AAIResponse_200.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/createServiceInstance_genericQueryByInstance_AAIResponse_200.xml
new file mode 100644
index 0000000..2f38a4f
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/createServiceInstance_genericQueryByInstance_AAIResponse_200.xml
@@ -0,0 +1,13 @@
+<search-results xmlns="http://org.openecomp.aai.inventory">
+      <service-instances> 
+	   <service-instance>
+         <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+         <persona-model-id>gg0e927b-6087-5574-9ef8-c5e4d5847db5</persona-model-id>
+         <persona-model-version>V1.0</persona-model-version>
+         <service-instance-name>vMOG-AKRON-1234</service-instance-name>
+         <resource-version>1462561835</resource-version>
+         <relationship-list/> 
+         <metadata/> 
+		</service-instance>
+      </service-instances> 		
+      </search-results>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getARUrlById.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getARUrlById.xml
new file mode 100644
index 0000000..e178583
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getARUrlById.xml
@@ -0,0 +1,6 @@
+<search-results xmlns="http://org.openecomp.aai.inventory">
+     <result-data>
+        <resource-type>allotted-resource</resource-type>
+        <resource-link>https://aai-ext1.test.com:8443/aai/v7/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0026%252FSW_INTERNET/allotted-resources/allotted-resource/arId-1</resource-link>
+     </result-data>
+</search-results>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogNetworkData.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogNetworkData.json
new file mode 100644
index 0000000..cab2637
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogNetworkData.json
@@ -0,0 +1,28 @@
+{
+  "serviceNetworks": [
+    {
+      "version": null,
+      "modelCustomizationUuid": "93a5f915-403f-487d-89e4-7107359635b0",
+      "modelName": "VIPR_TENANT_OAM_NET",
+      "modelInstanceName": "VIPR_TENANT_OAM_NET 1",
+      "modelUuid": "6524c8ad-dc17-44c0-ad24-08c4d2df52e6",
+      "modelVersion": "1.0",
+      "modelInvariantUuid": "b2667e06-1ec1-4a2a-a916-991b5510b603",
+      "networkResourceId": 100,
+      "created": 1484943975000,
+      "networkResource": {
+        "version": "1",
+        "id": 100,
+        "networkType": "VIPR_TENANT_OAM_NET",
+        "orchestrationMode": "HEAT",
+        "description": "manual record pointing to existing CONTRAIL30_BASIC template",
+        "templateId": 1,
+        "neutronNetworkType": "BASIC",
+        "aicVersionMin": "3.0",
+        "aicVersionMax": null,
+        "created": 1484936027000
+      },
+      "networkType": "VIPR_TENANT_OAM_NET"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesData.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesData.json
new file mode 100644
index 0000000..be0dfc8
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesData.json
@@ -0,0 +1,93 @@
+{ "serviceResources"    : {
+	"modelInfo"       : {
+		"modelName"          : "MSO Test Network",
+		"modelUuid"          : "aed5a5b7-20d3-44f7-90a3-ddbd16f14d1e",
+		"modelInvariantUuid" : "52b49b5d-3086-4ffd-b5e6-1b1e5e7e062f",
+		"modelVersion"       : null
+	},
+	"serviceVnfs": [
+		{ "modelInfo"                    : {
+			"modelName"              : "vHNF for DHV Test",
+			"modelUuid"              : "7097d8bb-f6ad-4cf7-866e-6a04c8f1b332",
+			"modelInvariantUuid"     : "6ea0b528-e303-4686-aa77-aa2fcbdccb96",
+			"modelVersion"           : "2.0",
+			"modelCustomizationUuid" : "da86dd87-43c5-458c-b226-5315b7be9ad5",
+			"modelInstanceName"      : "vHNF for DHV Test 17"
+			},
+		"toscaNodeType"            : null,
+		"nfFunction"           	: null,
+		"nfType"              		: null,
+		"nfRole"              		: null,
+		"nfNamingCode"         	: null,
+			"vfModules": [
+				{
+					"modelInfo"               : { 
+						"modelName"              : "VhnfForDhvTest..base_TEST..module-0",
+						"modelUuid"              : "ebc3d18c-3e62-4c24-bcd6-961e98701a0a",
+						"modelInvariantUuid"     : "f5696ec0-ec71-4916-bf3b-93a654efcba4",
+						"modelVersion"           : "1",
+						"modelCustomizationUuid" : "1740536a-742e-40f5-b9c8-83918849a787"
+					},		"isBase"                 : true,
+					"vfModuleLabel"          : "base_TEST",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : true
+				}
+			]
+		}
+		],
+	"serviceNetworks": [
+			{
+			"modelInfo"                : {
+				"modelName"              : "CONTRAIL_BASIC",
+				"modelUuid"              : "fe5be3a6-dbe0-46d6-bcac-44dc841a7edc",
+				"modelInvariantUuid"     : "ab07fbd8-185a-45ac-be45-db3eb02e98d5",
+				"modelVersion"           : null,
+				"modelCustomizationUuid" : "0cb9b26a-9820-48a7-86e5-16c510e993d9",
+				"modelInstanceName"      : "CONTRAIL_BASIC 5"
+		},
+			"toscaNodeType"            : null,
+			"networkType"              : null,
+			"networkTechnology"        : null,
+			"networkRole"              : null,
+			"networkScope"             : null
+		}
+		],
+	"serviceAllottedResources": [
+			{
+			"modelInfo"       : {
+				"modelName"              : "IP_MUX_Demux",
+				"modelUuid"              : "64a1a718-556b-48ce-b3b7-ed3237ccc94f",
+				"modelInvariantUuid"     : "f110ef53-a0a6-4d72-ab91-fd88a835e8c4",
+				"modelVersion"           : "2.0",
+				"modelCustomizationUuid" : "4bab0880-2f06-4aeb-87cb-3734c8e8bf93",
+				"modelInstanceName"      : "Pri_IP_MUX_Demux 1"
+			},
+			"toscaNodeType"              : null,
+			"allottedResourceType"              : "ContrailRoute",
+			"allottedResourceRole"              : null,
+			"providingServiceModelInvariantUuid"              : null,
+			"nfFunction"              : null,
+			"nfType"              : null,
+			"nfRole"              : null,
+			"nfNamingCode"              : null
+		},
+				{
+			"modelInfo"       : {
+				"modelName"              : "Service_Admin",
+				"modelUuid"              : "73501e03-ee76-4509-a8ce-96d2a9f33ee9",
+				"modelInvariantUuid"     : "462edf71-1a3c-487b-bf55-497460ab7de3",
+				"modelVersion"           : "2.0",
+				"modelCustomizationUuid" : "a896ffad-c8f9-404e-a527-7a8d0cc99ce6",
+				"modelInstanceName"      : "Pri_Service_Admin 5"
+			},
+			"toscaNodeType"              : null,
+			"allottedResourceType"              : "SecurityZone",
+			"allottedResourceRole"              : null,
+			"providingServiceModelInvariantUuid"              : null,
+			"nfFunction"              : null,
+			"nfType"              : null,
+			"nfRole"              : null,
+			"nfNamingCode"              : null
+		}
+		]
+	}}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataNoNetwork.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataNoNetwork.json
new file mode 100644
index 0000000..2003acf
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataNoNetwork.json
@@ -0,0 +1,62 @@
+{ "serviceResources"    : {
+	"modelName"          : "CMW_Service",
+	"modelUuid"          : "Cmw_123",
+	"modelInvariantUuid" : "cmw-123-456-789",
+	"modelVersion"       : null,
+	"serviceVnfs": [
+		{ "vnf"                    : {
+			"modelName"              : "MANUAL RECORD",
+			"modelUuid"              : null,
+			"modelInvariantUuid"     : "miu-vnf-15190",
+			"modelVersion"           : "1.0",
+			"modelCustomizationUuid" : "123456-789012-cmwabd",
+			"modelInstanceName"      : null,
+			"vfModules": [
+				{ "vfModule"               : { 
+					"modelName"              : "vSAMP12::base::module-0",
+					"modelUuid"              : null,
+					"modelInvariantUuid"     : "miu-1001",
+					"modelVersion"           : "1",
+					"modelCustomizationUuid" : "1001",
+					"vfModuleType"           : "Test/vSAMP12::vSAMP12::base::module-0",
+					"isBase"                 : true,
+					"vfModuleLabel"          : "base",
+					"initialCount"           : 1
+				}},
+				{ "vfModule"               : { 
+					"modelName"              : "base::module-0",
+					"modelUuid"              : null,
+					"modelInvariantUuid"     : "miu-1002",
+					"modelVersion"           : "1",
+					"modelCustomizationUuid" : "1002",
+					"vfModuleType"           : "Test/vSAMP12::base::module-0",
+					"isBase"                 : true,
+					"vfModuleLabel"          : "module-0",
+					"initialCount"           : 1
+				}},
+				{ "vfModule"               : { 
+					"modelName"              : "vSAMP12DEV::base::module-0",
+					"modelUuid"              : null,
+					"modelInvariantUuid"     : "miu-1003",
+					"modelVersion"           : "1",
+					"modelCustomizationUuid" : "f86e8800-7629-427f-b284-3dbfd04db01f",
+					"vfModuleType"           : "Test/vSAMP12::vSAMP12DEV::base::module-0",
+					"isBase"                 : true,
+					"vfModuleLabel"          : "base",
+					"initialCount"           : 0
+				}}
+			]
+		}}
+	],
+	"serviceNetworks": [],
+	"serviceAllottedResources": [
+		{ "allottedResource"       : {
+			"modelName"              : "Bruce Wayne",
+			"modelUuid"              : "123-123",
+			"modelInvariantUuid"     : "not yet implemented",
+			"modelVersion"           : "1.0",
+			"modelCustomizationUuid" : "ar-mod-custid-456-456",
+			"modelInstanceName"      : "Clark Kent"
+		}}
+	]
+	}}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataNoNetworkVnf.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataNoNetworkVnf.json
new file mode 100644
index 0000000..4364eaf
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataNoNetworkVnf.json
@@ -0,0 +1,26 @@
+{
+  "serviceResources": {
+    "modelName": "CMW_Service",
+    "modelUuid": "Cmw_123",
+    "modelInvariantUuid": "cmw-123-456-789",
+    "modelVersion": null,
+    "serviceVnfs": [],
+    "serviceNetworks": [],
+    "serviceAllottedResources": [
+      {
+        "allottedResource": {
+          "modelName": "Bruce Wayne",
+          "modelUuid": "123-123",
+          "modelInvariantUuid": "not yet implemented",
+          "modelVersion": "1.0",
+          "modelCustomizationUuid": "ar-mod-custid-456-456",
+          "modelInstanceName": "Clark Kent",
+          "toscaModelType": "undefined",
+          "allottedResourceType": "ContrailRoute",
+          "allottedResourceRole": "ALLOTTED_RESROUCE_ROLE",
+          "providingServiceModelInvariantUuid": "PROVIDING_SERVICE_MODEL_INVARIANT_UUID"
+        }
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataServiceAllotted.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataServiceAllotted.json
new file mode 100644
index 0000000..e865210
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataServiceAllotted.json
@@ -0,0 +1,84 @@
+{
+  "serviceResources": {
+    "modelInfo": {
+      "modelName": "SD-WAN",
+      "modelUuid": "ee9807ef-9814-4067-b997-5eee54c9e719",
+      "modelInvariantUuid": "7b0fafc1-83df-4590-9460-b5a8d9f9f277",
+      "modelVersion": null
+    },
+    "serviceVnfs": [],
+    "serviceNetworks": [],
+    "serviceAllottedResources": [
+      {
+        "modelInfo": {
+          "modelName": "IP_MUX_Demux",
+          "modelUuid": "64a1a718-556b-48ce-b3b7-ed3237ccc94f",
+          "modelInvariantUuid": "f110ef53-a0a6-4d72-ab91-fd88a835e8c4",
+          "modelVersion": "2.0",
+          "modelCustomizationUuid": "4bab0880-2f06-4aeb-87cb-3734c8e8bf93",
+          "modelInstanceName": "Pri_IP_MUX_Demux 1"
+        },
+        "toscaNodeType": null,
+        "allottedResourceType": "ContrailRoute",
+        "allottedResourceRole": "ContrailRoute",
+        "providingServiceModelInvariantUuid": null,
+        "nfFunction": null,
+        "nfType": null,
+        "nfRole": null,
+        "nfNamingCode": null,
+        "homingSolution": {
+          "inventoryType": "service",
+          "serviceInstanceId": "c763d462-dfe4-4577-9706-fa3a9db640be",
+          "vnfHostname": "MDTNJ01",
+          "cloudOwner": "aic",
+          "cloudRegionId": "dfwtx",
+          "aicClli": "KDTNJ01",
+          "aicVersion": "3.0",
+          "entitlementPoolList": [
+            "f1d563e8-e714-4393-8f99-cc480144a05e",
+            "j1d563e8-e714-4393-8f99-cc480144a05e"
+          ],
+          "licenseKeyGroupList": [
+            "s1d563e8-e714-4393-8f99-cc480144a05e",
+            "b1d563e8-e714-4393-8f99-cc480144a05e"
+          ]
+        }
+      },
+      {
+        "modelInfo": {
+          "modelName": "Service_Admin",
+          "modelUuid": "73501e03-ee76-4509-a8ce-96d2a9f33ee9",
+          "modelInvariantUuid": "462edf71-1a3c-487b-bf55-497460ab7de3",
+          "modelVersion": "2.0",
+          "modelCustomizationUuid": "a896ffad-c8f9-404e-a527-7a8d0cc99ce6",
+          "modelInstanceName": "Pri_Service_Admin 5"
+        },
+        "toscaNodeType": null,
+        "allottedResourceType": "SecurityZone",
+        "allottedResourceRole": "SecurityZone",
+        "providingServiceModelInvariantUuid": null,
+        "nfFunction": null,
+        "nfType": null,
+        "nfRole": null,
+        "nfNamingCode": null,
+        "homingSolution": {
+          "inventoryType": "service",
+          "serviceInstanceId": "c763d462-dfe4-4577-9706-fa3a9db640be",
+          "vnfHostname": "MDTNJ01",
+          "cloudOwner": "aic",
+          "cloudRegionId": "dfwtx",
+          "aicClli": "KDTNJ01",
+          "aicVersion": "3.0",
+          "entitlementPoolList": [
+            "f1d563e8-e714-4393-8f99-cc480144a05e",
+            "j1d563e8-e714-4393-8f99-cc480144a05e"
+          ],
+          "licenseKeyGroupList": [
+            "s1d563e8-e714-4393-8f99-cc480144a05e",
+            "b1d563e8-e714-4393-8f99-cc480144a05e"
+          ]
+        }
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataServiceInstanceOnly.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataServiceInstanceOnly.json
new file mode 100644
index 0000000..56af494
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesDataServiceInstanceOnly.json
@@ -0,0 +1,13 @@
+{
+  "serviceResources": {
+	"modelInfo"       : {
+		"modelName"          : "MSO Test Network",
+		"modelUuid"          : "aed5a5b7-20d3-44f7-90a3-ddbd16f14d1e",
+		"modelInvariantUuid" : "52b49b5d-3086-4ffd-b5e6-1b1e5e7e062f",
+		"modelVersion"       : null
+	},
+    "serviceVnfs": [],
+    "serviceNetworks": [],
+    "serviceAllottedResources": []
+  }
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesServiceNetwork.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesServiceNetwork.json
new file mode 100644
index 0000000..821bd04
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesServiceNetwork.json
@@ -0,0 +1,27 @@
+{ "serviceResources"    : {
+	"modelInfo"       : {
+		"modelName"          : "MSO Test Network",
+		"modelUuid"          : "aed5a5b7-20d3-44f7-90a3-ddbd16f14d1e",
+		"modelInvariantUuid" : "52b49b5d-3086-4ffd-b5e6-1b1e5e7e062f",
+		"modelVersion"       : null
+	},
+	"serviceVnfs": [],
+	"serviceNetworks": [
+		{
+			"modelInfo"                : {
+				"modelName"              : "CONTRAIL_BASIC",
+				"modelUuid"              : "fe5be3a6-dbe0-46d6-bcac-44dc841a7edc",
+				"modelInvariantUuid"     : "ab07fbd8-185a-45ac-be45-db3eb02e98d5",
+				"modelVersion"           : null,
+				"modelCustomizationUuid" : "0cb9b26a-9820-48a7-86e5-16c510e993d9",
+				"modelInstanceName"      : "CONTRAIL_BASIC 5"
+		},
+			"toscaNodeType"            : null,
+			"networkType"              : null,
+			"networkTechnology"        : null,
+			"networkRole"              : null,
+			"networkScope"             : null
+		}
+	],
+	"serviceAllottedResources": []
+	}}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesServiceVnf.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesServiceVnf.json
new file mode 100644
index 0000000..7893aff
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogServiceResourcesServiceVnf.json
@@ -0,0 +1,40 @@
+{ "serviceResources"    : {
+	"modelInfo"       : {
+		"modelName"          : "MSO Test Network",
+		"modelUuid"          : "aed5a5b7-20d3-44f7-90a3-ddbd16f14d1e",
+		"modelInvariantUuid" : "52b49b5d-3086-4ffd-b5e6-1b1e5e7e062f",
+		"modelVersion"       : null
+	},
+	"serviceVnfs": [
+		{ "modelInfo"                    : {
+			"modelName"              : "vHNF for DHV Test",
+			"modelUuid"              : "7097d8bb-f6ad-4cf7-866e-6a04c8f1b332",
+			"modelInvariantUuid"     : "6ea0b528-e303-4686-aa77-aa2fcbdccb96",
+			"modelVersion"           : "2.0",
+			"modelCustomizationUuid" : "da86dd87-43c5-458c-b226-5315b7be9ad5",
+			"modelInstanceName"      : "vHNF for DHV Test 17"
+			},
+		"toscaNodeType"            : null,
+		"nfFunction"           	: null,
+		"nfType"              		: null,
+		"nfRole"              		: null,
+		"nfNamingCode"         	: null,
+			"vfModules": [
+				{
+					"modelInfo"               : { 
+						"modelName"              : "VhnfForDhvTest..base_TEST..module-0",
+						"modelUuid"              : "ebc3d18c-3e62-4c24-bcd6-961e98701a0a",
+						"modelInvariantUuid"     : "f5696ec0-ec71-4916-bf3b-93a654efcba4",
+						"modelVersion"           : "1",
+						"modelCustomizationUuid" : "1740536a-742e-40f5-b9c8-83918849a787"
+					},		"isBase"                 : true,
+					"vfModuleLabel"          : "base_TEST",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : true
+				}
+			]
+		}
+		],
+	"serviceNetworks": [],
+	"serviceAllottedResources": []
+	}}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogVcpe.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogVcpe.json
new file mode 100644
index 0000000..b95e45a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogVcpe.json
@@ -0,0 +1,76 @@
+{ "serviceResources"    : {
+	"modelInfo"       : {
+		"modelName"          : "MSO Test Network",
+		"modelUuid"          : "aed5a5b7-20d3-44f7-90a3-ddbd16f14d1e",
+		"modelInvariantUuid" : "52b49b5d-3086-4ffd-b5e6-1b1e5e7e062f",
+		"modelVersion"       : null
+	},
+	"serviceVnfs": [
+		{ "modelInfo"                    : {
+			"modelName"              : "vHNF for DHV Test",
+			"modelUuid"              : "7097d8bb-f6ad-4cf7-866e-6a04c8f1b332",
+			"modelInvariantUuid"     : "6ea0b528-e303-4686-aa77-aa2fcbdccb96",
+			"modelVersion"           : "2.0",
+			"modelCustomizationUuid" : "da86dd87-43c5-458c-b226-5315b7be9ad5",
+			"modelInstanceName"      : "vHNF for DHV Test 17"
+			},
+		"toscaNodeType"            : null,
+		"nfFunction"           	: null,
+		"nfType"              		: null,
+		"nfRole"              		: null,
+		"nfNamingCode"         	: null,
+			"vfModules": [
+				{
+					"modelInfo"               : { 
+						"modelName"              : "VhnfForDhvTest..base_TEST..module-0",
+						"modelUuid"              : "ebc3d18c-3e62-4c24-bcd6-961e98701a0a",
+						"modelInvariantUuid"     : "f5696ec0-ec71-4916-bf3b-93a654efcba4",
+						"modelVersion"           : "1",
+						"modelCustomizationUuid" : "1740536a-742e-40f5-b9c8-83918849a787"
+					},		"isBase"                 : true,
+					"vfModuleLabel"          : "base_TEST",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : true
+				}
+			]
+		}
+		],
+	"serviceAllottedResources": [
+			{
+			"modelInfo"       : {
+				"modelName"              : "IP_MUX_Demux",
+				"modelUuid"              : "64a1a718-556b-48ce-b3b7-ed3237ccc94f",
+				"modelInvariantUuid"     : "f110ef53-a0a6-4d72-ab91-fd88a835e8c4",
+				"modelVersion"           : "2.0",
+				"modelCustomizationUuid" : "4bab0880-2f06-4aeb-87cb-3734c8e8bf93",
+				"modelInstanceName"      : "Pri_IP_MUX_Demux 1"
+			},
+			"toscaNodeType"              : null,
+			"allottedResourceType"              : "TunnelXConn",
+			"allottedResourceRole"              : null,
+			"providingServiceModelInvariantUuid"              : null,
+			"nfFunction"              : null,
+			"nfType"              : null,
+			"nfRole"              : null,
+			"nfNamingCode"              : null
+		},
+				{
+			"modelInfo"       : {
+				"modelName"              : "Service_Admin",
+				"modelUuid"              : "73501e03-ee76-4509-a8ce-96d2a9f33ee9",
+				"modelInvariantUuid"     : "462edf71-1a3c-487b-bf55-497460ab7de3",
+				"modelVersion"           : "2.0",
+				"modelCustomizationUuid" : "a896ffad-c8f9-404e-a527-7a8d0cc99ce6",
+				"modelInstanceName"      : "Pri_Service_Admin 5"
+			},
+			"toscaNodeType"              : null,
+			"allottedResourceType"              : "BRG",
+			"allottedResourceRole"              : null,
+			"providingServiceModelInvariantUuid"              : null,
+			"nfFunction"              : null,
+			"nfType"              : null,
+			"nfRole"              : null,
+			"nfNamingCode"              : null
+		}
+		]
+	}}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogVnfData.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogVnfData.json
new file mode 100644
index 0000000..d95b313
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCatalogVnfData.json
@@ -0,0 +1 @@
+{"serviceVnfs":[]}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCustomer.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCustomer.xml
new file mode 100644
index 0000000..6e35f24
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getCustomer.xml
@@ -0,0 +1,7 @@
+<customer xmlns="http://org.openecomp.aai.inventory/v8">
+    <global-customer-id>MCBH-1610</global-customer-id>
+    <subscriber-name>MCBH-1610</subscriber-name>
+    <resource-version>1465943440</resource-version>
+    <service-subscriptions/>
+    <relationship-list/>
+</customer>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getNetwork.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getNetwork.xml
new file mode 100644
index 0000000..32a01b6
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getNetwork.xml
@@ -0,0 +1,92 @@
+<l3-network xmlns="http://org.openecomp.aai.inventory/v8">
+   <network-id>cf82a73f-de7f-4f84-8dfc-16a487c63a36</network-id>
+   <network-name>Dev_NoBinding-2001</network-name>
+   <network-type>CONTRAIL30_BASIC</network-type>
+   <network-role>GN_EVPN_direct</network-role>
+   <network-technology>contrail</network-technology>
+   <neutron-network-id>968a47e3-e238-4158-af87-6be7f508a6c0</neutron-network-id>
+   <is-bound-to-vpn>false</is-bound-to-vpn>
+   <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+   <network-role-instance>0</network-role-instance>
+   <resource-version>1476384388</resource-version>
+   <orchestration-status>active</orchestration-status>
+   <heat-stack-id>Dev_NoBinding-2001/11c429ac-eab3-4566-a9d3-d8ca6fb4e803</heat-stack-id>
+   <contrail-network-fqdn>default-domain:IST_Automation_AAI_updated:Dev_NoBinding-2001</contrail-network-fqdn>
+   <physical-network-name/>
+   <is-provider-network>false</is-provider-network>
+   <is-shared-network>false</is-shared-network>
+   <is-external-network>false</is-external-network>
+   <subnets>
+      <subnet>
+         <subnet-id>5c559cd8-1ef2-45a8-b342-b4c9307d33ff</subnet-id>
+         <subnet-name/>
+         <neutron-subnet-id>48267a65-2209-4e10-ad44-fc30d4fcb508</neutron-subnet-id>
+         <gateway-address>218.210.11.1</gateway-address>
+         <network-start-address>218.210.11.0</network-start-address>
+         <cidr-mask>24</cidr-mask>
+         <ip-version>4</ip-version>
+         <orchestration-status>pending-update</orchestration-status>
+         <dhcp-enabled>true</dhcp-enabled>
+         <dhcp-start>218.210.11.3</dhcp-start>
+         <dhcp-end>218.210.11.64</dhcp-end>
+         <resource-version>1476384386</resource-version>
+      </subnet>
+   </subnets>
+   <relationship-list>
+      <relationship>
+         <related-to>tenant</related-to>
+         <related-link>https://aai-int1.test.openecomp.com:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/mtn6/tenants/tenant/fe4400a8e96e4caa85ccdca8a850255b</related-link>
+         <relationship-data>
+            <relationship-key>cloud-region.cloud-owner</relationship-key>
+            <relationship-value>att-aic</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>cloud-region.cloud-region-id</relationship-key>
+            <relationship-value>mtn6</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>tenant.tenant-id</relationship-key>
+            <relationship-value>fe4400a8e96e4caa85ccdca8a850255b</relationship-value>
+         </relationship-data>
+         <related-to-property>
+            <property-key>tenant.tenant-name</property-key>
+            <property-value>IST_Automation_AAI_updated</property-value>
+         </related-to-property>
+      </relationship>
+      <relationship>
+         <related-to>cloud-region</related-to>
+         <related-link>https://aai-int1.test.openecomp.com:8443/aai/v8/cloud-infrastructure/cloud-regions/cloud-region/att-aic/mtn6</related-link>
+         <relationship-data>
+            <relationship-key>cloud-region.cloud-owner</relationship-key>
+            <relationship-value>att-aic</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>cloud-region.cloud-region-id</relationship-key>
+            <relationship-value>mtn6</relationship-value>
+         </relationship-data>
+         <related-to-property>
+            <property-key>cloud-region.owner-defined-type</property-key>
+         </related-to-property>
+      </relationship>
+      <relationship>
+         <related-to>service-instance</related-to>
+         <related-link>https://aai-int1.test.openecomp.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/ffdfebef-9cf0-4be4-ab29-0380f0da0341</related-link>
+         <relationship-data>
+            <relationship-key>customer.global-customer-id</relationship-key>
+            <relationship-value>MSO_1610_dev</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>service-subscription.service-type</relationship-key>
+            <relationship-value>MSO-dev-service-type</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>service-instance.service-instance-id</relationship-key>
+            <relationship-value>ffdfebef-9cf0-4be4-ab29-0380f0da0341</relationship-value>
+         </relationship-data>
+         <related-to-property>
+            <property-key>service-instance.service-instance-name</property-key>
+            <property-value>dm4251_SERVICE1</property-value>
+         </related-to-property>
+      </relationship>
+   </relationship-list>
+</l3-network>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getParentSIUrlById.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getParentSIUrlById.xml
new file mode 100644
index 0000000..c29133e
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getParentSIUrlById.xml
@@ -0,0 +1,6 @@
+<search-results xmlns="http://org.openecomp.aai.inventory">
+     <result-data>
+        <resource-type>service-instance</resource-type>
+        <resource-link>https://aai-ext1.test.com:8443/aai/v7/business/customers/customer/SDN-ETHERNET-INTERNET/service-subscriptions/service-subscription/123456789/service-instances/service-instance/MIS%252F1604%252F0027%252FSW_INTERNET</resource-link>
+     </result-data>
+</search-results>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getParentServiceInstance.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getParentServiceInstance.xml
new file mode 100644
index 0000000..bc810c6
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/getParentServiceInstance.xml
@@ -0,0 +1,30 @@
+<service-instance>
+   <service-instance-id>MIS/1604/0027/SW_INTERNET</service-instance-id>
+   <resource-version>123456789</resource-version>
+   <relationship-list>
+      <relationship>
+         <related-to>cvlan-tag</related-to>
+         <related-link>https://aai-ext1.test.com:8443/aai/v2/network/vces/vce/832bace2-3fb0-49e0-a6a4-07c47223c535/port-groups/port-group/slcp1447vbc.ipag/cvlan-tags/cvlan-tag/2003/</related-link>
+         <relationship-data>
+            <relationship-key>cvlan-tag.cvlan-tag</relationship-key>
+            <relationship-value>2003</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>port-group.interface-id</relationship-key>
+            <relationship-value>slcp1447vbc.ipag</relationship-value>
+         </relationship-data>
+         <relationship-data>
+            <relationship-key>vce.vnf-id</relationship-key>
+            <relationship-value>832bace2-3fb0-49e0-a6a4-07c47223c535</relationship-value>
+         </relationship-data>
+      </relationship>
+      <relationship>
+         <related-to>vce</related-to>
+         	<related-link>https://aai-ext1.test.com:8443/aai/v2/network/vces/vce/832bace2-3fb0-49e0-a6a4-07c47223c535/</related-link>
+         <relationship-data>
+            <relationship-key>vce.vnf-id</relationship-key>
+            <relationship-value>832bace2-3fb0-49e0-a6a4-07c47223c535</relationship-value>
+         </relationship-data>
+      </relationship>
+   </relationship-list>
+</service-instance>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/request.json
new file mode 100644
index 0000000..9141d50
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/request.json
@@ -0,0 +1,40 @@
+{
+	"requestDetails":
+		{
+			"modelInfo":
+				{
+					"modelType":"service",
+					"modelInvariantUuid":"uuid-miu-svc-011-abcdef",
+					"modelVersionId":"ASDC_TOSCA_UUID",
+					"modelName":"SIModelName1",
+					"modelVersion":"2"
+				},
+			"subscriberInfo":
+				{
+					"globalSubscriberId":"MCBH-1610",
+					"subscriberName":"Kaneohe"
+				},
+			"requestInfo":
+				{
+					"instanceName":"VCPE1",
+					"source":"VID",
+					"suppressRollback":"false",
+					"productFamilyId":"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb"
+				},
+			"cloudConfiguration":
+				{
+					"lcpCloudRegionId":"mdt1",
+					"tenantId":"8b1df54faa3b49078e3416e21370a3ba"
+				},
+			"requestParameters":
+				{
+					"subscriptionServiceType":"vcpesvc",
+					"aLaCarte":"false",
+					"userParams":
+						{
+							"BRG_WAN_MAC_Address" : "brgmac"
+						}
+				}
+				
+		}
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/serviceDecompositionATMFW.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/serviceDecompositionATMFW.json
new file mode 100644
index 0000000..bc54c55
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/serviceDecompositionATMFW.json
@@ -0,0 +1,110 @@
+{
+"serviceResources" : {
+    "modelInfo" : {
+      "modelName" : "CMW_Service",
+      "modelUuid" : "",
+      "modelInvariantId" : "cmw-123-456-789",
+      "modelVersion" : "",
+      "modelCustomizationUuid" : "",
+      "modelInstanceName" : "",
+      "modelCustomizationName" : "",
+      "modelVersionId" : "Cmw_123",
+      "modelType" : ""
+    },
+    "serviceInstanceData" : {
+      "instanceId" : "ff5256d2-5a33-55df-13ab-12abad84e7ff"
+    },
+    "serviceNetworks" : [ {
+      "modelInfo" : {
+        "modelName" : "CONTRAIL30_BASIC",
+        "modelUuid" : "",
+        "modelInvariantId" : "not yet implemented",
+        "modelVersion" : "1.0",
+        "modelCustomizationUuid" : "z_network_123",
+        "modelInstanceName" : "",
+        "modelCustomizationName" : "",
+        "modelVersionId" : "mod-inst-uuid-123",
+        "modelType" : "network"
+      },
+      "instanceData" : { },
+      "networkType" : "CONTRAIL30_BASIC"
+    } ],
+    "serviceVnfs" : [ {
+      "modelInfo" : {
+        "modelName" : "vSAMP12",
+        "modelUuid" : "",
+        "modelInvariantId" : "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+        "modelVersion" : "1.0",
+        "modelCustomizationUuid" : "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+        "modelInstanceName" : "",
+        "modelCustomizationName" : "",
+        "modelVersionId" : "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+        "modelType" : "vnf"
+      },
+      "instanceData" : { },
+      "vfModules" : [ {
+        "modelInfo" : {
+          "modelName" : "vSAMP12::base::module-0",
+          "modelUuid" : "",
+          "modelInvariantId" : "miu-1001",
+          "modelVersion" : "1",
+          "modelCustomizationUuid" : "1001",
+          "modelInstanceName" : "",
+          "modelCustomizationName" : "",
+          "modelVersionId" : "",
+          "modelType" : "vfModule"
+        },
+        "instanceData" : { },
+        "hasVolumeGroup" : false,
+        "isBase" : true,
+        "initialCount" : 1
+      }, {
+        "modelInfo" : {
+          "modelName" : "base::module-0",
+          "modelUuid" : "",
+          "modelInvariantId" : "miu-1002",
+          "modelVersion" : "1",
+          "modelCustomizationUuid" : "1002",
+          "modelInstanceName" : "",
+          "modelCustomizationName" : "",
+          "modelVersionId" : "",
+          "modelType" : "vfModule"
+        },
+        "instanceData" : { },
+        "hasVolumeGroup" : false,
+        "isBase" : true,
+        "initialCount" : 1
+      }, {
+        "modelInfo" : {
+          "modelName" : "vSAMP12DEV::base::module-0",
+          "modelUuid" : "",
+          "modelInvariantId" : "miu-1003",
+          "modelVersion" : "1",
+          "modelCustomizationUuid" : "f86e8800-7629-427f-b284-3dbfd04db01f",
+          "modelInstanceName" : "",
+          "modelCustomizationName" : "",
+          "modelVersionId" : "",
+          "modelType" : "vfModule"
+        },
+        "instanceData" : { },
+        "hasVolumeGroup" : false,
+        "isBase" : true,
+        "initialCount" : 0
+      } ]
+    } ],
+    "serviceAllottedResources" : [ {
+      "modelInfo" : {
+        "modelName" : "Bruce Wayne",
+        "modelUuid" : "",
+        "modelInvariantId" : "not yet implemented",
+        "modelVersion" : "1.0",
+        "modelCustomizationUuid" : "ar-mod-custid-456-456",
+        "modelInstanceName" : "Clark Kent",
+        "modelCustomizationName" : "",
+        "modelVersionId" : "123-123",
+        "modelType" : "allottedResource"
+      },
+      "instanceData" : { }
+    } ]
+  }
+}
\ No newline at end of file
diff --git a/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseAAI.java b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseAAI.java
index 06437fe..a9ec384 100644
--- a/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseAAI.java
+++ b/bpmn/MSOMockServer/src/main/java/org/openecomp/mso/bpmn/mock/StubResponseAAI.java
@@ -34,6 +34,7 @@
 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
 
+
 /**
  * Reusable Mock StubResponses for AAI Endpoints
  *
@@ -58,6 +59,14 @@
 	/**
 	 * Allotted Resource Mock StubResponses below
 	 */
+	public static void MockGetAllottedResource(String globalCustId, String subscriptionType, String serviceInstanceId, String allottedResourceId, String responseFile) {
+		stubFor(get(urlMatching("/aai/v[0-9]+/business/customers/customer/" + globalCustId + "/service-subscriptions/service-subscription/" + subscriptionType + "/service-instances/service-instance/" + serviceInstanceId + "/allotted-resources/allotted-resource/" + allottedResourceId))
+				.willReturn(aResponse()
+						.withStatus(200)
+						.withHeader("Content-Type", "text/xml")
+						.withBodyFile(responseFile)));
+	}
+	
 	public static void MockPutAllottedResource(String globalCustId, String subscriptionType, String serviceInstanceId, String allottedResourceId) {
 		stubFor(put(urlMatching("/aai/v[0-9]+/business/customers/customer/" + globalCustId + "/service-subscriptions/service-subscription/" + subscriptionType + "/service-instances/service-instance/" + serviceInstanceId + "/allotted-resources/allotted-resource/" + allottedResourceId))
 				.willReturn(aResponse()
@@ -69,6 +78,26 @@
 				.willReturn(aResponse()
 						.withStatus(500)));
 	}
+	
+	public static void MockDeleteAllottedResource(String globalCustId, String subscriptionType, String serviceInstanceId, String allottedResourceId, String resourceVersion) {
+		stubFor(delete(urlMatching("/aai/v[0-9]+/business/customers/customer/" + globalCustId + "/service-subscriptions/service-subscription/" + subscriptionType + "/service-instances/service-instance/" + serviceInstanceId + "/allotted-resources/allotted-resource/" + allottedResourceId + "[?]resource-version=" + resourceVersion))
+				.willReturn(aResponse()
+						.withStatus(204)));
+	}
+	
+	public static void MockPatchAllottedResource(String globalCustId, String subscriptionType, String serviceInstanceId, String allottedResourceId) {
+		stubFor(patch(urlMatching("/aai/v[0-9]+/business/customers/customer/" + globalCustId + "/service-subscriptions/service-subscription/" + subscriptionType + "/service-instances/service-instance/" + serviceInstanceId + "/allotted-resources/allotted-resource/" + allottedResourceId))
+				.willReturn(aResponse()
+						.withStatus(200)));
+	}
+
+	public static void MockQueryAllottedResourceById(String allottedResourceId, String responseFile){
+		stubFor(get(urlMatching("/aai/v[0-9]+/search/nodes-query[?]search-node-type=allotted-resource[&]filter=id:EQUALS:" + allottedResourceId))
+				.willReturn(aResponse()
+						.withStatus(200)
+						.withHeader("Content-Type", "text/xml")
+						.withBodyFile(responseFile)));
+	}
 
 
 	/**
@@ -199,7 +228,6 @@
 						.withStatus(500)));
 	}
 
-
 	/**
 	 * Service-Subscription Mock StubResponses below
 	 */
@@ -795,6 +823,14 @@
 						.withBodyFile(responseFile)));
 	}
 	
+	public static void MockGetVfModuleByNameWithDepth(String vnfId, String vfModuleName, int depth, String responseFile, int statusCode) {
+		stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/" + vnfId + "/vf-modules/vf-module[?]vf-module-name=" + vfModuleName + "[?]depth=" + depth))
+				.willReturn(aResponse()
+						.withStatus(statusCode)
+						.withHeader("Content-Type", "text/xml")
+						.withBodyFile(responseFile)));
+	}
+	
 	public static void MockGetVfModuleIdNoResponse(String vnfId, String requestContaining, String vfModuleId) {
 		stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/" + vnfId + "/vf-modules/vf-module/" + vfModuleId))
 				.withRequestBody(containing(requestContaining))
diff --git a/mso-api-handlers/mso-api-handler-infra/WebContent/WEB-INF/web.xml b/mso-api-handlers/mso-api-handler-infra/WebContent/WEB-INF/web.xml
index cd4a560..b8ce1a6 100644
--- a/mso-api-handlers/mso-api-handler-infra/WebContent/WEB-INF/web.xml
+++ b/mso-api-handlers/mso-api-handler-infra/WebContent/WEB-INF/web.xml
@@ -85,6 +85,7 @@
 	    <url-pattern>/properties/*</url-pattern>
 		<url-pattern>/api-docs/*</url-pattern>
 		<url-pattern>/tasks/*</url-pattern>
+		<url-pattern>/e2eServiceInstances/*</url-pattern>
   	</servlet-mapping>
   
   <!-- To be replaced by AAF in the future, when Camunda scripts replacing the BPEL scripts completely -->
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java
index 46a7d43..6b6cfc3 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java
@@ -55,7 +55,7 @@
 import org.openecomp.mso.requestsdb.RequestsDatabase;
 import org.openecomp.mso.utils.UUIDChecker;
 
-@Path("/")
+@Path("/e2eServiceInstances")
 public class E2EServiceInstances {
 
 	private HashMap<String, String> instanceIdMap = new HashMap<String,String>();
@@ -67,7 +67,7 @@
 	}
 
 	@POST
-	@Path("e2eServiceInstances/{version:[vV][2-3]}")
+	@Path("/{version:[vV][3-5]}")
 	@Consumes(MediaType.APPLICATION_JSON)
 	@Produces(MediaType.APPLICATION_JSON)
 	public Response createE2EServiceInstance(String request, @PathParam("version") String version) {
@@ -78,7 +78,7 @@
 	}
 
 	@DELETE
-	@Path("e2eServiceInstances/{version:[vV][2-3]}/{serviceId}")
+	@Path("/{version:[vV][3-5]}/{serviceId}")
 	@Consumes(MediaType.APPLICATION_JSON)
 	@Produces(MediaType.APPLICATION_JSON)
 	public Response deleteE2EServiceInstance(String request, @PathParam("version") String version) {
diff --git a/mso-catalog-db/src/main/resources/VnfResourceCustomization.hbm.xml b/mso-catalog-db/src/main/resources/VnfResourceCustomization.hbm.xml
index a3e738b..b068e66 100644
--- a/mso-catalog-db/src/main/resources/VnfResourceCustomization.hbm.xml
+++ b/mso-catalog-db/src/main/resources/VnfResourceCustomization.hbm.xml
@@ -40,9 +40,9 @@
 		
 		<property name="created" type="timestamp" generated="insert" update="false" insert="false" column="CREATION_TIMESTAMP" not-null="true"/>
 		
-		<set name="serviceResourceCustomizations" inverse="true" cascade="all">
-            <key column="SERVICE_MODEL_UUID" not-null="true" />
-            <one-to-many class="ServiceToResourceCustomization" />
+		<set name="vfModuleCustomizations" inverse="true" cascade="all">
+            <key column="VNF_RESOURCE_MODEL_UUID" not-null="true" />
+            <one-to-many class="VnfResCustomToVfModuleCustom" />
         </set>
 	</class>
 </hibernate-mapping>
diff --git a/packages/arquillian-unit-tests/src/test/resources/docker/mso/mso-docker.json b/packages/arquillian-unit-tests/src/test/resources/docker/mso/mso-docker.json
index 0b2c7aa..5552efe 100644
--- a/packages/arquillian-unit-tests/src/test/resources/docker/mso/mso-docker.json
+++ b/packages/arquillian-unit-tests/src/test/resources/docker/mso/mso-docker.json
@@ -169,6 +169,7 @@
             "logDebugUpdateNetworkInstanceInfra": "false",
             "aaiEndpoint": "http://mso:8080/aai-emul",
             "adaptersCompletemsoprocessEndpoint": "http://mso:8080/CompleteMsoProcess",
+            "adaptersNamespace": "http://org.openecomp.mso",
             "adaptersDbEndpoint": "http://mso:8080/dbadapters/RequestsDbAdapter",
             "adaptersSdncEndpoint": "http://mso:8080/adapters/SDNCAdapter",
             "adaptersTenantEndpoint": "http://mso:8080/tenants/TenantAdapter",
@@ -217,4 +218,4 @@
     {
         "mso-config": "~> 1.0.0"
     }
-}
\ No newline at end of file
+}
diff --git a/packages/docker/src/main/docker/docker-files/Dockerfile.mso-arquillian b/packages/docker/src/main/docker/docker-files/Dockerfile.mso-arquillian
index c279597..6dfdfa3 100644
--- a/packages/docker/src/main/docker/docker-files/Dockerfile.mso-arquillian
+++ b/packages/docker/src/main/docker/docker-files/Dockerfile.mso-arquillian
@@ -77,6 +77,8 @@
 RUN echo "JAVA_OPTS=\"\$JAVA_OPTS -Xms64m -Xmx4g -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=1g -Djboss.bind.address=0.0.0.0 -Djboss.bind.address.management=0.0.0.0 -Dmso.db=MARIADB -Dmso.config.path=/etc/mso/config.d/ -javaagent:/tmp/jacoco/lib/jacocoagent.jar=destfile=/shared/jacoco-it.exec,dumponexit=true,append=false,includes=com.att.*:org.openecomp.*\"" >> $JBOSS_HOME/bin/standalone.conf
 RUN echo "LAUNCH_JBOSS_IN_BACKGROUND=true" >> $JBOSS_HOME/bin/standalone.conf
 
+RUN mkdir -p /etc/mso/config.d/ASDC && chown -R jboss:jboss /etc/mso/config.d/ASDC && chmod u+xrw /etc/mso/config.d/ASDC
+
 ### Open Ports
 EXPOSE 8080 9990
 
diff --git a/packages/docker/src/main/docker/docker-files/Dockerfile.mso-chef-final b/packages/docker/src/main/docker/docker-files/Dockerfile.mso-chef-final
index 16d062e..2e227be 100644
--- a/packages/docker/src/main/docker/docker-files/Dockerfile.mso-chef-final
+++ b/packages/docker/src/main/docker/docker-files/Dockerfile.mso-chef-final
@@ -79,6 +79,8 @@
 
 COPY ./maven/artifacts/* $JBOSS_HOME/standalone/deployments/
 
+RUN mkdir -p /etc/mso/config.d/ASDC && chown -R jboss:jboss /etc/mso/config.d/ASDC && chmod u+xrw /etc/mso/config.d/ASDC
+
 ### Open Ports
 EXPOSE 8080
 
