Merge "add junit coverage"
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java
index d39da5e..603e11d 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java
@@ -1250,7 +1250,7 @@
                 || requestAction.equalsIgnoreCase("activateFabricConfiguration")
                 || requestAction.equalsIgnoreCase("recreateInstance")
                 || requestAction.equalsIgnoreCase("replaceInstance")
-                || requestAction.equalsIgnoreCase("upgradeInstance")) {
+                || requestAction.equalsIgnoreCase("upgradeInstance") || requestAction.equalsIgnoreCase("healthCheck")) {
             return getGBBMacroExistingService(executeBB, lookupKeyMap, bbName, requestAction,
                     requestDetails.getCloudConfiguration());
         }
@@ -1564,6 +1564,9 @@
                     break;
                 }
             }
+        } else if (bbName.equals("HealthCheckBB")
+                && (VNF).equalsIgnoreCase(executeBB.getBuildingBlock().getBpmnScope())) {
+            this.setisHelmforHealthCheckBB(service, serviceInstance, gBB);
         }
         if (executeBB.getWorkflowResourceIds() != null) {
             parameter.setResourceId(executeBB.getWorkflowResourceIds().getNetworkCollectionId());
@@ -2112,6 +2115,28 @@
         return collection;
     }
 
+    private void setisHelmforHealthCheckBB(Service service, ServiceInstance serviceInstance, GeneralBuildingBlock gBB) {
+        for (GenericVnf vnf : serviceInstance.getVnfs()) {
+            for (VfModule vfModule : vnf.getVfModules()) {
+                String vnfModelCustomizationUUID =
+                        this.bbInputSetupUtils.getAAIGenericVnf(vnf.getVnfId()).getModelCustomizationId();
+                ModelInfo vnfModelInfo = new ModelInfo();
+                vnfModelInfo.setModelCustomizationUuid(vnfModelCustomizationUUID);
+                this.mapCatalogVnf(vnf, vnfModelInfo, service);
+                String vfModuleCustomizationUUID = this.bbInputSetupUtils
+                        .getAAIVfModule(vnf.getVnfId(), vfModule.getVfModuleId()).getModelCustomizationId();
+                ModelInfo vfModuleModelInfo = new ModelInfo();
+                vfModuleModelInfo.setModelCustomizationId(vfModuleCustomizationUUID);
+                this.mapCatalogVfModule(vfModule, vfModuleModelInfo, service, vnfModelCustomizationUUID);
+                if (vfModule.getModelInfoVfModule() != null && vfModule.getModelInfoVfModule().getModelName() != null
+                        && vfModule.getModelInfoVfModule().getModelName().contains("helm")) {
+                    gBB.getRequestContext().setIsHelm(true);
+                    break;
+                }
+            }
+        }
+    }
+
     protected void mapL3Networks(List<AAIResourceUri> list, List<L3Network> l3Networks) {
         for (AAIResourceUri aaiResourceUri : list) {
             l3Networks.add(this.mapL3Network(aaiResourceUri));
diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/HealthCheckBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/HealthCheckBB.bpmn
index 8272bd3..fad2e55 100755
--- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/HealthCheckBB.bpmn
+++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/HealthCheckBB.bpmn
@@ -1,30 +1,29 @@
 <?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:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1bvx7yi" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.0.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_0gwymqy" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.7.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.14.0">
   <bpmn:process id="HealthCheckBB" name="HealthCheckBB" isExecutable="true">
-    <bpmn:startEvent id="StartEvent_1" name="HealthCheckBB_start">
-      <bpmn:outgoing>Flow_0gd6hy6</bpmn:outgoing>
+    <bpmn:startEvent id="Event_0rgusxn" name="HealthCheckBB_start">
+      <bpmn:outgoing>Flow_0udh4cd</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:endEvent id="Event_1dklvvk" name="HealthCheckBB_end">
-      <bpmn:incoming>Flow_0xiyno7</bpmn:incoming>
+    <bpmn:endEvent id="Event_0o1nl3y" name="HealthCheckBB_end">
+      <bpmn:incoming>Flow_0n17e0q</bpmn:incoming>
+      <bpmn:incoming>Flow_131rwms</bpmn:incoming>
     </bpmn:endEvent>
-    <bpmn:sequenceFlow id="Flow_0gd6hy6" sourceRef="StartEvent_1" targetRef="Activity_11hkwkn" />
-    <bpmn:subProcess id="Activity_1pto2qh" name="Error Handling&#10;&#10;" triggeredByEvent="true">
-      <bpmn:startEvent id="Event_0929aqj">
-        <bpmn:outgoing>Flow_05rbrsm</bpmn:outgoing>
-        <bpmn:errorEventDefinition id="ErrorEventDefinition_0k0ly65" />
+    <bpmn:subProcess id="Activity_0tw4ak3" name="Error Handling&#10;&#10;" triggeredByEvent="true">
+      <bpmn:startEvent id="Event_1v6jbfd">
+        <bpmn:outgoing>Flow_03ogqmx</bpmn:outgoing>
+        <bpmn:errorEventDefinition id="ErrorEventDefinition_1xw7dq4" />
       </bpmn:startEvent>
-      <bpmn:endEvent id="Event_1s698ql">
-        <bpmn:incoming>Flow_05rbrsm</bpmn:incoming>
-        <bpmn:terminateEventDefinition id="TerminateEventDefinition_0mn6xgi" />
+      <bpmn:endEvent id="Event_0wwzune">
+        <bpmn:incoming>Flow_03ogqmx</bpmn:incoming>
+        <bpmn:terminateEventDefinition id="TerminateEventDefinition_0c07ott" />
       </bpmn:endEvent>
-      <bpmn:sequenceFlow id="Flow_05rbrsm" sourceRef="Event_0929aqj" targetRef="Event_1s698ql" />
+      <bpmn:sequenceFlow id="Flow_03ogqmx" sourceRef="Event_1v6jbfd" targetRef="Event_0wwzune" />
     </bpmn:subProcess>
-    <bpmn:serviceTask id="Activity_11hkwkn" name="Prepare Cnf Adapter request" camunda:expression="${CnfHealthCheckTasks.prepareCnfAdaperRequest(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
-      <bpmn:incoming>Flow_0gd6hy6</bpmn:incoming>
-      <bpmn:outgoing>Flow_1aqdd5k</bpmn:outgoing>
+    <bpmn:serviceTask id="Activity_0pnb21p" name="Prepare Cnf Adapter request" camunda:expression="${CnfHealthCheckTasks.prepareCnfAdaperRequest(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+      <bpmn:incoming>Flow_0jxw1lb</bpmn:incoming>
+      <bpmn:outgoing>Flow_0uoe9ga</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:sequenceFlow id="Flow_1aqdd5k" sourceRef="Activity_11hkwkn" targetRef="Activity_08mgs1k" />
-    <bpmn:callActivity id="Activity_08mgs1k" name="Call CNFAdapterAsyncCall" calledElement="CNFAdapterAsyncCall">
+    <bpmn:callActivity id="Activity_07txikn" name="Call CNFAdapterAsyncCall" calledElement="CNFAdapterAsyncCall">
       <bpmn:extensionElements>
         <camunda:in source="apiPath" target="apiPath" />
         <camunda:in source="cnfRequestPayload" target="cnfRequestPayload" />
@@ -35,67 +34,100 @@
         <camunda:in source="messageType" target="messageType" />
         <camunda:in source="true" target="isDebugLogEnabled" />
       </bpmn:extensionElements>
-      <bpmn:incoming>Flow_1aqdd5k</bpmn:incoming>
-      <bpmn:outgoing>Flow_1jeui7e</bpmn:outgoing>
+      <bpmn:incoming>Flow_0uoe9ga</bpmn:incoming>
+      <bpmn:outgoing>Flow_0t6f6l8</bpmn:outgoing>
     </bpmn:callActivity>
-    <bpmn:serviceTask id="Activity_0w4hy3d" name="Process Response" camunda:expression="${CnfHealthCheckTasks.processAsyncResponse(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
-      <bpmn:incoming>Flow_1jeui7e</bpmn:incoming>
-      <bpmn:outgoing>Flow_0xiyno7</bpmn:outgoing>
+    <bpmn:serviceTask id="Activity_1qd7k3z" name="Process Response" camunda:expression="${CnfHealthCheckTasks.processAsyncResponse(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+      <bpmn:incoming>Flow_0t6f6l8</bpmn:incoming>
+      <bpmn:outgoing>Flow_0n17e0q</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:sequenceFlow id="Flow_0xiyno7" sourceRef="Activity_0w4hy3d" targetRef="Event_1dklvvk" />
-    <bpmn:sequenceFlow id="Flow_1jeui7e" sourceRef="Activity_08mgs1k" targetRef="Activity_0w4hy3d" />
+    <bpmn:exclusiveGateway id="Gateway_07e5xls" name="Check If Is Helm" default="Flow_131rwms">
+      <bpmn:incoming>Flow_0udh4cd</bpmn:incoming>
+      <bpmn:outgoing>Flow_131rwms</bpmn:outgoing>
+      <bpmn:outgoing>Flow_0jxw1lb</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="Flow_0udh4cd" sourceRef="Event_0rgusxn" targetRef="Gateway_07e5xls" />
+    <bpmn:sequenceFlow id="Flow_0n17e0q" sourceRef="Activity_1qd7k3z" targetRef="Event_0o1nl3y" />
+    <bpmn:sequenceFlow id="Flow_131rwms" name="No Helm" sourceRef="Gateway_07e5xls" targetRef="Event_0o1nl3y" />
+    <bpmn:sequenceFlow id="Flow_0jxw1lb" name="Yes Helm" sourceRef="Gateway_07e5xls" targetRef="Activity_0pnb21p">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${execution.getVariable("isHelm")}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="Flow_0uoe9ga" sourceRef="Activity_0pnb21p" targetRef="Activity_07txikn" />
+    <bpmn:sequenceFlow id="Flow_0t6f6l8" sourceRef="Activity_07txikn" targetRef="Activity_1qd7k3z" />
   </bpmn:process>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="HealthCheckBB">
-      <bpmndi:BPMNEdge id="Flow_1jeui7e_di" bpmnElement="Flow_1jeui7e">
-        <di:waypoint x="600" y="120" />
-        <di:waypoint x="680" y="120" />
+      <bpmndi:BPMNEdge id="Flow_0udh4cd_di" bpmnElement="Flow_0udh4cd">
+        <di:waypoint x="218" y="150" />
+        <di:waypoint x="245" y="150" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_0xiyno7_di" bpmnElement="Flow_0xiyno7">
-        <di:waypoint x="780" y="120" />
-        <di:waypoint x="842" y="120" />
+      <bpmndi:BPMNEdge id="Flow_0n17e0q_di" bpmnElement="Flow_0n17e0q">
+        <di:waypoint x="780" y="150" />
+        <di:waypoint x="870" y="150" />
+        <di:waypoint x="870" y="202" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_1aqdd5k_di" bpmnElement="Flow_1aqdd5k">
-        <di:waypoint x="400" y="120" />
-        <di:waypoint x="500" y="120" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_0gd6hy6_di" bpmnElement="Flow_0gd6hy6">
-        <di:waypoint x="218" y="120" />
-        <di:waypoint x="300" y="120" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="Event_1dklvvk_di" bpmnElement="Event_1dklvvk">
-        <dc:Bounds x="842" y="102" width="36" height="36" />
+      <bpmndi:BPMNEdge id="Flow_131rwms_di" bpmnElement="Flow_131rwms">
+        <di:waypoint x="270" y="175" />
+        <di:waypoint x="270" y="220" />
+        <di:waypoint x="852" y="220" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="820" y="145" width="85" height="27" />
+          <dc:Bounds x="264" y="195" width="43" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_0jxw1lb_di" bpmnElement="Flow_0jxw1lb">
+        <di:waypoint x="295" y="150" />
+        <di:waypoint x="350" y="150" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="299" y="132" width="47" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_0uoe9ga_di" bpmnElement="Flow_0uoe9ga">
+        <di:waypoint x="450" y="150" />
+        <di:waypoint x="500" y="150" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_0t6f6l8_di" bpmnElement="Flow_0t6f6l8">
+        <di:waypoint x="600" y="150" />
+        <di:waypoint x="680" y="150" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Event_0rgusxn_di" bpmnElement="Event_0rgusxn">
+        <dc:Bounds x="182" y="132" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="156" y="175" width="90" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
-        <dc:Bounds x="182" y="102" width="36" height="36" />
+      <bpmndi:BPMNShape id="Event_0o1nl3y_di" bpmnElement="Event_0o1nl3y">
+        <dc:Bounds x="852" y="202" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="156" y="145" width="90" height="27" />
+          <dc:Bounds x="831" y="245" width="84" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_11hkwkn_di" bpmnElement="Activity_11hkwkn">
-        <dc:Bounds x="300" y="80" width="100" height="80" />
+      <bpmndi:BPMNShape id="Activity_0pnb21p_di" bpmnElement="Activity_0pnb21p">
+        <dc:Bounds x="350" y="110" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_0f7poou_di" bpmnElement="Activity_08mgs1k">
-        <dc:Bounds x="500" y="80" width="100" height="80" />
+      <bpmndi:BPMNShape id="Activity_07txikn_di" bpmnElement="Activity_07txikn">
+        <dc:Bounds x="500" y="110" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_0w4hy3d_di" bpmnElement="Activity_0w4hy3d">
-        <dc:Bounds x="680" y="80" width="100" height="80" />
+      <bpmndi:BPMNShape id="Activity_1qd7k3z_di" bpmnElement="Activity_1qd7k3z">
+        <dc:Bounds x="680" y="110" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_1pto2qh_di" bpmnElement="Activity_1pto2qh" isExpanded="true">
-        <dc:Bounds x="280" y="250" width="460" height="135" />
+      <bpmndi:BPMNShape id="Gateway_07e5xls_di" bpmnElement="Gateway_07e5xls" isMarkerVisible="true">
+        <dc:Bounds x="245" y="125" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="230" y="95" width="81" height="14" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="Flow_05rbrsm_di" bpmnElement="Flow_05rbrsm">
-        <di:waypoint x="398" y="324" />
-        <di:waypoint x="632" y="324" />
+      <bpmndi:BPMNShape id="Activity_0tw4ak3_di" bpmnElement="Activity_0tw4ak3" isExpanded="true">
+        <dc:Bounds x="280" y="280" width="460" height="135" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Flow_03ogqmx_di" bpmnElement="Flow_03ogqmx">
+        <di:waypoint x="398" y="354" />
+        <di:waypoint x="632" y="354" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="Event_0929aqj_di" bpmnElement="Event_0929aqj">
-        <dc:Bounds x="362" y="306" width="36" height="36" />
+      <bpmndi:BPMNShape id="Event_1v6jbfd_di" bpmnElement="Event_1v6jbfd">
+        <dc:Bounds x="362" y="336" width="36" height="36" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_1s698ql_di" bpmnElement="Event_1s698ql">
-        <dc:Bounds x="632" y="306" width="36" height="36" />
+      <bpmndi:BPMNShape id="Event_0wwzune_di" bpmnElement="Event_0wwzune">
+        <dc:Bounds x="632" y="336" width="36" height="36" />
       </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AnNssmfutils.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AnNssmfutils.groovy
index f17bfc2..71dd9b1 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AnNssmfutils.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AnNssmfutils.groovy
@@ -254,7 +254,7 @@
 	
 	//TNFH slice profile instance creation
 	TNFH_sliceProfileInstance.setServiceInstanceId(TNFH_sliceProfileInstanceId)
-	sliceInstanceName = "sliceprofile _ "+TNFH_sliceProfileId
+	sliceInstanceName = "sliceprofile_"+TNFH_sliceProfileId
 	TNFH_sliceProfileInstance.setServiceInstanceName(sliceInstanceName)
 	serviceType = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "sST")
 	TNFH_sliceProfileInstance.setServiceType(serviceType)
@@ -271,7 +271,7 @@
 	
 	//TNMH slice profile instance creation
 	TNMH_sliceProfileInstance.setServiceInstanceId(TNMH_sliceProfileInstanceId)
-	sliceInstanceName = "sliceprofile _ "+TNMH_sliceProfileId
+	sliceInstanceName = "sliceprofile_"+TNMH_sliceProfileId
 	TNMH_sliceProfileInstance.setServiceInstanceName(sliceInstanceName)
 	serviceType = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "sST")
 	TNMH_sliceProfileInstance.setServiceType(serviceType)
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy
index 5d24343..2aaec9f 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy
@@ -141,7 +141,11 @@
 		execution.setVariable("relatedSPs", getRelatedInstancesByRole(execution, ROLE_SLICE_PROFILE,KEY_SLICE_PROFILE, anSliceProfileId))
 
 		Map<String,ServiceInstance> relatedNssis = new HashMap<>()
-		execution.setVariable("relatedNssis", getRelatedInstancesByRole(execution, ROLE_NSSI,KEY_NSSI, anNssiId))
+                relatedNssis = getRelatedInstancesByRole(execution, ROLE_NSSI,KEY_NSSI, anNssiId)
+                if(relatedNssis.size() == 1) {
+                        execution.setVariable("IsRANNfAlonePresent", true)
+                }
+		execution.setVariable("relatedNssis", relatedNssis)
 		logger.trace("${Prefix} - Exit Get Related instances")
 	}
 	
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateAccessNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateAccessNSSI.groovy
index ed1c2b2..9800428 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateAccessNSSI.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateAccessNSSI.groovy
@@ -654,7 +654,8 @@
 		logger.debug("completed AN service instance build " + ANServiceInstance.toString())
 		//create RAN NF NSSI
 		ANNFServiceInstance.setServiceInstanceId(execution.getVariable("RANNFServiceInstanceId") as String)
-		sliceInstanceName = "nssi_"+execution.getVariable("ANNF_modelName")
+                String ANNF_nssiInstanceId = UUID.randomUUID().toString()
+		sliceInstanceName = "nssi_an_nf_" + ANNF_nssiInstanceId
 		ANNFServiceInstance.setServiceInstanceName(sliceInstanceName)
 		ANNFServiceInstance.setServiceType(execution.getVariable("sst") as String)
 		ANNFServiceInstance.setOrchestrationStatus(serviceStatus)
@@ -663,7 +664,7 @@
 		ANNFServiceInstance.setServiceRole(serviceRole)
 		snssaiList = jsonUtil.StringArrayToList(execution.getVariable("snssaiList") as String)
 		snssai = snssaiList.get(0)
-		ANNFServiceInstance.setEnvironmentContext(snssai)
+		ANNFServiceInstance.setEnvironmentContext(execution.getVariable("networkType") as String)
                 ANNFServiceInstance.setModelInvariantId(execution.getVariable("ANNF_modelInvariantUuid"))
                 ANNFServiceInstance.setModelVersionId(execution.getVariable("ANNF_modelUuid"))
 		ANNFServiceInstance.setWorkloadContext("AN_NF")
@@ -1032,7 +1033,7 @@
 		RU_ep.setType(type)
 		RU_ep.setIpAddress("192.168.100.4")
 		RU_ep.setLogicalInterfaceId("1234")
-		RU_ep.setNextHop("Host1")
+		RU_ep.setNextHop("networkId-providerId-10-clientId-0-topologyId-2-nodeId-10.1.1.1-ltpId-512")
 		RU_ep.setPrefixLength(prefixLength)
 		RU_ep.setAddressFamily(addressFamily)
 		//DU Ingress
@@ -1046,7 +1047,7 @@
 		DU_ep.setType(type)
 		DU_ep.setIpAddress("192.168.100.5")
 		DU_ep.setLogicalInterfaceId("1234")
-		DU_ep.setNextHop("Host2")
+		DU_ep.setNextHop("networkId-providerId-20-clientId-0-topologyId-2-nodeId-10.2.1.2-ltpId-512")
 		DU_ep.setPrefixLength(prefixLength)
 		DU_ep.setAddressFamily(addressFamily)
 		//MH RAN end point update
@@ -1062,7 +1063,7 @@
                 DUEG_ep.setLogicalInterfaceId("1234")
                 DUEG_ep.setPrefixLength(prefixLength)
                 DUEG_ep.setAddressFamily(addressFamily)
-		DUEG_ep.setNextHop("Host3")
+		DUEG_ep.setNextHop("networkId-providerId-10-clientId-0-topologyId-2-nodeId-10.1.1.1-ltpId-512")
 		//CUIN
 		String CUIN_routeId = UUID.randomUUID().toString()
 		execution.setVariable("tranportEp_ID_CUIN", CUIN_routeId)
@@ -1073,7 +1074,7 @@
 		CUIN_ep.setType(type)
 		CUIN_ep.setIpAddress("192.168.100.6")
 		CUIN_ep.setLogicalInterfaceId("1234")
-		CUIN_ep.setNextHop("Host4")
+		CUIN_ep.setNextHop("networkId-providerId-20-clientId-0-topologyId-2-nodeId-10.2.1.2-ltpId-512")
 		CUIN_ep.setPrefixLength(prefixLength)
 		CUIN_ep.setAddressFamily(addressFamily)
 		try {
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSIandNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSIandNSSI.groovy
index bc155c5..a22819f 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSIandNSSI.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSIandNSSI.groovy
@@ -444,6 +444,7 @@
                 .sST(sliceTaskInfo.getSliceProfile().getSST() ?: sliceParams.getServiceProfile().get("sST") as String)
                 .nssiName(sliceTaskInfo.getSuggestNssiId() ? sliceTaskInfo.getNSSTInfo().getName() : allocateAnNssi.getNssiName())
                 .nssiId(sliceTaskInfo.getSuggestNssiId())
+                .resourceSharingLevel(sliceParams.serviceProfile.get("resourceSharingLevel") as String)
                 .build()
 
         nbiRequest.setServiceInfo(serviceInfo)
@@ -590,6 +591,7 @@
         serviceInfo.nssiId = sliceTaskInfo.suggestNssiId //if shared
         serviceInfo.sST = sliceTaskInfo.sliceProfile.sST ?: sliceParams.serviceProfile.get("sST")
         serviceInfo.nssiName = allocateCnNssi.nssiName
+        serviceInfo.resourceSharingLevel = sliceParams.serviceProfile.get("resourceSharingLevel")
 
         nbiRequest.setServiceInfo(serviceInfo)
         nbiRequest.setEsrInfo(esrInfo)
@@ -727,6 +729,7 @@
         serviceInfo.nssiId = sliceTaskInfo.suggestNssiId
         serviceInfo.sST = sliceTaskInfo.sliceProfile.sST ?: sliceParams.serviceProfile.get("sST")
         serviceInfo.nssiName = "nssi_tn" + execution.getVariable("sliceServiceInstanceName")
+        serviceInfo.resourceSharingLevel = sliceParams.serviceProfile.get("resourceSharingLevel")
 
         nbiRequest.setServiceInfo(serviceInfo)
         nbiRequest.setEsrInfo(esrInfo)
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceInstance.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceInstance.groovy
index 35b4199..5476cb5 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceInstance.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceInstance.groovy
@@ -117,7 +117,7 @@
             String modelUuid = modelInfo.getModelUuid()
             ss.setModelInvariantId(modelInvariantUuid)
             ss.setModelVersionId(modelUuid)
-            String serviceInstanceLocationid = serviceProfile.get("pLMNIdList")
+            String serviceInstanceLocationid = serviceProfile.get("plmnIdList")
             ss.setServiceInstanceLocationId(serviceInstanceLocationid)
             String snssai = serviceProfile.get("sNSSAI")
             ss.setEnvironmentContext(snssai)
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOption.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOption.groovy
index 2588d07..7571f07 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOption.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOption.groovy
@@ -21,6 +21,7 @@
 package org.onap.so.bpmn.infrastructure.scripts
 
 import com.fasterxml.jackson.databind.ObjectMapper
+import com.fasterxml.jackson.core.type.TypeReference
 import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.onap.aai.domain.yang.ServiceInstance
 import org.onap.so.beans.nsmf.EsrInfo
@@ -271,24 +272,22 @@
      * @return
      */
     private SubnetType convertServiceCategory(String serviceCategory){
-        if("CN NSST".equals(serviceCategory)){
+        if(serviceCategory ==~ /CN.*/){
             return SubnetType.CN
         }
-        if ("AN NF NSST".equals(serviceCategory)){
-            return SubnetType.AN_NF
-        }
-        if ("AN NSST".equals(serviceCategory)){
+        if (serviceCategory ==~ /AN.*/){
             return SubnetType.AN
         }
-        if ("TN BH NSST".equals(serviceCategory)){
+        if (serviceCategory ==~ /TN.*BH.*/){
             return SubnetType.TN_BH
         }
-        if("TN MH NSST".equals(serviceCategory)){
+        if(serviceCategory ==~ /TN.*MH.*/){
             return SubnetType.TN_MH
         }
-        if("TN FH NSST".equals(serviceCategory)){
+        if(serviceCategory ==~ /TN.*FH.*/){
             return SubnetType.TN_FH
         }
+
         return null
     }
 
@@ -475,7 +474,10 @@
      */
     void getNSSISelectionCap4AN(DelegateExecution execution) {
 
-        def vendor = execution.getVariable("vendor") as String
+       SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+
+        def vendor = sliceParams.anSliceTaskInfo.vendor
 
         String strRequest = buildNSSISelectionReq(vendor, NetworkType.ACCESS)
 
@@ -497,7 +499,10 @@
      */
     void getNSSISelectionCap4TN(DelegateExecution execution) {
 
-        def vendor = execution.getVariable("vendor") as String
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+
+        def vendor = sliceParams.tnBHSliceTaskInfo.vendor
 
         String strRequest = buildNSSISelectionReq(vendor, NetworkType.TRANSPORT)
 
@@ -518,7 +523,10 @@
      */
     void getNSSISelectionCap4CN(DelegateExecution execution) {
 
-        def vendor = execution.getVariable("vendor") as String
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+
+        def vendor = sliceParams.cnSliceTaskInfo.vendor
 
         String strRequest = buildNSSISelectionReq(vendor, NetworkType.CORE)
 
@@ -626,8 +634,10 @@
         Map nssiNeedHandlerInfo = nssiNeedHandlerInfos.get(currNssiIndex) as Map
 
         TemplateInfo nsstInfo = nssiNeedHandlerInfo.get("nsstInfo") as TemplateInfo
-        Map<String, Object> profileInfo = nssiNeedHandlerInfo.get("sliceProfile") as Map
-        //profileInfo.remove("profileId")
+        SliceProfileAdapter sliceProfileInfo = nssiNeedHandlerInfo.get("sliceProfile") as SliceProfileAdapter
+
+        Map profileInfo = objectMapper.convertValue(sliceProfileInfo, new TypeReference<Map<String, Object>>() {});
+        while (profileInfo.values().remove(null));
 
         String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution)
         logger.debug( "get NSI option OOF Url: " + urlString)
@@ -641,8 +651,8 @@
         String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution)
         execution.setVariable("nssiSelection_timeout", timeout)
 
-        String oofRequest = oofUtils.buildSelectNSSIRequest(requestId, nsstInfo, messageType,
-                profileInfo, 600)
+        String oofRequest = oofUtils.buildSelectNSSIRequest(requestId, messageType, nsstInfo.UUID,
+                nsstInfo.invariantUUID, nsstInfo.name, profileInfo)
 
         execution.setVariable("nssiSelection_oofRequest", oofRequest)
         logger.debug("Sending request to OOF: " + oofRequest)
@@ -672,13 +682,10 @@
 
         Map<String, Object> resMap = objectMapper.readValue(OOFResponse, Map.class)
         List<Map<String, Object>> nsiSolutions = (List<Map<String, Object>>) resMap.get("solutions")
-        Map<String, Object> solution = nsiSolutions.get(0)
 
-        String resourceSharingLevel = execution.getVariable("resourceSharingLevel")
-        Boolean isSharable = resourceSharingLevel == "shared"   //todo
-
-        if (isSharable && solution != null) {
-            processNssiResult(sliceTaskParams, subnetType, solution)
+        if(nsiSolutions.size()>=1) {
+        Map<String,Object> solution = nsiSolutions.get(0) as Map
+        processNssiResult(sliceTaskParams, subnetType, solution)
         }
 
         execution.setVariable("sliceTaskParams", sliceTaskParams)
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeAllocateAccessNSSI.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeAllocateAccessNSSI.groovy
index 4cc6e6d..6fd8080 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeAllocateAccessNSSI.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeAllocateAccessNSSI.groovy
@@ -126,7 +126,11 @@
 		execution.setVariable("anNfSliceProfileId", getInstanceIdByWorkloadContext(execution.getVariable("relatedSPs"), AN_NF))
 
 		Map<String,ServiceInstance> relatedNssis = new HashMap<>()
-		execution.setVariable("relatedNssis", getRelatedInstancesByRole(execution, ROLE_NSSI, anNssiId))
+                relatedNssis = getRelatedInstancesByRole(execution, ROLE_NSSI, anNssiId)
+                if(relatedNssis.size() == 1) {
+                        execution.setVariable("IsRANNfAlonePresent", true)
+                }
+		execution.setVariable("relatedNssis", relatedNssis)
 	}
 	
 
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/TnNssmfUtils.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/TnNssmfUtils.groovy
index e0c2b77..d6e94ef 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/TnNssmfUtils.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/TnNssmfUtils.groovy
@@ -377,7 +377,6 @@
             logger.debug("mso.workflow.TnNssmf.enableSDNCNetworkConfig is undefined, so use default value (true)")
             enableSdnc = "true"
         }
-	enableSdnc = "false"
         logger.debug("setEnableSdncConfig: enableSdnc=" + enableSdnc)
 
         execution.setVariable("enableSdnc", enableSdnc)
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateAccessNSSI.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateAccessNSSI.bpmn
index 841a23b..b156135 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateAccessNSSI.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateAccessNSSI.bpmn
@@ -1,5 +1,5 @@
 <?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:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0rh5ux5" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.1.1">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_0rh5ux5" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.10.0">
   <bpmn:process id="DoActivateAccessNSSI" name="DoActivateAccessNSSI" isExecutable="true">
     <bpmn:startEvent id="Event_055gbp2" name="Start">
       <bpmn:outgoing>Flow_0rh43xe</bpmn:outgoing>
@@ -16,7 +16,7 @@
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("shouldChangeAN_NF_SPStatus") == true}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
     <bpmn:intermediateThrowEvent id="Event_1n5z71a" name="Goto TN NSSI Activation">
-      <bpmn:incoming>Flow_0mtkhmv</bpmn:incoming>
+      <bpmn:incoming>Flow_0umba3p</bpmn:incoming>
       <bpmn:linkEventDefinition id="LinkEventDefinition_0x6han6" name="TNNSSIActivation" />
     </bpmn:intermediateThrowEvent>
     <bpmn:intermediateCatchEvent id="Event_0kkeo9m" name="TN NSSI Activation">
@@ -27,9 +27,9 @@
       <bpmn:incoming>Flow_1b6vtso</bpmn:incoming>
       <bpmn:linkEventDefinition id="LinkEventDefinition_05qiudr" name="AN_NSSI_Activation" />
     </bpmn:intermediateThrowEvent>
-    <bpmn:sequenceFlow id="Flow_0523saw" sourceRef="Gateway_12oq1sa" targetRef="Event_0rzo7gj" />
+    <bpmn:sequenceFlow id="Flow_0523saw" sourceRef="Gateway_12oq1sa" targetRef="Gateway_0ci374j" />
     <bpmn:intermediateThrowEvent id="Event_0rzo7gj" name="Check TN NSSI Activation">
-      <bpmn:incoming>Flow_0523saw</bpmn:incoming>
+      <bpmn:incoming>Flow_1vyktdh</bpmn:incoming>
       <bpmn:linkEventDefinition id="LinkEventDefinition_0s7s95j" name="TNNSSIActivation" />
     </bpmn:intermediateThrowEvent>
     <bpmn:sequenceFlow id="Flow_1cnfilb" sourceRef="Event_1azfo77" targetRef="Activity_1j0xkqc" />
@@ -260,7 +260,7 @@
 def activator = new DoActivateAccessNSSI()
 activator.updateAnNfStatus(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="Flow_0mtkhmv" sourceRef="Activity_08yj5gq" targetRef="Event_1n5z71a" />
+    <bpmn:sequenceFlow id="Flow_0mtkhmv" sourceRef="Activity_08yj5gq" targetRef="Gateway_0n3zhxo" />
     <bpmn:scriptTask id="Activity_1fzg56b" name="Check TN FH Slice profile status" scriptFormat="groovy">
       <bpmn:incoming>Flow_1q7frye</bpmn:incoming>
       <bpmn:outgoing>Flow_1yd57bl</bpmn:outgoing>
@@ -519,494 +519,573 @@
       <bpmn:incoming>Flow_0g9k299</bpmn:incoming>
       <bpmn:linkEventDefinition id="LinkEventDefinition_1h9r8pc" name="AN_NSSI_Activation" />
     </bpmn:intermediateThrowEvent>
+    <bpmn:exclusiveGateway id="Gateway_0ci374j" name="Is TN NSSI present?" default="Flow_1vyktdh">
+      <bpmn:incoming>Flow_0523saw</bpmn:incoming>
+      <bpmn:outgoing>Flow_1vyktdh</bpmn:outgoing>
+      <bpmn:outgoing>Flow_1buy9ji</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="Flow_1vyktdh" name="Yes" sourceRef="Gateway_0ci374j" targetRef="Event_0rzo7gj" />
+    <bpmn:intermediateThrowEvent id="Event_04dd3u6" name="Goto AN NSSI Activation">
+      <bpmn:incoming>Flow_1buy9ji</bpmn:incoming>
+      <bpmn:linkEventDefinition id="LinkEventDefinition_1x4z9d9" name="AN_NSSI_Activation" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="Flow_1buy9ji" name="No" sourceRef="Gateway_0ci374j" targetRef="Event_04dd3u6">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("IsRANNfAlonePresent" )  == true)}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:exclusiveGateway id="Gateway_0n3zhxo" name="Is TN present?" default="Flow_0umba3p">
+      <bpmn:incoming>Flow_0mtkhmv</bpmn:incoming>
+      <bpmn:outgoing>Flow_0umba3p</bpmn:outgoing>
+      <bpmn:outgoing>Flow_1xrbneh</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="Flow_0umba3p" name="Yes" sourceRef="Gateway_0n3zhxo" targetRef="Event_1n5z71a" />
+    <bpmn:intermediateThrowEvent id="Event_1akyxj9" name="Goto AN NSSI Activation">
+      <bpmn:incoming>Flow_1xrbneh</bpmn:incoming>
+      <bpmn:linkEventDefinition id="LinkEventDefinition_1inqa6n" name="AN_NSSI_Activation" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="Flow_1xrbneh" name="No" sourceRef="Gateway_0n3zhxo" targetRef="Event_1akyxj9">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("IsRANNfAlonePresent" )  == true)}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
   </bpmn:process>
   <bpmn:error id="Error_1beg2za" name="ActivationWorkflowError" errorCode="2500" />
   <bpmn:error id="Error_0vgjqok" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoActivateAccessNSSI">
       <bpmndi:BPMNEdge id="Flow_1876ml0_di" bpmnElement="Flow_1876ml0">
-        <di:waypoint x="660" y="940" />
-        <di:waypoint x="712" y="940" />
+        <di:waypoint x="660" y="1050" />
+        <di:waypoint x="712" y="1050" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0cblklk_di" bpmnElement="Flow_0cblklk">
-        <di:waypoint x="350" y="940" />
-        <di:waypoint x="390" y="940" />
+        <di:waypoint x="350" y="1050" />
+        <di:waypoint x="390" y="1050" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_06nfip0_di" bpmnElement="Flow_06nfip0">
-        <di:waypoint x="490" y="940" />
-        <di:waypoint x="560" y="940" />
+        <di:waypoint x="490" y="1050" />
+        <di:waypoint x="560" y="1050" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0k5cyz7_di" bpmnElement="Flow_0k5cyz7">
-        <di:waypoint x="1330" y="690" />
-        <di:waypoint x="1410" y="690" />
+        <di:waypoint x="1330" y="800" />
+        <di:waypoint x="1410" y="800" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1b95clk_di" bpmnElement="Flow_1b95clk">
-        <di:waypoint x="1320" y="450" />
-        <di:waypoint x="1410" y="450" />
+        <di:waypoint x="1320" y="560" />
+        <di:waypoint x="1410" y="560" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1b6vtso_di" bpmnElement="Flow_1b6vtso">
-        <di:waypoint x="1680" y="690" />
-        <di:waypoint x="1742" y="690" />
+        <di:waypoint x="1680" y="800" />
+        <di:waypoint x="1742" y="800" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1s0xcf5_di" bpmnElement="Flow_1s0xcf5">
-        <di:waypoint x="580" y="690" />
-        <di:waypoint x="640" y="690" />
+        <di:waypoint x="580" y="800" />
+        <di:waypoint x="640" y="800" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1wx5w6i_di" bpmnElement="Flow_1wx5w6i">
-        <di:waypoint x="1510" y="690" />
-        <di:waypoint x="1580" y="690" />
+        <di:waypoint x="1510" y="800" />
+        <di:waypoint x="1580" y="800" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0rzuxa0_di" bpmnElement="Flow_0rzuxa0">
-        <di:waypoint x="1140" y="715" />
-        <di:waypoint x="1140" y="762" />
+        <di:waypoint x="1140" y="825" />
+        <di:waypoint x="1140" y="872" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1i4cc7e_di" bpmnElement="Flow_1i4cc7e">
-        <di:waypoint x="1165" y="690" />
-        <di:waypoint x="1230" y="690" />
+        <di:waypoint x="1165" y="800" />
+        <di:waypoint x="1230" y="800" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1168" y="672" width="18" height="14" />
+          <dc:Bounds x="1168" y="782" width="18" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0to1idt_di" bpmnElement="Flow_0to1idt">
-        <di:waypoint x="1070" y="690" />
-        <di:waypoint x="1115" y="690" />
+        <di:waypoint x="1070" y="800" />
+        <di:waypoint x="1115" y="800" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0b7aq1k_di" bpmnElement="Flow_0b7aq1k">
-        <di:waypoint x="900" y="690" />
-        <di:waypoint x="970" y="690" />
+        <di:waypoint x="900" y="800" />
+        <di:waypoint x="970" y="800" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0sqsq1x_di" bpmnElement="Flow_0sqsq1x">
-        <di:waypoint x="740" y="690" />
-        <di:waypoint x="800" y="690" />
+        <di:waypoint x="740" y="800" />
+        <di:waypoint x="800" y="800" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1qszzfv_di" bpmnElement="Flow_1qszzfv">
-        <di:waypoint x="1680" y="450" />
-        <di:waypoint x="1732" y="450" />
+        <di:waypoint x="1680" y="560" />
+        <di:waypoint x="1732" y="560" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1ldkgyg_di" bpmnElement="Flow_1ldkgyg">
-        <di:waypoint x="1510" y="450" />
-        <di:waypoint x="1580" y="450" />
+        <di:waypoint x="1510" y="560" />
+        <di:waypoint x="1580" y="560" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0ajre96_di" bpmnElement="Flow_0ajre96">
-        <di:waypoint x="1130" y="475" />
-        <di:waypoint x="1130" y="522" />
+        <di:waypoint x="1130" y="585" />
+        <di:waypoint x="1130" y="632" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0bukcmf_di" bpmnElement="Flow_0bukcmf">
-        <di:waypoint x="1155" y="450" />
-        <di:waypoint x="1220" y="450" />
+        <di:waypoint x="1155" y="560" />
+        <di:waypoint x="1220" y="560" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1158" y="432" width="18" height="14" />
+          <dc:Bounds x="1158" y="542" width="18" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0heuc95_di" bpmnElement="Flow_0heuc95">
-        <di:waypoint x="580" y="450" />
-        <di:waypoint x="630" y="450" />
+        <di:waypoint x="580" y="560" />
+        <di:waypoint x="630" y="560" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1i0s8nu_di" bpmnElement="Flow_1i0s8nu">
-        <di:waypoint x="1060" y="450" />
-        <di:waypoint x="1105" y="450" />
+        <di:waypoint x="1060" y="560" />
+        <di:waypoint x="1105" y="560" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_16pqv7g_di" bpmnElement="Flow_16pqv7g">
-        <di:waypoint x="890" y="450" />
-        <di:waypoint x="960" y="450" />
+        <di:waypoint x="890" y="560" />
+        <di:waypoint x="960" y="560" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1w3h345_di" bpmnElement="Flow_1w3h345">
-        <di:waypoint x="730" y="450" />
-        <di:waypoint x="790" y="450" />
+        <di:waypoint x="730" y="560" />
+        <di:waypoint x="790" y="560" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0mtkhmv_di" bpmnElement="Flow_0mtkhmv">
-        <di:waypoint x="2110" y="230" />
-        <di:waypoint x="2152" y="230" />
+        <di:waypoint x="2110" y="340" />
+        <di:waypoint x="2180" y="340" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1sroz8o_di" bpmnElement="Flow_1sroz8o">
-        <di:waypoint x="1800" y="230" />
-        <di:waypoint x="1870" y="230" />
+        <di:waypoint x="1800" y="340" />
+        <di:waypoint x="1870" y="340" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1myzbqw_di" bpmnElement="Flow_1myzbqw">
-        <di:waypoint x="1500" y="230" />
-        <di:waypoint x="1565" y="230" />
+        <di:waypoint x="1500" y="340" />
+        <di:waypoint x="1565" y="340" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0o7xomf_di" bpmnElement="Flow_0o7xomf">
-        <di:waypoint x="1340" y="230" />
-        <di:waypoint x="1400" y="230" />
+        <di:waypoint x="1340" y="340" />
+        <di:waypoint x="1400" y="340" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0rizzsm_di" bpmnElement="Flow_0rizzsm">
-        <di:waypoint x="1970" y="230" />
-        <di:waypoint x="2010" y="230" />
+        <di:waypoint x="1970" y="340" />
+        <di:waypoint x="2010" y="340" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1v4zg98_di" bpmnElement="Flow_1v4zg98">
-        <di:waypoint x="1590" y="255" />
-        <di:waypoint x="1590" y="302" />
+        <di:waypoint x="1590" y="365" />
+        <di:waypoint x="1590" y="412" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1yrel0t_di" bpmnElement="Flow_1yrel0t">
-        <di:waypoint x="1615" y="230" />
-        <di:waypoint x="1700" y="230" />
+        <di:waypoint x="1615" y="340" />
+        <di:waypoint x="1700" y="340" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1649" y="212" width="18" height="14" />
+          <dc:Bounds x="1649" y="322" width="18" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1gxv9id_di" bpmnElement="Flow_1gxv9id">
-        <di:waypoint x="1180" y="230" />
-        <di:waypoint x="1240" y="230" />
+        <di:waypoint x="1180" y="340" />
+        <di:waypoint x="1240" y="340" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_147tw7h_di" bpmnElement="Flow_147tw7h">
-        <di:waypoint x="435" y="690" />
-        <di:waypoint x="480" y="690" />
+        <di:waypoint x="435" y="800" />
+        <di:waypoint x="480" y="800" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0wvzz2r_di" bpmnElement="Flow_0wvzz2r">
-        <di:waypoint x="198" y="690" />
-        <di:waypoint x="240" y="690" />
+        <di:waypoint x="198" y="800" />
+        <di:waypoint x="240" y="800" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_00clpwn_di" bpmnElement="Flow_00clpwn">
-        <di:waypoint x="410" y="715" />
-        <di:waypoint x="410" y="800" />
-        <di:waypoint x="482" y="800" />
+        <di:waypoint x="410" y="825" />
+        <di:waypoint x="410" y="910" />
+        <di:waypoint x="482" y="910" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0q02qno_di" bpmnElement="Flow_0q02qno">
-        <di:waypoint x="340" y="690" />
-        <di:waypoint x="385" y="690" />
+        <di:waypoint x="340" y="800" />
+        <di:waypoint x="385" y="800" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_10b15um_di" bpmnElement="Flow_10b15um">
-        <di:waypoint x="410" y="475" />
-        <di:waypoint x="410" y="560" />
-        <di:waypoint x="482" y="560" />
+        <di:waypoint x="410" y="585" />
+        <di:waypoint x="410" y="670" />
+        <di:waypoint x="482" y="670" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0zjaac9_di" bpmnElement="Flow_0zjaac9">
-        <di:waypoint x="435" y="450" />
-        <di:waypoint x="480" y="450" />
+        <di:waypoint x="435" y="560" />
+        <di:waypoint x="480" y="560" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="449" y="432" width="18" height="14" />
+          <dc:Bounds x="449" y="542" width="18" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1q7frye_di" bpmnElement="Flow_1q7frye">
-        <di:waypoint x="198" y="450" />
-        <di:waypoint x="240" y="450" />
+        <di:waypoint x="198" y="560" />
+        <di:waypoint x="240" y="560" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1yd57bl_di" bpmnElement="Flow_1yd57bl">
-        <di:waypoint x="340" y="450" />
-        <di:waypoint x="385" y="450" />
+        <di:waypoint x="340" y="560" />
+        <di:waypoint x="385" y="560" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0g9k299_di" bpmnElement="Flow_0g9k299">
-        <di:waypoint x="690" y="205" />
-        <di:waypoint x="690" y="100" />
-        <di:waypoint x="752" y="100" />
+        <di:waypoint x="690" y="315" />
+        <di:waypoint x="690" y="210" />
+        <di:waypoint x="752" y="210" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="698" y="150" width="15" height="14" />
+          <dc:Bounds x="698" y="260" width="15" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_00vt4gf_di" bpmnElement="Flow_00vt4gf">
-        <di:waypoint x="715" y="230" />
-        <di:waypoint x="800" y="230" />
+        <di:waypoint x="715" y="340" />
+        <di:waypoint x="800" y="340" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="749" y="212" width="18" height="14" />
+          <dc:Bounds x="749" y="322" width="18" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0uxerfg_di" bpmnElement="Flow_0uxerfg">
-        <di:waypoint x="620" y="230" />
-        <di:waypoint x="665" y="230" />
+        <di:waypoint x="620" y="340" />
+        <di:waypoint x="665" y="340" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_10f44ab_di" bpmnElement="Flow_10f44ab">
-        <di:waypoint x="480" y="230" />
-        <di:waypoint x="520" y="230" />
+        <di:waypoint x="480" y="340" />
+        <di:waypoint x="520" y="340" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1cnfilb_di" bpmnElement="Flow_1cnfilb">
-        <di:waypoint x="198" y="940" />
-        <di:waypoint x="250" y="940" />
+        <di:waypoint x="198" y="1050" />
+        <di:waypoint x="250" y="1050" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0523saw_di" bpmnElement="Flow_0523saw">
-        <di:waypoint x="990" y="205" />
-        <di:waypoint x="990" y="130" />
-        <di:waypoint x="1062" y="130" />
+        <di:waypoint x="990" y="315" />
+        <di:waypoint x="990" y="190" />
+        <di:waypoint x="1065" y="190" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_00fb28f_di" bpmnElement="Flow_00fb28f">
-        <di:waypoint x="1015" y="230" />
-        <di:waypoint x="1080" y="230" />
+        <di:waypoint x="1015" y="340" />
+        <di:waypoint x="1080" y="340" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_00yl2jk_di" bpmnElement="Flow_00yl2jk">
-        <di:waypoint x="900" y="230" />
-        <di:waypoint x="965" y="230" />
+        <di:waypoint x="900" y="340" />
+        <di:waypoint x="965" y="340" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_14z4acw_di" bpmnElement="Flow_14z4acw">
-        <di:waypoint x="340" y="230" />
-        <di:waypoint x="380" y="230" />
+        <di:waypoint x="340" y="340" />
+        <di:waypoint x="380" y="340" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0rh43xe_di" bpmnElement="Flow_0rh43xe">
-        <di:waypoint x="198" y="230" />
-        <di:waypoint x="240" y="230" />
+        <di:waypoint x="198" y="340" />
+        <di:waypoint x="240" y="340" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_1vyktdh_di" bpmnElement="Flow_1vyktdh">
+        <di:waypoint x="1115" y="190" />
+        <di:waypoint x="1222" y="190" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1160" y="172" width="18" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_1buy9ji_di" bpmnElement="Flow_1buy9ji">
+        <di:waypoint x="1090" y="165" />
+        <di:waypoint x="1090" y="100" />
+        <di:waypoint x="1222" y="100" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1098" y="130" width="15" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_0umba3p_di" bpmnElement="Flow_0umba3p">
+        <di:waypoint x="2230" y="340" />
+        <di:waypoint x="2297" y="340" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2255" y="322" width="18" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_1xrbneh_di" bpmnElement="Flow_1xrbneh">
+        <di:waypoint x="2205" y="365" />
+        <di:waypoint x="2205" y="412" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2213" y="386" width="15" height="14" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="Event_055gbp2_di" bpmnElement="Event_055gbp2">
-        <dc:Bounds x="162" y="212" width="36" height="36" />
+        <dc:Bounds x="162" y="322" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="168" y="255" width="24" height="14" />
+          <dc:Bounds x="168" y="365" width="25" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Gateway_12oq1sa_di" bpmnElement="Gateway_12oq1sa" isMarkerVisible="true">
-        <dc:Bounds x="965" y="205" width="50" height="50" />
+        <dc:Bounds x="965" y="315" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="945" y="265" width="90" height="27" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_1v7p5kl_di" bpmnElement="Event_1n5z71a">
-        <dc:Bounds x="2152" y="212" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="2137" y="255" width="71" height="27" />
+          <dc:Bounds x="945" y="375" width="90" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_01vyapf_di" bpmnElement="Event_0kkeo9m">
-        <dc:Bounds x="162" y="432" width="36" height="36" />
+        <dc:Bounds x="162" y="542" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="157" y="475" width="48" height="27" />
+          <dc:Bounds x="158" y="585" width="47" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_1u3s42m_di" bpmnElement="Event_09ey569">
-        <dc:Bounds x="1742" y="672" width="36" height="36" />
+        <dc:Bounds x="1742" y="782" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1728" y="715" width="71" height="27" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_01fudey_di" bpmnElement="Event_0rzo7gj">
-        <dc:Bounds x="1062" y="112" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1042" y="155" width="78" height="27" />
+          <dc:Bounds x="1728" y="825" width="71" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_0gx3ps0_di" bpmnElement="Event_0gx3ps0">
-        <dc:Bounds x="712" y="922" width="36" height="36" />
+        <dc:Bounds x="712" y="1032" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="720" y="965" width="20" height="14" />
+          <dc:Bounds x="720" y="1075" width="20" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Gateway_0xcg677_di" bpmnElement="Gateway_0xcg677" isMarkerVisible="true">
-        <dc:Bounds x="665" y="205" width="50" height="50" />
+        <dc:Bounds x="665" y="315" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="647" y="262" width="86" height="27" />
+          <dc:Bounds x="647" y="372" width="87" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Gateway_0nr3me0_di" bpmnElement="Gateway_0nr3me0" isMarkerVisible="true">
-        <dc:Bounds x="385" y="425" width="50" height="50" />
+        <dc:Bounds x="385" y="535" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="370" y="395" width="84" height="27" />
+          <dc:Bounds x="370" y="505" width="84" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_0j998yp_di" bpmnElement="Event_0j998yp">
-        <dc:Bounds x="162" y="672" width="36" height="36" />
+        <dc:Bounds x="162" y="782" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="150" y="715" width="64" height="27" />
+          <dc:Bounds x="151" y="825" width="63" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_05lm9ln_di" bpmnElement="Event_1nqpg0o">
-        <dc:Bounds x="482" y="542" width="36" height="36" />
+        <dc:Bounds x="482" y="652" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="457" y="585" width="86" height="27" />
+          <dc:Bounds x="457" y="695" width="86" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_0wv22e3_di" bpmnElement="Event_0ki3ncn">
-        <dc:Bounds x="1732" y="432" width="36" height="36" />
+        <dc:Bounds x="1732" y="542" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1706" y="475" width="88" height="27" />
+          <dc:Bounds x="1706" y="585" width="88" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_1djcl9x_di" bpmnElement="Event_1djcl9x">
-        <dc:Bounds x="482" y="782" width="36" height="36" />
+        <dc:Bounds x="482" y="892" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="469" y="825" width="62" height="27" />
+          <dc:Bounds x="469" y="935" width="62" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Gateway_0cemhjv_di" bpmnElement="Gateway_0cemhjv" isMarkerVisible="true">
-        <dc:Bounds x="385" y="665" width="50" height="50" />
+        <dc:Bounds x="385" y="775" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="368" y="635" width="84" height="27" />
+          <dc:Bounds x="368" y="745" width="84" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_00e6sqq_di" bpmnElement="Activity_089t9fj">
-        <dc:Bounds x="380" y="190" width="100" height="80" />
+        <dc:Bounds x="380" y="300" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_147vycg_di" bpmnElement="Activity_1fv6ljk">
-        <dc:Bounds x="240" y="190" width="100" height="80" />
+        <dc:Bounds x="240" y="300" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_1465ih9_di" bpmnElement="Activity_19myg2v">
-        <dc:Bounds x="520" y="190" width="100" height="80" />
+        <dc:Bounds x="520" y="300" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_16l1ykw_di" bpmnElement="Activity_1atych2">
-        <dc:Bounds x="800" y="190" width="100" height="80" />
+        <dc:Bounds x="800" y="300" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_10uophi_di" bpmnElement="Activity_0iluozh">
-        <dc:Bounds x="1080" y="190" width="100" height="80" />
+        <dc:Bounds x="1080" y="300" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_0u2aqld_di" bpmnElement="Activity_0u2aqld">
-        <dc:Bounds x="1240" y="190" width="100" height="80" />
+        <dc:Bounds x="1240" y="300" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_1hr68mt_di" bpmnElement="Activity_1hr68mt">
-        <dc:Bounds x="1400" y="190" width="100" height="80" />
+        <dc:Bounds x="1400" y="300" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Gateway_1xwu5f0_di" bpmnElement="Gateway_1xwu5f0" isMarkerVisible="true">
-        <dc:Bounds x="1565" y="205" width="50" height="50" />
+        <dc:Bounds x="1565" y="315" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1564" y="175" width="54" height="27" />
+          <dc:Bounds x="1564" y="285" width="54" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_0yfi3mj_di" bpmnElement="Event_0yfi3mj">
-        <dc:Bounds x="1572" y="302" width="36" height="36" />
+        <dc:Bounds x="1572" y="412" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1607" y="286" width="85" height="27" />
+          <dc:Bounds x="1608" y="396" width="84" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_03sbng2_di" bpmnElement="Activity_03sbng2">
-        <dc:Bounds x="1870" y="190" width="100" height="80" />
+        <dc:Bounds x="1870" y="300" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_08yj5gq_di" bpmnElement="Activity_08yj5gq">
-        <dc:Bounds x="2010" y="190" width="100" height="80" />
+        <dc:Bounds x="2010" y="300" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_1aesimf_di" bpmnElement="Activity_1aesimf" isExpanded="true">
-        <dc:Bounds x="210" y="1130" width="770" height="170" />
+      <bpmndi:BPMNShape id="Event_01fudey_di" bpmnElement="Event_0rzo7gj">
+        <dc:Bounds x="1222" y="172" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1202" y="215" width="78" height="27" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="Flow_1bqk5yt_di" bpmnElement="Flow_1bqk5yt">
-        <di:waypoint x="630" y="1234" />
-        <di:waypoint x="710" y="1234" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_0tw7xsp_di" bpmnElement="Flow_0tw7xsp">
-        <di:waypoint x="278" y="1234" />
-        <di:waypoint x="380" y="1234" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_075rb1i_di" bpmnElement="Flow_075rb1i">
-        <di:waypoint x="480" y="1234" />
-        <di:waypoint x="530" y="1234" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_0y0r82m_di" bpmnElement="Flow_0y0r82m">
-        <di:waypoint x="810" y="1234" />
-        <di:waypoint x="892" y="1234" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="Event_156ogc4_di" bpmnElement="Event_156ogc4">
-        <dc:Bounds x="242" y="1216" width="36" height="36" />
+      <bpmndi:BPMNShape id="Gateway_0ci374j_di" bpmnElement="Gateway_0ci374j" isMarkerVisible="true">
+        <dc:Bounds x="1065" y="165" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1063" y="222" width="56" height="27" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_1n2qjvx_di" bpmnElement="Event_1n2qjvx">
-        <dc:Bounds x="892" y="1216" width="36" height="36" />
+      <bpmndi:BPMNShape id="Event_04dd3u6_di" bpmnElement="Event_04dd3u6">
+        <dc:Bounds x="1222" y="82" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1206" y="125" width="71" height="27" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_1eedm9e_di" bpmnElement="Activity_1eedm9e">
-        <dc:Bounds x="710" y="1194" width="100" height="80" />
+      <bpmndi:BPMNShape id="Event_1v7p5kl_di" bpmnElement="Event_1n5z71a">
+        <dc:Bounds x="2297" y="322" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2282" y="365" width="71" height="27" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_1szd5yp_di" bpmnElement="Activity_1szd5yp">
-        <dc:Bounds x="530" y="1194" width="100" height="80" />
+      <bpmndi:BPMNShape id="Gateway_0n3zhxo_di" bpmnElement="Gateway_0n3zhxo" isMarkerVisible="true">
+        <dc:Bounds x="2180" y="315" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2169" y="285" width="73" height="14" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_0lpw3j7_di" bpmnElement="Activity_0lpw3j7">
-        <dc:Bounds x="380" y="1194" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_0hioign_di" bpmnElement="Activity_0hioign" isExpanded="true">
-        <dc:Bounds x="320" y="1420" width="440" height="140" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="Flow_0cvs8zk_di" bpmnElement="Flow_0cvs8zk">
-        <di:waypoint x="408" y="1481" />
-        <di:waypoint x="473" y="1481" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_01jdnrt_di" bpmnElement="Flow_01jdnrt">
-        <di:waypoint x="573" y="1481" />
-        <di:waypoint x="672" y="1481" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="Activity_1f3cipf_di" bpmnElement="Activity_1f3cipf">
-        <dc:Bounds x="473" y="1441" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_18qzt1n_di" bpmnElement="Event_18qzt1n">
-        <dc:Bounds x="672" y="1463" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_0lvvn7i_di" bpmnElement="Event_0lvvn7i">
-        <dc:Bounds x="372" y="1463" width="36" height="36" />
+      <bpmndi:BPMNShape id="Event_1akyxj9_di" bpmnElement="Event_1akyxj9">
+        <dc:Bounds x="2187" y="412" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2171" y="455" width="71" height="27" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_1u5yry2_di" bpmnElement="Activity_09e5oh6">
-        <dc:Bounds x="1700" y="190" width="100" height="80" />
+        <dc:Bounds x="1700" y="300" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_1ng1vyl_di" bpmnElement="Activity_1fzg56b">
-        <dc:Bounds x="240" y="410" width="100" height="80" />
+        <dc:Bounds x="240" y="520" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_1vabe3f_di" bpmnElement="Activity_0gtw2p7">
-        <dc:Bounds x="480" y="410" width="100" height="80" />
+        <dc:Bounds x="480" y="520" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_07cr1m2_di" bpmnElement="Activity_07cr1m2">
-        <dc:Bounds x="630" y="410" width="100" height="80" />
+        <dc:Bounds x="630" y="520" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_03hbxfi_di" bpmnElement="Activity_03hbxfi">
-        <dc:Bounds x="790" y="410" width="100" height="80" />
+        <dc:Bounds x="790" y="520" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_0br2i5b_di" bpmnElement="Activity_0br2i5b">
-        <dc:Bounds x="960" y="410" width="100" height="80" />
+        <dc:Bounds x="960" y="520" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Gateway_1ot96tc_di" bpmnElement="Gateway_1ot96tc" isMarkerVisible="true">
-        <dc:Bounds x="1105" y="425" width="50" height="50" />
+        <dc:Bounds x="1105" y="535" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1088" y="395" width="84" height="14" />
+          <dc:Bounds x="1088" y="505" width="84" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_0h9nwqd_di" bpmnElement="Event_0uco28x">
-        <dc:Bounds x="1112" y="522" width="36" height="36" />
+        <dc:Bounds x="1112" y="632" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1088" y="565" width="85" height="27" />
+          <dc:Bounds x="1089" y="675" width="84" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_1t28p4r_di" bpmnElement="Activity_1t28p4r">
-        <dc:Bounds x="1580" y="410" width="100" height="80" />
+        <dc:Bounds x="1580" y="520" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_03o12kw_di" bpmnElement="Activity_1o0a55b">
-        <dc:Bounds x="1410" y="410" width="100" height="80" />
+        <dc:Bounds x="1410" y="520" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_1hkx6j5_di" bpmnElement="Activity_068a0cy">
-        <dc:Bounds x="240" y="650" width="100" height="80" />
+        <dc:Bounds x="240" y="760" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_18xtkyi_di" bpmnElement="Event_1azfo77">
-        <dc:Bounds x="162" y="922" width="36" height="36" />
+        <dc:Bounds x="162" y="1032" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="156" y="965" width="48" height="27" />
+          <dc:Bounds x="157" y="1075" width="47" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_1wvru6z_di" bpmnElement="Activity_02vl5kt">
-        <dc:Bounds x="480" y="650" width="100" height="80" />
+        <dc:Bounds x="480" y="760" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_1kszh5k_di" bpmnElement="Activity_1kszh5k">
-        <dc:Bounds x="640" y="650" width="100" height="80" />
+        <dc:Bounds x="640" y="760" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_09jt4b0_di" bpmnElement="Activity_09jt4b0">
-        <dc:Bounds x="800" y="650" width="100" height="80" />
+        <dc:Bounds x="800" y="760" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_1su25xm_di" bpmnElement="Activity_1su25xm">
-        <dc:Bounds x="970" y="650" width="100" height="80" />
+        <dc:Bounds x="970" y="760" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Gateway_114io6q_di" bpmnElement="Gateway_114io6q" isMarkerVisible="true">
-        <dc:Bounds x="1115" y="665" width="50" height="50" />
+        <dc:Bounds x="1115" y="775" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1098" y="641" width="84" height="14" />
+          <dc:Bounds x="1098" y="751" width="84" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_08ecfyj_di" bpmnElement="Event_08ecfyj">
-        <dc:Bounds x="1122" y="762" width="36" height="36" />
+        <dc:Bounds x="1122" y="872" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1098" y="805" width="85" height="27" />
+          <dc:Bounds x="1099" y="915" width="84" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_0ftm8b6_di" bpmnElement="Activity_0ftm8b6">
-        <dc:Bounds x="1410" y="650" width="100" height="80" />
+        <dc:Bounds x="1410" y="760" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_1xnstqr_di" bpmnElement="Activity_1xnstqr">
-        <dc:Bounds x="1580" y="650" width="100" height="80" />
+        <dc:Bounds x="1580" y="760" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_15f8u0i_di" bpmnElement="Activity_1xirwg3">
-        <dc:Bounds x="1220" y="410" width="100" height="80" />
+        <dc:Bounds x="1220" y="520" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_0xmezab_di" bpmnElement="Activity_0xmezab">
-        <dc:Bounds x="1230" y="650" width="100" height="80" />
+        <dc:Bounds x="1230" y="760" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_17abdcy_di" bpmnElement="Activity_1j0xkqc">
-        <dc:Bounds x="250" y="900" width="100" height="80" />
+        <dc:Bounds x="250" y="1010" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_0huy5ph_di" bpmnElement="Activity_0huy5ph">
-        <dc:Bounds x="390" y="900" width="100" height="80" />
+        <dc:Bounds x="390" y="1010" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_1tbardv_di" bpmnElement="Activity_1tbardv">
-        <dc:Bounds x="560" y="900" width="100" height="80" />
+        <dc:Bounds x="560" y="1010" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_0kp0sqc_di" bpmnElement="Event_0ocuo1o">
-        <dc:Bounds x="752" y="82" width="36" height="36" />
+        <dc:Bounds x="752" y="192" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="735" y="125" width="71" height="27" />
+          <dc:Bounds x="735" y="235" width="71" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_1aesimf_di" bpmnElement="Activity_1aesimf" isExpanded="true">
+        <dc:Bounds x="210" y="1240" width="770" height="170" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Flow_1bqk5yt_di" bpmnElement="Flow_1bqk5yt">
+        <di:waypoint x="630" y="1344" />
+        <di:waypoint x="710" y="1344" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_0tw7xsp_di" bpmnElement="Flow_0tw7xsp">
+        <di:waypoint x="278" y="1344" />
+        <di:waypoint x="380" y="1344" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_075rb1i_di" bpmnElement="Flow_075rb1i">
+        <di:waypoint x="480" y="1344" />
+        <di:waypoint x="530" y="1344" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_0y0r82m_di" bpmnElement="Flow_0y0r82m">
+        <di:waypoint x="810" y="1344" />
+        <di:waypoint x="892" y="1344" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Event_156ogc4_di" bpmnElement="Event_156ogc4">
+        <dc:Bounds x="242" y="1326" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Event_1n2qjvx_di" bpmnElement="Event_1n2qjvx">
+        <dc:Bounds x="892" y="1326" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_1eedm9e_di" bpmnElement="Activity_1eedm9e">
+        <dc:Bounds x="710" y="1304" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_1szd5yp_di" bpmnElement="Activity_1szd5yp">
+        <dc:Bounds x="530" y="1304" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_0lpw3j7_di" bpmnElement="Activity_0lpw3j7">
+        <dc:Bounds x="380" y="1304" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_0hioign_di" bpmnElement="Activity_0hioign" isExpanded="true">
+        <dc:Bounds x="320" y="1530" width="440" height="140" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Flow_0cvs8zk_di" bpmnElement="Flow_0cvs8zk">
+        <di:waypoint x="408" y="1591" />
+        <di:waypoint x="473" y="1591" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_01jdnrt_di" bpmnElement="Flow_01jdnrt">
+        <di:waypoint x="573" y="1591" />
+        <di:waypoint x="672" y="1591" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Activity_1f3cipf_di" bpmnElement="Activity_1f3cipf">
+        <dc:Bounds x="473" y="1551" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Event_18qzt1n_di" bpmnElement="Event_18qzt1n">
+        <dc:Bounds x="672" y="1573" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Event_0lvvn7i_di" bpmnElement="Event_0lvvn7i">
+        <dc:Bounds x="372" y="1573" width="36" height="36" />
+      </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeallocateAccessNSSI.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeallocateAccessNSSI.bpmn
index 4debe1f..ae81364 100644
--- a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeallocateAccessNSSI.bpmn
+++ b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeallocateAccessNSSI.bpmn
@@ -1,5 +1,5 @@
 <?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:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_17amn3o" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.1.1">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_17amn3o" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.10.0">
   <bpmn:process id="DoDeallocateAccessNSSI" name="DoDeallocateAccessNSSI" isExecutable="true">
     <bpmn:startEvent id="Event_0seox25" name="Start">
       <bpmn:outgoing>Flow_14g5p2j</bpmn:outgoing>
@@ -37,7 +37,7 @@
     <bpmn:sequenceFlow id="Flow_16hk034" name="No" sourceRef="Gateway_1ypyzn3" targetRef="Activity_0umktii" />
     <bpmn:sequenceFlow id="Flow_1she7i5" sourceRef="Activity_0szls0v" targetRef="Activity_0tbndh6" />
     <bpmn:intermediateThrowEvent id="Event_0vthuwp" name="Goto Terminate TN FH/MH NSSI">
-      <bpmn:incoming>Flow_1lfvp5s</bpmn:incoming>
+      <bpmn:incoming>Flow_01ssl7f</bpmn:incoming>
       <bpmn:linkEventDefinition id="LinkEventDefinition_0dpa9td" name="TerminateTnNSSI" />
     </bpmn:intermediateThrowEvent>
     <bpmn:intermediateCatchEvent id="Event_0opsm2p" name="TN FH/MH Termination">
@@ -45,9 +45,8 @@
       <bpmn:linkEventDefinition id="LinkEventDefinition_1gactc9" name="TerminateTnNSSI" />
     </bpmn:intermediateCatchEvent>
     <bpmn:sequenceFlow id="Flow_0cj22bs" sourceRef="Event_0opsm2p" targetRef="Activity_0uul9fb" />
-    <bpmn:sequenceFlow id="Flow_0412ven" sourceRef="Activity_0qho4pw" targetRef="Activity_03zg1pp" />
-    <bpmn:sequenceFlow id="Flow_0tlog6y" sourceRef="Activity_03zg1pp" targetRef="Activity_1ri9jrn" />
-    <bpmn:sequenceFlow id="Flow_1lfvp5s" sourceRef="Activity_1v1ra2k" targetRef="Event_0vthuwp" />
+    <bpmn:sequenceFlow id="Flow_0412ven" sourceRef="Activity_0qho4pw" targetRef="Gateway_11aiy0x" />
+    <bpmn:sequenceFlow id="Flow_1lfvp5s" sourceRef="Activity_1v1ra2k" targetRef="Gateway_0qsknv5" />
     <bpmn:scriptTask id="Activity_1i58rru" name="Fetch Related NSSI and Slice profile details" scriptFormat="groovy">
       <bpmn:incoming>Flow_1hm17vz</bpmn:incoming>
       <bpmn:outgoing>Flow_0kt6k2i</bpmn:outgoing>
@@ -84,7 +83,7 @@
 deallocator.performOofAnNfNSSITerminationCall(execution)</bpmn:script>
     </bpmn:scriptTask>
     <bpmn:intermediateThrowEvent id="Event_18fpd51" name="Goto Terminate TN FH/MH NSSI">
-      <bpmn:incoming>Flow_1x4e0k3</bpmn:incoming>
+      <bpmn:incoming>Flow_0b3qqvw</bpmn:incoming>
       <bpmn:linkEventDefinition id="LinkEventDefinition_07j10pb" name="TerminateTnNSSI" />
     </bpmn:intermediateThrowEvent>
     <bpmn:scriptTask id="Activity_1v1ra2k" name="Delete RAN NF NSSI" scriptFormat="groovy">
@@ -117,7 +116,7 @@
       <bpmn:outgoing>Flow_1x4e0k3</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="Flow_1bgguw0" sourceRef="Activity_17w3onz" targetRef="Activity_05frw6w" />
-    <bpmn:sequenceFlow id="Flow_1x4e0k3" sourceRef="Activity_05frw6w" targetRef="Event_18fpd51" />
+    <bpmn:sequenceFlow id="Flow_1x4e0k3" sourceRef="Activity_05frw6w" targetRef="Gateway_0jjou51" />
     <bpmn:scriptTask id="Activity_17w3onz" name="Update Job status" scriptFormat="groovy">
       <bpmn:incoming>Flow_0vcn5tl</bpmn:incoming>
       <bpmn:outgoing>Flow_1bgguw0</bpmn:outgoing>
@@ -623,14 +622,14 @@
 deallocator.deleteRanNfSliceProfileInAAI(execution)</bpmn:script>
     </bpmn:scriptTask>
     <bpmn:scriptTask id="Activity_03zg1pp" name="Delete TN Slice profiles" scriptFormat="groovy">
-      <bpmn:incoming>Flow_0412ven</bpmn:incoming>
-      <bpmn:outgoing>Flow_0tlog6y</bpmn:outgoing>
+      <bpmn:incoming>Flow_12wqmdr</bpmn:incoming>
+      <bpmn:outgoing>Flow_15ok12u</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def deallocator = new DoDeAllocateAccessNSSI()
 deallocator.deleteTNSliceProfileInAAI(execution)</bpmn:script>
     </bpmn:scriptTask>
     <bpmn:scriptTask id="Activity_1ri9jrn" name="Delete RAN NSSI" scriptFormat="groovy">
-      <bpmn:incoming>Flow_0tlog6y</bpmn:incoming>
+      <bpmn:incoming>Flow_183aijy</bpmn:incoming>
       <bpmn:outgoing>Flow_1nh3x4j</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def deallocator = new DoDeAllocateAccessNSSI()
@@ -639,7 +638,7 @@
     <bpmn:callActivity id="Activity_0umktii" name="Modify RAN NF NSSI" calledElement="DoModifyRanNfNssi">
       <bpmn:extensionElements>
         <camunda:in source="anNfNssiId" target="serviceInstanceID" />
-        <camunda:in source="anNfSliceProfileId" target="sliceProfileId" />
+        <camunda:in source="anNfSliceProfileId" target="SliceProfileId" />
         <camunda:in source="msoRequestId" target="msoRequestId" />
         <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
         <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
@@ -665,13 +664,78 @@
       <bpmn:errorEventDefinition id="ErrorEventDefinition_031y5kl" errorRef="Error_0i5gql0" />
     </bpmn:endEvent>
     <bpmn:sequenceFlow id="Flow_0x71rer" sourceRef="Activity_1wu2d9y" targetRef="Activity_0drkoau" />
+    <bpmn:exclusiveGateway id="Gateway_0jjou51" name="Is TN present?" default="Flow_0b3qqvw">
+      <bpmn:incoming>Flow_1x4e0k3</bpmn:incoming>
+      <bpmn:outgoing>Flow_0b3qqvw</bpmn:outgoing>
+      <bpmn:outgoing>Flow_1yewqtt</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="Flow_0b3qqvw" name="Yes" sourceRef="Gateway_0jjou51" targetRef="Event_18fpd51" />
+    <bpmn:intermediateThrowEvent id="Event_05q1nj2" name="Goto AAI Updates">
+      <bpmn:incoming>Flow_1yewqtt</bpmn:incoming>
+      <bpmn:linkEventDefinition id="LinkEventDefinition_1tasi5v" name="UpdateAAI" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="Flow_1yewqtt" name="No" sourceRef="Gateway_0jjou51" targetRef="Event_05q1nj2">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("IsRANNfAlonePresent" )  == true)}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:exclusiveGateway id="Gateway_0qsknv5" name="Is TN present?" default="Flow_01ssl7f">
+      <bpmn:incoming>Flow_1lfvp5s</bpmn:incoming>
+      <bpmn:outgoing>Flow_01ssl7f</bpmn:outgoing>
+      <bpmn:outgoing>Flow_1scubfn</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="Flow_01ssl7f" name="Yes" sourceRef="Gateway_0qsknv5" targetRef="Event_0vthuwp" />
+    <bpmn:intermediateThrowEvent id="Event_0y39bzp" name="Goto AAI Updates">
+      <bpmn:incoming>Flow_1scubfn</bpmn:incoming>
+      <bpmn:linkEventDefinition id="LinkEventDefinition_01g0uqc" name="UpdateAAI" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="Flow_1scubfn" name="No" sourceRef="Gateway_0qsknv5" targetRef="Event_0y39bzp">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("IsRANNfAlonePresent" )  == true)}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:exclusiveGateway id="Gateway_11aiy0x" name="Is TN present?" default="Flow_12wqmdr">
+      <bpmn:incoming>Flow_0412ven</bpmn:incoming>
+      <bpmn:outgoing>Flow_12wqmdr</bpmn:outgoing>
+      <bpmn:outgoing>Flow_0r8ldai</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="Flow_12wqmdr" name="Yes" sourceRef="Gateway_11aiy0x" targetRef="Activity_03zg1pp" />
+    <bpmn:sequenceFlow id="Flow_0r8ldai" name="No" sourceRef="Gateway_11aiy0x" targetRef="Gateway_187nc60">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("IsRANNfAlonePresent" )  == true)}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="Flow_183aijy" sourceRef="Gateway_187nc60" targetRef="Activity_1ri9jrn" />
+    <bpmn:parallelGateway id="Gateway_187nc60">
+      <bpmn:incoming>Flow_0r8ldai</bpmn:incoming>
+      <bpmn:incoming>Flow_15ok12u</bpmn:incoming>
+      <bpmn:outgoing>Flow_183aijy</bpmn:outgoing>
+    </bpmn:parallelGateway>
+    <bpmn:sequenceFlow id="Flow_15ok12u" sourceRef="Activity_03zg1pp" targetRef="Gateway_187nc60" />
   </bpmn:process>
   <bpmn:error id="Error_0i5gql0" name="DeallocateWorkflowError" errorCode="2500" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeallocateAccessNSSI">
+      <bpmndi:BPMNEdge id="Flow_0x71rer_di" bpmnElement="Flow_0x71rer">
+        <di:waypoint x="1275" y="650" />
+        <di:waypoint x="1320" y="650" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_0k55zuy_di" bpmnElement="Flow_0k55zuy">
+        <di:waypoint x="1650" y="215" />
+        <di:waypoint x="1650" y="100" />
+        <di:waypoint x="1822" y="100" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1658" y="155" width="15" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_0vcn5tl_di" bpmnElement="Flow_0vcn5tl">
+        <di:waypoint x="1675" y="240" />
+        <di:waypoint x="1820" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1739" y="222" width="18" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_18y4ab2_di" bpmnElement="Flow_18y4ab2">
+        <di:waypoint x="1500" y="240" />
+        <di:waypoint x="1625" y="240" />
+      </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0omhxaj_di" bpmnElement="Flow_0omhxaj">
         <di:waypoint x="238" y="1110" />
-        <di:waypoint x="360" y="1110" />
+        <di:waypoint x="290" y="1110" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_03fig6p_di" bpmnElement="Flow_03fig6p">
         <di:waypoint x="2085" y="880" />
@@ -767,10 +831,6 @@
         <di:waypoint x="1420" y="650" />
         <di:waypoint x="1460" y="650" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_0x71rer_di" bpmnElement="Flow_0x71rer">
-        <di:waypoint x="1275" y="650" />
-        <di:waypoint x="1320" y="650" />
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1s5fdmz_di" bpmnElement="Flow_1s5fdmz">
         <di:waypoint x="1130" y="650" />
         <di:waypoint x="1175" y="650" />
@@ -810,7 +870,7 @@
         <di:waypoint x="1207" y="1110" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1nh3x4j_di" bpmnElement="Flow_1nh3x4j">
-        <di:waypoint x="810" y="1110" />
+        <di:waypoint x="840" y="1110" />
         <di:waypoint x="880" y="1110" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_15bkzm7_di" bpmnElement="Flow_15bkzm7">
@@ -844,7 +904,7 @@
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1x4e0k3_di" bpmnElement="Flow_1x4e0k3">
         <di:waypoint x="2130" y="240" />
-        <di:waypoint x="2232" y="240" />
+        <di:waypoint x="2235" y="240" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1bgguw0_di" bpmnElement="Flow_1bgguw0">
         <di:waypoint x="1920" y="240" />
@@ -852,15 +912,11 @@
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_1lfvp5s_di" bpmnElement="Flow_1lfvp5s">
         <di:waypoint x="2380" y="410" />
-        <di:waypoint x="2422" y="410" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_0tlog6y_di" bpmnElement="Flow_0tlog6y">
-        <di:waypoint x="630" y="1110" />
-        <di:waypoint x="710" y="1110" />
+        <di:waypoint x="2435" y="410" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0412ven_di" bpmnElement="Flow_0412ven">
-        <di:waypoint x="460" y="1110" />
-        <di:waypoint x="530" y="1110" />
+        <di:waypoint x="390" y="1110" />
+        <di:waypoint x="435" y="1110" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="Flow_0cj22bs_di" bpmnElement="Flow_0cj22bs">
         <di:waypoint x="238" y="880" />
@@ -920,25 +976,58 @@
         <di:waypoint x="238" y="410" />
         <di:waypoint x="290" y="410" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_18y4ab2_di" bpmnElement="Flow_18y4ab2">
-        <di:waypoint x="1500" y="240" />
-        <di:waypoint x="1625" y="240" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_0vcn5tl_di" bpmnElement="Flow_0vcn5tl">
-        <di:waypoint x="1675" y="240" />
-        <di:waypoint x="1820" y="240" />
+      <bpmndi:BPMNEdge id="Flow_0b3qqvw_di" bpmnElement="Flow_0b3qqvw">
+        <di:waypoint x="2285" y="240" />
+        <di:waypoint x="2362" y="240" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1739" y="222" width="18" height="14" />
+          <dc:Bounds x="2315" y="222" width="18" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_0k55zuy_di" bpmnElement="Flow_0k55zuy">
-        <di:waypoint x="1650" y="215" />
-        <di:waypoint x="1650" y="100" />
-        <di:waypoint x="1822" y="100" />
+      <bpmndi:BPMNEdge id="Flow_1yewqtt_di" bpmnElement="Flow_1yewqtt">
+        <di:waypoint x="2260" y="265" />
+        <di:waypoint x="2260" y="282" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1658" y="155" width="15" height="14" />
+          <dc:Bounds x="2268" y="271" width="15" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_01ssl7f_di" bpmnElement="Flow_01ssl7f">
+        <di:waypoint x="2485" y="410" />
+        <di:waypoint x="2552" y="410" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2510" y="392" width="18" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_1scubfn_di" bpmnElement="Flow_1scubfn">
+        <di:waypoint x="2460" y="435" />
+        <di:waypoint x="2460" y="482" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2468" y="456" width="15" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_12wqmdr_di" bpmnElement="Flow_12wqmdr">
+        <di:waypoint x="460" y="1135" />
+        <di:waypoint x="460" y="1260" />
+        <di:waypoint x="520" y="1260" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="466" y="1199" width="18" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_0r8ldai_di" bpmnElement="Flow_0r8ldai">
+        <di:waypoint x="485" y="1110" />
+        <di:waypoint x="655" y="1110" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="589" y="1092" width="15" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_183aijy_di" bpmnElement="Flow_183aijy">
+        <di:waypoint x="705" y="1110" />
+        <di:waypoint x="740" y="1110" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_15ok12u_di" bpmnElement="Flow_15ok12u">
+        <di:waypoint x="620" y="1260" />
+        <di:waypoint x="680" y="1260" />
+        <di:waypoint x="680" y="1135" />
+      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="Event_0seox25_di" bpmnElement="Event_0seox25">
         <dc:Bounds x="202" y="392" width="36" height="36" />
         <bpmndi:BPMNLabel>
@@ -957,12 +1046,6 @@
       <bpmndi:BPMNShape id="Gateway_1ypyzn3_di" bpmnElement="Gateway_1ypyzn3" isMarkerVisible="true">
         <dc:Bounds x="1265" y="385" width="50" height="50" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_1dvx4n9_di" bpmnElement="Event_0vthuwp">
-        <dc:Bounds x="2422" y="392" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="2399" y="438" width="82" height="27" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_1ekryu8_di" bpmnElement="Event_0opsm2p">
         <dc:Bounds x="202" y="862" width="36" height="36" />
         <bpmndi:BPMNLabel>
@@ -984,15 +1067,15 @@
       <bpmndi:BPMNShape id="Activity_1h4jup8_di" bpmnElement="Activity_0gzrekf">
         <dc:Bounds x="1100" y="370" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_18fpd51_di" bpmnElement="Event_18fpd51">
-        <dc:Bounds x="2232" y="222" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="2209" y="268" width="82" height="27" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_0m43umg_di" bpmnElement="Activity_1v1ra2k">
         <dc:Bounds x="2280" y="370" width="100" height="80" />
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_05frw6w_di" bpmnElement="Activity_05frw6w">
+        <dc:Bounds x="2030" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_0njdei2_di" bpmnElement="Activity_17w3onz">
+        <dc:Bounds x="1820" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_1i1fknn_di" bpmnElement="Activity_1irtrgt">
         <dc:Bounds x="1970" y="370" width="100" height="80" />
       </bpmndi:BPMNShape>
@@ -1029,21 +1112,94 @@
       <bpmndi:BPMNShape id="Activity_1i9b3oi_di" bpmnElement="Activity_114fx71">
         <dc:Bounds x="1330" y="840" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_01s2lve_di" bpmnElement="Activity_0umktii">
-        <dc:Bounds x="1400" y="200" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_05frw6w_di" bpmnElement="Activity_05frw6w">
-        <dc:Bounds x="2030" y="200" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_0njdei2_di" bpmnElement="Activity_17w3onz">
-        <dc:Bounds x="1820" y="200" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Gateway_0g02vzi_di" bpmnElement="Gateway_0g02vzi" isMarkerVisible="true">
-        <dc:Bounds x="1625" y="215" width="50" height="50" />
+      <bpmndi:BPMNShape id="Event_18fpd51_di" bpmnElement="Event_18fpd51">
+        <dc:Bounds x="2362" y="222" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1619" y="272" width="63" height="27" />
+          <dc:Bounds x="2340" y="268" width="81" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Event_1dvx4n9_di" bpmnElement="Event_0vthuwp">
+        <dc:Bounds x="2552" y="392" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2530" y="438" width="81" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Gateway_0jjou51_di" bpmnElement="Gateway_0jjou51" isMarkerVisible="true">
+        <dc:Bounds x="2235" y="215" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2224" y="185" width="73" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Event_05q1nj2_di" bpmnElement="Event_05q1nj2">
+        <dc:Bounds x="2242" y="282" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2218" y="328" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Gateway_0qsknv5_di" bpmnElement="Gateway_0qsknv5" isMarkerVisible="true">
+        <dc:Bounds x="2435" y="385" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2423" y="361" width="73" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Event_0y39bzp_di" bpmnElement="Event_0y39bzp">
+        <dc:Bounds x="2442" y="482" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2418" y="528" width="90" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_0r4899a_di" bpmnElement="Activity_0qho4pw">
+        <dc:Bounds x="290" y="1070" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Gateway_11aiy0x_di" bpmnElement="Gateway_11aiy0x" isMarkerVisible="true">
+        <dc:Bounds x="435" y="1085" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="424" y="1055" width="73" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_0b0pl0x_di" bpmnElement="Activity_03zg1pp">
+        <dc:Bounds x="520" y="1220" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_0dreslj_di" bpmnElement="Activity_1ri9jrn">
+        <dc:Bounds x="740" y="1070" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Gateway_10923hr_di" bpmnElement="Gateway_187nc60">
+        <dc:Bounds x="655" y="1085" width="50" height="50" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_0qbd3cz_di" bpmnElement="Activity_0qbd3cz" isExpanded="true">
+        <dc:Bounds x="820" y="1310" width="770" height="170" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Flow_0nsc2oc_di" bpmnElement="Flow_0nsc2oc">
+        <di:waypoint x="1240" y="1414" />
+        <di:waypoint x="1320" y="1414" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_1q1450g_di" bpmnElement="Flow_1q1450g">
+        <di:waypoint x="888" y="1414" />
+        <di:waypoint x="990" y="1414" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_0alqcat_di" bpmnElement="Flow_0alqcat">
+        <di:waypoint x="1090" y="1414" />
+        <di:waypoint x="1140" y="1414" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_035ivcv_di" bpmnElement="Flow_035ivcv">
+        <di:waypoint x="1420" y="1414" />
+        <di:waypoint x="1502" y="1414" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Event_13wl9ag_di" bpmnElement="Event_13wl9ag">
+        <dc:Bounds x="852" y="1396" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Event_0ugnt78_di" bpmnElement="Event_0ugnt78">
+        <dc:Bounds x="1502" y="1396" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_1mzoss1_di" bpmnElement="Activity_1mzoss1">
+        <dc:Bounds x="1320" y="1374" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_055w5hr_di" bpmnElement="Activity_055w5hr">
+        <dc:Bounds x="1140" y="1374" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_1nr7xyr_di" bpmnElement="Activity_1nr7xyr">
+        <dc:Bounds x="990" y="1374" width="100" height="80" />
+      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_0jtob0z_di" bpmnElement="Activity_0jtob0z">
         <dc:Bounds x="1780" y="610" width="100" height="80" />
       </bpmndi:BPMNShape>
@@ -1074,6 +1230,26 @@
       <bpmndi:BPMNShape id="Activity_10vgzv9_di" bpmnElement="Activity_0lszayp">
         <dc:Bounds x="1720" y="370" width="100" height="80" />
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_0c0vkj6_di" bpmnElement="Activity_0c0vkj6" isExpanded="true">
+        <dc:Bounds x="930" y="1600" width="440" height="140" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Flow_0bkcs42_di" bpmnElement="Flow_0bkcs42">
+        <di:waypoint x="1018" y="1661" />
+        <di:waypoint x="1083" y="1661" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="Flow_1b5mtc4_di" bpmnElement="Flow_1b5mtc4">
+        <di:waypoint x="1183" y="1661" />
+        <di:waypoint x="1282" y="1661" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="Event_1bqq1on_di" bpmnElement="Event_1bqq1on">
+        <dc:Bounds x="982" y="1643" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Event_0qb738v_di" bpmnElement="Event_0qb738v">
+        <dc:Bounds x="1282" y="1643" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="Activity_0187ysa_di" bpmnElement="Activity_0187ysa">
+        <dc:Bounds x="1083" y="1621" width="100" height="80" />
+      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Activity_115teb9_di" bpmnElement="Activity_115teb9">
         <dc:Bounds x="1460" y="610" width="100" height="80" />
       </bpmndi:BPMNShape>
@@ -1155,72 +1331,18 @@
           <dc:Bounds x="189" y="1135" width="62" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_0r4899a_di" bpmnElement="Activity_0qho4pw">
-        <dc:Bounds x="360" y="1070" width="100" height="80" />
+      <bpmndi:BPMNShape id="Activity_01s2lve_di" bpmnElement="Activity_0umktii">
+        <dc:Bounds x="1400" y="200" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_0b0pl0x_di" bpmnElement="Activity_03zg1pp">
-        <dc:Bounds x="530" y="1070" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_0dreslj_di" bpmnElement="Activity_1ri9jrn">
-        <dc:Bounds x="710" y="1070" width="100" height="80" />
+      <bpmndi:BPMNShape id="Gateway_0g02vzi_di" bpmnElement="Gateway_0g02vzi" isMarkerVisible="true">
+        <dc:Bounds x="1625" y="215" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1619" y="272" width="63" height="27" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="Event_1m6hsxq_di" bpmnElement="Event_161u9s2">
         <dc:Bounds x="1822" y="82" width="36" height="36" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_0qbd3cz_di" bpmnElement="Activity_0qbd3cz" isExpanded="true">
-        <dc:Bounds x="820" y="1310" width="770" height="170" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="Flow_0nsc2oc_di" bpmnElement="Flow_0nsc2oc">
-        <di:waypoint x="1240" y="1414" />
-        <di:waypoint x="1320" y="1414" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_1q1450g_di" bpmnElement="Flow_1q1450g">
-        <di:waypoint x="888" y="1414" />
-        <di:waypoint x="990" y="1414" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_0alqcat_di" bpmnElement="Flow_0alqcat">
-        <di:waypoint x="1090" y="1414" />
-        <di:waypoint x="1140" y="1414" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_035ivcv_di" bpmnElement="Flow_035ivcv">
-        <di:waypoint x="1420" y="1414" />
-        <di:waypoint x="1502" y="1414" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="Event_13wl9ag_di" bpmnElement="Event_13wl9ag">
-        <dc:Bounds x="852" y="1396" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_0ugnt78_di" bpmnElement="Event_0ugnt78">
-        <dc:Bounds x="1502" y="1396" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_1mzoss1_di" bpmnElement="Activity_1mzoss1">
-        <dc:Bounds x="1320" y="1374" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_055w5hr_di" bpmnElement="Activity_055w5hr">
-        <dc:Bounds x="1140" y="1374" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_1nr7xyr_di" bpmnElement="Activity_1nr7xyr">
-        <dc:Bounds x="990" y="1374" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_0c0vkj6_di" bpmnElement="Activity_0c0vkj6" isExpanded="true">
-        <dc:Bounds x="930" y="1600" width="440" height="140" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="Flow_0bkcs42_di" bpmnElement="Flow_0bkcs42">
-        <di:waypoint x="1018" y="1661" />
-        <di:waypoint x="1083" y="1661" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_1b5mtc4_di" bpmnElement="Flow_1b5mtc4">
-        <di:waypoint x="1183" y="1661" />
-        <di:waypoint x="1282" y="1661" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="Event_1bqq1on_di" bpmnElement="Event_1bqq1on">
-        <dc:Bounds x="982" y="1643" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_0qb738v_di" bpmnElement="Event_0qb738v">
-        <dc:Bounds x="1282" y="1643" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_0187ysa_di" bpmnElement="Activity_0187ysa">
-        <dc:Bounds x="1083" y="1621" width="100" height="80" />
-      </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn:definitions>
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/Resource.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/Resource.java
index 2a8852a..57ff837 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/Resource.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/Resource.java
@@ -40,6 +40,8 @@
     private String cvnfModuleCustomizationId;
     private String instanceName;
     private String modelInvariantId;
+    private String modelVersionId;
+    private String modelCustomizationId;
     private int processingPriority;
     private Resource parent;
     private List<Resource> children;
@@ -140,6 +142,21 @@
         this.modelInvariantId = modelInvariantId;
     }
 
+    public String getModelVersionId() {
+        return modelVersionId;
+    }
+
+    public void setModelVersionId(String modelVersionId) {
+        this.modelVersionId = modelVersionId;
+    }
+
+    public String getModelCustomizationId() {
+        return modelCustomizationId;
+    }
+
+    public void setModelCustomizationId(String modelCustomizationId) {
+        this.modelCustomizationId = modelCustomizationId;
+    }
 
     public int getProcessingPriority() {
         return processingPriority == 0 ? (isBaseVfModule() ? Integer.MIN_VALUE + 1 : 0) : processingPriority;
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java
index b5ad8d8..cb4ee01 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java
@@ -38,6 +38,8 @@
 import org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowType;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
+import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoNetwork;
+import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoPnf;
 import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetup;
 import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetupUtils;
 import org.onap.so.client.exception.ExceptionBuilder;
@@ -199,6 +201,7 @@
             var serviceResource =
                     new Resource(WorkflowType.SERVICE, serviceInstanceMSO.getServiceInstanceId(), false, null);
             serviceResource.setModelInvariantId(serviceInstanceAAI.getModelInvariantId());
+            serviceResource.setModelVersionId(serviceInstanceAAI.getModelVersionId());
             resourceList.add(serviceResource);
             traverseServiceInstanceMSOVnfs(resourceList, serviceResource, aaiResourceIds, serviceInstanceMSO);
             traverseServiceInstanceMSOPnfs(resourceList, serviceResource, aaiResourceIds, serviceInstanceMSO);
@@ -206,8 +209,15 @@
                 for (org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network : serviceInstanceMSO
                         .getNetworks()) {
                     aaiResourceIds.add(new Pair<>(WorkflowType.NETWORK, network.getNetworkId()));
-                    resourceList
-                            .add(new Resource(WorkflowType.NETWORK, network.getNetworkId(), false, serviceResource));
+                    Resource networkResource =
+                            new Resource(WorkflowType.NETWORK, network.getNetworkId(), false, serviceResource);
+                    ModelInfoNetwork modelInfoNetwork = network.getModelInfoNetwork();
+                    if (modelInfoNetwork != null) {
+                        networkResource.setModelCustomizationId(modelInfoNetwork.getModelCustomizationUUID());
+                        networkResource.setModelVersionId(modelInfoNetwork.getModelUUID());
+                        networkResource.setModelCustomizationId(modelInfoNetwork.getModelCustomizationUUID());
+                    }
+                    resourceList.add(networkResource);
                 }
             }
             if (serviceInstanceMSO.getCollection() != null) {
@@ -252,6 +262,8 @@
             GenericVnf genericVnf = bbInputSetupUtils.getAAIGenericVnf(vnf.getVnfId());
             Resource vnfResource = new Resource(WorkflowType.VNF, vnf.getVnfId(), false, serviceResource);
             vnfResource.setVnfCustomizationId(genericVnf.getModelCustomizationId());
+            vnfResource.setModelCustomizationId(genericVnf.getModelCustomizationId());
+            vnfResource.setModelVersionId(genericVnf.getModelVersionId());
             resourceList.add(vnfResource);
             traverseVnfModules(resourceList, vnfResource, aaiResourceIds, vnf);
             if (vnf.getVolumeGroups() != null) {
@@ -272,7 +284,13 @@
         }
         for (org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf : serviceInstanceMSO.getPnfs()) {
             aaiResourceIds.add(new Pair<>(WorkflowType.PNF, pnf.getPnfId()));
-            resourceList.add(new Resource(WorkflowType.PNF, pnf.getPnfId(), false, serviceResource));
+            Resource resource = new Resource(WorkflowType.PNF, pnf.getPnfId(), false, serviceResource);
+            ModelInfoPnf modelInfo = pnf.getModelInfoPnf();
+            if (modelInfo != null) {
+                resource.setModelVersionId(modelInfo.getModelUuid());
+                resource.setModelCustomizationId(modelInfo.getModelCustomizationUuid());
+            }
+            resourceList.add(resource);
         }
     }
 
@@ -437,6 +455,10 @@
         for (VfModule vfModule : vnf.getVfModules()) {
             aaiResourceIds.add(new Pair<>(WorkflowType.VFMODULE, vfModule.getVfModuleId()));
             Resource resource = new Resource(WorkflowType.VFMODULE, vfModule.getVfModuleId(), false, vnfResource);
+            org.onap.aai.domain.yang.VfModule aaiVfModule =
+                    bbInputSetupUtils.getAAIVfModule(vnf.getVnfId(), vfModule.getVfModuleId());
+            resource.setModelCustomizationId(aaiVfModule.getModelCustomizationId());
+            resource.setModelInvariantId(aaiVfModule.getModelInvariantId());
             resource.setBaseVfModule(vfModule.getModelInfoVfModule().getIsBaseBoolean());
             resourceList.add(resource);
         }
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversal.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversal.java
index c383b4a..77cd65b 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversal.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/UserParamsServiceTraversal.java
@@ -38,6 +38,7 @@
 import org.onap.so.db.catalog.beans.CvnfcCustomization;
 import org.onap.so.db.catalog.beans.VfModuleCustomization;
 import org.onap.so.db.catalog.client.CatalogDbClient;
+import org.onap.so.serviceinstancebeans.ModelInfo;
 import org.onap.so.serviceinstancebeans.Networks;
 import org.onap.so.serviceinstancebeans.Pnfs;
 import org.onap.so.serviceinstancebeans.Service;
@@ -93,6 +94,11 @@
         List<Resource> resourceList = new ArrayList<>();
         Resource serviceResource =
                 new Resource(WorkflowType.SERVICE, validate.getModelInfo().getModelVersionId(), false, null);
+        ModelInfo modelInfo = validate.getModelInfo();
+        if (modelInfo != null) {
+            serviceResource.setModelVersionId(modelInfo.getModelVersionId());
+            serviceResource.setModelInvariantId(modelInfo.getModelInvariantUuid());
+        }
         resourceList.add(serviceResource);
         if (validate.getResources().getVnfs() != null) {
             setResourceListForVnfs(execution, resourceList, serviceResource, validate);
@@ -115,6 +121,11 @@
                     serviceResource);
             vnfResource.setProcessingPriority(vnf.getProcessingPriority());
             vnfResource.setInstanceName(vnf.getInstanceName());
+            ModelInfo modelInfo = vnf.getModelInfo();
+            if (modelInfo != null) {
+                vnfResource.setModelCustomizationId(modelInfo.getModelCustomizationUuid());
+                vnfResource.setModelVersionId(modelInfo.getModelVersionId());
+            }
             resourceList.add(vnfResource);
             setResourceListForVfModules(execution, resourceList, vnfResource, validate, vnf);
         }
@@ -160,6 +171,11 @@
             foundVfModuleOrVG = true;
             Resource resource =
                     setVfModuleWorkFlowTypeToResourceList(resourceList, vnfResource, vfModuleCustomization, vfModule);
+            if (vnf.getModelInfo() != null) {
+                resource.setModelVersionId(vnf.getModelInfo().getModelVersionId());
+            }
+            resource.setVfModuleCustomizationId(vfModuleCustomization.getModelCustomizationUUID());
+            resource.setModelCustomizationId(vfModuleCustomization.getModelCustomizationUUID());
             setConfigurationWorkFlowTypeToResourceList(resourceList, vnfResource, validate, vnf, vfModule, resource);
         }
     }
@@ -211,6 +227,11 @@
         for (Pnfs pnf : validate.getResources().getPnfs()) {
             Resource pnfResource = new Resource(WorkflowType.PNF, pnf.getModelInfo().getModelCustomizationId(), false,
                     serviceResource);
+            ModelInfo modelInfo = pnf.getModelInfo();
+            if (modelInfo != null) {
+                pnfResource.setModelCustomizationId(modelInfo.getModelCustomizationUuid());
+                pnfResource.setModelVersionId(modelInfo.getModelVersionId());
+            }
             pnfResource.setProcessingPriority(pnf.getProcessingPriority());
             resourceList.add(pnfResource);
         }
@@ -222,6 +243,11 @@
             Resource networkResource = new Resource(WorkflowType.NETWORK,
                     network.getModelInfo().getModelCustomizationId(), false, serviceResource);
             networkResource.setProcessingPriority(network.getProcessingPriority());
+            ModelInfo modelInfo = network.getModelInfo();
+            if (modelInfo != null) {
+                networkResource.setModelCustomizationId(modelInfo.getModelCustomizationUuid());
+                networkResource.setModelVersionId(modelInfo.getModelVersionId());
+            }
             resourceList.add(networkResource);
         }
         if (requestAction.equals(CREATE_INSTANCE)) {
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoader.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoader.java
index b950eb4..3778f64 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoader.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoader.java
@@ -40,7 +40,6 @@
 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
-import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
 import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetup;
 import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetupUtils;
 import org.onap.so.client.exception.ExceptionBuilder;
@@ -117,6 +116,9 @@
             if (vnf.getVnfId().equals(vnfId)) {
                 aaiResourceIds.add(new Pair<>(WorkflowType.VNF, vnf.getVnfId()));
                 Resource vnfResource = new Resource(WorkflowType.VNF, vnf.getVnfId(), false, serviceResource);
+                org.onap.aai.domain.yang.GenericVnf aaiGenericVnf = bbInputSetupUtils.getAAIGenericVnf(vnfId);
+                vnfResource.setModelCustomizationId(aaiGenericVnf.getModelCustomizationId());
+                vnfResource.setModelVersionId(aaiGenericVnf.getModelVersionId());
                 resourceList.add(vnfResource);
                 processVfModules(vnf, aaiResourceIds, resourceList, vnfResource, execution);
                 processVolumeGroups(vnf, aaiResourceIds, resourceList, vnfResource);
@@ -131,8 +133,11 @@
         for (GenericVnf vnf : serviceInstanceMSO.getVnfs()) {
             if (vnf.getVnfId().equals(vnfId)) {
                 aaiResourceIds.add(new Pair<>(WorkflowType.VNF, vnf.getVnfId()));
-                Resource vnfResource = new Resource(WorkflowType.VNF,
-                        bbInputSetupUtils.getAAIGenericVnf(vnfId).getModelCustomizationId(), false, serviceResource);
+                org.onap.aai.domain.yang.GenericVnf aaiGenericVnf = bbInputSetupUtils.getAAIGenericVnf(vnfId);
+                Resource vnfResource =
+                        new Resource(WorkflowType.VNF, aaiGenericVnf.getModelCustomizationId(), false, serviceResource);
+                vnfResource.setModelCustomizationId(aaiGenericVnf.getModelCustomizationId());
+                vnfResource.setModelVersionId(aaiGenericVnf.getModelVersionId());
                 resourceList.add(vnfResource);
                 processVfModules(vnf, aaiResourceIds, resourceList, vnfResource, execution);
                 processVolumeGroups(vnf, aaiResourceIds, resourceList, vnfResource);
@@ -141,10 +146,10 @@
         }
     }
 
-    private void findConfigurationsInsideVfModule(DelegateExecution execution, String vnfId, String vfModuleId,
-            List<Resource> resourceList, Resource vfModuleResource, List<Pair<WorkflowType, String>> aaiResourceIds) {
+    private void findConfigurationsInsideVfModule(DelegateExecution execution,
+            org.onap.aai.domain.yang.VfModule aaiVfModule, List<Resource> resourceList, Resource vfModuleResource,
+            List<Pair<WorkflowType, String>> aaiResourceIds) {
         try {
-            org.onap.aai.domain.yang.VfModule aaiVfModule = bbInputSetupUtils.getAAIVfModule(vnfId, vfModuleId);
             AAIResultWrapper vfModuleWrapper = new AAIResultWrapper(
                     new AAICommonObjectMapperProvider().getMapper().writeValueAsString(aaiVfModule));
             Optional<Relationships> relationshipsOp;
@@ -166,11 +171,14 @@
                 aaiResourceIds.add(new Pair<>(WorkflowType.VFMODULE, vfModule.getVfModuleId()));
                 Resource vfModuleResource =
                         new Resource(WorkflowType.VFMODULE, vfModule.getVfModuleId(), false, vnfResource);
-                Optional.ofNullable(vfModule.getModelInfoVfModule()).map(ModelInfoVfModule::getIsBaseBoolean)
-                        .ifPresent(vfModuleResource::setBaseVfModule);
+                org.onap.aai.domain.yang.VfModule aaiVfModule =
+                        bbInputSetupUtils.getAAIVfModule(vnf.getVnfId(), vfModule.getVfModuleId());
+                vfModuleResource.setModelInvariantId(aaiVfModule.getModelInvariantId());
+                vfModuleResource.setModelCustomizationId(aaiVfModule.getModelCustomizationId());
+                vfModuleResource.setBaseVfModule(aaiVfModule.isIsBaseVfModule());
                 resourceList.add(vfModuleResource);
-                findConfigurationsInsideVfModule(execution, vnf.getVnfId(), vfModule.getVfModuleId(), resourceList,
-                        vfModuleResource, aaiResourceIds);
+                findConfigurationsInsideVfModule(execution, aaiVfModule, resourceList, vfModuleResource,
+                        aaiResourceIds);
             }
         }
     }
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListener.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListener.java
index ff6c113..dc77ea1 100644
--- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListener.java
+++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListener.java
@@ -24,12 +24,10 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-import org.apache.logging.log4j.util.Strings;
 import org.onap.so.bpmn.common.BBConstants;
 import org.onap.so.bpmn.common.BuildingBlockExecution;
-import org.onap.so.bpmn.common.listener.flowmanipulator.FlowManipulatorListenerRunner;
 import org.onap.so.bpmn.common.listener.flowmanipulator.PreFlowManipulator;
-import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
+import org.onap.so.bpmn.infrastructure.workflow.tasks.Resource;
 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
 import org.onap.so.db.catalog.beans.PnfResourceCustomization;
 import org.onap.so.db.catalog.beans.Service;
@@ -40,7 +38,6 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
 
 @Component
 public class SkipCDSBuildingBlockListener implements PreFlowManipulator {
@@ -76,43 +73,37 @@
     @Override
     public void run(List<ExecuteBuildingBlock> flowsToExecute, ExecuteBuildingBlock currentBB,
             BuildingBlockExecution execution) {
-        String customizationUUID = currentBB.getBuildingBlock().getKey();
+        String resourceKey = currentBB.getBuildingBlock().getKey();
+        List<Resource> resources = execution.getVariable("resources");
+        Resource resource = resources.stream().filter(r -> resourceKey.equals(r.getResourceId())).findFirst()
+                .orElseThrow(() -> new IllegalArgumentException("Resource not found for key:" + resourceKey));
 
-        if ("SERVICE".equalsIgnoreCase(currentBB.getBuildingBlock().getBpmnScope())) {
-            String modelUUID = currentBB.getRequestDetails().getModelInfo().getModelUuid();
-            Service service = catalogDbClient.getServiceByID(modelUUID);
+        String scope = currentBB.getBuildingBlock().getBpmnScope();
+
+        if ("SERVICE".equalsIgnoreCase(scope)) {
+            Service service = catalogDbClient.getServiceByID(resource.getModelVersionId());
             currentSequenceSkipCheck(execution, service.getSkipPostInstConf());
-        } else if (currentBB.getBuildingBlock().getBpmnScope().equalsIgnoreCase("VNF")
-                && containsIgnoreCaseAction(currentBB, vnfActions)) {
-            List<VnfResourceCustomization> vnfResourceCustomizations =
-                    catalogDbClient.getVnfResourceCustomizationByModelUuid(
-                            currentBB.getRequestDetails().getModelInfo().getModelUuid());
-            if (!CollectionUtils.isEmpty(vnfResourceCustomizations)) {
-                VnfResourceCustomization vrc = catalogDbClient.findVnfResourceCustomizationInList(customizationUUID,
-                        vnfResourceCustomizations);
-                if (null != vrc) {
-                    logger.debug("getSkipPostInstConf value: " + vrc.getSkipPostInstConf().booleanValue());
-                    boolean skipConfigVNF = vrc.getSkipPostInstConf().booleanValue();
-                    currentSequenceSkipCheck(execution, skipConfigVNF);
-                }
-
+        } else if ("VNF".equalsIgnoreCase(scope) && containsIgnoreCaseAction(currentBB, vnfActions)) {
+            VnfResourceCustomization vrc = catalogDbClient
+                    .getVnfResourceCustomizationByModelCustomizationUUID(resource.getModelCustomizationId());
+            if (vrc != null) {
+                logger.debug("getSkipPostInstConf value: " + vrc.getSkipPostInstConf());
+                boolean skipConfigVNF = vrc.getSkipPostInstConf();
+                currentSequenceSkipCheck(execution, skipConfigVNF);
             }
         } else if (currentBB.getBuildingBlock().getBpmnScope().equalsIgnoreCase("VFModule")
                 && containsIgnoreCaseAction(currentBB, vFModuleAction)) {
-
-            VfModuleCustomization vfc =
-                    catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID(customizationUUID);
-
+            VfModuleCustomization vfc = catalogDbClient
+                    .getVfModuleCustomizationByModelCuztomizationUUID(resource.getModelCustomizationId());
             if (null != vfc) {
                 logger.debug("getSkipPostInstConf value: " + vfc.getSkipPostInstConf().booleanValue());
                 boolean skipVfModule = vfc.getSkipPostInstConf();
                 currentSequenceSkipCheck(execution, skipVfModule);
             }
-
         } else if (currentBB.getBuildingBlock().getBpmnScope().equalsIgnoreCase("PNF")
                 && containsIgnoreCaseAction(currentBB, pnfActions)) {
-            PnfResourceCustomization pnfResourceCustomization =
-                    catalogDbClient.getPnfResourceCustomizationByModelCustomizationUUID(customizationUUID);
+            PnfResourceCustomization pnfResourceCustomization = catalogDbClient
+                    .getPnfResourceCustomizationByModelCustomizationUUID(resource.getModelCustomizationId());
 
             if (null != pnfResourceCustomization) {
                 logger.debug("getSkipPostInstConf value: " + pnfResourceCustomization.getSkipPostInstConf());
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionTest.java
index 52196aa..a044944 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionTest.java
@@ -409,6 +409,10 @@
 
         serviceInstanceMSO.getVnfs().add(vnf);
 
+        VfModule aaiVfModule = new VfModule();
+        aaiVfModule.setIsBaseVfModule(false);
+
+        doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any());
         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
         doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
@@ -932,6 +936,10 @@
         serviceInstanceMSO.getVnfs().add(vnf);
         serviceInstanceMSO.getPnfs().add(pnf);
 
+        VfModule aaiVfModule = new VfModule();
+        aaiVfModule.setIsBaseVfModule(false);
+
+        doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any());
         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
         doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
@@ -1013,6 +1021,10 @@
 
         serviceInstanceMSO.getVnfs().add(vnf);
 
+        VfModule aaiVfModule = new VfModule();
+        aaiVfModule.setIsBaseVfModule(false);
+
+        doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any());
         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
         doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
@@ -1104,6 +1116,11 @@
 
         serviceInstanceMSO.getVnfs().add(vnf);
 
+        org.onap.aai.domain.yang.VfModule aaiVfModule = new org.onap.aai.domain.yang.VfModule();
+        aaiVfModule.setIsBaseVfModule(false);
+
+        doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any());
+        doReturn(new org.onap.aai.domain.yang.GenericVnf()).when(bbSetupUtils).getAAIGenericVnf(vnf.getVnfId());
         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
@@ -1151,21 +1168,26 @@
         vfModule2.setVfModuleId("vfModule2");
         vnf.getVfModules().add(vfModule2);
         serviceInstanceMSO.getVnfs().add(vnf);
-        VfModule vfModuleAAI = new VfModule();
-        vfModuleAAI.setVfModuleId("vfModule2");
+        VfModule vfModuleAAI1 = new VfModule();
+        vfModuleAAI1.setIsBaseVfModule(false);
+        VfModule vfModuleAAI2 = new VfModule();
+        vfModuleAAI2.setIsBaseVfModule(false);
+        vfModuleAAI2.setVfModuleId("vfModule2");
         RelationshipList relationshipList = new RelationshipList();
         Relationship relationship = new Relationship();
         relationshipList.getRelationship().add(relationship);
-        vfModuleAAI.setRelationshipList(relationshipList);
+        vfModuleAAI2.setRelationshipList(relationshipList);
         Relationships relationships = new Relationships("abc");
         Configuration config = new Configuration();
         config.setConfigurationId("configId");
         Optional<Configuration> configOp = Optional.of(config);
         Optional<Relationships> relationshipsOp = Optional.of(relationships);
 
+        doReturn(new org.onap.aai.domain.yang.GenericVnf()).when(bbSetupUtils).getAAIGenericVnf(vnf.getVnfId());
         doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
         doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
-        doReturn(vfModuleAAI).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
+        doReturn(vfModuleAAI1).when(bbSetupUtils).getAAIVfModule("1234", "vfModule1");
+        doReturn(vfModuleAAI2).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java
index 2725626..76763e8 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java
@@ -239,6 +239,9 @@
         aaiConfiguration2.setConfigurationId("testConfigurationId2");
         aaiConfiguration2.setRelationshipList(relationshipList1);
 
+        org.onap.aai.domain.yang.VfModule aaiVfModule = new org.onap.aai.domain.yang.VfModule();
+        aaiVfModule.setIsBaseVfModule(true);
+
         try {
             doReturn(genericVnfAai).when(mockBbInputSetupUtils).getAAIGenericVnf(genericVnf.getVnfId());
             doReturn(serviceInstanceAAI).when(mockBbInputSetupUtils).getAAIServiceInstanceById(resourceId);
@@ -247,6 +250,7 @@
                     .getConfiguration("testConfigurationId");
             doReturn(Optional.of(aaiConfiguration2)).when(mockAaiConfigurationResources)
                     .getConfiguration("testConfigurationId2");
+            doReturn(aaiVfModule).when(mockBbInputSetupUtils).getAAIVfModule(any(), any());
             serviceEBBLoader.traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
             assertEquals(8, resourceCounter.size());
             assertTrue(resourceCounter.get(2).isBaseVfModule());
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoaderTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoaderTest.java
index 78a9628..2775c6d 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoaderTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoaderTest.java
@@ -47,12 +47,14 @@
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.only;
 
 
 public class VnfEBBLoaderTest {
 
     private String serviceId;
     private String vnfId;
+    private String vfModuleId;
     private BBInputSetupUtils bbInputSetupUtils;
     private BBInputSetup bbInputSetup;
     private WorkflowActionExtractResourcesAAI workflowActionUtils;
@@ -67,6 +69,7 @@
     public void setup() {
         serviceId = "service123";
         vnfId = "vnf123";
+        vfModuleId = "vfModule123";
         serviceInstanceAAI = mock(org.onap.aai.domain.yang.ServiceInstance.class);
         serviceInstanceMSO = mock(ServiceInstance.class);
         bbInputSetupUtils = mock(BBInputSetupUtils.class);
@@ -95,11 +98,19 @@
         GenericVnf genericVnf = mock(GenericVnf.class);
         doReturn(vnfId).when(genericVnf).getVnfId();
 
+        org.onap.aai.domain.yang.GenericVnf aaiVnf = mock(org.onap.aai.domain.yang.GenericVnf.class);
+        doReturn(aaiVnf).when(bbInputSetupUtils).getAAIGenericVnf(vnfId);
+
         VfModule vfModule = mock(VfModule.class);
+        doReturn(vfModuleId).when(vfModule).getVfModuleId();
         ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
         modelInfoVfModule.setIsBaseBoolean(true);
         doReturn(modelInfoVfModule).when(vfModule).getModelInfoVfModule();
 
+        org.onap.aai.domain.yang.VfModule aaiVfModule = new org.onap.aai.domain.yang.VfModule();
+        aaiVfModule.setIsBaseVfModule(true);
+        doReturn(aaiVfModule).when(bbInputSetupUtils).getAAIVfModule(vnfId, vfModuleId);
+
         doReturn(serviceInstanceAAI).when(bbInputSetupUtils).getAAIServiceInstanceById(serviceId);
         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
         doReturn(List.of(genericVnf)).when(serviceInstanceMSO).getVnfs();
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListenerTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListenerTest.java
index b23147e..1fbee2d 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListenerTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/listeners/SkipCDSBuildingBlockListenerTest.java
@@ -24,6 +24,7 @@
 import static org.mockito.Mockito.when;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.UUID;
 import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
 import org.junit.Before;
 import org.junit.Test;
@@ -34,6 +35,8 @@
 import org.onap.so.bpmn.common.BBConstants;
 import org.onap.so.bpmn.common.BuildingBlockExecution;
 import org.onap.so.bpmn.common.DelegateExecutionImpl;
+import org.onap.so.bpmn.infrastructure.workflow.tasks.Resource;
+import org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowType;
 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
 import org.onap.so.db.catalog.beans.PnfResourceCustomization;
@@ -41,7 +44,6 @@
 import org.onap.so.db.catalog.beans.VfModuleCustomization;
 import org.onap.so.db.catalog.beans.VnfResourceCustomization;
 import org.onap.so.db.catalog.client.CatalogDbClient;
-import org.onap.so.serviceinstancebeans.ModelInfo;
 import org.onap.so.serviceinstancebeans.RequestDetails;
 
 @RunWith(MockitoJUnitRunner.Silent.class)
@@ -51,25 +53,24 @@
     private static final String VNF_SCOPE = "VNF";
     private static final String VF_SCOPE = "VFModule";
     private static final String PNF_SCOPE = "pnf";
-    private static final String TEST_MODELUUID = "123456789";
     private static final String VNF_TEST_ACTION = "VnfConfigAssign";
     private static final String VFModule_TEST_ACTION = "VfModuleConfigAssign";
     private static final String PNFModule_TEST_ACTION = "config-assign";
-    private static final String MODELCUSTOMIZATIONUUID = "123456789";
+    private static final String SERVICE_MODEL_VERSION_ID = UUID.randomUUID().toString();
+    private static final String VNF_MODEL_CUSTOMIZATION_ID = UUID.randomUUID().toString();
+    private static final String VF_MODULE_CUSTOMIZATION_ID = UUID.randomUUID().toString();
+    private static final String PNF_CUSTOMIZATION_ID = UUID.randomUUID().toString();
     private static final String BBNAME = "ControllerExecutionBB";
     private static final boolean ISFIRST = true;
 
-    private int actual;
     private List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
-    private List<VnfResourceCustomization> vnfResourceCustomization;
-    private List<VfModuleCustomization> vfModuleCustomization;
-    private ExecuteBuildingBlock executeBuildingBlock = new ExecuteBuildingBlock();
+    private ExecuteBuildingBlock executeBuildingBlock;
     private RequestDetails reqDetail = new RequestDetails();
     private BuildingBlockExecution buildingBlockExecution = new DelegateExecutionImpl(new DelegateExecutionFake());
-    private VnfResourceCustomization vnfCust = new VnfResourceCustomization();
-    private VfModuleCustomization vfCust = new VfModuleCustomization();
-    private PnfResourceCustomization pnfResourceCustomization = new PnfResourceCustomization();
-    private BuildingBlock buildingBlock = new BuildingBlock();
+    private VnfResourceCustomization vnfCust;
+    private VfModuleCustomization vfCust;
+    private PnfResourceCustomization pnfResourceCustomization;
+    private BuildingBlock buildingBlock;
 
     @InjectMocks
     private SkipCDSBuildingBlockListener skipCDSBuildingBlockListener;
@@ -78,10 +79,27 @@
 
     @Before
     public void before() {
-        ModelInfo model = new ModelInfo();
-        model.setModelUuid(TEST_MODELUUID);
-        reqDetail.setModelInfo(model);
-        executeBuildingBlock.setRequestDetails(reqDetail);
+        executeBuildingBlock = new ExecuteBuildingBlock();
+        buildingBlock = new BuildingBlock();
+
+        ArrayList<Resource> resources = new ArrayList<>();
+        Resource service = new Resource(WorkflowType.SERVICE, SERVICE_MODEL_VERSION_ID, false, null);
+        service.setModelVersionId(SERVICE_MODEL_VERSION_ID);
+        resources.add(service);
+        Resource vnf = new Resource(WorkflowType.VNF, VNF_MODEL_CUSTOMIZATION_ID, false, null);
+        vnf.setModelCustomizationId(VNF_MODEL_CUSTOMIZATION_ID);
+        resources.add(vnf);
+        Resource vfModule = new Resource(WorkflowType.VFMODULE, VF_MODULE_CUSTOMIZATION_ID, false, null);
+        vfModule.setModelCustomizationId(VF_MODULE_CUSTOMIZATION_ID);
+        resources.add(vfModule);
+        Resource pnf = new Resource(WorkflowType.PNF, PNF_CUSTOMIZATION_ID, false, null);
+        pnf.setModelCustomizationId(PNF_CUSTOMIZATION_ID);
+        resources.add(pnf);
+        buildingBlockExecution.setVariable("resources", resources);
+
+        vnfCust = new VnfResourceCustomization();
+        vfCust = new VfModuleCustomization();
+        pnfResourceCustomization = new PnfResourceCustomization();
     }
 
     @Test
@@ -93,133 +111,83 @@
 
     @Test
     public void testSkipCDSforService() {
-        setBuildingBlockAndCurrentSequence(SERVICE_SCOPE, "service-config-assign", 0);
-        Service service = new Service();
-        when(catalogDbClient.getServiceByID(TEST_MODELUUID)).thenReturn(service);
+        setBuildingBlockAndCurrentSequence(SERVICE_SCOPE, "service-config-assign", SERVICE_MODEL_VERSION_ID, 0);
+        when(catalogDbClient.getServiceByID(SERVICE_MODEL_VERSION_ID)).thenReturn(new Service());
 
         skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution);
 
-        actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE);
-        assertEquals(1, actual);
+        assertEquals(1, (int) buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE));
     }
 
     @Test
     public void testProcessForVNFToSkipCDSBB() {
-        // given
-        setBuildingBlockAndCurrentSequence(VNF_SCOPE, VNF_TEST_ACTION, 0);
-        vnfResourceCustomization = getVnfResourceCustomizationList(true);
+        setBuildingBlockAndCurrentSequence(VNF_SCOPE, VNF_TEST_ACTION, VNF_MODEL_CUSTOMIZATION_ID, 0);
+        when(catalogDbClient.getVnfResourceCustomizationByModelCustomizationUUID(VNF_MODEL_CUSTOMIZATION_ID))
+                .thenReturn(vnfCust);
 
-        when(catalogDbClient.getVnfResourceCustomizationByModelUuid(
-                executeBuildingBlock.getRequestDetails().getModelInfo().getModelUuid()))
-                        .thenReturn(vnfResourceCustomization);
-        when(catalogDbClient.findVnfResourceCustomizationInList(executeBuildingBlock.getBuildingBlock().getKey(),
-                vnfResourceCustomization)).thenReturn(vnfCust);
-
-        // when
         skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution);
 
-        // then
-        actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE);
-        assertEquals(1, actual);
-
+        assertEquals(1, (int) buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE));
     }
 
     @Test
     public void testProcessForVNFNotToSkipCDSBB() {
-        // given
-        setBuildingBlockAndCurrentSequence(VNF_SCOPE, VNF_TEST_ACTION, 0);
-        vnfResourceCustomization = getVnfResourceCustomizationList(false);
+        setBuildingBlockAndCurrentSequence(VNF_SCOPE, VNF_TEST_ACTION, VNF_MODEL_CUSTOMIZATION_ID, 0);
+        vnfCust.setSkipPostInstConf(false);
+        when(catalogDbClient.getVnfResourceCustomizationByModelCustomizationUUID(VNF_MODEL_CUSTOMIZATION_ID))
+                .thenReturn(vnfCust);
 
-        when(catalogDbClient.getVnfResourceCustomizationByModelUuid(
-                executeBuildingBlock.getRequestDetails().getModelInfo().getModelUuid()))
-                        .thenReturn(vnfResourceCustomization);
-        when(catalogDbClient.findVnfResourceCustomizationInList(executeBuildingBlock.getBuildingBlock().getKey(),
-                vnfResourceCustomization)).thenReturn(vnfCust);
-
-        // when
         skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution);
 
-        // then
-        actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE);
-        assertEquals(0, actual);
-
+        assertEquals(0, (int) buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE));
     }
 
 
     @Test
     public void testProcessForVFToSkipCDSBB() {
-        // given
-        setBuildingBlockAndCurrentSequence(VF_SCOPE, VFModule_TEST_ACTION, 0);
-        vfModuleCustomization = getVfModuleCustomizationList(true);
+        setBuildingBlockAndCurrentSequence(VF_SCOPE, VFModule_TEST_ACTION, VF_MODULE_CUSTOMIZATION_ID, 0);
+        when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID(VF_MODULE_CUSTOMIZATION_ID))
+                .thenReturn(vfCust);
 
-        when(catalogDbClient
-                .getVfModuleCustomizationByModelCuztomizationUUID(executeBuildingBlock.getBuildingBlock().getKey()))
-                        .thenReturn(vfCust);
-
-        // when
         skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution);
 
-        // then
-        actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE);
-        assertEquals(1, actual);
-
+        assertEquals(1, (int) buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE));
     }
 
     @Test
     public void testProcessForVFNotToSkipCDSBB() {
-        // given
-        setBuildingBlockAndCurrentSequence(VF_SCOPE, VFModule_TEST_ACTION, 0);
-        vfModuleCustomization = getVfModuleCustomizationList(false);
-
+        setBuildingBlockAndCurrentSequence(VF_SCOPE, VFModule_TEST_ACTION, VF_MODULE_CUSTOMIZATION_ID, 0);
+        vfCust.setSkipPostInstConf(false);
         when(catalogDbClient
                 .getVfModuleCustomizationByModelCuztomizationUUID(executeBuildingBlock.getBuildingBlock().getKey()))
                         .thenReturn(vfCust);
 
-        // when
         skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution);
 
-        // then
-        actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE);
-        assertEquals(0, actual);
-
+        assertEquals(0, (int) buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE));
     }
 
     @Test
     public void testProcessForPNFToSkipCDSBB() {
-        // given
-        setBuildingBlockAndCurrentSequence(PNF_SCOPE, PNFModule_TEST_ACTION, 0);
-        pnfResourceCustomization = getPnfResourceCustomization(true);
+        setBuildingBlockAndCurrentSequence(PNF_SCOPE, PNFModule_TEST_ACTION, PNF_CUSTOMIZATION_ID, 0);
+        when(catalogDbClient.getPnfResourceCustomizationByModelCustomizationUUID(PNF_CUSTOMIZATION_ID))
+                .thenReturn(pnfResourceCustomization);
 
-        when(catalogDbClient
-                .getPnfResourceCustomizationByModelCustomizationUUID(executeBuildingBlock.getBuildingBlock().getKey()))
-                        .thenReturn(pnfResourceCustomization);
-
-        // when
         skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution);
 
-        // then
-        actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE);
-        assertEquals(1, actual);
-
+        assertEquals(1, (int) buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE));
     }
 
     @Test
     public void testProcessForPNFNotToSkipCDSBB() {
-        // given
-        setBuildingBlockAndCurrentSequence(PNF_SCOPE, PNFModule_TEST_ACTION, 0);
-        pnfResourceCustomization = getPnfResourceCustomization(false);
+        setBuildingBlockAndCurrentSequence(PNF_SCOPE, PNFModule_TEST_ACTION, PNF_CUSTOMIZATION_ID, 0);
+        pnfResourceCustomization.setSkipPostInstConf(false);
+        when(catalogDbClient.getPnfResourceCustomizationByModelCustomizationUUID(PNF_CUSTOMIZATION_ID))
+                .thenReturn(pnfResourceCustomization);
 
-        when(catalogDbClient
-                .getPnfResourceCustomizationByModelCustomizationUUID(executeBuildingBlock.getBuildingBlock().getKey()))
-                        .thenReturn(pnfResourceCustomization);
-
-        // when
         skipCDSBuildingBlockListener.run(flowsToExecute, executeBuildingBlock, buildingBlockExecution);
 
-        // then
-        actual = buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE);
-        assertEquals(0, actual);
-
+        assertEquals(0, (int) buildingBlockExecution.getVariable(BBConstants.G_CURRENT_SEQUENCE));
     }
 
     /**
@@ -229,37 +197,13 @@
      * @param action
      * @param squence
      */
-    private void setBuildingBlockAndCurrentSequence(String scope, String action, int sequence) {
+    private void setBuildingBlockAndCurrentSequence(String scope, String action, String key, int sequence) {
         buildingBlock.setBpmnScope(scope);
         buildingBlock.setBpmnAction(action);
         buildingBlock.setBpmnFlowName("ControllerExecutionBB");
-        buildingBlock.setKey(MODELCUSTOMIZATIONUUID);
+        buildingBlock.setKey(key);
         executeBuildingBlock.setBuildingBlock(buildingBlock);
         buildingBlockExecution.setVariable(BBConstants.G_CURRENT_SEQUENCE, sequence);
-
-    }
-
-    private List<VnfResourceCustomization> getVnfResourceCustomizationList(boolean setSkippost) {
-        List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList<>();
-        vnfCust.setModelCustomizationUUID(MODELCUSTOMIZATIONUUID);
-        vnfCust.setSkipPostInstConf(setSkippost);
-        vnfResourceCustomizations.add(vnfCust);
-        return vnfResourceCustomizations;
-    }
-
-    private List<VfModuleCustomization> getVfModuleCustomizationList(boolean setSkippost) {
-        List<VfModuleCustomization> vfModuleCustomizations = new ArrayList<>();
-        vfCust.setModelCustomizationUUID(MODELCUSTOMIZATIONUUID);
-        vfCust.setSkipPostInstConf(setSkippost);
-        vfModuleCustomizations.add(vfCust);
-        return vfModuleCustomizations;
-    }
-
-    private PnfResourceCustomization getPnfResourceCustomization(boolean setSkippost) {
-        PnfResourceCustomization pnfResourceCustomization = new PnfResourceCustomization();
-        pnfResourceCustomization.setModelCustomizationUUID(MODELCUSTOMIZATIONUUID);
-        pnfResourceCustomization.setSkipPostInstConf(setSkippost);
-        return pnfResourceCustomization;
     }
 
 }
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/ServiceInfo.java b/common/src/main/java/org/onap/so/beans/nsmf/ServiceInfo.java
index 5146685..df137d0 100644
--- a/common/src/main/java/org/onap/so/beans/nsmf/ServiceInfo.java
+++ b/common/src/main/java/org/onap/so/beans/nsmf/ServiceInfo.java
@@ -56,4 +56,7 @@
     private String pLMNIdList;
 
     private String actionType;
+
+    private String resourceSharingLevel;
+
 }
diff --git a/docs/developer_info/E2E_Network_Slicing_Understanding.rst b/docs/developer_info/E2E_Network_Slicing_Understanding.rst
new file mode 100644
index 0000000..169dd64
--- /dev/null
+++ b/docs/developer_info/E2E_Network_Slicing_Understanding.rst
@@ -0,0 +1,111 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2021 Wipro Ltd.
+
+E2E Network Slicing
+===================
+The objective of this use case is to realize **End-to-End 5G Network
+Slicing** using ONAP. An End-to-End Network Slice consists of RAN (Radio
+Access Network), Transport Network (TN) and Core Network (CN) slice
+sub-nets. This use case intends to demonstrate the modeling,
+orchestration (life cycle and resources) and assurance of a network
+slice which are implemented in alignment with relevant standards.
+
+Overall High level view for ONAP-based Slice Management
+=======================================================
+
+Architecture Choice
+-------------------
+
+3GPP(TS 28.801) defines three layer slice management functions which include:
+
+CSMF(Communication Service Management Function):
+
+- Responsible for translating the communication service related requirement to network slice related requirements.
+
+- Communicate with Network Slice Management Function (NSMF).
+
+NSMF(Network Slice Management Function):
+
+- Responsible for management and orchestration of NSI.
+
+- Derive network slice subnet related requirements from network slice related requirements.
+
+- Communicate with the Network Slice Subnet Management Function (NSSMF) and Communication Service Management Function.
+
+NSSMF(Network Slice Subnet Management Function):
+
+- Responsible for management and orchestration of NSSI.
+
+- Communicate with the NSMF.
+
+.. image:: ../images/e2e-network-slicing-architecture.png
+
+To realize the three layers of the slice management function, we need to decide whether to implement CSMF, NSMF or NSMF within ONAP, or use the external CSMF, NSMF or NSSMF. This implies that for ONAP-based network slice management, we have different choices from an architectural perspective:
+
+1. Implement CSMF, NSMF, NSSMF all within ONAP;
+
+2. Connect an external CSMF from the Northbound, Implement NSMF and NSSMF within ONAP;
+
+3. Connect an external CSMF from the Northbound, Implement NSMF within ONAP, Connect a 3rd party NSSMF from the Southbound;
+
+4. Implement CSMF, NSMF within ONAP, Connect a 3rd party NSSMF from then Southbound.
+
+5. Use external CSMF and NSMF, only implement NSSMF within ONAP.
+
+.. image:: ../images/architecture-choices-e2e-slicing.png
+
+Slice Management Functions - Realization in SO
+----------------------------------------------
+
+- CSMF and NSMF is realized within ONAP (enhancement in Frankfurt functionality), and the NB interfaces is standardized using ExtAPI.
+
+- All 3 NSSMFs shall be realized within ONAP (From Guilin).
+
+- ONAP acting as NSMF shall also interact with external RAN and Transport NSSMF using 3GPP APIs
+
+- CSMF reliazed within SO receives service requirements from EXT-API, which translates service requirements to slice profile(NST selection) and sends request to NSMF for slice allocation.
+
+- NSMF reliazed within SO receives request for slice allocation (slice profile, S-NSSAI, NST) and determines slice instantiation/modification (with OOF) to fulfil the slice allocation request.
+
+- NSSMF reliazed within SO receive information from NSMF & trigger RAN/Core/Transport NSSMF for orchestration actions.
+
+Network Slice Instance (NSI) Life Cycle View
+--------------------------------------------
+
+Design and pre-provision: Creation of necessary slice/slice sub-net templates. Creation, activation, deactivation and termination of NSI, including its constituent slice sub-nets (RAN, Core   and Transport)
+
+3GPP Specification (3GPP TS 28.530) describes management aspects of a Network Slice Instance, which can be described by the four phases:
+
+Preparation: The preparation phase includes network slice design, network slice capacity planning, on-boarding and evaluation of the network functions, preparing the network environment and   other necessary preparations required to be done before the creation of an NSI
+
+Commisioning: NSI provisioning in the commissioning phase includes creation of the NSI. During NSI creation all needed resources are allocated and configured to satisfy the network slice      requirements. The creation of an NSI can include creation and/or modification of the NSI constituents
+
+Operation: The Operation phase includes the activation, supervision, performance reporting (e.g. for KPI monitoring), resource capacity planning, modification,and de-activation of an NSI.
+
+Decommissioning: Network slice instance provisioning in the decommissioning phase includes decommissioning of non-shared constituents if required and removing the NSI specific configuration   from the shared constituents. After the decommissioning phase, the NSI is terminated and does not exist anymore. The ONAP-based NSI lifecycle management will finally provide the demonstration of all these phases.
+
+The ONAP-based NSI lifecycle management will finally provide the demonstration of all these phases.
+
+.. image:: ../images/lifecycle-of-network-slice-instance.png
+
+Support for Option1 &Option2 in E2E Network Slicing
+---------------------------------------------------
+
+ONAP E2E Network Slicing option 1 and 2 differs on the RAN and FH/BH relationship.
+
+- In option 1, RAN NSSMF will decide FH/MH requirements and send to TN side, so RAN NSST will nest FH/MH NSST, and slice profile requirements will contain not only RAN side requirements but also FH/MH.
+
+Template design for option 1: https://wiki.onap.org/display/DW/Template+Design+for+Option+1
+
+.. image:: ../images/slicing-option1.png
+
+- In option 2, FH and MH are independent requirments when doing E2E requirements decomposition. Detailed background of option 1 and 2, please see  E2E Network Slicing Use Case in R7 Guilin.
+
+Template design for option 2: https://wiki.onap.org/display/DW/Template+Design+for+Option2
+
+.. image:: ../images/slicing-option2.png
+
+3 domain combination solution -Endpoint
+---------------------------------------
+In order to enable 3 subnet connectivity, making end-to-end forwarding and control plane interacting, in slicing services, we need slicing interworking identifier and information to tell how  RAN and Core connect with TN. Slicing interworking identifier(in ONAP is vlan Id, allocated by NSMF) is used to isolate differerent service datas, and identify the unique slicing service      across RAN, TN and Core, 1 S-NSSAI will need to be assigned with 1 slicing interworking identifier(vlan Id). The slicing interworking information is used as bridges to connect RAN/Core and TN,it should be RAN/Core side outgress and TN ingress, like port, ipAddress, next hops and etc.
diff --git a/docs/images/architecture-choices-e2e-slicing.png b/docs/images/architecture-choices-e2e-slicing.png
new file mode 100644
index 0000000..b240215
--- /dev/null
+++ b/docs/images/architecture-choices-e2e-slicing.png
Binary files differ
diff --git a/docs/images/e2e-network-slicing-architecture.png b/docs/images/e2e-network-slicing-architecture.png
new file mode 100644
index 0000000..922419d
--- /dev/null
+++ b/docs/images/e2e-network-slicing-architecture.png
Binary files differ
diff --git a/docs/images/lifecycle-of-network-slice-instance.png b/docs/images/lifecycle-of-network-slice-instance.png
new file mode 100644
index 0000000..0959783
--- /dev/null
+++ b/docs/images/lifecycle-of-network-slice-instance.png
Binary files differ
diff --git a/docs/images/slicing-option1.png b/docs/images/slicing-option1.png
new file mode 100644
index 0000000..e19a257
--- /dev/null
+++ b/docs/images/slicing-option1.png
Binary files differ
diff --git a/docs/images/slicing-option2.png b/docs/images/slicing-option2.png
new file mode 100644
index 0000000..945c7c5
--- /dev/null
+++ b/docs/images/slicing-option2.png
Binary files differ
diff --git a/so-optimization-clients/src/test/java/org/onap/so/client/oof/OofValidatorTest.java b/so-optimization-clients/src/test/java/org/onap/so/client/oof/OofValidatorTest.java
index 5f9be78..eaea1ab 100644
--- a/so-optimization-clients/src/test/java/org/onap/so/client/oof/OofValidatorTest.java
+++ b/so-optimization-clients/src/test/java/org/onap/so/client/oof/OofValidatorTest.java
@@ -20,10 +20,13 @@
 
 package org.onap.so.client.oof;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.fail;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
+import org.apache.logging.log4j.util.Strings;
 import org.junit.Test;
 import org.onap.so.client.exception.BadResponseException;
 
@@ -55,4 +58,41 @@
         map.put("statusMessage", "a");
         new OofValidator().validateDemandsResponse(map);
     }
+
+    @Test
+    public void validateSolution_success() throws Exception {
+        String json = "{\"value\" : \"test1\"}";
+        new OofValidator().validateSolution(json);
+    }
+
+    @Test
+    public void validateSolution_EmptyResponse() {
+        try {
+            new OofValidator().validateSolution("");
+        } catch (BadResponseException e) {
+            assertThat(e.getMessage()).contains("oofs asynchronous response is empty");
+        }
+    }
+
+    @Test
+    public void validateSolution_serviceExceptionWithMessage() {
+        String json = "{\"serviceException\" : {\"text\" : \"serviceExceptionOccurred\"}}";
+        try {
+            new OofValidator().validateSolution(json);
+            fail("Exception should be thrown");
+        } catch (BadResponseException e) {
+            assertThat(e.getMessage()).contains("serviceExceptionOccurred");
+        }
+    }
+
+    @Test
+    public void validateSolution_serviceExceptionWithEmptyMessage() {
+        String json = "{\"serviceException\" : {\"text\" : \"\"}}";
+        try {
+            new OofValidator().validateSolution(json);
+            fail("Exception should be thrown");
+        } catch (BadResponseException e) {
+            assertThat(e.getMessage()).contains("error message not provided");
+        }
+    }
 }