Merge "add junit coverage"
authorSeshu Kumar M <seshu.kumar.m@huawei.com>
Mon, 13 Dec 2021 23:06:25 +0000 (23:06 +0000)
committerGerrit Code Review <gerrit@onap.org>
Mon, 13 Dec 2021 23:06:25 +0000 (23:06 +0000)
26 files changed:
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AnNssmfutils.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateAccessNSSI.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoActivateSliceService.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateAccessNSSI.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSIandNSSI.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceInstance.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOption.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeAllocateAccessNSSI.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/TnNssmfUtils.groovy
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoActivateAccessNSSI.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeallocateAccessNSSI.bpmn
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoader.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoader.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowActionTest.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/ServiceEBBLoaderTest.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/ebb/loader/VnfEBBLoaderTest.java
common/src/main/java/org/onap/so/beans/nsmf/ServiceInfo.java
docs/developer_info/E2E_Network_Slicing_Understanding.rst [new file with mode: 0644]
docs/images/architecture-choices-e2e-slicing.png [new file with mode: 0644]
docs/images/e2e-network-slicing-architecture.png [new file with mode: 0644]
docs/images/lifecycle-of-network-slice-instance.png [new file with mode: 0644]
docs/images/slicing-option1.png [new file with mode: 0644]
docs/images/slicing-option2.png [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/infra/rest/validators/VnfDeleteValidator.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/infra/rest/validator/VnfDeleteValidatorTest.java

index f17bfc2..71dd9b1 100644 (file)
@@ -254,7 +254,7 @@ else{
        
        //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 @@ else{
        
        //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)
index 1d75cf5..2aaec9f 100644 (file)
@@ -73,9 +73,9 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
        private static final String KEY_SLICE_PROFILE = "SliceProfile"
        private static final String KEY_NSSI = "NSSI"
 
-       private static final String AN_NF = "AN-NF"
-       private static final String TN_FH = "TN-FH"
-       private static final String TN_MH = "TN-MH"
+       private static final String AN_NF = "AN_NF"
+       private static final String TN_FH = "TN_FH"
+       private static final String TN_MH = "TN_MH"
 
        private static final String ACTIVATE = "activateInstance"
        private static final String DEACTIVATE = "deactivateInstance"
@@ -141,7 +141,11 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
                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")
        }
        
@@ -205,13 +209,13 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
                input.addProperty("sNSSAI", sNssai.toString())
 
                JsonObject wrapinput = new JsonObject()
-               wrapinput.addProperty("Action", action)
+               wrapinput.addProperty("action", action)
 
                JsonObject CommonHeader = new JsonObject()
-               CommonHeader.addProperty("TimeStamp", new Date(System.currentTimeMillis()).format("yyyy-MM-dd'T'HH:mm:ss.sss", TimeZone.getDefault()))
-               CommonHeader.addProperty("APIver", "1.0")
-               CommonHeader.addProperty("RequestID", reqId)
-               CommonHeader.addProperty("SubRequestID", "1")
+               CommonHeader.addProperty("timestamp",new Date(System.currentTimeMillis()).format("yyyy-MM-dd'T'HH:mm:ss.sss'Z'", TimeZone.getDefault()))
+               CommonHeader.addProperty("api-ver", "1.0")
+               CommonHeader.addProperty("request-id", reqId)
+               CommonHeader.addProperty("sub-request-id", "1")
 
                JsonObject body = new JsonObject()
                body.add("input", wrapinput)
@@ -219,12 +223,12 @@ class DoActivateAccessNSSI extends AbstractServiceTaskProcessor {
                JsonObject sdnrRequest = new JsonObject()
                JsonObject payload = new JsonObject()
                payload.add("input", input)
-               wrapinput.addProperty("Payload", payload.toString())
-               wrapinput.add("CommonHeader", CommonHeader)
+               wrapinput.addProperty("payload", payload.toString())
+               wrapinput.add("common-header", CommonHeader)
                body.add("input", wrapinput)
                sdnrRequest.add("body", body)
                 sdnrRequest.addProperty("version", "1.0")
-               sdnrRequest.addProperty("rpc-name", "activateRANSlice")
+               sdnrRequest.addProperty("rpc-name", "activateRANSliceInstance")
                sdnrRequest.addProperty("correlation-id", reqId)
                sdnrRequest.addProperty("type", "request")
 
index 3d9f676..d0fe1e9 100644 (file)
@@ -158,6 +158,8 @@ class DoActivateSliceService extends AbstractServiceTaskProcessor {
             ActDeActNssi actDeActNssi = new ActDeActNssi()
             actDeActNssi.setNsiId(customerInfo.nsiId)
             actDeActNssi.setNssiId(nssInstance.nssiId)
+            actDeActNssi.setSnssaiList(Arrays.asList(customerInfo.snssai))
+
 
                        nbiRequest.setEsrInfo(esrInfo)
             nbiRequest.setServiceInfo(serviceInfo)
index ed1c2b2..9800428 100644 (file)
@@ -654,7 +654,8 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                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 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                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 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                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 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                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 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                 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 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                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 {
index bc155c5..a22819f 100644 (file)
@@ -444,6 +444,7 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{
                 .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 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{
         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 @@ class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{
         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)
index 35b4199..5476cb5 100644 (file)
@@ -117,7 +117,7 @@ class DoCreateSliceServiceInstance extends AbstractServiceTaskProcessor{
             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)
index 2588d07..7571f07 100644 (file)
@@ -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 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
      * @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 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
      */
     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 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
      */
     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 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
      */
     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 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
         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 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
         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 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
 
         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)
index 5a3859f..6fd8080 100644 (file)
@@ -126,7 +126,11 @@ class DoDeAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                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)
        }
        
 
@@ -192,6 +196,8 @@ class DoDeAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                input.addProperty("RANNFNSSIId", anNfNssiId)
                input.addProperty("callbackURL", callbackURL.toString())
                input.addProperty("sNSSAI", sNssai)
+                input.addProperty("globalSubscriberId", execution.getVariable("globalSubscriberId") as String)
+               input.addProperty("subscriptionServiceType", execution.getVariable("subscriptionServiceType") as String)
                 input.addProperty("sliceProfileId",sliceProfileId)
                input.add("additionalproperties", new JsonObject())
 
index e0c2b77..d6e94ef 100644 (file)
@@ -377,7 +377,6 @@ class TnNssmfUtils {
             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)
index 841a23b..b156135 100644 (file)
@@ -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 @@ ex.processJavaException(execution)</bpmn:script>
 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 @@ activator.prepareUpdateJobStatus(execution,"finished","100","AN NSSI activation
       <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:BPMNShape id="Event_055gbp2_di" bpmnElement="Event_055gbp2">
-        <dc:Bounds x="162" y="212" width="36" height="36" />
+      <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="168" y="255" width="24" height="14" />
+          <dc:Bounds x="1160" y="172" width="18" 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" />
+      </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="945" y="265" width="90" height="27" />
+          <dc:Bounds x="1098" y="130" width="15" height="14" />
         </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_1v7p5kl_di" bpmnElement="Event_1n5z71a">
-        <dc:Bounds x="2152" y="212" width="36" height="36" />
+      </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="2137" y="255" width="71" height="27" />
+          <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="322" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="168" y="365" width="25" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Event_01vyapf_di" bpmnElement="Event_0kkeo9m">
-        <dc:Bounds x="162" y="432" width="36" height="36" />
+      <bpmndi:BPMNShape id="Gateway_12oq1sa_di" bpmnElement="Gateway_12oq1sa" isMarkerVisible="true">
+        <dc:Bounds x="965" y="315" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="157" y="475" width="48" height="27" />
+          <dc:Bounds x="945" y="375" width="90" 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" />
+      <bpmndi:BPMNShape id="Event_01vyapf_di" bpmnElement="Event_0kkeo9m">
+        <dc:Bounds x="162" y="542" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1728" y="715" width="71" height="27" />
+          <dc:Bounds x="158" y="585" width="47" 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:BPMNShape id="Event_1u3s42m_di" bpmnElement="Event_09ey569">
+        <dc:Bounds x="1742" y="782" 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>
-      <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>
-      <bpmndi:BPMNShape id="Event_1n2qjvx_di" bpmnElement="Event_1n2qjvx">
-        <dc:Bounds x="892" y="1216" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_1eedm9e_di" bpmnElement="Activity_1eedm9e">
-        <dc:Bounds x="710" y="1194" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_1szd5yp_di" bpmnElement="Activity_1szd5yp">
-        <dc:Bounds x="530" y="1194" width="100" height="80" />
+      <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:BPMNShape id="Activity_0lpw3j7_di" bpmnElement="Activity_0lpw3j7">
-        <dc:Bounds x="380" y="1194" width="100" height="80" />
+      <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="Activity_0hioign_di" bpmnElement="Activity_0hioign" isExpanded="true">
-        <dc:Bounds x="320" y="1420" width="440" height="140" />
+      <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: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 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="Event_18qzt1n_di" bpmnElement="Event_18qzt1n">
-        <dc:Bounds x="672" y="1463" width="36" height="36" />
+      <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="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>
index 4debe1f..ae81364 100644 (file)
@@ -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 @@ deallocator.preProcessRequest(execution)</bpmn:script>
     <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 @@ deallocator.preProcessRequest(execution)</bpmn:script>
       <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 @@ def deallocator = new DoDeAllocateAccessNSSI()
 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 @@ deallocator.deallocateAnNfNssi(execution)</bpmn:script>
       <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 @@ def deallocator = new DoDeAllocateAccessNSSI()
 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 @@ deallocator.deleteANNSSI(execution)</bpmn:script>
     <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 @@ deallocator.deleteANNSSI(execution)</bpmn:script>
       <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 @@ deallocator.deleteANNSSI(execution)</bpmn:script>
         <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 @@ deallocator.deleteANNSSI(execution)</bpmn:script>
         <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 @@ deallocator.deleteANNSSI(execution)</bpmn:script>
       </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 @@ deallocator.deleteANNSSI(execution)</bpmn:script>
       </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 @@ deallocator.deleteANNSSI(execution)</bpmn:script>
         <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 id="Flow_0b3qqvw_di" bpmnElement="Flow_0b3qqvw">
+        <di:waypoint x="2285" y="240" />
+        <di:waypoint x="2362" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2315" y="222" width="18" 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: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="1739" y="222" width="18" height="14" />
+          <dc:Bounds x="2268" y="271" width="15" 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_01ssl7f_di" bpmnElement="Flow_01ssl7f">
+        <di:waypoint x="2485" y="410" />
+        <di:waypoint x="2552" y="410" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1658" y="155" width="15" height="14" />
+          <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 @@ deallocator.deleteANNSSI(execution)</bpmn:script>
       <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 @@ deallocator.deleteANNSSI(execution)</bpmn:script>
       <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 @@ deallocator.deleteANNSSI(execution)</bpmn:script>
       <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 id="Event_18fpd51_di" bpmnElement="Event_18fpd51">
+        <dc:Bounds x="2362" y="222" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2340" y="268" width="81" height="27" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_05frw6w_di" bpmnElement="Activity_05frw6w">
-        <dc:Bounds x="2030" y="200" width="100" height="80" />
+      <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="Activity_0njdei2_di" bpmnElement="Activity_17w3onz">
-        <dc:Bounds x="1820" y="200" width="100" height="80" />
+      <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="Gateway_0g02vzi_di" bpmnElement="Gateway_0g02vzi" isMarkerVisible="true">
-        <dc:Bounds x="1625" y="215" width="50" height="50" />
+      <bpmndi:BPMNShape id="Event_05q1nj2_di" bpmnElement="Event_05q1nj2">
+        <dc:Bounds x="2242" y="282" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1619" y="272" width="63" height="27" />
+          <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 @@ deallocator.deleteANNSSI(execution)</bpmn:script>
       <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 @@ deallocator.deleteANNSSI(execution)</bpmn:script>
           <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>
-      <bpmndi:BPMNShape id="Activity_0b0pl0x_di" bpmnElement="Activity_03zg1pp">
-        <dc:Bounds x="530" 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_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>
index f36c5a2..10cea17 100755 (executable)
@@ -289,11 +289,12 @@ public class WorkflowAction {
         List<Resource> resourceList = new ArrayList<>();
         List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
 
-        if (resourceType == WorkflowType.SERVICE || isVNFCreateOrDelete(resourceType, requestAction)) {
+        if (resourceType == WorkflowType.SERVICE || isVNFCreate(resourceType, requestAction)) {
             resourceList = serviceEBBLoader.getResourceListForService(sIRequest, requestAction, execution,
                     serviceInstanceId, resourceId, aaiResourceIds);
-        } else if (resourceType == WorkflowType.VNF && (REPLACEINSTANCE.equalsIgnoreCase(requestAction)
-                || (RECREATE_INSTANCE.equalsIgnoreCase(requestAction)))) {
+        } else if (resourceType == WorkflowType.VNF
+                && (DELETE_INSTANCE.equalsIgnoreCase(requestAction) || REPLACEINSTANCE.equalsIgnoreCase(requestAction)
+                        || (RECREATE_INSTANCE.equalsIgnoreCase(requestAction)))) {
             vnfEBBLoader.traverseAAIVnf(execution, resourceList, workflowResourceIds.getServiceInstanceId(),
                     workflowResourceIds.getVnfId(), aaiResourceIds);
         } else if (resourceType == WorkflowType.VNF && UPDATE_INSTANCE.equalsIgnoreCase(requestAction)) {
@@ -363,9 +364,8 @@ public class WorkflowAction {
         return flowsToExecute;
     }
 
-    private boolean isVNFCreateOrDelete(WorkflowType resourceType, String requestAction) {
-        return resourceType == WorkflowType.VNF
-                && (CREATE_INSTANCE.equalsIgnoreCase(requestAction) || DELETE_INSTANCE.equalsIgnoreCase(requestAction));
+    private boolean isVNFCreate(WorkflowType resourceType, String requestAction) {
+        return resourceType == WorkflowType.VNF && CREATE_INSTANCE.equalsIgnoreCase(requestAction);
     }
 
     private void setExecutionVariables(DelegateExecution execution, List<ExecuteBuildingBlock> flowsToExecute,
index c000e94..b5ad8d8 100644 (file)
@@ -25,6 +25,7 @@ package org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import org.camunda.bpm.engine.delegate.DelegateExecution;
 import org.javatuples.Pair;
+import org.onap.aai.domain.yang.GenericVnf;
 import org.onap.aai.domain.yang.Relationship;
 import org.onap.aai.domain.yang.ServiceInstance;
 import org.onap.aai.domain.yang.VpnBinding;
@@ -248,7 +249,9 @@ public class ServiceEBBLoader {
         }
         for (org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf : serviceInstanceMSO.getVnfs()) {
             aaiResourceIds.add(new Pair<>(WorkflowType.VNF, vnf.getVnfId()));
+            GenericVnf genericVnf = bbInputSetupUtils.getAAIGenericVnf(vnf.getVnfId());
             Resource vnfResource = new Resource(WorkflowType.VNF, vnf.getVnfId(), false, serviceResource);
+            vnfResource.setVnfCustomizationId(genericVnf.getModelCustomizationId());
             resourceList.add(vnfResource);
             traverseVnfModules(resourceList, vnfResource, aaiResourceIds, vnf);
             if (vnf.getVolumeGroups() != null) {
index c1d1d7a..b950eb4 100644 (file)
@@ -40,6 +40,7 @@ import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
 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;
@@ -165,6 +166,8 @@ public class VnfEBBLoader {
                 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);
                 resourceList.add(vfModuleResource);
                 findConfigurationsInsideVfModule(execution, vnf.getVnfId(), vfModule.getVfModuleId(), resourceList,
                         vfModuleResource, aaiResourceIds);
index 021bac3..52196aa 100644 (file)
@@ -66,7 +66,9 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.Mockito;
 import org.mockito.Spy;
+import org.onap.aai.domain.yang.GenericVnf;
 import org.onap.aai.domain.yang.Relationship;
 import org.onap.aai.domain.yang.RelationshipList;
 import org.onap.aai.domain.yang.ServiceInstance;
@@ -409,6 +411,7 @@ public class WorkflowActionTest extends BaseTaskTest {
 
         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
+        doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
         workflowAction.selectExecutionList(execution);
@@ -931,6 +934,7 @@ public class WorkflowActionTest extends BaseTaskTest {
 
         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
+        doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
         workflowAction.selectExecutionList(execution);
@@ -1011,6 +1015,7 @@ public class WorkflowActionTest extends BaseTaskTest {
 
         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
+        doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
         workflowAction.selectExecutionList(execution);
index 7a26422..2725626 100644 (file)
@@ -41,6 +41,7 @@ import org.onap.so.bpmn.infrastructure.workflow.tasks.Resource;
 import org.onap.so.bpmn.infrastructure.workflow.tasks.VrfBondingServiceException;
 import org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowType;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
 import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetup;
 import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetupUtils;
 import org.onap.so.client.exception.ExceptionBuilder;
@@ -206,13 +207,16 @@ public class ServiceEBBLoaderTest extends BaseTaskTest {
         serviceInstanceAAI.setServiceInstanceId(resourceId);
 
         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstance = setServiceInstance();
-        setGenericVnf();
+        GenericVnf genericVnf = setGenericVnf();
         setVfModule(true);
         setVolumeGroup();
         setL3Network();
         setCollection();
         setConfiguration();
 
+        org.onap.aai.domain.yang.GenericVnf genericVnfAai = new org.onap.aai.domain.yang.GenericVnf();
+        genericVnfAai.setModelCustomizationId(genericVnf.getModelInfoGenericVnf().getModelCustomizationUuid());
+
         Configuration config = new Configuration();
         config.setConfigurationId("testConfigurationId2");
         serviceInstance.getConfigurations().add(config);
@@ -236,6 +240,7 @@ public class ServiceEBBLoaderTest extends BaseTaskTest {
         aaiConfiguration2.setRelationshipList(relationshipList1);
 
         try {
+            doReturn(genericVnfAai).when(mockBbInputSetupUtils).getAAIGenericVnf(genericVnf.getVnfId());
             doReturn(serviceInstanceAAI).when(mockBbInputSetupUtils).getAAIServiceInstanceById(resourceId);
             doReturn(serviceInstance).when(mockBbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
             doReturn(Optional.of(aaiConfiguration1)).when(mockAaiConfigurationResources)
index a9bfde9..78a9628 100644 (file)
@@ -32,8 +32,11 @@ import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
 import org.javatuples.Pair;
 import org.junit.Before;
 import org.junit.Test;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
 import org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowType;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
+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;
@@ -41,6 +44,7 @@ import org.onap.so.bpmn.infrastructure.workflow.tasks.Resource;
 import java.util.ArrayList;
 import java.util.List;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 
@@ -82,4 +86,31 @@ public class VnfEBBLoaderTest {
         cut.traverseAAIVnf(delegateExecution, resourceList, serviceId, vnfId, aaiResourceIds);
         assertEquals(WorkflowType.SERVICE, resourceList.get(0).getResourceType());
     }
+
+    @Test
+    public void traverseAAIVnf_should_add_vnfs_and_vfmodules() throws Exception {
+        List<Resource> resourceList = new ArrayList<>();
+        List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
+
+        GenericVnf genericVnf = mock(GenericVnf.class);
+        doReturn(vnfId).when(genericVnf).getVnfId();
+
+        VfModule vfModule = mock(VfModule.class);
+        ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
+        modelInfoVfModule.setIsBaseBoolean(true);
+        doReturn(modelInfoVfModule).when(vfModule).getModelInfoVfModule();
+
+        doReturn(serviceInstanceAAI).when(bbInputSetupUtils).getAAIServiceInstanceById(serviceId);
+        doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
+        doReturn(List.of(genericVnf)).when(serviceInstanceMSO).getVnfs();
+        doReturn(List.of(vfModule)).when(genericVnf).getVfModules();
+        cut = new VnfEBBLoader(bbInputSetupUtils, bbInputSetup, workflowActionUtils, exceptionBuilder);
+
+        cut.traverseAAIVnf(delegateExecution, resourceList, serviceId, vnfId, aaiResourceIds);
+
+        assertEquals(3, resourceList.size());
+        assertEquals(WorkflowType.VNF, resourceList.get(1).getResourceType());
+        assertEquals(WorkflowType.VFMODULE, resourceList.get(2).getResourceType());
+        assertTrue(resourceList.get(2).isBaseVfModule());
+    }
 }
index 5146685..df137d0 100644 (file)
@@ -56,4 +56,7 @@ public class ServiceInfo implements Serializable {
     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 (file)
index 0000000..169dd64
--- /dev/null
@@ -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 (file)
index 0000000..b240215
Binary files /dev/null and b/docs/images/architecture-choices-e2e-slicing.png differ
diff --git a/docs/images/e2e-network-slicing-architecture.png b/docs/images/e2e-network-slicing-architecture.png
new file mode 100644 (file)
index 0000000..922419d
Binary files /dev/null and b/docs/images/e2e-network-slicing-architecture.png 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 (file)
index 0000000..0959783
Binary files /dev/null and b/docs/images/lifecycle-of-network-slice-instance.png differ
diff --git a/docs/images/slicing-option1.png b/docs/images/slicing-option1.png
new file mode 100644 (file)
index 0000000..e19a257
Binary files /dev/null and b/docs/images/slicing-option1.png differ
diff --git a/docs/images/slicing-option2.png b/docs/images/slicing-option2.png
new file mode 100644 (file)
index 0000000..945c7c5
Binary files /dev/null and b/docs/images/slicing-option2.png differ
index 44bab7e..3dc4e8e 100644 (file)
@@ -19,7 +19,8 @@ public class VnfDeleteValidator implements RequestValidator {
     @Override
     public boolean shouldRunFor(String requestUri, ServiceInstancesRequest request, Actions action) {
         return Pattern.compile("[Vv][5-8]/serviceInstances/[^/]+/vnfs/[^/]+").matcher(requestUri).matches()
-                && action.equals(Action.deleteInstance);
+                && action.equals(Action.deleteInstance)
+                && Boolean.TRUE.equals(request.getRequestDetails().getRequestParameters().getALaCarte());
     }
 
     @Override
index 6eb6fc9..9b14104 100644 (file)
@@ -15,6 +15,8 @@ import org.mockito.junit.MockitoJUnitRunner;
 import org.onap.so.apihandlerinfra.Action;
 import org.onap.so.apihandlerinfra.infra.rest.AAIDataRetrieval;
 import org.onap.so.apihandlerinfra.infra.rest.validators.VnfDeleteValidator;
+import org.onap.so.serviceinstancebeans.RequestDetails;
+import org.onap.so.serviceinstancebeans.RequestParameters;
 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
 
 
@@ -31,10 +33,24 @@ public class VnfDeleteValidatorTest {
 
     private Map<String, String> instanceIdMap = new HashMap<>();
 
+    public ServiceInstancesRequest createServiceInstancesRequest(boolean alacarte) {
+        ServiceInstancesRequest sir = new ServiceInstancesRequest();
+        sir.setRequestDetails(new RequestDetails());
+        sir.getRequestDetails().setRequestParameters(new RequestParameters());
+        sir.getRequestDetails().getRequestParameters().setaLaCarte(alacarte);
+        return sir;
+    }
+
     @Test
     public void validateURIMatchTest() {
         assertEquals(true, vnfValidator.shouldRunFor("v8/serviceInstances/uasdfasdf/vnfs/asdfasdf",
-                new ServiceInstancesRequest(), Action.deleteInstance));
+                createServiceInstancesRequest(true), Action.deleteInstance));
+    }
+
+    @Test
+    public void validateURIMatchNonAlacarteTest() {
+        assertEquals(false, vnfValidator.shouldRunFor("v8/serviceInstances/uasdfasdf/vnfs/asdfasdf",
+                createServiceInstancesRequest(false), Action.deleteInstance));
     }
 
     @Test