Update NSMF workflow to for the E2E Network Slicing requirements 63/112863/6
authorhetengjiao <hetengjiao@chinamobile.com>
Fri, 18 Sep 2020 02:08:26 +0000 (10:08 +0800)
committerhetengjiao <hetengjiao@chinamobile.com>
Fri, 18 Sep 2020 08:02:55 +0000 (16:02 +0800)
Issue-ID: SO-2963

Signed-off-by: hetengjiao <hetengjiao@chinamobile.com>
Change-Id: Ic792896cc3e7b23f02fd7f8b8305402271eb0d78

35 files changed:
adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/enums/ActionType.java
adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/ExternalNssmfManager.java
adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/InternalNssmfManager.java
bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofUtils.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSliceService.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/DoAllocateNSIandNSSIV2.groovy [deleted file]
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSSI.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSSIV2.groovy [deleted file]
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/DoCreateSliceServiceOptionV2.groovy [deleted file]
bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateSliceServiceTest.groovy
bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/CreateSliceService.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateNSIandNSSI.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateNSIandNSSIV2.bpmn [deleted file]
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateNSSI.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateNSSIV2.bpmn [deleted file]
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateSliceServiceInstance.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateSliceServiceOption.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateSliceServiceOptionV2.bpmn [deleted file]
common/src/main/java/org/onap/so/beans/nsmf/AllocateAnNssi.java
common/src/main/java/org/onap/so/beans/nsmf/AllocateCnNssi.java
common/src/main/java/org/onap/so/beans/nsmf/ResponseDescriptor.java
common/src/main/java/org/onap/so/beans/nsmf/ServiceInfo.java
common/src/main/java/org/onap/so/beans/nsmf/SliceTaskInfo.java
common/src/main/java/org/onap/so/beans/nsmf/SliceTaskParamsAdapter.java
common/src/main/java/org/onap/so/beans/nsmf/TnSliceProfile.java
common/src/main/java/org/onap/so/beans/nsmf/oof/DomainType.java [deleted file]
common/src/main/java/org/onap/so/beans/nsmf/oof/NsiReqBody.java
common/src/main/java/org/onap/so/beans/nsmf/oof/NssiReqBody.java
common/src/main/java/org/onap/so/beans/nsmf/oof/RequestInfo.java
common/src/main/java/org/onap/so/beans/nsmf/oof/SubnetCapability.java
common/src/main/java/org/onap/so/beans/nsmf/oof/SubnetType.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/oof/TemplateInfo.java

index ed327fd..9df20ba 100644 (file)
 
 package org.onap.so.adapters.nssmf.enums;
 
+import lombok.Getter;
+
+@Getter
 public enum ActionType {
-    ALLOCATE,
+    ALLOCATE("allocate"),
+
+    DEALLOCATE("deallocate"),
+
+    CREATE("create"),
+
+    TERMINATE("terminate"),
 
-    DEALLOCATE,
+    ACTIVATE("activate"),
 
-    CREATE,
+    DEACTIVATE("deactivate"),
 
-    TERMINATE,
+    QUERY_JOB_STATUS("query_job_status"),
 
-    ACTIVATE,
+    MODIFY_BY_ID("modify_by_id"),
 
-    DEACTIVATE,
+    MODIFY("modify"),
 
-    QUERY_JOB_STATUS,
+    QUERY_NSSI_SELECTION_CAPABILITY("query_nssi_selection_capability"),
 
-    MODIFY_BY_ID,
+    QUERY_SUB_NET_CAPABILITY("query_sub_net_capability"),;
 
-    MODIFY,
+    private String type;
 
-    QUERY_NSSI_SELECTION_CAPABILITY,
 
-    QUERY_SUB_NET_CAPABILITY
+    ActionType(String type) {
+        this.type = type;
+    }
 }
index 16a5b2a..d8a9088 100644 (file)
@@ -92,8 +92,13 @@ public abstract class ExternalNssmfManager extends BaseNssmfManager {
 
     private RestResponse doResponseStatus(ResourceOperationStatus status) throws ApplicationException {
         RestResponse restResponse = sendRequest(null);
-        ResponseDescriptor rspDesc =
-                unMarshal(restResponse.getResponseContent(), JobStatusResponse.class).getResponseDescriptor();
+        JobStatusResponse jobStatusResponse = unMarshal(restResponse.getResponseContent(), JobStatusResponse.class);
+
+        ResponseDescriptor rspDesc = jobStatusResponse.getResponseDescriptor();
+        rspDesc.setNssiId(status.getResourceInstanceID());
+
+        jobStatusResponse.setResponseDescriptor(rspDesc);
+        restResponse.setResponseContent(marshal(jobStatusResponse));
         updateRequestDbJobStatus(rspDesc, status, restResponse);
         return restResponse;
     }
index f439b40..348bf12 100644 (file)
@@ -76,6 +76,7 @@ public abstract class InternalNssmfManager extends BaseNssmfManager {
         descriptor.setStatus(status.getStatus());
         descriptor.setStatusDescription(status.getStatusDescription());
         descriptor.setProgress(Integer.parseInt(status.getProgress()));
+        descriptor.setNssiId(status.getResourceInstanceID());
         // descriptor.setResponseId(status.getOperationId());
         return restUtil.createResponse(200, marshal(descriptor));
     }
index 040fc26..44188b4 100644 (file)
 
 package org.onap.so.bpmn.common.scripts
 
+import org.onap.so.beans.nsmf.oof.NsiReqBody
+import org.onap.so.beans.nsmf.oof.RequestInfo
+import org.onap.so.beans.nsmf.oof.SubnetCapability
+import org.onap.so.beans.nsmf.oof.TemplateInfo
+
 import static org.onap.so.bpmn.common.scripts.GenericUtils.*
 
 import javax.ws.rs.core.UriBuilder
@@ -650,4 +655,35 @@ json.add("requestInfo", requestInfo)
 return json.toString()
  
 }
+
+    public String buildSelectNSIRequest(String requestId, TemplateInfo nstInfo, List<TemplateInfo> nsstInfo,
+                                        String messageType, Map<String, Object> serviceProfile,
+                                        List<SubnetCapability> subnetCapabilities, Integer timeOut){
+
+        def transactionId = requestId
+        logger.debug( "transactionId is: " + transactionId)
+
+        String callbackUrl = UrnPropertiesReader.getVariable("mso.adapters.oof.callback.endpoint") + "/" + messageType + "/" + correlator
+
+        NsiReqBody nsiReqBody = new NsiReqBody()
+
+        RequestInfo requestInfo = new RequestInfo()
+        requestInfo.setRequestId(requestId)
+        requestInfo.setTransactionId(transactionId)
+        requestInfo.setCallbackUrl(callbackUrl)
+        requestInfo.setSourceId("so")
+        requestInfo.setTimeout(timeOut)
+        //requestInfo.setNumSolutions()
+
+        nsiReqBody.setRequestInfo(requestInfo)
+        nsiReqBody.setNSTInfo(nstInfo)
+        nsiReqBody.setServiceProfile(serviceProfile)
+        nsiReqBody.setSubnetCapabilities(subnetCapabilities)
+        nsiReqBody.setNSSTInfo(nsstInfo)
+
+
+        ObjectMapper objectMapper = new ObjectMapper()
+
+        return objectMapper.writeValueAsString(nsiReqBody)
+    }
 }
index dcbaf74..342fce7 100644 (file)
@@ -2,19 +2,19 @@
  * ============LICENSE_START=======================================================
  * ONAP - SO
  * ================================================================================
* Copyright (C) 2019 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License")
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
*      http://www.apache.org/licenses/LICENSE-2.0
- *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
# Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
# Licensed under the Apache License, Version 2.0 (the "License")
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
+ #
      http://www.apache.org/licenses/LICENSE-2.0
+ #
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
  * ============LICENSE_END=========================================================
  */
 
@@ -22,21 +22,22 @@ package org.onap.so.bpmn.infrastructure.scripts
 
 import com.fasterxml.jackson.databind.ObjectMapper
 import org.onap.aai.domain.yang.ServiceInstance
-import org.onap.so.client.HttpClient
-import org.onap.so.client.HttpClientFactory
 import org.onap.aaiclient.client.aai.AAIObjectType
 import org.onap.aaiclient.client.aai.AAIResourcesClient
 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
-
-import javax.ws.rs.core.Response
+import org.onap.so.beans.nsmf.EsrInfo
+import org.onap.so.beans.nsmf.NssmfAdapterNBIRequest
+import org.onap.so.beans.nsmf.SliceTaskParamsAdapter
+import org.onap.so.beans.nsmf.oof.TemplateInfo
+import org.onap.so.bpmn.common.scripts.NssmfAdapterUtils
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
 
 import static org.apache.commons.lang3.StringUtils.*
 import org.springframework.web.util.UriUtils
 import groovy.json.JsonSlurper
 import org.camunda.bpm.engine.delegate.BpmnError
 import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.onap.logging.filter.base.ONAPComponents
 import org.onap.so.beans.nsmf.SliceTaskParams
 import org.onap.so.db.request.beans.OrchestrationTask
 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
@@ -59,8 +60,10 @@ public class CreateSliceService extends AbstractServiceTaskProcessor {
     JsonSlurper jsonSlurper = new JsonSlurper()
     ObjectMapper objectMapper = new ObjectMapper()
     OofUtils oofUtils = new OofUtils()
-    private static final Logger logger = LoggerFactory.getLogger(CreateSliceService.class)
+    NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil)
+    AAIResourcesClient client = getAAIClient()
 
+    private static final Logger logger = LoggerFactory.getLogger(CreateSliceService.class)
 
     public void preProcessRequest(DelegateExecution execution) {
         logger.debug("Start preProcessRequest")
@@ -150,7 +153,7 @@ public class CreateSliceService extends AbstractServiceTaskProcessor {
 
             logger.debug("User Input Parameters map: " + inputMap.toString())
             String uuiRequest = inputMap.get("UUIRequest")
-            Map uuiReqMap = jsonSlurper.parseText(uuiRequest)
+            Map uuiReqMap = jsonSlurper.parseText(uuiRequest) as Map
             Map<String, Object> serviceObject = (Map<String, Object>) uuiReqMap.get("service")
             Map<String, Object> parameterObject = (Map<String, Object>) serviceObject.get("parameters")
             Map<String, Object> requestInputs = (Map<String, Object>) parameterObject.get("requestInputs")
@@ -162,7 +165,8 @@ public class CreateSliceService extends AbstractServiceTaskProcessor {
 
             execution.setVariable("serviceInputParams", inputMap)
             execution.setVariable("uuiRequest", uuiRequest)
-            execution.setVariable("serviceProfile", serviceProfile)
+            execution.setVariable("se" +
+                    "rviceProfile", serviceProfile)
 
             //TODO
             //execution.setVariable("serviceInputParams", jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.userParams"))
@@ -178,76 +182,69 @@ public class CreateSliceService extends AbstractServiceTaskProcessor {
         logger.debug("Finish preProcessRequest")
     }
 
-    public void prepareSelectNSTRequest(DelegateExecution execution) {
-        logger.debug("Start prepareSelectNSTRequest")
-        String requestId = execution.getVariable("msoRequestId")
-           String messageType = "NSTSelectionResponse"
-        Map<String, Object> serviceProfile = execution.getVariable("serviceProfile")
-               execution.setVariable("nstSelectionUrl", "/api/oof/v1/selection/nst")
-               execution.setVariable("nstSelection_messageType",messageType)
-               execution.setVariable("nstSelection_correlator",requestId)
-               String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution);
-               execution.setVariable("nstSelection_timeout",timeout)
-        String oofRequest = oofUtils.buildSelectNSTRequest(requestId,messageType, serviceProfile)
-        execution.setVariable("nstSelection_oofRequest",oofRequest)
-        logger.debug("Finish prepareSelectNSTRequest")
-
-    }
-       
-       public void processNSTSolutions(DelegateExecution execution) {
-               Map<String, Object> nstSolution
-               try {
-                       logger.debug("Start processing NSTSolutions")
-                       Map<String, Object> resMap = objectMapper.readValue(execution.getVariable("nstSelection_oofResponse"),Map.class)
-                       List<Map<String, Object>> nstSolutions = (List<Map<String, Object>>) resMap.get("solutions")
-                       nstSolution = nstSolutions.get(0)
-                       execution.setVariable("nstSolution", nstSolution)
-               } catch (Exception ex) {
-                       logger.debug( "Failed to get NST solution suggested by OOF.")
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Failed to get NST solution suggested by OOF.")
-               }
-
-       }
-
-    public void prepareDecomposeService(DelegateExecution execution) {
-        logger.debug("Start prepareDecomposeService")
-        String uuiRequest = execution.getVariable("uuiRequest")
-        String ssModelInvariantUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceInvariantUuid")
-        String ssModelUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceUuid")
-        String ssServiceModelInfo = """{
-            "modelInvariantUuid":"${ssModelInvariantUuid}",
-            "modelUuid":"${ssModelUuid}",
-            "modelVersion":""
-             }"""
-        execution.setVariable("ssServiceModelInfo", ssServiceModelInfo)
-
-        logger.debug("Finish prepareDecomposeService")
-    }
-
-    public void processDecomposition(DelegateExecution execution) {
-        logger.debug("Start processDecomposition")
-        String uuiRequest = execution.getVariable("uuiRequest")
-        Map<String, Object> serviceProfile = execution.getVariable("serviceProfile")
-        Map<String, Object> nstSolution = execution.getVariable("nstSolution")
-
-        Map uuiReqMap = jsonSlurper.parseText(uuiRequest)
-        Map<String, Object> serviceObject = (Map<String, Object>) uuiReqMap.get("service")
-        String subscriptionServiceType = serviceObject.get("serviceType")
+    /**
+     *
+     * @param execution
+     */
+    public void prepareInitServiceOperationStatus(DelegateExecution execution) {
+        logger.debug("Start prepareInitServiceOperationStatus")
+        try{
+            String serviceId = execution.getVariable("serviceInstanceId")
+            String operationId = execution.getVariable("operationId")
+            String operationType = "CREATE"
+            String userId = execution.getVariable("globalSubscriberId")
+            String result = "processing"
+            String progress = "0"
+            String reason = ""
+            String operationContent = "Prepare service creation"
+            logger.debug("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId)
+            serviceId = UriUtils.encode(serviceId,"UTF-8")
+            execution.setVariable("serviceInstanceId", serviceId)
+            execution.setVariable("operationType", operationType)
 
-        String serviceType = (String) serviceProfile.get("sST")
-        String resourceSharingLevel = (String) serviceProfile.get("resourceSharingLevel")
-        String nstModelUuid = (String) nstSolution.get("UUID")
-        String nstModelInvariantUuid = (String) nstSolution.get("invariantUUID")
+            def dbAdapterEndpoint = UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint",execution)
+            execution.setVariable("CSSOS_dbAdapterEndpoint", dbAdapterEndpoint)
+            logger.debug("DB Adapter Endpoint is: " + dbAdapterEndpoint)
+            def dbAdapterAuth = UrnPropertiesReader.getVariable("mso.requestDb.auth")
+            Map<String, String> CSSOS_headerMap = [:]
+            CSSOS_headerMap.put("content-type", "application/soap+xml")
+            CSSOS_headerMap.put("Authorization", dbAdapterAuth)
+            execution.setVariable("CSSOS_headerMap", CSSOS_headerMap)
+            logger.debug("DB Adapter Header is: " + CSSOS_headerMap)
 
-        execution.setVariable("subscriptionServiceType", subscriptionServiceType)
-        execution.setVariable("serviceType", serviceType)
-        execution.setVariable("resourceSharingLevel", resourceSharingLevel)
-        execution.setVariable("nstModelUuid", nstModelUuid)
-        execution.setVariable("nstModelInvariantUuid", nstModelInvariantUuid)
+            String payload =
+                    """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                        <soapenv:Header/>
+                        <soapenv:Body>
+                            <ns:initServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
+                            <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
+                            <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                            <operationType>${MsoUtils.xmlEscape(operationType)}</operationType>
+                            <userId>${MsoUtils.xmlEscape(userId)}</userId>
+                            <result>${MsoUtils.xmlEscape(result)}</result>
+                            <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent>
+                            <progress>${MsoUtils.xmlEscape(progress)}</progress>
+                            <reason>${MsoUtils.xmlEscape(reason)}</reason>
+                        </ns:initServiceOperationStatus>
+                    </soapenv:Body>
+                </soapenv:Envelope>"""
 
-        logger.debug("Finish processDecomposition")
+            payload = utils.formatXml(payload)
+            execution.setVariable("CSSOS_updateServiceOperStatusRequest", payload)
+            logger.debug("Outgoing updateServiceOperStatusRequest: \n" + payload)
+        }catch(Exception e){
+            logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                    "Exception Occured Processing prepareInitServiceOperationStatus.", "BPMN",
+                    ErrorCode.UnknownError.getValue(), "Exception is:\n" + e)
+        }
+        logger.debug("Finish prepareInitServiceOperationStatus")
     }
 
+    /**
+     * prepare create OrchestrationTask
+     * @param execution
+     */
     public void prepareCreateOrchestrationTask(DelegateExecution execution) {
         logger.debug("Start createOrchestrationTask")
         String taskId = execution.getBusinessKey()
@@ -265,21 +262,104 @@ public class CreateSliceService extends AbstractServiceTaskProcessor {
         execution.setVariable("CSSOT_isManual", isManual)
         execution.setVariable("CSSOT_requestMethod", requestMethod)
 
-        Map<String, Object> serviceProfile = execution.getVariable("serviceProfile")
+        Map<String, Object> serviceProfile = execution.getVariable("serviceProfile") as Map<String, Object>
 
-        SliceTaskParams sliceTaskParams = new SliceTaskParams()
+        SliceTaskParamsAdapter sliceTaskParams = new SliceTaskParamsAdapter()
         sliceTaskParams.setServiceId(serviceInstanceId)
         sliceTaskParams.setServiceName(serviceInstanceName)
         sliceTaskParams.setServiceProfile(serviceProfile)
+
         execution.setVariable("sliceTaskParams", sliceTaskParams)
 
-        String paramJson = sliceTaskParams.convertToJson()
-        execution.setVariable("CSSOT_paramJson", paramJson)
-        logger.debug("CSSOT_paramJson: " + paramJson)
+        //todo:----------------------------------------
+//        String paramJson = sliceTaskParams.convertToJson()
+//        execution.setVariable("CSSOT_paramJson", paramJson)
+        /*-------------------------------------------*/
 
         logger.debug("Finish createOrchestrationTask")
     }
 
+    /**
+     *  send sync response to csmf
+     * @param execution
+     */
+    public void sendSyncResponse(DelegateExecution execution) {
+        logger.debug("Start sendSyncResponse")
+        try {
+            String operationId = execution.getVariable("operationId")
+            String serviceInstanceId = execution.getVariable("serviceInstanceId")
+            // RESTResponse for API Handler (APIH) Reply Task
+            String createServiceRestRequest = """
+                {
+                   "service": {
+                        "serviceId":"${serviceInstanceId}",
+                        "operationId":"${operationId}"
+                   }
+                }
+                """.trim()
+
+            logger.debug("sendSyncResponse to APIH:" + "\n" + createServiceRestRequest)
+            sendWorkflowResponse(execution, 202, createServiceRestRequest)
+            execution.setVariable("sentSyncResponse", true)
+        } catch (Exception e) {
+            String msg = "Exceptuion in sendSyncResponse:" + e.getMessage()
+            logger.debug(msg)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+        }
+        logger.debug("Finish sendSyncResponse")
+    }
+
+    public void prepareSelectNSTRequest(DelegateExecution execution) {
+        logger.debug("Start prepareSelectNSTRequest")
+        String requestId = execution.getVariable("msoRequestId")
+        String messageType = "NSTSelectionResponse"
+        Map<String, Object> serviceProfile = execution.getVariable("serviceProfile") as Map<String, Object>
+        execution.setVariable("nstSelectionUrl", "/api/oof/v1/selection/nst")
+        execution.setVariable("nstSelection_messageType", messageType)
+        execution.setVariable("nstSelection_correlator", requestId)
+        String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution);
+        execution.setVariable("nstSelection_timeout", timeout)
+        String oofRequest = oofUtils.buildSelectNSTRequest(requestId, messageType, serviceProfile)
+        execution.setVariable("nstSelection_oofRequest", oofRequest)
+        logger.debug("Finish prepareSelectNSTRequest")
+
+    }
+
+    /**
+     * process async response of oof, put the {@solutions} at {@nstSolution}
+     * @param execution
+     */
+    public void processNSTSolutions(DelegateExecution execution) {
+        Map<String, Object> nstSolution
+        try {
+            logger.debug("Start processing NSTSolutions")
+            Map<String, Object> resMap =
+                    objectMapper.readValue(execution.getVariable("nstSelection_oofResponse") as String,
+                            Map.class)
+
+            List<Map<String, Object>> nstSolutions = (List<Map<String, Object>>) resMap.get("solutions")
+            nstSolution = nstSolutions.get(0)
+            execution.setVariable("nstSolution", nstSolution)
+
+            //set nst info into sliceTaskParams
+            SliceTaskParamsAdapter sliceTaskParams =
+                    execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+            TemplateInfo nstInfo = new TemplateInfo()
+            nstInfo.setUUID(nstSolution.get("UUID") as String)
+            nstInfo.setInvariantUUID(nstSolution.get("invariantUUID") as String)
+            nstInfo.setName(nstSolution.get("name") as String)
+
+            sliceTaskParams.setNSTInfo(nstInfo)
+
+            execution.setVariable("sliceTaskParams", sliceTaskParams)
+
+        } catch (Exception ex) {
+            logger.debug( "Failed to get NST solution suggested by OOF.")
+            exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Failed to get NST solution suggested by OOF.")
+        }
+
+    }
+
     public void prepareUpdateOrchestrationTask(DelegateExecution execution) {
         logger.debug("Start prepareUpdateOrchestrationTask")
         String requestMethod = "PUT"
@@ -292,6 +372,7 @@ public class CreateSliceService extends AbstractServiceTaskProcessor {
         logger.debug("Finish prepareUpdateOrchestrationTask")
     }
 
+
     public void prepareGetUserOptions(DelegateExecution execution) {
         logger.debug("Start prepareGetUserOptions")
         String requestMethod = "GET"
@@ -325,7 +406,7 @@ public class CreateSliceService extends AbstractServiceTaskProcessor {
         String orchStatus = execution.getVariable("orchestrationStatus")
 
         try {
-            ServiceInstance si = ServiceInstance si = new ServiceInstance()
+            ServiceInstance si = new ServiceInstance()
             si.setOrchestrationStatus(orchStatus)
             AAIResourcesClient client = new AAIResourcesClient()
             AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId)
@@ -341,61 +422,6 @@ public class CreateSliceService extends AbstractServiceTaskProcessor {
         logger.debug("Finish updateAAIOrchStatus")
     }
 
-    public void prepareInitServiceOperationStatus(DelegateExecution execution) {
-        logger.debug("Start prepareInitServiceOperationStatus")
-        try{
-            String serviceId = execution.getVariable("serviceInstanceId")
-            String operationId = execution.getVariable("operationId")
-            String operationType = "CREATE"
-            String userId = execution.getVariable("globalSubscriberId")
-            String result = "processing"
-            String progress = "0"
-            String reason = ""
-            String operationContent = "Prepare service creation"
-            logger.debug("Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId)
-            serviceId = UriUtils.encode(serviceId,"UTF-8")
-            execution.setVariable("serviceInstanceId", serviceId)
-            execution.setVariable("operationType", operationType)
-
-            def dbAdapterEndpoint = UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint",execution)
-            execution.setVariable("CSSOS_dbAdapterEndpoint", dbAdapterEndpoint)
-            logger.debug("DB Adapter Endpoint is: " + dbAdapterEndpoint)
-            def dbAdapterAuth = UrnPropertiesReader.getVariable("mso.requestDb.auth")
-            Map<String, String> CSSOS_headerMap = [:]
-            CSSOS_headerMap.put("content-type", "application/soap+xml")
-            CSSOS_headerMap.put("Authorization", dbAdapterAuth)
-            execution.setVariable("CSSOS_headerMap", CSSOS_headerMap)
-            logger.debug("DB Adapter Header is: " + CSSOS_headerMap)
-
-            String payload =
-                    """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
-                        xmlns:ns="http://org.onap.so/requestsdb">
-                        <soapenv:Header/>
-                        <soapenv:Body>
-                            <ns:initServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
-                            <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
-                            <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
-                            <operationType>${MsoUtils.xmlEscape(operationType)}</operationType>
-                            <userId>${MsoUtils.xmlEscape(userId)}</userId>
-                            <result>${MsoUtils.xmlEscape(result)}</result>
-                            <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent>
-                            <progress>${MsoUtils.xmlEscape(progress)}</progress>
-                            <reason>${MsoUtils.xmlEscape(reason)}</reason>
-                        </ns:initServiceOperationStatus>
-                    </soapenv:Body>
-                </soapenv:Envelope>"""
-
-            payload = utils.formatXml(payload)
-            execution.setVariable("CSSOS_updateServiceOperStatusRequest", payload)
-            logger.debug("Outgoing updateServiceOperStatusRequest: \n" + payload)
-        }catch(Exception e){
-            logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                    "Exception Occured Processing prepareInitServiceOperationStatus.", "BPMN",
-                    ErrorCode.UnknownError.getValue(), "Exception is:\n" + e)
-        }
-        logger.debug("Finish prepareInitServiceOperationStatus")
-    }
-
     public void prepareUpdateServiceOperationStatus(DelegateExecution execution) {
         logger.debug("Start preUpdateServiceOperationStatus")
         try{
@@ -438,23 +464,7 @@ public class CreateSliceService extends AbstractServiceTaskProcessor {
         logger.debug("Finish preUpdateServiceOperationStatus")
     }
 
-    public void sendSyncResponse(DelegateExecution execution) {
-        logger.debug("Start sendSyncResponse")
-        try {
-            String operationId = execution.getVariable("operationId")
-            String serviceInstanceId = execution.getVariable("serviceInstanceId")
-            // RESTResponse for API Handler (APIH) Reply Task
-            String createServiceRestRequest = """{"service":{"serviceId":"${serviceInstanceId}","operationId":"${operationId}"}}""".trim()
-            logger.debug("sendSyncResponse to APIH:" + "\n" + createServiceRestRequest)
-            sendWorkflowResponse(execution, 202, createServiceRestRequest)
-            execution.setVariable("sentSyncResponse", true)
-        } catch (Exception e) {
-            String msg = "Exceptuion in sendSyncResponse:" + e.getMessage()
-            logger.debug(msg)
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-        }
-        logger.debug("Finish sendSyncResponse")
-    }
+
 
     public void prepareCompletionRequest (DelegateExecution execution) {
         logger.trace("Start prepareCompletionRequest")
index 4a8469c..c4068d2 100644 (file)
@@ -2,19 +2,19 @@
  * ============LICENSE_START=======================================================
  * ONAP - SO
  * ================================================================================
* Copyright (C) 2019 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License")
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
*      http://www.apache.org/licenses/LICENSE-2.0
- *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
# Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
# Licensed under the Apache License, Version 2.0 (the "License")
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
+ #
      http://www.apache.org/licenses/LICENSE-2.0
+ #
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
  * ============LICENSE_END=========================================================
  */
 
@@ -23,19 +23,29 @@ package org.onap.so.bpmn.infrastructure.scripts
 import org.camunda.bpm.engine.delegate.BpmnError
 import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.onap.aai.domain.yang.Relationship
-import org.onap.aai.domain.yang.RelationshipList
 import org.onap.aai.domain.yang.ServiceInstance
-import org.onap.so.beans.nsmf.SliceTaskParams
-import org.onap.so.bpmn.common.scripts.ExceptionUtil
-import org.onap.so.bpmn.common.scripts.NssmfAdapterUtils
-import org.onap.so.bpmn.core.domain.ServiceDecomposition
-import org.onap.so.bpmn.core.domain.ServiceProxy
-import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.aai.domain.yang.SliceProfile
 import org.onap.aaiclient.client.aai.AAIObjectType
 import org.onap.aaiclient.client.aai.AAIResourcesClient
 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper
 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
+import org.onap.so.beans.nsmf.AllocateAnNssi
+import org.onap.so.beans.nsmf.AllocateCnNssi
+import org.onap.so.beans.nsmf.AllocateTnNssi
+import org.onap.so.beans.nsmf.AnSliceProfile
+import org.onap.so.beans.nsmf.CnSliceProfile
+import org.onap.so.beans.nsmf.EsrInfo
+import org.onap.so.beans.nsmf.NssiResponse
+import org.onap.so.beans.nsmf.NssmfAdapterNBIRequest
+import org.onap.so.beans.nsmf.ResponseDescriptor
+import org.onap.so.beans.nsmf.ServiceInfo
+import org.onap.so.beans.nsmf.SliceTaskInfo
+import org.onap.so.beans.nsmf.SliceTaskParamsAdapter
+import org.onap.so.beans.nsmf.TnSliceProfile
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.core.json.JsonUtils
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 
@@ -43,15 +53,15 @@ import javax.ws.rs.NotFoundException
 
 import static org.apache.commons.lang3.StringUtils.isBlank
 
-class DoAllocateNSIandNSSI extends org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor{
+class DoAllocateNSIandNSSI extends AbstractServiceTaskProcessor{
 
-    private static final Logger logger = LoggerFactory.getLogger( DoAllocateNSIandNSSI.class);
+    private static final Logger logger = LoggerFactory.getLogger(DoAllocateNSIandNSSI.class);
 
     ExceptionUtil exceptionUtil = new ExceptionUtil()
 
     JsonUtils jsonUtil = new JsonUtils()
 
-    private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil)
+    AAIResourcesClient client = getAAIClient()
 
     /**
      * Pre Process the BPMN Flow Request
@@ -72,165 +82,77 @@ class DoAllocateNSIandNSSI extends org.onap.so.bpmn.common.scripts.AbstractServi
         logger.trace("Exit preProcessRequest")
     }
 
+    /**
+     * Process NSI options
+     * @param execution
+     */
     void retriveSliceOption(DelegateExecution execution) {
         logger.trace("Enter retriveSliceOption() of DoAllocateNSIandNSSI")
-        String uuiRequest = execution.getVariable("uuiRequest")
-        boolean isNSIOptionAvailable = false
-        List<String> nssiAssociated = new ArrayList<>()
-        SliceTaskParams sliceParams = execution.getVariable("sliceTaskParams")
-        try
-        {
-            Map<String, Object> nstSolution = execution.getVariable("nstSolution") as Map
-            String modelUuid = nstSolution.get("UUID")
-            String modelInvariantUuid = nstSolution.get("invariantUUID")
-            String serviceModelInfo = """{
-            "modelInvariantUuid":"${modelInvariantUuid}",
-            "modelUuid":"${modelUuid}",
-            "modelVersion":""
-             }"""
-            execution.setVariable("serviceModelInfo", serviceModelInfo)
-            //Params sliceParams = new Gson().fromJson(params, new TypeToken<Params>() {}.getType());
-            execution.setVariable("sliceParams", sliceParams)
-        }catch (Exception ex) {
-            logger.debug( "Unable to get the task information from request DB: " + ex)
-            exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Unable to get task information from request DB.")
-        }
 
-        if(isBlank(sliceParams.getSuggestNsiId()))
-        {
-            isNSIOptionAvailable=false
-        }
-        else
-        {
-            isNSIOptionAvailable=true
-            execution.setVariable('nsiServiceInstanceId',sliceParams.getSuggestNsiId())
-            execution.setVariable('nsiServiceInstanceName',sliceParams.getSuggestNsiName())
-        }
-        execution.setVariable("isNSIOptionAvailable",isNSIOptionAvailable)
-        logger.trace("Exit retriveSliceOption() of DoAllocateNSIandNSSI")
-    }
+        boolean isNSIOptionAvailable
 
-    void updateRelationship(DelegateExecution execution) {
-        logger.debug("Enter update relationship in DoAllocateNSIandNSSI()")
-        String allottedResourceId = execution.getVariable("allottedResourceId")
-        //Need to check whether nsi exist : Begin
-        org.onap.aai.domain.yang.ServiceInstance nsiServiceInstance = new org.onap.aai.domain.yang.ServiceInstance()
-        SliceTaskParams sliceParams = execution.getVariable("sliceParams")
-        String nsiServiceInstanceID = sliceParams.getSuggestNsiId()
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
 
-        AAIResourcesClient resourceClient = new AAIResourcesClient()
-        AAIResourceUri nsiServiceuri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), nsiServiceInstanceID)
-        //AAIResourceUri nsiServiceuri = AAIUriFactory.createResourceUri(AAIObjectType.QUERY_ALLOTTED_RESOURCE, execution.getVariable("globalSubscriberId"), execution.getVariable("serviceType"), nsiServiceInstanceID)
-
-        try {
-            AAIResultWrapper wrapper = resourceClient.get(nsiServiceuri, NotFoundException.class)
-            Optional<org.onap.aai.domain.yang.ServiceInstance> si = wrapper.asBean(org.onap.aai.domain.yang.ServiceInstance.class)
-            nsiServiceInstance = si.get()
-            //allottedResourceId=nsiServiceInstance.getAllottedResources().getAllottedResource().get(0).getId()
-
-//            if(resourceClient.exists(nsiServiceuri)){
-//                execution.setVariable("nsi_resourceLink", nsiServiceuri.build().toString())
-//            }else{
-//                exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service instance was not found in aai to " +
-//                        "associate for service :"+serviceInstanceId)
-//            }
-
-        AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.ALLOTTED_RESOURCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), execution.getVariable("sliceServiceInstanceId"), allottedResourceId)
-        getAAIClient().connect(allottedResourceUri,nsiServiceuri)
-
-        List<String> nssiAssociated = new ArrayList<>()
-        RelationshipList relationshipList = nsiServiceInstance.getRelationshipList()
-        List<Relationship> relationships = relationshipList.getRelationship()
-        for(Relationship relationship in relationships)
-        {
-            if(relationship.getRelatedTo().equalsIgnoreCase("service-instance"))
-            {
-                String NSSIassociated = relationship.getRelatedLink().substring(relationship.getRelatedLink().lastIndexOf("/") + 1);
-                if(!NSSIassociated.equals(nsiServiceInstanceID))
-                    nssiAssociated.add(NSSIassociated)
-            }
+        if(isBlank(sliceParams.getSuggestNsiId())) {
+            isNSIOptionAvailable = false
         }
-        execution.setVariable("nssiAssociated",nssiAssociated)
-        execution.setVariable("nsiServiceInstanceName",nsiServiceInstance.getServiceInstanceName())
-        }catch(BpmnError e) {
-            throw e
-        }catch (Exception ex){
-            String msg = "NSI suggested in the option doesn't exist. " + nsiServiceInstanceID
-            logger.debug(msg)
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+        else {
+            isNSIOptionAvailable = true
+            execution.setVariable('nsiServiceInstanceId', sliceParams.getSuggestNsiId())
+            execution.setVariable('nsiServiceInstanceName', sliceParams.getSuggestNsiName())
         }
-        logger.debug("Exit update relationship in DoAllocateNSIandNSSI()")
+        execution.setVariable("isNSIOptionAvailable", isNSIOptionAvailable)
+        logger.trace("Exit retriveSliceOption() of DoAllocateNSIandNSSI")
     }
 
-    void prepareNssiModelInfo(DelegateExecution execution){
-        logger.trace("Enter prepareNssiModelInfo in DoAllocateNSIandNSSI()")
-        List<String> nssiAssociated = new ArrayList<>()
-        Map<String, Object> nssiMap = new HashMap<>()
-        nssiAssociated=execution.getVariable("nssiAssociated")
-        for(String nssiID in nssiAssociated)
-        {
-            try {
-                AAIResourcesClient resourceClient = new AAIResourcesClient()
-                AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), nssiID)
-                AAIResultWrapper wrapper = resourceClient.get(serviceInstanceUri, NotFoundException.class)
-                Optional<org.onap.aai.domain.yang.ServiceInstance> si = wrapper.asBean(org.onap.aai.domain.yang.ServiceInstance.class)
-                org.onap.aai.domain.yang.ServiceInstance nssi = si.get()
-                nssiMap.put(nssi.getEnvironmentContext(),"""{
-                    "serviceInstanceId":"${nssi.getServiceInstanceId()}",
-                    "modelUuid":"${nssi.getModelVersionId()}"
-                     }""")
-
-            }catch(NotFoundException e)
-            {
-                logger.debug("NSSI Service Instance not found in AAI: " + nssiID)
-            }catch(Exception e)
-            {
-                logger.debug("NSSI Service Instance not found in AAI: " + nssiID)
-            }
-            execution.setVariable("nssiMap",nssiMap)
-
-        }
-        logger.trace("Exit prepareNssiModelInfo in DoAllocateNSIandNSSI()")
-    }
 
+    /**
+     * create nsi instance in aai
+     * @param execution
+     */
     void createNSIinAAI(DelegateExecution execution) {
         logger.debug("Enter CreateNSIinAAI in DoAllocateNSIandNSSI()")
-        ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
-        org.onap.aai.domain.yang.ServiceInstance nsi = new ServiceInstance();
+
         String sliceInstanceId = UUID.randomUUID().toString()
-        execution.setVariable("sliceInstanceId",sliceInstanceId)
-        nsi.setServiceInstanceId(sliceInstanceId)
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+
+        //set new nsiId to sliceParams suggestNsiId
+        sliceParams.setSuggestNsiId(sliceInstanceId)
+
+        ServiceInstance nsi = new ServiceInstance()
+
+
         String sliceInstanceName = "nsi_"+execution.getVariable("sliceServiceInstanceName")
-        nsi.setServiceInstanceName(sliceInstanceName)
         String serviceType = execution.getVariable("serviceType")
-        nsi.setServiceType(serviceType)
         String serviceStatus = "deactivated"
+        String modelInvariantUuid = sliceParams.getNSTInfo().invariantUUID
+        String modelUuid = sliceParams.getNSTInfo().UUID
+
+        String uuiRequest = execution.getVariable("uuiRequest")
+        String serviceInstanceLocationid = jsonUtil.getJsonValue(uuiRequest, "service.parameters.requestInputs.plmnIdList")
+        String serviceRole = "nsi"
+
+        execution.setVariable("sliceInstanceId", sliceInstanceId)
+        nsi.setServiceInstanceId(sliceInstanceId)
+        nsi.setServiceInstanceName(sliceInstanceName)
+        nsi.setServiceType(serviceType)
         nsi.setOrchestrationStatus(serviceStatus)
-        String modelInvariantUuid = serviceDecomposition.getModelInfo().getModelInvariantUuid()
-        String modelUuid = serviceDecomposition.getModelInfo().getModelUuid()
         nsi.setModelInvariantId(modelInvariantUuid)
         nsi.setModelVersionId(modelUuid)
-        String uuiRequest = execution.getVariable("uuiRequest")
-        String serviceInstanceLocationid = jsonUtil.getJsonValue(uuiRequest, "service.parameters.requestInputs.plmnIdList")
         nsi.setServiceInstanceLocationId(serviceInstanceLocationid)
-        //String snssai = jsonUtil.getJsonValue(uuiRequest, "service.requestInputs.snssai")
-        //nsi.setEnvironmentContext(snssai)
-        String serviceRole = "nsi"
         nsi.setServiceRole(serviceRole)
-        String msg = ""
+        String msg
         try {
 
-            AAIResourcesClient client = new AAIResourcesClient()
-            AAIResourceUri nsiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), sliceInstanceId)
+            AAIResourceUri nsiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
+                    execution.getVariable("globalSubscriberId"),
+                    execution.getVariable("subscriptionServiceType"),
+                    sliceInstanceId)
             client.create(nsiServiceUri, nsi)
 
-            Relationship relationship = new Relationship()
-            logger.info("Creating Allotted resource relationship, nsiServiceUri: " + nsiServiceUri.build().toString())
-            relationship.setRelatedLink(nsiServiceUri.build().toString())
-            AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.ALLOTTED_RESOURCE,
-                    execution.getVariable("globalSubscriberId"),execution.getVariable("subscriptionServiceType"),
-                    execution.getVariable("sliceServiceInstanceId"), execution.getVariable("allottedResourceId")).relationshipAPI()
-            client.create(allottedResourceUri, relationship)
+            execution.setVariable("nsiServiceUri", nsiServiceUri)
 
         } catch (BpmnError e) {
             throw e
@@ -239,124 +161,565 @@ class DoAllocateNSIandNSSI extends org.onap.so.bpmn.common.scripts.AbstractServi
             logger.info(msg)
             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
         }
-        Map<String, Object> nssiMap = new HashMap<>()
-        List<ServiceProxy> serviceProxyList = serviceDecomposition.getServiceProxy()
-        List<String> nsstModelInfoList = new ArrayList<>()
-        for(ServiceProxy serviceProxy : serviceProxyList)
-        {
-            //String nsstModelUuid = serviceProxy.getModelInfo().getModelUuid()
-            String nsstModelUuid = serviceProxy.getSourceModelUuid()
-            //String nsstModelInvariantUuid = serviceProxy.getModelInfo().getModelInvariantUuid()
-            String nsstServiceModelInfo = """{
-            "modelInvariantUuid":"",
-            "modelUuid":"${nsstModelUuid}",
-            "modelVersion":""
-             }"""
-            nsstModelInfoList.add(nsstServiceModelInfo)
-        }
-        int currentIndex=0
-        int maxIndex=nsstModelInfoList.size()
-        if(maxIndex < 1)
-        {
-            msg = "Exception in DoAllocateNSIandNSSI. There is no NSST associated with NST "
-            logger.info(msg)
+
+        logger.debug("Exit CreateNSIinAAI in DoAllocateNSIandNSSI()")
+    }
+
+
+    /**
+     * create relationship between nsi and service profile instance
+     * @param execution
+     */
+    void createRelationship(DelegateExecution execution) {
+        //relation ship
+        String allottedResourceId = execution.getVariable("allottedResourceId")
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+
+        AAIResourceUri nsiServiceUri = execution.getVariable("nsiServiceUri") as AAIResourceUri
+        logger.info("Creating Allotted resource relationship, nsiServiceUri: " + nsiServiceUri)
+
+        AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(
+                AAIObjectType.ALLOTTED_RESOURCE,
+                execution.getVariable("globalSubscriberId"),
+                execution.getVariable("subscriptionServiceType"),
+                sliceParams.suggestNsiId,
+                allottedResourceId)
+
+        client.connect(allottedResourceUri, nsiServiceUri)
+    }
+
+    /**
+     *
+     * @param execution
+     */
+    void updateRelationship(DelegateExecution execution) {
+        logger.debug("Enter update relationship in DoAllocateNSIandNSSI()")
+        //todo: allottedResourceId
+        String allottedResourceId = execution.getVariable("allottedResourceId")
+        //Need to check whether nsi exist : Begin
+
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+
+        String nsiServiceInstanceID = sliceParams.getSuggestNsiId()
+        //sliceParams.setServiceId(nsiServiceInstanceID)
+
+        AAIResourceUri nsiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
+                execution.getVariable("globalSubscriberId"),
+                execution.getVariable("subscriptionServiceType"),
+                nsiServiceInstanceID)
+
+        try {
+            AAIResultWrapper wrapper = client.get(nsiServiceUri, NotFoundException.class)
+            Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
+            //todo: if exists
+            if (!si.ifPresent()) {
+                String msg = "NSI suggested in the option doesn't exist. " + nsiServiceInstanceID
+                logger.debug(msg)
+                exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+            }
+
+            AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(
+                    AAIObjectType.ALLOTTED_RESOURCE,
+                    execution.getVariable("globalSubscriberId"),
+                    execution.getVariable("subscriptionServiceType"),
+                    sliceParams.suggestNsiId, //nsiId
+                    allottedResourceId)
+
+            client.connect(allottedResourceUri, nsiServiceUri)
+
+            execution.setVariable("sliceTaskParams", sliceParams)
+        }catch(BpmnError e) {
+            throw e
+        }catch (Exception ex){
+            String msg = "NSI suggested in the option doesn't exist. " + nsiServiceInstanceID
+            logger.debug(msg)
             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
         }
-        execution.setVariable("nsstModelInfoList",nsstModelInfoList)
-        execution.setVariable("currentIndex",currentIndex)
-        execution.setVariable("maxIndex",maxIndex)
-        execution.setVariable('nsiServiceInstanceId',sliceInstanceId)
-        execution.setVariable("nsiServiceInstanceName",sliceInstanceName)
-        logger.debug("Exit CreateNSIinAAI in DoAllocateNSIandNSSI()")
+        logger.debug("Exit update relationship in DoAllocateNSIandNSSI()")
     }
 
-    void getOneNsstInfo(DelegateExecution execution){
-        List<String> nsstModelInfoList = new ArrayList<>()
-        nsstModelInfoList = execution.getVariable("nsstModelInfoList")
-        int currentIndex = execution.getVariable("currentIndex")
-        int maxIndex = execution.getVariable("maxIndex")
-        boolean isMoreNSSTtoProcess = true
-        String nsstServiceModelInfo = nsstModelInfoList.get(currentIndex)
-        execution.setVariable("serviceModelInfo", nsstServiceModelInfo)
-        execution.setVariable("currentIndex", currentIndex)
-        currentIndex = currentIndex+1
-        if(currentIndex <= maxIndex )
-            isMoreNSSTtoProcess = false
-        execution.setVariable("isMoreNSSTtoProcess", isMoreNSSTtoProcess)
+    /**
+     * create RAN Slice Profile Instance
+     * @param execution
+     */
+    void createAnSliceProfileInstance(DelegateExecution execution) {
+
+        String globalSubscriberId = execution.getVariable("globalSubscriberId")
+        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+        String serviceInstanceId = UUID.randomUUID().toString()
+        execution.setVariable("ranSliceProfileInstanceId", serviceInstanceId) //todo:
+
+        String serviceType = ""
+        String serviceRole = "slice-profile"
+        String oStatus = "deactivated"
+
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+        SliceTaskInfo<AnSliceProfile> sliceTaskInfo = sliceParams.anSliceTaskInfo
+        sliceTaskInfo.setSliceInstanceId(serviceInstanceId)
+
+        // create slice profile
+        ServiceInstance rspi = new ServiceInstance()
+        rspi.setServiceInstanceName(sliceTaskInfo.NSSTInfo.name)
+        rspi.setServiceType(serviceType)
+        rspi.setServiceRole(serviceRole)
+        rspi.setOrchestrationStatus(oStatus)
+        rspi.setModelInvariantId(sliceTaskInfo.NSSTInfo.invariantUUID)
+        rspi.setModelVersionId(sliceTaskInfo.NSSTInfo.UUID)
+        rspi.setInputParameters(uuiRequest)
+        rspi.setWorkloadContext(useInterval)
+        rspi.setEnvironmentContext(sNSSAI_id)
+
+        //timestamp format YYYY-MM-DD hh:mm:ss
+        rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault()))
+
+        execution.setVariable("communicationServiceInstance", rspi)
+
+        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
+                globalSubscriberId,
+                subscriptionServiceType,
+                serviceInstanceId)
+        client.create(uri, rspi)
+
+        execution.setVariable("sliceTaskParams", sliceParams)
     }
 
-    void createNSSTMap(DelegateExecution execution){
-        ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
-        String modelUuid= serviceDecomposition.getModelInfo().getModelUuid()
-        String content = serviceDecomposition.getServiceInfo().getServiceArtifact().get(0).getContent()
-        //String nsstID = jsonUtil.getJsonValue(content, "metadata.id")
-        //String vendor = jsonUtil.getJsonValue(content, "metadata.vendor")
-        //String type = jsonUtil.getJsonValue(content, "metadata.type")
-        String domain = jsonUtil.getJsonValue(content, "metadata.domainType")
-
-        Map<String, Object> nssiMap = execution.getVariable("nssiMap")
-        String servicename = execution.getVariable("sliceServiceInstanceName")
-        String nsiname = "nsi_"+servicename
-        nssiMap.put(domain,"""{
-                    "serviceInstanceId":"",
-                    "modelUuid":"${modelUuid}"
-                     }""")
-        execution.setVariable("nssiMap",nssiMap)
+    /**
+     * create An Slice Profile
+     * @param execution
+     */
+    void createAnSliceProfile(DelegateExecution execution) {
+
+        String globalSubscriberId = execution.getVariable("globalSubscriberId")
+        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+        //String serviceInstanceId = execution.getVariable("ranSliceProfileInstanceId")
+
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+        SliceTaskInfo<AnSliceProfile> sliceTaskInfo = sliceParams.anSliceTaskInfo
+        AnSliceProfile anSliceProfile = sliceTaskInfo.sliceProfile
+
+        String profileId = UUID.randomUUID().toString()
+        anSliceProfile.setSliceProfileId(profileId)
+
+        SliceProfile sliceProfile = new SliceProfile()
+        sliceProfile.setProfileId(profileId)
+        sliceProfile.setCoverageAreaTAList(anSliceProfile.coverageAreaTAList as String)
+        //todo:...
+        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE,
+                globalSubscriberId,
+                subscriptionServiceType,
+                sliceTaskInfo.sliceInstanceId,
+                profileId
+        )
+        client.create(uri, sliceProfile)
+        execution.setVariable("sliceTaskParams", sliceParams)
     }
 
-    void prepareNSSIList(DelegateExecution execution){
-        logger.trace("Enter prepareNSSIList in DoAllocateNSIandNSSI()")
-        Map<String, Object> nssiMap = new HashMap<>()
-        Boolean isMoreNSSI = false
-        nssiMap = execution.getVariable("nssiMap")
-        List<String> keys=new ArrayList<String>(nssiMap.values())
-        List<String> nsstSequence = execution.getVariable("nsstSequence")
-        Integer currentIndex=0;
-        execution.setVariable("currentNssiIndex",currentIndex)
-        Integer maxIndex=keys.size()
-        execution.setVariable("maxIndex",maxIndex)
-        if(maxIndex>0)
-            isMoreNSSI=true
-        execution.setVariable("isMoreNSSI",isMoreNSSI)
-        logger.trace("Exit prepareNSSIList in DoAllocateNSIandNSSI()")
+    /**
+     * prepare AllocateAnNssi
+     * @param execution
+     */
+    void prepareAllocateAnNssi(DelegateExecution execution) {
+
+        //todo:
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+        SliceTaskInfo<AnSliceProfile> sliceTaskInfo = sliceParams.anSliceTaskInfo
+
+        NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest()
+
+        AllocateAnNssi allocateAnNssi = new AllocateAnNssi()
+        allocateAnNssi.nsstId = sliceTaskInfo.NSSTInfo.UUID
+        allocateAnNssi.nssiId = sliceTaskInfo.NSSTInfo.UUID
+        allocateAnNssi.nssiName = sliceTaskInfo.NSSTInfo.name
+        allocateAnNssi.sliceProfile = sliceTaskInfo.sliceProfile
+        allocateAnNssi.nsiInfo.nsiId = sliceParams.suggestNsiId
+
+        EsrInfo esrInfo = new EsrInfo()
+        //todo: vendor and network
+        esrInfo.setVendor(sliceTaskInfo.getVendor())
+        esrInfo.setNetworkType(sliceTaskInfo.getNetworkType())
+
+        String globalSubscriberId = execution.getVariable("globalSubscriberId")
+        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+
+        //todo: service info
+        ServiceInfo serviceInfo = new ServiceInfo()
+        serviceInfo.globalSubscriberId = globalSubscriberId
+        serviceInfo.subscriptionServiceType = subscriptionServiceType
+        serviceInfo.nsiId = sliceParams.suggestNsiId
+        serviceInfo.serviceInvariantUuid = sliceTaskInfo.NSSTInfo.invariantUUID
+        serviceInfo.serviceUuid = sliceTaskInfo.NSSTInfo.UUID
+
+        nbiRequest.setServiceInfo(serviceInfo)
+        nbiRequest.setEsrInfo(esrInfo)
+        nbiRequest.setAllocateAnNssi(allocateAnNssi)
+
+        execution.setVariable("AnAllocateNssiNbiRequest", nbiRequest)
+        execution.setVariable("anBHSliceTaskInfo", sliceTaskInfo)
     }
 
 
-    void getOneNSSIInfo(DelegateExecution execution){
-        logger.trace("Enter getOneNSSIInfo in DoAllocateNSIandNSSI()")
-
-        //ServiceDecomposition serviceDecompositionObj = execution.getVariable("serviceDecompositionObj")
-        Map<String, Object> nssiMap=execution.getVariable("nssiMap")
-        List<String> nsstSequence = execution.getVariable("nsstSequence")
-        String currentNSST= nsstSequence.get(execution.getVariable("currentNssiIndex"))
-        boolean isNSSIOptionAvailable = false
-        String nsstInput=nssiMap.get(currentNSST)
-        execution.setVariable("nsstInput",nsstInput)
-        String modelUuid = jsonUtil.getJsonValue(nsstInput, "modelUuid")
-        String nssiInstanceId = jsonUtil.getJsonValue(nsstInput, "serviceInstanceId")
-        String nssiserviceModelInfo = """{
-            "modelInvariantUuid":"",
-            "modelUuid":"${modelUuid}",
-            "modelVersion":""
-             }"""
-        Integer currentIndex = execution.getVariable("currentNssiIndex")
-        currentIndex=currentIndex+1;
-        execution.setVariable("currentNssiIndex",currentIndex)
-        execution.setVariable("nssiserviceModelInfo",nssiserviceModelInfo)
-        execution.setVariable("nssiInstanceId",nssiInstanceId)
-        logger.trace("Exit getOneNSSIInfo in DoAllocateNSIandNSSI()")
+    /**
+     * create RAN Slice Profile Instance
+     * @param execution
+     */
+    void createCnSliceProfileInstance(DelegateExecution execution) {
+
+        String globalSubscriberId = execution.getVariable("globalSubscriberId")
+        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+        String serviceInstanceId = UUID.randomUUID().toString()
+        execution.setVariable("cnSliceProfileInstanceId", serviceInstanceId) //todo:
+
+        String serviceType = ""
+        String serviceRole = "slice-profile"
+        String oStatus = "deactivated"
+
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+        SliceTaskInfo<CnSliceProfile> sliceTaskInfo = sliceParams.cnSliceTaskInfo
+        sliceTaskInfo.setSliceInstanceId(serviceInstanceId)
+
+        // create slice profile
+        ServiceInstance rspi = new ServiceInstance()
+        rspi.setServiceInstanceName(sliceTaskInfo.NSSTInfo.name)
+        rspi.setServiceType(serviceType)
+        rspi.setServiceRole(serviceRole)
+        rspi.setOrchestrationStatus(oStatus)
+        rspi.setModelInvariantId(sliceTaskInfo.NSSTInfo.invariantUUID)
+        rspi.setModelVersionId(sliceTaskInfo.NSSTInfo.UUID)
+        rspi.setInputParameters(uuiRequest)
+        rspi.setWorkloadContext(useInterval)
+        rspi.setEnvironmentContext(sNSSAI_id)
+
+        //timestamp format YYYY-MM-DD hh:mm:ss
+        rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault()))
+
+        execution.setVariable("communicationServiceInstance", rspi)
+
+        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
+                globalSubscriberId,
+                subscriptionServiceType,
+                serviceInstanceId)
+        client.create(uri, rspi)
+        execution.setVariable("sliceTaskParams", sliceParams)
     }
 
-    void updateCurrentIndex(DelegateExecution execution){
+    /**
+     * create An Slice Profile
+     * @param execution
+     */
+    void createCnSliceProfile(DelegateExecution execution) {
+
+        String globalSubscriberId = execution.getVariable("globalSubscriberId")
+        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+        //String serviceInstanceId = execution.getVariable("ranSliceProfileInstanceId")
+
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+
+        SliceTaskInfo<CnSliceProfile> sliceTaskInfo = sliceParams.cnSliceTaskInfo
+        CnSliceProfile cnSliceProfile = sliceTaskInfo.sliceProfile
+
+        String profileId = UUID.randomUUID().toString()
+        cnSliceProfile.setSliceProfileId(profileId)
+
+        SliceProfile sliceProfile = new SliceProfile()
+        sliceProfile.setProfileId(profileId)
+        sliceProfile.setCoverageAreaTAList(cnSliceProfile.coverageAreaTAList as String)
+        //todo:...
+        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE,
+                globalSubscriberId,
+                subscriptionServiceType,
+                sliceTaskInfo.sliceInstanceId,
+                profileId
+        )
+        client.create(uri, sliceProfile)
+        execution.setVariable("sliceTaskParams", sliceParams)
+    }
 
-        logger.trace("Enter updateCurrentIndex in DoAllocateNSIandNSSI()")
-        Integer currentIndex = execution.getVariable("currentNssiIndex")
-        Integer maxIndex = execution.getVariable("maxIndex")
-        if(currentIndex>=maxIndex)
-        {
-            Boolean isMoreNSSI=false
-            execution.setVariable("isMoreNSSI",isMoreNSSI)
-        }
-        logger.trace("Exit updateCurrentIndex in DoAllocateNSIandNSSI()")
+    /**
+     * prepare AllocateCnNssi
+     * @param execution
+     */
+    void prepareAllocateCnNssi(DelegateExecution execution) {
+
+        //todo:
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+        SliceTaskInfo<CnSliceProfile> sliceTaskInfo = sliceParams.cnSliceTaskInfo
+
+        NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest()
+
+        AllocateCnNssi allocateCnNssi = new AllocateCnNssi()
+        allocateCnNssi.nsstId = sliceTaskInfo.NSSTInfo.UUID
+        allocateCnNssi.nssiId = sliceTaskInfo.NSSTInfo.UUID
+        allocateCnNssi.nssiName = sliceTaskInfo.NSSTInfo.name
+        allocateCnNssi.sliceProfile = sliceTaskInfo.sliceProfile
+        allocateCnNssi.nsiInfo.nsiId = sliceParams.suggestNsiId
+
+        EsrInfo esrInfo = new EsrInfo()
+        //todo: vendor and network
+        esrInfo.setVendor(sliceTaskInfo.getVendor())
+        esrInfo.setNetworkType(sliceTaskInfo.getNetworkType())
+
+        String globalSubscriberId = execution.getVariable("globalSubscriberId")
+        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+
+        //todo: service info
+        ServiceInfo serviceInfo = new ServiceInfo()
+        serviceInfo.globalSubscriberId = globalSubscriberId
+        serviceInfo.subscriptionServiceType = subscriptionServiceType
+        serviceInfo.nsiId = sliceParams.suggestNsiId
+        serviceInfo.serviceInvariantUuid = sliceTaskInfo.NSSTInfo.invariantUUID
+        serviceInfo.serviceUuid = sliceTaskInfo.NSSTInfo.UUID
+
+        nbiRequest.setServiceInfo(serviceInfo)
+        nbiRequest.setEsrInfo(esrInfo)
+        nbiRequest.setAllocateCnNssi(allocateCnNssi)
+
+        execution.setVariable("CnAllocateNssiNbiRequest", nbiRequest)
+        execution.setVariable("cnSliceTaskInfo", sliceTaskInfo)
     }
+
+
+    /**
+     * create TN Slice Profile Instance
+     * @param execution
+     */
+    void createTnBHSliceProfileInstance(DelegateExecution execution) {
+        String globalSubscriberId = execution.getVariable("globalSubscriberId")
+        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+
+        String serviceType = ""
+        String serviceRole = "slice-profile"
+        String oStatus = "deactivated"
+
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+
+        SliceTaskInfo<TnSliceProfile> sliceTaskInfo = sliceParams.tnBHSliceTaskInfo
+        String serviceInstanceId = UUID.randomUUID().toString()
+
+        sliceTaskInfo.setSliceInstanceId(serviceInstanceId)
+        //execution.setVariable("cnSliceProfileInstanceId", serviceInstanceId) //todo:
+
+        // create slice profile
+        ServiceInstance rspi = new ServiceInstance()
+        rspi.setServiceInstanceName(sliceTaskInfo.NSSTInfo.name)
+        rspi.setServiceType(serviceType)
+        rspi.setServiceRole(serviceRole)
+        rspi.setOrchestrationStatus(oStatus)
+        rspi.setModelInvariantId(sliceTaskInfo.NSSTInfo.invariantUUID)
+        rspi.setModelVersionId(sliceTaskInfo.NSSTInfo.UUID)
+        rspi.setInputParameters(uuiRequest)
+        rspi.setWorkloadContext(useInterval)
+        rspi.setEnvironmentContext(sNSSAI_id)
+
+        //timestamp format YYYY-MM-DD hh:mm:ss
+        rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault()))
+
+        execution.setVariable("communicationServiceInstance", rspi)
+
+        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
+                globalSubscriberId,
+                subscriptionServiceType,
+                serviceInstanceId)
+        client.create(uri, rspi)
+
+        execution.setVariable("sliceTaskParams", sliceParams)
+    }
+
+    /**
+     * create An Slice Profile
+     * @param execution
+     */
+    void createTnBHSliceProfile(DelegateExecution execution) {
+
+        String globalSubscriberId = execution.getVariable("globalSubscriberId")
+        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+
+        SliceTaskInfo<TnSliceProfile> sliceTaskInfo = sliceParams.tnBHSliceTaskInfo
+
+        TnSliceProfile tnSliceProfile = sliceTaskInfo.sliceProfile
+        String profileId = UUID.randomUUID().toString()
+        tnSliceProfile.setSliceProfileId(profileId)
+
+        SliceProfile sliceProfile = new SliceProfile()
+        sliceProfile.setProfileId(profileId)
+        //todo:...
+        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE,
+                globalSubscriberId,
+                subscriptionServiceType,
+                sliceTaskInfo.sliceInstanceId,
+                profileId
+        )
+        client.create(uri, sliceProfile)
+
+        execution.setVariable("sliceTaskParams", sliceParams)
+    }
+
+    /**
+     * prepare AllocateCnNssi
+     * @param execution
+     */
+    void prepareAllocateTnBHNssi(DelegateExecution execution) {
+
+        //todo:
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+        SliceTaskInfo<TnSliceProfile> sliceTaskInfo = sliceParams.tnBHSliceTaskInfo
+
+        NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest()
+
+        AllocateTnNssi allocateTnNssi = new AllocateTnNssi()
+        //todo: AllocateTnNssi
+        allocateTnNssi.setTransportSliceNetworks()
+        allocateTnNssi.setNetworkSliceInfos()
+
+
+        //allocateTnNssi.networkSliceInfos
+
+        EsrInfo esrInfo = new EsrInfo()
+        esrInfo.setVendor(sliceTaskInfo.getVendor())
+        esrInfo.setNetworkType(sliceTaskInfo.getNetworkType())
+
+        String globalSubscriberId = execution.getVariable("globalSubscriberId")
+        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
+
+        ServiceInfo serviceInfo = new ServiceInfo()
+        serviceInfo.globalSubscriberId = globalSubscriberId
+        serviceInfo.subscriptionServiceType = subscriptionServiceType
+        serviceInfo.nsiId = sliceParams.suggestNsiId
+        serviceInfo.serviceInvariantUuid = sliceTaskInfo.NSSTInfo.invariantUUID
+        serviceInfo.serviceUuid = sliceTaskInfo.NSSTInfo.UUID
+
+        nbiRequest.setServiceInfo(serviceInfo)
+        nbiRequest.setEsrInfo(esrInfo)
+        nbiRequest.setAllocateTnNssi(allocateTnNssi)
+
+        execution.setVariable("TnBHAllocateNssiNbiRequest", nbiRequest)
+        execution.setVariable("tnBHSliceTaskInfo", sliceTaskInfo)
+    }
+
+    /**
+     * Update relationship between
+     * 1. NSI and NSSI
+     * 2. Slice Profile and Service Profile
+     * 3. SliceProfile and NSSI
+     * 4. sliceProfile and endpoint
+     *
+     * @param execution
+     */
+    public void updateAnRelationship(DelegateExecution execution) {
+        //todo:
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+
+        ResponseDescriptor result = execution.getVariable("anNssiAllocateResult") as ResponseDescriptor
+        String nssiId = result.getNssiId()
+        String endPointId = result.getEndPointId()
+        String nsiId = sliceParams.getSuggestNsiId()
+        String sliceProfileInstanceId = sliceParams.anSliceTaskInfo.sliceInstanceId
+        String serviceProfileInstanceId = sliceParams.serviceId
+        //nsi id
+
+        updateRelationship(execution, nsiId, nssiId)
+
+        updateRelationship(execution, serviceProfileInstanceId, sliceProfileInstanceId)
+
+        updateRelationship(execution, sliceProfileInstanceId, nssiId)
+
+        updateRelationship(execution, sliceProfileInstanceId, endPointId)
+
+    }
+
+
+    /**
+     * Update relationship between
+     * 1. NSI and NSSI
+     * 2. Slice Profile and Service Profile
+     * 3. SliceProfile and NSSI
+     *
+     * @param execution
+     */
+    public void updateCnRelationship(DelegateExecution execution) {
+        //todo:
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+
+        NssiResponse result = execution.getVariable("cnNssiAllocateResult") as NssiResponse
+        String nssiId = result.getNssiId()
+        String nsiId = sliceParams.getSuggestNsiId()
+        String sliceProfileInstanceId = sliceParams.cnSliceTaskInfo.sliceInstanceId
+        String serviceProfileInstanceId = sliceParams.serviceId
+        //nsi id
+
+        updateRelationship(execution, nsiId, nssiId)
+
+        updateRelationship(execution, serviceProfileInstanceId, sliceProfileInstanceId)
+
+        updateRelationship(execution,sliceProfileInstanceId, nssiId)
+
+
+    }
+
+    /**
+     * Update relationship between
+     * 1. NSI and NSSI
+     * 2. Slice Profile and Service Profile
+     * 3. SliceProfile and NSSI
+     *
+     * @param execution
+     */
+    public void updateTnBHRelationship(DelegateExecution execution) {
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+
+        NssiResponse result = execution.getVariable("tnBHNssiAllocateResult") as NssiResponse
+        String nssiId = result.getNssiId()
+        String nsiId = sliceParams.getSuggestNsiId()
+        String sliceProfileInstanceId = sliceParams.tnBHSliceTaskInfo.sliceInstanceId
+        String serviceProfileInstanceId = sliceParams.serviceId
+        //nsi id
+
+        updateRelationship(execution, nsiId, nssiId)
+
+        updateRelationship(execution, serviceProfileInstanceId, sliceProfileInstanceId)
+
+        updateRelationship(execution,sliceProfileInstanceId, nssiId)
+    }
+
+    /**
+     * sourceId -> targetId
+     * @param execution
+     * @param sourceId
+     * @param targetId
+     */
+    void updateRelationship(DelegateExecution execution, String sourceId, String targetId) {
+        //relation ship
+        Relationship relationship = new Relationship()
+
+        AAIResourceUri nsiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
+                execution.getVariable("globalSubscriberId"),
+                execution.getVariable("subscriptionServiceType"),
+                targetId)
+
+        logger.info("Creating Allotted resource relationship, nsiServiceUri: " + nsiServiceUri)
+
+        relationship.setRelatedLink(nsiServiceUri.build().toString())
+
+        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
+                execution.getVariable("globalSubscriberId"),
+                execution.getVariable("subscriptionServiceType"),
+                sourceId).relationshipAPI()
+        client.create(uri, relationship)
+    }
+
 }
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSIandNSSIV2.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSIandNSSIV2.groovy
deleted file mode 100644 (file)
index 924b42f..0000000
+++ /dev/null
@@ -1,613 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2019 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License")
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.bpmn.infrastructure.scripts
-
-import org.apache.commons.lang3.StringUtils
-import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.onap.aai.domain.yang.Relationship
-import org.onap.aai.domain.yang.ServiceInstance
-import org.onap.aai.domain.yang.SliceProfile
-import org.onap.aaiclient.client.aai.AAIObjectType
-import org.onap.aaiclient.client.aai.AAIResourcesClient
-import org.onap.aaiclient.client.aai.entities.AAIResultWrapper
-import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
-import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
-import org.onap.so.beans.nsmf.*
-import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
-import org.onap.so.bpmn.common.scripts.ExceptionUtil
-import org.onap.so.bpmn.common.scripts.NssmfAdapterUtils
-import org.onap.so.bpmn.core.json.JsonUtils
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
-
-import javax.ws.rs.NotFoundException
-
-class DoAllocateNSIandNSSIV2 extends AbstractServiceTaskProcessor{
-
-    private static final Logger logger = LoggerFactory.getLogger( DoAllocateNSIandNSSIV2.class);
-
-    ExceptionUtil exceptionUtil = new ExceptionUtil()
-
-    JsonUtils jsonUtil = new JsonUtils()
-
-    private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil)
-
-    AAIResourcesClient client = getAAIClient()
-
-    /**
-     * Pre Process the BPMN Flow Request
-     * Inclouds:
-     * generate the nsOperationKey
-     * generate the nsParameters
-     */
-
-    void preProcessRequest (DelegateExecution execution) {
-        String msg = ""
-        logger.trace("Enter preProcessRequest()")
-        Map<String, Object> nssiMap = new HashMap<>()
-        execution.setVariable("nssiMap", nssiMap)
-        boolean isMoreNSSTtoProcess = true
-        execution.setVariable("isMoreNSSTtoProcess", isMoreNSSTtoProcess)
-        List<String> nsstSequence = new ArrayList<>(Arrays.asList("cn"))
-        execution.setVariable("nsstSequence", nsstSequence)
-        logger.trace("Exit preProcessRequest")
-    }
-
-    /**
-     * Process NSI options
-     * @param execution
-     */
-    void retriveSliceOption(DelegateExecution execution) {
-        logger.trace("Enter retriveSliceOption() of DoAllocateNSIandNSSI")
-
-        boolean isNSIOptionAvailable
-
-        SliceTaskParamsAdapter sliceParams =
-                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
-//        try
-//        {
-//            Map<String, Object> nstSolution = execution.getVariable("nstSolution") as Map
-//            String modelUuid = nstSolution.get("UUID")
-//            String modelInvariantUuid = nstSolution.get("invariantUUID")
-//            String serviceModelInfo = """{
-//            "modelInvariantUuid":"${modelInvariantUuid}",
-//            "modelUuid":"${modelUuid}",
-//            "modelVersion":""
-//             }"""
-//            execution.setVariable("serviceModelInfo", serviceModelInfo)
-//
-//            execution.setVariable("sliceParams", sliceParams)
-//        }catch (Exception ex) {
-//            logger.debug( "Unable to get the task information from request DB: " + ex)
-//            exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Unable to get task information from request DB.")
-//        }
-
-        if(StringUtils.isBlank(sliceParams.getSuggestNsiId())) {
-            isNSIOptionAvailable = false
-        }
-        else {
-            isNSIOptionAvailable = true
-            execution.setVariable('nsiServiceInstanceId', sliceParams.getSuggestNsiId())
-            execution.setVariable('nsiServiceInstanceName', sliceParams.getSuggestNsiName())
-        }
-        execution.setVariable("isNSIOptionAvailable", isNSIOptionAvailable)
-        logger.trace("Exit retriveSliceOption() of DoAllocateNSIandNSSI")
-    }
-
-
-    /**
-     * create nsi instance in aai
-     * @param execution
-     */
-    void createNSIinAAI(DelegateExecution execution) {
-        logger.debug("Enter CreateNSIinAAI in DoAllocateNSIandNSSI()")
-
-        String sliceInstanceId = UUID.randomUUID().toString()
-        SliceTaskParamsAdapter sliceParams =
-                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
-
-        sliceParams.setServiceId(sliceInstanceId)
-
-        ServiceInstance nsi = new ServiceInstance()
-
-
-        String sliceInstanceName = "nsi_"+execution.getVariable("sliceServiceInstanceName")
-        String serviceType = execution.getVariable("serviceType")
-        String serviceStatus = "deactivated"
-        String modelInvariantUuid = sliceParams.getNSTInfo().invariantUUID
-        String modelUuid = sliceParams.getNSTInfo().UUID
-
-        String uuiRequest = execution.getVariable("uuiRequest")
-        String serviceInstanceLocationid = jsonUtil.getJsonValue(uuiRequest, "service.parameters.requestInputs.plmnIdList")
-        String serviceRole = "nsi"
-
-        execution.setVariable("sliceInstanceId", sliceInstanceId)
-        nsi.setServiceInstanceId(sliceInstanceId)
-        nsi.setServiceInstanceName(sliceInstanceName)
-        nsi.setServiceType(serviceType)
-        nsi.setOrchestrationStatus(serviceStatus)
-        nsi.setModelInvariantId(modelInvariantUuid)
-        nsi.setModelVersionId(modelUuid)
-        nsi.setServiceInstanceLocationId(serviceInstanceLocationid)
-        nsi.setServiceRole(serviceRole)
-        String msg
-        try {
-
-            AAIResourceUri nsiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
-                    execution.getVariable("globalSubscriberId"),
-                    execution.getVariable("subscriptionServiceType"),
-                    sliceInstanceId)
-            client.create(nsiServiceUri, nsi)
-
-            execution.setVariable("nsiServiceUri", nsiServiceUri.build().toString())
-
-        } catch (BpmnError e) {
-            throw e
-        } catch (Exception ex) {
-            msg = "Exception in DoCreateSliceServiceInstance.instantiateSliceService. " + ex.getMessage()
-            logger.info(msg)
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-        }
-
-        logger.debug("Exit CreateNSIinAAI in DoAllocateNSIandNSSI()")
-    }
-
-
-    /**
-     * create relationship between nsi and service profile instance
-     * @param execution
-     */
-    void createRelationship(DelegateExecution execution) {
-        //relation ship
-        Relationship relationship = new Relationship()
-        String nsiServiceUri = execution.getVariable("nsiServiceUri") as String
-        logger.info("Creating Allotted resource relationship, nsiServiceUri: " + nsiServiceUri)
-
-        relationship.setRelatedLink(nsiServiceUri)
-
-        AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(
-                AAIObjectType.ALLOTTED_RESOURCE,
-                execution.getVariable("globalSubscriberId"),
-                execution.getVariable("subscriptionServiceType"),
-                execution.getVariable("sliceServiceInstanceId"),
-                execution.getVariable("allottedResourceId"))
-                .relationshipAPI()
-        client.create(allottedResourceUri, relationship)
-    }
-
-    /**
-     *
-     * @param execution
-     */
-    void updateRelationship(DelegateExecution execution) {
-        logger.debug("Enter update relationship in DoAllocateNSIandNSSI()")
-        String allottedResourceId = execution.getVariable("allottedResourceId")
-        //Need to check whether nsi exist : Begin
-
-        SliceTaskParamsAdapter sliceParams =
-                execution.getVariable("sliceParams") as SliceTaskParamsAdapter
-
-        String nsiServiceInstanceID = sliceParams.getSuggestNsiId()
-        sliceParams.setServiceId(nsiServiceInstanceID)
-
-        AAIResourceUri nsiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
-                execution.getVariable("globalSubscriberId"),
-                execution.getVariable("subscriptionServiceType"),
-                nsiServiceInstanceID)
-
-        try {
-            AAIResultWrapper wrapper = client.get(nsiServiceUri, NotFoundException.class)
-            Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
-            //todo: if exists
-            if (!si.ifPresent()) {
-                String msg = "NSI suggested in the option doesn't exist. " + nsiServiceInstanceID
-                logger.debug(msg)
-                exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-            }
-
-            AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.ALLOTTED_RESOURCE,
-                    execution.getVariable("globalSubscriberId"),
-                    execution.getVariable("subscriptionServiceType"),
-                    execution.getVariable("sliceServiceInstanceId"),
-                    allottedResourceId)
-
-            client.connect(allottedResourceUri, nsiServiceUri)
-
-            execution.setVariable("sliceParams", sliceParams)
-        }catch(BpmnError e) {
-            throw e
-        }catch (Exception ex){
-            String msg = "NSI suggested in the option doesn't exist. " + nsiServiceInstanceID
-            logger.debug(msg)
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-        }
-        logger.debug("Exit update relationship in DoAllocateNSIandNSSI()")
-    }
-
-    /**
-     * create RAN Slice Profile Instance
-     * @param execution
-     */
-    void createAnSliceProfileInstance(DelegateExecution execution) {
-
-        String globalSubscriberId = execution.getVariable("globalSubscriberId")
-        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
-        String serviceInstanceId = UUID.randomUUID().toString()
-        execution.setVariable("ranSliceProfileInstanceId", serviceInstanceId) //todo:
-
-        String serviceType = ""
-        String serviceRole = "slice-profile"
-        String oStatus = "deactivated"
-
-        SliceTaskParamsAdapter sliceParams =
-                execution.getVariable("sliceParams") as SliceTaskParamsAdapter
-        SliceTaskInfo<AnSliceProfile> sliceTaskInfo = sliceParams.anSliceTaskInfo
-        sliceTaskInfo.setServiceInstanceId(serviceInstanceId)
-
-        // create slice profile
-        ServiceInstance rspi = new ServiceInstance()
-        rspi.setServiceInstanceName(sliceTaskInfo.NSSTInfo.name)
-        rspi.setServiceType(serviceType)
-        rspi.setServiceRole(serviceRole)
-        rspi.setOrchestrationStatus(oStatus)
-        rspi.setModelInvariantId(sliceTaskInfo.NSSTInfo.invariantUUID)
-        rspi.setModelVersionId(sliceTaskInfo.NSSTInfo.UUID)
-        rspi.setInputParameters(uuiRequest)
-        rspi.setWorkloadContext(useInterval)
-        rspi.setEnvironmentContext(sNSSAI_id)
-
-        //timestamp format YYYY-MM-DD hh:mm:ss
-        rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault()))
-
-        execution.setVariable("communicationServiceInstance", rspi)
-
-        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
-                globalSubscriberId,
-                subscriptionServiceType,
-                serviceInstanceId)
-        client.create(uri, rspi)
-
-        execution.setVariable("sliceParams", sliceParams)
-    }
-
-    /**
-     * create An Slice Profile
-     * @param execution
-     */
-    void createAnSliceProfile(DelegateExecution execution) {
-
-        String globalSubscriberId = execution.getVariable("globalSubscriberId")
-        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
-        //String serviceInstanceId = execution.getVariable("ranSliceProfileInstanceId")
-
-        SliceTaskParamsAdapter sliceParams =
-                execution.getVariable("sliceParams") as SliceTaskParamsAdapter
-        SliceTaskInfo<AnSliceProfile> sliceTaskInfo = sliceParams.anSliceTaskInfo
-        AnSliceProfile anSliceProfile = sliceTaskInfo.sliceProfile
-
-        String profileId = UUID.randomUUID().toString()
-        anSliceProfile.setSliceProfileId(profileId)
-
-        SliceProfile sliceProfile = new SliceProfile()
-        sliceProfile.setProfileId(profileId)
-        sliceProfile.setCoverageAreaTAList(anSliceProfile.coverageAreaTAList as String)
-        //todo:...
-        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE,
-                globalSubscriberId,
-                subscriptionServiceType,
-                sliceTaskInfo.serviceInstanceId,
-                profileId
-        )
-        client.create(uri, sliceProfile)
-        execution.setVariable("sliceParams", sliceParams)
-    }
-
-    /**
-     * prepare AllocateAnNssi
-     * @param execution
-     */
-    void prepareAllocateAnNssi(DelegateExecution execution) {
-
-        //todo:
-        SliceTaskParamsAdapter sliceParams =
-                execution.getVariable("sliceParams") as SliceTaskParamsAdapter
-        SliceTaskInfo<AnSliceProfile> sliceTaskInfo = sliceParams.anSliceTaskInfo
-
-        NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest()
-
-        AllocateAnNssi allocateAnNssi = new AllocateAnNssi()
-        allocateAnNssi.nsstId = sliceTaskInfo.NSSTInfo.UUID
-        allocateAnNssi.nssiId = sliceTaskInfo.NSSTInfo.UUID
-        allocateAnNssi.nssiName = sliceTaskInfo.NSSTInfo.name
-        allocateAnNssi.sliceProfile = sliceTaskInfo.sliceProfile
-        allocateAnNssi.nsiInfo.nsiId = sliceParams
-
-        EsrInfo esrInfo = new EsrInfo()
-        //todo: vendor and network
-        esrInfo.setVendor(sliceTaskInfo.getVendor())
-        esrInfo.setNetworkType(sliceTaskInfo.getNetworkType())
-
-        String globalSubscriberId = execution.getVariable("globalSubscriberId")
-        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
-
-        //todo: service info
-        ServiceInfo serviceInfo = new ServiceInfo()
-        serviceInfo.globalSubscriberId = globalSubscriberId
-        serviceInfo.subscriptionServiceType = subscriptionServiceType
-        serviceInfo.nsiId = sliceParams.serviceId
-        serviceInfo.serviceInvariantUuid = sliceTaskInfo.NSSTInfo.invariantUUID
-        serviceInfo.serviceUuid = sliceTaskInfo.NSSTInfo.UUID
-
-        nbiRequest.setServiceInfo(serviceInfo)
-        nbiRequest.setEsrInfo(esrInfo)
-        nbiRequest.setAllocateAnNssi(allocateAnNssi)
-
-        execution.setVariable("AnAllocateNssiNbiRequest", nbiRequest)
-        execution.setVariable("anBHSliceTaskInfo", sliceTaskInfo)
-    }
-
-
-    /**
-     * create RAN Slice Profile Instance
-     * @param execution
-     */
-    void createCnSliceProfileInstance(DelegateExecution execution) {
-
-        String globalSubscriberId = execution.getVariable("globalSubscriberId")
-        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
-        String serviceInstanceId = UUID.randomUUID().toString()
-        execution.setVariable("cnSliceProfileInstanceId", serviceInstanceId) //todo:
-
-        String serviceType = ""
-        String serviceRole = "slice-profile"
-        String oStatus = "deactivated"
-
-        SliceTaskParamsAdapter sliceParams =
-                execution.getVariable("sliceParams") as SliceTaskParamsAdapter
-        SliceTaskInfo<CnSliceProfile> sliceTaskInfo = sliceParams.cnSliceTaskInfo
-        sliceTaskInfo.setServiceInstanceId(serviceInstanceId)
-
-        // create slice profile
-        ServiceInstance rspi = new ServiceInstance()
-        rspi.setServiceInstanceName(sliceTaskInfo.NSSTInfo.name)
-        rspi.setServiceType(serviceType)
-        rspi.setServiceRole(serviceRole)
-        rspi.setOrchestrationStatus(oStatus)
-        rspi.setModelInvariantId(sliceTaskInfo.NSSTInfo.invariantUUID)
-        rspi.setModelVersionId(sliceTaskInfo.NSSTInfo.UUID)
-        rspi.setInputParameters(uuiRequest)
-        rspi.setWorkloadContext(useInterval)
-        rspi.setEnvironmentContext(sNSSAI_id)
-
-        //timestamp format YYYY-MM-DD hh:mm:ss
-        rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault()))
-
-        execution.setVariable("communicationServiceInstance", rspi)
-
-        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
-                globalSubscriberId,
-                subscriptionServiceType,
-                serviceInstanceId)
-        client.create(uri, rspi)
-        execution.setVariable("sliceParams", sliceParams)
-    }
-
-    /**
-     * create An Slice Profile
-     * @param execution
-     */
-    void createCnSliceProfile(DelegateExecution execution) {
-
-        String globalSubscriberId = execution.getVariable("globalSubscriberId")
-        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
-        //String serviceInstanceId = execution.getVariable("ranSliceProfileInstanceId")
-
-        SliceTaskParamsAdapter sliceParams =
-                execution.getVariable("sliceParams") as SliceTaskParamsAdapter
-
-        SliceTaskInfo<CnSliceProfile> sliceTaskInfo = sliceParams.cnSliceTaskInfo
-        CnSliceProfile cnSliceProfile = sliceTaskInfo.sliceProfile
-
-        String profileId = UUID.randomUUID().toString()
-        cnSliceProfile.setSliceProfileId(profileId)
-
-        SliceProfile sliceProfile = new SliceProfile()
-        sliceProfile.setProfileId(profileId)
-        sliceProfile.setCoverageAreaTAList(cnSliceProfile.coverageAreaTAList as String)
-        //todo:...
-        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE,
-                globalSubscriberId,
-                subscriptionServiceType,
-                sliceTaskInfo.serviceInstanceId,
-                profileId
-        )
-        client.create(uri, sliceProfile)
-        execution.setVariable("sliceParams", sliceParams)
-    }
-
-    /**
-     * prepare AllocateCnNssi
-     * @param execution
-     */
-    void prepareAllocateCnNssi(DelegateExecution execution) {
-
-        //todo:
-        SliceTaskParamsAdapter sliceParams =
-                execution.getVariable("sliceParams") as SliceTaskParamsAdapter
-        SliceTaskInfo<CnSliceProfile> sliceTaskInfo = sliceParams.cnSliceTaskInfo
-
-        NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest()
-
-        AllocateCnNssi allocateCnNssi = new AllocateCnNssi()
-        allocateCnNssi.nsstId = sliceTaskInfo.NSSTInfo.UUID
-        allocateCnNssi.nssiId = sliceTaskInfo.NSSTInfo.UUID
-        allocateCnNssi.nssiName = sliceTaskInfo.NSSTInfo.name
-        allocateCnNssi.sliceProfile = sliceTaskInfo.sliceProfile
-        allocateCnNssi.nsiInfo.nsiId = sliceParams
-
-        EsrInfo esrInfo = new EsrInfo()
-        //todo: vendor and network
-        esrInfo.setVendor(sliceTaskInfo.getVendor())
-        esrInfo.setNetworkType(sliceTaskInfo.getNetworkType())
-
-        String globalSubscriberId = execution.getVariable("globalSubscriberId")
-        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
-
-        //todo: service info
-        ServiceInfo serviceInfo = new ServiceInfo()
-        serviceInfo.globalSubscriberId = globalSubscriberId
-        serviceInfo.subscriptionServiceType = subscriptionServiceType
-        serviceInfo.nsiId = sliceParams.serviceId
-        serviceInfo.serviceInvariantUuid = sliceTaskInfo.NSSTInfo.invariantUUID
-        serviceInfo.serviceUuid = sliceTaskInfo.NSSTInfo.UUID
-
-        nbiRequest.setServiceInfo(serviceInfo)
-        nbiRequest.setEsrInfo(esrInfo)
-        nbiRequest.setAllocateCnNssi(allocateCnNssi)
-
-        execution.setVariable("CnAllocateNssiNbiRequest", nbiRequest)
-        execution.setVariable("cnSliceTaskInfo", sliceTaskInfo)
-    }
-
-
-    /**
-     * create TN Slice Profile Instance
-     * @param execution
-     */
-    void createTnBHSliceProfileInstance(DelegateExecution execution) {
-        String globalSubscriberId = execution.getVariable("globalSubscriberId")
-        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
-
-        String serviceType = ""
-        String serviceRole = "slice-profile"
-        String oStatus = "deactivated"
-
-        SliceTaskParamsAdapter sliceParams =
-                execution.getVariable("sliceParams") as SliceTaskParamsAdapter
-
-        SliceTaskInfo<TnSliceProfile> sliceTaskInfo = sliceParams.tnBHSliceTaskInfo
-        String serviceInstanceId = UUID.randomUUID().toString()
-
-        sliceTaskInfo.setServiceInstanceId(serviceInstanceId)
-        //execution.setVariable("cnSliceProfileInstanceId", serviceInstanceId) //todo:
-
-        // create slice profile
-        ServiceInstance rspi = new ServiceInstance()
-        rspi.setServiceInstanceName(sliceTaskInfo.NSSTInfo.name)
-        rspi.setServiceType(serviceType)
-        rspi.setServiceRole(serviceRole)
-        rspi.setOrchestrationStatus(oStatus)
-        rspi.setModelInvariantId(sliceTaskInfo.NSSTInfo.invariantUUID)
-        rspi.setModelVersionId(sliceTaskInfo.NSSTInfo.UUID)
-        rspi.setInputParameters(uuiRequest)
-        rspi.setWorkloadContext(useInterval)
-        rspi.setEnvironmentContext(sNSSAI_id)
-
-        //timestamp format YYYY-MM-DD hh:mm:ss
-        rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault()))
-
-        execution.setVariable("communicationServiceInstance", rspi)
-
-        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
-                globalSubscriberId,
-                subscriptionServiceType,
-                serviceInstanceId)
-        client.create(uri, rspi)
-
-        execution.setVariable("sliceParams", sliceParams)
-    }
-
-    /**
-     * create An Slice Profile
-     * @param execution
-     */
-    void createTnBHSliceProfile(DelegateExecution execution) {
-
-        String globalSubscriberId = execution.getVariable("globalSubscriberId")
-        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
-        String serviceInstanceId = execution.getVariable("ranSliceProfileInstanceId")
-
-        SliceTaskParamsAdapter sliceParams =
-                execution.getVariable("sliceParams") as SliceTaskParamsAdapter
-
-        SliceTaskInfo<TnSliceProfile> sliceTaskInfo = sliceParams.tnBHSliceTaskInfo
-
-        TnSliceProfile tnSliceProfile = sliceTaskInfo.sliceProfile
-        String profileId = UUID.randomUUID().toString()
-        tnSliceProfile.setSliceProfileId(profileId)
-
-        SliceProfile sliceProfile = new SliceProfile()
-        sliceProfile.setProfileId(profileId)
-        //todo:...
-        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE,
-                globalSubscriberId,
-                subscriptionServiceType,
-                serviceInstanceId,
-                profileId
-        )
-        client.create(uri, sliceProfile)
-
-        execution.setVariable("sliceParams", sliceParams)
-    }
-
-    /**
-     * prepare AllocateCnNssi
-     * @param execution
-     */
-    void prepareAllocateTnBHNssi(DelegateExecution execution) {
-
-        //todo:
-        SliceTaskParamsAdapter sliceParams =
-                execution.getVariable("sliceParams") as SliceTaskParamsAdapter
-        SliceTaskInfo<TnSliceProfile> sliceTaskInfo = sliceParams.tnBHSliceTaskInfo
-
-        NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest()
-
-        AllocateTnNssi allocateTnNssi = new AllocateTnNssi()
-        //todo: AllocateTnNssi
-        //allocateTnNssi.networkSliceInfos
-
-        EsrInfo esrInfo = new EsrInfo()
-        //todo: vendor and network
-        esrInfo.setVendor(sliceTaskInfo.getVendor())
-        esrInfo.setNetworkType(sliceTaskInfo.getNetworkType())
-
-        String globalSubscriberId = execution.getVariable("globalSubscriberId")
-        String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
-
-        //todo: service info
-        ServiceInfo serviceInfo = new ServiceInfo()
-        serviceInfo.globalSubscriberId = globalSubscriberId
-        serviceInfo.subscriptionServiceType = subscriptionServiceType
-        serviceInfo.nsiId = sliceParams.serviceId
-        serviceInfo.serviceInvariantUuid = sliceTaskInfo.NSSTInfo.invariantUUID
-        serviceInfo.serviceUuid = sliceTaskInfo.NSSTInfo.UUID
-
-        nbiRequest.setServiceInfo(serviceInfo)
-        nbiRequest.setEsrInfo(esrInfo)
-        nbiRequest.setAllocateTnNssi(allocateTnNssi)
-
-        execution.setVariable("TnBHAllocateNssiNbiRequest", nbiRequest)
-        execution.setVariable("tnBHSliceTaskInfo", sliceTaskInfo)
-    }
-
-}
\ No newline at end of file
index 88edd79..9aa044a 100644 (file)
 package org.onap.so.bpmn.infrastructure.scripts
 
-import org.camunda.bpm.engine.delegate.BpmnError
+import com.fasterxml.jackson.databind.ObjectMapper
 import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.onap.aai.domain.yang.ServiceInstance
-import org.onap.aai.domain.yang.SliceProfile
-import org.onap.so.beans.nsmf.AllocateAnNssi
-import org.onap.so.beans.nsmf.AllocateCnNssi
-import org.onap.so.beans.nsmf.AllocateTnNssi
-import org.onap.so.beans.nsmf.AnSliceProfile
-import org.onap.so.beans.nsmf.CnSliceProfile
 import org.onap.so.beans.nsmf.EsrInfo
-import org.onap.so.beans.nsmf.JobStatusRequest
-import org.onap.so.beans.nsmf.NetworkType
-import org.onap.so.beans.nsmf.NsiInfo
-import org.onap.so.beans.nsmf.NssiAllocateRequest
-import org.onap.so.beans.nsmf.PerfReq
-import org.onap.so.beans.nsmf.PerfReqEmbb
-import org.onap.so.beans.nsmf.PerfReqUrllc
-import org.onap.so.beans.nsmf.ResourceSharingLevel
-import org.onap.so.beans.nsmf.SliceTaskParams
-import org.onap.so.beans.nsmf.TnSliceProfile
-import org.onap.so.beans.nsmf.UeMobilityLevel
+import org.onap.so.beans.nsmf.NssiResponse
+import org.onap.so.beans.nsmf.NssmfAdapterNBIRequest
+import org.onap.so.beans.nsmf.ResponseDescriptor
+import org.onap.so.beans.nsmf.ServiceInfo
+import org.onap.so.beans.nsmf.SliceTaskInfo
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
 import org.onap.so.bpmn.common.scripts.ExceptionUtil
 import org.onap.so.bpmn.common.scripts.NssmfAdapterUtils
-import org.onap.so.bpmn.core.RollbackData
 import org.onap.so.bpmn.core.domain.ModelInfo
 import org.onap.so.bpmn.core.domain.ServiceDecomposition
 import org.onap.so.bpmn.core.json.JsonUtils
-import org.onap.aaiclient.client.aai.AAIObjectType
-import org.onap.aaiclient.client.aai.AAIResourcesClient
-import org.onap.aaiclient.client.aai.entities.AAIEdgeLabel
-import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
-import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
-import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.http.ResponseEntity
 
 import static org.apache.commons.lang3.StringUtils.isBlank
 
+class DoAllocateNSSI extends AbstractServiceTaskProcessor {
 
-class DoAllocateNSSI extends org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor{
-
-    private static final Logger logger = LoggerFactory.getLogger( DoAllocateNSSI.class);
-    private static final ObjectMapper MAPPER = new ObjectMapper();
+    private static final Logger logger = LoggerFactory.getLogger(DoAllocateNSSI.class);
 
     ExceptionUtil exceptionUtil = new ExceptionUtil()
 
     JsonUtils jsonUtil = new JsonUtils()
 
-    private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil)
-
-    /**
-     * Pre Process the BPMN Flow Request
-     * Inclouds:
-     * generate the nsOperationKey
-     * generate the nsParameters
-     */
-    void preProcessRequest (DelegateExecution execution) {
-        logger.trace("Enter preProcessRequest()")
-        String msg = ""
-        String nssmfOperation = ""
-        String msoRequestId = execution.getVariable("msoRequestId")
-        String nsstInput = execution.getVariable("nsstInput")
-        String modelUuid = jsonUtil.getJsonValue(nsstInput, "modelUuid")
-        //modelUuid="2763777c-27bd-4df7-93b8-c690e23f4d3f"
-        String nssiInstanceId = jsonUtil.getJsonValue(nsstInput, "serviceInstanceId")
-        String serviceModelInfo = """{
-            "modelInvariantUuid":"",
-            "modelUuid":"${modelUuid}",
-            "modelVersion":""
-             }"""
-        execution.setVariable("serviceModelInfo",serviceModelInfo)
-        execution.setVariable("nssiInstanceId",nssiInstanceId)
-        String nssiProfileID = UUID.randomUUID().toString()
-        execution.setVariable("nssiProfileID",nssiProfileID)
-        if(isBlank(nssiInstanceId))
-        {
-            nssmfOperation="create"
-            nssiInstanceId = UUID.randomUUID().toString()
-        }else {
-            nssmfOperation = "update"
-        }
-        execution.setVariable("nssmfOperation",nssmfOperation)
-        execution.setVariable("nssiInstanceId",nssiInstanceId)
-
-        def isDebugLogEnabled ="false"
-        def isNSSICreated = false
-        execution.setVariable("isNSSICreated",isNSSICreated)
-
-        int currentCycle = 0
-        execution.setVariable("currentCycle", currentCycle)
-
-        logger.trace("Exit preProcessRequest")
-    }
-
-
-    void getNSSTInfo(DelegateExecution execution){
-        logger.trace("Enter getNSSTInfo in DoAllocateNSSI()")
-        ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition")
-        ModelInfo modelInfo = serviceDecomposition.getModelInfo()
-        String serviceRole = "nssi"
-        String nssiServiceInvariantUuid = serviceDecomposition.modelInfo.getModelInvariantUuid()
-        String nssiServiceUuid = serviceDecomposition.modelInfo.getModelUuid()
-        String nssiServiceType = serviceDecomposition.getServiceType()
-        String uuiRequest = execution.getVariable("uuiRequest")
-        String nssiServiceName = "nssi_"+jsonUtil.getJsonValue(uuiRequest, "service.name")
-        execution.setVariable("nssiServiceName",nssiServiceName)
-        execution.setVariable("nssiServiceType",nssiServiceType)
-        execution.setVariable("nssiServiceInvariantUuid",nssiServiceInvariantUuid)
-        execution.setVariable("nssiServiceUuid",nssiServiceUuid)
-        execution.setVariable("serviceRole",serviceRole)
-
-        String content = serviceDecomposition.getServiceInfo().getServiceArtifact().get(0).getContent()
-        String nsstID = jsonUtil.getJsonValue(content, "metadata.id")
-        String nsstVendor = jsonUtil.getJsonValue(content, "metadata.vendor")
-        String nsstDomain = jsonUtil.getJsonValue(content, "metadata.domainType")
-        String nsstType = jsonUtil.getJsonValue(content, "metadata.type")
+    ObjectMapper objectMapper = new ObjectMapper()
 
-        execution.setVariable("nsstID",nsstID)
-        execution.setVariable("nsstVendor",nsstVendor)
-        execution.setVariable("nsstDomain",nsstDomain)
-        execution.setVariable("nssiServiceUuid",nssiServiceUuid)
-        execution.setVariable("nsstType",nsstType)
-
-        String nsstContentInfo = """{
-        "NsstID":"${nsstID}",
-        "Vendor":"${nsstVendor}",
-        "type":"${nsstType}"
-         }"""
-
-        logger.trace("Exit getNSSTInfo in DoAllocateNSSI()")
-    }
-
-    void timeDelay(DelegateExecution execution) {
-        logger.trace("Enter timeDelay in DoAllocateNSSI()")
-        try {
-            Thread.sleep(60000);
-            int currentCycle = execution.getVariable("currentCycle")
-            currentCycle=currentCycle+1
-            if(currentCycle>60)
-            {
-                logger.trace("Completed all the retry times... but still nssmf havent completed the creation process...")
-                exceptionUtil.buildAndThrowWorkflowException(execution, 500, "NSSMF creation didnt complete by time...")
-            }
-            execution.setVariable("currentCycle",currentCycle)
-        } catch(InterruptedException e) {
-            logger.info("Time Delay exception" + e)
-        }
-        logger.trace("Exit timeDelay in DoAllocateNSSI()")
-    }
+    private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil)
 
+    private static final NSSMF_ALLOCATE_URL = "/api/rest/provMns/v1/NSS/SliceProfiles"
 
-    void sendUpdateRequestNSSMF(DelegateExecution execution) {
-        logger.debug("Enter sendUpdateRequestNSSMF in DoAllocateNSSI()")
-        String domain = execution.getVariable("nsstDomain")
-        String nssmfRequest = buildUpdateNSSMFRequest(execution, domain.toUpperCase())
+    private static final NSSMF_QUERY_JOB_STATUS_URL = "/NSS/jobs/%s"
 
-        String urlString = "/api/rest/provMns/v1/NSS/SliceProfiles"
+    @Override
+    void preProcessRequest(DelegateExecution execution) {
+        logger.trace("Enter preProcessRequest()")
 
-        String nssmfResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, urlString, nssmfRequest)
+        NssmfAdapterNBIRequest nbiRequest = execution.getVariable("nbiRequest") as NssmfAdapterNBIRequest
 
-        if (nssmfResponse != null) {
-            execution.setVariable("nssmfResponse", nssmfResponse)
-            String nssiId = jsonUtil.getJsonValue(nssmfResponse, "nssiId")
-            String jobId = jsonUtil.getJsonValue(nssmfResponse, "jobId")
-            execution.setVariable("nssiId",nssiId)
-            execution.setVariable("jobId",jobId)
+        //SliceTaskInfo sliceTaskInfo = execution.getVariable("sliceTaskInfo") as SliceTaskInfo
+        boolean isNSIOptionAvailable = execution.getVariable("isNSIOptionAvailable") as Boolean
 
+        if (isNSIOptionAvailable) {
+            nbiRequest.serviceInfo.setActionType("modify")
         } else {
-            logger.error("received error message from NSSMF : "+ nssmfResponse)
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000,"Received a Bad Sync Response from NSSMF.")
+            nbiRequest.serviceInfo.setActionType("allocate")
         }
-        logger.trace("Exit sendUpdateRequestNSSMF in DoAllocateNSSI()")
+        execution.setVariable("nbiRequest", nbiRequest)
+        logger.trace("Exit preProcessRequest")
     }
 
+    /**
+     * send Create Request NSSMF
+     * @param execution
+     */
     void sendCreateRequestNSSMF(DelegateExecution execution) {
-        logger.debug("Enter sendCreateRequestNSSMF in DoAllocateNSSI()")
-        //Prepare auth for NSSMF - Begin
-        String domain = execution.getVariable("nsstDomain")
-        String nssmfRequest = buildCreateNSSMFRequest(execution, domain.toUpperCase())
-
-        String urlString = "/api/rest/provMns/v1/NSS/SliceProfiles"
-
-        String nssmfResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, urlString, nssmfRequest)
-
-        if (nssmfResponse != null) {
-            execution.setVariable("nssmfResponse", nssmfResponse)
-            String nssiId = jsonUtil.getJsonValue(nssmfResponse, "nssiId")
-            String jobId = jsonUtil.getJsonValue(nssmfResponse, "jobId")
-            execution.setVariable("nssiId",nssiId)
-            execution.setVariable("jobId",jobId)
-
-        } else {
-            logger.error("received error message from NSSMF : "+ nssmfResponse)
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000,"Received a Bad Sync Response from NSSMF.")
-        }
-
-        logger.debug("Exit sendCreateRequestNSSMF in DoAllocateNSSI()")
+        NssmfAdapterNBIRequest nbiRequest = execution.getVariable("nbiRequest") as NssmfAdapterNBIRequest
+        String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, NSSMF_ALLOCATE_URL,
+                objectMapper.writeValueAsString(nbiRequest))
+        ResponseEntity responseEntity = objectMapper.readValue(response, ResponseEntity.class)
+        String respBody = responseEntity.getBody()
+        NssiResponse result = objectMapper.readValue(respBody, NssiResponse.class)
+        //todo: if success
+        //todo:
+        execution.setVariable("serviceInfo", nbiRequest.getServiceInfo())
+        execution.setVariable("esrInfo", nbiRequest.getEsrInfo())
     }
 
-    void getNSSMFProgresss(DelegateExecution execution) {
-        logger.debug("Enter getNSSMFProgresss in DoAllocateNSSI()")
-
-        String nssmfRequest = buildNSSMFProgressRequest(execution)
-        String strUrl="/api/rest/provMns/v1/NSS/jobs/" + execution.getVariable("jobId")
-
-        String nssmfResponse = nssmfAdapterUtils.sendPostRequestNSSMF(execution, strUrl, nssmfRequest)
-
-        if(nssmfResponse != null){
-            Boolean isNSSICreated = false
-            execution.setVariable("nssmfResponse", nssmfResponse)
-            Integer progress = Integer.parseInt(jsonUtil.getJsonValue(nssmfResponse, "responseDescriptor.progress"))
-            String status = jsonUtil.getJsonValue(nssmfResponse, "responseDescriptor.status")
-            String statusDescription = jsonUtil.getJsonValue(nssmfResponse, "responseDescriptor.statusDescription")
-            execution.setVariable("nssmfProgress",progress)
-            execution.setVariable("nssmfStatus",status)
-            execution.setVariable("nddmfStatusDescription",statusDescription)
-            if(progress > 99)
-                isNSSICreated = true
-            execution.setVariable("isNSSICreated",isNSSICreated)
-        } else {
-            logger.error("received error message from NSSMF : "+ nssmfResponse)
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000,"Received a Bad Sync Response from NSSMF.")
-        }
-        logger.debug("Exit getNSSMFProgresss in DoAllocateNSSI()")
-    }
-
-    void updateRelationship(DelegateExecution execution) {
-        logger.debug("Enter updateRelationship in DoAllocateNSSI()")
-        String nssiInstanceId = execution.getVariable("nssiInstanceId")
-        String nsiInstanceId = execution.getVariable("nsiServiceInstanceId")
-        try{
-            AAIResourceUri nsiServiceuri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nsiInstanceId);
-            AAIResourceUri nssiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nssiInstanceId)
-            getAAIClient().connect(nsiServiceuri, nssiServiceUri, AAIEdgeLabel.COMPOSED_OF);
-        }catch(Exception ex) {
-            String msg = "Exception in DoAllocateNSSI InstantiateNSSI service while creating relationship " + ex.getMessage()
-            logger.info(msg)
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-        }
-        logger.debug("Exit updateRelationship in DoAllocateNSSI()")
-    }
-
-
-    void instantiateNSSIService(DelegateExecution execution) {
-        logger.trace("Enter instantiateNSSIService in DoAllocateNSSI()")
-        //String nssiInstanceId = execution.getVariable("nssiInstanceId")
-        String nssiInstanceId = execution.getVariable("nssiId")
-        execution.setVariable("nssiInstanceId",nssiInstanceId)
-        String sliceInstanceId = execution.getVariable("nsiServiceInstanceId")
-        try {
-            org.onap.aai.domain.yang.ServiceInstance nssi = new ServiceInstance();
-            Map<String, Object> serviceProfileMap = execution.getVariable("serviceProfile")
-
-            nssi.setServiceInstanceId(nssiInstanceId)
-            nssi.setServiceInstanceName(execution.getVariable("nssiServiceName"))
-            //nssi.setServiceType(execution.getVariable("nssiServiceType"))
-            nssi.setServiceType(serviceProfileMap.get("sST").toString())
-            String serviceStatus = "deactivated"
-            nssi.setOrchestrationStatus(serviceStatus)
-            String modelInvariantUuid = execution.getVariable("nssiServiceInvariantUuid")
-            String modelUuid = execution.getVariable("nssiServiceUuid")
-            nssi.setModelInvariantId(modelInvariantUuid)
-            nssi.setModelVersionId(modelUuid)
-            String uuiRequest = execution.getVariable("uuiRequest")
-            String serviceInstanceLocationid = jsonUtil.getJsonValue(uuiRequest, "service.parameters.requestInputs.plmnIdList")
-            nssi.setServiceInstanceLocationId(serviceInstanceLocationid)
-            //String snssai = jsonUtil.getJsonValue(uuiRequest, "service.parameters.requestInputs.sNSSAI")
-            String envContext=execution.getVariable("nsstDomain")
-            nssi.setEnvironmentContext(envContext)
-            nssi.setServiceRole(execution.getVariable("serviceRole"))
-            AAIResourcesClient client = new AAIResourcesClient()
-            AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), nssiInstanceId)
-            client.create(uri, nssi)
-        } catch (BpmnError e) {
-            throw e
-        } catch (Exception ex) {
-            String msg = "Exception in DoCreateSliceServiceInstance.instantiateSliceService. " + ex.getMessage()
-            logger.info(msg)
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-        }
-        try{
-            AAIResourceUri nsiServiceuri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, sliceInstanceId);
-            AAIResourceUri nssiServiceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, nssiInstanceId)
-            getAAIClient().connect(nsiServiceuri, nssiServiceUri, AAIEdgeLabel.COMPOSED_OF);
-        }catch(Exception ex) {
-            String msg = "Exception in DoAllocateNSSI InstantiateNSSI service while creating relationship " + ex.getMessage()
-            logger.info(msg)
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-        }
-
-
-
-        def rollbackData = execution.getVariable("RollbackData")
-        if (rollbackData == null) {
-            rollbackData = new RollbackData();
-        }
-        //rollbackData.put("SERVICEINSTANCE", "disableRollback", idisableRollback.toStrng())
-        rollbackData.put("SERVICEINSTANCE", "rollbackAAI", "true")
-        rollbackData.put("SERVICEINSTANCE", "serviceInstanceId", nssiInstanceId)
-        rollbackData.put("SERVICEINSTANCE", "subscriptionServiceType", execution.getVariable("subscriptionServiceType"))
-        rollbackData.put("SERVICEINSTANCE", "globalSubscriberId", execution.getVariable("globalSubscriberId"))
-        execution.setVariable("rollbackData", rollbackData)
-        execution.setVariable("RollbackData", rollbackData)
-        logger.debug("RollbackData:" + rollbackData)
-        logger.trace("Exit instantiateNSSIService in DoAllocateNSSI()")
-    }
-
-
-    void createSliceProfile(DelegateExecution execution) {
-        logger.trace("Enter createSliceProfile in DoAllocateNSSI()")
-        String sliceserviceInstanceId = execution.getVariable("nssiInstanceId")
-        String nssiProfileID = execution.getVariable("nssiProfileID")
-        Map<String, Object> sliceProfileMap = execution.getVariable("sliceProfileCn")
-        Map<String, Object> serviceProfileMap = execution.getVariable("serviceProfile")
-        SliceProfile sliceProfile = new SliceProfile()
-        sliceProfile.setServiceAreaDimension("")
-        sliceProfile.setPayloadSize(0)
-        sliceProfile.setJitter(0)
-        sliceProfile.setSurvivalTime(0)
-        //sliceProfile.setCsAvailability()
-        //sliceProfile.setReliability()
-        sliceProfile.setExpDataRate(0)
-        sliceProfile.setTrafficDensity(0)
-        sliceProfile.setConnDensity(0)
-        sliceProfile.setSNssai(sliceProfileMap.get("sNSSAI").toString())
-        sliceProfile.setExpDataRateUL(Integer.parseInt(sliceProfileMap.get("expDataRateUL").toString()))
-        sliceProfile.setExpDataRateDL(Integer.parseInt(sliceProfileMap.get("expDataRateDL").toString()))
-        sliceProfile.setActivityFactor(Integer.parseInt(sliceProfileMap.get("activityFactor").toString()))
-        sliceProfile.setResourceSharingLevel(sliceProfileMap.get("activityFactor").toString())
-        sliceProfile.setUeMobilityLevel(serviceProfileMap.get("uEMobilityLevel").toString())
-        sliceProfile.setCoverageAreaTAList(serviceProfileMap.get("coverageAreaTAList").toString())
-        sliceProfile.setMaxNumberOfUEs(Integer.parseInt(sliceProfileMap.get("activityFactor").toString()))
-        sliceProfile.setLatency(Integer.parseInt(sliceProfileMap.get("latency").toString()))
-        sliceProfile.setProfileId(nssiProfileID)
-        sliceProfile.setE2ELatency(0)
-
-        try {
-            AAIResourcesClient client = new AAIResourcesClient()
-            AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SLICE_PROFILE,
-                    execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), sliceserviceInstanceId, nssiProfileID)
-            client.create(uri, sliceProfile)
-        } catch (BpmnError e) {
-            throw e
-        } catch (Exception ex) {
-            String msg = "Exception in DoCreateSliceServiceInstance.instantiateSliceService. " + ex.getMessage()
-            logger.info(msg)
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-        }
-
-        def rollbackData = execution.getVariable("RollbackData")
-        if (rollbackData == null) {
-            rollbackData = new RollbackData();
-        }
-        //rollbackData.put("SERVICEINSTANCE", "disableRollback", disableRollback.toString())
-        rollbackData.put("SERVICEINSTANCE", "rollbackAAI", "true")
-        rollbackData.put("SERVICEINSTANCE", "serviceInstanceId", sliceserviceInstanceId)
-        rollbackData.put("SERVICEINSTANCE", "subscriptionServiceType", execution.getVariable("serviceType"))
-        rollbackData.put("SERVICEINSTANCE", "globalSubscriberId", execution.getVariable("globalSubscriberId"))
-        execution.setVariable("rollbackData", rollbackData)
-        execution.setVariable("RollbackData", rollbackData)
-        logger.debug("RollbackData:" + rollbackData)
-        logger.trace("Exit createSliceProfile in DoAllocateNSSI()")
-    }
-
-
-    String buildCreateNSSMFRequest(DelegateExecution execution, String domain) {
-
-        NssiAllocateRequest request = new NssiAllocateRequest()
-        String strRequest = ""
-        //String uuiRequest = execution.getVariable("uuiRequest")
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-
-        switch (domain) {
-            case "AN":
-                EsrInfo esrInfo = new EsrInfo()
-                esrInfo.setNetworkType(execution.getVariable("networkType"))
-                esrInfo.setVendor(execution.getVariable("nsstVendor"))
-
-                NsiInfo nsiInfo = new NsiInfo()
-                nsiInfo.setNsiId(execution.getVariable("nsiInstanceID"))
-                nsiInfo.setNsiName(execution.getVariable("nsiInstanceName"))
-
-                AnSliceProfile anSliceProfile = new AnSliceProfile()
-                anSliceProfile.setLatency(execution.getVariable("latency"))
-                anSliceProfile.setCoverageAreaTAList(execution.getVariable("coverageAreaList"))
-                anSliceProfile.setQi(execution.getVariable("qi"))
-
-                AllocateAnNssi allocateAnNssi = new AllocateAnNssi()
-                allocateAnNssi.setNsstId(execution.getVariable("nsstId"))
-                allocateAnNssi.setNssiName(execution.getVariable("nssiName"))
-                allocateAnNssi.setNsiInfo(nsiInfo)
-                allocateAnNssi.setSliceProfile(anSliceProfile)
-                String anScriptName = sliceTaskParams.getAnScriptName()
-                allocateAnNssi.setScriptName(anScriptName)
-
-                request.setAllocateAnNssi(allocateAnNssi)
-                request.setEsrInfo(esrInfo)
-                break;
-            case "CN":
-                Map<String, Object> sliceProfileCn =execution.getVariable("sliceProfileCn")
-                Map<String, Object> serviceProfile = execution.getVariable("serviceProfile")
-                NsiInfo nsiInfo = new NsiInfo()
-                nsiInfo.setNsiId(execution.getVariable("nsiServiceInstanceId"))
-                nsiInfo.setNsiName(execution.getVariable("nsiServiceInstanceName"))
-
-                EsrInfo esrInfo = new EsrInfo()
-                esrInfo.setNetworkType(NetworkType.fromString(domain))
-                esrInfo.setVendor(execution.getVariable("nsstVendor"))
-                execution.setVariable("esrInfo",esrInfo)
-
-
-                PerfReqEmbb perfReqEmbb = new PerfReqEmbb()
-                perfReqEmbb.setActivityFactor(sliceProfileCn.get("activityFactor"))
-                perfReqEmbb.setAreaTrafficCapDL(sliceProfileCn.get("areaTrafficCapDL"))
-                perfReqEmbb.setAreaTrafficCapUL(sliceProfileCn.get("areaTrafficCapUL"))
-                perfReqEmbb.setExpDataRateDL(sliceProfileCn.get("expDataRateDL"))
-                perfReqEmbb.setExpDataRateUL(sliceProfileCn.get("expDataRateUL"))
-
-                List<PerfReqEmbb> listPerfReqEmbbList = new ArrayList<>()
-                listPerfReqEmbbList.add(perfReqEmbb)
-
-                PerfReq perfReq = new PerfReq()
-                perfReq.setPerfReqEmbbList(listPerfReqEmbbList)
-
-                PerfReqUrllc perfReqUrllc = new PerfReqUrllc()
-                perfReqUrllc.setConnDensity(0)
-                perfReqUrllc.setTrafficDensity(0)
-                perfReqUrllc.setExpDataRate(0)
-                perfReqUrllc.setReliability(0)
-                perfReqUrllc.setCsAvailability(0)
-                perfReqUrllc.setSurvivalTime(0)
-                perfReqUrllc.setJitter(0)
-                perfReqUrllc.setE2eLatency(0)
-                perfReqUrllc.setPayloadSize("0")
-                perfReqUrllc.setServiceAreaDimension("")
-
-                List<PerfReqUrllc> perfReqUrllcList = new ArrayList<>()
-                perfReqUrllcList.add(perfReqUrllc)
-                perfReq.setPerfReqUrllcList(perfReqUrllcList)
-
-                CnSliceProfile cnSliceProfile = new CnSliceProfile()
-                cnSliceProfile.setSliceProfileId(execution.getVariable("nssiProfileID"))
-                String plmnStr = serviceProfile.get("plmnIdList")
-                List<String> plmnIdList=Arrays.asList(plmnStr.split("\\|"))
-                cnSliceProfile.setPlmnIdList(plmnIdList)
-
-                String resourceSharingLevel = serviceProfile.get("resourceSharingLevel").toString()
-                cnSliceProfile.setResourceSharingLevel(ResourceSharingLevel.fromString(resourceSharingLevel))
-
-                String coverageArea = serviceProfile.get("coverageAreaTAList")
-                List<String> coverageAreaList=Arrays.asList(coverageArea.split("\\|"))
-                cnSliceProfile.setCoverageAreaTAList(coverageAreaList)
-
-                String ueMobilityLevel = serviceProfile.get("uEMobilityLevel").toString()
-                cnSliceProfile.setUeMobilityLevel(UeMobilityLevel.fromString(ueMobilityLevel))
-
-                int latency = serviceProfile.get("latency")
-                cnSliceProfile.setLatency(latency)
-
-                int maxUE = serviceProfile.get("maxNumberofUEs")
-                cnSliceProfile.setMaxNumberofUEs(maxUE)
-
-                String snssai = serviceProfile.get("sNSSAI")
-                List<String> snssaiList = Arrays.asList(snssai.split("\\|"))
-                cnSliceProfile.setSnssaiList(snssaiList)
-
-                cnSliceProfile.setPerfReq(perfReq)
-
-                AllocateCnNssi allocateCnNssi = new AllocateCnNssi()
-                allocateCnNssi.setNsstId(execution.getVariable("nsstid"))
-                allocateCnNssi.setNssiName(execution.getVariable("nssiName"))
-                allocateCnNssi.setSliceProfile(cnSliceProfile)
-                allocateCnNssi.setNsiInfo(nsiInfo)
-                String cnScriptName = sliceTaskParams.getCnScriptName()
-                allocateCnNssi.setScriptName(cnScriptName)
-                request.setAllocateCnNssi(allocateCnNssi)
-                request.setEsrInfo(esrInfo)
-                break;
-            case "TN":
-                EsrInfo esrInfo = new EsrInfo()
-                esrInfo.setNetworkType(execution.getVariable("networkType"))
-                esrInfo.setVendor(execution.getVariable("vendor"))
-
-                TnSliceProfile tnSliceProfile = new TnSliceProfile()
-                tnSliceProfile.setLatency(execution.getVariable("latency"))
-                tnSliceProfile.setBandwidth(execution.getVariable("bandWidth"))
-
-                NsiInfo nsiInfo = new NsiInfo()
-                nsiInfo.setNsiId(execution.getVariable("nsiInstanceID"))
-                nsiInfo.setNsiName(execution.getVariable("nsiInstanceName"))
-
-                AllocateTnNssi allocateTnNssi = new AllocateTnNssi()
-                allocateTnNssi.setSliceProfile(tnSliceProfile)
-                allocateTnNssi.setNsiInfo(nsiInfo)
-                allocateTnNssi.setNsstId(execution.getVariable("nsstid"))
-                String tnScriptName = sliceTaskParams.getTnScriptName()
-                allocateTnNssi.setScriptName(tnScriptName)
-
-                request.setAllocateTnNssi(allocateTnNssi)
-                request.setEsrInfo(esrInfo)
-                break;
-            default:
-                break;
-        }
-        try {
-            strRequest = MAPPER.writeValueAsString(request);
-        } catch (IOException e) {
-            logger.error("Invalid get progress request bean to convert as string");
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Invalid get progress request bean to convert as string")
-        }
-        return strRequest
-    }
-
-
-    String buildUpdateNSSMFRequest(DelegateExecution execution, String domain) {
-        NssiAllocateRequest request = new NssiAllocateRequest()
-        String nsstInput = execution.getVariable("nsstInput")
-        String nssiId = jsonUtil.getJsonValue(nsstInput, "serviceInstanceId")
-        String strRequest = ""
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-        switch (domain) {
-            case "AN":
-                EsrInfo esrInfo = new EsrInfo()
-                esrInfo.setNetworkType(execution.getVariable("nsstType"))
-                esrInfo.setVendor(execution.getVariable("vendor"))
-
-                NsiInfo nsiInfo = new NsiInfo()
-                nsiInfo.setNsiId(execution.getVariable("nsiInstanceID"))
-                nsiInfo.setNsiName(execution.getVariable("nsiInstanceName"))
-
-                AnSliceProfile anSliceProfile = new AnSliceProfile()
-                anSliceProfile.setLatency(execution.getVariable("latency"))
-                anSliceProfile.setCoverageAreaTAList(execution.getVariable("coverageAreaList"))
-                anSliceProfile.setQi(execution.getVariable("qi"))
-
-                AllocateAnNssi allocateAnNssi = new AllocateAnNssi()
-                allocateAnNssi.setNsstId(execution.getVariable("nsstId"))
-                allocateAnNssi.setNssiName(execution.getVariable("nssiName"))
-                allocateAnNssi.setNsiInfo(nsiInfo)
-                allocateAnNssi.setSliceProfile(anSliceProfile)
-                String anScriptName = sliceTaskParams.getAnScriptName()
-                allocateAnNssi.setScriptName(anScriptName)
-                request.setAllocateAnNssi(allocateAnNssi)
-                request.setEsrInfo(esrInfo)
-                break;
-            case "CN":
-                Map<String, Object> sliceProfileCn =execution.getVariable("sliceProfileCn")
-                Map<String, Object> serviceProfile = execution.getVariable("serviceProfile")
-                NsiInfo nsiInfo = new NsiInfo()
-                nsiInfo.setNsiId(execution.getVariable("nsiServiceInstanceId"))
-                nsiInfo.setNsiName(execution.getVariable("nsiServiceInstanceName"))
-
-                EsrInfo esrInfo = new EsrInfo()
-                esrInfo.setNetworkType(NetworkType.fromString(domain))
-                esrInfo.setVendor(execution.getVariable("nsstVendor"))
-                execution.setVariable("esrInfo",esrInfo)
-
-
-                PerfReqEmbb perfReqEmbb = new PerfReqEmbb()
-                perfReqEmbb.setActivityFactor(sliceProfileCn.get("activityFactor"))
-                perfReqEmbb.setAreaTrafficCapDL(sliceProfileCn.get("areaTrafficCapDL"))
-                perfReqEmbb.setAreaTrafficCapUL(sliceProfileCn.get("areaTrafficCapUL"))
-                perfReqEmbb.setExpDataRateDL(sliceProfileCn.get("expDataRateDL"))
-                perfReqEmbb.setExpDataRateUL(sliceProfileCn.get("expDataRateUL"))
-
-                List<PerfReqEmbb> listPerfReqEmbbList = new ArrayList<>()
-                listPerfReqEmbbList.add(perfReqEmbb)
-
-                PerfReq perfReq = new PerfReq()
-                perfReq.setPerfReqEmbbList(listPerfReqEmbbList)
-
-                PerfReqUrllc perfReqUrllc = new PerfReqUrllc()
-                perfReqUrllc.setConnDensity(0)
-                perfReqUrllc.setTrafficDensity(0)
-                perfReqUrllc.setExpDataRate(0)
-                perfReqUrllc.setReliability(0)
-                perfReqUrllc.setCsAvailability(0)
-                perfReqUrllc.setSurvivalTime(0)
-                perfReqUrllc.setJitter(0)
-                perfReqUrllc.setE2eLatency(0)
-                perfReqUrllc.setPayloadSize("0")
-                perfReqUrllc.setServiceAreaDimension("")
-
-                List<PerfReqUrllc> perfReqUrllcList = new ArrayList<>()
-                perfReqUrllcList.add(perfReqUrllc)
-                perfReq.setPerfReqUrllcList(perfReqUrllcList)
-
-                CnSliceProfile cnSliceProfile = new CnSliceProfile()
-                cnSliceProfile.setSliceProfileId(execution.getVariable("nssiProfileID"))
-                String plmnStr = serviceProfile.get("plmnIdList")
-                List<String> plmnIdList=Arrays.asList(plmnStr.split("\\|"))
-                cnSliceProfile.setPlmnIdList(plmnIdList)
-
-                String resourceSharingLevel = serviceProfile.get("resourceSharingLevel").toString()
-                cnSliceProfile.setResourceSharingLevel(ResourceSharingLevel.fromString(resourceSharingLevel))
-
-                String coverageArea = serviceProfile.get("coverageAreaTAList")
-                List<String> coverageAreaList=Arrays.asList(coverageArea.split("\\|"))
-                cnSliceProfile.setCoverageAreaTAList(coverageAreaList)
-
-                String ueMobilityLevel = serviceProfile.get("uEMobilityLevel").toString()
-                cnSliceProfile.setUeMobilityLevel(UeMobilityLevel.fromString(ueMobilityLevel))
-
-                int latency = serviceProfile.get("latency")
-                cnSliceProfile.setLatency(latency)
-
-                int maxUE = serviceProfile.get("maxNumberofUEs")
-                cnSliceProfile.setMaxNumberofUEs(maxUE)
+    /**
+     * query nssi allocate status
+     * @param execution
+     */
+    void queryNSSIStatus(DelegateExecution execution) {
+        NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest()
+        NssiResponse nssiAllocateResult = execution.getVariable("nssiAllocateResult") as NssiResponse
+        String jobId = nssiAllocateResult.getJobId()
+        String nssiId = nssiAllocateResult.getNssiId()
 
-                String snssai = serviceProfile.get("sNSSAI")
-                List<String> snssaiList = Arrays.asList(snssai.split("\\|"))
-                cnSliceProfile.setSnssaiList(snssaiList)
+        ServiceInfo serviceInfo = execution.getVariable("serviceInfo") as ServiceInfo
+        serviceInfo.setNssiId(nssiId)
+        EsrInfo esrInfo = execution.getVariable("esrInfo") as EsrInfo
 
-                cnSliceProfile.setPerfReq(perfReq)
+        //nbiRequest.setResponseId(jobId)
+        nbiRequest.setServiceInfo(serviceInfo)
+        nbiRequest.setEsrInfo(esrInfo)
 
-                AllocateCnNssi allocateCnNssi = new AllocateCnNssi()
-                allocateCnNssi.setNsstId(execution.getVariable("nsstid"))
-                allocateCnNssi.setNssiName(execution.getVariable("nssiName"))
-                allocateCnNssi.setSliceProfile(cnSliceProfile)
-                allocateCnNssi.setNsiInfo(nsiInfo)
-                allocateCnNssi.setNssiId(nssiId)              // need to check this
-                String cnScriptName = sliceTaskParams.getCnScriptName()
-                allocateCnNssi.setScriptName(cnScriptName)
-                request.setAllocateCnNssi(allocateCnNssi)
-                request.setEsrInfo(esrInfo)
-                break;
-            case "TN":
-                EsrInfo esrInfo = new EsrInfo()
-                esrInfo.setNetworkType(execution.getVariable("networkType"))
-                esrInfo.setVendor(execution.getVariable("vendor"))
+        String endpoint = String.format(NSSMF_QUERY_JOB_STATUS_URL, jobId)
 
-                TnSliceProfile tnSliceProfile = new TnSliceProfile()
-                tnSliceProfile.setLatency(execution.getVariable("latency"))
-                tnSliceProfile.setBandwidth(execution.getVariable("bandWidth"))
+        String response =
+                nssmfAdapterUtils.sendPostRequestNSSMF(execution, endpoint, objectMapper.writeValueAsString(nbiRequest))
 
-                NsiInfo nsiInfo = new NsiInfo()
-                nsiInfo.setNsiId(execution.getVariable("nsiInstanceID"))
-                nsiInfo.setNsiName(execution.getVariable("nsiInstanceName"))
+        ResponseEntity responseEntity = objectMapper.readValue(response, ResponseEntity.class)
+        String result = responseEntity.getBody()
+        //todo;if success
+        ResponseDescriptor responseDescriptor = objectMapper.readValue(result, ResponseDescriptor.class)
 
-                AllocateTnNssi allocateTnNssi = new AllocateTnNssi()
-                allocateTnNssi.setSliceProfile(tnSliceProfile)
-                allocateTnNssi.setNsiInfo(nsiInfo)
-                allocateTnNssi.setNsstId(execution.getVariable("nsstid"))
-                String tnScriptName = sliceTaskParams.getTnScriptName()
-                allocateTnNssi.setScriptName(tnScriptName)
-                request.setAllocateTnNssi(allocateTnNssi)
-                request.setEsrInfo(esrInfo)
-                break;
-            default:
-                break;
-        }
-        try {
-            strRequest = MAPPER.writeValueAsString(request);
-        } catch (IOException e) {
-            logger.error("Invalid get progress request bean to convert as string");
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Invalid get progress request bean to convert as string")
-        }
-        return strRequest
+        //todo: handle status
+        execution.setVariable("nssiAllocateResult", responseDescriptor)
     }
 
-    String buildNSSMFProgressRequest(DelegateExecution execution){
-        JobStatusRequest request = new JobStatusRequest()
-        String strRequest = ""
-        EsrInfo esrInfo = execution.getVariable("esrInfo")
-        request.setNsiId(execution.getVariable("nsiServiceInstanceId"))
-        request.setNssiId(execution.getVariable("nssiId"))
-        request.setEsrInfo(esrInfo)
-
-        try {
-            strRequest = MAPPER.writeValueAsString(request);
-        } catch (IOException e) {
-            logger.error("Invalid get progress request bean to convert as string");
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Invalid get progress request bean to convert as string")
-        }
-        return strRequest
+    void prepareUpdateOrchestrationTask(DelegateExecution execution) {
+        //todo;update orchestration task
     }
 
-    public void prepareUpdateOrchestrationTask(DelegateExecution execution) {
-        logger.debug("Start prepareUpdateOrchestrationTask progress")
-        String requestMethod = "PUT"
-        String progress = execution.getVariable("nssmfProgress")
-        String status = execution.getVariable("nssmfStatus")
-        String statusDescription=execution.getVariable("nddmfStatusDescription")
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-        String domain = execution.getVariable("nsstDomain")
-        switch (domain.toUpperCase()) {
-            case "AN":
-                sliceTaskParams.setAnProgress(progress)
-                sliceTaskParams.setAnStatus(status)
-                sliceTaskParams.setAnStatusDescription(statusDescription)
-                break;
-            case "CN":
-                sliceTaskParams.setCnProgress(progress)
-                sliceTaskParams.setCnStatus(status)
-                sliceTaskParams.setCnStatusDescription(statusDescription)
-                break;
-            case "TN":
-                sliceTaskParams.setTnProgress(progress)
-                sliceTaskParams.setTnStatus(status)
-                sliceTaskParams.setTnStatusDescription(statusDescription)
-                break;
-            default:
-                break;
-        }
-        String paramJson = sliceTaskParams.convertToJson()
-        execution.setVariable("CSSOT_paramJson", paramJson)
-        execution.setVariable("CSSOT_requestMethod", requestMethod)
-        logger.debug("Finish prepareUpdateOrchestrationTask progress")
+    void timeDelay(DelegateExecution execution) {
+        //todo: time delay
     }
 
 }
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSSIV2.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateNSSIV2.groovy
deleted file mode 100644 (file)
index 05bb53a..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-package org.onap.so.bpmn.infrastructure.scripts
-
-import com.fasterxml.jackson.databind.ObjectMapper
-import org.apache.commons.lang3.StringUtils
-import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.onap.so.beans.nsmf.SliceTaskInfo
-import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
-import org.onap.so.bpmn.common.scripts.ExceptionUtil
-import org.onap.so.bpmn.common.scripts.NssmfAdapterUtils
-import org.onap.so.bpmn.core.domain.ModelInfo
-import org.onap.so.bpmn.core.domain.ServiceDecomposition
-import org.onap.so.bpmn.core.json.JsonUtils
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
-
-class DoAllocateNSSIV2 extends AbstractServiceTaskProcessor {
-
-    private static final Logger logger = LoggerFactory.getLogger( DoAllocateNSSIV2.class);
-    private static final ObjectMapper MAPPER = new ObjectMapper();
-
-    ExceptionUtil exceptionUtil = new ExceptionUtil()
-
-    JsonUtils jsonUtil = new JsonUtils()
-
-    private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil)
-
-    @Override
-    void preProcessRequest(DelegateExecution execution) {
-        logger.trace("Enter preProcessRequest()")
-
-//        String nssmfOperation
-//
-//        String nsstInput = execution.getVariable("nsstInput")
-//        String modelUuid = jsonUtil.getJsonValue(nsstInput, "modelUuid")
-//        //modelUuid="2763777c-27bd-4df7-93b8-c690e23f4d3f"
-//        String nssiInstanceId = jsonUtil.getJsonValue(nsstInput, "serviceInstanceId")
-//        String serviceModelInfo = """{
-//            "modelInvariantUuid":"",
-//            "modelUuid":"${modelUuid}",
-//            "modelVersion":""
-//             }"""
-//        execution.setVariable("serviceModelInfo", serviceModelInfo)
-//        execution.setVariable("nssiInstanceId", nssiInstanceId)
-//        String nssiProfileID = UUID.randomUUID().toString()
-//        execution.setVariable("nssiProfileID", nssiProfileID)
-//        if(isBlank(nssiInstanceId))
-//        {
-//            nssmfOperation="create"
-//            nssiInstanceId = UUID.randomUUID().toString()
-//        }else {
-//            nssmfOperation = "update"
-//        }
-//        execution.setVariable("nssmfOperation",nssmfOperation)
-//        execution.setVariable("nssiInstanceId",nssiInstanceId)
-//
-//        def isNSSICreated = false
-//        execution.setVariable("isNSSICreated",isNSSICreated)
-//
-//        int currentCycle = 0
-//        execution.setVariable("currentCycle", currentCycle)
-
-
-        SliceTaskInfo sliceTaskInfo = execution.getVariable("sliceTaskInfo") as SliceTaskInfo
-        if (StringUtils.isBlank(sliceTaskInfo.suggestNssiId)) {
-            execution.setVariable("nssmfOperation", "create")
-        } else {
-            execution.setVariable("nssmfOperation", "update")
-        }
-        logger.trace("Exit preProcessRequest")
-    }
-
-    /**
-     * prepare nssi request
-     * @param execution
-     */
-    void prepareNSSIReq(DelegateExecution execution) {
-
-    }
-
-    void getNSSTInfo(DelegateExecution execution){
-        logger.trace("Enter getNSSTInfo in DoAllocateNSSI()")
-        ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition")
-        ModelInfo modelInfo = serviceDecomposition.getModelInfo()
-        String serviceRole = "nssi"
-        String nssiServiceInvariantUuid = serviceDecomposition.modelInfo.getModelInvariantUuid()
-        String nssiServiceUuid = serviceDecomposition.modelInfo.getModelUuid()
-        String nssiServiceType = serviceDecomposition.getServiceType()
-        String uuiRequest = execution.getVariable("uuiRequest")
-        String nssiServiceName = "nssi_"+jsonUtil.getJsonValue(uuiRequest, "service.name")
-        execution.setVariable("nssiServiceName",nssiServiceName)
-        execution.setVariable("nssiServiceType",nssiServiceType)
-        execution.setVariable("nssiServiceInvariantUuid",nssiServiceInvariantUuid)
-        execution.setVariable("nssiServiceUuid",nssiServiceUuid)
-        execution.setVariable("serviceRole",serviceRole)
-
-        String content = serviceDecomposition.getServiceInfo().getServiceArtifact().get(0).getContent()
-        String nsstID = jsonUtil.getJsonValue(content, "metadata.id")
-        String nsstVendor = jsonUtil.getJsonValue(content, "metadata.vendor")
-        String nsstDomain = jsonUtil.getJsonValue(content, "metadata.domainType")
-        String nsstType = jsonUtil.getJsonValue(content, "metadata.type")
-
-        execution.setVariable("nsstID",nsstID)
-        execution.setVariable("nsstVendor",nsstVendor)
-        execution.setVariable("nsstDomain",nsstDomain)
-        execution.setVariable("nssiServiceUuid",nssiServiceUuid)
-        execution.setVariable("nsstType",nsstType)
-
-        String nsstContentInfo = """{
-        "NsstID":"${nsstID}",
-        "Vendor":"${nsstVendor}",
-        "type":"${nsstType}"
-         }"""
-
-        logger.trace("Exit getNSSTInfo in DoAllocateNSSI()")
-    }
-
-}
index b713794..181e9d0 100644 (file)
@@ -1,28 +1,37 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License")
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ #       http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.so.bpmn.infrastructure.scripts
 
 
 import org.onap.aai.domain.yang.AllottedResource
-
-import static org.apache.commons.lang3.StringUtils.*;
-
+import org.onap.aai.domain.yang.ServiceInstance
+import org.onap.so.beans.nsmf.SliceTaskParamsAdapter
 import org.camunda.bpm.engine.delegate.BpmnError
 import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.onap.aai.domain.yang.OwningEntity
-import org.onap.aai.domain.yang.ServiceProfile;
+import org.onap.aai.domain.yang.ServiceProfile
 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
-import org.onap.so.bpmn.common.scripts.CatalogDbUtils
-import org.onap.so.bpmn.common.scripts.CatalogDbUtilsFactory
 import org.onap.so.bpmn.common.scripts.ExceptionUtil
-import org.onap.so.bpmn.common.scripts.MsoUtils
-import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
 import org.onap.so.bpmn.core.RollbackData
-import org.onap.so.bpmn.core.UrnPropertiesReader
-import org.onap.so.bpmn.core.WorkflowException
 import org.onap.so.bpmn.core.domain.ModelInfo
 import org.onap.so.bpmn.core.domain.ServiceDecomposition
-import org.onap.so.bpmn.core.domain.ServiceInstance
 import org.onap.so.bpmn.core.json.JsonUtils
-import org.onap.so.bpmn.infrastructure.aai.groovyflows.AAICreateResources
 import org.onap.aaiclient.client.aai.AAIObjectType
 import org.onap.aaiclient.client.aai.AAIResourcesClient
 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
@@ -34,13 +43,13 @@ import org.slf4j.LoggerFactory
 
 class DoCreateSliceServiceInstance extends AbstractServiceTaskProcessor{
 
-    private static final Logger logger = LoggerFactory.getLogger( DoCreateSliceServiceInstance.class);
+    private static final Logger logger = LoggerFactory.getLogger( DoCreateSliceServiceInstance.class)
+
     JsonUtils jsonUtil = new JsonUtils()
 
     ExceptionUtil exceptionUtil = new ExceptionUtil()
 
-    CatalogDbUtils catalogDbUtils = new CatalogDbUtilsFactory().create()
-
+    AAIResourcesClient client = getAAIClient()
     /**
      * Pre Process the BPMN Flow Request
      * Inclouds:
@@ -48,86 +57,54 @@ class DoCreateSliceServiceInstance extends AbstractServiceTaskProcessor{
      * generate the nsParameters
      */
     void preProcessRequest (DelegateExecution execution) {
-        String msg = ""
         logger.trace("Enter preProcessRequest()")
-        //Need update
-        //1. Prepare service parameter.
-        //2. Prepare slice profile parameters.
+        //here modelVersion is not set, we use modelUuid to decompose the service.
+        def isDebugLogEnabled = true
+        execution.setVariable("isDebugLogEnabled", isDebugLogEnabled)
 
-        String sliceserviceInstanceId = execution.getVariable("serviceInstanceId")
-        String allottedResourceId = UUID.randomUUID().toString()
-        execution.setVariable("sliceserviceInstanceId", sliceserviceInstanceId)
-        execution.setVariable("allottedResourceId", allottedResourceId)
+        logger.trace("Exit preProcessRequest")
+    }
+
+    /**
+     * prepare decompose service profile instance template
+     * @param execution
+     */
+    public void prepareDecomposeService(DelegateExecution execution) {
 
         String uuiRequest = execution.getVariable("uuiRequest")
         String modelInvariantUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceInvariantUuid")
         String modelUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceUuid")
-        //here modelVersion is not set, we use modelUuid to decompose the service.
-        def isDebugLogEnabled = true
-        execution.setVariable("serviceInstanceId",sliceserviceInstanceId)
-        execution.setVariable("isDebugLogEnabled",isDebugLogEnabled)
         String serviceModelInfo = """{
             "modelInvariantUuid":"${modelInvariantUuid}",
             "modelUuid":"${modelUuid}",
             "modelVersion":""
              }"""
         execution.setVariable("serviceModelInfo", serviceModelInfo)
-
-        logger.trace("Exit preProcessRequest")
     }
 
+    /**
+     * create service-profile instance in aai
+     * @param execution
+     */
+    void createServiceProfileInstance(DelegateExecution execution) {
 
-    void createServiceProfile(DelegateExecution execution) {
-
-        String sliceserviceInstanceId = execution.getVariable("sliceserviceInstanceId")
-        Map<String, Object> serviceProfileMap = execution.getVariable("serviceProfile")
-        String serviceProfileID = UUID.randomUUID().toString()
-        ServiceProfile serviceProfile = new ServiceProfile();
-        serviceProfile.setProfileId(serviceProfileID)
-        serviceProfile.setLatency(Integer.parseInt(serviceProfileMap.get("latency").toString()))
-        serviceProfile.setMaxNumberOfUEs(Integer.parseInt(serviceProfileMap.get("maxNumberofUEs").toString()))
-        serviceProfile.setCoverageAreaTAList(serviceProfileMap.get("coverageAreaTAList").toString())
-        serviceProfile.setUeMobilityLevel(serviceProfileMap.get("uEMobilityLevel").toString())
-        serviceProfile.setResourceSharingLevel(serviceProfileMap.get("resourceSharingLevel").toString())
-        serviceProfile.setExpDataRateUL(Integer.parseInt(serviceProfileMap.get("expDataRateUL").toString()))
-        serviceProfile.setExpDataRateDL(Integer.parseInt(serviceProfileMap.get("expDataRateDL").toString()))
-        serviceProfile.setAreaTrafficCapUL(Integer.parseInt(serviceProfileMap.get("areaTrafficCapUL").toString()))
-        serviceProfile.setAreaTrafficCapDL(Integer.parseInt(serviceProfileMap.get("areaTrafficCapDL").toString()))
-        serviceProfile.setActivityFactor(Integer.parseInt(serviceProfileMap.get("activityFactor").toString()))
-
-        serviceProfile.setJitter(0)
-        serviceProfile.setSurvivalTime(0)
-        serviceProfile.setCsAvailability(new Object())
-        serviceProfile.setReliability(new Object())
-        serviceProfile.setExpDataRate(0)
-        serviceProfile.setTrafficDensity(0)
-        serviceProfile.setConnDensity(0)
-        try {
-            AAIResourcesClient client = new AAIResourcesClient()
-            AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_PROFILE, execution.getVariable("globalSubscriberId"),
-                    execution.getVariable("subscriptionServiceType"), sliceserviceInstanceId, serviceProfileID)
-            client.create(uri, serviceProfile)
-
-        } catch (BpmnError e) {
-            throw e
-        } catch (Exception ex) {
-            String msg = "Exception in DoCreateSliceServiceInstance.instantiateSliceService. " + ex.getMessage()
-            logger.info(msg)
-            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-        }
-    }
-
-    void instantiateSliceService(DelegateExecution execution) {
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
 
-        ServiceDecomposition serviceDecomposition= execution.getVariable("sliceServiceDecomposition")
-        String uuiRequest = execution.getVariable("uuiRequest")
+        ServiceDecomposition serviceDecomposition =
+                execution.getVariable("serviceProfileDecomposition") as ServiceDecomposition
         ModelInfo modelInfo = serviceDecomposition.getModelInfo()
-        String serviceRole = "e2eslice-service"
+        //String serviceRole = "e2eslice-service"
+        /**
+         * todo: ServiceProfile params changed
+         * todo: role
+         */
+        String serviceRole = "service-profile"
         String serviceType = execution.getVariable("serviceType")
-        Map<String, Object> serviceProfile = execution.getVariable("serviceProfile")
+        Map<String, Object> serviceProfile = sliceParams.getServiceProfile()
         String ssInstanceId = execution.getVariable("serviceInstanceId")
         try {
-            org.onap.aai.domain.yang.ServiceInstance ss = new org.onap.aai.domain.yang.ServiceInstance()
+            ServiceInstance ss = new ServiceInstance()
             ss.setServiceInstanceId(ssInstanceId)
             String sliceInstanceName = execution.getVariable("serviceInstanceName")
             ss.setServiceInstanceName(sliceInstanceName)
@@ -143,8 +120,11 @@ class DoCreateSliceServiceInstance extends AbstractServiceTaskProcessor{
             String snssai = serviceProfile.get("sNSSAI")
             ss.setEnvironmentContext(snssai)
             ss.setServiceRole(serviceRole)
-            AAIResourcesClient client = new AAIResourcesClient()
-            AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, execution.getVariable("globalSubscriberId"), execution.getVariable("subscriptionServiceType"), ssInstanceId)
+
+            AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
+                    execution.getVariable("globalSubscriberId"),
+                    execution.getVariable("subscriptionServiceType"),
+                    ssInstanceId)
             client.create(uri, ss)
         } catch (BpmnError e) {
             throw e
@@ -157,7 +137,7 @@ class DoCreateSliceServiceInstance extends AbstractServiceTaskProcessor{
 
         def rollbackData = execution.getVariable("RollbackData")
         if (rollbackData == null) {
-            rollbackData = new RollbackData();
+            rollbackData = new RollbackData()
         }
         //rollbackData.put("SERVICEINSTANCE", "disableRollback", disableRollback.toString())
         rollbackData.put("SERVICEINSTANCE", "rollbackAAI", "true")
@@ -170,57 +150,100 @@ class DoCreateSliceServiceInstance extends AbstractServiceTaskProcessor{
 
     }
 
+    /**
+     * create service profile in aai
+     * @param execution
+     */
+    void createServiceProfile(DelegateExecution execution) {
+
+        /**
+         * todo: ServiceProfile params changed
+         */
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+        Map<String, Object> serviceProfileMap = sliceParams.getServiceProfile()
 
-    void createAllottedResource(DelegateExecution execution) {
-        String serviceInstanceId = execution.getVariable('sliceserviceInstanceId')
-
-        AAIResourcesClient resourceClient = new AAIResourcesClient()
-        AAIResourceUri ssServiceuri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId)
-
-//        try {
-//
-//            if(resourceClient.exists(ssServiceuri)){
-//                execution.setVariable("ssi_resourceLink", uri.build().toString())
-//            }else{
-//                exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Service instance was not found in aai to " +
-//                        "associate allotted resource for service :"+serviceInstanceId)
-//            }
-//        }catch(BpmnError e) {
-//            throw e;
-//        }catch (Exception ex){
-//            String msg = "Exception in getServiceInstance. " + ex.getMessage()
-//            logger.debug(msg)
-//            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-//        }
+        String serviceProfileInstanceId = execution.getVariable("serviceInstanceId")
+        String serviceProfileId = UUID.randomUUID().toString()
+        sliceParams.serviceProfile.put("profileId", serviceProfileId)
+
+        ServiceProfile serviceProfile = new ServiceProfile()
+        serviceProfile.setProfileId(serviceProfileId)
+        serviceProfile.setLatency(Integer.parseInt(serviceProfileMap.get("latency").toString()))
+        serviceProfile.setMaxNumberOfUEs(Integer.parseInt(serviceProfileMap.get("maxNumberofUEs").toString()))
+        serviceProfile.setCoverageAreaTAList(serviceProfileMap.get("coverageAreaTAList").toString())
+        serviceProfile.setUeMobilityLevel(serviceProfileMap.get("uEMobilityLevel").toString())
+        serviceProfile.setResourceSharingLevel(serviceProfileMap.get("resourceSharingLevel").toString())
+        serviceProfile.setExpDataRateUL(Integer.parseInt(serviceProfileMap.get("expDataRateUL").toString()))
+        serviceProfile.setExpDataRateDL(Integer.parseInt(serviceProfileMap.get("expDataRateDL").toString()))
+        serviceProfile.setAreaTrafficCapUL(Integer.parseInt(serviceProfileMap.get("areaTrafficCapUL").toString()))
+        serviceProfile.setAreaTrafficCapDL(Integer.parseInt(serviceProfileMap.get("areaTrafficCapDL").toString()))
+        serviceProfile.setActivityFactor(Integer.parseInt(serviceProfileMap.get("activityFactor").toString()))
+
+        serviceProfile.setJitter(0)
+        serviceProfile.setSurvivalTime("0")
+        serviceProfile.setCsAvailability(new Object())
+        serviceProfile.setReliability("")
+        serviceProfile.setExpDataRate(0)
+        serviceProfile.setTrafficDensity(0)
+        serviceProfile.setConnDensity(0)
+        try {
+            AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_PROFILE,
+                    execution.getVariable("globalSubscriberId"),
+                    execution.getVariable("subscriptionServiceType"),
+                    serviceProfileInstanceId,
+                    serviceProfileId)
+            client.create(uri, serviceProfile)
+            execution.setVariable("sliceTaskParams", sliceParams)
+
+        } catch (BpmnError e) {
+            throw e
+        } catch (Exception ex) {
+            String msg = "Exception in DoCreateSliceServiceInstance.instantiateSliceService. " + ex.getMessage()
+            logger.info(msg)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+        }
+    }
+
+    /**
+     * create allotted resource
+     * todo: unfinished
+     * @param execution
+     */
+    public void createAllottedResource(DelegateExecution execution) {
 
         try {
-            String allottedResourceId = execution.getVariable("allottedResourceId")
-            ServiceDecomposition serviceDecomposition = execution.getVariable("sliceServiceDecomposition")
+
+            ServiceDecomposition serviceDecomposition =
+                    execution.getVariable("serviceProfileDecomposition") as ServiceDecomposition
+
             List<org.onap.so.bpmn.core.domain.AllottedResource> allottedResourceList = serviceDecomposition.getAllottedResources()
-            for(org.onap.so.bpmn.core.domain.AllottedResource allottedResource : allottedResourceList)
-            {
-                //AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceFromParentURI(ssServiceuri, AAIObjectType.ALLOTTED_RESOURCE, allottedResourceId)
+            for(org.onap.so.bpmn.core.domain.AllottedResource allottedResource : allottedResourceList) {
+                String allottedResourceId = UUID.randomUUID().toString()
+
                 AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.ALLOTTED_RESOURCE,
-                        execution.getVariable("globalSubscriberId"),execution.getVariable("subscriptionServiceType"),
-                        execution.getVariable("sliceserviceInstanceId"), allottedResourceId)
+                        execution.getVariable("globalSubscriberId"),
+                        execution.getVariable("subscriptionServiceType"),
+                        execution.getVariable("serviceInstanceId"),
+                        allottedResourceId)
+
                 execution.setVariable("allottedResourceUri", allottedResourceUri)
                 String arType = allottedResource.getAllottedResourceType()
                 String arRole = allottedResource.getAllottedResourceRole()
                 String modelInvariantId = allottedResource.getModelInfo().getModelInvariantUuid()
                 String modelVersionId = allottedResource.getModelInfo().getModelUuid()
 
-                org.onap.aai.domain.yang.AllottedResource resource = new org.onap.aai.domain.yang.AllottedResource()
+                AllottedResource resource = new AllottedResource()
                 resource.setId(allottedResourceId)
                 resource.setType(arType)
                 resource.setAllottedResourceName("Allotted_"+ execution.getVariable("serviceInstanceName"))
                 resource.setRole(arRole)
                 resource.setModelInvariantId(modelInvariantId)
                 resource.setModelVersionId(modelVersionId)
-                getAAIClient().create(allottedResourceUri, resource)
-                //AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceFromExistingURI(AAIObjectType.SERVICE_INSTANCE, UriBuilder.fromPath(ssServiceuri).build())
-                //getAAIClient().connect(allottedResourceUri,ssServiceuri)
+
+                client.create(allottedResourceUri, resource)
+
             }
-            //execution.setVariable("aaiARPath", allottedResourceUri.build().toString());
 
         }catch (Exception ex) {
             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "Exception in createAaiAR " + ex.getMessage())
index 9b78afb..5cde856 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP - SO
  * ================================================================================
- # Copyright (c) 2019, CMCC Technologies Co., Ltd.
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
  #
  # Licensed under the Apache License, Version 2.0 (the "License")
  # you may not use this file except in compliance with the License.
 
 package org.onap.so.bpmn.infrastructure.scripts
 
-import com.fasterxml.jackson.core.type.TypeReference
 import com.fasterxml.jackson.databind.ObjectMapper
-import groovy.json.JsonSlurper
 import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.onap.logging.filter.base.ONAPComponents
+import org.onap.so.beans.nsmf.AnSliceProfile
+import org.onap.so.beans.nsmf.CnSliceProfile
+import org.onap.so.beans.nsmf.EsrInfo
+import org.onap.so.beans.nsmf.NetworkType
+import org.onap.so.beans.nsmf.NssmfAdapterNBIRequest
 import org.onap.so.beans.nsmf.SliceTaskParams
+import org.onap.so.beans.nsmf.SliceTaskParamsAdapter
+import org.onap.so.beans.nsmf.TnSliceProfile
+import org.onap.so.beans.nsmf.oof.SubnetCapability
+import org.onap.so.beans.nsmf.oof.SubnetType
+import org.onap.so.beans.nsmf.oof.TemplateInfo
 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
 import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.common.scripts.NssmfAdapterUtils
 import org.onap.so.bpmn.common.scripts.OofUtils
 import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.bpmn.core.domain.AllottedResource
+import org.onap.so.bpmn.core.domain.ModelInfo
 import org.onap.so.bpmn.core.domain.ServiceDecomposition
-import org.onap.so.bpmn.core.domain.ServiceProxy
 import org.onap.so.bpmn.core.json.JsonUtils
-import org.onap.so.client.HttpClient
-import org.onap.so.client.HttpClientFactory
-import org.onap.aaiclient.client.aai.AAIObjectType
-import org.onap.aaiclient.client.aai.AAIResourcesClient
-import org.onap.aaiclient.client.aai.entities.AAIResultWrapper
-import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
-import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
+
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
-
-import javax.ws.rs.NotFoundException
-import javax.ws.rs.core.Response
-
-import static org.apache.commons.lang3.StringUtils.isBlank
+import org.springframework.http.ResponseEntity
 
 class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
 
-    private static final Logger logger = LoggerFactory.getLogger( DoCreateSliceServiceOption.class)
+    private static final Logger logger = LoggerFactory.getLogger(DoCreateSliceServiceOption.class)
 
     ExceptionUtil exceptionUtil = new ExceptionUtil()
 
@@ -58,426 +57,528 @@ class DoCreateSliceServiceOption extends AbstractServiceTaskProcessor{
 
     OofUtils oofUtils = new OofUtils()
 
-    ObjectMapper objectMapper = new ObjectMapper()
+    private static final ObjectMapper objectMapper = new ObjectMapper()
+
+    private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil)
+
+    private static final String QUERY_SUB_NET_CAPABILITY = "/api/rest/provMns/v1/NSS/subnetCapabilityQuery"
+
+    private static final String QUERY_NSSI_SELECTION_CAPABILITY = "/api/rest/provMns/v1/NSS/NSSISelectionCapability"
 
     void preProcessRequest (DelegateExecution execution) {
     }
 
+    /**
+     * prepare the params for decompose nst
+     * @param execution
+     */
+    public void prepareDecomposeNST(DelegateExecution execution) {
 
-    void prepareSelectNSIRequest(DelegateExecution execution) {
+        SliceTaskParamsAdapter sliceTaskParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
 
-        String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution)
-        logger.debug( "get NSI option OOF Url: " + urlString)
-
-        boolean isNSISuggested = true
-        execution.setVariable("isNSISuggested",isNSISuggested)
-        String requestId = execution.getVariable("msoRequestId")
-               String messageType = "NSISelectionResponse"
-               
-        Map<String, Object> profileInfo = execution.getVariable("serviceProfile")
-        Map<String, Object> nstSolution = execution.getVariable("nstSolution")
-        logger.debug("Get NST selection from OOF: " + nstSolution.toString())
-        String nstInfo = """{
-            "modelInvariantId":"${nstSolution.invariantUUID}",
-            "modelVersionId":"${nstSolution.UUID}",
-            "modelName":"${nstSolution.NSTName}"
-         }"""
-               
-                execution.setVariable("nsiSelectionUrl", "/api/oof/selection/nsi/v1")
-                execution.setVariable("nsiSelection_messageType",messageType)
-                execution.setVariable("nsiSelection_correlator",requestId)
-                String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution);
-                execution.setVariable("nsiSelection_timeout",timeout)
-                String oofRequest = oofUtils.buildSelectNSIRequest(requestId, nstInfo,messageType, profileInfo)
-                execution.setVariable("nsiSelection_oofRequest",oofRequest)
-                logger.debug("Sending request to OOF: " + oofRequest)
-    }
+        String modelUuid = sliceTaskParams.getNSTInfo().getUUID()
+        String modelInvariantUuid = sliceTaskParams.getNSTInfo().getInvariantUUID()
 
-    void processOOFResponse(Response httpResponse, DelegateExecution execution) {
-        int responseCode = httpResponse.getStatus()
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-            String OOFResponse = execution.getVariable("nsiSelection_oofResponse")
-            logger.debug("NSI OOFResponse is: " + OOFResponse)
-            execution.setVariable("OOFResponse", OOFResponse)
-            //This needs to be changed to derive a value when we add policy to decide the solution options.
-            Map OOFResponseObject = new JsonSlurper().parseText(OOFResponse)
-            Map solutions = OOFResponseObject.get("solutions")
-
-            String resourceSharingLevel = execution.getVariable("resourceSharingLevel")
-            Boolean isSharable = resourceSharingLevel.equals("shared")
-
-            if (solutions != null) {
-                if (isSharable && hasSharedNSIsolutions(solutions)) {
-                    //sharedNSISolution
-                    processSharedNSISolutions(solutions, execution)
-                }
-                else if(solutions.containsKey("newNSISolutions")) {
-                    processNewNSISolutions(solutions, execution)
-                }
-            }
-            execution.setVariable("sliceTaskParams", sliceTaskParams)
-            logger.debug("sliceTaskParams: "+sliceTaskParams.convertToJson())
-        logger.debug("*** Completed options Call to OOF ***")
-               //解析sliceProfile
-               logger.debug("start parseServiceProfile")
-               parseServiceProfile(execution)
-               logger.debug("end parseServiceProfile")
+        String serviceModelInfo = """{
+            "modelInvariantUuid":"${modelInvariantUuid}",
+            "modelUuid":"${modelUuid}",
+            "modelVersion":""
+             }"""
+        execution.setVariable("nstServiceModelInfo", serviceModelInfo)
     }
 
-    private boolean hasSharedNSIsolutions( Map solutions){
-        if(solutions.containsKey("sharedNSISolutions")){
-            List sharedNSIsolutions = solutions.get("sharedNSISolutions")
-            if (sharedNSIsolutions != null && !sharedNSIsolutions.isEmpty()) {
-                return  true
-            }
+    /**
+     * process the result of NST Decomposition
+     * @param execution
+     */
+    public void processDecompositionNST(DelegateExecution execution) {
+
+        List<TemplateInfo> nsstInfos = new ArrayList<>()
+        ServiceDecomposition nstServiceDecomposition =
+                execution.getVariable("nstServiceDecomposition") as ServiceDecomposition
+        //todo:
+        List<AllottedResource> allottedResources = nstServiceDecomposition.getAllottedResources()
+        for (AllottedResource allottedResource : allottedResources) {
+            TemplateInfo nsstInfo = new TemplateInfo()
+            nsstInfo.setUUID(allottedResource.getProvidingServiceModelUuid())
+            nsstInfo.setInvariantUUID(allottedResource.getProvidingServiceModelInvariantUuid())
+            nsstInfo.setName(allottedResource.getProvidingServiceModelName())
+            nsstInfos.add(nsstInfo)
         }
-        return false
+        execution.setVariable("nsstInfos", nsstInfos)
+
+        execution.setVariable("maxNsstIndex", allottedResources.size() - 1)
+        execution.setVariable("currentNsstIndex", 0)
+
+        List<ServiceDecomposition> nsstServiceDecompositions = new ArrayList<>()
+        execution.setVariable("nsstServiceDecompositions", nsstServiceDecompositions)
     }
 
-    private void processNewNSISolutions(Map solutions, DelegateExecution execution) {
-        int index = 0
-        List<Map> newNSISolutions = solutions.get("newNSISolutions")
-        List<Map> NSSImap = new ArrayList<>()
-        if (newNSISolutions != null && newNSISolutions.size() > 0) {
-            NSSImap = newNSISolutions.get(index).get("NSSISolutions") as List<Map>
-            for (Map nssi : NSSImap) {
-                Map oofSliceProfile = nssi.get("sliceProfile")
-                String domain = oofSliceProfile.getOrDefault("domainType","")
-                logger.debug("OOF newNSISolutions SliceProfile: " +oofSliceProfile.toString()+",domain:${domain}")
-                if(null != domain){
-                    //TODO
-//                    def nssiSolution = nssi.get("NSSISolution") as Map<String, ?>
-//                    String nssiName = nssiSolution.getOrDefault("NSSIName", "")
-//                    String nssiId = nssiSolution.getOrDefault("NSSIId", "")
-//                    saveNSSIId(nssi, sliceTaskParams)
-                    Map<String, Object> sliceProfile = getSliceProfile(domain, execution, oofSliceProfile)
-                    saveSliceProfile(execution, domain, sliceProfile)
-
-                }
-            }
-        }
+    /**
+     * prepare the params for decompose nsst
+     * @param execution
+     */
+    public void prepareDecomposeNSST(DelegateExecution execution) {
+
+        List<TemplateInfo> nsstInfos = execution.getVariable("nsstInfos") as List<TemplateInfo>
+        int index = execution.getVariable("currentNsstIndex") as Integer
+
+        String modelUuid = nsstInfos.get(index).getUUID()
+        String modelInvariantUuid = nsstInfos.get(index).getInvariantUUID()
+
+        String serviceModelInfo = """{
+            "modelInvariantUuid":"${modelInvariantUuid}",
+            "modelUuid":"${modelUuid}",
+            "modelVersion":""
+             }"""
+        execution.setVariable("nsstServiceModelInfo", serviceModelInfo)
+
     }
 
-    private void processSharedNSISolutions(Map solutions, DelegateExecution execution) {
-        String nsiName, nsiInstanceId, nssiId, nssiName
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-
-        Map sharedNSIsolution = ((List) solutions.get("sharedNSISolutions"))?.get(0)
-        nsiInstanceId = sharedNSIsolution.getOrDefault("NSIId", "")
-        nsiName = sharedNSIsolution.getOrDefault("NSIName", "")
-        sliceTaskParams.setSuggestNsiId(nsiInstanceId)
-        sliceTaskParams.setSuggestNsiName(nsiName)
-
-        //Temporary modification
-        List NSSIs = sharedNSIsolution.get("NSSIs")
-        for(Map nssi : NSSIs){
-            Map oofSliceProfile = ((List)nssi.get("sliceProfile"))?.get(0)
-            String domain = oofSliceProfile.getOrDefault("domainType","")
-            nssiId = nssi.getOrDefault("NSSIId","")
-            nssiName = nssi.getOrDefault("NSSIName","")
-            saveNSSIId(domain, nssiId, nssiName,execution)
-            Map<String, Object> sliceProfile = getSliceProfile(domain, execution, oofSliceProfile)
-            saveSliceProfile(execution, domain, sliceProfile)
-            logger.debug("OOF sharedNSISolution SliceProfile:"+oofSliceProfile.toString()+",domain:${domain}")
-            logger.debug("OOF sharedNSISolution nsiInstanceId:${nsiInstanceId}, nsiName:${nsiName}, nssiId:${nssiId}, nssiName:${nssiName}")
+    /**
+     * process the result of NSST Decomposition
+     * @param execution
+     */
+    public void processDecompositionNSST(DelegateExecution execution) {
+
+        List<ServiceDecomposition> nsstServiceDecompositions =
+                execution.getVariable("nsstServiceDecompositions") as List<ServiceDecomposition>
+
+        ServiceDecomposition nsstServiceDecomposition =
+                execution.getVariable("nsstServiceDecomposition") as ServiceDecomposition
+
+        nsstServiceDecompositions.add(nsstServiceDecomposition)
+
+        execution.setVariable("nsstServiceDecompositions", nsstServiceDecompositions)
+
+
+
+
+        int num = execution.getVariable("maxNsstIndex") as Integer
+        int index = execution.getVariable("currentNsstIndex") as Integer
+
+        execution.setVariable("currentNsstIndex", index + 1)
+
+        if (index >= num) {
+            execution.setVariable("nsstHandleContinue", false)
+        } else {
+            execution.setVariable("nsstHandleContinue", true)
         }
+
     }
 
-    private void parseServiceProfile(DelegateExecution execution) {
-        logger.debug("Start parseServiceProfile")
-        String serviceType = execution.getVariable("serviceType")
-        Map<String, Object> serviceProfile = execution.getVariable("serviceProfile")
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-        // set sliceProfile for three domains
-        if(!sliceTaskParams.getSliceProfileAn()){
-            Map<String, Object> sliceProfileAn = getSliceProfile( "AN", execution,null)
-            saveSliceProfile(execution,"AN",sliceProfileAn)
-        }
+    /**
+     * set nsst info to sliceTaskParams by type
+     * @param execution
+     */
+    public void handleNsstByType(DelegateExecution execution) {
+        //todo: set to sliceTaskParams by type
 
-        if(!sliceTaskParams.getSliceProfileTn()){
-            Map<String, Object> sliceProfileTn = getSliceProfile( "TN", execution,null)
-            saveSliceProfile(execution,"TN",sliceProfileTn)
-        }
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+
+        List<ServiceDecomposition> nsstServiceDecompositions =
+                execution.getVariable("nsstServiceDecompositions") as List<ServiceDecomposition>
+
+        List<SubnetCapability> subnetCapabilities = new ArrayList<>()
+
+
+
+        for (ServiceDecomposition serviceDecomposition : nsstServiceDecompositions) {
+            //todo:
+            SubnetCapability subnetCapability = new SubnetCapability()
 
-        if(!sliceTaskParams.getSliceProfileCn()){
-            Map<String, Object> sliceProfileCn = getSliceProfile( "CN", execution,null, )
-           saveSliceProfile(execution,"CN",sliceProfileCn)
+            handleByType(execution, serviceDecomposition, sliceParams, subnetCapability)
+
+            subnetCapabilities.add(subnetCapability)
         }
 
-        logger.debug("Finish parseServiceProfile")
+        execution.setVariable("sliceTaskParams", sliceParams)
+        execution.setVariable("subnetCapabilities", subnetCapabilities)
     }
 
-    private void saveSliceProfile(DelegateExecution execution, String domain, Map<String, Object> sliceProfile){
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-        if(domain.equalsIgnoreCase("AN")){
-            execution.setVariable("sliceProfileAn", sliceProfile)
-            sliceTaskParams.setSliceProfileAn(sliceProfile)
-            logger.debug("sliceProfileAn: " + sliceProfile)
+    private void handleByType(DelegateExecution execution, ServiceDecomposition serviceDecomposition,
+                              SliceTaskParamsAdapter sliceParams, SubnetCapability subnetCapability) {
+        //todo:
+        String domainType = ""
+        ModelInfo modelInfo = serviceDecomposition.getModelInfo()
+        String vendor = serviceDecomposition.getServiceRole()
+        SubnetType subnetType
+
+        switch (domainType) {
+            case "tn_bh":
+                subnetType = SubnetType.TN_BH
+                sliceParams.tnBHSliceTaskInfo.vendor = vendor
+                sliceParams.tnBHSliceTaskInfo.subnetType = subnetType
+                sliceParams.tnBHSliceTaskInfo.networkType = subnetType.networkType
+                sliceParams.tnBHSliceTaskInfo.NSSTInfo.UUID = modelInfo.getModelUuid()
+                sliceParams.tnBHSliceTaskInfo.NSSTInfo.invariantUUID = modelInfo.getModelInvariantUuid()
+                sliceParams.tnBHSliceTaskInfo.NSSTInfo.name = modelInfo.getModelName()
+
+                break
+            case "tn_mh":
+                subnetType = SubnetType.TN_MH
+                sliceParams.tnMHSliceTaskInfo.vendor = vendor
+                sliceParams.tnMHSliceTaskInfo.subnetType = subnetType
+                sliceParams.tnMHSliceTaskInfo.networkType = subnetType.networkType
+                sliceParams.tnMHSliceTaskInfo.NSSTInfo.UUID = modelInfo.getModelUuid()
+                sliceParams.tnMHSliceTaskInfo.NSSTInfo.invariantUUID = modelInfo.getModelInvariantUuid()
+                sliceParams.tnMHSliceTaskInfo.NSSTInfo.name = modelInfo.getModelName()
+
+                break
+            case "an_nf":
+                subnetType = SubnetType.AN_NF
+                sliceParams.anSliceTaskInfo.vendor = vendor
+                sliceParams.anSliceTaskInfo.subnetType = subnetType
+                sliceParams.anSliceTaskInfo.networkType = subnetType.networkType
+                sliceParams.anSliceTaskInfo.NSSTInfo.UUID = modelInfo.getModelUuid()
+                sliceParams.anSliceTaskInfo.NSSTInfo.invariantUUID = modelInfo.getModelInvariantUuid()
+                sliceParams.anSliceTaskInfo.NSSTInfo.name = modelInfo.getModelName()
+                break
+            case "cn":
+                subnetType = SubnetType.CN
+                sliceParams.cnSliceTaskInfo.vendor = vendor
+                sliceParams.cnSliceTaskInfo.subnetType = subnetType
+                sliceParams.cnSliceTaskInfo.networkType = subnetType.networkType
+                sliceParams.cnSliceTaskInfo.NSSTInfo.UUID = modelInfo.getModelUuid()
+                sliceParams.cnSliceTaskInfo.NSSTInfo.invariantUUID = modelInfo.getModelInvariantUuid()
+                sliceParams.cnSliceTaskInfo.NSSTInfo.name = modelInfo.getModelName()
+                break
+            default:
+                subnetType = null
+                break
+
+        //todo
+
         }
-        else if(domain.equalsIgnoreCase("TN")){
-            execution.setVariable("sliceProfileTn", sliceProfile)
-            sliceTaskParams.setSliceProfileTn(sliceProfile)
-            logger.debug("sliceProfileTn: " + sliceProfile)
+        if (subnetType == null) {
+            //todo: throw error
+            return
         }
-        else if(domain.equalsIgnoreCase("CN")){
-            execution.setVariable("sliceProfileCn", sliceProfile)
-            sliceTaskParams.setSliceProfileCn(sliceProfile)
-            logger.debug("sliceProfileCn: " + sliceProfile)
+        String response = querySubnetCapability(execution, vendor, subnetType)
+        ResponseEntity responseEntity = objectMapper.readValue(response, ResponseEntity.class)
+
+        Map<String, Object> result = responseEntity.getBody() as Map
+        for (Map.Entry<String, Object> entry : result.entrySet()) {
+            subnetCapability.setDomainType(entry.getKey())
+            subnetCapability.setCapabilityDetails(entry.getValue())
         }
     }
 
-    private void saveNSSIId(String domain, String nssiId, String nssiName, DelegateExecution execution) {
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-        if(domain.equalsIgnoreCase("AN")){
-            sliceTaskParams.setAnSuggestNssiId(nssiId)
-            sliceTaskParams.setAnSuggestNssiName(nssiName)
-        }
-        else if(domain.equalsIgnoreCase("CN")){
-            sliceTaskParams.setCnSuggestNssiId(nssiId)
-            sliceTaskParams.setCnSuggestNssiName(nssiName)
-        }
-        else if(domain.equalsIgnoreCase("TN")){
-            sliceTaskParams.setTnSuggestNssiId(nssiId)
-            sliceTaskParams.setTnSuggestNssiName(nssiName)
-        }
+    /**
+     * query Subnet Capability of TN AN CN
+     * @param execution
+     */
+    private String querySubnetCapability(DelegateExecution execution, String vendor, SubnetType subnetType) {
+
+        String strRequest = objectMapper.writeValueAsString(buildQuerySubnetCapRequest(vendor, subnetType))
+
+        String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_SUB_NET_CAPABILITY, strRequest)
+        return response
     }
 
-    private Map getSliceProfile(String domain, DelegateExecution execution, Map<String, Object> oofSliceProfile) {
-        String profileMapStr
-        Map<String, Object> serviceProfile = execution.getVariable("serviceProfile")
-        Integer domainLatency = (Integer) serviceProfile.get("latency")/3
-
-        if(domain.equalsIgnoreCase("AN")){
-            profileMapStr = """ {
-                    "latency": ${domainLatency}, 
-                    "sNSSAI": "sNSSAI", 
-                    "uEMobilityLevel": "uEMobilityLevel", 
-                    "coverageAreaTAList": "coverageAreaTAList", 
-                    "5QI": 100
-                }"""
-        }
-        else if(domain.equalsIgnoreCase("TN")){
-            profileMapStr =""" {
-                    "latency":${domainLatency},
-                    "sNSSAI":"sNSSAI", 
-                    "e2eLatency":"latency", 
-                    "bandwidth": 100
-                }"""
-        }
-        else if(domain.equalsIgnoreCase("CN")){
-            profileMapStr = """ {
-                    "areaTrafficCapDL":"areaTrafficCapDL",
-                    "maxNumberofUEs":"maxNumberofUEs",
-                    "latency":${domainLatency},
-                    "expDataRateUL":"expDataRateUL", 
-                    "sNSSAI":"sNSSAI", 
-                    "areaTrafficCapUL":"areaTrafficCapUL",
-                    "uEMobilityLevel":"uEMobilityLevel", 
-                    "expDataRateDL":"expDataRateDL",  
-                    "activityFactor":"activityFactor",
-                    "resourceSharingLevel":"resourceSharingLevel"
-                }"""
-        }
+    /**
+     * build request body for querying Subnet Capability
+     * @param vendor
+     * @param subnetTypes
+     * @param networkType
+     * @return
+     */
+    private static String buildQuerySubnetCapRequest(String vendor, SubnetType subnetType) {
+        NssmfAdapterNBIRequest request = new NssmfAdapterNBIRequest()
+
+        List<String> subnetTypes =  new ArrayList<>()
+        subnetTypes.add(subnetType.subnetType)
+        Map<String, Object> paramMap = new HashMap()
+        paramMap.put("subnetTypes", subnetTypes)
+
+        request.setSubnetCapabilityQuery(objectMapper.writeValueAsString(paramMap))
+
+        EsrInfo esrInfo = new EsrInfo()
+        esrInfo.setVendor(vendor)
+        esrInfo.setNetworkType(subnetType.networkType)
+
+        request.setEsrInfo(esrInfo)
+
+        String strRequest = objectMapper.writeValueAsString(request)
+
+        return strRequest
+    }
+
+    /**
+     * todo: need rewrite
+     * prepare select nsi request
+     * @param execution
+     */
+    public void preNSIRequest(DelegateExecution execution) {
 
-           logger.debug("Profile map for " + domain + " : " + profileMapStr)
-        Map<String, Object> profileMaps = objectMapper.readValue(profileMapStr.trim().replaceAll(" ", ""), new TypeReference<Map<String, String>>(){})
-        Map<String, Object> sliceProfile = [:]
-        for (Map.Entry<String, String> profileMap : profileMaps) {
-            String key = profileMap.key
-            String value = profileMaps.get(key)
-            if(null != oofSliceProfile && oofSliceProfile.keySet().contains(key)){
-                sliceProfile.put(key, oofSliceProfile.get(key))
-                logger.debug("Get from oof, key:${key}, value: ${oofSliceProfile.get(key)}")
+        String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution)
+        logger.debug( "get NSI option OOF Url: " + urlString)
+
+
+        String requestId = execution.getVariable("msoRequestId")
+        String messageType = "NSISelectionResponse"
+
+        execution.setVariable("nsiSelectionUrl", "/api/oof/selection/nsi/v1")
+        execution.setVariable("nsiSelection_messageType", messageType)
+        execution.setVariable("nsiSelection_correlator", requestId)
+        String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution)
+        execution.setVariable("nsiSelection_timeout", timeout)
+
+        SliceTaskParamsAdapter sliceParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+
+        Map<String, Object> profileInfo = sliceParams.getServiceProfile()
+        TemplateInfo nstInfo = sliceParams.getNSTInfo()
+
+        List<TemplateInfo> nsstInfos = execution.getVariable("nsstInfos") as List<TemplateInfo>
+
+        List<SubnetCapability> subnetCapabilities =
+                execution.getVariable("subnetCapabilities") as List<SubnetCapability>
+
+        String oofRequest = oofUtils.buildSelectNSIRequest(requestId, nstInfo, nsstInfos,
+                messageType, profileInfo, subnetCapabilities, timeout as Integer)
+
+        execution.setVariable("nsiSelection_oofRequest", oofRequest)
+        logger.debug("Sending request to OOF: " + oofRequest)
+    }
+
+    /**
+     * todo: need rewrite
+     * process select nsi response
+     * @param execution
+     */
+    public void processNSIResp(DelegateExecution execution) {
+
+        SliceTaskParamsAdapter sliceTaskParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
+
+        String OOFResponse = execution.getVariable("nsiSelection_oofResponse")
+        logger.debug("NSI OOFResponse is: " + OOFResponse)
+        execution.setVariable("OOFResponse", OOFResponse)
+        //This needs to be changed to derive a value when we add policy to decide the solution options.
+
+        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"
+
+        if (solution != null) {
+            if (isSharable && solution.get("existingNSI")) {
+                //sharedNSISolution
+                processSharedNSI(solution, sliceTaskParams)
             }
-            else if(serviceProfile.keySet().contains(value)){
-                sliceProfile.put(key, serviceProfile.get(value))
+            else if(solution.containsKey("newNSISolution")) {
+                processNewNSI(solution, sliceTaskParams)
             }
-            else{
-                sliceProfile.put(key, profileMaps.get(key))
+        }
+        execution.setVariable("sliceTaskParams", sliceTaskParams)
+        //logger.debug("sliceTaskParams: " + sliceTaskParams.convertToJson())
+        logger.debug("*** Completed options Call to OOF ***")
+    }
+
+    private void processSharedNSI(Map<String, Object> solution, SliceTaskParamsAdapter sliceParams) {
+        Map<String, Object> sharedNSISolution = solution.get("sharedNSISolution") as Map
+
+        String nsiId = sharedNSISolution.get("NSIId")
+        String nsiName = sharedNSISolution.get("NSIName")
+        sliceParams.setSuggestNsiId(nsiId)
+        sliceParams.setSuggestNsiName(nsiName)
+    }
+
+    private void processNewNSI(Map<String, Object> solution, SliceTaskParamsAdapter sliceParams) {
+        Map<String, Object> newNSISolution = solution.get("newNSISolution") as Map
+        List<Map> sliceProfiles = newNSISolution.get("sliceProfiles") as List<Map>
+        for (Map sliceProfile : sliceProfiles) {
+            String domainType = sliceProfile.get("domainType")
+            switch (domainType.toLowerCase()) {
+                case "tn-bh":
+                    sliceParams.tnBHSliceTaskInfo.sliceProfile = sliceProfile as TnSliceProfile
+                    break
+                case "an-nf":
+                    sliceParams.anSliceTaskInfo.sliceProfile = sliceProfile as AnSliceProfile
+                    break
+                case "cn":
+                    sliceParams.cnSliceTaskInfo.sliceProfile = sliceProfile as CnSliceProfile
+                    break
+                default:
+                    break
             }
+
+            //todo
+
         }
-        return sliceProfile
     }
 
-    void processDecomposition(DelegateExecution execution){
-        logger.debug("Start processDecomposition")
+    /**
+     * get NSSI Selection Capability for AN
+     * @param execution
+     */
+    public void getNSSISelectionCap4AN(DelegateExecution execution) {
+
+        def vendor = execution.getVariable("vendor") as String
+
+        String strRequest = buildNSSISelectionReq(vendor, NetworkType.ACCESS)
 
-        ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition")
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-        String nstName = serviceDecomposition.getModelInfo().getModelName()
-        String nstId = serviceDecomposition.getModelInfo().getModelUuid()
-        sliceTaskParams.setNstName(nstName)
-        sliceTaskParams.setNstId(nstId)
+        String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_NSSI_SELECTION_CAPABILITY, strRequest)
 
-        logger.debug("End processDecomposition")
+        Map<String, Object> resMap = objectMapper.readValue(response, Map.class)
+
+        String selection = resMap.get("selection")
+
+
+        if ("NSMF".equalsIgnoreCase(selection)) {
+            execution.setVariable("NEED_AN_NSSI_SELECTION", true)
+        }
     }
 
+    /**
+     * get NSSI Selection Capability for TN
+     * @param execution
+     */
+    public void getNSSISelectionCap4TN(DelegateExecution execution) {
 
-    void prepareNSTDecompose(DelegateExecution execution) {
+        def vendor = execution.getVariable("vendor") as String
 
-        String modelUuid = execution.getVariable("nstModelUuid")
-        String modelInvariantUuid = execution.getVariable("nstModelInvariantUuid")
+        String strRequest = buildNSSISelectionReq(vendor, NetworkType.TRANSPORT)
 
-        String serviceModelInfo = """{
-            "modelInvariantUuid":"${modelInvariantUuid}",
-            "modelUuid":"${modelUuid}",
-            "modelVersion":""
-             }"""
-        execution.setVariable("serviceModelInfo", serviceModelInfo)
+        String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_NSSI_SELECTION_CAPABILITY, strRequest)
+
+        Map<String, Object> resMap = objectMapper.readValue(response, Map.class)
+
+        String selection = resMap.get("selection")
+
+        if ("NSMF".equalsIgnoreCase(selection)) {
+            execution.setVariable("NEED_TN_NSSI_SELECTION", true)
+        }
     }
 
-    void prepareNSSTDecompose(DelegateExecution execution) {
-        Boolean isMoreNSSTtoProcess = false
-        Integer maxNSST = execution.getVariable("maxNSST")
-        Integer currentNSST=execution.getVariable("currentNSST")
-        List<String> nsstModelUUIDList = new ArrayList<>()
-        nsstModelUUIDList = execution.getVariable("nsstModelUUIDList")
-        String modelUuid = nsstModelUUIDList.get(currentNSST)
-        String serviceModelInfo = """{
-            "modelInvariantUuid":"",
-            "modelUuid":"${modelUuid}",
-            "modelVersion":""
-             }"""
-        execution.setVariable("serviceModelInfo", serviceModelInfo)
-        currentNSST=currentNSST+1
-        if(currentNSST<maxNSST)
-            isMoreNSSTtoProcess=true
-        execution.setVariable("isMoreNSSTtoProcess",isMoreNSSTtoProcess)
-        execution.setVariable("maxNSST",maxNSST)
-        execution.setVariable("currentNSST",currentNSST)
+    /**
+     * get NSSI Selection Capability for CN
+     * @param execution
+     */
+    public void getNSSISelectionCap4CN(DelegateExecution execution) {
+
+        def vendor = execution.getVariable("vendor") as String
+
+        String strRequest = buildNSSISelectionReq(vendor, NetworkType.CORE)
+
+        String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_NSSI_SELECTION_CAPABILITY, strRequest)
+
+        Map<String, Object> resMap = objectMapper.readValue(response, Map.class)
+
+        String selection = resMap.get("selection")
+
+        if ("NSMF".equalsIgnoreCase(selection)) {
+            execution.setVariable("NEED_CN_NSSI_SELECTION", true)
+        }
     }
 
+    /**
+     * build NSSI Selection Capability Request body to nssmf adapter
+     * @param vendor
+     * @param networkType
+     * @return
+     */
+    private static String buildNSSISelectionReq(String vendor, NetworkType networkType) {
+        NssmfAdapterNBIRequest request = new NssmfAdapterNBIRequest()
+        EsrInfo esrInfo = new EsrInfo()
+        esrInfo.setVendor(vendor)
+        esrInfo.setNetworkType(networkType)
+        request.setEsrInfo(esrInfo)
+
+        return objectMapper.writeValueAsString(request)
+    }
+
+    /**
+     * if exist nssi need to select?
+     * @param execution
+     */
+    public void handleNssiSelect(DelegateExecution execution) {
 
-    void prepareNSSTlistfromNST(DelegateExecution execution) {
-        //Need to update this part from decomposition.
-        logger.trace("Enter prepareNSSTlistfromNST()")
-        Boolean isMoreNSSTtoProcess = false
-        ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition")
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-        String nstName = serviceDecomposition.getModelInfo().getModelName()
-        sliceTaskParams.setNstName(nstName)
-        String nstId = serviceDecomposition.getModelInfo().getModelUuid()
-        sliceTaskParams.setNstId(nstId)
-        execution.setVariable("sliceTaskParams",sliceTaskParams)
-
-        List<ServiceProxy> proxyList = serviceDecomposition.getServiceProxy()
-        List<String> nsstModelUUIDList = new ArrayList<>()
-        for(ServiceProxy serviceProxy:proxyList)
-            nsstModelUUIDList.add(serviceProxy.getSourceModelUuid())
-        execution.setVariable("nsstModelUUIDList",nsstModelUUIDList)
-        Integer maxNSST = nsstModelUUIDList.size()
-        Integer currentNSST=0
-        execution.setVariable("maxNSST",maxNSST)
-        execution.setVariable("currentNSST",currentNSST)
-        if(currentNSST<maxNSST)
-            isMoreNSSTtoProcess=true
-        execution.setVariable("isMoreNSSTtoProcess",isMoreNSSTtoProcess)
-        logger.trace("Exit prepareNSSTlistfromNST()")
+        SliceTaskParamsAdapter sliceTaskParams =
+                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
 
+        //todo
     }
 
-    void getNSSTOption(DelegateExecution execution) {
-        ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition")
+    /**
+     * todo: need rewrite
+     * prepare select nssi request
+     * @param execution
+     */
+    public void preNSSIRequest(DelegateExecution execution) {
+
         String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution)
-        String globalSubscriberId = execution.getVariable("globalSubscriberId")
-        String serviceType = execution.getVariable("subscriptionServiceType")
-        String nssiInstanceId =""
-        String nssiName =""
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
         logger.debug( "get NSI option OOF Url: " + urlString)
-        boolean isNSISuggested = false
-        execution.setVariable("isNSISuggested",isNSISuggested)
-
-        //Prepare auth for OOF - Begin
-        def authHeader = ""
-        String basicAuth = UrnPropertiesReader.getVariable("mso.oof.auth", execution)
-        String msokey = UrnPropertiesReader.getVariable("mso.msoKey", execution)
-
-        String basicAuthValue = utils.encrypt(basicAuth, msokey)
-        if (basicAuthValue != null) {
-            logger.debug( "Obtained BasicAuth username and password for OOF: " + basicAuthValue)
-            try {
-                authHeader = utils.getBasicAuth(basicAuthValue, msokey)
-                execution.setVariable("BasicAuthHeaderValue", authHeader)
-            } catch (Exception ex) {
-                logger.debug( "Unable to encode username and password string: " + ex)
-                exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Internal Error - Unable to " +
-                        "encode username and password string")
-            }
-        } else {
-            logger.debug( "Unable to obtain BasicAuth - BasicAuth value null")
-            exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Internal Error - BasicAuth " +
-                    "value null")
-        }
-        //Prepare auth for OOF - End
-        //Prepare send request to OOF - Begin
+
+        boolean isNSISuggested = true
+        execution.setVariable("isNSISuggested", isNSISuggested)
         String requestId = execution.getVariable("msoRequestId")
-        Map<String, Object> profileInfo = execution.getVariable("serviceProfile")
-        String nsstModelInvariantUuid = serviceDecomposition.getModelInfo().getModelInvariantUuid()
-        String nsstModelUuid = serviceDecomposition.getModelInfo().getModelUuid()
-        String nsstInfo = """"NSSTInfo": {
-        "invariantUUID":"${nsstModelInvariantUuid}",
-        "UUID":"${nsstModelUuid}"
-         }"""
-        String oofRequest = oofUtils.buildSelectNSSIRequest(execution, requestId, nsstInfo ,profileInfo)
+        String messageType = "NSISelectionResponse"
 
+        Map<String, Object> profileInfo = execution.getVariable("serviceProfile") as Map
+        Map<String, Object> nstSolution = execution.getVariable("nstSolution") as Map
+        logger.debug("Get NST selection from OOF: " + nstSolution.toString())
+        String nstInfo = """{
+            "modelInvariantId":"${nstSolution.invariantUUID}",
+            "modelVersionId":"${nstSolution.UUID}",
+            "modelName":"${nstSolution.NSTName}"
+         }"""
 
-        URL url = new URL(urlString+"/api/oof/v1/selectnssi")
-        HttpClient httpClient = new HttpClientFactory().newJsonClient(url, ONAPComponents.OOF)
-        httpClient.addAdditionalHeader("Authorization", authHeader)
-        Response httpResponse = httpClient.post(oofRequest)
+        execution.setVariable("nsiSelectionUrl", "/api/oof/selection/nsi/v1")
+        execution.setVariable("nsiSelection_messageType", messageType)
+        execution.setVariable("nsiSelection_correlator", requestId)
+        String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution)
+        execution.setVariable("nsiSelection_timeout", timeout)
 
-        int responseCode = httpResponse.getStatus()
-        logger.debug("OOF sync response code is: " + responseCode)
+        //todo
+        String oofRequest = oofUtils.buildSelectNSIRequest(requestId, nstInfo, messageType, profileInfo)
 
-        if(responseCode != 200){
-            exceptionUtil.buildAndThrowWorkflowException(execution, responseCode, "Received a Bad Sync Response from OOF.")
-        }
+        execution.setVariable("nsiSelection_oofRequest", oofRequest)
+        logger.debug("Sending request to OOF: " + oofRequest)
+    }
 
-        if(httpResponse.hasEntity()){
-            String OOFResponse = httpResponse.readEntity(String.class)
-            execution.setVariable("OOFResponse", OOFResponse)
-            nssiInstanceId = jsonUtil.getJsonValue(OOFResponse, "NSSIIInfo.NSSIID")
-            nssiName = jsonUtil.getJsonValue(OOFResponse, "NSSIInfo.NSSIName")
-            execution.setVariable("nssiInstanceId",nssiInstanceId)
-            execution.setVariable("nssiName",nssiName)
-        }
-        if(isBlank(nssiInstanceId)){
-            logger.debug( "There is no valid NSST suggested by OOF.")
-        }else
-        {
-            try {
-                AAIResourcesClient resourceClient = new AAIResourcesClient()
-                AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, nssiInstanceId)
-                AAIResultWrapper wrapper = resourceClient.get(serviceInstanceUri, NotFoundException.class)
-                Optional<org.onap.aai.domain.yang.ServiceInstance> si = wrapper.asBean(org.onap.aai.domain.yang.ServiceInstance.class)
-                org.onap.aai.domain.yang.ServiceInstance nssi = si.get()
-
-                String domain = nssi.getEnvironmentContext().toString().toUpperCase()
-                switch (domain) {
-                    case "AN":
-                        sliceTaskParams.setAnSuggestNssiId(nssi.getServiceInstanceId())
-                        sliceTaskParams.setAnSuggestNssiName(nssi.getServiceInstanceName())
-                        break
-                    case "CN":
-                        sliceTaskParams.setCnSuggestNssiId(nssi.getServiceInstanceId())
-                        sliceTaskParams.setCnSuggestNssiName(nssi.getServiceInstanceName())
-                        break
-                    case "TN":
-                        sliceTaskParams.setTnSuggestNssiId(nssi.getServiceInstanceId())
-                        sliceTaskParams.setTnSuggestNssiName(nssi.getServiceInstanceName())
-                        break
-                    default:
-                        break
-                }
-            }catch(NotFoundException e)
-            {
-                logger.debug("NSSI Service Instance not found in AAI: " + nssiInstanceId)
-            }catch(Exception e)
-            {
-                logger.debug("NSSI Service Instance not found in AAI: " + nssiInstanceId)
+    /**
+     * process select nssi response
+     * todo: unfinished
+     * @param execution
+     */
+    public void processNSSIResp(DelegateExecution execution) {
+
+        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") as SliceTaskParams
+        String OOFResponse = execution.getVariable("nsiSelection_oofResponse")
+        logger.debug("NSI OOFResponse is: " + OOFResponse)
+        execution.setVariable("OOFResponse", OOFResponse)
+        //This needs to be changed to derive a value when we add policy to decide the solution options.
+
+        Map<String, Object> resMap = objectMapper.readValue(OOFResponse, Map.class)
+        List<Map<String, Object>> nsiSolutions = (List<Map<String, Object>>) resMap.get("solutions")
+        Map<String, Object> solutions = nsiSolutions.get(0)
+
+        String resourceSharingLevel = execution.getVariable("resourceSharingLevel")
+        Boolean isSharable = resourceSharingLevel == "shared"
+
+        if (solutions != null) {
+            if (isSharable && solutions.get("existingNSI")) {
+                //sharedNSISolution
+                //processSharedNSISolutions(solutions, execution)
+            }
+            else if(solutions.containsKey("newNSISolution")) {
+                //processNewNSISolutions(solutions, execution)
             }
         }
-        logger.debug("Prepare NSSI option completed ")
+        execution.setVariable("sliceTaskParams", sliceTaskParams)
+        logger.debug("sliceTaskParams: "+sliceTaskParams.convertToJson())
+        logger.debug("*** Completed options Call to OOF ***")
+
+        logger.debug("start parseServiceProfile")
+        //parseServiceProfile(execution)
+        logger.debug("end parseServiceProfile")
     }
+
+
 }
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOptionV2.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateSliceServiceOptionV2.groovy
deleted file mode 100644 (file)
index ca26217..0000000
+++ /dev/null
@@ -1,907 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- # Copyright (c) 2019, CMCC Technologies Co., Ltd.
- #
- # Licensed under the Apache License, Version 2.0 (the "License")
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- #       http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.bpmn.infrastructure.scripts
-
-import com.fasterxml.jackson.core.type.TypeReference
-import com.fasterxml.jackson.databind.ObjectMapper
-import org.apache.commons.lang3.StringUtils
-import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.onap.aai.domain.yang.ServiceInstance
-import org.onap.aaiclient.client.aai.AAIObjectType
-import org.onap.aaiclient.client.aai.AAIResourcesClient
-import org.onap.aaiclient.client.aai.entities.AAIResultWrapper
-import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
-import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
-import org.onap.logging.filter.base.ONAPComponents
-import org.onap.so.beans.nsmf.*
-import org.onap.so.beans.nsmf.oof.SubnetCapability
-import org.onap.so.beans.nsmf.oof.TemplateInfo
-import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
-import org.onap.so.bpmn.common.scripts.ExceptionUtil
-import org.onap.so.bpmn.common.scripts.NssmfAdapterUtils
-import org.onap.so.bpmn.common.scripts.OofUtils
-import org.onap.so.bpmn.core.UrnPropertiesReader
-import org.onap.so.bpmn.core.domain.ServiceDecomposition
-import org.onap.so.bpmn.core.domain.ServiceProxy
-import org.onap.so.bpmn.core.json.JsonUtils
-import org.onap.so.client.HttpClient
-import org.onap.so.client.HttpClientFactory
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
-
-import javax.ws.rs.NotFoundException
-import javax.ws.rs.core.Response
-
-class DoCreateSliceServiceOptionV2 extends AbstractServiceTaskProcessor{
-
-    private static final Logger logger = LoggerFactory.getLogger( DoCreateSliceServiceOptionV2.class)
-
-    ExceptionUtil exceptionUtil = new ExceptionUtil()
-
-    JsonUtils jsonUtil = new JsonUtils()
-
-    OofUtils oofUtils = new OofUtils()
-
-    ObjectMapper objectMapper = new ObjectMapper()
-
-    void preProcessRequest (DelegateExecution execution) {
-    }
-
-
-    /**
-     * prepare select nsi request
-     * @param execution
-     */
-    void prepareSelectNSIRequest(DelegateExecution execution) {
-
-        String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution)
-        logger.debug( "get NSI option OOF Url: " + urlString)
-
-        boolean isNSISuggested = true
-        execution.setVariable("isNSISuggested",isNSISuggested)
-        String requestId = execution.getVariable("msoRequestId")
-        String messageType = "NSISelectionResponse"
-
-        Map<String, Object> profileInfo = execution.getVariable("serviceProfile")
-        Map<String, Object> nstSolution = execution.getVariable("nstSolution")
-        logger.debug("Get NST selection from OOF: " + nstSolution.toString())
-        String nstInfo = """{
-            "modelInvariantId":"${nstSolution.invariantUUID}",
-            "modelVersionId":"${nstSolution.UUID}",
-            "modelName":"${nstSolution.NSTName}"
-         }"""
-
-        execution.setVariable("nsiSelectionUrl", "/api/oof/selection/nsi/v1")
-        execution.setVariable("nsiSelection_messageType",messageType)
-        execution.setVariable("nsiSelection_correlator",requestId)
-        String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution);
-        execution.setVariable("nsiSelection_timeout",timeout)
-        String oofRequest = oofUtils.buildSelectNSIRequest(requestId, nstInfo,messageType, profileInfo)
-        execution.setVariable("nsiSelection_oofRequest",oofRequest)
-        logger.debug("Sending request to OOF: " + oofRequest)
-    }
-
-    /**
-     * process select nsi response
-     * @param execution
-     */
-    void processOOFResponse(DelegateExecution execution) {
-
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") as SliceTaskParams
-        String OOFResponse = execution.getVariable("nsiSelection_oofResponse")
-        logger.debug("NSI OOFResponse is: " + OOFResponse)
-        execution.setVariable("OOFResponse", OOFResponse)
-        //This needs to be changed to derive a value when we add policy to decide the solution options.
-
-        Map<String, Object> resMap = objectMapper.readValue(OOFResponse, Map.class)
-        List<Map<String, Object>> nsiSolutions = (List<Map<String, Object>>) resMap.get("solutions")
-        Map<String, Object> solutions = nsiSolutions.get(0)
-
-        String resourceSharingLevel = execution.getVariable("resourceSharingLevel")
-        Boolean isSharable = resourceSharingLevel == "shared"
-
-        if (solutions != null) {
-            if (isSharable && solutions.get("existingNSI")) {
-                //sharedNSISolution
-                processSharedNSISolutions(solutions, execution)
-            }
-            else if(solutions.containsKey("newNSISolution")) {
-                processNewNSISolutions(solutions, execution)
-            }
-        }
-        execution.setVariable("sliceTaskParams", sliceTaskParams)
-        logger.debug("sliceTaskParams: "+sliceTaskParams.convertToJson())
-        logger.debug("*** Completed options Call to OOF ***")
-
-        logger.debug("start parseServiceProfile")
-        parseServiceProfile(execution)
-        logger.debug("end parseServiceProfile")
-    }
-
-
-    private void processNewNSISolutions(Map solutions, DelegateExecution execution) {
-        int index = 0
-        List<Map> newNSISolutions = solutions.get("newNSISolution")
-        List<Map> NSSImap = new ArrayList<>()
-        if (newNSISolutions != null && newNSISolutions.size() > 0) {
-            NSSImap = newNSISolutions.get(index).get("NSSISolutions") as List<Map>
-            for (Map nssi : NSSImap) {
-                Map oofSliceProfile = nssi.get("sliceProfile")
-                String domain = oofSliceProfile.getOrDefault("domainType","")
-                logger.debug("OOF newNSISolutions SliceProfile: " +oofSliceProfile.toString()+",domain:${domain}")
-                if(null != domain){
-                    //TODO
-//                    def nssiSolution = nssi.get("NSSISolution") as Map<String, ?>
-//                    String nssiName = nssiSolution.getOrDefault("NSSIName", "")
-//                    String nssiId = nssiSolution.getOrDefault("NSSIId", "")
-//                    saveNSSIId(nssi, sliceTaskParams)
-                    Map<String, Object> sliceProfile = getSliceProfile(domain, execution, oofSliceProfile)
-                    saveSliceProfile(execution, domain, sliceProfile)
-
-                }
-            }
-        }
-    }
-
-    private void processSharedNSISolutions(Map solutions, DelegateExecution execution) {
-        String nsiName, nsiInstanceId, nssiId, nssiName
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-
-        Map sharedNSIsolution = ((List) solutions.get("sharedNSISolutions"))?.get(0)
-        nsiInstanceId = sharedNSIsolution.getOrDefault("NSIId", "")
-        nsiName = sharedNSIsolution.getOrDefault("NSIName", "")
-        sliceTaskParams.setSuggestNsiId(nsiInstanceId)
-        sliceTaskParams.setSuggestNsiName(nsiName)
-
-        //Temporary modification
-        List NSSIs = sharedNSIsolution.get("NSSIs")
-        for(Map nssi : NSSIs){
-            Map oofSliceProfile = ((List)nssi.get("sliceProfile"))?.get(0)
-            String domain = oofSliceProfile.getOrDefault("domainType","")
-            nssiId = nssi.getOrDefault("NSSIId","")
-            nssiName = nssi.getOrDefault("NSSIName","")
-            saveNSSIId(domain, nssiId, nssiName,execution)
-            Map<String, Object> sliceProfile = getSliceProfile(domain, execution, oofSliceProfile)
-            saveSliceProfile(execution, domain, sliceProfile)
-            logger.debug("OOF sharedNSISolution SliceProfile:"+oofSliceProfile.toString()+",domain:${domain}")
-            logger.debug("OOF sharedNSISolution nsiInstanceId:${nsiInstanceId}, nsiName:${nsiName}, nssiId:${nssiId}, nssiName:${nssiName}")
-        }
-    }
-
-    private void parseServiceProfile(DelegateExecution execution) {
-        logger.debug("Start parseServiceProfile")
-        String serviceType = execution.getVariable("serviceType")
-        Map<String, Object> serviceProfile = execution.getVariable("serviceProfile")
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-        // set sliceProfile for three domains
-        if(!sliceTaskParams.getSliceProfileAn()){
-            Map<String, Object> sliceProfileAn = getSliceProfile( "AN", execution,null)
-            saveSliceProfile(execution,"AN",sliceProfileAn)
-        }
-
-        if(!sliceTaskParams.getSliceProfileTn()){
-            Map<String, Object> sliceProfileTn = getSliceProfile( "TN", execution,null)
-            saveSliceProfile(execution,"TN",sliceProfileTn)
-        }
-
-        if(!sliceTaskParams.getSliceProfileCn()){
-            Map<String, Object> sliceProfileCn = getSliceProfile( "CN", execution,null, )
-            saveSliceProfile(execution,"CN",sliceProfileCn)
-        }
-
-        logger.debug("Finish parseServiceProfile")
-    }
-
-    private void saveSliceProfile(DelegateExecution execution, String domain, Map<String, Object> sliceProfile){
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-        if(domain.equalsIgnoreCase("AN")){
-            execution.setVariable("sliceProfileAn", sliceProfile)
-            sliceTaskParams.setSliceProfileAn(sliceProfile)
-            logger.debug("sliceProfileAn: " + sliceProfile)
-        }
-        else if(domain.equalsIgnoreCase("TN")){
-            execution.setVariable("sliceProfileTn", sliceProfile)
-            sliceTaskParams.setSliceProfileTn(sliceProfile)
-            logger.debug("sliceProfileTn: " + sliceProfile)
-        }
-        else if(domain.equalsIgnoreCase("CN")){
-            execution.setVariable("sliceProfileCn", sliceProfile)
-            sliceTaskParams.setSliceProfileCn(sliceProfile)
-            logger.debug("sliceProfileCn: " + sliceProfile)
-        }
-    }
-
-    private void saveNSSIId(String domain, String nssiId, String nssiName, DelegateExecution execution) {
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-        if(domain.equalsIgnoreCase("AN")){
-            sliceTaskParams.setAnSuggestNssiId(nssiId)
-            sliceTaskParams.setAnSuggestNssiName(nssiName)
-        }
-        else if(domain.equalsIgnoreCase("CN")){
-            sliceTaskParams.setCnSuggestNssiId(nssiId)
-            sliceTaskParams.setCnSuggestNssiName(nssiName)
-        }
-        else if(domain.equalsIgnoreCase("TN")){
-            sliceTaskParams.setTnSuggestNssiId(nssiId)
-            sliceTaskParams.setTnSuggestNssiName(nssiName)
-        }
-    }
-
-    private Map getSliceProfile(String domain, DelegateExecution execution, Map<String, Object> oofSliceProfile) {
-        String profileMapStr
-        Map<String, Object> serviceProfile = execution.getVariable("serviceProfile")
-        Integer domainLatency = (Integer) serviceProfile.get("latency")/3
-
-        if(domain.equalsIgnoreCase("AN")){
-            profileMapStr = """ {
-                    "latency": ${domainLatency}, 
-                    "sNSSAI": "sNSSAI", 
-                    "uEMobilityLevel": "uEMobilityLevel", 
-                    "coverageAreaTAList": "coverageAreaTAList", 
-                    "5QI": 100
-                }"""
-        }
-        else if(domain.equalsIgnoreCase("TN")){
-            profileMapStr =""" {
-                    "latency":${domainLatency},
-                    "sNSSAI":"sNSSAI", 
-                    "e2eLatency":"latency", 
-                    "bandwidth": 100
-                }"""
-        }
-        else if(domain.equalsIgnoreCase("CN")){
-            profileMapStr = """ {
-                    "areaTrafficCapDL":"areaTrafficCapDL",
-                    "maxNumberofUEs":"maxNumberofUEs",
-                    "latency":${domainLatency},
-                    "expDataRateUL":"expDataRateUL", 
-                    "sNSSAI":"sNSSAI", 
-                    "areaTrafficCapUL":"areaTrafficCapUL",
-                    "uEMobilityLevel":"uEMobilityLevel", 
-                    "expDataRateDL":"expDataRateDL",  
-                    "activityFactor":"activityFactor",
-                    "resourceSharingLevel":"resourceSharingLevel"
-                }"""
-        }
-
-        logger.debug("Profile map for " + domain + " : " + profileMapStr)
-        Map<String, Object> profileMaps = objectMapper.readValue(profileMapStr.trim().replaceAll(" ", ""), new TypeReference<Map<String, String>>(){})
-        Map<String, Object> sliceProfile = [:]
-        for (Map.Entry<String, String> profileMap : profileMaps) {
-            String key = profileMap.key
-            String value = profileMaps.get(key)
-            if(null != oofSliceProfile && oofSliceProfile.keySet().contains(key)){
-                sliceProfile.put(key, oofSliceProfile.get(key))
-                logger.debug("Get from oof, key:${key}, value: ${oofSliceProfile.get(key)}")
-            }
-            else if(serviceProfile.keySet().contains(value)){
-                sliceProfile.put(key, serviceProfile.get(value))
-            }
-            else{
-                sliceProfile.put(key, profileMaps.get(key))
-            }
-        }
-        return sliceProfile
-    }
-
-    void processDecomposition(DelegateExecution execution){
-        logger.debug("Start processDecomposition")
-
-        ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition")
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-        String nstName = serviceDecomposition.getModelInfo().getModelName()
-        String nstId = serviceDecomposition.getModelInfo().getModelUuid()
-        sliceTaskParams.setNstName(nstName)
-        sliceTaskParams.setNstId(nstId)
-
-        logger.debug("End processDecomposition")
-    }
-
-
-    void prepareNSTDecompose(DelegateExecution execution) {
-
-        String modelUuid = execution.getVariable("nstModelUuid")
-        String modelInvariantUuid = execution.getVariable("nstModelInvariantUuid")
-
-        String serviceModelInfo = """{
-            "modelInvariantUuid":"${modelInvariantUuid}",
-            "modelUuid":"${modelUuid}",
-            "modelVersion":""
-             }"""
-        execution.setVariable("serviceModelInfo", serviceModelInfo)
-    }
-
-    void prepareNSSTDecompose(DelegateExecution execution) {
-        Boolean isMoreNSSTtoProcess = false
-        Integer maxNSST = execution.getVariable("maxNSST")
-        Integer currentNSST=execution.getVariable("currentNSST")
-        List<String> nsstModelUUIDList = new ArrayList<>()
-        nsstModelUUIDList = execution.getVariable("nsstModelUUIDList")
-        String modelUuid = nsstModelUUIDList.get(currentNSST)
-        String serviceModelInfo = """{
-            "modelInvariantUuid":"",
-            "modelUuid":"${modelUuid}",
-            "modelVersion":""
-             }"""
-        execution.setVariable("serviceModelInfo", serviceModelInfo)
-        currentNSST=currentNSST+1
-        if(currentNSST<maxNSST)
-            isMoreNSSTtoProcess=true
-        execution.setVariable("isMoreNSSTtoProcess",isMoreNSSTtoProcess)
-        execution.setVariable("maxNSST",maxNSST)
-        execution.setVariable("currentNSST",currentNSST)
-    }
-
-
-    void prepareNSSTlistfromNST(DelegateExecution execution) {
-        //Need to update this part from decomposition.
-        logger.trace("Enter prepareNSSTlistfromNST()")
-        Boolean isMoreNSSTtoProcess = false
-        ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition")
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-        String nstName = serviceDecomposition.getModelInfo().getModelName()
-        sliceTaskParams.setNstName(nstName)
-        String nstId = serviceDecomposition.getModelInfo().getModelUuid()
-        sliceTaskParams.setNstId(nstId)
-        execution.setVariable("sliceTaskParams",sliceTaskParams)
-
-        List<ServiceProxy> proxyList = serviceDecomposition.getServiceProxy()
-        List<String> nsstModelUUIDList = new ArrayList<>()
-        for(ServiceProxy serviceProxy:proxyList)
-            nsstModelUUIDList.add(serviceProxy.getSourceModelUuid())
-        execution.setVariable("nsstModelUUIDList",nsstModelUUIDList)
-        Integer maxNSST = nsstModelUUIDList.size()
-        Integer currentNSST=0
-        execution.setVariable("maxNSST",maxNSST)
-        execution.setVariable("currentNSST",currentNSST)
-        if(currentNSST<maxNSST)
-            isMoreNSSTtoProcess=true
-        execution.setVariable("isMoreNSSTtoProcess",isMoreNSSTtoProcess)
-        logger.trace("Exit prepareNSSTlistfromNST()")
-
-    }
-
-    void getNSSTOption(DelegateExecution execution) {
-        ServiceDecomposition serviceDecomposition= execution.getVariable("serviceDecomposition")
-        String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution)
-        String globalSubscriberId = execution.getVariable("globalSubscriberId")
-        String serviceType = execution.getVariable("subscriptionServiceType")
-        String nssiInstanceId =""
-        String nssiName =""
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams")
-        logger.debug( "get NSI option OOF Url: " + urlString)
-        boolean isNSISuggested = false
-        execution.setVariable("isNSISuggested",isNSISuggested)
-
-        //Prepare auth for OOF - Begin
-        def authHeader = ""
-        String basicAuth = UrnPropertiesReader.getVariable("mso.oof.auth", execution)
-        String msokey = UrnPropertiesReader.getVariable("mso.msoKey", execution)
-
-        String basicAuthValue = utils.encrypt(basicAuth, msokey)
-        if (basicAuthValue != null) {
-            logger.debug( "Obtained BasicAuth username and password for OOF: " + basicAuthValue)
-            try {
-                authHeader = utils.getBasicAuth(basicAuthValue, msokey)
-                execution.setVariable("BasicAuthHeaderValue", authHeader)
-            } catch (Exception ex) {
-                logger.debug( "Unable to encode username and password string: " + ex)
-                exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Internal Error - Unable to " +
-                        "encode username and password string")
-            }
-        } else {
-            logger.debug( "Unable to obtain BasicAuth - BasicAuth value null")
-            exceptionUtil.buildAndThrowWorkflowException(execution, 401, "Internal Error - BasicAuth " +
-                    "value null")
-        }
-        //Prepare auth for OOF - End
-        //Prepare send request to OOF - Begin
-        String requestId = execution.getVariable("msoRequestId")
-        Map<String, Object> profileInfo = execution.getVariable("serviceProfile")
-        String nsstModelInvariantUuid = serviceDecomposition.getModelInfo().getModelInvariantUuid()
-        String nsstModelUuid = serviceDecomposition.getModelInfo().getModelUuid()
-        String nsstInfo = """"NSSTInfo": {
-        "invariantUUID":"${nsstModelInvariantUuid}",
-        "UUID":"${nsstModelUuid}"
-         }"""
-        String oofRequest = oofUtils.buildSelectNSSIRequest(execution, requestId, nsstInfo ,profileInfo)
-
-
-        URL url = new URL(urlString+"/api/oof/v1/selectnssi")
-        HttpClient httpClient = new HttpClientFactory().newJsonClient(url, ONAPComponents.OOF)
-        httpClient.addAdditionalHeader("Authorization", authHeader)
-        Response httpResponse = httpClient.post(oofRequest)
-
-        int responseCode = httpResponse.getStatus()
-        logger.debug("OOF sync response code is: " + responseCode)
-
-        if(responseCode != 200){
-            exceptionUtil.buildAndThrowWorkflowException(execution, responseCode, "Received a Bad Sync Response from OOF.")
-        }
-
-        if(httpResponse.hasEntity()){
-            String OOFResponse = httpResponse.readEntity(String.class)
-            execution.setVariable("OOFResponse", OOFResponse)
-            nssiInstanceId = jsonUtil.getJsonValue(OOFResponse, "NSSIIInfo.NSSIID")
-            nssiName = jsonUtil.getJsonValue(OOFResponse, "NSSIInfo.NSSIName")
-            execution.setVariable("nssiInstanceId",nssiInstanceId)
-            execution.setVariable("nssiName",nssiName)
-        }
-        if(StringUtils.isBlank(nssiInstanceId)){
-            logger.debug( "There is no valid NSST suggested by OOF.")
-        }else
-        {
-            try {
-                AAIResourcesClient resourceClient = new AAIResourcesClient()
-                AAIResourceUri serviceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId, serviceType, nssiInstanceId)
-                AAIResultWrapper wrapper = resourceClient.get(serviceInstanceUri, NotFoundException.class)
-                Optional<ServiceInstance> si = wrapper.asBean(org.onap.aai.domain.yang.ServiceInstance.class)
-                org.onap.aai.domain.yang.ServiceInstance nssi = si.get()
-
-                String domain = nssi.getEnvironmentContext().toString().toUpperCase()
-                switch (domain) {
-                    case "AN":
-                        sliceTaskParams.setAnSuggestNssiId(nssi.getServiceInstanceId())
-                        sliceTaskParams.setAnSuggestNssiName(nssi.getServiceInstanceName())
-                        break
-                    case "CN":
-                        sliceTaskParams.setCnSuggestNssiId(nssi.getServiceInstanceId())
-                        sliceTaskParams.setCnSuggestNssiName(nssi.getServiceInstanceName())
-                        break
-                    case "TN":
-                        sliceTaskParams.setTnSuggestNssiId(nssi.getServiceInstanceId())
-                        sliceTaskParams.setTnSuggestNssiName(nssi.getServiceInstanceName())
-                        break
-                    default:
-                        break
-                }
-            }catch(NotFoundException e)
-            {
-                logger.debug("NSSI Service Instance not found in AAI: " + nssiInstanceId)
-            }catch(Exception e)
-            {
-                logger.debug("NSSI Service Instance not found in AAI: " + nssiInstanceId)
-            }
-        }
-        logger.debug("Prepare NSSI option completed ")
-    }
-
-
-    /**
-     * new
-     */
-
-    private static final ObjectMapper MAPPER = new ObjectMapper()
-
-    private NssmfAdapterUtils nssmfAdapterUtils = new NssmfAdapterUtils(httpClientFactory, jsonUtil)
-
-    private static final String QUERY_SUB_NET_CAPABILITY = "/api/rest/provMns/v1/NSS/subnetCapabilityQuery"
-
-    private static final String QUERY_NSSI_SELECTION_CAPABILITY = "/api/rest/provMns/v1/NSS/NSSISelectionCapability"
-
-    /**
-     * query Subnet Capability of TN
-     * @param execution
-     */
-    public void queryTNSubnetCapability(DelegateExecution execution) {
-
-        String vendor = execution.getVariable("vendor")
-
-        List<String> subnetTypes =  new ArrayList<>()
-        subnetTypes.add("TN_FH")
-        subnetTypes.add("TN_MH")
-        subnetTypes.add("TN_BH")
-
-        String strRequest = MAPPER.writeValueAsString(
-                buildQuerySubnetCapRequest(vendor, subnetTypes, NetworkType.TRANSPORT))
-
-        String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_SUB_NET_CAPABILITY, strRequest)
-        execution.setVariable("subnetCapabilityOfTN", response)
-    }
-
-    /**
-     * query Subnet Capability of CN
-     * @param execution
-     */
-    public void queryCNSubnetCapability(DelegateExecution execution) {
-
-        String vendor = execution.getVariable("vendor")
-
-        List<String> subnetTypes =  new ArrayList<>()
-        subnetTypes.add("CN")
-
-        String strRequest = MAPPER.writeValueAsString(buildQuerySubnetCapRequest(vendor, subnetTypes, NetworkType.CORE))
-
-        String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_SUB_NET_CAPABILITY, strRequest)
-
-        execution.setVariable("subnetCapabilityOfCN", response)
-    }
-
-    /**
-     * query Subnet Capability of AN
-     * @param execution
-     */
-    public void queryANSubnetCapability(DelegateExecution execution) {
-
-        String vendor = execution.getVariable("vendor")
-
-        List<String> subnetTypes =  new ArrayList<>()
-        subnetTypes.add("AN-NF")
-
-        String strRequest = MAPPER.writeValueAsString(buildQuerySubnetCapRequest(vendor, subnetTypes, NetworkType.ACCESS))
-
-        String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_SUB_NET_CAPABILITY, strRequest)
-
-        execution.setVariable("subnetCapabilityOfAN", response)
-    }
-
-    /**
-     * build request body for querying Subnet Capability
-     * @param vendor
-     * @param subnetTypes
-     * @param networkType
-     * @return
-     */
-    private static String buildQuerySubnetCapRequest(String vendor, List<String> subnetTypes, NetworkType networkType) {
-        NssmfAdapterNBIRequest request = new NssmfAdapterNBIRequest()
-
-        Map<String, Object> paramMap = new HashMap()
-        paramMap.put("subnetTypes", subnetTypes)
-
-        request.setSubnetCapabilityQuery(MAPPER.writeValueAsString(paramMap))
-
-        EsrInfo esrInfo = new EsrInfo()
-        esrInfo.setVendor(vendor)
-        esrInfo.setNetworkType(networkType)
-
-        request.setEsrInfo(esrInfo)
-
-        String strRequest = MAPPER.writeValueAsString(request)
-
-        return strRequest
-    }
-
-    /**
-     * handle response of Subnet Capability, generate SubnetCapabilities Info for request to oof
-     * @param execution
-     */
-    public void generateSubnetCapabilities(DelegateExecution execution) {
-        //todo:
-        execution.setVariable("subnetCapabilities", [])
-    }
-
-    /**
-     * prepare the params for decompose nst
-     * @param execution
-     */
-    public void prepareDecomposeNST(DelegateExecution execution) {
-
-        String modelUuid = execution.getVariable("nstModelUuid")
-        String modelInvariantUuid = execution.getVariable("nstModelInvariantUuid")
-
-        String serviceModelInfo = """{
-            "modelInvariantUuid":"${modelInvariantUuid}",
-            "modelUuid":"${modelUuid}",
-            "modelVersion":""
-             }"""
-        execution.setVariable("nstServiceModelInfo", serviceModelInfo)
-    }
-
-    /**
-     * process the result of NST Decomposition
-     * @param execution
-     */
-    public void processDecompositionNST(DelegateExecution execution) {
-
-        ServiceDecomposition nstServiceDecomposition = execution.getVariable("nstServiceDecomposition")
-        //todo:
-
-    }
-
-
-    /**
-     * prepare the params for decompose nsst
-     * @param execution
-     */
-    public void prepareDecomposeNSST(DelegateExecution execution) {
-        Boolean isMoreNSSTtoProcess = false
-        def maxNSST = execution.getVariable("maxNSST") as Integer
-        def currentNSST = execution.getVariable("currentNSST") as Integer
-        def nsstModelUUIDList = execution.getVariable("nsstModelUUIDList") as List
-        String modelUuid = nsstModelUUIDList.get(currentNSST)
-        String serviceModelInfo = """{
-            "modelInvariantUuid":"",
-            "modelUuid":"${modelUuid}",
-            "modelVersion":""
-             }"""
-        execution.setVariable("nsstServiceModelInfo", serviceModelInfo)
-        currentNSST = currentNSST + 1
-
-        if(currentNSST < maxNSST) {
-            isMoreNSSTtoProcess = true
-        }
-
-        execution.setVariable("isMoreNSSTtoProcess", isMoreNSSTtoProcess)
-        execution.setVariable("maxNSST", maxNSST)
-        execution.setVariable("currentNSST", currentNSST)
-
-        //todo:
-    }
-
-    /**
-     * process the result of NSST Decomposition
-     * @param execution
-     */
-    public void processDecompositionNSST(DelegateExecution execution) {
-        ServiceDecomposition nsstServiceDecomposition = execution.getVariable("nsstServiceDecomposition")
-        //todo:
-    }
-
-    /**
-     * todo: need rewrite
-     * prepare select nsi request
-     * @param execution
-     */
-    public void preNSIRequest(DelegateExecution execution) {
-
-        String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution)
-        logger.debug( "get NSI option OOF Url: " + urlString)
-
-        boolean isNSISuggested = true
-        execution.setVariable("isNSISuggested", isNSISuggested)
-        String requestId = execution.getVariable("msoRequestId")
-        String messageType = "NSISelectionResponse"
-
-        ServiceProfile profileInfo = execution.getVariable("serviceProfile") as ServiceProfile
-        Map<String, Object> nstSolution = execution.getVariable("nstSolution") as Map
-        logger.debug("Get NST selection from OOF: " + nstSolution.toString())
-
-        execution.setVariable("nsiSelectionUrl", "/api/oof/selection/nsi/v1")
-        execution.setVariable("nsiSelection_messageType", messageType)
-        execution.setVariable("nsiSelection_correlator", requestId)
-        String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution)
-        execution.setVariable("nsiSelection_timeout", timeout)
-
-
-        TemplateInfo nstInfo = new TemplateInfo()
-        nstInfo.setInvariantUUID(nstSolution.get("invariantUUID") as String)
-        nstInfo.setUUID(nstSolution.get("UUID") as String)
-        nstInfo.setName(nstSolution.get("NSTName") as String)
-
-        execution.setVariable("NSTInfo", nstInfo)
-
-        List<TemplateInfo> nsstInfos = execution.getVariable("NSSTInfos") as List<TemplateInfo>
-
-        List<SubnetCapability> subnetCapabilities = execution.getVariable("subnetCapabilities") as List<SubnetCapability>
-
-        String oofRequest = oofUtils.buildSelectNSIRequest(requestId, nstInfo, nsstInfos,
-                messageType, profileInfo, subnetCapabilities, timeout as Integer)
-
-        execution.setVariable("nsiSelection_oofRequest", oofRequest)
-        logger.debug("Sending request to OOF: " + oofRequest)
-    }
-
-    /**
-     * todo: need rewrite
-     * process select nsi response
-     * @param execution
-     */
-    public void processNSIResp(DelegateExecution execution) {
-
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") as SliceTaskParams
-        String OOFResponse = execution.getVariable("nsiSelection_oofResponse")
-        logger.debug("NSI OOFResponse is: " + OOFResponse)
-        execution.setVariable("OOFResponse", OOFResponse)
-        //This needs to be changed to derive a value when we add policy to decide the solution options.
-
-        Map<String, Object> resMap = objectMapper.readValue(OOFResponse, Map.class)
-        List<Map<String, Object>> nsiSolutions = (List<Map<String, Object>>) resMap.get("solutions")
-        Map<String, Object> solutions = nsiSolutions.get(0)
-
-        String resourceSharingLevel = execution.getVariable("resourceSharingLevel")
-        Boolean isSharable = resourceSharingLevel == "shared"
-
-        if (solutions != null) {
-            if (isSharable && solutions.get("existingNSI")) {
-                //sharedNSISolution
-                processSharedNSISolutions(solutions, execution)
-            }
-            else if(solutions.containsKey("newNSISolution")) {
-                processNewNSISolutions(solutions, execution)
-            }
-        }
-        execution.setVariable("sliceTaskParams", sliceTaskParams)
-        logger.debug("sliceTaskParams: " + sliceTaskParams.convertToJson())
-        logger.debug("*** Completed options Call to OOF ***")
-
-        logger.debug("start parseServiceProfile")
-        parseServiceProfile(execution)
-        logger.debug("end parseServiceProfile")
-    }
-
-    /**
-     * get NSSI Selection Capability for AN
-     * @param execution
-     */
-    public void getNSSISelectionCap4AN(DelegateExecution execution) {
-
-        def vendor = execution.getVariable("vendor") as String
-
-        String strRequest = buildNSSISelectionReq(vendor, NetworkType.ACCESS)
-
-        String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_NSSI_SELECTION_CAPABILITY, strRequest)
-
-        Map<String, Object> resMap = objectMapper.readValue(response, Map.class)
-
-        String selection = resMap.get("selection")
-
-
-        if ("NSMF".equalsIgnoreCase(selection)) {
-            execution.setVariable("NEED_AN_NSSI_SELECTION", true)
-        }
-    }
-
-    /**
-     * get NSSI Selection Capability for TN
-     * @param execution
-     */
-    public void getNSSISelectionCap4TN(DelegateExecution execution) {
-
-        def vendor = execution.getVariable("vendor") as String
-
-        String strRequest = buildNSSISelectionReq(vendor, NetworkType.TRANSPORT)
-
-        String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_NSSI_SELECTION_CAPABILITY, strRequest)
-
-        Map<String, Object> resMap = objectMapper.readValue(response, Map.class)
-
-        String selection = resMap.get("selection")
-
-        if ("NSMF".equalsIgnoreCase(selection)) {
-            execution.setVariable("NEED_TN_NSSI_SELECTION", true)
-        }
-    }
-
-    /**
-     * get NSSI Selection Capability for CN
-     * @param execution
-     */
-    public void getNSSISelectionCap4CN(DelegateExecution execution) {
-
-        def vendor = execution.getVariable("vendor") as String
-
-        String strRequest = buildNSSISelectionReq(vendor, NetworkType.CORE)
-
-        String response = nssmfAdapterUtils.sendPostRequestNSSMF(execution, QUERY_NSSI_SELECTION_CAPABILITY, strRequest)
-
-        Map<String, Object> resMap = objectMapper.readValue(response, Map.class)
-
-        String selection = resMap.get("selection")
-
-        if ("NSMF".equalsIgnoreCase(selection)) {
-            execution.setVariable("NEED_CN_NSSI_SELECTION", true)
-        }
-    }
-
-    /**
-     * build NSSI Selection Capability Request body to nssmf adapter
-     * @param vendor
-     * @param networkType
-     * @return
-     */
-    private static String buildNSSISelectionReq(String vendor, NetworkType networkType) {
-        NssmfAdapterNBIRequest request = new NssmfAdapterNBIRequest()
-        EsrInfo esrInfo = new EsrInfo()
-        esrInfo.setVendor(vendor)
-        esrInfo.setNetworkType(networkType)
-        request.setEsrInfo(esrInfo)
-
-        return MAPPER.writeValueAsString(request)
-    }
-
-    /**
-     * if exist nssi need to select?
-     * @param execution
-     */
-    public void handleNssiSelect(DelegateExecution execution) {
-
-        SliceTaskParamsAdapter sliceTaskParams =
-                execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
-
-        execution.setVariable()
-    }
-
-    /**
-     * todo: need rewrite
-     * prepare select nssi request
-     * @param execution
-     */
-    public void preNSSIRequest(DelegateExecution execution) {
-
-        String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution)
-        logger.debug( "get NSI option OOF Url: " + urlString)
-
-        boolean isNSISuggested = true
-        execution.setVariable("isNSISuggested", isNSISuggested)
-        String requestId = execution.getVariable("msoRequestId")
-        String messageType = "NSISelectionResponse"
-
-        Map<String, Object> profileInfo = execution.getVariable("serviceProfile") as Map
-        Map<String, Object> nstSolution = execution.getVariable("nstSolution") as Map
-        logger.debug("Get NST selection from OOF: " + nstSolution.toString())
-        String nstInfo = """{
-            "modelInvariantId":"${nstSolution.invariantUUID}",
-            "modelVersionId":"${nstSolution.UUID}",
-            "modelName":"${nstSolution.NSTName}"
-         }"""
-
-        execution.setVariable("nsiSelectionUrl", "/api/oof/selection/nsi/v1")
-        execution.setVariable("nsiSelection_messageType", messageType)
-        execution.setVariable("nsiSelection_correlator", requestId)
-        String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution)
-        execution.setVariable("nsiSelection_timeout", timeout)
-
-        //todo
-        String oofRequest = oofUtils.buildSelectNSIRequest(requestId, nstInfo, messageType, profileInfo)
-
-        execution.setVariable("nsiSelection_oofRequest", oofRequest)
-        logger.debug("Sending request to OOF: " + oofRequest)
-    }
-
-    /**
-     * process select nssi response
-     * @param execution
-     */
-    public void processNSSIResp(DelegateExecution execution) {
-
-        SliceTaskParams sliceTaskParams = execution.getVariable("sliceTaskParams") as SliceTaskParams
-        String OOFResponse = execution.getVariable("nsiSelection_oofResponse")
-        logger.debug("NSI OOFResponse is: " + OOFResponse)
-        execution.setVariable("OOFResponse", OOFResponse)
-        //This needs to be changed to derive a value when we add policy to decide the solution options.
-
-        Map<String, Object> resMap = objectMapper.readValue(OOFResponse, Map.class)
-        List<Map<String, Object>> nsiSolutions = (List<Map<String, Object>>) resMap.get("solutions")
-        Map<String, Object> solutions = nsiSolutions.get(0)
-
-        String resourceSharingLevel = execution.getVariable("resourceSharingLevel")
-        Boolean isSharable = resourceSharingLevel == "shared"
-
-        if (solutions != null) {
-            if (isSharable && solutions.get("existingNSI")) {
-                //sharedNSISolution
-                processSharedNSISolutions(solutions, execution)
-            }
-            else if(solutions.containsKey("newNSISolution")) {
-                processNewNSISolutions(solutions, execution)
-            }
-        }
-        execution.setVariable("sliceTaskParams", sliceTaskParams)
-        logger.debug("sliceTaskParams: "+sliceTaskParams.convertToJson())
-        logger.debug("*** Completed options Call to OOF ***")
-
-        logger.debug("start parseServiceProfile")
-        parseServiceProfile(execution)
-        logger.debug("end parseServiceProfile")
-    }
-
-
-}
index 46f061d..01f4d6b 100644 (file)
@@ -159,45 +159,6 @@ class CreateSliceServiceTest extends MsoGroovyTest {
         assertNotNull(values)
     }
 
-    @Test
-    void testPrepareDecomposeService() {
-        when(mockExecution.getVariable("uuiRequest")).thenReturn(uuiRequest)
-        when(mockExecution.getVariable("serviceProfile")).thenReturn(serviceProfile)
-        CreateSliceService sliceService = new CreateSliceService()
-        sliceService.prepareDecomposeService(mockExecution)
-
-        String serviceModelInfoExcept = """{
-            "modelInvariantUuid":"123456",
-            "modelUuid":"123456",
-            "modelVersion":""
-            }"""
-        Mockito.verify(mockExecution, times(1)).setVariable(eq("ssServiceModelInfo"), captor.capture())
-        String serviceModelInfo = captor.getValue()
-        assertEquals(serviceModelInfoExcept.replaceAll("\\s+", ""),
-                serviceModelInfo.replaceAll("\\s+", ""))
-    }
-
-    @Test
-    void testProcessDecomposition() {
-        when(mockExecution.getVariable("uuiRequest")).thenReturn(uuiRequest)
-        when(mockExecution.getVariable("serviceProfile")).thenReturn(serviceProfile)
-        when(mockExecution.getVariable("nstSolution")).thenReturn(nstSolution)
-
-        CreateSliceService sliceService = new CreateSliceService()
-        sliceService.processDecomposition(mockExecution)
-
-        Mockito.verify(mockExecution, times(1)).setVariable(eq("subscriptionServiceType"), captor.capture())
-        assertEquals(captor.getValue(), "5G")
-        Mockito.verify(mockExecution, times(1)).setVariable(eq("serviceType"), captor.capture())
-        assertEquals(captor.getValue(), "embb")
-        Mockito.verify(mockExecution, times(1)).setVariable(eq("resourceSharingLevel"), captor.capture())
-        assertEquals(captor.getValue(), "shared")
-        Mockito.verify(mockExecution, times(1)).setVariable(eq("nstModelUuid"), captor.capture())
-        assertEquals(captor.getValue(), "aaaaaa")
-        Mockito.verify(mockExecution, times(1)).setVariable(eq("nstModelInvariantUuid"), captor.capture())
-        assertEquals(captor.getValue(), "bbbbbb")
-    }
-
     @Test
     void testPrepareCreateOrchestrationTask() {
         when(mockExecution.getVariable("serviceInstanceId")).thenReturn("123456")
index 27bd01b..60d7355 100644 (file)
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1wio50w" 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:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1wio50w" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
   <bpmn:process id="CreateSliceService" name="CreateSliceService" isExecutable="true">
     <bpmn:startEvent id="StartEvent_1nbljfd" name="Create Slice Service Creation Flow">
       <bpmn:outgoing>SequenceFlow_03s744c</bpmn:outgoing>
     </bpmn:startEvent>
     <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_0vilb24" name="Waiting for confirmation">
-      <bpmn:outgoing>SequenceFlow_1fk37v7</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_060j650</bpmn:outgoing>
       <bpmn:linkEventDefinition id="LinkEventDefinition_197u5pe" name="WaitingForConfirmation" />
     </bpmn:intermediateCatchEvent>
     <bpmn:scriptTask id="ScriptTask_1tc44ge" name="PreProcess Incoming Request" scriptFormat="groovy">
@@ -16,7 +16,7 @@ def css= new CreateSliceService()
 css.preProcessRequest(execution)</bpmn:script>
     </bpmn:scriptTask>
     <bpmn:scriptTask id="ScriptTask_1jgtb0y" name="Process User Options" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1cv0wop</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1whq7vc</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_197cm2e</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def css = new CreateSliceService()
@@ -27,50 +27,27 @@ css.processUserOptions(execution)</bpmn:script>
       <bpmn:outgoing>SequenceFlow_12t5exy</bpmn:outgoing>
       <bpmn:outgoing>SequenceFlow_038lb9m</bpmn:outgoing>
     </bpmn:exclusiveGateway>
-    <bpmn:scriptTask id="ScriptTask_0l3d1ai" name="Process Decomposition" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1t19ips</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0jrclmc</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def css = new CreateSliceService()
-css.processDecomposition(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_1eo3m4q" name="Prepare NST Selection" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_046irye</bpmn:incoming>
-      <bpmn:outgoing>Flow_1l8mfej</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def css = new CreateSliceService()
-css.prepareSelectNSTRequest(execution)</bpmn:script>
-    </bpmn:scriptTask>
     <bpmn:callActivity id="CallActivity_139l55g" name="Call DoCreateSliceServiceInstance&#10;" calledElement="DoCreateSliceServiceInstance">
       <bpmn:extensionElements>
         <camunda:in source="msoRequestId" target="msoRequestId" />
         <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
         <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
-        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
-        <camunda:in source="productFamilyId" target="productFamilyId" />
-        <camunda:in source="serviceInputParams" target="serviceInputParams" />
         <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
         <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
         <camunda:in source="serviceType" target="serviceType" />
         <camunda:in source="uuiRequest" target="uuiRequest" />
-        <camunda:in source="requestAction" target="operationType" />
         <camunda:in source="operationId" target="operationId" />
-        <camunda:in source="serviceProfile" target="serviceProfile" />
-        <camunda:in source="sliceProfileTn" target="sliceProfileTn" />
-        <camunda:in source="sliceProfileCn" target="sliceProfileCn" />
-        <camunda:in source="sliceProfileAn" target="sliceProfileAn" />
-        <camunda:in source="sliceServiceDecomposition" target="sliceServiceDecomposition" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
         <camunda:out source="rollbackData" target="rollbackData" />
         <camunda:out source="rolledBack" target="rolledBack" />
-        <camunda:out source="allottedResourceId" target="allottedResourceId" />
         <camunda:out source="serviceInstanceData" target="serviceInstanceData" />
+        <camunda:in source="sliceTaskParams" target="sliceTaskParams" />
       </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_1p8vxo5</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1g8m7tq</bpmn:outgoing>
+      <bpmn:incoming>SequenceFlow_1dfon41</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0jhqtls</bpmn:outgoing>
     </bpmn:callActivity>
     <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1v96asi" name="Goto Waiting for Confirmation">
-      <bpmn:incoming>SequenceFlow_0it2g9j</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_00kcej9</bpmn:incoming>
       <bpmn:linkEventDefinition id="LinkEventDefinition_0uj34dx" name="WaitingForConfirmation" />
     </bpmn:intermediateThrowEvent>
     <bpmn:scriptTask id="ScriptTask_0gb975b" name="Prepare Update Orchestration Task" scriptFormat="groovy">
@@ -126,14 +103,6 @@ css.prepareUpdateOrchestrationTask(execution)</bpmn:script>
 def css = new CreateSliceService()
 css.prepareInitServiceOperationStatus(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1ex8ke9" name="Goto Create Slice Service">
-      <bpmn:incoming>SequenceFlow_0jrclmc</bpmn:incoming>
-      <bpmn:linkEventDefinition id="LinkEventDefinition_0de65en" name="CreateSliceService" />
-    </bpmn:intermediateThrowEvent>
-    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_1wii8im" name="Create Slice Service">
-      <bpmn:outgoing>SequenceFlow_1o1tu0f</bpmn:outgoing>
-      <bpmn:linkEventDefinition id="LinkEventDefinition_1krpcdk" name="CreateSliceService" />
-    </bpmn:intermediateCatchEvent>
     <bpmn:scriptTask id="ScriptTask_1ssh2l9" name="Prepare Update Service Oper Status((finish)" scriptFormat="groovy">
       <bpmn:incoming>SequenceFlow_0lbdfmt</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1qv8qw1</bpmn:outgoing>
@@ -161,34 +130,8 @@ css.prepareUpdateServiceOperationStatus(execution)</bpmn:script>
         </camunda:connector>
       </bpmn:extensionElements>
       <bpmn:incoming>SequenceFlow_0t094g7</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_046irye</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0xmvg4v</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:callActivity id="CallActivity_1bnkmaz" name="Call Decompose Service" calledElement="DecomposeService">
-      <bpmn:extensionElements>
-        <camunda:in source="msoRequestId" target="msoRequestId" />
-        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
-        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
-        <camunda:out source="serviceDecomposition" target="sliceServiceDecomposition" />
-        <camunda:out source="WorkflowException" target="WorkflowException" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_0q7yc2c</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1t19ips</bpmn:outgoing>
-    </bpmn:callActivity>
-    <bpmn:scriptTask id="ScriptTask_0o2r07o" name="Prepare&#10;Decompose&#10;Service&#10;" scriptFormat="groovy">
-      <bpmn:incoming>Flow_1u4srgq</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0q7yc2c</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcsi= new CreateSliceService()
-dcsi.prepareDecomposeService(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_0b7senu" name="Prepare Create OrchestrationTask" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1o1tu0f</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1sq6kp6</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def css= new CreateSliceService()
-css.prepareCreateOrchestrationTask(execution)</bpmn:script>
-    </bpmn:scriptTask>
     <bpmn:callActivity id="CallActivity_0h88mep" name="Call HandleOrchestrationTask" calledElement="HandleOrchestrationTask">
       <bpmn:extensionElements>
         <camunda:out source="statusCode" target="CSSOT_dbResponseCode" />
@@ -201,8 +144,8 @@ css.prepareCreateOrchestrationTask(execution)</bpmn:script>
         <camunda:in source="CSSOT_paramJson" target="paramJson" />
         <camunda:in source="CSSOT_requestMethod" target="method" />
       </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_1sq6kp6</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1p8vxo5</bpmn:outgoing>
+      <bpmn:incoming>SequenceFlow_1x4n7an</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1dfon41</bpmn:outgoing>
     </bpmn:callActivity>
     <bpmn:callActivity id="CallActivity_0n47zoh" name="Call HandleOrchestrationTask" calledElement="HandleOrchestrationTask">
       <bpmn:extensionElements>
@@ -217,7 +160,7 @@ css.prepareCreateOrchestrationTask(execution)</bpmn:script>
         <camunda:in source="CSSOT_requestMethod" target="method" />
       </bpmn:extensionElements>
       <bpmn:incoming>SequenceFlow_18kur12</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0it2g9j</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_00kcej9</bpmn:outgoing>
     </bpmn:callActivity>
     <bpmn:scriptTask id="ScriptTask_12h8542" name="Prepare Update Orchestration Task" scriptFormat="groovy">
       <bpmn:incoming>SequenceFlow_12t5exy</bpmn:incoming>
@@ -242,28 +185,6 @@ css.prepareUpdateOrchestrationTask(execution)</bpmn:script>
       <bpmn:incoming>SequenceFlow_0thd6ny</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0477975</bpmn:outgoing>
     </bpmn:callActivity>
-    <bpmn:callActivity id="CallActivity_0g98b71" name="Call HandleOrchestrationTask" calledElement="HandleOrchestrationTask">
-      <bpmn:extensionElements>
-        <camunda:out source="statusCode" target="CSSOT_dbResponseCode" />
-        <camunda:out source="response" target="CSSOT_dbResponse" />
-        <camunda:in source="CSSOT_taskId" target="taskId" />
-        <camunda:in source="msoRequestId" target="requestId" />
-        <camunda:in source="CSSOT_name" target="taskName" />
-        <camunda:in source="CSSOT_status" target="taskStatus" />
-        <camunda:in source="CSSOT_isManual" target="isManual" />
-        <camunda:in source="CSSOT_paramJson" target="paramJson" />
-        <camunda:in source="CSSOT_requestMethod" target="method" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_0h2oree</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1cv0wop</bpmn:outgoing>
-    </bpmn:callActivity>
-    <bpmn:scriptTask id="ScriptTask_08wim95" name="Prepare Get User Options" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_16uz2t9</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0h2oree</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def css = new CreateSliceService()
-css.prepareGetUserOptions(execution)</bpmn:script>
-    </bpmn:scriptTask>
     <bpmn:callActivity id="CallActivity_0jdzpem" name="Call HandleOrchestrationTask" calledElement="HandleOrchestrationTask">
       <bpmn:extensionElements>
         <camunda:out source="statusCode" target="CSSOT_dbResponseCode" />
@@ -332,13 +253,6 @@ css.prepareUpdateOrchestrationTask(execution)</bpmn:script>
       <bpmn:incoming>SequenceFlow_1qv8qw1</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_11rbv41</bpmn:outgoing>
     </bpmn:serviceTask>
-    <bpmn:scriptTask id="ScriptTask_1jj846g" name="Send Sync Ack Response" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1g8m7tq</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1ey6m1e</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def css = new CreateSliceService()
-css.sendSyncResponse(execution)</bpmn:script>
-    </bpmn:scriptTask>
     <bpmn:callActivity id="CallActivity_0cxst1i" name="Call DoAllocateNSIandNSSI&#10;" calledElement="DoAllocateNSIandNSSI">
       <bpmn:extensionElements>
         <camunda:in source="msoRequestId" target="msoRequestId" />
@@ -354,42 +268,27 @@ css.sendSyncResponse(execution)</bpmn:script>
         <camunda:in source="uuiRequest" target="uuiRequest" />
         <camunda:in source="requestAction" target="operationType" />
         <camunda:in source="operationId" target="operationId" />
-        <camunda:in source="serviceProfile" target="serviceProfile" />
-        <camunda:in source="sliceProfileTn" target="sliceProfileTn" />
-        <camunda:in source="sliceProfileCn" target="sliceProfileCn" />
-        <camunda:in source="sliceProfileAn" target="sliceProfileAn" />
         <camunda:in source="sliceTaskParams" target="sliceTaskParams" />
         <camunda:in source="CSSOT_taskId" target="taskId" />
         <camunda:in source="CSSOT_name" target="taskName" />
         <camunda:in source="CSSOT_status" target="taskStatus" />
         <camunda:in source="CSSOT_isManual" target="isManual" />
         <camunda:in source="resourceSharingLevel" target="resourceSharingLevel" />
-        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
         <camunda:out source="rollbackData" target="rollbackData" />
         <camunda:out source="rolledBack" target="rolledBack" />
         <camunda:in source="allottedResourceId" target="allottedResourceId" />
-        <camunda:in source="nstSolution" target="nstSolution" />
       </bpmn:extensionElements>
       <bpmn:incoming>SequenceFlow_1bevt3a</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0mlrlbv</bpmn:outgoing>
     </bpmn:callActivity>
-    <bpmn:endEvent id="EndEvent_0bh0kwx">
-      <bpmn:incoming>SequenceFlow_12qt5ci</bpmn:incoming>
-      <bpmn:errorEventDefinition id="ErrorEventDefinition_1xa66sx" errorRef="Error_0p2naox" />
-    </bpmn:endEvent>
     <bpmn:sequenceFlow id="SequenceFlow_03s744c" sourceRef="StartEvent_1nbljfd" targetRef="ScriptTask_1tc44ge" />
     <bpmn:sequenceFlow id="SequenceFlow_07e12rt" sourceRef="ScriptTask_1tc44ge" targetRef="ScriptTask_1xxag1o" />
-    <bpmn:sequenceFlow id="SequenceFlow_1cv0wop" sourceRef="CallActivity_0g98b71" targetRef="ScriptTask_1jgtb0y" />
     <bpmn:sequenceFlow id="SequenceFlow_197cm2e" sourceRef="ScriptTask_1jgtb0y" targetRef="ExclusiveGateway_0elbczl" />
     <bpmn:sequenceFlow id="SequenceFlow_12t5exy" name="continue" sourceRef="ExclusiveGateway_0elbczl" targetRef="ScriptTask_12h8542">
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{execution.getVariable("taskAction") == "commit"}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
     <bpmn:sequenceFlow id="SequenceFlow_038lb9m" name="abort" sourceRef="ExclusiveGateway_0elbczl" targetRef="ScriptTask_1mscu5w" />
-    <bpmn:sequenceFlow id="SequenceFlow_1t19ips" sourceRef="CallActivity_1bnkmaz" targetRef="ScriptTask_0l3d1ai" />
-    <bpmn:sequenceFlow id="SequenceFlow_1p8vxo5" sourceRef="CallActivity_0h88mep" targetRef="CallActivity_139l55g" />
-    <bpmn:sequenceFlow id="SequenceFlow_1g8m7tq" sourceRef="CallActivity_139l55g" targetRef="ScriptTask_1jj846g" />
-    <bpmn:sequenceFlow id="SequenceFlow_0it2g9j" sourceRef="CallActivity_0n47zoh" targetRef="IntermediateThrowEvent_1v96asi" />
     <bpmn:sequenceFlow id="SequenceFlow_18kur12" sourceRef="ScriptTask_0gb975b" targetRef="CallActivity_0n47zoh" />
     <bpmn:sequenceFlow id="SequenceFlow_0mlrlbv" sourceRef="CallActivity_0cxst1i" targetRef="ExclusiveGateway_18eld2o" />
     <bpmn:sequenceFlow id="SequenceFlow_1c6ka9h" name="No" sourceRef="ExclusiveGateway_18eld2o" targetRef="EndEvent_0x406rw" />
@@ -399,36 +298,15 @@ css.sendSyncResponse(execution)</bpmn:script>
     <bpmn:sequenceFlow id="SequenceFlow_0klb3ey" sourceRef="ScriptTask_1ef3voz" targetRef="CallActivity_15pl4ld" />
     <bpmn:sequenceFlow id="SequenceFlow_11rbv41" sourceRef="ServiceTask_0esr949" targetRef="EndEvent_05h01gx" />
     <bpmn:sequenceFlow id="SequenceFlow_0t094g7" sourceRef="ScriptTask_1xxag1o" targetRef="ServiceTask_0kd6p6p" />
-    <bpmn:sequenceFlow id="SequenceFlow_1o1tu0f" sourceRef="IntermediateCatchEvent_1wii8im" targetRef="ScriptTask_0b7senu" />
     <bpmn:sequenceFlow id="SequenceFlow_0lbdfmt" sourceRef="CallActivity_15pl4ld" targetRef="ScriptTask_1ssh2l9" />
     <bpmn:sequenceFlow id="SequenceFlow_1qv8qw1" sourceRef="ScriptTask_1ssh2l9" targetRef="ServiceTask_0esr949" />
-    <bpmn:sequenceFlow id="SequenceFlow_0q7yc2c" sourceRef="ScriptTask_0o2r07o" targetRef="CallActivity_1bnkmaz" />
-    <bpmn:sequenceFlow id="SequenceFlow_1sq6kp6" sourceRef="ScriptTask_0b7senu" targetRef="CallActivity_0h88mep" />
     <bpmn:sequenceFlow id="SequenceFlow_0thd6ny" sourceRef="ScriptTask_12h8542" targetRef="CallActivity_0o89wmf" />
     <bpmn:sequenceFlow id="SequenceFlow_0477975" sourceRef="CallActivity_0o89wmf" targetRef="IntermediateThrowEvent_0ktwpki" />
-    <bpmn:sequenceFlow id="SequenceFlow_0h2oree" sourceRef="ScriptTask_08wim95" targetRef="CallActivity_0g98b71" />
     <bpmn:sequenceFlow id="SequenceFlow_19lsayh" sourceRef="ScriptTask_1mscu5w" targetRef="CallActivity_0jdzpem" />
     <bpmn:sequenceFlow id="SequenceFlow_10ng1vx" sourceRef="CallActivity_0jdzpem" targetRef="EndEvent_1oouvuh" />
     <bpmn:sequenceFlow id="SequenceFlow_1bevt3a" sourceRef="IntermediateCatchEvent_0pkvfun" targetRef="CallActivity_0cxst1i" />
-    <bpmn:sequenceFlow id="SequenceFlow_1ey6m1e" sourceRef="ScriptTask_1jj846g" targetRef="CallActivity_0v4mw2x" />
-    <bpmn:receiveTask id="Task_1b5t88h" name="Waiting for confirmation" messageRef="Message_0c4b2r5">
-      <bpmn:incoming>SequenceFlow_1fk37v7</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_16uz2t9</bpmn:outgoing>
-    </bpmn:receiveTask>
-    <bpmn:sequenceFlow id="SequenceFlow_1fk37v7" sourceRef="IntermediateCatchEvent_0vilb24" targetRef="Task_1b5t88h" />
-    <bpmn:sequenceFlow id="SequenceFlow_16uz2t9" sourceRef="Task_1b5t88h" targetRef="ScriptTask_08wim95" />
-    <bpmn:boundaryEvent id="BoundaryEvent_0clo9pv" attachedToRef="Task_1b5t88h">
-      <bpmn:outgoing>SequenceFlow_12qt5ci</bpmn:outgoing>
-      <bpmn:timerEventDefinition>
-        <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT2H</bpmn:timeDuration>
-      </bpmn:timerEventDefinition>
-    </bpmn:boundaryEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_12qt5ci" sourceRef="BoundaryEvent_0clo9pv" targetRef="EndEvent_0bh0kwx" />
     <bpmn:callActivity id="CallActivity_0v4mw2x" name="Call DoCreateSliceServiceOption&#10;" calledElement="DoCreateSliceServiceOption">
       <bpmn:extensionElements>
-        <camunda:in source="nstModelUuid" target="nstModelUuid" />
-        <camunda:in source="nstModelInvariantUuid" target="nstModelInvariantUuid" />
-        <camunda:in source="serviceProfile" target="serviceProfile" />
         <camunda:in source="msoRequestId" target="msoRequestId" />
         <camunda:in source="sliceTaskParams" target="sliceTaskParams" />
         <camunda:in source="resourceSharingLevel" target="resourceSharingLevel" />
@@ -436,17 +314,11 @@ css.sendSyncResponse(execution)</bpmn:script>
         <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
         <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
         <camunda:in source="serviceType" target="serviceType" />
-        <camunda:in source="nstSolution" target="nstSolution" />
-        <camunda:out source="sliceProfileTn" target="sliceProfileTn" />
-        <camunda:out source="sliceProfileCn" target="sliceProfileCn" />
-        <camunda:out source="sliceProfileAn" target="sliceProfileAn" />
       </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_1ey6m1e</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1f6dyxo</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1aaozcg</bpmn:outgoing>
     </bpmn:callActivity>
     <bpmn:sequenceFlow id="SequenceFlow_1aaozcg" sourceRef="CallActivity_0v4mw2x" targetRef="ScriptTask_0gb975b" />
-    <bpmn:sequenceFlow id="SequenceFlow_046irye" sourceRef="ServiceTask_0kd6p6p" targetRef="ScriptTask_1eo3m4q" />
-    <bpmn:sequenceFlow id="SequenceFlow_0jrclmc" sourceRef="ScriptTask_0l3d1ai" targetRef="IntermediateThrowEvent_1ex8ke9" />
     <bpmn:scriptTask id="ScriptTask_19uxoi8" name="Update AAI Status" scriptFormat="groovy">
       <bpmn:incoming>SequenceFlow_0n4xku8</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0kixzdj</bpmn:outgoing>
@@ -456,8 +328,81 @@ def css = new CreateSliceService()
 css.updateAAIOrchStatus(execution)</bpmn:script>
     </bpmn:scriptTask>
     <bpmn:sequenceFlow id="SequenceFlow_0kixzdj" sourceRef="ScriptTask_19uxoi8" targetRef="ScriptTask_1ef3voz" />
-    <bpmn:sequenceFlow id="Flow_1l8mfej" sourceRef="ScriptTask_1eo3m4q" targetRef="Activity_1ge49xu" />
-    <bpmn:callActivity id="Activity_1ge49xu" name="Handle NST Selection OOF request" calledElement="DoHandleOofRequest">
+    <bpmn:scriptTask id="ScriptTask_09mxr0w" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0jhqtls</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_12wo878</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def css = new CreateSliceService()
+css.sendSyncResponse(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_1ac05ww" name="Prepare Create OrchestrationTask" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0xmvg4v</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1x4n7an</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def css= new CreateSliceService()
+css.prepareCreateOrchestrationTask(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0xmvg4v" sourceRef="ServiceTask_0kd6p6p" targetRef="ScriptTask_1ac05ww" />
+    <bpmn:sequenceFlow id="SequenceFlow_1x4n7an" sourceRef="ScriptTask_1ac05ww" targetRef="CallActivity_0h88mep" />
+    <bpmn:sequenceFlow id="SequenceFlow_1dfon41" sourceRef="CallActivity_0h88mep" targetRef="CallActivity_139l55g" />
+    <bpmn:sequenceFlow id="SequenceFlow_0jhqtls" sourceRef="CallActivity_139l55g" targetRef="ScriptTask_09mxr0w" />
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_0gceuxu" name="Create Slice Service">
+      <bpmn:outgoing>SequenceFlow_14c2tav</bpmn:outgoing>
+      <bpmn:linkEventDefinition id="LinkEventDefinition_0wnloof" name="CreateSliceService" />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_14c2tav" sourceRef="IntermediateCatchEvent_0gceuxu" targetRef="ScriptTask_1ayg9y8" />
+    <bpmn:sequenceFlow id="SequenceFlow_00kcej9" sourceRef="CallActivity_0n47zoh" targetRef="IntermediateThrowEvent_1v96asi" />
+    <bpmn:sequenceFlow id="SequenceFlow_060j650" sourceRef="IntermediateCatchEvent_0vilb24" targetRef="ScriptTask_04qudo2" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0lpvnze" name="Goto Create Slice Service">
+      <bpmn:incoming>SequenceFlow_12wo878</bpmn:incoming>
+      <bpmn:linkEventDefinition id="LinkEventDefinition_1oxsvp3" name="CreateSliceService" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_12wo878" sourceRef="ScriptTask_09mxr0w" targetRef="IntermediateThrowEvent_0lpvnze" />
+    <bpmn:scriptTask id="ScriptTask_13roglo" name="Process NST Solutions" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1r2jtal</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1f6dyxo</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def css = new CreateSliceService()
+css.processNSTSolutions(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1f6dyxo" sourceRef="ScriptTask_13roglo" targetRef="CallActivity_0v4mw2x" />
+    <bpmn:receiveTask id="ReceiveTask_02qzb6i" name="Waiting for confirmation" />
+    <bpmn:endEvent id="EndEvent_0bz8a65">
+      <bpmn:incoming>SequenceFlow_1vesvto</bpmn:incoming>
+      <bpmn:errorEventDefinition id="ErrorEventDefinition_1hni1r1" errorRef="Error_0p2naox" />
+    </bpmn:endEvent>
+    <bpmn:boundaryEvent id="BoundaryEvent_0p4swyp" attachedToRef="ReceiveTask_02qzb6i">
+      <bpmn:outgoing>SequenceFlow_1vesvto</bpmn:outgoing>
+      <bpmn:timerEventDefinition id="TimerEventDefinition_112p48l">
+        <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT2H</bpmn:timeDuration>
+      </bpmn:timerEventDefinition>
+    </bpmn:boundaryEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1vesvto" sourceRef="BoundaryEvent_0p4swyp" targetRef="EndEvent_0bz8a65" />
+    <bpmn:scriptTask id="ScriptTask_04qudo2" name="Prepare Get User Options" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_060j650</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0ti386y</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def css = new CreateSliceService()
+css.prepareGetUserOptions(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0ti386y" sourceRef="ScriptTask_04qudo2" targetRef="CallActivity_1vu3zcv" />
+    <bpmn:callActivity id="CallActivity_1vu3zcv" name="Call HandleOrchestrationTask" calledElement="HandleOrchestrationTask">
+      <bpmn:extensionElements>
+        <camunda:out source="statusCode" target="CSSOT_dbResponseCode" />
+        <camunda:out source="response" target="CSSOT_dbResponse" />
+        <camunda:in source="CSSOT_taskId" target="taskId" />
+        <camunda:in source="msoRequestId" target="requestId" />
+        <camunda:in source="CSSOT_name" target="taskName" />
+        <camunda:in source="CSSOT_status" target="taskStatus" />
+        <camunda:in source="CSSOT_isManual" target="isManual" />
+        <camunda:in source="CSSOT_paramJson" target="paramJson" />
+        <camunda:in source="CSSOT_requestMethod" target="method" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0ti386y</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1whq7vc</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_1whq7vc" sourceRef="CallActivity_1vu3zcv" targetRef="ScriptTask_1jgtb0y" />
+    <bpmn:callActivity id="CallActivity_0xf2g6c" name="Handle NST Selection OOF request" calledElement="DoHandleOofRequest">
       <bpmn:extensionElements>
         <camunda:in source="nstSelectionUrl" target="apiPath" />
         <camunda:in source="nstSelection_correlator" target="correlator" />
@@ -467,18 +412,18 @@ css.updateAAIOrchStatus(execution)</bpmn:script>
         <camunda:out source="asyncCallbackResponse" target="nstSelection_oofResponse" />
         <camunda:in source="nstSelection_oofRequest" target="oofRequest" />
       </bpmn:extensionElements>
-      <bpmn:incoming>Flow_1l8mfej</bpmn:incoming>
-      <bpmn:outgoing>Flow_0vq2rmw</bpmn:outgoing>
+      <bpmn:incoming>SequenceFlow_02sve8o</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1r2jtal</bpmn:outgoing>
     </bpmn:callActivity>
-    <bpmn:sequenceFlow id="Flow_0vq2rmw" sourceRef="Activity_1ge49xu" targetRef="Activity_12v8ykp" />
-    <bpmn:scriptTask id="Activity_12v8ykp" name="Process NST Solutions" scriptFormat="groovy">
-      <bpmn:incoming>Flow_0vq2rmw</bpmn:incoming>
-      <bpmn:outgoing>Flow_1u4srgq</bpmn:outgoing>
+    <bpmn:sequenceFlow id="SequenceFlow_1r2jtal" sourceRef="CallActivity_0xf2g6c" targetRef="ScriptTask_13roglo" />
+    <bpmn:scriptTask id="ScriptTask_1ayg9y8" name="Prepare NST Selection" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_14c2tav</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_02sve8o</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def css = new CreateSliceService()
-css.processNSTSolutions(execution)</bpmn:script>
+css.prepareSelectNSTRequest(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="Flow_1u4srgq" sourceRef="Activity_12v8ykp" targetRef="ScriptTask_0o2r07o" />
+    <bpmn:sequenceFlow id="SequenceFlow_02sve8o" sourceRef="ScriptTask_1ayg9y8" targetRef="CallActivity_0xf2g6c" />
   </bpmn:process>
   <bpmn:message id="Message_0c4b2r5" name="SliceServiceTask" />
   <bpmn:error id="Error_03akl5v" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
@@ -486,360 +431,334 @@ css.processNSTSolutions(execution)</bpmn:script>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateSliceService">
       <bpmndi:BPMNEdge id="SequenceFlow_0kixzdj_di" bpmnElement="SequenceFlow_0kixzdj">
-        <di:waypoint x="745" y="801" />
-        <di:waypoint x="823" y="801" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0jrclmc_di" bpmnElement="SequenceFlow_0jrclmc">
-        <di:waypoint x="1540" y="121" />
-        <di:waypoint x="1584" y="121" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_046irye_di" bpmnElement="SequenceFlow_046irye">
-        <di:waypoint x="650" y="121" />
-        <di:waypoint x="685" y="121" />
+        <di:waypoint x="684" y="965" />
+        <di:waypoint x="764" y="965" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1aaozcg_di" bpmnElement="SequenceFlow_1aaozcg">
-        <di:waypoint x="1115" y="289" />
-        <di:waypoint x="1193" y="289" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_12qt5ci_di" bpmnElement="SequenceFlow_12qt5ci">
-        <di:waypoint x="335" y="514" />
-        <di:waypoint x="335" y="611" />
-        <di:waypoint x="335" y="593" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_16uz2t9_di" bpmnElement="SequenceFlow_16uz2t9">
-        <di:waypoint x="385" y="456" />
-        <di:waypoint x="467" y="456" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1fk37v7_di" bpmnElement="SequenceFlow_1fk37v7">
-        <di:waypoint x="214" y="456" />
-        <di:waypoint x="285" y="456" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1ey6m1e_di" bpmnElement="SequenceFlow_1ey6m1e">
-        <di:waypoint x="930" y="289" />
-        <di:waypoint x="1015" y="289" />
+        <di:waypoint x="980" y="350" />
+        <di:waypoint x="1060" y="350" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1bevt3a_di" bpmnElement="SequenceFlow_1bevt3a">
-        <di:waypoint x="214" y="801" />
-        <di:waypoint x="285" y="801" />
+        <di:waypoint x="213" y="965" />
+        <di:waypoint x="274" y="965" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_10ng1vx_di" bpmnElement="SequenceFlow_10ng1vx">
-        <di:waypoint x="1471" y="645" />
-        <di:waypoint x="1584" y="645" />
+        <di:waypoint x="1294" y="805" />
+        <di:waypoint x="1396" y="805" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_19lsayh_di" bpmnElement="SequenceFlow_19lsayh">
-        <di:waypoint x="1293" y="645" />
-        <di:waypoint x="1371" y="645" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0h2oree_di" bpmnElement="SequenceFlow_0h2oree">
-        <di:waypoint x="567" y="456" />
-        <di:waypoint x="645" y="456" />
+        <di:waypoint x="1124" y="805" />
+        <di:waypoint x="1194" y="805" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0477975_di" bpmnElement="SequenceFlow_0477975">
-        <di:waypoint x="1471" y="456" />
-        <di:waypoint x="1584" y="456" />
+        <di:waypoint x="1294" y="620" />
+        <di:waypoint x="1396" y="620" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0thd6ny_di" bpmnElement="SequenceFlow_0thd6ny">
-        <di:waypoint x="1293" y="456" />
-        <di:waypoint x="1371" y="456" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1sq6kp6_di" bpmnElement="SequenceFlow_1sq6kp6">
-        <di:waypoint x="385" y="289" />
-        <di:waypoint x="467" y="289" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0q7yc2c_di" bpmnElement="SequenceFlow_0q7yc2c">
-        <di:waypoint x="1240" y="121" />
-        <di:waypoint x="1280" y="121" />
+        <di:waypoint x="1124" y="620" />
+        <di:waypoint x="1194" y="620" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1qv8qw1_di" bpmnElement="SequenceFlow_1qv8qw1">
-        <di:waypoint x="1297" y="801" />
-        <di:waypoint x="1375" y="801" />
+        <di:waypoint x="1174" y="965" />
+        <di:waypoint x="1244" y="965" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0lbdfmt_di" bpmnElement="SequenceFlow_0lbdfmt">
-        <di:waypoint x="1105" y="801" />
-        <di:waypoint x="1197" y="801" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1o1tu0f_di" bpmnElement="SequenceFlow_1o1tu0f">
-        <di:waypoint x="214" y="289" />
-        <di:waypoint x="285" y="289" />
+        <di:waypoint x="1034" y="965" />
+        <di:waypoint x="1074" y="965" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0t094g7_di" bpmnElement="SequenceFlow_0t094g7">
-        <di:waypoint x="510" y="121" />
-        <di:waypoint x="550" y="121" />
+        <di:waypoint x="510" y="122" />
+        <di:waypoint x="564" y="122" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_11rbv41_di" bpmnElement="SequenceFlow_11rbv41">
-        <di:waypoint x="1475" y="801" />
-        <di:waypoint x="1585" y="801" />
+        <di:waypoint x="1344" y="965" />
+        <di:waypoint x="1396" y="965" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0klb3ey_di" bpmnElement="SequenceFlow_0klb3ey">
-        <di:waypoint x="923" y="801" />
-        <di:waypoint x="1005" y="801" />
+        <di:waypoint x="864" y="965" />
+        <di:waypoint x="934" y="965" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0n4xku8_di" bpmnElement="SequenceFlow_0n4xku8">
-        <di:waypoint x="538" y="801" />
-        <di:waypoint x="645" y="801" />
+        <di:waypoint x="489" y="965" />
+        <di:waypoint x="584" y="965" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="584" y="783" width="18" height="14" />
+          <dc:Bounds x="529" y="947" width="18" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1c6ka9h_di" bpmnElement="SequenceFlow_1c6ka9h">
-        <di:waypoint x="513" y="826" />
-        <di:waypoint x="513" y="926" />
+        <di:waypoint x="464" y="990" />
+        <di:waypoint x="464" y="1090" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="521" y="832" width="15" height="14" />
+          <dc:Bounds x="472" y="998" width="15" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0mlrlbv_di" bpmnElement="SequenceFlow_0mlrlbv">
-        <di:waypoint x="385" y="801" />
-        <di:waypoint x="488" y="801" />
+        <di:waypoint x="374" y="965" />
+        <di:waypoint x="439" y="965" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_18kur12_di" bpmnElement="SequenceFlow_18kur12">
-        <di:waypoint x="1293" y="289" />
-        <di:waypoint x="1371" y="289" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0it2g9j_di" bpmnElement="SequenceFlow_0it2g9j">
-        <di:waypoint x="1471" y="289" />
-        <di:waypoint x="1584" y="289" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1g8m7tq_di" bpmnElement="SequenceFlow_1g8m7tq">
-        <di:waypoint x="745" y="289" />
-        <di:waypoint x="830" y="289" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1p8vxo5_di" bpmnElement="SequenceFlow_1p8vxo5">
-        <di:waypoint x="567" y="289" />
-        <di:waypoint x="645" y="289" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1t19ips_di" bpmnElement="SequenceFlow_1t19ips">
-        <di:waypoint x="1380" y="121" />
-        <di:waypoint x="1440" y="121" />
+        <di:waypoint x="1160" y="350" />
+        <di:waypoint x="1220" y="350" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_038lb9m_di" bpmnElement="SequenceFlow_038lb9m">
-        <di:waypoint x="1065" y="481" />
-        <di:waypoint x="1065" y="645" />
-        <di:waypoint x="1193" y="645" />
+        <di:waypoint x="884" y="645" />
+        <di:waypoint x="884" y="805" />
+        <di:waypoint x="1024" y="805" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1067" y="560" width="27" height="14" />
+          <dc:Bounds x="886" y="722" width="27" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_12t5exy_di" bpmnElement="SequenceFlow_12t5exy">
-        <di:waypoint x="1090" y="456" />
-        <di:waypoint x="1193" y="456" />
+        <di:waypoint x="909" y="620" />
+        <di:waypoint x="1024" y="620" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1121.5" y="438" width="42" height="14" />
+          <dc:Bounds x="911" y="602" width="42" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_197cm2e_di" bpmnElement="SequenceFlow_197cm2e">
-        <di:waypoint x="930" y="456" />
-        <di:waypoint x="1040" y="456" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1cv0wop_di" bpmnElement="SequenceFlow_1cv0wop">
-        <di:waypoint x="745" y="456" />
-        <di:waypoint x="830" y="456" />
+        <di:waypoint x="804" y="620" />
+        <di:waypoint x="859" y="620" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_07e12rt_di" bpmnElement="SequenceFlow_07e12rt">
-        <di:waypoint x="350" y="121" />
-        <di:waypoint x="410" y="121" />
+        <di:waypoint x="350" y="122" />
+        <di:waypoint x="410" y="122" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_03s744c_di" bpmnElement="SequenceFlow_03s744c">
-        <di:waypoint x="214" y="121" />
-        <di:waypoint x="250" y="121" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_1l8mfej_di" bpmnElement="Flow_1l8mfej">
-        <di:waypoint x="785" y="121" />
-        <di:waypoint x="830" y="121" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_0vq2rmw_di" bpmnElement="Flow_0vq2rmw">
-        <di:waypoint x="930" y="121" />
-        <di:waypoint x="1000" y="121" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_1u4srgq_di" bpmnElement="Flow_1u4srgq">
-        <di:waypoint x="1100" y="121" />
-        <di:waypoint x="1140" y="121" />
+        <di:waypoint x="214" y="122" />
+        <di:waypoint x="250" y="122" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="StartEvent_1nbljfd_di" bpmnElement="StartEvent_1nbljfd">
-        <dc:Bounds x="178" y="103" width="36" height="36" />
+        <dc:Bounds x="178" y="104" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="156" y="146" width="82" height="40" />
+          <dc:Bounds x="156" y="147" width="82" height="40" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="IntermediateCatchEvent_0vilb24_di" bpmnElement="IntermediateCatchEvent_0vilb24">
-        <dc:Bounds x="178" y="438" width="36" height="36" />
+        <dc:Bounds x="177" y="602" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="168" y="481" width="60" height="27" />
+          <dc:Bounds x="167" y="645" width="60" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1jgtb0y_di" bpmnElement="ScriptTask_1jgtb0y">
-        <dc:Bounds x="830" y="416" width="100" height="80" />
+        <dc:Bounds x="704" y="580" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_0elbczl_di" bpmnElement="ExclusiveGateway_0elbczl" isMarkerVisible="true">
-        <dc:Bounds x="1040" y="431" width="50" height="50" />
+        <dc:Bounds x="859" y="595" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1027" y="413" width="78" height="14" />
+          <dc:Bounds x="846" y="577" width="78" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_139l55g_di" bpmnElement="CallActivity_139l55g">
-        <dc:Bounds x="645" y="249" width="100" height="80" />
+        <dc:Bounds x="1060" y="84" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="IntermediateThrowEvent_1v96asi_di" bpmnElement="IntermediateThrowEvent_1v96asi">
-        <dc:Bounds x="1584" y="271" width="36" height="36" />
+        <dc:Bounds x="1402" y="332" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1567" y="312" width="81" height="27" />
+          <dc:Bounds x="1385" y="373" width="81" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_0gb975b_di" bpmnElement="ScriptTask_0gb975b">
-        <dc:Bounds x="1193" y="249" width="100" height="80" />
+        <dc:Bounds x="1060" y="310" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_18eld2o_di" bpmnElement="ExclusiveGateway_18eld2o" isMarkerVisible="true">
-        <dc:Bounds x="488" y="776" width="50" height="50" />
+        <dc:Bounds x="439" y="940" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="483" y="746" width="60" height="27" />
+          <dc:Bounds x="434" y="910" width="60" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_0x406rw_di" bpmnElement="EndEvent_0x406rw">
-        <dc:Bounds x="495" y="926" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0l3d1ai_di" bpmnElement="ScriptTask_0l3d1ai">
-        <dc:Bounds x="1440" y="81" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="CallActivity_1bnkmaz_di" bpmnElement="CallActivity_1bnkmaz">
-        <dc:Bounds x="1280" y="81" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0o2r07o_di" bpmnElement="ScriptTask_0o2r07o">
-        <dc:Bounds x="1140" y="81" width="100" height="80" />
+        <dc:Bounds x="446" y="1090" width="36" height="36" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1tc44ge_di" bpmnElement="ScriptTask_1tc44ge">
-        <dc:Bounds x="250" y="81" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_0yce5sp_di" bpmnElement="Activity_12v8ykp">
-        <dc:Bounds x="1000" y="81" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_0uymgnp_di" bpmnElement="Activity_1ge49xu">
-        <dc:Bounds x="830" y="81" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1eo3m4q_di" bpmnElement="ScriptTask_1eo3m4q">
-        <dc:Bounds x="685" y="81" width="100" height="80" />
+        <dc:Bounds x="250" y="82" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0kd6p6p_di" bpmnElement="ServiceTask_0kd6p6p">
-        <dc:Bounds x="550" y="81" width="100" height="80" />
+        <dc:Bounds x="564" y="82" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1xxag1o_di" bpmnElement="ScriptTask_1xxag1o">
-        <dc:Bounds x="410" y="81" width="100" height="80" />
+        <dc:Bounds x="410" y="82" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="SubProcess_1yv9i68_di" bpmnElement="SubProcess_1yv9i68" isExpanded="true">
-        <dc:Bounds x="685" y="1080" width="781" height="196" />
+        <dc:Bounds x="688" y="1072" width="781" height="196" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_08mlzwz_di" bpmnElement="SequenceFlow_08mlzwz">
-        <di:waypoint x="1079" y="1184" />
-        <di:waypoint x="1353" y="1184" />
+        <di:waypoint x="1082" y="1176" />
+        <di:waypoint x="1356" y="1176" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1w67v6s_di" bpmnElement="SequenceFlow_1w67v6s">
-        <di:waypoint x="751" y="1184" />
-        <di:waypoint x="979" y="1184" />
+        <di:waypoint x="754" y="1176" />
+        <di:waypoint x="982" y="1176" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="StartEvent_1omdx56_di" bpmnElement="StartEvent_1omdx56">
-        <dc:Bounds x="715" y="1166" width="36" height="36" />
+        <dc:Bounds x="718" y="1158" width="36" height="36" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_1jx3026_di" bpmnElement="EndEvent_1jx3026">
-        <dc:Bounds x="1353" y="1166" width="36" height="36" />
+        <dc:Bounds x="1356" y="1158" width="36" height="36" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1swzdpw_di" bpmnElement="ScriptTask_1swzdpw">
-        <dc:Bounds x="979" y="1144" width="100" height="80" />
+        <dc:Bounds x="982" y="1136" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1ef3voz_di" bpmnElement="ScriptTask_1ef3voz">
-        <dc:Bounds x="823" y="761" width="100" height="80" />
+        <dc:Bounds x="764" y="925" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_05h01gx_di" bpmnElement="EndEvent_05h01gx">
-        <dc:Bounds x="1585" y="783" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1593" y="826" width="20" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="IntermediateThrowEvent_1ex8ke9_di" bpmnElement="IntermediateThrowEvent_1ex8ke9">
-        <dc:Bounds x="1584" y="103" width="36" height="36" />
+        <dc:Bounds x="1396" y="947" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1564" y="144" width="87" height="27" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="IntermediateCatchEvent_1wii8im_di" bpmnElement="IntermediateCatchEvent_1wii8im">
-        <dc:Bounds x="178" y="271" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="171" y="314" width="60" height="27" />
+          <dc:Bounds x="1404" y="990" width="20" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1ssh2l9_di" bpmnElement="ScriptTask_1ssh2l9">
-        <dc:Bounds x="1197" y="761" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0b7senu_di" bpmnElement="ScriptTask_0b7senu">
-        <dc:Bounds x="285" y="249" width="100" height="80" />
+        <dc:Bounds x="1074" y="925" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_0h88mep_di" bpmnElement="CallActivity_0h88mep">
-        <dc:Bounds x="467" y="249" width="100" height="80" />
+        <dc:Bounds x="890" y="82" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_0n47zoh_di" bpmnElement="CallActivity_0n47zoh">
-        <dc:Bounds x="1371" y="249" width="100" height="80" />
+        <dc:Bounds x="1220" y="310" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_12h8542_di" bpmnElement="ScriptTask_12h8542">
-        <dc:Bounds x="1193" y="416" width="100" height="80" />
+        <dc:Bounds x="1024" y="580" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_0o89wmf_di" bpmnElement="CallActivity_0o89wmf">
-        <dc:Bounds x="1371" y="416" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="CallActivity_0g98b71_di" bpmnElement="CallActivity_0g98b71">
-        <dc:Bounds x="645" y="416" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_08wim95_di" bpmnElement="ScriptTask_08wim95">
-        <dc:Bounds x="467" y="416" width="100" height="80" />
+        <dc:Bounds x="1194" y="580" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_0jdzpem_di" bpmnElement="CallActivity_0jdzpem">
-        <dc:Bounds x="1371" y="605" width="100" height="80" />
+        <dc:Bounds x="1194" y="765" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1mscu5w_di" bpmnElement="ScriptTask_1mscu5w">
-        <dc:Bounds x="1193" y="605" width="100" height="80" />
+        <dc:Bounds x="1024" y="765" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="IntermediateCatchEvent_0pkvfun_di" bpmnElement="IntermediateCatchEvent_0pkvfun">
-        <dc:Bounds x="178" y="783" width="36" height="36" />
+        <dc:Bounds x="177" y="947" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="168" y="826" width="66" height="14" />
+          <dc:Bounds x="167" y="990" width="66" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="IntermediateThrowEvent_0ktwpki_di" bpmnElement="IntermediateThrowEvent_0ktwpki">
-        <dc:Bounds x="1584" y="438" width="36" height="36" />
+        <dc:Bounds x="1396" y="602" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1577" y="479" width="67" height="27" />
+          <dc:Bounds x="1389" y="643" width="67" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_15pl4ld_di" bpmnElement="CallActivity_15pl4ld">
-        <dc:Bounds x="1005" y="761" width="100" height="80" />
+        <dc:Bounds x="934" y="925" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_1oouvuh_di" bpmnElement="EndEvent_1oouvuh">
-        <dc:Bounds x="1584" y="627" width="36" height="36" />
+        <dc:Bounds x="1396" y="787" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1592" y="670" width="20" height="14" />
+          <dc:Bounds x="1404" y="830" width="20" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0esr949_di" bpmnElement="ServiceTask_0esr949">
-        <dc:Bounds x="1375" y="761" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1jj846g_di" bpmnElement="ScriptTask_1jj846g">
-        <dc:Bounds x="830" y="249" width="100" height="80" />
+        <dc:Bounds x="1244" y="925" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_0cxst1i_di" bpmnElement="CallActivity_0cxst1i">
-        <dc:Bounds x="285" y="761" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_0bh0kwx_di" bpmnElement="EndEvent_0bh0kwx">
-        <dc:Bounds x="317" y="593" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ReceiveTask_0zkpdpa_di" bpmnElement="Task_1b5t88h">
-        <dc:Bounds x="285" y="416" width="100" height="80" />
+        <dc:Bounds x="274" y="925" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_0v4mw2x_di" bpmnElement="CallActivity_0v4mw2x">
-        <dc:Bounds x="1015" y="249" width="100" height="80" />
+        <dc:Bounds x="880" y="310" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_19uxoi8_di" bpmnElement="ScriptTask_19uxoi8">
-        <dc:Bounds x="645" y="761" width="100" height="80" />
+        <dc:Bounds x="584" y="925" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_09mxr0w_di" bpmnElement="ScriptTask_09mxr0w">
+        <dc:Bounds x="1230" y="84" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1ac05ww_di" bpmnElement="ScriptTask_1ac05ww">
+        <dc:Bounds x="720" y="82" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xmvg4v_di" bpmnElement="SequenceFlow_0xmvg4v">
+        <di:waypoint x="664" y="122" />
+        <di:waypoint x="720" y="122" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1x4n7an_di" bpmnElement="SequenceFlow_1x4n7an">
+        <di:waypoint x="820" y="122" />
+        <di:waypoint x="890" y="122" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dfon41_di" bpmnElement="SequenceFlow_1dfon41">
+        <di:waypoint x="990" y="122" />
+        <di:waypoint x="1060" y="122" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jhqtls_di" bpmnElement="SequenceFlow_0jhqtls">
+        <di:waypoint x="1160" y="124" />
+        <di:waypoint x="1230" y="124" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0gceuxu_di" bpmnElement="IntermediateCatchEvent_0gceuxu">
+        <dc:Bounds x="168" y="332" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="161" y="375" width="60" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_14c2tav_di" bpmnElement="SequenceFlow_14c2tav">
+        <di:waypoint x="204" y="350" />
+        <di:waypoint x="310" y="350" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00kcej9_di" bpmnElement="SequenceFlow_00kcej9">
+        <di:waypoint x="1320" y="350" />
+        <di:waypoint x="1402" y="350" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_060j650_di" bpmnElement="SequenceFlow_060j650">
+        <di:waypoint x="213" y="620" />
+        <di:waypoint x="394" y="620" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0lpvnze_di" bpmnElement="IntermediateThrowEvent_0lpvnze">
+        <dc:Bounds x="1402" y="106" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1382" y="147" width="87" height="27" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_12wo878_di" bpmnElement="SequenceFlow_12wo878">
+        <di:waypoint x="1330" y="124" />
+        <di:waypoint x="1402" y="124" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_13roglo_di" bpmnElement="ScriptTask_13roglo">
+        <dc:Bounds x="710" y="310" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1f6dyxo_di" bpmnElement="SequenceFlow_1f6dyxo">
+        <di:waypoint x="810" y="350" />
+        <di:waypoint x="880" y="350" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ReceiveTask_02qzb6i_di" bpmnElement="ReceiveTask_02qzb6i">
+        <dc:Bounds x="254" y="580" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0bz8a65_di" bpmnElement="EndEvent_0bz8a65">
+        <dc:Bounds x="286" y="757" width="36" height="36" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="BoundaryEvent_15igwk2_di" bpmnElement="BoundaryEvent_0clo9pv">
-        <dc:Bounds x="317" y="478" width="36" height="36" />
+      <bpmndi:BPMNShape id="BoundaryEvent_0p4swyp_di" bpmnElement="BoundaryEvent_0p4swyp">
+        <dc:Bounds x="286" y="642" width="36" height="36" />
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vesvto_di" bpmnElement="SequenceFlow_1vesvto">
+        <di:waypoint x="304" y="678" />
+        <di:waypoint x="304" y="757" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_04qudo2_di" bpmnElement="ScriptTask_04qudo2">
+        <dc:Bounds x="394" y="580" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ti386y_di" bpmnElement="SequenceFlow_0ti386y">
+        <di:waypoint x="494" y="620" />
+        <di:waypoint x="534" y="620" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1vu3zcv_di" bpmnElement="CallActivity_1vu3zcv">
+        <dc:Bounds x="534" y="580" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1whq7vc_di" bpmnElement="SequenceFlow_1whq7vc">
+        <di:waypoint x="634" y="620" />
+        <di:waypoint x="704" y="620" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0xf2g6c_di" bpmnElement="CallActivity_0xf2g6c">
+        <dc:Bounds x="520" y="310" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1r2jtal_di" bpmnElement="SequenceFlow_1r2jtal">
+        <di:waypoint x="620" y="350" />
+        <di:waypoint x="710" y="350" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1ayg9y8_di" bpmnElement="ScriptTask_1ayg9y8">
+        <dc:Bounds x="310" y="310" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_02sve8o_di" bpmnElement="SequenceFlow_02sve8o">
+        <di:waypoint x="410" y="350" />
+        <di:waypoint x="520" y="350" />
+      </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn:definitions>
index 9c090e0..e42f001 100644 (file)
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.2.3">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
   <bpmn:process id="DoAllocateNSIandNSSI" name="DoAllocateNSIandNSSI" isExecutable="true">
-    <bpmn:scriptTask id="Task_09nzhwk" name="Generate NSI and create NSI in AAI with E2ESS and NSI relationship" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1e40h52</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1uiz85h</bpmn:outgoing>
+    <bpmn:startEvent id="StartEvent_1ym3sha" name="Start">
+      <bpmn:outgoing>SequenceFlow_0xgfj7z</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0xgfj7z" sourceRef="StartEvent_1ym3sha" targetRef="Task_027u6m6" />
+    <bpmn:scriptTask id="Task_027u6m6" name="Preprocess Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0xgfj7z</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_00aukg6</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.createNSIinAAI(execution)</bpmn:script>
+def dansi = new DoAllocateNSIandNSSI()
+dansi.preProcessRequest(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_0qorxd9" name="Process NSI options" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_00aukg6</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ggo6s5</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dansi = new DoAllocateNSIandNSSI()
+dansi.retriveSliceOption(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_0b9d9l0" name="Is nsi option available?" default="SequenceFlow_1h5bw41">
-      <bpmn:incoming>SequenceFlow_0dj0jvq</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1h5bw41</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0ueeeca</bpmn:outgoing>
+    <bpmn:sequenceFlow id="SequenceFlow_00aukg6" sourceRef="Task_027u6m6" targetRef="ScriptTask_0qorxd9" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_00pt1ek" name="Is nsi option available?" default="SequenceFlow_0c986i9">
+      <bpmn:incoming>SequenceFlow_1ggo6s5</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0c986i9</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_03ye8m4</bpmn:outgoing>
     </bpmn:exclusiveGateway>
-    <bpmn:scriptTask id="ScriptTask_1ehyrsg" name="Update AAI relationship for E2ESS and NSI" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0ueeeca</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0xfhbqw</bpmn:outgoing>
+    <bpmn:sequenceFlow id="SequenceFlow_1ggo6s5" sourceRef="ScriptTask_0qorxd9" targetRef="ExclusiveGateway_00pt1ek" />
+    <bpmn:sequenceFlow id="SequenceFlow_0c986i9" sourceRef="ExclusiveGateway_00pt1ek" targetRef="ScriptTask_1tizl6b" />
+    <bpmn:scriptTask id="ScriptTask_1tizl6b" name="create NSI in AAI and Update relationship" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0c986i9</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1k3cspv</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcsi = new DoAllocateNSIandNSSI()
-dcsi.updateRelationship(execution)</bpmn:script>
+def dcnsio = new DoAllocateNSIandNSSI()
+dcnsio.createNSIinAAI(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:callActivity id="CallActivity_1s23hty" name="Call Decompose Service" calledElement="DecomposeService">
+    <bpmn:sequenceFlow id="SequenceFlow_1k3cspv" sourceRef="ScriptTask_1tizl6b" targetRef="ScriptTask_1r6kuwy" />
+    <bpmn:sequenceFlow id="SequenceFlow_03ye8m4" sourceRef="ExclusiveGateway_00pt1ek" targetRef="ScriptTask_07sgklo">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isNSIOptionAvailable" )  == true)}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0fx1nyj" name="GoTo Create Slice Profile">
+      <bpmn:incoming>SequenceFlow_0t0wddg</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_05ovikm</bpmn:incoming>
+      <bpmn:linkEventDefinition name="CreateSliceProfile" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:intermediateCatchEvent id="IntermediateThrowEvent_0k54pph" name="Create Slice Profile">
+      <bpmn:outgoing>SequenceFlow_0ct8yh4</bpmn:outgoing>
+      <bpmn:linkEventDefinition name="CreateSliceProfile" />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0ct8yh4" sourceRef="IntermediateThrowEvent_0k54pph" targetRef="ExclusiveGateway_00ufetn" />
+    <bpmn:parallelGateway id="ExclusiveGateway_00ufetn">
+      <bpmn:incoming>SequenceFlow_0ct8yh4</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1m68yca</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0k5iu2n</bpmn:outgoing>
+    </bpmn:parallelGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1m68yca" sourceRef="ExclusiveGateway_00ufetn" targetRef="Task_1tv7jy5" />
+    <bpmn:sequenceFlow id="SequenceFlow_0k5iu2n" sourceRef="ExclusiveGateway_00ufetn" targetRef="Task_1en3luv" />
+    <bpmn:callActivity id="CallActivity_1yh9tiq" name="Call DoAllocateNSSI(RAN)" calledElement="DoAllocateNSSI">
       <bpmn:extensionElements>
         <camunda:in source="msoRequestId" target="msoRequestId" />
-        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
-        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
         <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="nsstInput" target="nsstInput" />
+        <camunda:in source="serviceProfile" target="serviceProfile" />
+        <camunda:in source="sliceProfileTn" target="sliceProfileTn" />
+        <camunda:in source="sliceProfileCn" target="sliceProfileCn" />
+        <camunda:in source="sliceProfileAn" target="sliceProfileAn" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+        <camunda:in source="uuiRequest" target="uuiRequest" />
+        <camunda:in source="nsiServiceInstanceId" target="nsiServiceInstanceId" />
+        <camunda:in source="nsiServiceInstanceName" target="nsiServiceInstanceName" />
+        <camunda:in source="nssiserviceModelInfo" target="nssiserviceModelInfo" />
+        <camunda:in source="sliceTaskParams" target="sliceTaskParams" />
+        <camunda:in source="taskId" target="CSSOT_taskId" />
+        <camunda:in source="taskName" target="CSSOT_name" />
+        <camunda:in source="taskStatus" target="CSSOT_status" />
+        <camunda:in source="isManual" target="CSSOT_isManual" />
+        <camunda:in source="isNSIOptionAvailable" target="isNSIOptionAvailable" />
+        <camunda:in source="anSliceTaskInfo" target="sliceTaskInfo" />
+        <camunda:out source="nssiAllocateResult" target="anNssiAllocateResult" />
+        <camunda:in source="AnAllocateNssiNbiRequest" target="nbiRequest" />
       </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_1h5bw41</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1e40h52</bpmn:outgoing>
+      <bpmn:incoming>SequenceFlow_0npsyye</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1xb5nx1</bpmn:outgoing>
     </bpmn:callActivity>
-    <bpmn:scriptTask id="ScriptTask_1q3ftu4" name="Prepare NSSI model info and instance id" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0xfhbqw</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0uhaps2</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcsi = new DoAllocateNSIandNSSI()
-dcsi.prepareNssiModelInfo(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:startEvent id="allocateslice_StartEvent" name="allocatensi_StartEvent">
-      <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing>
-    </bpmn:startEvent>
-    <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="Preprocess Request" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0khtova</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoAllocateNSIandNSSI()
-dcso.preProcessRequest(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_0o93dvp" name="read NSI options from request DB" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0khtova</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0dj0jvq</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dansi = new DoAllocateNSIandNSSI()
-dansi.retriveSliceOption(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:callActivity id="CallActivity_1k1oonn" name="Call Decompose Service" calledElement="DecomposeService">
+    <bpmn:sequenceFlow id="SequenceFlow_1hfjn79" sourceRef="Task_1tv7jy5" targetRef="ScriptTask_1r2li91" />
+    <bpmn:callActivity id="CallActivity_1ixah3o" name="Call DoAllocateNSSI(Core)" calledElement="DoAllocateNSSI">
       <bpmn:extensionElements>
         <camunda:in source="msoRequestId" target="msoRequestId" />
-        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
-        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
         <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="nsstInput" target="nsstInput" />
+        <camunda:in source="serviceProfile" target="serviceProfile" />
+        <camunda:in source="sliceProfileTn" target="sliceProfileTn" />
+        <camunda:in source="sliceProfileCn" target="sliceProfileCn" />
+        <camunda:in source="sliceProfileAn" target="sliceProfileAn" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+        <camunda:in source="uuiRequest" target="uuiRequest" />
+        <camunda:in source="nsiServiceInstanceId" target="nsiServiceInstanceId" />
+        <camunda:in source="nsiServiceInstanceName" target="nsiServiceInstanceName" />
+        <camunda:in source="nssiserviceModelInfo" target="nssiserviceModelInfo" />
+        <camunda:in source="sliceTaskParams" target="sliceTaskParams" />
+        <camunda:in source="taskId" target="CSSOT_taskId" />
+        <camunda:in source="taskName" target="CSSOT_name" />
+        <camunda:in source="taskStatus" target="CSSOT_status" />
+        <camunda:in source="isManual" target="CSSOT_isManual" />
+        <camunda:in source="isNSIOptionAvailable" target="isNSIOptionAvailable" />
+        <camunda:in source="cnSliceTaskInfo" target="sliceTaskInfo" />
+        <camunda:in source="domainType" target="domainType" />
+        <camunda:out source="nssiAllocateResult" target="cnNssiAllocateResult" />
+        <camunda:in source="CnAllocateNssiNbiRequest" target="nbiRequest" />
       </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_1dhpkhd</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0hxky5e</bpmn:outgoing>
+      <bpmn:incoming>SequenceFlow_0cwbtmr</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1l74seh</bpmn:outgoing>
     </bpmn:callActivity>
-    <bpmn:scriptTask id="ScriptTask_0gunols" name="Get one NSST Info" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1uiz85h</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_1ui528w</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1dhpkhd</bpmn:outgoing>
+    <bpmn:sequenceFlow id="SequenceFlow_0f36cu2" sourceRef="Task_1en3luv" targetRef="Task_1g8n8iz" />
+    <bpmn:sequenceFlow id="SequenceFlow_1xb5nx1" sourceRef="CallActivity_1yh9tiq" targetRef="ScriptTask_0mls87v" />
+    <bpmn:parallelGateway id="ExclusiveGateway_19ru3hp">
+      <bpmn:incoming>SequenceFlow_0xx5bwa</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0jqxxjq</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0ax2c4p</bpmn:outgoing>
+    </bpmn:parallelGateway>
+    <bpmn:scriptTask id="ScriptTask_07sgklo" name="Update relationship between NSI and Service Profile" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_03ye8m4</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0t0wddg</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.getOneNsstInfo(execution)</bpmn:script>
+dcnsio.updateRelationship(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_1lpgn98" name="prepare NSST Info" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0hxky5e</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_19jztxv</bpmn:outgoing>
+    <bpmn:sequenceFlow id="SequenceFlow_0t0wddg" sourceRef="ScriptTask_07sgklo" targetRef="IntermediateThrowEvent_0fx1nyj" />
+    <bpmn:scriptTask id="ScriptTask_1r6kuwy" name="create relationship between nsi and SP" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1k3cspv</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_05ovikm</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.createNSSTMap(execution)</bpmn:script>
+dcnsio.createRelationship(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:endEvent id="EndEvent_1x6k78c">
-      <bpmn:incoming>SequenceFlow_0u8fycy</bpmn:incoming>
-    </bpmn:endEvent>
-    <bpmn:scriptTask id="finishNSCreate_Task" name="Get a NSSI to process" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_16nvnxi</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0cq2q6g</bpmn:outgoing>
+    <bpmn:sequenceFlow id="SequenceFlow_05ovikm" sourceRef="ScriptTask_1r6kuwy" targetRef="IntermediateThrowEvent_0fx1nyj" />
+    <bpmn:scriptTask id="Task_1tv7jy5" name="Create RAN Slice Profile Instance" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1m68yca</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1hfjn79</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcsi = new DoAllocateNSIandNSSI()
-dcsi.getOneNSSIInfo(execution)</bpmn:script>
+def dcnsio = new DoAllocateNSIandNSSI()
+dcnsio.createAnSliceProfileInstance(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_07qkrrb" name="Is there more NSSI to process?" default="SequenceFlow_0u8fycy">
-      <bpmn:incoming>SequenceFlow_0g5bwvl</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_1jaxstd</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_16nvnxi</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0u8fycy</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:callActivity id="CallActivity_130tuxn" name="Call DoAllocateNSSI" calledElement="DoAllocateNSSI">
+    <bpmn:scriptTask id="ScriptTask_1r2li91" name="Create RAN Slice Profile" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1hfjn79</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0zbd2tq</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcnsio = new DoAllocateNSIandNSSI()
+dcnsio.createAnSliceProfile(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0zbd2tq" sourceRef="ScriptTask_1r2li91" targetRef="ScriptTask_0s8vhha" />
+    <bpmn:scriptTask id="Task_1en3luv" name="Create Core Slice Profile Instance" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0k5iu2n</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0f36cu2</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcnsio = new DoAllocateNSIandNSSI()
+dcnsio.createCnSliceProfileInstance(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="Task_1g8n8iz" name="Create Core Slice Profile" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0f36cu2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1wffel4</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcnsio = new DoAllocateNSIandNSSI()
+dcnsio.createCnSliceProfile(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0ax2c4p" sourceRef="ExclusiveGateway_19ru3hp" targetRef="EndEvent_02c8wsp" />
+    <bpmn:scriptTask id="ScriptTask_0stnvp3" name="Create TN (BH) Slice Profile" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0paqrtx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1d48cil</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcnsio = new DoAllocateNSIandNSSI()
+dcnsio.createTnBHSliceProfileInstance(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_1f4o46q" name="Create TN(BH) Slice Profile" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1d48cil</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_00dexhy</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcnsio = new DoAllocateNSIandNSSI()
+dcnsio.createTnBHSliceProfile(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="CallActivity_0b28wlb" name="Call DoAllocateNSSI(TN)" calledElement="DoAllocateNSSI">
       <bpmn:extensionElements>
         <camunda:in source="msoRequestId" target="msoRequestId" />
         <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
@@ -121,241 +204,305 @@ dcsi.getOneNSSIInfo(execution)</bpmn:script>
         <camunda:in source="taskStatus" target="CSSOT_status" />
         <camunda:in source="isManual" target="CSSOT_isManual" />
         <camunda:in source="isNSIOptionAvailable" target="isNSIOptionAvailable" />
+        <camunda:in source="tnBHSliceTaskInfo" target="sliceTaskInfo" />
+        <camunda:out source="nssiAllocateResult" target="tnBHNssiAllocateResult" />
+        <camunda:in source="TnBHAllocateNssiNbiRequest" target="nbiRequest" />
       </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_0cq2q6g</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_00b8ryw</bpmn:outgoing>
+      <bpmn:incoming>SequenceFlow_01isn2q</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1omynpt</bpmn:outgoing>
     </bpmn:callActivity>
-    <bpmn:scriptTask id="ScriptTask_0anyn7v" name="Update current Index" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_00b8ryw</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1jaxstd</bpmn:outgoing>
+    <bpmn:sequenceFlow id="SequenceFlow_1d48cil" sourceRef="ScriptTask_0stnvp3" targetRef="ScriptTask_1f4o46q" />
+    <bpmn:sequenceFlow id="SequenceFlow_00dexhy" sourceRef="ScriptTask_1f4o46q" targetRef="ScriptTask_0ci5g6y" />
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_08wpvhs" name="Create Tn SliceProfile">
+      <bpmn:outgoing>SequenceFlow_0paqrtx</bpmn:outgoing>
+      <bpmn:linkEventDefinition id="LinkEventDefinition_1beugxy" name="CreateTnSliceProfile" />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0paqrtx" sourceRef="IntermediateCatchEvent_08wpvhs" targetRef="ScriptTask_0stnvp3" />
+    <bpmn:scriptTask id="ScriptTask_0sssiii" name="Update relationship between NSI and NSSI" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1omynpt</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_150xio1</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcnsio = new DoAllocateNSIandNSSI()
+dcnsio.updateTnBHRelationship(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_150xio1" sourceRef="ScriptTask_0sssiii" targetRef="EndEvent_0elqlhv" />
+    <bpmn:scriptTask id="ScriptTask_0mls87v" name="Update relationship between NSI and NSSI" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1xb5nx1</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0xx5bwa</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcsi = new DoAllocateNSIandNSSI()
-dcsi.updateCurrentIndex(execution)</bpmn:script>
+def dcnsio = new DoAllocateNSIandNSSI()
+dcnsio.updateAnRelationship(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:scriptTask id="instantiate_NSTask" name="Prepare NSSI list (with and without shared NSSI)" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0uhaps2</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_04yx9ii</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0g5bwvl</bpmn:outgoing>
+    <bpmn:sequenceFlow id="SequenceFlow_0xx5bwa" sourceRef="ScriptTask_0mls87v" targetRef="ExclusiveGateway_19ru3hp" />
+    <bpmn:scriptTask id="ScriptTask_0z9x5uh" name="Update relationship between NSI and NSSI" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1l74seh</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0jqxxjq</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoAllocateNSIandNSSI()
-dcso.prepareNSSIList(execution)</bpmn:script>
+def dcnsio = new DoAllocateNSIandNSSI()
+dcnsio.updateCnRelationship(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_1jg3el3" name="Is NSST available?" default="SequenceFlow_04yx9ii">
-      <bpmn:incoming>SequenceFlow_19jztxv</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_04yx9ii</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_1ui528w</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_0uhaps2" sourceRef="ScriptTask_1q3ftu4" targetRef="instantiate_NSTask" />
-    <bpmn:sequenceFlow id="SequenceFlow_1e40h52" sourceRef="CallActivity_1s23hty" targetRef="Task_09nzhwk" />
-    <bpmn:sequenceFlow id="SequenceFlow_0xfhbqw" sourceRef="ScriptTask_1ehyrsg" targetRef="ScriptTask_1q3ftu4" />
-    <bpmn:sequenceFlow id="SequenceFlow_0dj0jvq" sourceRef="ScriptTask_0o93dvp" targetRef="ExclusiveGateway_0b9d9l0" />
-    <bpmn:sequenceFlow id="SequenceFlow_0ueeeca" name="Yes" sourceRef="ExclusiveGateway_0b9d9l0" targetRef="ScriptTask_1ehyrsg">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isNSIOptionAvailable" )  == true)}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_1h5bw41" name="No" sourceRef="ExclusiveGateway_0b9d9l0" targetRef="CallActivity_1s23hty" />
-    <bpmn:sequenceFlow id="SequenceFlow_1uiz85h" sourceRef="Task_09nzhwk" targetRef="ScriptTask_0gunols" />
-    <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="allocateslice_StartEvent" targetRef="PreprocessIncomingRequest_task" />
-    <bpmn:sequenceFlow id="SequenceFlow_0khtova" sourceRef="PreprocessIncomingRequest_task" targetRef="ScriptTask_0o93dvp" />
-    <bpmn:sequenceFlow id="SequenceFlow_0g5bwvl" sourceRef="instantiate_NSTask" targetRef="ExclusiveGateway_07qkrrb" />
-    <bpmn:sequenceFlow id="SequenceFlow_0hxky5e" sourceRef="CallActivity_1k1oonn" targetRef="ScriptTask_1lpgn98" />
-    <bpmn:sequenceFlow id="SequenceFlow_1dhpkhd" sourceRef="ScriptTask_0gunols" targetRef="CallActivity_1k1oonn" />
-    <bpmn:sequenceFlow id="SequenceFlow_19jztxv" sourceRef="ScriptTask_1lpgn98" targetRef="ExclusiveGateway_1jg3el3" />
-    <bpmn:sequenceFlow id="SequenceFlow_0u8fycy" name="No" sourceRef="ExclusiveGateway_07qkrrb" targetRef="EndEvent_1x6k78c" />
-    <bpmn:sequenceFlow id="SequenceFlow_16nvnxi" name="Yes" sourceRef="ExclusiveGateway_07qkrrb" targetRef="finishNSCreate_Task">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isMoreNSSI" )  == true)}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_0cq2q6g" sourceRef="finishNSCreate_Task" targetRef="CallActivity_130tuxn" />
-    <bpmn:sequenceFlow id="SequenceFlow_1jaxstd" sourceRef="ScriptTask_0anyn7v" targetRef="ExclusiveGateway_07qkrrb" />
-    <bpmn:sequenceFlow id="SequenceFlow_00b8ryw" sourceRef="CallActivity_130tuxn" targetRef="ScriptTask_0anyn7v" />
-    <bpmn:sequenceFlow id="SequenceFlow_04yx9ii" name="No" sourceRef="ExclusiveGateway_1jg3el3" targetRef="instantiate_NSTask" />
-    <bpmn:sequenceFlow id="SequenceFlow_1ui528w" sourceRef="ExclusiveGateway_1jg3el3" targetRef="ScriptTask_0gunols">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isMoreNSSTtoProcess" )  == true)}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1l74seh" sourceRef="CallActivity_1ixah3o" targetRef="ScriptTask_0z9x5uh" />
+    <bpmn:sequenceFlow id="SequenceFlow_0jqxxjq" sourceRef="ScriptTask_0z9x5uh" targetRef="ExclusiveGateway_19ru3hp" />
+    <bpmn:sequenceFlow id="SequenceFlow_1omynpt" sourceRef="CallActivity_0b28wlb" targetRef="ScriptTask_0sssiii" />
+    <bpmn:endEvent id="EndEvent_0elqlhv">
+      <bpmn:incoming>SequenceFlow_150xio1</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:intermediateThrowEvent id="EndEvent_02c8wsp" name="GoTo Create Tn SliceProfile">
+      <bpmn:incoming>SequenceFlow_0ax2c4p</bpmn:incoming>
+      <bpmn:linkEventDefinition name="CreateTnSliceProfile" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:scriptTask id="ScriptTask_0s8vhha" name="prepare Allocate An Nssi" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0zbd2tq</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0npsyye</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcnsio = new DoAllocateNSIandNSSI()
+dcnsio.prepareAllocateAnNssi(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0npsyye" sourceRef="ScriptTask_0s8vhha" targetRef="CallActivity_1yh9tiq" />
+    <bpmn:scriptTask id="ScriptTask_0z0ec5b" name="prepare Allocate Cn Nssi" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1wffel4</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0cwbtmr</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcnsio = new DoAllocateNSIandNSSI()
+dcnsio.prepareAllocateCnNssi(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0cwbtmr" sourceRef="ScriptTask_0z0ec5b" targetRef="CallActivity_1ixah3o" />
+    <bpmn:sequenceFlow id="SequenceFlow_1wffel4" sourceRef="Task_1g8n8iz" targetRef="ScriptTask_0z0ec5b" />
+    <bpmn:scriptTask id="ScriptTask_0ci5g6y" name="prepare Allocate Tn-BH Nssi" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_00dexhy</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_01isn2q</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcnsio = new DoAllocateNSIandNSSI()
+dcnsio.prepareAllocateTnBHNssi(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_01isn2q" sourceRef="ScriptTask_0ci5g6y" targetRef="CallActivity_0b28wlb" />
   </bpmn:process>
+  <bpmn:message id="Message_1i10pf1" name="Message_2mc69tg" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoAllocateNSIandNSSI">
-      <bpmndi:BPMNEdge id="SequenceFlow_0uhaps2_di" bpmnElement="SequenceFlow_0uhaps2">
-        <di:waypoint x="978" y="350" />
-        <di:waypoint x="1736" y="350" />
-        <di:waypoint x="1736" y="487" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1e40h52_di" bpmnElement="SequenceFlow_1e40h52">
-        <di:waypoint x="799" y="527" />
-        <di:waypoint x="878" y="527" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0xfhbqw_di" bpmnElement="SequenceFlow_0xfhbqw">
-        <di:waypoint x="799" y="350" />
-        <di:waypoint x="878" y="350" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0dj0jvq_di" bpmnElement="SequenceFlow_0dj0jvq">
-        <di:waypoint x="520" y="527" />
-        <di:waypoint x="583" y="527" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0ueeeca_di" bpmnElement="SequenceFlow_0ueeeca">
-        <di:waypoint x="608" y="502" />
-        <di:waypoint x="608" y="350" />
-        <di:waypoint x="699" y="350" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="584" y="422" width="19" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1h5bw41_di" bpmnElement="SequenceFlow_1h5bw41">
-        <di:waypoint x="633" y="527" />
-        <di:waypoint x="699" y="527" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="630" y="509" width="14" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1uiz85h_di" bpmnElement="SequenceFlow_1uiz85h">
-        <di:waypoint x="978" y="527" />
-        <di:waypoint x="1036" y="527" />
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoAllocateNSIandNSSIV2">
+      <bpmndi:BPMNShape id="StartEvent_1ym3sha_di" bpmnElement="StartEvent_1ym3sha">
+        <dc:Bounds x="138" y="122" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="631" y="108" width="0" height="12" />
+          <dc:Bounds x="144" y="165" width="25" height="14" />
         </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xgfj7z_di" bpmnElement="SequenceFlow_0xgfj7z">
+        <di:waypoint x="174" y="140" />
+        <di:waypoint x="224" y="140" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln">
-        <di:waypoint x="210" y="527" />
-        <di:waypoint x="268" y="527" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="266" y="123" width="0" height="12" />
-        </bpmndi:BPMNLabel>
+      <bpmndi:BPMNShape id="ScriptTask_0q0td74_di" bpmnElement="Task_027u6m6">
+        <dc:Bounds x="224" y="100" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0qorxd9_di" bpmnElement="ScriptTask_0qorxd9">
+        <dc:Bounds x="404" y="100" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_00aukg6_di" bpmnElement="SequenceFlow_00aukg6">
+        <di:waypoint x="324" y="140" />
+        <di:waypoint x="404" y="140" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0khtova_di" bpmnElement="SequenceFlow_0khtova">
-        <di:waypoint x="368" y="527" />
-        <di:waypoint x="420" y="527" />
+      <bpmndi:BPMNShape id="ExclusiveGateway_00pt1ek_di" bpmnElement="ExclusiveGateway_00pt1ek" isMarkerVisible="true">
+        <dc:Bounds x="609" y="115" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="436" y="108" width="0" height="12" />
+          <dc:Bounds x="604" y="78" width="59" height="27" />
         </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ggo6s5_di" bpmnElement="SequenceFlow_1ggo6s5">
+        <di:waypoint x="504" y="140" />
+        <di:waypoint x="609" y="140" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0g5bwvl_di" bpmnElement="SequenceFlow_0g5bwvl">
-        <di:waypoint x="1786" y="527" />
-        <di:waypoint x="1871" y="527" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0hxky5e_di" bpmnElement="SequenceFlow_0hxky5e">
-        <di:waypoint x="1300" y="527" />
-        <di:waypoint x="1388" y="527" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0c986i9_di" bpmnElement="SequenceFlow_0c986i9">
+        <di:waypoint x="659" y="140" />
+        <di:waypoint x="800" y="140" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1dhpkhd_di" bpmnElement="SequenceFlow_1dhpkhd">
-        <di:waypoint x="1136" y="527" />
-        <di:waypoint x="1200" y="527" />
+      <bpmndi:BPMNShape id="ScriptTask_1tizl6b_di" bpmnElement="ScriptTask_1tizl6b">
+        <dc:Bounds x="800" y="100" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1k3cspv_di" bpmnElement="SequenceFlow_1k3cspv">
+        <di:waypoint x="900" y="140" />
+        <di:waypoint x="970" y="140" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_19jztxv_di" bpmnElement="SequenceFlow_19jztxv">
-        <di:waypoint x="1488" y="527" />
-        <di:waypoint x="1564" y="527" />
+      <bpmndi:BPMNEdge id="SequenceFlow_03ye8m4_di" bpmnElement="SequenceFlow_03ye8m4">
+        <di:waypoint x="634" y="165" />
+        <di:waypoint x="634" y="260" />
+        <di:waypoint x="930" y="260" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0u8fycy_di" bpmnElement="SequenceFlow_0u8fycy">
-        <di:waypoint x="1896" y="502" />
-        <di:waypoint x="1896" y="409" />
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0zuxkap_di" bpmnElement="IntermediateThrowEvent_0fx1nyj">
+        <dc:Bounds x="1412" y="122" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1904" y="453" width="14" height="14" />
+          <dc:Bounds x="1388" y="92" width="90" height="27" />
         </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_16nvnxi_di" bpmnElement="SequenceFlow_16nvnxi">
-        <di:waypoint x="1921" y="527" />
-        <di:waypoint x="1991" y="527" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1u7g80x_di" bpmnElement="IntermediateThrowEvent_0k54pph">
+        <dc:Bounds x="138" y="502" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1942" y="500" width="19" height="14" />
+          <dc:Bounds x="126" y="545" width="60" height="27" />
         </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ct8yh4_di" bpmnElement="SequenceFlow_0ct8yh4">
+        <di:waypoint x="174" y="520" />
+        <di:waypoint x="239" y="520" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0cq2q6g_di" bpmnElement="SequenceFlow_0cq2q6g">
-        <di:waypoint x="2091" y="527" />
-        <di:waypoint x="2197" y="527" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="556.5" y="574" width="90" height="12" />
-        </bpmndi:BPMNLabel>
+      <bpmndi:BPMNShape id="ParallelGateway_0q9h79n_di" bpmnElement="ExclusiveGateway_00ufetn">
+        <dc:Bounds x="239" y="495" width="50" height="50" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1m68yca_di" bpmnElement="SequenceFlow_1m68yca">
+        <di:waypoint x="264" y="495" />
+        <di:waypoint x="264" y="440" />
+        <di:waypoint x="310" y="440" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1jaxstd_di" bpmnElement="SequenceFlow_1jaxstd">
-        <di:waypoint x="1991" y="665" />
-        <di:waypoint x="1896" y="665" />
-        <di:waypoint x="1896" y="552" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0k5iu2n_di" bpmnElement="SequenceFlow_0k5iu2n">
+        <di:waypoint x="264" y="545" />
+        <di:waypoint x="264" y="630" />
+        <di:waypoint x="310" y="630" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_00b8ryw_di" bpmnElement="SequenceFlow_00b8ryw">
-        <di:waypoint x="2247" y="567" />
-        <di:waypoint x="2247" y="665" />
-        <di:waypoint x="2091" y="665" />
+      <bpmndi:BPMNShape id="CallActivity_1yh9tiq_di" bpmnElement="CallActivity_1yh9tiq">
+        <dc:Bounds x="930" y="400" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1hfjn79_di" bpmnElement="SequenceFlow_1hfjn79">
+        <di:waypoint x="410" y="440" />
+        <di:waypoint x="530" y="440" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_04yx9ii_di" bpmnElement="SequenceFlow_04yx9ii">
-        <di:waypoint x="1614" y="527" />
-        <di:waypoint x="1686" y="527" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1643" y="509" width="14" height="14" />
-        </bpmndi:BPMNLabel>
+      <bpmndi:BPMNShape id="CallActivity_1ixah3o_di" bpmnElement="CallActivity_1ixah3o">
+        <dc:Bounds x="930" y="590" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0f36cu2_di" bpmnElement="SequenceFlow_0f36cu2">
+        <di:waypoint x="410" y="630" />
+        <di:waypoint x="530" y="630" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1ui528w_di" bpmnElement="SequenceFlow_1ui528w">
-        <di:waypoint x="1589" y="552" />
-        <di:waypoint x="1589" y="671" />
-        <di:waypoint x="1086" y="671" />
-        <di:waypoint x="1086" y="567" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1xb5nx1_di" bpmnElement="SequenceFlow_1xb5nx1">
+        <di:waypoint x="1030" y="440" />
+        <di:waypoint x="1140" y="440" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_1dw39hg_di" bpmnElement="Task_09nzhwk">
-        <dc:Bounds x="878" y="487" width="100" height="80" />
+      <bpmndi:BPMNShape id="ParallelGateway_15vgf7c_di" bpmnElement="ExclusiveGateway_19ru3hp">
+        <dc:Bounds x="1325" y="505" width="50" height="50" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_0b9d9l0_di" bpmnElement="ExclusiveGateway_0b9d9l0" isMarkerVisible="true">
-        <dc:Bounds x="583" y="502" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="578" y="559" width="60" height="27" />
-        </bpmndi:BPMNLabel>
+      <bpmndi:BPMNShape id="ScriptTask_07sgklo_di" bpmnElement="ScriptTask_07sgklo">
+        <dc:Bounds x="930" y="220" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1ehyrsg_di" bpmnElement="ScriptTask_1ehyrsg">
-        <dc:Bounds x="699" y="310" width="100" height="80" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0t0wddg_di" bpmnElement="SequenceFlow_0t0wddg">
+        <di:waypoint x="1030" y="260" />
+        <di:waypoint x="1430" y="260" />
+        <di:waypoint x="1430" y="158" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1r6kuwy_di" bpmnElement="ScriptTask_1r6kuwy">
+        <dc:Bounds x="970" y="100" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="CallActivity_1s23hty_di" bpmnElement="CallActivity_1s23hty">
-        <dc:Bounds x="699" y="487" width="100" height="80" />
+      <bpmndi:BPMNEdge id="SequenceFlow_05ovikm_di" bpmnElement="SequenceFlow_05ovikm">
+        <di:waypoint x="1070" y="140" />
+        <di:waypoint x="1412" y="140" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_17cq3xj_di" bpmnElement="Task_1tv7jy5">
+        <dc:Bounds x="310" y="400" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1q3ftu4_di" bpmnElement="ScriptTask_1q3ftu4">
-        <dc:Bounds x="878" y="310" width="100" height="80" />
+      <bpmndi:BPMNShape id="ScriptTask_1r2li91_di" bpmnElement="ScriptTask_1r2li91">
+        <dc:Bounds x="530" y="400" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="allocateslice_StartEvent">
-        <dc:Bounds x="174" y="509" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="152" y="545" width="82" height="27" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task">
-        <dc:Bounds x="268" y="487" width="100" height="80" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0zbd2tq_di" bpmnElement="SequenceFlow_0zbd2tq">
+        <di:waypoint x="630" y="440" />
+        <di:waypoint x="730" y="440" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_01n5nmt_di" bpmnElement="Task_1en3luv">
+        <dc:Bounds x="310" y="590" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0o93dvp_di" bpmnElement="ScriptTask_0o93dvp">
-        <dc:Bounds x="420" y="487" width="100" height="80" />
+      <bpmndi:BPMNShape id="ScriptTask_0juh1xy_di" bpmnElement="Task_1g8n8iz">
+        <dc:Bounds x="530" y="590" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="CallActivity_1k1oonn_di" bpmnElement="CallActivity_1k1oonn">
-        <dc:Bounds x="1200" y="487" width="100" height="80" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0ax2c4p_di" bpmnElement="SequenceFlow_0ax2c4p">
+        <di:waypoint x="1375" y="530" />
+        <di:waypoint x="1412" y="530" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0stnvp3_di" bpmnElement="ScriptTask_0stnvp3">
+        <dc:Bounds x="310" y="840" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0gunols_di" bpmnElement="ScriptTask_0gunols">
-        <dc:Bounds x="1036" y="487" width="100" height="80" />
+      <bpmndi:BPMNShape id="ScriptTask_1f4o46q_di" bpmnElement="ScriptTask_1f4o46q">
+        <dc:Bounds x="530" y="840" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1lpgn98_di" bpmnElement="ScriptTask_1lpgn98">
-        <dc:Bounds x="1388" y="487" width="100" height="80" />
+      <bpmndi:BPMNShape id="CallActivity_0b28wlb_di" bpmnElement="CallActivity_0b28wlb">
+        <dc:Bounds x="930" y="840" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c">
-        <dc:Bounds x="1878" y="373" width="36" height="36" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1d48cil_di" bpmnElement="SequenceFlow_1d48cil">
+        <di:waypoint x="410" y="880" />
+        <di:waypoint x="530" y="880" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00dexhy_di" bpmnElement="SequenceFlow_00dexhy">
+        <di:waypoint x="630" y="880" />
+        <di:waypoint x="730" y="880" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_08wpvhs_di" bpmnElement="IntermediateCatchEvent_08wpvhs">
+        <dc:Bounds x="138" y="862" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="412" y="617" width="90" height="12" />
+          <dc:Bounds x="129" y="905" width="56" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0xxyfku_di" bpmnElement="finishNSCreate_Task">
-        <dc:Bounds x="1991" y="487" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_07qkrrb_di" bpmnElement="ExclusiveGateway_07qkrrb" isMarkerVisible="true">
-        <dc:Bounds x="1871" y="502" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1853" y="575" width="86" height="27" />
-        </bpmndi:BPMNLabel>
+      <bpmndi:BPMNEdge id="SequenceFlow_0paqrtx_di" bpmnElement="SequenceFlow_0paqrtx">
+        <di:waypoint x="174" y="880" />
+        <di:waypoint x="310" y="880" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0sssiii_di" bpmnElement="ScriptTask_0sssiii">
+        <dc:Bounds x="1140" y="840" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="CallActivity_130tuxn_di" bpmnElement="CallActivity_130tuxn">
-        <dc:Bounds x="2197" y="487" width="100" height="80" />
+      <bpmndi:BPMNEdge id="SequenceFlow_150xio1_di" bpmnElement="SequenceFlow_150xio1">
+        <di:waypoint x="1240" y="880" />
+        <di:waypoint x="1412" y="880" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0mls87v_di" bpmnElement="ScriptTask_0mls87v">
+        <dc:Bounds x="1140" y="400" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0anyn7v_di" bpmnElement="ScriptTask_0anyn7v">
-        <dc:Bounds x="1991" y="625" width="100" height="80" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0xx5bwa_di" bpmnElement="SequenceFlow_0xx5bwa">
+        <di:waypoint x="1240" y="440" />
+        <di:waypoint x="1350" y="440" />
+        <di:waypoint x="1350" y="505" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0z9x5uh_di" bpmnElement="ScriptTask_0z9x5uh">
+        <dc:Bounds x="1140" y="590" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1qmmew8_di" bpmnElement="instantiate_NSTask">
-        <dc:Bounds x="1686" y="487" width="100" height="80" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1l74seh_di" bpmnElement="SequenceFlow_1l74seh">
+        <di:waypoint x="1030" y="630" />
+        <di:waypoint x="1140" y="630" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jqxxjq_di" bpmnElement="SequenceFlow_0jqxxjq">
+        <di:waypoint x="1240" y="630" />
+        <di:waypoint x="1350" y="630" />
+        <di:waypoint x="1350" y="555" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1omynpt_di" bpmnElement="SequenceFlow_1omynpt">
+        <di:waypoint x="1030" y="880" />
+        <di:waypoint x="1140" y="880" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0elqlhv_di" bpmnElement="EndEvent_0elqlhv">
+        <dc:Bounds x="1412" y="862" width="36" height="36" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_1jg3el3_di" bpmnElement="ExclusiveGateway_1jg3el3" isMarkerVisible="true">
-        <dc:Bounds x="1564" y="502" width="50" height="50" />
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0gz4vi6_di" bpmnElement="EndEvent_02c8wsp">
+        <dc:Bounds x="1412" y="512" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1564" y="465" width="50" height="27" />
+          <dc:Bounds x="1392" y="555" width="79" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0s8vhha_di" bpmnElement="ScriptTask_0s8vhha">
+        <dc:Bounds x="730" y="400" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0npsyye_di" bpmnElement="SequenceFlow_0npsyye">
+        <di:waypoint x="830" y="440" />
+        <di:waypoint x="930" y="440" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0z0ec5b_di" bpmnElement="ScriptTask_0z0ec5b">
+        <dc:Bounds x="730" y="590" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0cwbtmr_di" bpmnElement="SequenceFlow_0cwbtmr">
+        <di:waypoint x="830" y="630" />
+        <di:waypoint x="930" y="630" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wffel4_di" bpmnElement="SequenceFlow_1wffel4">
+        <di:waypoint x="630" y="630" />
+        <di:waypoint x="730" y="630" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0ci5g6y_di" bpmnElement="ScriptTask_0ci5g6y">
+        <dc:Bounds x="730" y="840" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_01isn2q_di" bpmnElement="SequenceFlow_01isn2q">
+        <di:waypoint x="830" y="880" />
+        <di:waypoint x="930" y="880" />
+      </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateNSIandNSSIV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateNSIandNSSIV2.bpmn
deleted file mode 100644 (file)
index 071960a..0000000
+++ /dev/null
@@ -1,598 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
-  <bpmn:process id="DoAllocateNSIandNSSIV2" name="DoAllocateNSIandNSSIV2" isExecutable="true">
-    <bpmn:startEvent id="StartEvent_1ym3sha" name="Start">
-      <bpmn:outgoing>SequenceFlow_0xgfj7z</bpmn:outgoing>
-    </bpmn:startEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_0xgfj7z" sourceRef="StartEvent_1ym3sha" targetRef="Task_027u6m6" />
-    <bpmn:scriptTask id="Task_027u6m6" name="Preprocess Request" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0xgfj7z</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_00aukg6</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dansi = new DoAllocateNSIandNSSI()
-dansi.preProcessRequest(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_0qorxd9" name="Process NSI options" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_00aukg6</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1ggo6s5</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dansi = new DoAllocateNSIandNSSI()
-dansi.retriveSliceOption(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_00aukg6" sourceRef="Task_027u6m6" targetRef="ScriptTask_0qorxd9" />
-    <bpmn:exclusiveGateway id="ExclusiveGateway_00pt1ek" name="Is nsi option available?" default="SequenceFlow_0c986i9">
-      <bpmn:incoming>SequenceFlow_1ggo6s5</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0c986i9</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_03ye8m4</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_1ggo6s5" sourceRef="ScriptTask_0qorxd9" targetRef="ExclusiveGateway_00pt1ek" />
-    <bpmn:sequenceFlow id="SequenceFlow_0c986i9" sourceRef="ExclusiveGateway_00pt1ek" targetRef="ScriptTask_1tizl6b" />
-    <bpmn:scriptTask id="ScriptTask_1tizl6b" name="create NSI in AAI and Update relationship" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0c986i9</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1k3cspv</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.createNSIinAAI(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_1k3cspv" sourceRef="ScriptTask_1tizl6b" targetRef="ScriptTask_1r6kuwy" />
-    <bpmn:sequenceFlow id="SequenceFlow_03ye8m4" sourceRef="ExclusiveGateway_00pt1ek" targetRef="ScriptTask_07sgklo">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isNSIOptionAvailable" )  == true)}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_0fx1nyj" name="GoTo Create Slice Profile">
-      <bpmn:incoming>SequenceFlow_0t0wddg</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_05ovikm</bpmn:incoming>
-      <bpmn:linkEventDefinition name="CreateSliceProfile" />
-    </bpmn:intermediateThrowEvent>
-    <bpmn:intermediateCatchEvent id="IntermediateThrowEvent_0k54pph" name="Create Slice Profile">
-      <bpmn:outgoing>SequenceFlow_0ct8yh4</bpmn:outgoing>
-      <bpmn:linkEventDefinition name="CreateSliceProfile" />
-    </bpmn:intermediateCatchEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_0ct8yh4" sourceRef="IntermediateThrowEvent_0k54pph" targetRef="ExclusiveGateway_00ufetn" />
-    <bpmn:parallelGateway id="ExclusiveGateway_00ufetn">
-      <bpmn:incoming>SequenceFlow_0ct8yh4</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1m68yca</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0k5iu2n</bpmn:outgoing>
-    </bpmn:parallelGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_1m68yca" sourceRef="ExclusiveGateway_00ufetn" targetRef="Task_1tv7jy5" />
-    <bpmn:sequenceFlow id="SequenceFlow_0k5iu2n" sourceRef="ExclusiveGateway_00ufetn" targetRef="Task_1en3luv" />
-    <bpmn:callActivity id="CallActivity_1yh9tiq" name="Call DoAllocateNSSI(RAN)" calledElement="DoAllocateNSSI">
-      <bpmn:extensionElements>
-        <camunda:in source="msoRequestId" target="msoRequestId" />
-        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
-        <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:in source="nsstInput" target="nsstInput" />
-        <camunda:in source="serviceProfile" target="serviceProfile" />
-        <camunda:in source="sliceProfileTn" target="sliceProfileTn" />
-        <camunda:in source="sliceProfileCn" target="sliceProfileCn" />
-        <camunda:in source="sliceProfileAn" target="sliceProfileAn" />
-        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
-        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
-        <camunda:in source="uuiRequest" target="uuiRequest" />
-        <camunda:in source="nsiServiceInstanceId" target="nsiServiceInstanceId" />
-        <camunda:in source="nsiServiceInstanceName" target="nsiServiceInstanceName" />
-        <camunda:in source="nssiserviceModelInfo" target="nssiserviceModelInfo" />
-        <camunda:in source="sliceTaskParams" target="sliceTaskParams" />
-        <camunda:in source="taskId" target="CSSOT_taskId" />
-        <camunda:in source="taskName" target="CSSOT_name" />
-        <camunda:in source="taskStatus" target="CSSOT_status" />
-        <camunda:in source="isManual" target="CSSOT_isManual" />
-        <camunda:in source="isNSIOptionAvailable" target="isNSIOptionAvailable" />
-        <camunda:in source="anSliceTaskInfo" target="sliceTaskInfo" />
-        <camunda:out source="nssiAllocateResult" target="nssiAllocateResult" />
-        <camunda:in source="AnAllocateNssiNbiRequest" target="nbiRequest" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_0npsyye</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1xb5nx1</bpmn:outgoing>
-    </bpmn:callActivity>
-    <bpmn:sequenceFlow id="SequenceFlow_1hfjn79" sourceRef="Task_1tv7jy5" targetRef="ScriptTask_1r2li91" />
-    <bpmn:callActivity id="CallActivity_1ixah3o" name="Call DoAllocateNSSI(Core)" calledElement="DoAllocateNSSI">
-      <bpmn:extensionElements>
-        <camunda:in source="msoRequestId" target="msoRequestId" />
-        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
-        <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:in source="nsstInput" target="nsstInput" />
-        <camunda:in source="serviceProfile" target="serviceProfile" />
-        <camunda:in source="sliceProfileTn" target="sliceProfileTn" />
-        <camunda:in source="sliceProfileCn" target="sliceProfileCn" />
-        <camunda:in source="sliceProfileAn" target="sliceProfileAn" />
-        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
-        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
-        <camunda:in source="uuiRequest" target="uuiRequest" />
-        <camunda:in source="nsiServiceInstanceId" target="nsiServiceInstanceId" />
-        <camunda:in source="nsiServiceInstanceName" target="nsiServiceInstanceName" />
-        <camunda:in source="nssiserviceModelInfo" target="nssiserviceModelInfo" />
-        <camunda:in source="sliceTaskParams" target="sliceTaskParams" />
-        <camunda:in source="taskId" target="CSSOT_taskId" />
-        <camunda:in source="taskName" target="CSSOT_name" />
-        <camunda:in source="taskStatus" target="CSSOT_status" />
-        <camunda:in source="isManual" target="CSSOT_isManual" />
-        <camunda:in source="isNSIOptionAvailable" target="isNSIOptionAvailable" />
-        <camunda:in source="cnSliceTaskInfo" target="sliceTaskInfo" />
-        <camunda:in source="domainType" target="domainType" />
-        <camunda:out source="nssiAllocateResult" target="nssiAllocateResult" />
-        <camunda:in source="CnAllocateNssiNbiRequest" target="nbiRequest" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_0cwbtmr</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1l74seh</bpmn:outgoing>
-    </bpmn:callActivity>
-    <bpmn:sequenceFlow id="SequenceFlow_0f36cu2" sourceRef="Task_1en3luv" targetRef="Task_1g8n8iz" />
-    <bpmn:sequenceFlow id="SequenceFlow_1xb5nx1" sourceRef="CallActivity_1yh9tiq" targetRef="ScriptTask_0mls87v" />
-    <bpmn:parallelGateway id="ExclusiveGateway_19ru3hp">
-      <bpmn:incoming>SequenceFlow_1gkb7iy</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_03zglrh</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0ax2c4p</bpmn:outgoing>
-    </bpmn:parallelGateway>
-    <bpmn:scriptTask id="ScriptTask_07sgklo" name="Update relationship between NSI and Service Profile" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_03ye8m4</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0t0wddg</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.updateRelationship(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_0t0wddg" sourceRef="ScriptTask_07sgklo" targetRef="IntermediateThrowEvent_0fx1nyj" />
-    <bpmn:scriptTask id="ScriptTask_1r6kuwy" name="create relationship between nsi and SP" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1k3cspv</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_05ovikm</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.createRelationship(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_05ovikm" sourceRef="ScriptTask_1r6kuwy" targetRef="IntermediateThrowEvent_0fx1nyj" />
-    <bpmn:scriptTask id="Task_1tv7jy5" name="Create RAN Slice Profile Instance" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1m68yca</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1hfjn79</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.createAnSliceProfileInstance(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_1r2li91" name="Create RAN Slice Profile" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1hfjn79</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0zbd2tq</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.createAnSliceProfile(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_0zbd2tq" sourceRef="ScriptTask_1r2li91" targetRef="ScriptTask_0s8vhha" />
-    <bpmn:scriptTask id="Task_1en3luv" name="Create Core Slice Profile Instance" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0k5iu2n</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0f36cu2</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.createCnSliceProfileInstance(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="Task_1g8n8iz" name="Create Core Slice Profile" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0f36cu2</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1wffel4</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.createCnSliceProfile(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_0ax2c4p" sourceRef="ExclusiveGateway_19ru3hp" targetRef="EndEvent_02c8wsp" />
-    <bpmn:scriptTask id="ScriptTask_0stnvp3" name="Create TN (BH) Slice Profile" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0paqrtx</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1d48cil</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.createTnBHSliceProfileInstance(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_1f4o46q" name="Create TN(BH) Slice Profile" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1d48cil</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_00dexhy</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.createTnBHSliceProfile(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:callActivity id="CallActivity_0b28wlb" name="Call DoAllocateNSSI(TN)" calledElement="DoAllocateNSSI">
-      <bpmn:extensionElements>
-        <camunda:in source="msoRequestId" target="msoRequestId" />
-        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
-        <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:in source="nsstInput" target="nsstInput" />
-        <camunda:in source="serviceProfile" target="serviceProfile" />
-        <camunda:in source="sliceProfileTn" target="sliceProfileTn" />
-        <camunda:in source="sliceProfileCn" target="sliceProfileCn" />
-        <camunda:in source="sliceProfileAn" target="sliceProfileAn" />
-        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
-        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
-        <camunda:in source="uuiRequest" target="uuiRequest" />
-        <camunda:in source="nsiServiceInstanceId" target="nsiServiceInstanceId" />
-        <camunda:in source="nsiServiceInstanceName" target="nsiServiceInstanceName" />
-        <camunda:in source="nssiserviceModelInfo" target="nssiserviceModelInfo" />
-        <camunda:in source="sliceTaskParams" target="sliceTaskParams" />
-        <camunda:in source="taskId" target="CSSOT_taskId" />
-        <camunda:in source="taskName" target="CSSOT_name" />
-        <camunda:in source="taskStatus" target="CSSOT_status" />
-        <camunda:in source="isManual" target="CSSOT_isManual" />
-        <camunda:in source="isNSIOptionAvailable" target="isNSIOptionAvailable" />
-        <camunda:in source="tnBHSliceTaskInfo" target="sliceTaskInfo" />
-        <camunda:out source="nssiAllocateResult" target="nssiAllocateResult" />
-        <camunda:in source="TnBHAllocateNssiNbiRequest" target="nbiRequest" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_01isn2q</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1omynpt</bpmn:outgoing>
-    </bpmn:callActivity>
-    <bpmn:sequenceFlow id="SequenceFlow_1d48cil" sourceRef="ScriptTask_0stnvp3" targetRef="ScriptTask_1f4o46q" />
-    <bpmn:sequenceFlow id="SequenceFlow_00dexhy" sourceRef="ScriptTask_1f4o46q" targetRef="ScriptTask_0ci5g6y" />
-    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_08wpvhs" name="Create Tn SliceProfile">
-      <bpmn:outgoing>SequenceFlow_0paqrtx</bpmn:outgoing>
-      <bpmn:linkEventDefinition id="LinkEventDefinition_1beugxy" name="CreateTnSliceProfile" />
-    </bpmn:intermediateCatchEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_0paqrtx" sourceRef="IntermediateCatchEvent_08wpvhs" targetRef="ScriptTask_0stnvp3" />
-    <bpmn:scriptTask id="ScriptTask_0sssiii" name="Update relationship between NSI and NSSI" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1omynpt</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_150xio1</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.prepareAllocateAnNssi(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_1me5mt6" name="Update relationship between  Slice Profile and Service Profile" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_150xio1</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_040fu80</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.prepareAllocateAnNssi(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_0vrzjir" name="Update RelationShip between SliceProfile and NSSI" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_040fu80</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1uti8ls</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.prepareAllocateAnNssi(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_150xio1" sourceRef="ScriptTask_0sssiii" targetRef="ScriptTask_1me5mt6" />
-    <bpmn:sequenceFlow id="SequenceFlow_040fu80" sourceRef="ScriptTask_1me5mt6" targetRef="ScriptTask_0vrzjir" />
-    <bpmn:scriptTask id="ScriptTask_0mls87v" name="Update relationship between NSI and NSSI" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1xb5nx1</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0xx5bwa</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.prepareAllocateAnNssi(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_0xx5bwa" sourceRef="ScriptTask_0mls87v" targetRef="ScriptTask_0g8dgo6" />
-    <bpmn:scriptTask id="ScriptTask_0g8dgo6" name="Update relationship between  Slice Profile and Service Profile" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0xx5bwa</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1sckufj</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.prepareAllocateAnNssi(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_1sckufj" sourceRef="ScriptTask_0g8dgo6" targetRef="ScriptTask_0blxroa" />
-    <bpmn:scriptTask id="ScriptTask_0blxroa" name="Update RelationShip between SliceProfile and NSSI" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1sckufj</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1gkb7iy</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.prepareAllocateAnNssi(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_1gkb7iy" sourceRef="ScriptTask_0blxroa" targetRef="ExclusiveGateway_19ru3hp" />
-    <bpmn:scriptTask id="ScriptTask_0z9x5uh" name="Update relationship between NSI and NSSI" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1l74seh</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0jqxxjq</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.prepareAllocateAnNssi(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_09197ms" name="Update relationship between  Slice Profile and Service Profile" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0jqxxjq</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_02qun80</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.prepareAllocateAnNssi(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_127nizg" name="Update RelationShip between SliceProfile and NSSI" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_02qun80</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_03zglrh</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.prepareAllocateAnNssi(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_1l74seh" sourceRef="CallActivity_1ixah3o" targetRef="ScriptTask_0z9x5uh" />
-    <bpmn:sequenceFlow id="SequenceFlow_0jqxxjq" sourceRef="ScriptTask_0z9x5uh" targetRef="ScriptTask_09197ms" />
-    <bpmn:sequenceFlow id="SequenceFlow_02qun80" sourceRef="ScriptTask_09197ms" targetRef="ScriptTask_127nizg" />
-    <bpmn:sequenceFlow id="SequenceFlow_03zglrh" sourceRef="ScriptTask_127nizg" targetRef="ExclusiveGateway_19ru3hp" />
-    <bpmn:sequenceFlow id="SequenceFlow_1omynpt" sourceRef="CallActivity_0b28wlb" targetRef="ScriptTask_0sssiii" />
-    <bpmn:endEvent id="EndEvent_0elqlhv">
-      <bpmn:incoming>SequenceFlow_1uti8ls</bpmn:incoming>
-    </bpmn:endEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_1uti8ls" sourceRef="ScriptTask_0vrzjir" targetRef="EndEvent_0elqlhv" />
-    <bpmn:intermediateThrowEvent id="EndEvent_02c8wsp" name="GoTo Create Tn SliceProfile">
-      <bpmn:incoming>SequenceFlow_0ax2c4p</bpmn:incoming>
-      <bpmn:linkEventDefinition name="CreateTnSliceProfile" />
-    </bpmn:intermediateThrowEvent>
-    <bpmn:scriptTask id="ScriptTask_0s8vhha" name="prepare Allocate An Nssi" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0zbd2tq</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0npsyye</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.prepareAllocateAnNssi(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_0npsyye" sourceRef="ScriptTask_0s8vhha" targetRef="CallActivity_1yh9tiq" />
-    <bpmn:scriptTask id="ScriptTask_0z0ec5b" name="prepare Allocate An Nssi" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1wffel4</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0cwbtmr</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.prepareAllocateCnNssi(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_0cwbtmr" sourceRef="ScriptTask_0z0ec5b" targetRef="CallActivity_1ixah3o" />
-    <bpmn:sequenceFlow id="SequenceFlow_1wffel4" sourceRef="Task_1g8n8iz" targetRef="ScriptTask_0z0ec5b" />
-    <bpmn:scriptTask id="ScriptTask_0ci5g6y" name="prepare Allocate Tn-BH Nssi" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_00dexhy</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_01isn2q</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnsio = new DoAllocateNSIandNSSI()
-dcnsio.prepareAllocateTnBHNssi(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_01isn2q" sourceRef="ScriptTask_0ci5g6y" targetRef="CallActivity_0b28wlb" />
-  </bpmn:process>
-  <bpmn:message id="Message_1i10pf1" name="Message_2mc69tg" />
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoAllocateNSIandNSSIV2">
-      <bpmndi:BPMNShape id="StartEvent_1ym3sha_di" bpmnElement="StartEvent_1ym3sha">
-        <dc:Bounds x="138" y="122" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="144" y="165" width="25" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0xgfj7z_di" bpmnElement="SequenceFlow_0xgfj7z">
-        <di:waypoint x="174" y="140" />
-        <di:waypoint x="224" y="140" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0q0td74_di" bpmnElement="Task_027u6m6">
-        <dc:Bounds x="224" y="100" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0qorxd9_di" bpmnElement="ScriptTask_0qorxd9">
-        <dc:Bounds x="404" y="100" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_00aukg6_di" bpmnElement="SequenceFlow_00aukg6">
-        <di:waypoint x="324" y="140" />
-        <di:waypoint x="404" y="140" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ExclusiveGateway_00pt1ek_di" bpmnElement="ExclusiveGateway_00pt1ek" isMarkerVisible="true">
-        <dc:Bounds x="609" y="115" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="604" y="78" width="59" height="27" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1ggo6s5_di" bpmnElement="SequenceFlow_1ggo6s5">
-        <di:waypoint x="504" y="140" />
-        <di:waypoint x="609" y="140" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0c986i9_di" bpmnElement="SequenceFlow_0c986i9">
-        <di:waypoint x="659" y="140" />
-        <di:waypoint x="800" y="140" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_1tizl6b_di" bpmnElement="ScriptTask_1tizl6b">
-        <dc:Bounds x="800" y="100" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1k3cspv_di" bpmnElement="SequenceFlow_1k3cspv">
-        <di:waypoint x="900" y="140" />
-        <di:waypoint x="970" y="140" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_03ye8m4_di" bpmnElement="SequenceFlow_03ye8m4">
-        <di:waypoint x="634" y="165" />
-        <di:waypoint x="634" y="260" />
-        <di:waypoint x="930" y="260" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="IntermediateThrowEvent_0zuxkap_di" bpmnElement="IntermediateThrowEvent_0fx1nyj">
-        <dc:Bounds x="1412" y="122" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1388" y="92" width="90" height="27" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="IntermediateCatchEvent_1u7g80x_di" bpmnElement="IntermediateThrowEvent_0k54pph">
-        <dc:Bounds x="138" y="502" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="126" y="545" width="60" height="27" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0ct8yh4_di" bpmnElement="SequenceFlow_0ct8yh4">
-        <di:waypoint x="174" y="520" />
-        <di:waypoint x="239" y="520" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ParallelGateway_0q9h79n_di" bpmnElement="ExclusiveGateway_00ufetn">
-        <dc:Bounds x="239" y="495" width="50" height="50" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1m68yca_di" bpmnElement="SequenceFlow_1m68yca">
-        <di:waypoint x="264" y="495" />
-        <di:waypoint x="264" y="440" />
-        <di:waypoint x="310" y="440" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0k5iu2n_di" bpmnElement="SequenceFlow_0k5iu2n">
-        <di:waypoint x="264" y="545" />
-        <di:waypoint x="264" y="630" />
-        <di:waypoint x="310" y="630" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="CallActivity_1yh9tiq_di" bpmnElement="CallActivity_1yh9tiq">
-        <dc:Bounds x="730" y="400" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1hfjn79_di" bpmnElement="SequenceFlow_1hfjn79">
-        <di:waypoint x="410" y="440" />
-        <di:waypoint x="440" y="440" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="CallActivity_1ixah3o_di" bpmnElement="CallActivity_1ixah3o">
-        <dc:Bounds x="730" y="590" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0f36cu2_di" bpmnElement="SequenceFlow_0f36cu2">
-        <di:waypoint x="410" y="630" />
-        <di:waypoint x="440" y="630" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1xb5nx1_di" bpmnElement="SequenceFlow_1xb5nx1">
-        <di:waypoint x="830" y="440" />
-        <di:waypoint x="880" y="440" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ParallelGateway_15vgf7c_di" bpmnElement="ExclusiveGateway_19ru3hp">
-        <dc:Bounds x="1325" y="505" width="50" height="50" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_07sgklo_di" bpmnElement="ScriptTask_07sgklo">
-        <dc:Bounds x="930" y="220" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0t0wddg_di" bpmnElement="SequenceFlow_0t0wddg">
-        <di:waypoint x="1030" y="260" />
-        <di:waypoint x="1430" y="260" />
-        <di:waypoint x="1430" y="158" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_1r6kuwy_di" bpmnElement="ScriptTask_1r6kuwy">
-        <dc:Bounds x="970" y="100" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_05ovikm_di" bpmnElement="SequenceFlow_05ovikm">
-        <di:waypoint x="1070" y="140" />
-        <di:waypoint x="1412" y="140" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_17cq3xj_di" bpmnElement="Task_1tv7jy5">
-        <dc:Bounds x="310" y="400" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1r2li91_di" bpmnElement="ScriptTask_1r2li91">
-        <dc:Bounds x="440" y="400" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0zbd2tq_di" bpmnElement="SequenceFlow_0zbd2tq">
-        <di:waypoint x="540" y="440" />
-        <di:waypoint x="584" y="440" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_01n5nmt_di" bpmnElement="Task_1en3luv">
-        <dc:Bounds x="310" y="590" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0juh1xy_di" bpmnElement="Task_1g8n8iz">
-        <dc:Bounds x="440" y="590" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0ax2c4p_di" bpmnElement="SequenceFlow_0ax2c4p">
-        <di:waypoint x="1375" y="530" />
-        <di:waypoint x="1412" y="530" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0stnvp3_di" bpmnElement="ScriptTask_0stnvp3">
-        <dc:Bounds x="310" y="840" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1f4o46q_di" bpmnElement="ScriptTask_1f4o46q">
-        <dc:Bounds x="440" y="840" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="CallActivity_0b28wlb_di" bpmnElement="CallActivity_0b28wlb">
-        <dc:Bounds x="730" y="840" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1d48cil_di" bpmnElement="SequenceFlow_1d48cil">
-        <di:waypoint x="410" y="880" />
-        <di:waypoint x="440" y="880" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_00dexhy_di" bpmnElement="SequenceFlow_00dexhy">
-        <di:waypoint x="540" y="880" />
-        <di:waypoint x="584" y="880" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="IntermediateCatchEvent_08wpvhs_di" bpmnElement="IntermediateCatchEvent_08wpvhs">
-        <dc:Bounds x="138" y="862" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="129" y="905" width="56" height="27" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0paqrtx_di" bpmnElement="SequenceFlow_0paqrtx">
-        <di:waypoint x="174" y="880" />
-        <di:waypoint x="310" y="880" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0sssiii_di" bpmnElement="ScriptTask_0sssiii">
-        <dc:Bounds x="880" y="840" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1me5mt6_di" bpmnElement="ScriptTask_1me5mt6">
-        <dc:Bounds x="1050" y="840" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0vrzjir_di" bpmnElement="ScriptTask_0vrzjir">
-        <dc:Bounds x="1210" y="840" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_150xio1_di" bpmnElement="SequenceFlow_150xio1">
-        <di:waypoint x="980" y="880" />
-        <di:waypoint x="1050" y="880" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_040fu80_di" bpmnElement="SequenceFlow_040fu80">
-        <di:waypoint x="1150" y="880" />
-        <di:waypoint x="1210" y="880" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0mls87v_di" bpmnElement="ScriptTask_0mls87v">
-        <dc:Bounds x="880" y="400" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0xx5bwa_di" bpmnElement="SequenceFlow_0xx5bwa">
-        <di:waypoint x="980" y="440" />
-        <di:waypoint x="1040" y="440" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0g8dgo6_di" bpmnElement="ScriptTask_0g8dgo6">
-        <dc:Bounds x="1040" y="400" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1sckufj_di" bpmnElement="SequenceFlow_1sckufj">
-        <di:waypoint x="1140" y="440" />
-        <di:waypoint x="1190" y="440" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0blxroa_di" bpmnElement="ScriptTask_0blxroa">
-        <dc:Bounds x="1190" y="400" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1gkb7iy_di" bpmnElement="SequenceFlow_1gkb7iy">
-        <di:waypoint x="1290" y="440" />
-        <di:waypoint x="1350" y="440" />
-        <di:waypoint x="1350" y="505" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0z9x5uh_di" bpmnElement="ScriptTask_0z9x5uh">
-        <dc:Bounds x="880" y="590" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_09197ms_di" bpmnElement="ScriptTask_09197ms">
-        <dc:Bounds x="1040" y="590" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_127nizg_di" bpmnElement="ScriptTask_127nizg">
-        <dc:Bounds x="1190" y="590" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1l74seh_di" bpmnElement="SequenceFlow_1l74seh">
-        <di:waypoint x="830" y="630" />
-        <di:waypoint x="880" y="630" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0jqxxjq_di" bpmnElement="SequenceFlow_0jqxxjq">
-        <di:waypoint x="980" y="630" />
-        <di:waypoint x="1040" y="630" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_02qun80_di" bpmnElement="SequenceFlow_02qun80">
-        <di:waypoint x="1140" y="630" />
-        <di:waypoint x="1190" y="630" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_03zglrh_di" bpmnElement="SequenceFlow_03zglrh">
-        <di:waypoint x="1290" y="630" />
-        <di:waypoint x="1350" y="630" />
-        <di:waypoint x="1350" y="555" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1omynpt_di" bpmnElement="SequenceFlow_1omynpt">
-        <di:waypoint x="830" y="880" />
-        <di:waypoint x="880" y="880" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="EndEvent_0elqlhv_di" bpmnElement="EndEvent_0elqlhv">
-        <dc:Bounds x="1412" y="862" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1uti8ls_di" bpmnElement="SequenceFlow_1uti8ls">
-        <di:waypoint x="1310" y="880" />
-        <di:waypoint x="1412" y="880" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="IntermediateThrowEvent_0gz4vi6_di" bpmnElement="EndEvent_02c8wsp">
-        <dc:Bounds x="1412" y="512" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1392" y="555" width="79" height="27" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0s8vhha_di" bpmnElement="ScriptTask_0s8vhha">
-        <dc:Bounds x="584" y="400" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0npsyye_di" bpmnElement="SequenceFlow_0npsyye">
-        <di:waypoint x="684" y="440" />
-        <di:waypoint x="730" y="440" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0z0ec5b_di" bpmnElement="ScriptTask_0z0ec5b">
-        <dc:Bounds x="584" y="590" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0cwbtmr_di" bpmnElement="SequenceFlow_0cwbtmr">
-        <di:waypoint x="684" y="630" />
-        <di:waypoint x="730" y="630" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1wffel4_di" bpmnElement="SequenceFlow_1wffel4">
-        <di:waypoint x="540" y="630" />
-        <di:waypoint x="584" y="630" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0ci5g6y_di" bpmnElement="ScriptTask_0ci5g6y">
-        <dc:Bounds x="584" y="840" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_01isn2q_di" bpmnElement="SequenceFlow_01isn2q">
-        <di:waypoint x="684" y="880" />
-        <di:waypoint x="730" y="880" />
-      </bpmndi:BPMNEdge>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn:definitions>
index 445c937..6e94538 100644 (file)
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.2.3">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
   <bpmn:process id="DoAllocateNSSI" name="DoAllocateNSSI" isExecutable="true">
-    <bpmn:startEvent id="allocatenssi_StartEvent" name="allocatenssi_StartEvent">
-      <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing>
+    <bpmn:startEvent id="StartEvent_0zs8ezi" name="Start">
+      <bpmn:outgoing>SequenceFlow_07xkshs</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="allocatenssi_StartEvent" targetRef="PreprocessIncomingRequest_task" />
-    <bpmn:sequenceFlow id="SequenceFlow_0khtova" sourceRef="PreprocessIncomingRequest_task" targetRef="CallActivity_09l7bhc" />
-    <bpmn:scriptTask id="Task_09nzhwk" name="send create request to NSSMF adapter" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1h5bw41</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1uiz85h</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnssi = new DoAllocateNSSI()
-dcnssi.sendCreateRequestNSSMF(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="Preprocess Request" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0khtova</bpmn:outgoing>
+    <bpmn:scriptTask id="ScriptTask_0n2z0z7" name="Preprocess Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_07xkshs</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0h6mn7j</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def dcnssi = new DoAllocateNSSI()
 dcnssi.preProcessRequest(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:scriptTask id="instantiate_NSTask" name="create slice profile" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0yie00u</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_0kzlbeh</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_1r8qkgf</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_09pv5lu</bpmn:outgoing>
+    <bpmn:sequenceFlow id="SequenceFlow_07xkshs" sourceRef="StartEvent_0zs8ezi" targetRef="ScriptTask_0n2z0z7" />
+    <bpmn:scriptTask id="ScriptTask_15a7mua" name="send request to NSSMF adapter" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0h6mn7j</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1wclf50</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def dcnssi = new DoAllocateNSSI()
-dcnssi.createSliceProfile(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:endEvent id="EndEvent_1x6k78c">
-      <bpmn:incoming>SequenceFlow_09pv5lu</bpmn:incoming>
-    </bpmn:endEvent>
-    <bpmn:scriptTask id="finishNSCreate_Task" name="Get NSSI progress" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1smrx3b</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_08xcz0v</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1lpxjvi</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnssi = new DoAllocateNSSI()
-dcnssi.getNSSMFProgresss(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_1uiz85h" sourceRef="Task_09nzhwk" targetRef="ExclusiveGateway_0xz0xx2" />
-    <bpmn:exclusiveGateway id="ExclusiveGateway_0b9d9l0" name="Is NSSI sharable?" default="SequenceFlow_0ueeeca">
-      <bpmn:incoming>SequenceFlow_0dj0jvq</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1h5bw41</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0ueeeca</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_1h5bw41" name="No" sourceRef="ExclusiveGateway_0b9d9l0" targetRef="Task_09nzhwk">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("nssmfOperation" )  == "create")}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:scriptTask id="ScriptTask_1ehyrsg" name="send update request to NSSMF adapter" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0ueeeca</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0xfhbqw</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnssi = new DoAllocateNSSI()
-dcnssi.sendUpdateRequestNSSMF(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_0ueeeca" name="Yes" sourceRef="ExclusiveGateway_0b9d9l0" targetRef="ScriptTask_1ehyrsg" />
-    <bpmn:scriptTask id="ScriptTask_0o93dvp" name="Get NSST from Catalog DB" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_03bz6dh</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0dj0jvq</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnssi = new DoAllocateNSSI()
-dcnssi.getNSSTInfo(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_0dj0jvq" sourceRef="ScriptTask_0o93dvp" targetRef="ExclusiveGateway_0b9d9l0" />
-    <bpmn:sequenceFlow id="SequenceFlow_0xfhbqw" sourceRef="ScriptTask_1ehyrsg" targetRef="ExclusiveGateway_0xz0xx2" />
-    <bpmn:scriptTask id="ScriptTask_1mv1npn" name="create NSSI and update relationship" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_07azk0i</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0yie00u</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnssi = new DoAllocateNSSI()
-dcnssi.instantiateNSSIService(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_1lpxjvi" sourceRef="finishNSCreate_Task" targetRef="ScriptTask_1fvkcir" />
-    <bpmn:callActivity id="CallActivity_09l7bhc" name="Call Decompose Service" calledElement="DecomposeService">
-      <bpmn:extensionElements>
-        <camunda:in source="msoRequestId" target="msoRequestId" />
-        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
-        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
-        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
-        <camunda:out source="WorkflowException" target="WorkflowException" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_0khtova</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_03bz6dh</bpmn:outgoing>
-    </bpmn:callActivity>
-    <bpmn:sequenceFlow id="SequenceFlow_03bz6dh" sourceRef="CallActivity_09l7bhc" targetRef="ScriptTask_0o93dvp" />
-    <bpmn:exclusiveGateway id="ExclusiveGateway_1cgffe3" name="Completed">
-      <bpmn:incoming>SequenceFlow_1xzq95u</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1kxwt7k</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0stj4cv</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:scriptTask id="ScriptTask_1escji6" name="Time delay" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0stj4cv</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_08xcz0v</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnssi = new DoAllocateNSSI()
-dcnssi.timeDelay(execution)</bpmn:script>
+dcnssi.sendCreateRequestNSSMF(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_08xcz0v" sourceRef="ScriptTask_1escji6" targetRef="finishNSCreate_Task" />
-    <bpmn:exclusiveGateway id="ExclusiveGateway_0xz0xx2">
-      <bpmn:incoming>SequenceFlow_0xfhbqw</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_1uiz85h</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1smrx3b</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_1kxwt7k" name="true" sourceRef="ExclusiveGateway_1cgffe3" targetRef="ExclusiveGateway_09hoejm">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isNSSICreated" )  == true)}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_0stj4cv" name="false" sourceRef="ExclusiveGateway_1cgffe3" targetRef="ScriptTask_1escji6">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isNSSICreated" )  == false)}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_1smrx3b" sourceRef="ExclusiveGateway_0xz0xx2" targetRef="finishNSCreate_Task" />
-    <bpmn:sequenceFlow id="SequenceFlow_0yie00u" sourceRef="ScriptTask_1mv1npn" targetRef="instantiate_NSTask" />
-    <bpmn:sequenceFlow id="SequenceFlow_09pv5lu" sourceRef="instantiate_NSTask" targetRef="EndEvent_1x6k78c" />
-    <bpmn:exclusiveGateway id="ExclusiveGateway_09hoejm" name="Is NSSI sharable?" default="SequenceFlow_0c2o5zl2">
-      <bpmn:incoming>SequenceFlow_1kxwt7k</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_07azk0i</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0c2o5zl2</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_07azk0i" sourceRef="ExclusiveGateway_09hoejm" targetRef="ScriptTask_1mv1npn">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("nssmfOperation" )  == "create")}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:scriptTask id="ScriptTask_0y2xmwi" name="Update relationship" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_14lzy4o</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0kzlbeh</bpmn:outgoing>
+    <bpmn:sequenceFlow id="SequenceFlow_1wclf50" sourceRef="ScriptTask_15a7mua" targetRef="Task_1ym947s" />
+    <bpmn:sequenceFlow id="SequenceFlow_0h6mn7j" sourceRef="ScriptTask_0n2z0z7" targetRef="ScriptTask_15a7mua" />
+    <bpmn:scriptTask id="Task_1ym947s" name="Query NSSI progress from adapter" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0gpgxw4</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1wclf50</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0p9gd2n</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def dcnssi = new DoAllocateNSSI()
-dcnssi.updateRelationship(execution)</bpmn:script>
+dcnssi.queryNSSIStatus(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_0c2o5zl2" sourceRef="ExclusiveGateway_09hoejm" targetRef="ScriptTask_0y2xmwi" />
-    <bpmn:sequenceFlow id="SequenceFlow_0kzlbeh" sourceRef="ScriptTask_0y2xmwi" targetRef="instantiate_NSTask" />
-    <bpmn:scriptTask id="ScriptTask_1fvkcir" name="Prepare Update Orchestration Task" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1lpxjvi</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0jjbci8</bpmn:outgoing>
+    <bpmn:scriptTask id="ScriptTask_0ki1c4k" name="Prepare Update Orchestration Task" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0p9gd2n</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ozi7ed</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def dcnssi = new DoAllocateNSSI()
 dcnssi.prepareUpdateOrchestrationTask(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:callActivity id="CallActivity_11d0poc" name="Call HandleOrchestrationTask" calledElement="HandleOrchestrationTask">
+    <bpmn:callActivity id="CallActivity_0knipxf" name="Call HandleOrchestrationTask" calledElement="HandleOrchestrationTask">
       <bpmn:extensionElements>
         <camunda:out source="statusCode" target="CSSOT_dbResponseCode" />
         <camunda:out source="response" target="CSSOT_dbResponse" />
@@ -150,215 +48,111 @@ dcnssi.prepareUpdateOrchestrationTask(execution)</bpmn:script>
         <camunda:in source="CSSOT_paramJson" target="paramJson" />
         <camunda:in source="CSSOT_requestMethod" target="method" />
       </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_0jjbci8</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1xzq95u</bpmn:outgoing>
+      <bpmn:incoming>SequenceFlow_1ozi7ed</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0hgv9c5</bpmn:outgoing>
     </bpmn:callActivity>
-    <bpmn:sequenceFlow id="SequenceFlow_0jjbci8" sourceRef="ScriptTask_1fvkcir" targetRef="CallActivity_11d0poc" />
-    <bpmn:sequenceFlow id="SequenceFlow_1xzq95u" sourceRef="CallActivity_11d0poc" targetRef="ExclusiveGateway_1cgffe3" />
-    <bpmn:exclusiveGateway id="ExclusiveGateway_19tascw" name="Is NSI option available?" default="SequenceFlow_14lzy4o">
-      <bpmn:incoming>SequenceFlow_0c2o5zl2</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_14lzy4o</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_1r8qkgf</bpmn:outgoing>
+    <bpmn:sequenceFlow id="SequenceFlow_1ozi7ed" sourceRef="ScriptTask_0ki1c4k" targetRef="CallActivity_0knipxf" />
+    <bpmn:sequenceFlow id="SequenceFlow_0p9gd2n" sourceRef="Task_1ym947s" targetRef="ScriptTask_0ki1c4k" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_11gv703" name="Completed" default="SequenceFlow_0y5jr25">
+      <bpmn:incoming>SequenceFlow_0hgv9c5</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0y5jr25</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_170frn3</bpmn:outgoing>
     </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_14lzy4o" sourceRef="ExclusiveGateway_19tascw" targetRef="ScriptTask_0y2xmwi" />
-    <bpmn:sequenceFlow id="SequenceFlow_1r8qkgf" sourceRef="ExclusiveGateway_19tascw" targetRef="instantiate_NSTask">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isNSIOptionAvailable" )  == true)}</bpmn:conditionExpression>
+    <bpmn:sequenceFlow id="SequenceFlow_0hgv9c5" sourceRef="CallActivity_0knipxf" targetRef="ExclusiveGateway_11gv703" />
+    <bpmn:scriptTask id="ScriptTask_1s7bt3s" name="Time delay" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0y5jr25</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0gpgxw4</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcnssi = new DoAllocateNSSI()
+dcnssi.timeDelay(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0y5jr25" name="false" sourceRef="ExclusiveGateway_11gv703" targetRef="ScriptTask_1s7bt3s" />
+    <bpmn:sequenceFlow id="SequenceFlow_0gpgxw4" sourceRef="ScriptTask_1s7bt3s" targetRef="Task_1ym947s" />
+    <bpmn:sequenceFlow id="SequenceFlow_170frn3" name="yes" sourceRef="ExclusiveGateway_11gv703" targetRef="IntermediateThrowEvent_10xe1qh">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("jobFinished" )  == true)}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
+    <bpmn:endEvent id="IntermediateThrowEvent_10xe1qh">
+      <bpmn:incoming>SequenceFlow_170frn3</bpmn:incoming>
+    </bpmn:endEvent>
   </bpmn:process>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoAllocateNSSI">
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="allocatenssi_StartEvent">
-        <dc:Bounds x="175" y="509" width="36" height="36" />
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoAllocateNSSIV2">
+      <bpmndi:BPMNShape id="StartEvent_0zs8ezi_di" bpmnElement="StartEvent_0zs8ezi">
+        <dc:Bounds x="147" y="112" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="152" y="545" width="85" height="27" />
+          <dc:Bounds x="152" y="153" width="25" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln">
-        <di:waypoint x="211" y="527" />
-        <di:waypoint x="269" y="527" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="266" y="123" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0khtova_di" bpmnElement="SequenceFlow_0khtova">
-        <di:waypoint x="369" y="527" />
-        <di:waypoint x="444" y="527" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="436" y="108" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_1dw39hg_di" bpmnElement="Task_09nzhwk">
-        <dc:Bounds x="887" y="659" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task">
-        <dc:Bounds x="269" y="487" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1qmmew8_di" bpmnElement="instantiate_NSTask">
-        <dc:Bounds x="2286" y="467" width="100" height="80" />
+      <bpmndi:BPMNShape id="ScriptTask_0n2z0z7_di" bpmnElement="ScriptTask_0n2z0z7">
+        <dc:Bounds x="270" y="90" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c">
-        <dc:Bounds x="2482" y="489" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="412" y="617" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0xxyfku_di" bpmnElement="finishNSCreate_Task">
-        <dc:Bounds x="1238" y="467" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1uiz85h_di" bpmnElement="SequenceFlow_1uiz85h">
-        <di:waypoint x="987" y="699" />
-        <di:waypoint x="1103" y="699" />
-        <di:waypoint x="1103" y="532" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="631" y="108" width="0" height="12" />
-        </bpmndi:BPMNLabel>
+      <bpmndi:BPMNEdge id="SequenceFlow_07xkshs_di" bpmnElement="SequenceFlow_07xkshs">
+        <di:waypoint x="183" y="130" />
+        <di:waypoint x="270" y="130" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ExclusiveGateway_0b9d9l0_di" bpmnElement="ExclusiveGateway_0b9d9l0" isMarkerVisible="true">
-        <dc:Bounds x="778" y="502" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="838" y="520" width="90" height="14" />
-        </bpmndi:BPMNLabel>
+      <bpmndi:BPMNShape id="ScriptTask_15a7mua_di" bpmnElement="ScriptTask_15a7mua">
+        <dc:Bounds x="460" y="90" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1h5bw41_di" bpmnElement="SequenceFlow_1h5bw41">
-        <di:waypoint x="803" y="552" />
-        <di:waypoint x="803" y="699" />
-        <di:waypoint x="883" y="699" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="836" y="681" width="14" height="14" />
-        </bpmndi:BPMNLabel>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wclf50_di" bpmnElement="SequenceFlow_1wclf50">
+        <di:waypoint x="560" y="130" />
+        <di:waypoint x="670" y="130" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_1ehyrsg_di" bpmnElement="ScriptTask_1ehyrsg">
-        <dc:Bounds x="894" y="310" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0ueeeca_di" bpmnElement="SequenceFlow_0ueeeca">
-        <di:waypoint x="803" y="502" />
-        <di:waypoint x="803" y="350" />
-        <di:waypoint x="894" y="350" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="831" y="358" width="19" height="14" />
-        </bpmndi:BPMNLabel>
+      <bpmndi:BPMNEdge id="SequenceFlow_0h6mn7j_di" bpmnElement="SequenceFlow_0h6mn7j">
+        <di:waypoint x="370" y="130" />
+        <di:waypoint x="460" y="130" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0o93dvp_di" bpmnElement="ScriptTask_0o93dvp">
-        <dc:Bounds x="618" y="487" width="100" height="80" />
+      <bpmndi:BPMNShape id="ScriptTask_0bt5d96_di" bpmnElement="Task_1ym947s">
+        <dc:Bounds x="670" y="90" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0dj0jvq_di" bpmnElement="SequenceFlow_0dj0jvq">
-        <di:waypoint x="718" y="527" />
-        <di:waypoint x="778" y="527" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0xfhbqw_di" bpmnElement="SequenceFlow_0xfhbqw">
-        <di:waypoint x="994" y="350" />
-        <di:waypoint x="1103" y="350" />
-        <di:waypoint x="1103" y="482" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_1mv1npn_di" bpmnElement="ScriptTask_1mv1npn">
-        <dc:Bounds x="2089" y="467" width="100" height="80" />
+      <bpmndi:BPMNShape id="ScriptTask_0ki1c4k_di" bpmnElement="ScriptTask_0ki1c4k">
+        <dc:Bounds x="840" y="90" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1lpxjvi_di" bpmnElement="SequenceFlow_1lpxjvi">
-        <di:waypoint x="1338" y="507" />
-        <di:waypoint x="1411" y="507" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="CallActivity_09l7bhc_di" bpmnElement="CallActivity_09l7bhc">
-        <dc:Bounds x="444" y="487" width="100" height="80" />
+      <bpmndi:BPMNShape id="CallActivity_0knipxf_di" bpmnElement="CallActivity_0knipxf">
+        <dc:Bounds x="1040" y="90" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_03bz6dh_di" bpmnElement="SequenceFlow_03bz6dh">
-        <di:waypoint x="544" y="527" />
-        <di:waypoint x="618" y="527" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1ozi7ed_di" bpmnElement="SequenceFlow_1ozi7ed">
+        <di:waypoint x="940" y="130" />
+        <di:waypoint x="1040" y="130" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0p9gd2n_di" bpmnElement="SequenceFlow_0p9gd2n">
+        <di:waypoint x="770" y="130" />
+        <di:waypoint x="840" y="130" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ExclusiveGateway_1cgffe3_di" bpmnElement="ExclusiveGateway_1cgffe3" isMarkerVisible="true">
-        <dc:Bounds x="1773" y="482" width="50" height="50" />
+      <bpmndi:BPMNShape id="ExclusiveGateway_11gv703_di" bpmnElement="ExclusiveGateway_11gv703" isMarkerVisible="true">
+        <dc:Bounds x="1245" y="105" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1771" y="458" width="54" height="14" />
+          <dc:Bounds x="1243" y="81" width="54" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1escji6_di" bpmnElement="ScriptTask_1escji6">
-        <dc:Bounds x="1748" y="624" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_08xcz0v_di" bpmnElement="SequenceFlow_08xcz0v">
-        <di:waypoint x="1748" y="664" />
-        <di:waypoint x="1288" y="664" />
-        <di:waypoint x="1288" y="547" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0hgv9c5_di" bpmnElement="SequenceFlow_0hgv9c5">
+        <di:waypoint x="1140" y="130" />
+        <di:waypoint x="1245" y="130" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ExclusiveGateway_0xz0xx2_di" bpmnElement="ExclusiveGateway_0xz0xx2" isMarkerVisible="true">
-        <dc:Bounds x="1078" y="482" width="50" height="50" />
+      <bpmndi:BPMNShape id="ScriptTask_1s7bt3s_di" bpmnElement="ScriptTask_1s7bt3s">
+        <dc:Bounds x="1220" y="230" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1kxwt7k_di" bpmnElement="SequenceFlow_1kxwt7k">
-        <di:waypoint x="1823" y="507" />
-        <di:waypoint x="1928" y="507" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1866" y="489" width="19" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0stj4cv_di" bpmnElement="SequenceFlow_0stj4cv">
-        <di:waypoint x="1798" y="532" />
-        <di:waypoint x="1798" y="624" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0y5jr25_di" bpmnElement="SequenceFlow_0y5jr25">
+        <di:waypoint x="1270" y="155" />
+        <di:waypoint x="1270" y="230" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1801" y="575" width="24" height="14" />
+          <dc:Bounds x="1251" y="195" width="23" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1smrx3b_di" bpmnElement="SequenceFlow_1smrx3b">
-        <di:waypoint x="1128" y="507" />
-        <di:waypoint x="1238" y="507" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0yie00u_di" bpmnElement="SequenceFlow_0yie00u">
-        <di:waypoint x="2189" y="507" />
-        <di:waypoint x="2286" y="507" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_09pv5lu_di" bpmnElement="SequenceFlow_09pv5lu">
-        <di:waypoint x="2386" y="507" />
-        <di:waypoint x="2482" y="507" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0gpgxw4_di" bpmnElement="SequenceFlow_0gpgxw4">
+        <di:waypoint x="1220" y="270" />
+        <di:waypoint x="720" y="270" />
+        <di:waypoint x="720" y="170" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ExclusiveGateway_09hoejm_di" bpmnElement="ExclusiveGateway_09hoejm" isMarkerVisible="true">
-        <dc:Bounds x="1928" y="482" width="50" height="50" />
+      <bpmndi:BPMNEdge id="SequenceFlow_170frn3_di" bpmnElement="SequenceFlow_170frn3">
+        <di:waypoint x="1295" y="130" />
+        <di:waypoint x="1372" y="130" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1908" y="542" width="90" height="14" />
+          <dc:Bounds x="1325" y="112" width="17" height="14" />
         </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_07azk0i_di" bpmnElement="SequenceFlow_07azk0i">
-        <di:waypoint x="1978" y="507" />
-        <di:waypoint x="2089" y="507" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0y2xmwi_di" bpmnElement="ScriptTask_0y2xmwi">
-        <dc:Bounds x="2089" y="310" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0kzlbeh_di" bpmnElement="SequenceFlow_0kzlbeh">
-        <di:waypoint x="2189" y="350" />
-        <di:waypoint x="2336" y="350" />
-        <di:waypoint x="2336" y="467" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_1fvkcir_di" bpmnElement="ScriptTask_1fvkcir">
-        <dc:Bounds x="1411" y="467" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="CallActivity_11d0poc_di" bpmnElement="CallActivity_11d0poc">
-        <dc:Bounds x="1587" y="467" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0jjbci8_di" bpmnElement="SequenceFlow_0jjbci8">
-        <di:waypoint x="1511" y="507" />
-        <di:waypoint x="1587" y="507" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1xzq95u_di" bpmnElement="SequenceFlow_1xzq95u">
-        <di:waypoint x="1687" y="507" />
-        <di:waypoint x="1773" y="507" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ExclusiveGateway_19tascw_di" bpmnElement="ExclusiveGateway_19tascw" isMarkerVisible="true">
-        <dc:Bounds x="1928" y="325" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1854" y="337" width="64" height="27" />
-        </bpmndi:BPMNLabel>
+      <bpmndi:BPMNShape id="EndEvent_1q1vntz_di" bpmnElement="IntermediateThrowEvent_10xe1qh">
+        <dc:Bounds x="1372" y="112" width="36" height="36" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0c2o5zl_di" bpmnElement="SequenceFlow_0c2o5zl2">
-        <di:waypoint x="1953" y="482" />
-        <di:waypoint x="1953" y="375" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_14lzy4o_di" bpmnElement="SequenceFlow_14lzy4o">
-        <di:waypoint x="1978" y="350" />
-        <di:waypoint x="2089" y="350" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1r8qkgf_di" bpmnElement="SequenceFlow_1r8qkgf">
-        <di:waypoint x="1953" y="325" />
-        <di:waypoint x="1953" y="205" />
-        <di:waypoint x="2336" y="205" />
-        <di:waypoint x="2336" y="465" />
-      </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateNSSIV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoAllocateNSSIV2.bpmn
deleted file mode 100644 (file)
index bcb48a6..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
-  <bpmn:process id="DoAllocateNSSIV2" name="DoAllocateNSSIV2" isExecutable="true">
-    <bpmn:startEvent id="StartEvent_0zs8ezi" name="Start">
-      <bpmn:outgoing>SequenceFlow_07xkshs</bpmn:outgoing>
-    </bpmn:startEvent>
-    <bpmn:scriptTask id="ScriptTask_0n2z0z7" name="Preprocess Request" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_07xkshs</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0h6mn7j</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnssi = new DoAllocateNSSI()
-dcnssi.preProcessRequest(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_07xkshs" sourceRef="StartEvent_0zs8ezi" targetRef="ScriptTask_0n2z0z7" />
-    <bpmn:scriptTask id="ScriptTask_15a7mua" name="send allocate request to NSSMF adapter" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1iw5oad</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1wclf50</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnssi = new DoAllocateNSSI()
-dcnssi.sendCreateRequestNSSMF(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_11w6bb3" name="Is NSSI sharable?">
-      <bpmn:incoming>SequenceFlow_0ib27f2</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1iw5oad</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0haiyzv</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:scriptTask id="ScriptTask_16zhp9e" name="send modify request to NSSMF adapter" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0haiyzv</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1ellzst</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnssi = new DoAllocateNSSI()
-dcnssi.sendUpdateRequestNSSMF(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_0jx00mv">
-      <bpmn:incoming>SequenceFlow_1wclf50</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_1ellzst</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0ejdefw</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_1iw5oad" name="No" sourceRef="ExclusiveGateway_11w6bb3" targetRef="ScriptTask_15a7mua">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("nssmfOperation" )  == "create")}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_1wclf50" sourceRef="ScriptTask_15a7mua" targetRef="ExclusiveGateway_0jx00mv" />
-    <bpmn:sequenceFlow id="SequenceFlow_0haiyzv" name="yes" sourceRef="ExclusiveGateway_11w6bb3" targetRef="ScriptTask_16zhp9e">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("nssmfOperation" )  == "update")}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_1ellzst" sourceRef="ScriptTask_16zhp9e" targetRef="ExclusiveGateway_0jx00mv" />
-    <bpmn:sequenceFlow id="SequenceFlow_0h6mn7j" sourceRef="ScriptTask_0n2z0z7" targetRef="ScriptTask_1e7tchy" />
-    <bpmn:scriptTask id="ScriptTask_1e7tchy" name="Prepare NSSI Request" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0h6mn7j</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0ib27f2</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnssi = new DoAllocateNSSI()
-dcnssi.getNSSTInfo(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_0ib27f2" sourceRef="ScriptTask_1e7tchy" targetRef="ExclusiveGateway_11w6bb3" />
-    <bpmn:sequenceFlow id="SequenceFlow_0ejdefw" sourceRef="ExclusiveGateway_0jx00mv" targetRef="Task_1ym947s" />
-    <bpmn:scriptTask id="Task_1ym947s" name="Query NSSI progress from adapter" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0ejdefw</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_0gpgxw4</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0p9gd2n</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnssi = new DoAllocateNSSI()
-dcnssi.queryNSSIStatus(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_0ki1c4k" name="Prepare Update Orchestration Task" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0p9gd2n</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1ozi7ed</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnssi = new DoAllocateNSSI()
-dcnssi.prepareUpdateOrchestrationTask(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:callActivity id="CallActivity_0knipxf" name="Call HandleOrchestrationTask" calledElement="HandleOrchestrationTask">
-      <bpmn:extensionElements>
-        <camunda:out source="statusCode" target="CSSOT_dbResponseCode" />
-        <camunda:out source="response" target="CSSOT_dbResponse" />
-        <camunda:in source="CSSOT_taskId" target="taskId" />
-        <camunda:in source="msoRequestId" target="requestId" />
-        <camunda:in source="CSSOT_name" target="taskName" />
-        <camunda:in source="CSSOT_status" target="taskStatus" />
-        <camunda:in source="CSSOT_isManual" target="isManual" />
-        <camunda:in source="CSSOT_paramJson" target="paramJson" />
-        <camunda:in source="CSSOT_requestMethod" target="method" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_1ozi7ed</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0hgv9c5</bpmn:outgoing>
-    </bpmn:callActivity>
-    <bpmn:sequenceFlow id="SequenceFlow_1ozi7ed" sourceRef="ScriptTask_0ki1c4k" targetRef="CallActivity_0knipxf" />
-    <bpmn:sequenceFlow id="SequenceFlow_0p9gd2n" sourceRef="Task_1ym947s" targetRef="ScriptTask_0ki1c4k" />
-    <bpmn:exclusiveGateway id="ExclusiveGateway_11gv703" name="Completed">
-      <bpmn:incoming>SequenceFlow_0hgv9c5</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0y5jr25</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_170frn3</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_0hgv9c5" sourceRef="CallActivity_0knipxf" targetRef="ExclusiveGateway_11gv703" />
-    <bpmn:scriptTask id="ScriptTask_1s7bt3s" name="Time delay" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0y5jr25</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0gpgxw4</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcnssi = new DoAllocateNSSI()
-dcnssi.timeDelay(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_0y5jr25" name="false" sourceRef="ExclusiveGateway_11gv703" targetRef="ScriptTask_1s7bt3s" />
-    <bpmn:sequenceFlow id="SequenceFlow_0gpgxw4" sourceRef="ScriptTask_1s7bt3s" targetRef="Task_1ym947s" />
-    <bpmn:sequenceFlow id="SequenceFlow_170frn3" sourceRef="ExclusiveGateway_11gv703" targetRef="IntermediateThrowEvent_10xe1qh">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("nssmfOperation" )  == "update")}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:endEvent id="IntermediateThrowEvent_10xe1qh">
-      <bpmn:incoming>SequenceFlow_170frn3</bpmn:incoming>
-    </bpmn:endEvent>
-  </bpmn:process>
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoAllocateNSSIV2">
-      <bpmndi:BPMNShape id="StartEvent_0zs8ezi_di" bpmnElement="StartEvent_0zs8ezi">
-        <dc:Bounds x="147" y="272" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="152" y="313" width="25" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0n2z0z7_di" bpmnElement="ScriptTask_0n2z0z7">
-        <dc:Bounds x="235" y="250" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_07xkshs_di" bpmnElement="SequenceFlow_07xkshs">
-        <di:waypoint x="183" y="290" />
-        <di:waypoint x="235" y="290" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_15a7mua_di" bpmnElement="ScriptTask_15a7mua">
-        <dc:Bounds x="660" y="430" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_11w6bb3_di" bpmnElement="ExclusiveGateway_11w6bb3" isMarkerVisible="true">
-        <dc:Bounds x="591" y="265" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="645" y="283" width="89" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_16zhp9e_di" bpmnElement="ScriptTask_16zhp9e">
-        <dc:Bounds x="660" y="81" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_0jx00mv_di" bpmnElement="ExclusiveGateway_0jx00mv" isMarkerVisible="true">
-        <dc:Bounds x="785" y="265" width="50" height="50" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1iw5oad_di" bpmnElement="SequenceFlow_1iw5oad">
-        <di:waypoint x="616" y="315" />
-        <di:waypoint x="616" y="470" />
-        <di:waypoint x="660" y="470" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="631" y="393" width="15" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1wclf50_di" bpmnElement="SequenceFlow_1wclf50">
-        <di:waypoint x="760" y="470" />
-        <di:waypoint x="810" y="470" />
-        <di:waypoint x="810" y="315" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0haiyzv_di" bpmnElement="SequenceFlow_0haiyzv">
-        <di:waypoint x="616" y="265" />
-        <di:waypoint x="616" y="121" />
-        <di:waypoint x="660" y="121" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="635" y="173" width="17" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1ellzst_di" bpmnElement="SequenceFlow_1ellzst">
-        <di:waypoint x="760" y="121" />
-        <di:waypoint x="810" y="121" />
-        <di:waypoint x="810" y="265" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0h6mn7j_di" bpmnElement="SequenceFlow_0h6mn7j">
-        <di:waypoint x="335" y="290" />
-        <di:waypoint x="410" y="290" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_1e7tchy_di" bpmnElement="ScriptTask_1e7tchy">
-        <dc:Bounds x="410" y="250" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0ib27f2_di" bpmnElement="SequenceFlow_0ib27f2">
-        <di:waypoint x="510" y="290" />
-        <di:waypoint x="591" y="290" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0ejdefw_di" bpmnElement="SequenceFlow_0ejdefw">
-        <di:waypoint x="835" y="290" />
-        <di:waypoint x="910" y="290" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0bt5d96_di" bpmnElement="Task_1ym947s">
-        <dc:Bounds x="910" y="250" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0ki1c4k_di" bpmnElement="ScriptTask_0ki1c4k">
-        <dc:Bounds x="1090" y="250" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="CallActivity_0knipxf_di" bpmnElement="CallActivity_0knipxf">
-        <dc:Bounds x="1238" y="250" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1ozi7ed_di" bpmnElement="SequenceFlow_1ozi7ed">
-        <di:waypoint x="1190" y="290" />
-        <di:waypoint x="1238" y="290" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0p9gd2n_di" bpmnElement="SequenceFlow_0p9gd2n">
-        <di:waypoint x="1010" y="290" />
-        <di:waypoint x="1090" y="290" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ExclusiveGateway_11gv703_di" bpmnElement="ExclusiveGateway_11gv703" isMarkerVisible="true">
-        <dc:Bounds x="1395" y="265" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1393" y="241" width="54" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0hgv9c5_di" bpmnElement="SequenceFlow_0hgv9c5">
-        <di:waypoint x="1338" y="290" />
-        <di:waypoint x="1395" y="290" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_1s7bt3s_di" bpmnElement="ScriptTask_1s7bt3s">
-        <dc:Bounds x="1370" y="390" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0y5jr25_di" bpmnElement="SequenceFlow_0y5jr25">
-        <di:waypoint x="1420" y="315" />
-        <di:waypoint x="1420" y="390" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1401" y="355" width="23" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0gpgxw4_di" bpmnElement="SequenceFlow_0gpgxw4">
-        <di:waypoint x="1370" y="430" />
-        <di:waypoint x="960" y="430" />
-        <di:waypoint x="960" y="330" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_170frn3_di" bpmnElement="SequenceFlow_170frn3">
-        <di:waypoint x="1445" y="290" />
-        <di:waypoint x="1522" y="290" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="EndEvent_1q1vntz_di" bpmnElement="IntermediateThrowEvent_10xe1qh">
-        <dc:Bounds x="1522" y="272" width="36" height="36" />
-      </bpmndi:BPMNShape>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn:definitions>
index 894f7d3..0345ea7 100644 (file)
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="2.2.3">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
   <bpmn:process id="DoCreateSliceServiceInstance" name="DoCreateSliceServiceInstance" isExecutable="true">
     <bpmn:startEvent id="createNS_StartEvent" name="createNS_StartEvent">
       <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing>
     </bpmn:startEvent>
     <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="createNS_StartEvent" targetRef="PreprocessIncomingRequest_task" />
-    <bpmn:sequenceFlow id="SequenceFlow_0khtova" sourceRef="PreprocessIncomingRequest_task" targetRef="instantiate_NSTask" />
+    <bpmn:sequenceFlow id="SequenceFlow_0khtova" sourceRef="PreprocessIncomingRequest_task" targetRef="ScriptTask_1g378se" />
     <bpmn:scriptTask id="Task_09nzhwk" name="Create service profile" scriptFormat="groovy">
       <bpmn:incoming>SequenceFlow_17u69c4</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1uiz85h</bpmn:outgoing>
@@ -21,7 +21,7 @@ def dcsi = new DoCreateSliceServiceInstance()
 dcsi.preProcessRequest(execution)</bpmn:script>
     </bpmn:scriptTask>
     <bpmn:scriptTask id="instantiate_NSTask" name="create Slice Service in AAI" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0khtova</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_11gmz7e</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0g5bwvl</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def dcsi = new DoCreateSliceServiceInstance()
@@ -40,6 +40,27 @@ def dcsi = new DoCreateSliceServiceInstance()
 dcsi.createAllottedResource(execution)</bpmn:script>
     </bpmn:scriptTask>
     <bpmn:sequenceFlow id="SequenceFlow_17u69c4" sourceRef="ScriptTask_18rzwzb" targetRef="Task_09nzhwk" />
+    <bpmn:scriptTask id="ScriptTask_1g378se" name="Prepare ServiceProfile&#10;Decompose Service&#10;" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0khtova</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1wafqwa</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi= new CreateSliceService()
+dcsi.prepareDecomposeService(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="CallActivity_0svmkxh" name="Call Decompose Service" calledElement="DecomposeService">
+      <bpmn:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="serviceDecomposition" target="serviceProfileDecomposition" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1wafqwa</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_11gmz7e</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_1wafqwa" sourceRef="ScriptTask_1g378se" targetRef="CallActivity_0svmkxh" />
+    <bpmn:sequenceFlow id="SequenceFlow_11gmz7e" sourceRef="CallActivity_0svmkxh" targetRef="instantiate_NSTask" />
   </bpmn:process>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateSliceServiceInstance">
@@ -60,43 +81,57 @@ dcsi.createAllottedResource(execution)</bpmn:script>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0khtova_di" bpmnElement="SequenceFlow_0khtova">
         <di:waypoint x="393" y="129" />
-        <di:waypoint x="474" y="129" />
+        <di:waypoint x="440" y="129" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="436" y="108" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_1dw39hg_di" bpmnElement="Task_09nzhwk">
-        <dc:Bounds x="851" y="89" width="100" height="80" />
+        <dc:Bounds x="1120" y="89" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task">
         <dc:Bounds x="293" y="89" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1qmmew8_di" bpmnElement="instantiate_NSTask">
-        <dc:Bounds x="474" y="89" width="100" height="80" />
+        <dc:Bounds x="790" y="89" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c">
-        <dc:Bounds x="1049" y="111" width="36" height="36" />
+        <dc:Bounds x="1292" y="111" width="36" height="36" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="412" y="617" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1uiz85h_di" bpmnElement="SequenceFlow_1uiz85h">
-        <di:waypoint x="951" y="129" />
-        <di:waypoint x="1049" y="129" />
+        <di:waypoint x="1220" y="129" />
+        <di:waypoint x="1292" y="129" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="631" y="108" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0g5bwvl_di" bpmnElement="SequenceFlow_0g5bwvl">
-        <di:waypoint x="574" y="129" />
-        <di:waypoint x="658" y="129" />
+        <di:waypoint x="890" y="129" />
+        <di:waypoint x="960" y="129" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_18rzwzb_di" bpmnElement="ScriptTask_18rzwzb">
-        <dc:Bounds x="658" y="89" width="100" height="80" />
+        <dc:Bounds x="960" y="89" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_17u69c4_di" bpmnElement="SequenceFlow_17u69c4">
-        <di:waypoint x="758" y="129" />
-        <di:waypoint x="851" y="129" />
+        <di:waypoint x="1060" y="129" />
+        <di:waypoint x="1120" y="129" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1g378se_di" bpmnElement="ScriptTask_1g378se">
+        <dc:Bounds x="440" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0svmkxh_di" bpmnElement="CallActivity_0svmkxh">
+        <dc:Bounds x="610" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wafqwa_di" bpmnElement="SequenceFlow_1wafqwa">
+        <di:waypoint x="540" y="129" />
+        <di:waypoint x="610" y="129" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11gmz7e_di" bpmnElement="SequenceFlow_11gmz7e">
+        <di:waypoint x="710" y="129" />
+        <di:waypoint x="790" y="129" />
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
index 3ed1999..045d88d 100644 (file)
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
   <bpmn:process id="DoCreateSliceServiceOption" name="DoCreateSliceServiceOption" isExecutable="true">
-    <bpmn:startEvent id="createNS_StartEvent" name="createOption_StartEvent">
-      <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing>
-    </bpmn:startEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="createNS_StartEvent" targetRef="PreprocessIncomingRequest_task" />
-    <bpmn:sequenceFlow id="SequenceFlow_0khtova" sourceRef="PreprocessIncomingRequest_task" targetRef="Task_09nzhwk" />
-    <bpmn:scriptTask id="Task_09nzhwk" name="Prepare OOF Select NSI options request" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0khtova</bpmn:incoming>
-      <bpmn:outgoing>Flow_15c2jcx</bpmn:outgoing>
+    <bpmn:scriptTask id="ScriptTask_11rb2ju" name="prepare NST decomposition" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_067xdx1</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1kzy63m</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def dcso = new DoCreateSliceServiceOption()
-dcso.prepareSelectNSIRequest(execution)</bpmn:script>
+dcso.prepareDecomposeNST(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="Preprocess Request" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0khtova</bpmn:outgoing>
+    <bpmn:callActivity id="CallActivity_0c567r4" name="Call Decompose Service" calledElement="DecomposeService">
+      <bpmn:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="nstServiceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="serviceDecomposition" target="nstServiceDecomposition" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1kzy63m</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1t317y2</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:scriptTask id="ScriptTask_0z0dwk2" name="Process Decomposition NST" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1t317y2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0t4gmix</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def dcso = new DoCreateSliceServiceOption()
-dcso.preProcessRequest(execution)</bpmn:script>
+dcso.processDecompositionNST(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:endEvent id="EndEvent_1x6k78c">
-      <bpmn:incoming>SequenceFlow_1ap8kar</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_0hnsycl</bpmn:incoming>
+    <bpmn:sequenceFlow id="SequenceFlow_1kzy63m" sourceRef="ScriptTask_11rb2ju" targetRef="CallActivity_0c567r4" />
+    <bpmn:sequenceFlow id="SequenceFlow_1t317y2" sourceRef="CallActivity_0c567r4" targetRef="ScriptTask_0z0dwk2" />
+    <bpmn:parallelGateway id="ParallelGateway_05zg916">
+      <bpmn:incoming>SequenceFlow_1h3kdce</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_05250mp</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0euwvgf</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0il5j01</bpmn:outgoing>
+    </bpmn:parallelGateway>
+    <bpmn:parallelGateway id="ParallelGateway_06a2n9u">
+      <bpmn:incoming>SequenceFlow_14rhmx9</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_103oxyw</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0aasemn</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1tr3i9d</bpmn:outgoing>
+    </bpmn:parallelGateway>
+    <bpmn:callActivity id="CallActivity_0tzazs0" name="Handle NSST Selection OOF request" calledElement="DoHandleOofRequest">
+      <bpmn:extensionElements>
+        <camunda:in source="nstSelectionUrl" target="apiPath" />
+        <camunda:in source="nstSelection_correlator" target="correlator" />
+        <camunda:in source="nstSelection_messageType" target="messageType" />
+        <camunda:in source="nstSelection_timeout" target="timeout" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="asyncCallbackResponse" target="nstSelection_oofResponse" />
+        <camunda:in source="nstSelection_oofRequest" target="oofRequest" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0abqxa1</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1tqg26p</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_05250mp" sourceRef="ParallelGateway_05zg916" targetRef="CallActivity_1vzxvna" />
+    <bpmn:sequenceFlow id="SequenceFlow_14rhmx9" sourceRef="CallActivity_1vzxvna" targetRef="ParallelGateway_06a2n9u" />
+    <bpmn:sequenceFlow id="SequenceFlow_0euwvgf" sourceRef="ParallelGateway_05zg916" targetRef="CallActivity_0melx8d" />
+    <bpmn:sequenceFlow id="SequenceFlow_103oxyw" sourceRef="CallActivity_0melx8d" targetRef="ParallelGateway_06a2n9u" />
+    <bpmn:sequenceFlow id="SequenceFlow_0il5j01" sourceRef="ParallelGateway_05zg916" targetRef="CallActivity_0otry7e" />
+    <bpmn:sequenceFlow id="SequenceFlow_0aasemn" sourceRef="CallActivity_0otry7e" targetRef="ParallelGateway_06a2n9u" />
+    <bpmn:sequenceFlow id="SequenceFlow_1tr3i9d" sourceRef="ParallelGateway_06a2n9u" targetRef="Task_1jyj2vs" />
+    <bpmn:sequenceFlow id="SequenceFlow_0abqxa1" sourceRef="Task_1m9qoo3" targetRef="CallActivity_0tzazs0" />
+    <bpmn:sequenceFlow id="SequenceFlow_1tqg26p" sourceRef="CallActivity_0tzazs0" targetRef="Task_00nfg5x" />
+    <bpmn:endEvent id="EndEvent_0p0cjhl">
+      <bpmn:incoming>SequenceFlow_1nrfy6i</bpmn:incoming>
     </bpmn:endEvent>
-    <bpmn:scriptTask id="ScriptTask_0kecvrc" name="prepare list of NSST associated with NST" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0wy6oag</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0lt2cdo</bpmn:outgoing>
+    <bpmn:startEvent id="StartEvent_0mwlirs" name="Start">
+      <bpmn:outgoing>SequenceFlow_1fuwy35</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:scriptTask id="ScriptTask_0w34e57" name="Preprocess Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1fuwy35</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_067xdx1</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def dcso = new DoCreateSliceServiceOption()
-dcso.prepareNSSTlistfromNST(execution)</bpmn:script>
+dcso.preProcessRequest(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_1mlytov" name="send request to OOF for NSSI options" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0a5f5y6</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1r9n9ef</bpmn:outgoing>
+    <bpmn:sequenceFlow id="SequenceFlow_1fuwy35" sourceRef="StartEvent_0mwlirs" targetRef="ScriptTask_0w34e57" />
+    <bpmn:scriptTask id="CallActivity_1vzxvna" name="TN NSSMF supports NSSI" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_05250mp</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_14rhmx9</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def dcso = new DoCreateSliceServiceOption()
-dcso.getNSSTOption(execution)</bpmn:script>
+dcso.getNSSISelectionCap4TN(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_1y1wzs9">
-      <bpmn:incoming>SequenceFlow_0lt2cdo</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_1r9n9ef</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1ap8kar</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0m2mr0o</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_1ap8kar" sourceRef="ExclusiveGateway_1y1wzs9" targetRef="EndEvent_1x6k78c">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isMoreNSSTtoProcess" )  == false)}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_0lt2cdo" sourceRef="ScriptTask_0kecvrc" targetRef="ExclusiveGateway_1y1wzs9" />
-    <bpmn:sequenceFlow id="SequenceFlow_0m2mr0o" sourceRef="ExclusiveGateway_1y1wzs9" targetRef="ScriptTask_1e5ysya">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isMoreNSSTtoProcess" )  == true)}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_1r9n9ef" sourceRef="ScriptTask_1mlytov" targetRef="ExclusiveGateway_1y1wzs9" />
-    <bpmn:scriptTask id="ScriptTask_1e5ysya" name="prepare NSST decomposition" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0m2mr0o</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_016vi3s</bpmn:outgoing>
+    <bpmn:scriptTask id="CallActivity_0melx8d" name="CN NSSMF supports NSSI" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0euwvgf</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_103oxyw</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def dcso = new DoCreateSliceServiceOption()
-dcso.prepareNSSTDecompose(execution)</bpmn:script>
+dcso.getNSSISelectionCap4CN(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_016vi3s" sourceRef="ScriptTask_1e5ysya" targetRef="CallActivity_1rfnoe2" />
-    <bpmn:callActivity id="CallActivity_1rfnoe2" name="Call Decompose Service" calledElement="DecomposeService">
-      <bpmn:extensionElements>
-        <camunda:in source="msoRequestId" target="msoRequestId" />
-        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
-        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
-        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
-        <camunda:out source="WorkflowException" target="WorkflowException" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_016vi3s</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0a5f5y6</bpmn:outgoing>
-    </bpmn:callActivity>
-    <bpmn:sequenceFlow id="SequenceFlow_0a5f5y6" sourceRef="CallActivity_1rfnoe2" targetRef="ScriptTask_1mlytov" />
-    <bpmn:exclusiveGateway id="ExclusiveGateway_1skfk7w" default="SequenceFlow_0wy6oag">
-      <bpmn:incoming>SequenceFlow_0d774n5</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0wy6oag</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0hnsycl</bpmn:outgoing>
+    <bpmn:scriptTask id="CallActivity_0otry7e" name="AN NSSMF supports NSSI" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0il5j01</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0aasemn</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoCreateSliceServiceOption()
+dcso.getNSSISelectionCap4AN(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="Task_1m9qoo3" name="Prepare NSSI Selection" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_126j77n</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0abqxa1</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoCreateSliceServiceOption()
+dcso.preNSSIRequest(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="Task_00nfg5x" name="Process NSST Solutions" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1tqg26p</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1i3j8c3</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoCreateSliceServiceOption()
+dcso.processNSSIResp(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0b52m39" name="need select nssi?" default="SequenceFlow_1nrfy6i">
+      <bpmn:incoming>SequenceFlow_1tey3hz</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_126j77n</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1nrfy6i</bpmn:outgoing>
     </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_0wy6oag" sourceRef="ExclusiveGateway_1skfk7w" targetRef="ScriptTask_0kecvrc" />
-    <bpmn:sequenceFlow id="SequenceFlow_0hnsycl" sourceRef="ExclusiveGateway_1skfk7w" targetRef="EndEvent_1x6k78c">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("isNSISuggested" )  == true)}</bpmn:conditionExpression>
+    <bpmn:sequenceFlow id="SequenceFlow_126j77n" name="yes" sourceRef="ExclusiveGateway_0b52m39" targetRef="Task_1m9qoo3">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("nssmfOperation" )  == "update")}</bpmn:conditionExpression>
     </bpmn:sequenceFlow>
-    <bpmn:scriptTask id="ScriptTask_1umbyel" name="prepare NST decomposition" scriptFormat="groovy">
-      <bpmn:incoming>Flow_07ustqm</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0piifl1</bpmn:outgoing>
+    <bpmn:sequenceFlow id="SequenceFlow_1nrfy6i" sourceRef="ExclusiveGateway_0b52m39" targetRef="EndEvent_0p0cjhl" />
+    <bpmn:sequenceFlow id="SequenceFlow_1i3j8c3" sourceRef="Task_00nfg5x" targetRef="Task_1jyj2vs" />
+    <bpmn:sequenceFlow id="SequenceFlow_1tey3hz" sourceRef="Task_1jyj2vs" targetRef="ExclusiveGateway_0b52m39" />
+    <bpmn:scriptTask id="Task_1jyj2vs" name="handle Nssi select " scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1tr3i9d</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1i3j8c3</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1tey3hz</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoCreateSliceServiceOption()
+dcso.handleNssiSelect(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_12sydez" name="prepare NSST decomposition" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0zglfyw</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0t4gmix</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_12pvazb</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def dcso = new DoCreateSliceServiceOption()
-dcso.prepareNSTDecompose(execution)</bpmn:script>
+dcso.prepareDecomposeNSST(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_0piifl1" sourceRef="ScriptTask_1umbyel" targetRef="CallActivity_0ly8xiw" />
-    <bpmn:callActivity id="CallActivity_0ly8xiw" name="Call Decompose Service" calledElement="DecomposeService">
+    <bpmn:callActivity id="CallActivity_0hfiogq" name="Call Decompose Service" calledElement="DecomposeService">
       <bpmn:extensionElements>
         <camunda:in source="msoRequestId" target="msoRequestId" />
         <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
-        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="nsstServiceModelInfo" target="serviceModelInfo" />
         <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
-        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:out source="serviceDecomposition" target="nsstServiceDecomposition" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
       </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_0piifl1</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_086yszq</bpmn:outgoing>
+      <bpmn:incoming>SequenceFlow_12pvazb</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1inonqp</bpmn:outgoing>
     </bpmn:callActivity>
-    <bpmn:sequenceFlow id="SequenceFlow_086yszq" sourceRef="CallActivity_0ly8xiw" targetRef="Task_1k2ypj0" />
-    <bpmn:sequenceFlow id="SequenceFlow_0d774n5" sourceRef="Task_1k2ypj0" targetRef="ExclusiveGateway_1skfk7w" />
-    <bpmn:scriptTask id="Task_1k2ypj0" name="Process Decomposition" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_086yszq</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0d774n5</bpmn:outgoing>
+    <bpmn:scriptTask id="ScriptTask_14j28c2" name="Process NSST Decomposition" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1inonqp</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_049glzl</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0zglfyw</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoCreateSliceServiceOption()
+dcso.processDecompositionNSST(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_12pvazb" sourceRef="ScriptTask_12sydez" targetRef="CallActivity_0hfiogq" />
+    <bpmn:sequenceFlow id="SequenceFlow_1inonqp" sourceRef="CallActivity_0hfiogq" targetRef="ScriptTask_14j28c2" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_1bxdugq" name="Goto Select NSSI ">
+      <bpmn:incoming>SequenceFlow_16akt81</bpmn:incoming>
+      <bpmn:linkEventDefinition id="LinkEventDefinition_1id21k7" name="SelectNSSI" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_067xdx1" sourceRef="ScriptTask_0w34e57" targetRef="ScriptTask_11rb2ju" />
+    <bpmn:sequenceFlow id="SequenceFlow_049glzl" sourceRef="ScriptTask_14j28c2" targetRef="Task_1xqjkqx">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("nsstHandleContinue" ) == "false")}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0zglfyw" sourceRef="ScriptTask_14j28c2" targetRef="ScriptTask_12sydez">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("nsstHandleContinue" ) == "true")}</bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0t4gmix" sourceRef="ScriptTask_0z0dwk2" targetRef="ScriptTask_12sydez" />
+    <bpmn:scriptTask id="Task_1xqjkqx" name="handle Nsst By Type&#10;" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_049glzl</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_16akt81</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def dcso = new DoCreateSliceServiceOption()
-dcso.processDecomposition(execution)</bpmn:script>
+dcso.handleNsstByType(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:callActivity id="Activity_0dlr4ra" name="Handle NSI Selection OOF request" calledElement="DoHandleOofRequest">
+    <bpmn:sequenceFlow id="SequenceFlow_16akt81" sourceRef="Task_1xqjkqx" targetRef="IntermediateThrowEvent_1bxdugq" />
+    <bpmn:callActivity id="CallActivity_0vs5jgq" name="Handle NSI Selection OOF request" calledElement="DoHandleOofRequest">
       <bpmn:extensionElements>
         <camunda:in source="nsiSelectionUrl" target="apiPath" />
         <camunda:in source="nsiSelection_correlator" target="correlator" />
@@ -121,149 +191,239 @@ dcso.processDecomposition(execution)</bpmn:script>
         <camunda:out source="asyncCallbackResponse" target="nsiSelection_oofResponse" />
         <camunda:in source="nsiSelection_oofRequest" target="oofRequest" />
       </bpmn:extensionElements>
-      <bpmn:incoming>Flow_15c2jcx</bpmn:incoming>
-      <bpmn:outgoing>Flow_1mcx2ja</bpmn:outgoing>
+      <bpmn:incoming>SequenceFlow_14o0fxe</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0nwt0ci</bpmn:outgoing>
     </bpmn:callActivity>
-    <bpmn:scriptTask id="Activity_049mjag" name="Process OOF response " scriptFormat="groovy">
-      <bpmn:incoming>Flow_1mcx2ja</bpmn:incoming>
-      <bpmn:outgoing>Flow_07ustqm</bpmn:outgoing>
+    <bpmn:scriptTask id="ScriptTask_12t6v71" name="Process OOF response " scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0nwt0ci</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1h3kdce</bpmn:outgoing>
+      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
+def dcso = new DoCreateSliceServiceOption()
+dcso.processNSIResp(execution)</bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_0bgvphs" name="Prepare OOF Select NSI options request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1iawj3m</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_14o0fxe</bpmn:outgoing>
       <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
 def dcso = new DoCreateSliceServiceOption()
-dcso.processOOFResponse(execution)</bpmn:script>
+dcso.preNSIRequest(execution)</bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="Flow_1mcx2ja" sourceRef="Activity_0dlr4ra" targetRef="Activity_049mjag" />
-    <bpmn:sequenceFlow id="Flow_15c2jcx" sourceRef="Task_09nzhwk" targetRef="Activity_0dlr4ra" />
-    <bpmn:sequenceFlow id="Flow_07ustqm" sourceRef="Activity_049mjag" targetRef="ScriptTask_1umbyel" />
+    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_00uke3g" name=" Select NSSI ">
+      <bpmn:outgoing>SequenceFlow_1iawj3m</bpmn:outgoing>
+      <bpmn:linkEventDefinition id="LinkEventDefinition_0czx4vp" name="SelectNSSI" />
+    </bpmn:intermediateCatchEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_14o0fxe" sourceRef="ScriptTask_0bgvphs" targetRef="CallActivity_0vs5jgq" />
+    <bpmn:sequenceFlow id="SequenceFlow_0nwt0ci" sourceRef="CallActivity_0vs5jgq" targetRef="ScriptTask_12t6v71" />
+    <bpmn:sequenceFlow id="SequenceFlow_1iawj3m" sourceRef="IntermediateCatchEvent_00uke3g" targetRef="ScriptTask_0bgvphs" />
+    <bpmn:sequenceFlow id="SequenceFlow_1h3kdce" sourceRef="ScriptTask_12t6v71" targetRef="ParallelGateway_05zg916" />
   </bpmn:process>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateSliceServiceOption">
-      <bpmndi:BPMNEdge id="SequenceFlow_0d774n5_di" bpmnElement="SequenceFlow_0d774n5">
-        <di:waypoint x="1220" y="125" />
-        <di:waypoint x="1275" y="125" />
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateSliceServiceOptionV2">
+      <bpmndi:BPMNShape id="ScriptTask_11rb2ju_di" bpmnElement="ScriptTask_11rb2ju">
+        <dc:Bounds x="400" y="140" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0c567r4_di" bpmnElement="CallActivity_0c567r4">
+        <dc:Bounds x="560" y="140" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0z0dwk2_di" bpmnElement="ScriptTask_0z0dwk2">
+        <dc:Bounds x="710" y="140" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kzy63m_di" bpmnElement="SequenceFlow_1kzy63m">
+        <di:waypoint x="500" y="180" />
+        <di:waypoint x="560" y="180" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_086yszq_di" bpmnElement="SequenceFlow_086yszq">
-        <di:waypoint x="1060" y="125" />
-        <di:waypoint x="1120" y="125" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1t317y2_di" bpmnElement="SequenceFlow_1t317y2">
+        <di:waypoint x="660" y="180" />
+        <di:waypoint x="710" y="180" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0piifl1_di" bpmnElement="SequenceFlow_0piifl1">
-        <di:waypoint x="920" y="125" />
-        <di:waypoint x="960" y="125" />
+      <bpmndi:BPMNShape id="ParallelGateway_05zg916_di" bpmnElement="ParallelGateway_05zg916">
+        <dc:Bounds x="635" y="475" width="50" height="50" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ParallelGateway_06a2n9u_di" bpmnElement="ParallelGateway_06a2n9u">
+        <dc:Bounds x="905" y="475" width="50" height="50" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0tzazs0_di" bpmnElement="CallActivity_0tzazs0">
+        <dc:Bounds x="1410" y="320" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_05250mp_di" bpmnElement="SequenceFlow_05250mp">
+        <di:waypoint x="660" y="475" />
+        <di:waypoint x="660" y="360" />
+        <di:waypoint x="740" y="360" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0hnsycl_di" bpmnElement="SequenceFlow_0hnsycl">
-        <di:waypoint x="1325" y="125" />
-        <di:waypoint x="1993" y="125" />
+      <bpmndi:BPMNEdge id="SequenceFlow_14rhmx9_di" bpmnElement="SequenceFlow_14rhmx9">
+        <di:waypoint x="840" y="360" />
+        <di:waypoint x="930" y="360" />
+        <di:waypoint x="930" y="475" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0wy6oag_di" bpmnElement="SequenceFlow_0wy6oag">
-        <di:waypoint x="1300" y="150" />
-        <di:waypoint x="1300" y="351" />
-        <di:waypoint x="1430" y="351" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0euwvgf_di" bpmnElement="SequenceFlow_0euwvgf">
+        <di:waypoint x="685" y="500" />
+        <di:waypoint x="740" y="500" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0a5f5y6_di" bpmnElement="SequenceFlow_0a5f5y6">
-        <di:waypoint x="2061" y="351" />
-        <di:waypoint x="2148" y="351" />
-        <di:waypoint x="2148" y="493" />
-        <di:waypoint x="1960" y="493" />
+      <bpmndi:BPMNEdge id="SequenceFlow_103oxyw_di" bpmnElement="SequenceFlow_103oxyw">
+        <di:waypoint x="840" y="500" />
+        <di:waypoint x="905" y="500" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_016vi3s_di" bpmnElement="SequenceFlow_016vi3s">
-        <di:waypoint x="1872" y="351" />
-        <di:waypoint x="1961" y="351" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0il5j01_di" bpmnElement="SequenceFlow_0il5j01">
+        <di:waypoint x="660" y="525" />
+        <di:waypoint x="660" y="620" />
+        <di:waypoint x="740" y="620" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1r9n9ef_di" bpmnElement="SequenceFlow_1r9n9ef">
-        <di:waypoint x="1860" y="493" />
-        <di:waypoint x="1666" y="493" />
-        <di:waypoint x="1666" y="376" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0aasemn_di" bpmnElement="SequenceFlow_0aasemn">
+        <di:waypoint x="840" y="620" />
+        <di:waypoint x="930" y="620" />
+        <di:waypoint x="930" y="525" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0m2mr0o_di" bpmnElement="SequenceFlow_0m2mr0o">
-        <di:waypoint x="1691" y="351" />
-        <di:waypoint x="1772" y="351" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1tr3i9d_di" bpmnElement="SequenceFlow_1tr3i9d">
+        <di:waypoint x="955" y="500" />
+        <di:waypoint x="1010" y="500" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0lt2cdo_di" bpmnElement="SequenceFlow_0lt2cdo">
-        <di:waypoint x="1530" y="351" />
-        <di:waypoint x="1641" y="351" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0abqxa1_di" bpmnElement="SequenceFlow_0abqxa1">
+        <di:waypoint x="1460" y="460" />
+        <di:waypoint x="1460" y="400" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1ap8kar_di" bpmnElement="SequenceFlow_1ap8kar">
-        <di:waypoint x="1666" y="326" />
-        <di:waypoint x="1666" y="235" />
-        <di:waypoint x="2011" y="235" />
-        <di:waypoint x="2011" y="143" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1tqg26p_di" bpmnElement="SequenceFlow_1tqg26p">
+        <di:waypoint x="1410" y="360" />
+        <di:waypoint x="1110" y="360" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0khtova_di" bpmnElement="SequenceFlow_0khtova">
-        <di:waypoint x="350" y="125" />
-        <di:waypoint x="390" y="125" />
+      <bpmndi:BPMNShape id="EndEvent_0p0cjhl_di" bpmnElement="EndEvent_0p0cjhl">
+        <dc:Bounds x="1442" y="602" width="36" height="36" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0mwlirs_di" bpmnElement="StartEvent_0mwlirs">
+        <dc:Bounds x="162" y="162" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="436" y="108" width="0" height="12" />
+          <dc:Bounds x="169" y="198" width="25" height="14" />
         </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0w34e57_di" bpmnElement="ScriptTask_0w34e57">
+        <dc:Bounds x="230" y="140" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fuwy35_di" bpmnElement="SequenceFlow_1fuwy35">
+        <di:waypoint x="198" y="180" />
+        <di:waypoint x="230" y="180" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln">
-        <di:waypoint x="218" y="125" />
-        <di:waypoint x="250" y="125" />
+      <bpmndi:BPMNShape id="ScriptTask_1anc3ln_di" bpmnElement="CallActivity_1vzxvna">
+        <dc:Bounds x="740" y="320" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1xgkaqi_di" bpmnElement="CallActivity_0melx8d">
+        <dc:Bounds x="740" y="460" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_11y7ba5_di" bpmnElement="CallActivity_0otry7e">
+        <dc:Bounds x="740" y="580" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1icyh1a_di" bpmnElement="Task_1m9qoo3">
+        <dc:Bounds x="1410" y="460" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0aqbm7t_di" bpmnElement="Task_00nfg5x">
+        <dc:Bounds x="1010" y="320" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0b52m39_di" bpmnElement="ExclusiveGateway_0b52m39" isMarkerVisible="true">
+        <dc:Bounds x="1235" y="475" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1218" y="463" width="85" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_126j77n_di" bpmnElement="SequenceFlow_126j77n">
+        <di:waypoint x="1285" y="500" />
+        <di:waypoint x="1410" y="500" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="266" y="123" width="0" height="12" />
+          <dc:Bounds x="1339" y="482" width="17" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_1mcx2ja_di" bpmnElement="Flow_1mcx2ja">
-        <di:waypoint x="640" y="125" />
-        <di:waypoint x="680" y="125" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1nrfy6i_di" bpmnElement="SequenceFlow_1nrfy6i">
+        <di:waypoint x="1260" y="525" />
+        <di:waypoint x="1260" y="620" />
+        <di:waypoint x="1442" y="620" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_15c2jcx_di" bpmnElement="Flow_15c2jcx">
-        <di:waypoint x="490" y="122" />
-        <di:waypoint x="540" y="120" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1i3j8c3_di" bpmnElement="SequenceFlow_1i3j8c3">
+        <di:waypoint x="1060" y="400" />
+        <di:waypoint x="1060" y="460" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="Flow_07ustqm_di" bpmnElement="Flow_07ustqm">
-        <di:waypoint x="780" y="125" />
-        <di:waypoint x="820" y="125" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1tey3hz_di" bpmnElement="SequenceFlow_1tey3hz">
+        <di:waypoint x="1110" y="500" />
+        <di:waypoint x="1235" y="500" />
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c">
-        <dc:Bounds x="1993" y="107" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="412" y="617" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0kecvrc_di" bpmnElement="ScriptTask_0kecvrc">
-        <dc:Bounds x="1430" y="311" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1mlytov_di" bpmnElement="ScriptTask_1mlytov">
-        <dc:Bounds x="1860" y="453" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_1y1wzs9_di" bpmnElement="ExclusiveGateway_1y1wzs9" isMarkerVisible="true">
-        <dc:Bounds x="1641" y="326" width="50" height="50" />
+      <bpmndi:BPMNShape id="ScriptTask_0h3fsja_di" bpmnElement="Task_1jyj2vs">
+        <dc:Bounds x="1010" y="460" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1e5ysya_di" bpmnElement="ScriptTask_1e5ysya">
-        <dc:Bounds x="1772" y="311" width="100" height="80" />
+      <bpmndi:BPMNShape id="ScriptTask_12sydez_di" bpmnElement="ScriptTask_12sydez">
+        <dc:Bounds x="860" y="140" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="CallActivity_1rfnoe2_di" bpmnElement="CallActivity_1rfnoe2">
-        <dc:Bounds x="1961" y="311" width="100" height="80" />
+      <bpmndi:BPMNShape id="CallActivity_0hfiogq_di" bpmnElement="CallActivity_0hfiogq">
+        <dc:Bounds x="1010" y="140" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_1skfk7w_di" bpmnElement="ExclusiveGateway_1skfk7w" isMarkerVisible="true">
-        <dc:Bounds x="1275" y="100" width="50" height="50" />
+      <bpmndi:BPMNShape id="ScriptTask_14j28c2_di" bpmnElement="ScriptTask_14j28c2">
+        <dc:Bounds x="1170" y="140" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="CallActivity_0ly8xiw_di" bpmnElement="CallActivity_0ly8xiw">
-        <dc:Bounds x="960" y="85" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1895p18_di" bpmnElement="Task_1k2ypj0">
-        <dc:Bounds x="1120" y="85" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="createNS_StartEvent">
-        <dc:Bounds x="182" y="107" width="36" height="36" />
+      <bpmndi:BPMNEdge id="SequenceFlow_12pvazb_di" bpmnElement="SequenceFlow_12pvazb">
+        <di:waypoint x="960" y="180" />
+        <di:waypoint x="1010" y="180" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1inonqp_di" bpmnElement="SequenceFlow_1inonqp">
+        <di:waypoint x="1110" y="180" />
+        <di:waypoint x="1170" y="180" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1bxdugq_di" bpmnElement="IntermediateThrowEvent_1bxdugq">
+        <dc:Bounds x="1482" y="162" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="158" y="143" width="86" height="27" />
+          <dc:Bounds x="1459" y="205" width="87" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task">
-        <dc:Bounds x="250" y="85" width="100" height="80" />
+      <bpmndi:BPMNEdge id="SequenceFlow_067xdx1_di" bpmnElement="SequenceFlow_067xdx1">
+        <di:waypoint x="330" y="180" />
+        <di:waypoint x="400" y="180" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_049glzl_di" bpmnElement="SequenceFlow_049glzl">
+        <di:waypoint x="1270" y="180" />
+        <di:waypoint x="1320" y="180" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zglfyw_di" bpmnElement="SequenceFlow_0zglfyw">
+        <di:waypoint x="1230" y="140" />
+        <di:waypoint x="1230" y="80" />
+        <di:waypoint x="910" y="80" />
+        <di:waypoint x="910" y="140" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0t4gmix_di" bpmnElement="SequenceFlow_0t4gmix">
+        <di:waypoint x="810" y="180" />
+        <di:waypoint x="860" y="180" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1tx9eou_di" bpmnElement="Task_1xqjkqx">
+        <dc:Bounds x="1320" y="140" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1dw39hg_di" bpmnElement="Task_09nzhwk">
-        <dc:Bounds x="390" y="85" width="100" height="80" />
+      <bpmndi:BPMNEdge id="SequenceFlow_16akt81_di" bpmnElement="SequenceFlow_16akt81">
+        <di:waypoint x="1420" y="180" />
+        <di:waypoint x="1482" y="180" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0vs5jgq_di" bpmnElement="CallActivity_0vs5jgq">
+        <dc:Bounds x="360" y="460" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_049mjag_di" bpmnElement="Activity_049mjag">
-        <dc:Bounds x="680" y="85" width="100" height="80" />
+      <bpmndi:BPMNShape id="ScriptTask_12t6v71_di" bpmnElement="ScriptTask_12t6v71">
+        <dc:Bounds x="490" y="460" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Activity_0dlr4ra_di" bpmnElement="Activity_0dlr4ra">
-        <dc:Bounds x="540" y="85" width="100" height="80" />
+      <bpmndi:BPMNShape id="ScriptTask_0bgvphs_di" bpmnElement="ScriptTask_0bgvphs">
+        <dc:Bounds x="210" y="460" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1umbyel_di" bpmnElement="ScriptTask_1umbyel">
-        <dc:Bounds x="820" y="85" width="100" height="80" />
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_00uke3g_di" bpmnElement="IntermediateCatchEvent_00uke3g">
+        <dc:Bounds x="142" y="482" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="135" y="525" width="60" height="14" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_14o0fxe_di" bpmnElement="SequenceFlow_14o0fxe">
+        <di:waypoint x="310" y="500" />
+        <di:waypoint x="360" y="500" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0nwt0ci_di" bpmnElement="SequenceFlow_0nwt0ci">
+        <di:waypoint x="460" y="500" />
+        <di:waypoint x="490" y="500" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1iawj3m_di" bpmnElement="SequenceFlow_1iawj3m">
+        <di:waypoint x="178" y="500" />
+        <di:waypoint x="210" y="500" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h3kdce_di" bpmnElement="SequenceFlow_1h3kdce">
+        <di:waypoint x="590" y="500" />
+        <di:waypoint x="635" y="500" />
+      </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateSliceServiceOptionV2.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateSliceServiceOptionV2.bpmn
deleted file mode 100644 (file)
index 5d9e53a..0000000
+++ /dev/null
@@ -1,563 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.4.1">
-  <bpmn:process id="DoCreateSliceServiceOptionV2" name="DoCreateSliceServiceOptionV2" isExecutable="true">
-    <bpmn:parallelGateway id="ParallelGateway_0f11kcw">
-      <bpmn:incoming>SequenceFlow_17otbuu</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_00t0340</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_06uu0eh</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_09see8v</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_14s7fck</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_1c374y2</bpmn:outgoing>
-    </bpmn:parallelGateway>
-    <bpmn:parallelGateway id="ParallelGateway_05o7mbp">
-      <bpmn:incoming>SequenceFlow_04avf98</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_00xa5wa</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_064p1n6</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1a699ly</bpmn:outgoing>
-    </bpmn:parallelGateway>
-    <bpmn:scriptTask id="ScriptTask_0sznvim" name="Prepare OOF Select NSI options request" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_16qt6r2</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_175xozh</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.preNSIRequest(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_1sik00k" name="Query TN Sub-net capability" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_09see8v</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_04avf98</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.queryTNSubnetCapability(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_1sukxzw" name="Query CN Sub-net capability" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_14s7fck</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_00xa5wa</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.queryCNSubnetCapability(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_02u3dmq" name="Query AN Sub-net capability" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1c374y2</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_064p1n6</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.queryANSubnetCapability(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_04avf98" sourceRef="ScriptTask_1sik00k" targetRef="ParallelGateway_05o7mbp" />
-    <bpmn:sequenceFlow id="SequenceFlow_00xa5wa" sourceRef="ScriptTask_1sukxzw" targetRef="ParallelGateway_05o7mbp" />
-    <bpmn:sequenceFlow id="SequenceFlow_064p1n6" sourceRef="ScriptTask_02u3dmq" targetRef="ParallelGateway_05o7mbp" />
-    <bpmn:sequenceFlow id="SequenceFlow_1a699ly" sourceRef="ParallelGateway_05o7mbp" targetRef="Task_1kqbsvd" />
-    <bpmn:scriptTask id="ScriptTask_11rb2ju" name="prepare NST decomposition" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_00t0340</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1kzy63m</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.prepareDecomposeNST(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:callActivity id="CallActivity_0c567r4" name="Call Decompose Service" calledElement="DecomposeService">
-      <bpmn:extensionElements>
-        <camunda:in source="msoRequestId" target="msoRequestId" />
-        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
-        <camunda:in source="nstServiceModelInfo" target="serviceModelInfo" />
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
-        <camunda:out source="serviceDecomposition" target="nstServiceDecomposition" />
-        <camunda:out source="WorkflowException" target="WorkflowException" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_1kzy63m</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1t317y2</bpmn:outgoing>
-    </bpmn:callActivity>
-    <bpmn:scriptTask id="ScriptTask_0z0dwk2" name="Process Decomposition" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1t317y2</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1rwl882</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.processDecomposition(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="ScriptTask_0f0rh4w" name="prepare NSST decomposition" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_06uu0eh</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1dtfpqp</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.prepareNSTDecompose(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:callActivity id="CallActivity_1tmbgfs" name="Call Decompose Service" calledElement="DecomposeService">
-      <bpmn:extensionElements>
-        <camunda:in source="msoRequestId" target="msoRequestId" />
-        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
-        <camunda:in source="nsstServiceModelInfo" target="serviceModelInfo" />
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
-        <camunda:out source="serviceDecomposition" target="nsstServiceDecomposition" />
-        <camunda:out source="WorkflowException" target="WorkflowException" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_1dtfpqp</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0fdqj9b</bpmn:outgoing>
-    </bpmn:callActivity>
-    <bpmn:scriptTask id="ScriptTask_0m6v98c" name="Process Decomposition" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0fdqj9b</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0d2lpv3</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.processDecomposition(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_1kzy63m" sourceRef="ScriptTask_11rb2ju" targetRef="CallActivity_0c567r4" />
-    <bpmn:sequenceFlow id="SequenceFlow_1t317y2" sourceRef="CallActivity_0c567r4" targetRef="ScriptTask_0z0dwk2" />
-    <bpmn:sequenceFlow id="SequenceFlow_1dtfpqp" sourceRef="ScriptTask_0f0rh4w" targetRef="CallActivity_1tmbgfs" />
-    <bpmn:sequenceFlow id="SequenceFlow_0fdqj9b" sourceRef="CallActivity_1tmbgfs" targetRef="ScriptTask_0m6v98c" />
-    <bpmn:sequenceFlow id="SequenceFlow_1rwl882" sourceRef="ScriptTask_0z0dwk2" targetRef="ParallelGateway_1v1unh1" />
-    <bpmn:sequenceFlow id="SequenceFlow_0d2lpv3" sourceRef="ScriptTask_0m6v98c" targetRef="ParallelGateway_1v1unh1" />
-    <bpmn:callActivity id="CallActivity_15kmmuf" name="Handle NSI Selection OOF request" calledElement="DoHandleOofRequest">
-      <bpmn:extensionElements>
-        <camunda:in source="nsiSelectionUrl" target="apiPath" />
-        <camunda:in source="nsiSelection_correlator" target="correlator" />
-        <camunda:in source="nsiSelection_messageType" target="messageType" />
-        <camunda:in source="nsiSelection_timeout" target="timeout" />
-        <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:out source="asyncCallbackResponse" target="nsiSelection_oofResponse" />
-        <camunda:in source="nsiSelection_oofRequest" target="oofRequest" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_175xozh</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_188g03z</bpmn:outgoing>
-    </bpmn:callActivity>
-    <bpmn:sequenceFlow id="SequenceFlow_175xozh" sourceRef="ScriptTask_0sznvim" targetRef="CallActivity_15kmmuf" />
-    <bpmn:scriptTask id="ScriptTask_0woac2j" name="Process OOF response " scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_188g03z</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_17emrud</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.processNSIResp(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_188g03z" sourceRef="CallActivity_15kmmuf" targetRef="ScriptTask_0woac2j" />
-    <bpmn:sequenceFlow id="SequenceFlow_17emrud" sourceRef="ScriptTask_0woac2j" targetRef="EndEvent_15dimzx" />
-    <bpmn:intermediateCatchEvent id="IntermediateCatchEvent_0pstvd4" name=" Select NSSI ">
-      <bpmn:outgoing>SequenceFlow_1sg6mqd</bpmn:outgoing>
-      <bpmn:linkEventDefinition id="LinkEventDefinition_1slqdh4" name="SelectNSSI" />
-    </bpmn:intermediateCatchEvent>
-    <bpmn:parallelGateway id="ParallelGateway_05zg916">
-      <bpmn:incoming>SequenceFlow_1sg6mqd</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_05250mp</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0euwvgf</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_0il5j01</bpmn:outgoing>
-    </bpmn:parallelGateway>
-    <bpmn:parallelGateway id="ParallelGateway_06a2n9u">
-      <bpmn:incoming>SequenceFlow_14rhmx9</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_103oxyw</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_0aasemn</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1tr3i9d</bpmn:outgoing>
-    </bpmn:parallelGateway>
-    <bpmn:callActivity id="CallActivity_0tzazs0" name="Handle NSST Selection OOF request" calledElement="DoHandleOofRequest">
-      <bpmn:extensionElements>
-        <camunda:in source="nstSelectionUrl" target="apiPath" />
-        <camunda:in source="nstSelection_correlator" target="correlator" />
-        <camunda:in source="nstSelection_messageType" target="messageType" />
-        <camunda:in source="nstSelection_timeout" target="timeout" />
-        <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:out source="asyncCallbackResponse" target="nstSelection_oofResponse" />
-        <camunda:in source="nstSelection_oofRequest" target="oofRequest" />
-      </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_0abqxa1</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1tqg26p</bpmn:outgoing>
-    </bpmn:callActivity>
-    <bpmn:sequenceFlow id="SequenceFlow_1sg6mqd" sourceRef="IntermediateCatchEvent_0pstvd4" targetRef="ParallelGateway_05zg916" />
-    <bpmn:sequenceFlow id="SequenceFlow_05250mp" sourceRef="ParallelGateway_05zg916" targetRef="CallActivity_1vzxvna" />
-    <bpmn:sequenceFlow id="SequenceFlow_14rhmx9" sourceRef="CallActivity_1vzxvna" targetRef="ParallelGateway_06a2n9u" />
-    <bpmn:sequenceFlow id="SequenceFlow_0euwvgf" sourceRef="ParallelGateway_05zg916" targetRef="CallActivity_0melx8d" />
-    <bpmn:sequenceFlow id="SequenceFlow_103oxyw" sourceRef="CallActivity_0melx8d" targetRef="ParallelGateway_06a2n9u" />
-    <bpmn:sequenceFlow id="SequenceFlow_0il5j01" sourceRef="ParallelGateway_05zg916" targetRef="CallActivity_0otry7e" />
-    <bpmn:sequenceFlow id="SequenceFlow_0aasemn" sourceRef="CallActivity_0otry7e" targetRef="ParallelGateway_06a2n9u" />
-    <bpmn:sequenceFlow id="SequenceFlow_1tr3i9d" sourceRef="ParallelGateway_06a2n9u" targetRef="Task_1jyj2vs" />
-    <bpmn:sequenceFlow id="SequenceFlow_0abqxa1" sourceRef="Task_1m9qoo3" targetRef="CallActivity_0tzazs0" />
-    <bpmn:sequenceFlow id="SequenceFlow_1tqg26p" sourceRef="CallActivity_0tzazs0" targetRef="Task_00nfg5x" />
-    <bpmn:intermediateThrowEvent id="EndEvent_15dimzx" name="Goto Select NSSI ">
-      <bpmn:incoming>SequenceFlow_17emrud</bpmn:incoming>
-      <bpmn:linkEventDefinition name="SelectNSSI" />
-    </bpmn:intermediateThrowEvent>
-    <bpmn:endEvent id="EndEvent_0p0cjhl">
-      <bpmn:incoming>SequenceFlow_1nrfy6i</bpmn:incoming>
-    </bpmn:endEvent>
-    <bpmn:parallelGateway id="ParallelGateway_1v1unh1">
-      <bpmn:incoming>SequenceFlow_1rwl882</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_0d2lpv3</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_06t1dq5</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_16qt6r2</bpmn:outgoing>
-    </bpmn:parallelGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_16qt6r2" sourceRef="ParallelGateway_1v1unh1" targetRef="ScriptTask_0sznvim" />
-    <bpmn:startEvent id="StartEvent_0mwlirs" name="Start">
-      <bpmn:outgoing>SequenceFlow_1fuwy35</bpmn:outgoing>
-    </bpmn:startEvent>
-    <bpmn:scriptTask id="ScriptTask_0w34e57" name="Preprocess Request" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1fuwy35</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_17otbuu</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.preProcessRequest(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_1fuwy35" sourceRef="StartEvent_0mwlirs" targetRef="ScriptTask_0w34e57" />
-    <bpmn:sequenceFlow id="SequenceFlow_17otbuu" sourceRef="ScriptTask_0w34e57" targetRef="ParallelGateway_0f11kcw" />
-    <bpmn:sequenceFlow id="SequenceFlow_00t0340" sourceRef="ParallelGateway_0f11kcw" targetRef="ScriptTask_11rb2ju" />
-    <bpmn:sequenceFlow id="SequenceFlow_06uu0eh" sourceRef="ParallelGateway_0f11kcw" targetRef="ScriptTask_0f0rh4w" />
-    <bpmn:sequenceFlow id="SequenceFlow_09see8v" sourceRef="ParallelGateway_0f11kcw" targetRef="ScriptTask_1sik00k" />
-    <bpmn:sequenceFlow id="SequenceFlow_14s7fck" sourceRef="ParallelGateway_0f11kcw" targetRef="ScriptTask_1sukxzw" />
-    <bpmn:sequenceFlow id="SequenceFlow_1c374y2" sourceRef="ParallelGateway_0f11kcw" targetRef="ScriptTask_02u3dmq" />
-    <bpmn:scriptTask id="CallActivity_1vzxvna" name="TN NSSMF supports NSSI" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_05250mp</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_14rhmx9</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.getNSSISelectionCap4TN(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="CallActivity_0melx8d" name="CN NSSMF supports NSSI" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0euwvgf</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_103oxyw</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.getNSSISelectionCap4CN(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="CallActivity_0otry7e" name="AN NSSMF supports NSSI" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0il5j01</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0aasemn</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.getNSSISelectionCap4AN(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:sequenceFlow id="SequenceFlow_06t1dq5" sourceRef="Task_1kqbsvd" targetRef="ParallelGateway_1v1unh1" />
-    <bpmn:scriptTask id="Task_1kqbsvd" name="handle sub-net capability info" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1a699ly</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_06t1dq5</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.handleSubnetCapabilityResp(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="Task_1m9qoo3" name="Prepare NSSI Selection" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_126j77n</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0abqxa1</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.preNSSIRequest(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:scriptTask id="Task_00nfg5x" name="Process NSST Solutions" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1tqg26p</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1i3j8c3</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.processNSSIResp(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:exclusiveGateway id="ExclusiveGateway_0b52m39" name="need select nssi?" default="SequenceFlow_1nrfy6i">
-      <bpmn:incoming>SequenceFlow_1tey3hz</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_126j77n</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_1nrfy6i</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_126j77n" name="yes" sourceRef="ExclusiveGateway_0b52m39" targetRef="Task_1m9qoo3">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{(execution.getVariable("nssmfOperation" )  == "update")}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:sequenceFlow id="SequenceFlow_1nrfy6i" sourceRef="ExclusiveGateway_0b52m39" targetRef="EndEvent_0p0cjhl" />
-    <bpmn:sequenceFlow id="SequenceFlow_1i3j8c3" sourceRef="Task_00nfg5x" targetRef="Task_1jyj2vs" />
-    <bpmn:sequenceFlow id="SequenceFlow_1tey3hz" sourceRef="Task_1jyj2vs" targetRef="ExclusiveGateway_0b52m39" />
-    <bpmn:scriptTask id="Task_1jyj2vs" name="handle Nssi select " scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1tr3i9d</bpmn:incoming>
-      <bpmn:incoming>SequenceFlow_1i3j8c3</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1tey3hz</bpmn:outgoing>
-      <bpmn:script>import org.onap.so.bpmn.infrastructure.scripts.*
-def dcso = new DoCreateSliceServiceOption()
-dcso.handleNssiSelect(execution)</bpmn:script>
-    </bpmn:scriptTask>
-    <bpmn:group id="Group_1k2kt9q" categoryValueRef="CategoryValue_1eh1etw" />
-    <bpmn:group id="Group_19fk2vp" categoryValueRef="CategoryValue_1x9qkyq" />
-    <bpmn:group id="Group_01yft6a" categoryValueRef="CategoryValue_1nwi9c3" />
-  </bpmn:process>
-  <bpmn:category id="Category_0s5hs8l">
-    <bpmn:categoryValue id="CategoryValue_1eh1etw" value="subnetCapabilities" />
-  </bpmn:category>
-  <bpmn:category id="Category_1ahkzyt">
-    <bpmn:categoryValue id="CategoryValue_1x9qkyq" value="nst -&#62; NSTInfo" />
-  </bpmn:category>
-  <bpmn:category id="Category_0ne04nd">
-    <bpmn:categoryValue id="CategoryValue_1nwi9c3" value="nsst -&#62; NSSTInfo" />
-  </bpmn:category>
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateSliceServiceOptionV2">
-      <bpmndi:BPMNShape id="ParallelGateway_0f11kcw_di" bpmnElement="ParallelGateway_0f11kcw">
-        <dc:Bounds x="355" y="525" width="50" height="50" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ParallelGateway_05o7mbp_di" bpmnElement="ParallelGateway_05o7mbp">
-        <dc:Bounds x="697" y="215" width="50" height="50" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0sznvim_di" bpmnElement="ScriptTask_0sznvim">
-        <dc:Bounds x="1110" y="510" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1sik00k_di" bpmnElement="ScriptTask_1sik00k">
-        <dc:Bounds x="520" y="90" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1sukxzw_di" bpmnElement="ScriptTask_1sukxzw">
-        <dc:Bounds x="520" y="200" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_02u3dmq_di" bpmnElement="ScriptTask_02u3dmq">
-        <dc:Bounds x="520" y="310" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_04avf98_di" bpmnElement="SequenceFlow_04avf98">
-        <di:waypoint x="620" y="130" />
-        <di:waypoint x="722" y="130" />
-        <di:waypoint x="722" y="215" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_00xa5wa_di" bpmnElement="SequenceFlow_00xa5wa">
-        <di:waypoint x="620" y="240" />
-        <di:waypoint x="697" y="240" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_064p1n6_di" bpmnElement="SequenceFlow_064p1n6">
-        <di:waypoint x="620" y="350" />
-        <di:waypoint x="722" y="350" />
-        <di:waypoint x="722" y="265" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1a699ly_di" bpmnElement="SequenceFlow_1a699ly">
-        <di:waypoint x="747" y="240" />
-        <di:waypoint x="820" y="240" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="Group_1k2kt9q_di" bpmnElement="Group_1k2kt9q">
-        <dc:Bounds x="487" y="77" width="485" height="325" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="739" y="78" width="85" height="27" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_11rb2ju_di" bpmnElement="ScriptTask_11rb2ju">
-        <dc:Bounds x="520" y="510" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="CallActivity_0c567r4_di" bpmnElement="CallActivity_0c567r4">
-        <dc:Bounds x="660" y="510" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0z0dwk2_di" bpmnElement="ScriptTask_0z0dwk2">
-        <dc:Bounds x="820" y="510" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0f0rh4w_di" bpmnElement="ScriptTask_0f0rh4w">
-        <dc:Bounds x="520" y="740" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="CallActivity_1tmbgfs_di" bpmnElement="CallActivity_1tmbgfs">
-        <dc:Bounds x="660" y="740" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0m6v98c_di" bpmnElement="ScriptTask_0m6v98c">
-        <dc:Bounds x="820" y="740" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1kzy63m_di" bpmnElement="SequenceFlow_1kzy63m">
-        <di:waypoint x="620" y="550" />
-        <di:waypoint x="660" y="550" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1t317y2_di" bpmnElement="SequenceFlow_1t317y2">
-        <di:waypoint x="760" y="550" />
-        <di:waypoint x="820" y="550" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1dtfpqp_di" bpmnElement="SequenceFlow_1dtfpqp">
-        <di:waypoint x="620" y="780" />
-        <di:waypoint x="660" y="780" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0fdqj9b_di" bpmnElement="SequenceFlow_0fdqj9b">
-        <di:waypoint x="760" y="780" />
-        <di:waypoint x="820" y="780" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1rwl882_di" bpmnElement="SequenceFlow_1rwl882">
-        <di:waypoint x="920" y="550" />
-        <di:waypoint x="995" y="550" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0d2lpv3_di" bpmnElement="SequenceFlow_0d2lpv3">
-        <di:waypoint x="920" y="780" />
-        <di:waypoint x="1020" y="780" />
-        <di:waypoint x="1020" y="575" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="CallActivity_15kmmuf_di" bpmnElement="CallActivity_15kmmuf">
-        <dc:Bounds x="1280" y="510" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_175xozh_di" bpmnElement="SequenceFlow_175xozh">
-        <di:waypoint x="1210" y="550" />
-        <di:waypoint x="1280" y="550" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0woac2j_di" bpmnElement="ScriptTask_0woac2j">
-        <dc:Bounds x="1420" y="510" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_188g03z_di" bpmnElement="SequenceFlow_188g03z">
-        <di:waypoint x="1380" y="550" />
-        <di:waypoint x="1420" y="550" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="Group_19fk2vp_di" bpmnElement="Group_19fk2vp">
-        <dc:Bounds x="495" y="450" width="453" height="180" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="686" y="457" width="72" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_17emrud_di" bpmnElement="SequenceFlow_17emrud">
-        <di:waypoint x="1520" y="550" />
-        <di:waypoint x="1562" y="550" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="IntermediateCatchEvent_0pstvd4_di" bpmnElement="IntermediateCatchEvent_0pstvd4">
-        <dc:Bounds x="198" y="1202" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="191" y="1245" width="60" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ParallelGateway_05zg916_di" bpmnElement="ParallelGateway_05zg916">
-        <dc:Bounds x="335" y="1195" width="50" height="50" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ParallelGateway_06a2n9u_di" bpmnElement="ParallelGateway_06a2n9u">
-        <dc:Bounds x="675" y="1195" width="50" height="50" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="CallActivity_0tzazs0_di" bpmnElement="CallActivity_0tzazs0">
-        <dc:Bounds x="1200" y="1040" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1sg6mqd_di" bpmnElement="SequenceFlow_1sg6mqd">
-        <di:waypoint x="234" y="1220" />
-        <di:waypoint x="335" y="1220" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_05250mp_di" bpmnElement="SequenceFlow_05250mp">
-        <di:waypoint x="360" y="1195" />
-        <di:waypoint x="360" y="1080" />
-        <di:waypoint x="500" y="1080" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_14rhmx9_di" bpmnElement="SequenceFlow_14rhmx9">
-        <di:waypoint x="600" y="1080" />
-        <di:waypoint x="700" y="1080" />
-        <di:waypoint x="700" y="1195" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0euwvgf_di" bpmnElement="SequenceFlow_0euwvgf">
-        <di:waypoint x="385" y="1220" />
-        <di:waypoint x="500" y="1220" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_103oxyw_di" bpmnElement="SequenceFlow_103oxyw">
-        <di:waypoint x="600" y="1220" />
-        <di:waypoint x="675" y="1220" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0il5j01_di" bpmnElement="SequenceFlow_0il5j01">
-        <di:waypoint x="360" y="1245" />
-        <di:waypoint x="360" y="1340" />
-        <di:waypoint x="500" y="1340" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0aasemn_di" bpmnElement="SequenceFlow_0aasemn">
-        <di:waypoint x="600" y="1340" />
-        <di:waypoint x="700" y="1340" />
-        <di:waypoint x="700" y="1245" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1tr3i9d_di" bpmnElement="SequenceFlow_1tr3i9d">
-        <di:waypoint x="725" y="1220" />
-        <di:waypoint x="800" y="1220" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0abqxa1_di" bpmnElement="SequenceFlow_0abqxa1">
-        <di:waypoint x="1250" y="1180" />
-        <di:waypoint x="1250" y="1120" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1tqg26p_di" bpmnElement="SequenceFlow_1tqg26p">
-        <di:waypoint x="1200" y="1080" />
-        <di:waypoint x="900" y="1080" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="IntermediateThrowEvent_0ubqlvg_di" bpmnElement="EndEvent_15dimzx">
-        <dc:Bounds x="1562" y="532" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1539" y="575" width="87" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_0p0cjhl_di" bpmnElement="EndEvent_0p0cjhl">
-        <dc:Bounds x="1232" y="1322" width="36" height="36" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Group_01yft6a_di" bpmnElement="Group_01yft6a">
-        <dc:Bounds x="495" y="690" width="453" height="180" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="680" y="697" width="85" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ParallelGateway_1v1unh1_di" bpmnElement="ParallelGateway_1v1unh1">
-        <dc:Bounds x="995" y="525" width="50" height="50" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_16qt6r2_di" bpmnElement="SequenceFlow_16qt6r2">
-        <di:waypoint x="1045" y="550" />
-        <di:waypoint x="1110" y="550" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="StartEvent_0mwlirs_di" bpmnElement="StartEvent_0mwlirs">
-        <dc:Bounds x="162" y="532" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="169" y="568" width="25" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0w34e57_di" bpmnElement="ScriptTask_0w34e57">
-        <dc:Bounds x="230" y="510" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1fuwy35_di" bpmnElement="SequenceFlow_1fuwy35">
-        <di:waypoint x="198" y="550" />
-        <di:waypoint x="230" y="550" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_17otbuu_di" bpmnElement="SequenceFlow_17otbuu">
-        <di:waypoint x="330" y="550" />
-        <di:waypoint x="355" y="550" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_00t0340_di" bpmnElement="SequenceFlow_00t0340">
-        <di:waypoint x="405" y="550" />
-        <di:waypoint x="520" y="550" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_06uu0eh_di" bpmnElement="SequenceFlow_06uu0eh">
-        <di:waypoint x="380" y="575" />
-        <di:waypoint x="380" y="780" />
-        <di:waypoint x="520" y="780" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_09see8v_di" bpmnElement="SequenceFlow_09see8v">
-        <di:waypoint x="380" y="525" />
-        <di:waypoint x="380" y="130" />
-        <di:waypoint x="520" y="130" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_14s7fck_di" bpmnElement="SequenceFlow_14s7fck">
-        <di:waypoint x="380" y="525" />
-        <di:waypoint x="380" y="240" />
-        <di:waypoint x="520" y="240" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1c374y2_di" bpmnElement="SequenceFlow_1c374y2">
-        <di:waypoint x="380" y="525" />
-        <di:waypoint x="380" y="350" />
-        <di:waypoint x="520" y="350" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_1anc3ln_di" bpmnElement="CallActivity_1vzxvna">
-        <dc:Bounds x="500" y="1040" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1xgkaqi_di" bpmnElement="CallActivity_0melx8d">
-        <dc:Bounds x="500" y="1180" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_11y7ba5_di" bpmnElement="CallActivity_0otry7e">
-        <dc:Bounds x="500" y="1300" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_06t1dq5_di" bpmnElement="SequenceFlow_06t1dq5">
-        <di:waypoint x="920" y="240" />
-        <di:waypoint x="1020" y="240" />
-        <di:waypoint x="1020" y="525" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_1xkxr0x_di" bpmnElement="Task_1kqbsvd">
-        <dc:Bounds x="820" y="200" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1icyh1a_di" bpmnElement="Task_1m9qoo3">
-        <dc:Bounds x="1200" y="1180" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0aqbm7t_di" bpmnElement="Task_00nfg5x">
-        <dc:Bounds x="800" y="1040" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ExclusiveGateway_0b52m39_di" bpmnElement="ExclusiveGateway_0b52m39" isMarkerVisible="true">
-        <dc:Bounds x="1025" y="1195" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1008" y="1183" width="85" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_126j77n_di" bpmnElement="SequenceFlow_126j77n">
-        <di:waypoint x="1075" y="1220" />
-        <di:waypoint x="1200" y="1220" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1129" y="1202" width="17" height="14" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1nrfy6i_di" bpmnElement="SequenceFlow_1nrfy6i">
-        <di:waypoint x="1050" y="1245" />
-        <di:waypoint x="1050" y="1340" />
-        <di:waypoint x="1232" y="1340" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1i3j8c3_di" bpmnElement="SequenceFlow_1i3j8c3">
-        <di:waypoint x="850" y="1120" />
-        <di:waypoint x="850" y="1180" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1tey3hz_di" bpmnElement="SequenceFlow_1tey3hz">
-        <di:waypoint x="900" y="1220" />
-        <di:waypoint x="1025" y="1220" />
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0h3fsja_di" bpmnElement="Task_1jyj2vs">
-        <dc:Bounds x="800" y="1180" width="100" height="80" />
-      </bpmndi:BPMNShape>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn:definitions>
index 156f999..27c5cf8 100644 (file)
 package org.onap.so.beans.nsmf;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
+import java.util.Map;
 
 @JsonInclude(JsonInclude.Include.NON_NULL)
+@Data
 public class AllocateAnNssi {
 
     @Deprecated
@@ -42,59 +45,5 @@ public class AllocateAnNssi {
 
     private NsiInfo nsiInfo;
 
-    public String getNsstId() {
-        return nsstId;
-    }
-
-    public void setNsstId(String nsstId) {
-        this.nsstId = nsstId;
-    }
-
-    public String getNssiId() {
-        return nssiId;
-    }
-
-    public void setNssiId(String nssiId) {
-        this.nssiId = nssiId;
-    }
-
-    public String getNssiName() {
-        return nssiName;
-    }
-
-    public void setNssiName(String nssiName) {
-        this.nssiName = nssiName;
-    }
-
-    public AnSliceProfile getSliceProfile() {
-        return sliceProfile;
-    }
-
-    public void setSliceProfile(AnSliceProfile sliceProfile) {
-        this.sliceProfile = sliceProfile;
-    }
-
-    public String getScriptName() {
-        return scriptName;
-    }
-
-    public void setScriptName(String scriptName) {
-        this.scriptName = scriptName;
-    }
-
-    public Object getExtension() {
-        return extension;
-    }
-
-    public void setExtension(Object extension) {
-        this.extension = extension;
-    }
-
-    public NsiInfo getNsiInfo() {
-        return nsiInfo;
-    }
-
-    public void setNsiInfo(NsiInfo nsiInfo) {
-        this.nsiInfo = nsiInfo;
-    }
+    private Map<String, Object> endPoint;
 }
index bdc2c60..f5b926f 100644 (file)
 package org.onap.so.beans.nsmf;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
 import java.io.Serializable;
+import java.util.Map;
 
 @JsonInclude(JsonInclude.Include.NON_NULL)
+@Data
 public class AllocateCnNssi implements Serializable {
 
     @Deprecated
@@ -46,67 +49,5 @@ public class AllocateCnNssi implements Serializable {
 
     private NsiInfo nsiInfo;
 
-    public NsiInfo getNsiInfo() {
-        return nsiInfo;
-    }
-
-    public void setNsiInfo(NsiInfo nsiInfo) {
-        this.nsiInfo = nsiInfo;
-    }
-
-    public String getNsstId() {
-        return nsstId;
-    }
-
-    public void setNsstId(String nsstId) {
-        this.nsstId = nsstId;
-    }
-
-    public String getScriptName() {
-        return scriptName;
-    }
-
-    public void setScriptName(String scriptName) {
-        this.scriptName = scriptName;
-    }
-
-    public CnSliceProfile getSliceProfile() {
-        return sliceProfile;
-    }
-
-    public void setSliceProfile(CnSliceProfile sliceProfile) {
-        this.sliceProfile = sliceProfile;
-    }
-
-    public String getFlavorId() {
-        return flavorId;
-    }
-
-    public void setFlavorId(String flavorId) {
-        this.flavorId = flavorId;
-    }
-
-    public String getNssiId() {
-        return nssiId;
-    }
-
-    public void setNssiId(String nssiId) {
-        this.nssiId = nssiId;
-    }
-
-    public String getNssiName() {
-        return nssiName;
-    }
-
-    public void setNssiName(String nssiName) {
-        this.nssiName = nssiName;
-    }
-
-    public void setExtension(Object extension) {
-        this.extension = extension;
-    }
-
-    public Object getExtension() {
-        return extension;
-    }
+    private Map<String, Object> endPoint;
 }
index 469d212..146032c 100644 (file)
 package org.onap.so.beans.nsmf;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
 import java.util.List;
 
 @JsonInclude(JsonInclude.Include.NON_NULL)
+@Data
 public class ResponseDescriptor {
 
     @JsonInclude(JsonInclude.Include.NON_DEFAULT)
@@ -43,43 +45,7 @@ public class ResponseDescriptor {
 
     private List<ResponseHistory> responseHistoryList;
 
-    public int getProgress() {
-        return progress;
-    }
+    private String nssiId;
 
-    public void setProgress(int progress) {
-        this.progress = progress;
-    }
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    public String getStatusDescription() {
-        return statusDescription;
-    }
-
-    public void setStatusDescription(String statusDescription) {
-        this.statusDescription = statusDescription;
-    }
-
-    public String getResponseId() {
-        return responseId;
-    }
-
-    public void setResponseId(String responseId) {
-        this.responseId = responseId;
-    }
-
-    public List<ResponseHistory> getResponseHistoryList() {
-        return responseHistoryList;
-    }
-
-    public void setResponseHistoryList(List<ResponseHistory> responseHistoryList) {
-        this.responseHistoryList = responseHistoryList;
-    }
+    private String endPointId;
 }
index 7a52cc8..19e8b46 100644 (file)
@@ -47,4 +47,6 @@ public class ServiceInfo implements Serializable {
     private String nssiName;
 
     private String pLMNIdList;
+
+    private String actionType;
 }
index dd1292e..71c50c1 100644 (file)
@@ -1,6 +1,26 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License")
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ #       http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.so.beans.nsmf;
 
 import lombok.Data;
+import org.onap.so.beans.nsmf.oof.SubnetType;
 import org.onap.so.beans.nsmf.oof.TemplateInfo;
 import java.io.Serializable;
 
@@ -22,7 +42,7 @@ public class SliceTaskInfo<T> implements Serializable {
 
     private TemplateInfo NSSTInfo;
 
-    private String serviceInstanceId;
+    private String sliceInstanceId;
 
     private String scriptName;
 
@@ -30,4 +50,6 @@ public class SliceTaskInfo<T> implements Serializable {
 
     private NetworkType networkType;
 
+    private SubnetType subnetType;
+
 }
index cab209e..87de04a 100644 (file)
@@ -1,7 +1,27 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License")
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ #       http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.so.beans.nsmf;
 
 import lombok.Data;
 import org.onap.so.beans.nsmf.oof.TemplateInfo;
+import java.util.Map;
 
 
 @Data
@@ -16,7 +36,7 @@ public class SliceTaskParamsAdapter {
 
     private String nstName;
 
-    private ServiceProfile serviceProfile;
+    private Map<String, Object> serviceProfile;
 
     private String suggestNsiId;
 
index be530bf..ccd6001 100644 (file)
 package org.onap.so.beans.nsmf;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
 
 @JsonInclude(JsonInclude.Include.NON_NULL)
+@Data
 public class TnSliceProfile {
 
     private String sliceProfileId;
@@ -31,28 +33,4 @@ public class TnSliceProfile {
 
     @JsonInclude(JsonInclude.Include.NON_DEFAULT)
     private int latency;
-
-    public String getSliceProfileId() {
-        return sliceProfileId;
-    }
-
-    public void setSliceProfileId(String sliceProfileId) {
-        this.sliceProfileId = sliceProfileId;
-    }
-
-    public String getBandwidth() {
-        return bandwidth;
-    }
-
-    public void setBandwidth(String bandwidth) {
-        this.bandwidth = bandwidth;
-    }
-
-    public int getLatency() {
-        return latency;
-    }
-
-    public void setLatency(int latency) {
-        this.latency = latency;
-    }
 }
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/oof/DomainType.java b/common/src/main/java/org/onap/so/beans/nsmf/oof/DomainType.java
deleted file mode 100644 (file)
index 4af60cf..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.onap.so.beans.nsmf.oof;
-
-import lombok.Getter;
-import org.onap.so.beans.nsmf.NetworkType;
-
-@Getter
-public enum DomainType {
-
-    AN_NF("AN-NF", NetworkType.ACCESS),
-
-    CN("CN", NetworkType.CORE),
-
-    TN_FH("TN-FH", NetworkType.TRANSPORT),
-
-    TN_MH("TN-MH", NetworkType.TRANSPORT),
-
-    TN_BH("TN-BH", NetworkType.TRANSPORT),;
-
-    private NetworkType networkType;
-
-    private String domainType;
-
-    DomainType(String domainType, NetworkType networkType) {
-        this.domainType = domainType;
-        this.networkType = networkType;
-    }
-}
index e1829eb..d228d37 100644 (file)
@@ -1,15 +1,35 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License")
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ #       http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.so.beans.nsmf.oof;
 
 import lombok.Data;
 import org.onap.so.beans.nsmf.ServiceProfile;
 import java.io.Serializable;
 import java.util.List;
+import java.util.Map;
 
 @Data
 public class NsiReqBody implements Serializable {
     private static final long serialVersionUID = -1383112063216226985L;
 
-    private ServiceProfile serviceProfile;
+    private Map<String, Object> serviceProfile;
 
     private RequestInfo requestInfo;
 
index 0632ab7..7cfb60c 100644 (file)
@@ -1,15 +1,35 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License")
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ #       http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.so.beans.nsmf.oof;
 
 import lombok.Data;
 import org.onap.so.beans.nsmf.ServiceProfile;
 import java.io.Serializable;
+import java.util.Map;
 
 @Data
 public class NssiReqBody implements Serializable {
 
     private static final long serialVersionUID = -76327522074333341L;
 
-    private ServiceProfile serviceProfile;
+    private Map<String, Object> serviceProfile;
 
     private RequestInfo requestInfo;
 
index f900c35..292a0d5 100644 (file)
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License")
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ #       http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.so.beans.nsmf.oof;
 
 import lombok.Data;
index f21c1c3..bc52d4e 100644 (file)
@@ -1,8 +1,26 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License")
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ #       http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.so.beans.nsmf.oof;
 
 import lombok.Data;
 import java.io.Serializable;
-import java.util.Map;
 
 @Data
 public class SubnetCapability implements Serializable {
@@ -11,5 +29,5 @@ public class SubnetCapability implements Serializable {
 
     private String domainType;
 
-    private Map<?, ?> capabilityDetails;
+    private Object capabilityDetails;
 }
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/oof/SubnetType.java b/common/src/main/java/org/onap/so/beans/nsmf/oof/SubnetType.java
new file mode 100644 (file)
index 0000000..4b0136a
--- /dev/null
@@ -0,0 +1,56 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License")
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ #       http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.beans.nsmf.oof;
+
+import lombok.Getter;
+import org.onap.so.beans.nsmf.NetworkType;
+
+@Getter
+public enum SubnetType {
+    AN("AN", NetworkType.ACCESS),
+
+    AN_NF("AN-NF", NetworkType.ACCESS),
+
+    CN("CN", NetworkType.CORE),
+
+    TN_FH("TN-FH", NetworkType.TRANSPORT),
+
+    TN_MH("TN-MH", NetworkType.TRANSPORT),
+
+    TN_BH("TN-BH", NetworkType.TRANSPORT),;
+
+    private NetworkType networkType;
+
+    private String subnetType;
+
+    SubnetType(String subnetType, NetworkType networkType) {
+        this.subnetType = subnetType;
+        this.networkType = networkType;
+    }
+
+    public static NetworkType getNetworkType(String subnetType) {
+        for (SubnetType type : SubnetType.values()) {
+            if (type.subnetType.equalsIgnoreCase(subnetType)) {
+                return type.networkType;
+            }
+        }
+        return null;
+    }
+}
index 3713bc7..3d1ec9c 100644 (file)
@@ -1,3 +1,22 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2020, CMCC Technologies Co., Ltd.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License")
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ #       http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
 package org.onap.so.beans.nsmf.oof;
 
 import lombok.Data;