Merge "Query CatalogDB for WorkflowSpecifications"
authorSteve Smokowski <ss835w@att.com>
Wed, 10 Apr 2019 10:55:27 +0000 (10:55 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 10 Apr 2019 10:55:27 +0000 (10:55 +0000)
14 files changed:
adapters/mso-catalog-db-adapter/src/main/resources/db/migration/R__WorkflowDesignerData.sql [new file with mode: 0644]
adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V5.10__AlterforWorkFlowDesignerTables.sql [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareServiceInstanceData.groovy [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy
bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/PnfNotificationEvent.java [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/delegate/InformDmaapClient.java
bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/dmaap/PnfEventReadyDmaapClient.java
bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareServiceInstanceDataTest.groovy [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/delegate/InformDmaapClientTest.java
bpmn/so-bpmn-infrastructure-common/src/test/java/org/onap/so/bpmn/infrastructure/pnf/dmaap/PnfEventReadyDmaapClientTest.java
bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateCustomE2EServiceInstance.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCompareServiceInstanceData.bpmn [new file with mode: 0644]
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateE2EServiceInstance.bpmn
bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/bpmn/infrastructure/process/CreateVcpeResCustServiceSimplifiedTest.java

diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/R__WorkflowDesignerData.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/R__WorkflowDesignerData.sql
new file mode 100644 (file)
index 0000000..c74ce69
--- /dev/null
@@ -0,0 +1,27 @@
+use catalogdb;
+
+DELETE FROM activity_spec_to_activity_spec_parameters;
+DELETE FROM activity_spec_to_activity_spec_categories;
+DELETE FROM activity_spec;
+DELETE FROM activity_spec_categories;
+DELETE FROM activity_spec_parameters;
+
+INSERT INTO activity_spec (NAME, DESCRIPTION, VERSION) 
+VALUES ('VNFSetInMaintFlagActivity','Activity to Set InMaint Flag in A&AI',1.0);
+
+INSERT INTO activity_spec_categories (NAME)
+VALUES ('VNF');
+
+INSERT INTO activity_spec_parameters (NAME, TYPE, DIRECTION, DESCRIPTION) 
+VALUES('WorkflowException','WorkflowException','outputParameters','Description');
+
+INSERT INTO activity_spec_to_activity_spec_categories(ACTIVITY_SPEC_ID, ACTIVITY_SPEC_CATEGORIES_ID) 
+VALUES
+(
+(select ID from ACTIVITY_SPEC where NAME='VNFSetInMaintFlagActivity' and VERSION=1.0),
+(select ID from activity_spec_categories where NAME='VNF'));
+
+INSERT INTO activity_spec_to_activity_spec_parameters( ACTIVITY_SPEC_ID, ACTIVITY_SPEC_PARAMETERS_ID) 
+VALUES(
+(select ID from ACTIVITY_SPEC where NAME='VNFSetInMaintFlagActivity' and VERSION=1.0),
+(select ID from activity_spec_parameters where NAME='WorkflowException' and DIRECTION='outputParameters'));
\ No newline at end of file
diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V5.10__AlterforWorkFlowDesignerTables.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V5.10__AlterforWorkFlowDesignerTables.sql
new file mode 100644 (file)
index 0000000..775455d
--- /dev/null
@@ -0,0 +1,14 @@
+use catalogdb;
+
+ALTER TABLE activity_spec_to_activity_spec_categories DROP FOREIGN KEY fk_activity_spec_to_activity_spec_categories__activity_spec_c1;
+
+ALTER TABLE activity_spec_categories modify id INT(11) not null auto_increment;
+
+ALTER TABLE activity_spec_to_activity_spec_categories ADD 
+ CONSTRAINT `fk_activity_spec_to_activity_spec_categories__activity_spec_c1` 
+    FOREIGN KEY (`ACTIVITY_SPEC_CATEGORIES_ID`) 
+    REFERENCES `activity_spec_categories` (`ID`) 
+    ON DELETE CASCADE 
+    ON UPDATE CASCADE; 
+    
+ALTER TABLE activity_spec_to_activity_spec_categories modify id INT(11) not null auto_increment; 
\ No newline at end of file
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareServiceInstanceData.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareServiceInstanceData.groovy
new file mode 100644 (file)
index 0000000..a1f68f9
--- /dev/null
@@ -0,0 +1,270 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.bpmn.infrastructure.scripts
+
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.aai.domain.yang.ServiceInstance
+import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.onap.so.bpmn.common.scripts.ExceptionUtil
+import org.onap.so.bpmn.core.domain.Resource
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.bpmn.infrastructure.workflow.service.ServicePluginFactory
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+/**
+ * This groovy class supports the <class>DoCompareServiceInstanceData.bpmn</class> process.
+ *
+ * Inputs:
+ * @param - serviceInstanceData-original
+ * @param - serviceInstanceId
+ * @param - uuiRequest
+ * @param - model-invariant-id-original
+ * @param - model-version-id-original
+ * @param - msoRequestId
+ * @param - isDebugLogEnabled
+ *
+ * Outputs:
+ * @param - addResourceList
+ * @param - delResourceList
+ * @param - uuiRequest-add
+ * @param - uuiRequest-del
+ *
+ */
+public class DoCompareServiceInstanceData extends AbstractServiceTaskProcessor {
+
+       ExceptionUtil exceptionUtil = new ExceptionUtil()
+       JsonUtils jsonUtil = new JsonUtils()
+    private static final Logger logger = LoggerFactory.getLogger( DoCompareServiceInstanceData.class);
+
+    public void preProcessRequest (DelegateExecution execution) {
+               def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+               logger.info("INFO"," ***** preProcessRequest *****",  isDebugEnabled)
+               try {
+            checkInput("serviceInstanceData-original", execution, isDebugEnabled)
+            checkInput("serviceInstanceId", execution, isDebugEnabled)
+            checkInput("uuiRequest", execution, isDebugEnabled)
+            checkInput("model-invariant-id-original", execution, isDebugEnabled)
+            checkInput("model-version-id-original", execution, isDebugEnabled)
+            checkInput("msoRequestId", execution, isDebugEnabled)
+               } catch (Exception ex){
+            String msg = "Exception in preProcessRequest " + ex.getMessage()
+                       logger.info("INFO", msg, isDebugEnabled)
+                       exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+               }
+               logger.info("INFO"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+       }
+
+    private void checkInput(String inputName, DelegateExecution execution, isDebugEnabled) {
+        String msg
+        Object inputValue = execution.getVariable(inputName)
+        if (inputValue == null) {
+            msg = "Input" + inputName + "is null"
+            logger.info("INFO", msg, isDebugEnabled)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+        }
+    }
+
+
+    public void prepareDecomposeService_Original(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+        try {
+            logger.debug( " ***** Inside prepareDecomposeService_Original of update generic e2e service ***** ")
+            String modelInvariantUuid = execution.getVariable("model-invariant-id-original")
+            String modelUuid = execution.getVariable("model-version-id-original")
+            //here modelVersion is not set, we use modelUuid to decompose the service.
+            String serviceModelInfo = """{
+            "modelInvariantUuid":"${modelInvariantUuid}",
+            "modelUuid":"${modelUuid}",
+            "modelVersion":""
+             }"""
+
+            execution.setVariable("serviceModelInfo_Original", serviceModelInfo)
+
+            logger.debug( " ***** Completed prepareDecomposeService_Original of update generic e2e service ***** ")
+        } catch (Exception ex) {
+            // try error in method block
+            String exceptionMessage = "Bpmn error encountered in update generic e2e service flow. Unexpected Error from method prepareDecomposeService_Original() - " + ex.getMessage()
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    }
+
+    public void processDecomposition_Original(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+        logger.debug( " ***** Inside processDecomposition_Original() of update generic e2e service flow ***** ")
+        try {
+            ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+            execution.setVariable("serviceDecomposition_Original", serviceDecomposition)
+        } catch (Exception ex) {
+            String exceptionMessage = "Bpmn error encountered in update generic e2e service flow. processDecomposition_Original() - " + ex.getMessage()
+            logger.debug( exceptionMessage)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    }
+
+    public void doCompareUuiRquestInput(DelegateExecution execution) {
+
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+        logger.info("INFO", "======== Start doCompareUuiRquestInput Process ======== ", isDebugEnabled)
+
+        String uuiRequest_Target = execution.getVariable("uuiRequest")
+        Map<String, Object> serviceParametersObject_Target = getServiceParametersObject(uuiRequest_Target)
+        Map<String, Object> serviceRequestInputs_Target = (Map<String, Object>) serviceParametersObject_Target.get("requestInputs")
+        List<Object> resources_Target = (List<Object>) serviceParametersObject_Target.get("resources")
+
+        String uuiRequest_Original = ((ServiceInstance) execution.getVariable("serviceInstanceData-original")).getInputParameters()
+        Map<String, Object> serviceParametersObject_Original = getServiceParametersObject(uuiRequest_Original)
+        Map<String, Object> serviceRequestInputs_Original = (Map<String, Object>) serviceParametersObject_Original.get("requestInputs")
+        List<Object> resources_Original = (List<Object>) serviceParametersObject_Original.get("resources")
+
+        logger.info("INFO", "uuiRequest is: " + uuiRequest_Target, isDebugEnabled)
+
+        //the resources which are included by resources_Target but resources_Original are the resources going to be added
+        ArrayList<Object> resourceList_Add = findResourceListIncluded(resources_Target, resources_Original)
+        HashMap<String, Object> serviceRequestInputs_Add = getServiceRequestInputsIncluded(resourceList_Add, serviceRequestInputs_Target, serviceParametersObject_Target)
+        String uuiRequest_add = loadUuiRequestJsonString(uuiRequest_Target, resourceList_Add, serviceRequestInputs_Add)
+        execution.setVariable("uuiRequest", uuiRequest_add)
+        logger.info("INFO", "uuiRequest will be changed to: " + uuiRequest_add, isDebugEnabled)
+
+        //the resources which are included by resources_Original but resources_Target are the resources going to be deleted
+        ArrayList<Object> resourceList_Del = findResourceListIncluded(resources_Original, resources_Target)
+        HashMap<String, Object> serviceRequestInputs_Del = getServiceRequestInputsIncluded(resourceList_Del, serviceRequestInputs_Original, serviceParametersObject_Original)
+        String uuiRequest_del = loadUuiRequestJsonString(uuiRequest_Original, resourceList_Del, serviceRequestInputs_Del)
+        execution.setVariable("uuiRequest-del", uuiRequest_del)
+        logger.info("INFO", "uuiRequest-del: " + uuiRequest_del, isDebugEnabled)
+
+        List<Resource> addResourceList = findResourceList(resourceList_Add, execution)
+        execution.setVariable("addResourceList", addResourceList)
+        logger.info("INFO", "addResourceList: " + addResourceList, isDebugEnabled)
+
+        List<Resource> delResourceList = findResourceList(resourceList_Del, execution)
+        execution.setVariable("delResourceList", delResourceList)
+        logger.info("INFO", "delResourceList: " + delResourceList, isDebugEnabled)
+
+        logger.info("INFO", "======== COMPLETED doCompareUuiRquestInput Process ======== ", isDebugEnabled)
+    }
+
+    private List<Resource> findResourceList(ArrayList<Object> uuiResourceList, DelegateExecution execution) {
+        HashSet<String> addResourceCustomizationUuidSet = getCustomizationUuidSet(uuiResourceList)
+        Set<Resource> resourceSet = new HashSet<>()
+        ServiceDecomposition serviceDecomposition_Original = execution.getVariable("serviceDecomposition_Original")
+        List<Resource> allSR_original = serviceDecomposition_Original.getServiceResources()
+        for (Resource resource : allSR_original) {
+            if (addResourceCustomizationUuidSet.contains(resource.getModelInfo().getModelCustomizationUuid())) {
+                resourceSet.add(resource)
+            }
+        }
+        List<Resource> resourceList = new ArrayList<String>(resourceSet)
+        resourceList
+    }
+
+    private HashSet<String> getCustomizationUuidSet(ArrayList<Object> resourceList_Add) {
+        Set<String> addRsourceCustomizationUuidSet = new HashSet<>()
+        for (Map<String, Object> resourceAdded : resourceList_Add) {
+            addRsourceCustomizationUuidSet.add(resourceAdded.get("rsourceCustomizationUuid"))
+        }
+        addRsourceCustomizationUuidSet
+    }
+
+    private String loadUuiRequestJsonString(String uuiRequest_Target, ArrayList<Object> resourceList_Add, HashMap<String, Object> serviceRequestInputs_Add) {
+        Map<String, Object> uuiObject = ServicePluginFactory.getInstance().getJsonObject(uuiRequest_Target, Map.class)
+        Map<String, Object> serviceObject = (Map<String, Object>) uuiObject.get("service")
+        Map<String, Object> serviceParametersObject = (Map<String, Object>) serviceObject.get("parameters")
+        serviceParametersObject.put("resources", resourceList_Add)
+        serviceParametersObject.put("requestInputs", serviceRequestInputs_Add)
+        String uuiRequest_add = ServicePluginFactory.getInstance().getJsonString(serviceObject)
+        uuiRequest_add
+    }
+
+    private HashMap<String, Object> getServiceRequestInputsIncluded(ArrayList<Object> resourceList_Add, Map<String, Object> serviceRequestInputs_Target, Map<String, Object> serviceParametersObject_Target) {
+        ArrayList<String> newResourceNames = getNewResourceNames(resourceList_Add)
+        Map<String, Object> serviceRequestInputs_Add = new HashMap<String, Object>()
+        for (String inputKey : serviceRequestInputs_Target.keySet()) {
+            String resourceName = (inputKey.split("_"))[0]
+            if (newResourceNames.contains(resourceName)) {
+                serviceRequestInputs_Add.put(inputKey, serviceParametersObject_Target.get(inputKey))
+            }
+        }
+        serviceRequestInputs_Add
+    }
+
+    private ArrayList<String> getNewResourceNames(ArrayList<Object> addResourceList) {
+        Set<String> newResourceNames = new ArrayList<String>()
+        for (Object resourceObject : addResourceList) {
+            Map<String, Object> resourceAdded = (Map<String, Object>) resourceObject
+            String resName = new String(resourceAdded.get("resourceName"))
+            normalizeName(resName)
+            newResourceNames.add(resName)
+        }
+        newResourceNames
+    }
+
+    private void normalizeName(String resName) {
+        resName.replaceAll("_", "")
+        resName.replaceAll(" ", "")
+        resName.toLowerCase()
+    }
+
+    private ArrayList<Object> findResourceListIncluded(List<Object> resources_Target, List<Object> resources_Original) {
+        List<Object> addResourceList = new ArrayList<Object>()
+        for (Object resource_Target : resources_Target) {
+            Map<String, Object> resourceObject_Target = (Map<String, Object>) resource_Target
+            boolean isNewResourceInstance = isNewResourceInstance(resourceObject_Target, resources_Original)
+            if (isNewResourceInstance) {
+                addResourceList.add(resource_Target)
+            }
+        }
+        addResourceList
+    }
+
+    private boolean isNewResourceInstance(Map<String, Object> resourceObject_Target, List<Object> resources_Original) {
+        String resourceIndex_Target = null
+        if (resourceObject_Target.keySet().contains("resourceIndex")) {
+            resourceIndex_Target = resourceObject_Target.get("resourceIndex")
+        }
+        String resourceName_Target = resourceObject_Target.get("resourceName")
+        boolean isNewResourceInstance = true
+        for (Object resource_Original : resources_Original) {
+            Map<String, Object> resourceObject_Original = (Map<String, Object>) resource_Original
+            String resourceIndex_Original = null
+            if (resourceObject_Original.keySet().contains("resourceIndex")) {
+                resourceIndex_Original = resourceObject_Original.get("resourceIndex")
+            }
+            String resourceName_Original = resourceObject_Original.get("resourceName")
+            if (resourceName_Target.equals(resourceName_Original)) {
+                if (resourceIndex_Target != null && resourceIndex_Original != null) {
+                    if (resourceIndex_Target.equals(resourceIndex_Original)) {
+                        isNewResourceInstance = false
+                    }
+                } else {
+                    isNewResourceInstance = false
+                }
+            }
+        }
+        isNewResourceInstance
+    }
+
+    private Map<String, Object> getServiceParametersObject(String uuiRequest_Target) {
+        Map<String, Object> uuiObject = ServicePluginFactory.getInstance().getJsonObject(uuiRequest_Target, Map.class)
+        Map<String, Object> serviceObject = (Map<String, Object>) uuiObject.get("service")
+        Map<String, Object> serviceParametersObject = (Map<String, Object>) serviceObject.get("parameters")
+        serviceParametersObject
+    }
+
+}
index 1168b20..8e554e2 100644 (file)
@@ -189,6 +189,7 @@ public class UpdateCustomE2EServiceInstance extends AbstractServiceTaskProcessor
                        JSONObject ob = new JSONObject(wrapper.getJson())
                        JSONArray ar = ob.getJSONObject("relationship-list").getJSONArray("relationship")
 
+                       execution.setVariable("serviceInstanceData-original", si.get())
                        execution.setVariable("serviceRelationShip", ar.toString())
 
 
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/PnfNotificationEvent.java b/bpmn/so-bpmn-infrastructure-common/src/main/java/org/onap/so/bpmn/infrastructure/pnf/PnfNotificationEvent.java
new file mode 100644 (file)
index 0000000..267ddbf
--- /dev/null
@@ -0,0 +1,42 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.pnf;
+
+import org.springframework.context.ApplicationEvent;
+
+public class PnfNotificationEvent extends ApplicationEvent {
+
+    private String pnfCorrelationId;
+
+    /**
+     * Create a new ApplicationEvent.
+     *
+     * @param source the object on which the event initially occurred (never {@code null})
+     */
+    public PnfNotificationEvent(Object source, String pnfCorrelationId) {
+        super(source);
+        this.pnfCorrelationId = pnfCorrelationId;
+    }
+
+    public String getPnfCorrelationId() {
+        return pnfCorrelationId;
+    }
+}
index 5cbd530..e2dc375 100644 (file)
@@ -23,14 +23,20 @@ package org.onap.so.bpmn.infrastructure.pnf.delegate;
 import org.camunda.bpm.engine.RuntimeService;
 import org.camunda.bpm.engine.delegate.DelegateExecution;
 import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.onap.so.bpmn.infrastructure.pnf.PnfNotificationEvent;
 import org.onap.so.bpmn.infrastructure.pnf.dmaap.DmaapClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationListener;
 import org.springframework.stereotype.Component;
 
 @Component
-public class InformDmaapClient implements JavaDelegate {
+public class InformDmaapClient implements JavaDelegate, ApplicationListener<PnfNotificationEvent> {
 
+    private Logger logger = LoggerFactory.getLogger(getClass());
     private DmaapClient dmaapClient;
+    private DelegateExecution execution;
 
     @Override
     public void execute(DelegateExecution execution) {
@@ -38,10 +44,19 @@ public class InformDmaapClient implements JavaDelegate {
         RuntimeService runtimeService = execution.getProcessEngineServices().getRuntimeService();
         dmaapClient.registerForUpdate(pnfCorrelationId, () -> runtimeService.createMessageCorrelation("WorkflowMessage")
                 .processInstanceBusinessKey(execution.getProcessBusinessKey()).correlateWithResult());
+        this.execution = execution;
     }
 
     @Autowired
     public void setDmaapClient(DmaapClient dmaapClient) {
         this.dmaapClient = dmaapClient;
     }
+
+    @Override
+    public void onApplicationEvent(PnfNotificationEvent event) {
+        logger.info("Received application event for pnfCorrelationId: {}", event.getPnfCorrelationId());
+        RuntimeService runtimeService = execution.getProcessEngineServices().getRuntimeService();
+        runtimeService.createMessageCorrelation("WorkflowMessage")
+                .processInstanceBusinessKey(execution.getProcessBusinessKey()).correlateWithResult();
+    }
 }
index 3de0f38..2869111 100644 (file)
@@ -35,9 +35,11 @@ import org.apache.http.client.HttpClient;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.util.EntityUtils;
+import org.onap.so.bpmn.infrastructure.pnf.PnfNotificationEvent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
 
@@ -53,8 +55,11 @@ public class PnfEventReadyDmaapClient implements DmaapClient {
     private volatile ScheduledThreadPoolExecutor executor;
     private volatile boolean dmaapThreadListenerIsRunning;
 
+    private ApplicationEventPublisher applicationEventPublisher;
+
     @Autowired
-    public PnfEventReadyDmaapClient(Environment env) {
+    public PnfEventReadyDmaapClient(Environment env, ApplicationEventPublisher applicationEventPublisher) {
+        this.applicationEventPublisher = applicationEventPublisher;
         httpClient = HttpClientBuilder.create().build();
         pnfCorrelationIdToThreadMap = new ConcurrentHashMap<>();
         topicListenerDelayInSeconds = env.getProperty("pnf.dmaap.topicListenerDelayInSeconds", Integer.class);
@@ -130,13 +135,9 @@ public class PnfEventReadyDmaapClient implements DmaapClient {
         }
 
         private void informAboutPnfReadyIfPnfCorrelationIdFound(String pnfCorrelationId) {
-            Runnable runnable = unregister(pnfCorrelationId);
-            if (runnable != null) {
-                logger.debug("dmaap listener gets pnf ready event for pnfCorrelationId: {}", pnfCorrelationId);
-                // runnable.run();
-                runnable = null;
-            }
+            unregister(pnfCorrelationId);
+            PnfNotificationEvent pnfNotificationEvent = new PnfNotificationEvent(this, pnfCorrelationId);
+            applicationEventPublisher.publishEvent(pnfNotificationEvent);
         }
     }
-
 }
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareServiceInstanceDataTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCompareServiceInstanceDataTest.groovy
new file mode 100644 (file)
index 0000000..afbace7
--- /dev/null
@@ -0,0 +1,301 @@
+package org.onap.so.bpmn.infrastructure.scripts
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.junit.Before
+import org.junit.Test
+import org.mockito.ArgumentCaptor
+import org.mockito.Captor
+import org.mockito.Mockito
+import org.onap.aai.domain.yang.ServiceInstance
+import org.onap.so.bpmn.common.scripts.MsoGroovyTest
+import org.onap.so.bpmn.core.domain.Resource
+import org.onap.so.bpmn.core.domain.ServiceDecomposition
+
+import static com.shazam.shazamcrest.MatcherAssert.assertThat
+import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs
+import static org.mockito.Mockito.times
+import static org.mockito.Mockito.when
+/**
+ * Copyright 2018 ZTE Corporation.
+ *
+ * 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.
+ */
+class DoCompareServiceInstanceDataTest extends MsoGroovyTest {
+
+
+    public static final String uuiSoString = "{\n" +
+            "    \"service\":{\n" +
+            "        \"name\":\"SiteService\",\n" +
+            "        \"description\":\"SiteService\",\n" +
+            "        \"serviceInvariantUuid\":\"5c13f3fb-2744-4635-9f1f-c59c92dc8f70\",\n" +
+            "        \"serviceUuid\":\"3a76b1f5-fb0d-4b6b-82d5-0e8a4ebc3838\",\n" +
+            "        \"globalSubscriberId\":\"test_custormer\",\n" +
+            "        \"serviceType\":\"example-service-type\",\n" +
+            "        \"parameters\":{\n" +
+            "            \"locationConstraints\":[\n" +
+            "\n" +
+            "            ],\n" +
+            "            \"resources\":[\n" +
+            "                {\n" +
+            "                    \"resourceIndex\":\"1\",\n" +
+            "                    \"resourceName\":\"sdwanvpnresource\",\n" +
+            "                    \"resourceInvariantUuid\":\"0c0e1cbe-6e01-4f9e-8c45-a9700ebc14df\",\n" +
+            "                    \"resourceUuid\":\"4ad2d390-5c51-45f5-9710-b467a4ec7a73\",\n" +
+            "                    \"resourceCustomizationUuid\":\"66590e07-0777-415c-af44-36347cf3ddd3\",\n" +
+            "                    \"parameters\":{\n" +
+            "                        \"locationConstraints\":[\n" +
+            "\n" +
+            "                        ],\n" +
+            "                        \"resources\":[\n" +
+            "\n" +
+            "                        ],\n" +
+            "                        \"requestInputs\":{\n" +
+            "\n" +
+            "                        }\n" +
+            "                    }\n" +
+            "                },\n" +
+            "                {\n" +
+            "                    \"resourceIndex\":\"1\",\n" +
+            "                    \"resourceName\":\"sdwansiteresource\",\n" +
+            "                    \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n" +
+            "                    \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n" +
+            "                    \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n" +
+            "                    \"parameters\":{\n" +
+            "                        \"locationConstraints\":[\n" +
+            "\n" +
+            "                        ],\n" +
+            "                        \"resources\":[\n" +
+            "\n" +
+            "                        ],\n" +
+            "                        \"requestInputs\":{\n" +
+            "\n" +
+            "                        }\n" +
+            "                    }\n" +
+            "                },\n" +
+            "                {\n" +
+            "                    \"resourceIndex\":\"2\",\n" +
+            "                    \"resourceName\":\"sdwansiteresource\",\n" +
+            "                    \"resourceInvariantUuid\":\"97a3e552-08c4-4697-aeeb-d8d3e09ce58e\",\n" +
+            "                    \"resourceUuid\":\"63d8e1af-32dc-4c71-891d-e3f7b6a976d2\",\n" +
+            "                    \"resourceCustomizationUuid\":\"205456e7-3dc0-40c4-8cb0-28e6c1877042\",\n" +
+            "                    \"parameters\":{\n" +
+            "                        \"locationConstraints\":[\n" +
+            "\n" +
+            "                        ],\n" +
+            "                        \"resources\":[\n" +
+            "\n" +
+            "                        ],\n" +
+            "                        \"requestInputs\":{\n" +
+            "\n" +
+            "                        }\n" +
+            "                    }\n" +
+            "                }\n" +
+            "            ],\n" +
+            "            \"requestInputs\":{\n" +
+            "                \"sdwanvpnresource_list\":[\n" +
+            "                    {\n" +
+            "                        \"sdwanvpn_topology\":\"hub_spoke\",\n" +
+            "                        \"sdwanvpn_name\":\"defaultvpn\",\n" +
+            "                        \"sdwansitelan_list\":[\n" +
+            "                            {\n" +
+            "                                \"role\":\"Hub\",\n" +
+            "                                \"portType\":\"GE\",\n" +
+            "                                \"portSwitch\":\"layer3-port\",\n" +
+            "                                \"vlanId\":\"\",\n" +
+            "                                \"ipAddress\":\"192.168.10.1\",\n" +
+            "                                \"deviceName\":\"vCPE\",\n" +
+            "                                \"portNumer\":\"0/0/1\"\n" +
+            "                            },\n" +
+            "                            {\n" +
+            "                                \"role\":\"Hub\",\n" +
+            "                                \"portType\":\"GE\",\n" +
+            "                                \"portSwitch\":\"layer2-port\",\n" +
+            "                                \"vlanId\":\"55\",\n" +
+            "                                \"ipAddress\":\"192.168.11.1\",\n" +
+            "                                \"deviceName\":\"CPE_Beijing\",\n" +
+            "                                \"portNumer\":\"0/0/1\"\n" +
+            "                            }\n" +
+            "                        ]\n" +
+            "                    }\n" +
+            "                ],\n" +
+            "                \"sdwansiteresource_list\":[\n" +
+            "                    {\n" +
+            "                        \"sdwansite_emails\":\"chenchuanyu@huawei.com\",\n" +
+            "                        \"sdwansite_address\":\"Huawei Public Cloud\",\n" +
+            "                        \"sdwansite_description\":\"DC Site\",\n" +
+            "                        \"sdwansite_role\":\"dsvpn_hub\",\n" +
+            "                        \"sdwansite_postcode\":\"20000\",\n" +
+            "                        \"sdwansite_type\":\"single_gateway\",\n" +
+            "                        \"sdwansite_latitude\":\"\",\n" +
+            "                        \"sdwansite_controlPoint\":\"\",\n" +
+            "                        \"sdwansite_longitude\":\"\",\n" +
+            "                        \"sdwansitewan_list\":[\n" +
+            "                            {\n" +
+            "                                \"providerIpAddress\":\"\",\n" +
+            "                                \"portType\":\"GE\",\n" +
+            "                                \"inputBandwidth\":\"1000\",\n" +
+            "                                \"ipAddress\":\"\",\n" +
+            "                                \"name\":\"10000\",\n" +
+            "                                \"transportNetworkName\":\"internet\",\n" +
+            "                                \"outputBandwidth\":\"10000\",\n" +
+            "                                \"deviceName\":\"vCPE\",\n" +
+            "                                \"portNumber\":\"0/0/0\",\n" +
+            "                                \"ipMode\":\"DHCP\",\n" +
+            "                                \"publicIP\":\"119.3.7.113\"\n" +
+            "                            }\n" +
+            "                        ],\n" +
+            "                        \"sdwandevice_list\":[\n" +
+            "                            {\n" +
+            "                                \"esn\":\"XXXXXXX\",\n" +
+            "                                \"vendor\":\"Huawei\",\n" +
+            "                                \"name\":\"vCPE\",\n" +
+            "                                \"type\":\"AR1000V\",\n" +
+            "                                \"version\":\"1.0\",\n" +
+            "                                \"class\":\"VNF\",\n" +
+            "                                \"systemIp\":\"20.20.20.1\"\n" +
+            "                            }\n" +
+            "                        ]\n" +
+            "                    },\n" +
+            "                    {\n" +
+            "                        \"sdwansite_emails\":\"chenchuanyu@huawei.com\",\n" +
+            "                        \"sdwansite_address\":\"Huawei Public Cloud\",\n" +
+            "                        \"sdwansite_description\":\"DC Site\",\n" +
+            "                        \"sdwansite_role\":\"dsvpn_hub\",\n" +
+            "                        \"sdwansite_postcode\":\"20000\",\n" +
+            "                        \"sdwansite_type\":\"single_gateway\",\n" +
+            "                        \"sdwansite_latitude\":\"\",\n" +
+            "                        \"sdwansite_controlPoint\":\"\",\n" +
+            "                        \"sdwansite_longitude\":\"\",\n" +
+            "                        \"sdwansitewan_list\":[\n" +
+            "                            {\n" +
+            "                                \"providerIpAddress\":\"\",\n" +
+            "                                \"portType\":\"GE\",\n" +
+            "                                \"inputBandwidth\":\"1000\",\n" +
+            "                                \"ipAddress\":\"172.18.1.2/24\",\n" +
+            "                                \"name\":\"10000\",\n" +
+            "                                \"transportNetworkName\":\"internet\",\n" +
+            "                                \"outputBandwidth\":\"10000\",\n" +
+            "                                \"deviceName\":\"CPE_Beijing\",\n" +
+            "                                \"portNumber\":\"0/0/0\",\n" +
+            "                                \"ipMode\":\"Static\",\n" +
+            "                                \"publicIP\":\"\"\n" +
+            "                            }\n" +
+            "                        ],\n" +
+            "                        \"sdwandevice_list\":[\n" +
+            "                            {\n" +
+            "                                \"esn\":\"XXXXXXX\",\n" +
+            "                                \"vendor\":\"Huawei\",\n" +
+            "                                \"name\":\"CPE_Beijing\",\n" +
+            "                                \"type\":\"AR161\",\n" +
+            "                                \"version\":\"1.0\",\n" +
+            "                                \"class\":\"PNF\",\n" +
+            "                                \"systemIp\":\"20.20.20.2\"\n" +
+            "                            }\n" +
+            "                        ]\n" +
+            "                    }\n" +
+            "                ]\n" +
+            "            }\n" +
+            "        }\n" +
+            "    }\n" +
+            "}"
+
+    @Before
+    void setUp() {
+        super.init("DoCompareServiceInstanceData")
+    }
+
+    @Captor
+    static ArgumentCaptor<ExecutionEntity> captor = ArgumentCaptor.forClass(ExecutionEntity.class)
+
+    @Test
+    void testPreProcessRequest() {
+        mockData()
+        DoCompareServiceInstanceData csi = new DoCompareServiceInstanceData()
+        csi.preProcessRequest(mockExecution)
+    }
+
+    @Test(expected = BpmnError.class)
+    void testPreProcessRequestException() {
+        DoCompareServiceInstanceData csi = new DoCompareServiceInstanceData()
+        csi.preProcessRequest(mockExecution)
+    }
+
+    @Test
+    void testPrepareDecomposeService_Original() {
+        mockData()
+        DoCompareServiceInstanceData csi = new DoCompareServiceInstanceData()
+        csi.prepareDecomposeService_Original(mockExecution)
+        Mockito.verify(mockExecution, times(1)).setVariable(captor.capture(), captor.capture())
+        String serviceModelInfo = getServiceModelInfo()
+        assertThat(captor.getValue(), sameBeanAs(serviceModelInfo))
+    }
+
+    @Test
+    void testProcessDecomposition_Original() {
+        mockData()
+        DoCompareServiceInstanceData csi = new DoCompareServiceInstanceData()
+        csi.processDecomposition_Original(mockExecution)
+        Mockito.verify(mockExecution, times(1)).setVariable(captor.capture(), captor.capture())
+        ServiceDecomposition serviceDecomposition = getServiceDecomposition()
+        assertThat(captor.getValue(), sameBeanAs(serviceDecomposition))
+    }
+
+    @Test
+    void testDoCompareUuiRquestInput() {
+        mockData()
+        DoCompareServiceInstanceData csi = new DoCompareServiceInstanceData()
+        csi.doCompareUuiRquestInput(mockExecution)
+        Mockito.verify(mockExecution, times(4)).setVariable(captor.capture(), captor.capture())
+    }
+
+    private String getServiceModelInfo() {
+        String modelInvariantUuid = mockExecution.getVariable("model-invariant-id-original")
+        String modelUuid = mockExecution.getVariable("model-version-id-original")
+        String serviceModelInfo = """{
+            "modelInvariantUuid":"${modelInvariantUuid}",
+            "modelUuid":"${modelUuid}",
+            "modelVersion":""
+             }"""
+        serviceModelInfo
+    }
+
+    private void mockData() {
+        when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+        when(mockExecution.getVariable("msoRequestId")).thenReturn("12345")
+        when(mockExecution.getVariable("model-version-id-original")).thenReturn("12345")
+        when(mockExecution.getVariable("model-invariant-id-original")).thenReturn("12345")
+        when(mockExecution.getVariable("uuiRequest")).thenReturn(uuiSoString)
+        when(mockExecution.getVariable("serviceInstanceId")).thenReturn("1234")
+        when(mockExecution.getVariable("serviceInstanceData-original")).thenReturn(getExpectedServiceInstance())
+        when(mockExecution.getVariable("serviceDecomposition")).thenReturn(getServiceDecomposition())
+        when(mockExecution.getVariable("serviceDecomposition_Original")).thenReturn(getServiceDecomposition())
+    }
+
+    private ServiceDecomposition getServiceDecomposition() {
+        ServiceDecomposition decomposition = new ServiceDecomposition()
+        List<Resource> allSR_original = new ArrayList<>()
+        decomposition.setAllottedResources(allSR_original)
+        return decomposition
+    }
+
+    private ServiceInstance getExpectedServiceInstance() {
+        ServiceInstance expectedServiceInstanceData = new ServiceInstance()
+        expectedServiceInstanceData.setServiceInstanceId("1234")
+        expectedServiceInstanceData.setServiceInstanceName("volte-service")
+        expectedServiceInstanceData.setServiceType("E2E Service")
+        expectedServiceInstanceData.setServiceRole("E2E Service")
+        expectedServiceInstanceData.setInputParameters(uuiSoString)
+        return expectedServiceInstanceData
+    }
+}
index 446c73d..96c3db0 100644 (file)
@@ -27,12 +27,14 @@ import org.camunda.bpm.engine.runtime.MessageCorrelationBuilder;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.InOrder;
+import org.onap.so.bpmn.infrastructure.pnf.PnfNotificationEvent;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.*;
 
 public class InformDmaapClientTest {
+
     @Before
     public void setUp() throws Exception {
         informDmaapClient = new InformDmaapClient();
@@ -71,6 +73,19 @@ public class InformDmaapClientTest {
         inOrder.verify(messageCorrelationBuilder).correlateWithResult();
     }
 
+    @Test
+    public void onApplicationEvent_validPnfNotificationEvent_expectedOutput() {
+
+        PnfNotificationEvent pnfNotificationEvent = new PnfNotificationEvent(this, "testPnfCorrelationId");
+
+        informDmaapClient.execute(delegateExecution);
+        informDmaapClient.onApplicationEvent(pnfNotificationEvent);
+
+        InOrder inOrder = inOrder(messageCorrelationBuilder);
+        inOrder.verify(messageCorrelationBuilder).processInstanceBusinessKey("testBusinessKey");
+        inOrder.verify(messageCorrelationBuilder).correlateWithResult();
+    }
+
     private DelegateExecution mockDelegateExecution() {
         DelegateExecution delegateExecution = mock(DelegateExecution.class);
         when(delegateExecution.getVariable(eq(ExecutionVariableNames.PNF_CORRELATION_ID)))
index ca3373e..9f31e2a 100644 (file)
@@ -25,8 +25,10 @@ package org.onap.so.bpmn.infrastructure.pnf.dmaap;
 
 import static org.junit.Assert.*;
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyObject;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyZeroInteractions;
 import static org.mockito.Mockito.when;
@@ -47,9 +49,12 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
+import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.so.bpmn.infrastructure.pnf.PnfNotificationEvent;
 import org.onap.so.bpmn.infrastructure.pnf.dmaap.PnfEventReadyDmaapClient.DmaapTopicListenerThread;
+import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.core.env.Environment;
 
 @RunWith(MockitoJUnitRunner.class)
@@ -80,6 +85,9 @@ public class PnfEventReadyDmaapClientTest {
     private Runnable threadMockToNotifyCamundaFlow;
     private ScheduledThreadPoolExecutor executorMock;
 
+    @Mock
+    private ApplicationEventPublisher applicationEventPublisher;
+
     @Before
     public void init() throws NoSuchFieldException, IllegalAccessException {
         when(env.getProperty(eq("pnf.dmaap.port"), eq(Integer.class))).thenReturn(PORT);
@@ -91,7 +99,7 @@ public class PnfEventReadyDmaapClientTest {
         when(env.getProperty(eq("pnf.dmaap.consumerGroup"))).thenReturn(CONSUMER_GROUP);
         when(env.getProperty(eq("pnf.dmaap.topicListenerDelayInSeconds"), eq(Integer.class)))
                 .thenReturn(TOPIC_LISTENER_DELAY_IN_SECONDS);
-        testedObject = new PnfEventReadyDmaapClient(env);
+        testedObject = new PnfEventReadyDmaapClient(env, applicationEventPublisher);
         testedObjectInnerClassThread = testedObject.new DmaapTopicListenerThread();
         httpClientMock = mock(HttpClient.class);
         threadMockToNotifyCamundaFlow = mock(Runnable.class);
@@ -123,7 +131,10 @@ public class PnfEventReadyDmaapClientTest {
         assertEquals(captor1.getValue().getURI().getPath(),
                 "/" + URI_PATH_PREFIX + "/" + EVENT_TOPIC_TEST + "/" + CONSUMER_GROUP + "/" + CONSUMER_ID + "");
 
-        // verify(threadMockToNotifyCamundaFlow).run();
+        /**
+         * Two PNF returned from HTTP request.
+         */
+        verify(applicationEventPublisher, times(2)).publishEvent(any(PnfNotificationEvent.class));
         verify(executorMock).shutdown();
     }
 
index e2488fd..345e0bb 100644 (file)
@@ -45,6 +45,7 @@ ex.processJavaException(execution)]]></bpmn:script>
         <camunda:in source="addResourceList" target="addResourceList" />
         <camunda:in source="delResourceList" target="delResourceList" />
         <camunda:in source="serviceRelationShip" target="serviceRelationShip" />
+        <camunda:in source="uuiRequest-del" target="uuiRequest-del" />
       </bpmn:extensionElements>
       <bpmn:incoming>SequenceFlow_04qwbbf</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0klbpxx</bpmn:outgoing>
@@ -192,7 +193,7 @@ csi.postCompareModelVersions(execution)]]></bpmn:script>
     </bpmn:scriptTask>
     <bpmn:scriptTask id="ScriptTask_0hixtxc" name="Prepare for Compare Model Versions" scriptFormat="groovy">
       <bpmn:incoming>SequenceFlow_03i6zhx</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1pdv4qj</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_16jngfs</bpmn:outgoing>
       <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
 def ddsi = new UpdateCustomE2EServiceInstance()
 ddsi.preCompareModelVersions(execution)]]></bpmn:script>
@@ -210,11 +211,10 @@ ddsi.preCompareModelVersions(execution)]]></bpmn:script>
         <camunda:out source="addResourceList" target="addResourceList" />
         <camunda:out source="delResourceList" target="delResourceList" />
       </bpmn:extensionElements>
-      <bpmn:incoming>SequenceFlow_1pdv4qj</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1bvnbfu</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0xhbobd</bpmn:outgoing>
     </bpmn:callActivity>
     <bpmn:sequenceFlow id="SequenceFlow_03i6zhx" sourceRef="ScriptTask_0cx1y0g" targetRef="ScriptTask_0hixtxc" />
-    <bpmn:sequenceFlow id="SequenceFlow_1pdv4qj" sourceRef="ScriptTask_0hixtxc" targetRef="CallActivity_1rkoyc5" />
     <bpmn:sequenceFlow id="SequenceFlow_0xhbobd" sourceRef="CallActivity_1rkoyc5" targetRef="ScriptTask_11y3uq6" />
     <bpmn:exclusiveGateway id="ExclusiveGateway_0mc34qe" name="HasResourcetoUpdate?" default="SequenceFlow_1n8h3zt">
       <bpmn:incoming>SequenceFlow_0secadm</bpmn:incoming>
@@ -315,14 +315,54 @@ ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script>
       <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("hasResourcetoUpdate") == true}]]></bpmn:conditionExpression>
     </bpmn:sequenceFlow>
     <bpmn:sequenceFlow id="SequenceFlow_1n8h3zt" name="No" sourceRef="ExclusiveGateway_0mc34qe" targetRef="ScriptTask_04a0t3p" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0o2r7np" name="IsServiceInstanceModification?" default="SequenceFlow_1bvnbfu">
+      <bpmn:incoming>SequenceFlow_16jngfs</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1bvnbfu</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1po82kn</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_16jngfs" sourceRef="ScriptTask_0hixtxc" targetRef="ExclusiveGateway_0o2r7np" />
+    <bpmn:sequenceFlow id="SequenceFlow_1bvnbfu" name="No" sourceRef="ExclusiveGateway_0o2r7np" targetRef="CallActivity_1rkoyc5" />
+    <bpmn:sequenceFlow id="SequenceFlow_1po82kn" name="Yes" sourceRef="ExclusiveGateway_0o2r7np" targetRef="Task_1ktxr5y">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("model-version-id-original") == execution.getVariable("model-version-id-target") && execution.getVariable("model-invariant-id-original") == execution.getVariable("model-invariant-id-target")}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:callActivity id="Task_1ktxr5y" name="Call DoCompareServiceInstanceData" calledElement="DoCompareServiceInstanceData">
+      <bpmn:extensionElements>
+        <camunda:in source="serviceInstanceData-original" target="serviceInstanceData-original" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="uuiRequest" target="uuiRequest" />
+        <camunda:out source="addResourceList" target="addResourceList" />
+        <camunda:out source="delResourceList" target="delResourceList" />
+        <camunda:out source="uuiRequest" target="uuiRequest" />
+        <camunda:out source="uuiRequest-del" target="uuiRequest-del" />
+        <camunda:in source="model-invariant-id-original" target="model-invariant-id-original" />
+        <camunda:in source="model-version-id-original" target="model-version-id-original" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1po82kn</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0gqpsvb</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_0gqpsvb" sourceRef="Task_1ktxr5y" targetRef="Task_1xbq4e3" />
+    <bpmn:intermediateThrowEvent id="IntermediateThrowEvent_01jy2z3" name="GoToOperStatusInit">
+      <bpmn:incoming>SequenceFlow_0qe8uv2</bpmn:incoming>
+      <bpmn:linkEventDefinition name="StartOperStatusInit" />
+    </bpmn:intermediateThrowEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0qe8uv2" sourceRef="Task_1xbq4e3" targetRef="IntermediateThrowEvent_01jy2z3" />
+    <bpmn:scriptTask id="Task_1xbq4e3" name="Post for Compare Service Instance Data" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0gqpsvb</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0qe8uv2</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new UpdateCustomE2EServiceInstance()
+csi.postCompareModelVersions(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
   </bpmn:process>
   <bpmn:error id="Error_0nbdy47" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="UpdateCustomE2EServiceInstance">
       <bpmndi:BPMNShape id="StartEvent_00qj6ro_di" bpmnElement="StartEvent_00qj6ro">
-        <dc:Bounds x="-6" y="180" width="36" height="36" />
+        <dc:Bounds x="-6" y="135" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="-24" y="221" width="73" height="24" />
+          <dc:Bounds x="-25" y="176" width="75" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="SubProcess_0ka59nc_di" bpmnElement="SubProcess_0ka59nc" isExpanded="true">
@@ -338,7 +378,7 @@ ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script>
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1s09c7d_di" bpmnElement="ScriptTask_1s09c7d">
-        <dc:Bounds x="147" y="158" width="100" height="80" />
+        <dc:Bounds x="107" y="113" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_0ttvn8r_di" bpmnElement="ScriptTask_0ttvn8r">
         <dc:Bounds x="782" y="585" width="100" height="80" />
@@ -350,7 +390,7 @@ ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script>
         <dc:Bounds x="-61" y="908" width="1322" height="164" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_0xupxj9_di" bpmnElement="ScriptTask_0xupxj9">
-        <dc:Bounds x="451" y="337" width="100" height="80" />
+        <dc:Bounds x="451" y="362" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_0aqn64l_di" bpmnElement="ExclusiveGateway_0aqn64l" isMarkerVisible="true">
         <dc:Bounds x="639" y="600" width="50" height="50" />
@@ -365,10 +405,10 @@ ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script>
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0s2spoq_di" bpmnElement="SequenceFlow_0s2spoq">
-        <di:waypoint xsi:type="dc:Point" x="30" y="198" />
-        <di:waypoint xsi:type="dc:Point" x="147" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="30" y="153" />
+        <di:waypoint xsi:type="dc:Point" x="107" y="153" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="43.5" y="177" width="90" height="12" />
+          <dc:Bounds x="23.5" y="132" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0klbpxx_di" bpmnElement="SequenceFlow_0klbpxx">
@@ -485,49 +525,42 @@ ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script>
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0cx1y0g_di" bpmnElement="ScriptTask_0cx1y0g">
-        <dc:Bounds x="364" y="158" width="100" height="80" />
+        <dc:Bounds x="251" y="113" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_11y3uq6_di" bpmnElement="ScriptTask_11y3uq6">
-        <dc:Bounds x="959" y="158" width="100" height="80" />
+        <dc:Bounds x="959" y="113" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_0hixtxc_di" bpmnElement="ScriptTask_0hixtxc">
-        <dc:Bounds x="563" y="158" width="100" height="80" />
+        <dc:Bounds x="422" y="113" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_1rkoyc5_di" bpmnElement="CallActivity_1rkoyc5">
-        <dc:Bounds x="782" y="158" width="100" height="80" />
+        <dc:Bounds x="782" y="113" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_03i6zhx_di" bpmnElement="SequenceFlow_03i6zhx">
-        <di:waypoint xsi:type="dc:Point" x="464" y="198" />
-        <di:waypoint xsi:type="dc:Point" x="563" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="351" y="153" />
+        <di:waypoint xsi:type="dc:Point" x="422" y="153" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="468.5" y="177" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1pdv4qj_di" bpmnElement="SequenceFlow_1pdv4qj">
-        <di:waypoint xsi:type="dc:Point" x="663" y="198" />
-        <di:waypoint xsi:type="dc:Point" x="782" y="198" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="677.5" y="177" width="90" height="12" />
+          <dc:Bounds x="341.5" y="132" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0xhbobd_di" bpmnElement="SequenceFlow_0xhbobd">
-        <di:waypoint xsi:type="dc:Point" x="882" y="198" />
-        <di:waypoint xsi:type="dc:Point" x="959" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="882" y="153" />
+        <di:waypoint xsi:type="dc:Point" x="959" y="153" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="875.5" y="177" width="90" height="12" />
+          <dc:Bounds x="876" y="132" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_0mc34qe_di" bpmnElement="ExclusiveGateway_0mc34qe" isMarkerVisible="true">
-        <dc:Bounds x="639" y="352" width="50" height="50" />
+        <dc:Bounds x="639" y="377" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="622" y="324" width="85" height="24" />
+          <dc:Bounds x="622" y="349" width="85" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0az1n4y_di" bpmnElement="SequenceFlow_0az1n4y">
-        <di:waypoint xsi:type="dc:Point" x="247" y="198" />
-        <di:waypoint xsi:type="dc:Point" x="364" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="207" y="153" />
+        <di:waypoint xsi:type="dc:Point" x="251" y="153" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="260.5" y="177" width="90" height="12" />
+          <dc:Bounds x="184" y="132" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="IntermediateCatchEvent_0m01dm3_di" bpmnElement="IntermediateCatchEvent_0m01dm3">
@@ -537,10 +570,10 @@ ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script>
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0secadm_di" bpmnElement="SequenceFlow_0secadm">
-        <di:waypoint xsi:type="dc:Point" x="551" y="377" />
-        <di:waypoint xsi:type="dc:Point" x="639" y="377" />
+        <di:waypoint xsi:type="dc:Point" x="551" y="402" />
+        <di:waypoint xsi:type="dc:Point" x="639" y="402" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="550" y="356" width="90" height="12" />
+          <dc:Bounds x="550" y="381" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_04qwbbf_di" bpmnElement="SequenceFlow_04qwbbf">
@@ -551,58 +584,58 @@ ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script>
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_1jvqhkf_di" bpmnElement="EndEvent_1jvqhkf">
-        <dc:Bounds x="1192" y="359" width="36" height="36" />
+        <dc:Bounds x="1192" y="384" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1200" y="404" width="19" height="12" />
+          <dc:Bounds x="1200" y="429" width="19" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_16sgdqw_di" bpmnElement="ScriptTask_16sgdqw">
-        <dc:Bounds x="97" y="337" width="100" height="80" />
+        <dc:Bounds x="97" y="362" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0qjpd5v_di" bpmnElement="ServiceTask_0qjpd5v">
-        <dc:Bounds x="274" y="337" width="100" height="80" />
+        <dc:Bounds x="274" y="362" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1e3vtyq_di" bpmnElement="SequenceFlow_1e3vtyq">
-        <di:waypoint xsi:type="dc:Point" x="197" y="377" />
-        <di:waypoint xsi:type="dc:Point" x="274" y="377" />
+        <di:waypoint xsi:type="dc:Point" x="197" y="402" />
+        <di:waypoint xsi:type="dc:Point" x="274" y="402" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="235.5" y="356" width="0" height="12" />
+          <dc:Bounds x="191" y="381" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_12dou7o_di" bpmnElement="SequenceFlow_12dou7o">
-        <di:waypoint xsi:type="dc:Point" x="374" y="377" />
-        <di:waypoint xsi:type="dc:Point" x="451" y="377" />
+        <di:waypoint xsi:type="dc:Point" x="374" y="402" />
+        <di:waypoint xsi:type="dc:Point" x="451" y="402" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="412.5" y="356" width="0" height="12" />
+          <dc:Bounds x="368" y="381" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_0mj3kf2_di" bpmnElement="ServiceTask_0mj3kf2">
-        <dc:Bounds x="959" y="337" width="100" height="80" />
+        <dc:Bounds x="959" y="362" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="IntermediateThrowEvent_08mk8h9_di" bpmnElement="IntermediateThrowEvent_08mk8h9">
-        <dc:Bounds x="1192" y="180" width="36" height="36" />
+        <dc:Bounds x="1192" y="135" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1175" y="220" width="86" height="24" />
+          <dc:Bounds x="1175" y="175" width="86" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0t7zinj_di" bpmnElement="SequenceFlow_0t7zinj">
-        <di:waypoint xsi:type="dc:Point" x="1059" y="198" />
-        <di:waypoint xsi:type="dc:Point" x="1192" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="153" />
+        <di:waypoint xsi:type="dc:Point" x="1192" y="153" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1125.5" y="177" width="0" height="12" />
+          <dc:Bounds x="1081" y="132" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="IntermediateCatchEvent_14w7v9s_di" bpmnElement="IntermediateCatchEvent_14w7v9s">
-        <dc:Bounds x="-6" y="359" width="36" height="36" />
+        <dc:Bounds x="-6" y="384" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="-29" y="421" width="88" height="24" />
+          <dc:Bounds x="-29" y="446" width="88" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1bddzne_di" bpmnElement="SequenceFlow_1bddzne">
-        <di:waypoint xsi:type="dc:Point" x="30" y="377" />
-        <di:waypoint xsi:type="dc:Point" x="97" y="377" />
+        <di:waypoint xsi:type="dc:Point" x="30" y="402" />
+        <di:waypoint xsi:type="dc:Point" x="97" y="402" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="63.5" y="356" width="0" height="12" />
+          <dc:Bounds x="19" y="381" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_14kqo0r_di" bpmnElement="ScriptTask_14kqo0r">
@@ -626,42 +659,96 @@ ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn:script>
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_04a0t3p_di" bpmnElement="ScriptTask_04a0t3p">
-        <dc:Bounds x="782" y="337" width="100" height="80" />
+        <dc:Bounds x="782" y="362" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1wzk6tu_di" bpmnElement="SequenceFlow_1wzk6tu">
-        <di:waypoint xsi:type="dc:Point" x="882" y="377" />
-        <di:waypoint xsi:type="dc:Point" x="959" y="377" />
+        <di:waypoint xsi:type="dc:Point" x="882" y="402" />
+        <di:waypoint xsi:type="dc:Point" x="959" y="402" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="920.5" y="356" width="0" height="12" />
+          <dc:Bounds x="876" y="381" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="IntermediateThrowEvent_1k72hze_di" bpmnElement="IntermediateThrowEvent_1k72hze">
-        <dc:Bounds x="646" y="447" width="36" height="36" />
+        <dc:Bounds x="646" y="472" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="631" y="487" width="76" height="12" />
+          <dc:Bounds x="631" y="512" width="76" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0kvl23y_di" bpmnElement="SequenceFlow_0kvl23y">
-        <di:waypoint xsi:type="dc:Point" x="1059" y="377" />
-        <di:waypoint xsi:type="dc:Point" x="1192" y="377" />
+        <di:waypoint xsi:type="dc:Point" x="1059" y="402" />
+        <di:waypoint xsi:type="dc:Point" x="1192" y="402" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1125.5" y="356" width="0" height="12" />
+          <dc:Bounds x="1081" y="381" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0zmd4rt_di" bpmnElement="SequenceFlow_0zmd4rt">
-        <di:waypoint xsi:type="dc:Point" x="664" y="402" />
-        <di:waypoint xsi:type="dc:Point" x="664" y="447" />
+        <di:waypoint xsi:type="dc:Point" x="664" y="427" />
+        <di:waypoint xsi:type="dc:Point" x="664" y="472" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="670" y="419" width="19" height="12" />
+          <dc:Bounds x="670" y="444" width="19" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1n8h3zt_di" bpmnElement="SequenceFlow_1n8h3zt">
-        <di:waypoint xsi:type="dc:Point" x="689" y="377" />
-        <di:waypoint xsi:type="dc:Point" x="782" y="377" />
+        <di:waypoint xsi:type="dc:Point" x="689" y="402" />
+        <di:waypoint xsi:type="dc:Point" x="782" y="402" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="729" y="356" width="14" height="12" />
+          <dc:Bounds x="729" y="381" width="14" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0o2r7np_di" bpmnElement="ExclusiveGateway_0o2r7np" isMarkerVisible="true">
+        <dc:Bounds x="628.6452095808384" y="128.09730538922156" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="611" y="182" width="88" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_16jngfs_di" bpmnElement="SequenceFlow_16jngfs">
+        <di:waypoint xsi:type="dc:Point" x="522" y="153" />
+        <di:waypoint xsi:type="dc:Point" x="629" y="153" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="575.5" y="132" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bvnbfu_di" bpmnElement="SequenceFlow_1bvnbfu">
+        <di:waypoint xsi:type="dc:Point" x="679" y="153" />
+        <di:waypoint xsi:type="dc:Point" x="782" y="153" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="724" y="132" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1po82kn_di" bpmnElement="SequenceFlow_1po82kn">
+        <di:waypoint xsi:type="dc:Point" x="654" y="178" />
+        <di:waypoint xsi:type="dc:Point" x="654" y="267" />
+        <di:waypoint xsi:type="dc:Point" x="782" y="267" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="660" y="217" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0vnoaee_di" bpmnElement="Task_1ktxr5y">
+        <dc:Bounds x="782" y="227" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gqpsvb_di" bpmnElement="SequenceFlow_0gqpsvb">
+        <di:waypoint xsi:type="dc:Point" x="882" y="267" />
+        <di:waypoint xsi:type="dc:Point" x="959" y="267" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="920.5" y="246" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_01jy2z3_di" bpmnElement="IntermediateThrowEvent_01jy2z3">
+        <dc:Bounds x="1192" y="249" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1175" y="289" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0qe8uv2_di" bpmnElement="SequenceFlow_0qe8uv2">
+        <di:waypoint xsi:type="dc:Point" x="1059" y="267" />
+        <di:waypoint xsi:type="dc:Point" x="1192" y="267" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1125.5" y="246" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_179xmbe_di" bpmnElement="Task_1xbq4e3">
+        <dc:Bounds x="959" y="227" width="100" height="80" />
+      </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn:definitions>
diff --git a/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCompareServiceInstanceData.bpmn b/bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCompareServiceInstanceData.bpmn
new file mode 100644 (file)
index 0000000..6e5032a
--- /dev/null
@@ -0,0 +1,241 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCompareServiceInstanceData" name="DoCompareServiceInstanceData" isExecutable="true">
+    <bpmn2:scriptTask id="ScriptTask_04rn9mp" name="DoCompareServiceInstanceData" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1rebkae</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lkpfe2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def csi = new  DoCompareServiceInstanceData()
+csi.doCompareUuiRquestInput(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1rebkae" sourceRef="StartEvent_0jhv664" targetRef="ScriptTask_04rn9mp" />
+    <bpmn2:intermediateCatchEvent id="StartEvent_0jhv664" name="StartCompare">
+      <bpmn2:outgoing>SequenceFlow_1rebkae</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartCompare" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:endEvent id="EndEvent_0x8im5g">
+      <bpmn2:incoming>SequenceFlow_1lkpfe2</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1lkpfe2" sourceRef="ScriptTask_04rn9mp" targetRef="EndEvent_0x8im5g" />
+    <bpmn2:subProcess id="SubProcess_0roysbg" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_0xtpw6j">
+        <bpmn2:outgoing>SequenceFlow_19sogyb</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_05a2pr9">
+        <bpmn2:incoming>SequenceFlow_17mr4jl</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_0xk9fk3" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_19sogyb</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_17mr4jl</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_19sogyb" name="" sourceRef="StartEvent_0xtpw6j" targetRef="ScriptTask_0xk9fk3" />
+      <bpmn2:sequenceFlow id="SequenceFlow_17mr4jl" name="" sourceRef="ScriptTask_0xk9fk3" targetRef="EndEvent_05a2pr9" />
+    </bpmn2:subProcess>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0se5nzs" name="GoTo Decompose_Service_Original">
+      <bpmn2:incoming>SequenceFlow_1o9916j</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="Decompose_Service_Original" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0b436w1" name="GoTo StartCompare">
+      <bpmn2:incoming>SequenceFlow_08zjjzw</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartCompare" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:scriptTask id="ScriptTask_1d9qb54" name="PostProcess&#10;Decompose&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1wudpuj</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_08zjjzw</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi= new DoCompareServiceInstanceData()
+dcsi.processDecomposition_Original(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_1fc56sd" name="Call Decompose Service" calledElement="DecomposeService">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceModelInfo_Original" target="serviceModelInfo" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_04ciw70</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1wudpuj</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_1i06996" name="Prepare&#10;Decompose&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1fgkvpr</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04ciw70</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi= new DoCompareServiceInstanceData()
+dcsi.prepareDecomposeService_Original(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1m9q0j7" name="Decompose_Service_Original">
+      <bpmn2:outgoing>SequenceFlow_1fgkvpr</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="Decompose_Service_Original" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_08zjjzw" sourceRef="ScriptTask_1d9qb54" targetRef="IntermediateThrowEvent_0b436w1" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1wudpuj" sourceRef="CallActivity_1fc56sd" targetRef="ScriptTask_1d9qb54" />
+    <bpmn2:sequenceFlow id="SequenceFlow_04ciw70" sourceRef="ScriptTask_1i06996" targetRef="CallActivity_1fc56sd" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1fgkvpr" sourceRef="IntermediateCatchEvent_1m9q0j7" targetRef="ScriptTask_1i06996" />
+    <bpmn2:startEvent id="StartEvent_13da9hl" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1chfao3</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:scriptTask id="ScriptTask_0nie46r" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1chfao3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1o9916j</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
+def dcsi = new DoCompareServiceInstanceData()
+dcsi.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1chfao3" name="" sourceRef="StartEvent_13da9hl" targetRef="ScriptTask_0nie46r" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1o9916j" sourceRef="ScriptTask_0nie46r" targetRef="IntermediateThrowEvent_0se5nzs" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCompareServiceInstanceData">
+      <bpmndi:BPMNShape id="ScriptTask_04rn9mp_di" bpmnElement="ScriptTask_04rn9mp">
+        <dc:Bounds x="426" y="426" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rebkae_di" bpmnElement="SequenceFlow_1rebkae">
+        <di:waypoint xsi:type="dc:Point" x="10" y="466" />
+        <di:waypoint xsi:type="dc:Point" x="426" y="466" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="173" y="445" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_05z1jyy_di" bpmnElement="StartEvent_0jhv664">
+        <dc:Bounds x="-26" y="448" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-42" y="488" width="68" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0x8im5g_di" bpmnElement="EndEvent_0x8im5g">
+        <dc:Bounds x="1040" y="448" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1013" y="488" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lkpfe2_di" bpmnElement="SequenceFlow_1lkpfe2">
+        <di:waypoint xsi:type="dc:Point" x="526" y="466" />
+        <di:waypoint xsi:type="dc:Point" x="1040" y="466" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="738" y="445" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_0roysbg_di" bpmnElement="SubProcess_0roysbg" isExpanded="true">
+        <dc:Bounds x="221" y="751" width="467" height="193" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0xtpw6j_di" bpmnElement="StartEvent_0xtpw6j">
+        <dc:Bounds x="289" y="818" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="172" y="859" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_05a2pr9_di" bpmnElement="EndEvent_05a2pr9">
+        <dc:Bounds x="582" y="818" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="465" y="859" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0xk9fk3_di" bpmnElement="ScriptTask_0xk9fk3">
+        <dc:Bounds x="393" y="796" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_19sogyb_di" bpmnElement="SequenceFlow_19sogyb">
+        <di:waypoint xsi:type="dc:Point" x="325" y="836" />
+        <di:waypoint xsi:type="dc:Point" x="393" y="836" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="224" y="821" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17mr4jl_di" bpmnElement="SequenceFlow_17mr4jl">
+        <di:waypoint xsi:type="dc:Point" x="493" y="836" />
+        <di:waypoint xsi:type="dc:Point" x="582" y="836" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="405" y="821" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0se5nzs_di" bpmnElement="IntermediateThrowEvent_0se5nzs">
+        <dc:Bounds x="1047" y="83" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1021" y="124" width="88" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0b436w1_di" bpmnElement="IntermediateThrowEvent_0b436w1">
+        <dc:Bounds x="1047" y="311" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1032" y="352" width="68" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1d9qb54_di" bpmnElement="ScriptTask_1d9qb54">
+        <dc:Bounds x="711" y="290" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1fc56sd_di" bpmnElement="CallActivity_1fc56sd">
+        <dc:Bounds x="426" y="290" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1i06996_di" bpmnElement="ScriptTask_1i06996">
+        <dc:Bounds x="144" y="290" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1m9q0j7_di" bpmnElement="IntermediateCatchEvent_1m9q0j7">
+        <dc:Bounds x="-26" y="312" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-50" y="348" width="88" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_08zjjzw_di" bpmnElement="SequenceFlow_08zjjzw">
+        <di:waypoint xsi:type="dc:Point" x="811" y="330" />
+        <di:waypoint xsi:type="dc:Point" x="1047" y="329" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="929" y="308.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wudpuj_di" bpmnElement="SequenceFlow_1wudpuj">
+        <di:waypoint xsi:type="dc:Point" x="526" y="330" />
+        <di:waypoint xsi:type="dc:Point" x="711" y="330" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="618.5" y="309" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04ciw70_di" bpmnElement="SequenceFlow_04ciw70">
+        <di:waypoint xsi:type="dc:Point" x="244" y="330" />
+        <di:waypoint xsi:type="dc:Point" x="426" y="330" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="245" y="309" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fgkvpr_di" bpmnElement="SequenceFlow_1fgkvpr">
+        <di:waypoint xsi:type="dc:Point" x="10" y="330" />
+        <di:waypoint xsi:type="dc:Point" x="144" y="330" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-13" y="309" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="StartEvent_13da9hl_di" bpmnElement="StartEvent_13da9hl">
+        <dc:Bounds x="-20" y="83" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-26" y="124" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0nie46r_di" bpmnElement="ScriptTask_0nie46r">
+        <dc:Bounds x="340" y="61" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1chfao3_di" bpmnElement="SequenceFlow_1chfao3">
+        <di:waypoint xsi:type="dc:Point" x="16" y="101" />
+        <di:waypoint xsi:type="dc:Point" x="181" y="101" />
+        <di:waypoint xsi:type="dc:Point" x="181" y="101" />
+        <di:waypoint xsi:type="dc:Point" x="340" y="101" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="196" y="95" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1o9916j_di" bpmnElement="SequenceFlow_1o9916j">
+        <di:waypoint xsi:type="dc:Point" x="440" y="101" />
+        <di:waypoint xsi:type="dc:Point" x="1047" y="101" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="743.5" y="80" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
index 785db75..002e382 100644 (file)
@@ -186,6 +186,7 @@ dcsi.preProcessAAIPUT(execution)]]></bpmn2:script>
         <camunda:in source="operationType" target="operationType" />
         <camunda:in source="operationId" target="operationId" />
         <camunda:in source="serviceDecomposition_Original" target="serviceDecomposition" />
+        <camunda:in source="uuiRequest-del" target="uuiRequest-del" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_0ur34hv</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0w4t4ao</bpmn2:outgoing>
index abab08b..b0517ac 100644 (file)
@@ -1,16 +1,21 @@
-/*
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Nordix Foundation.
+ * ================================================================================
+ * 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
  *
- * ============LICENSE_START======================================================= Copyright (C) 2019 Nordix
- * Foundation. ================================================================================ 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
  *
- * 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.
+ * 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.
  *
- * SPDX-License-Identifier: Apache-2.0 ============LICENSE_END=========================================================
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
  */
 
 package org.onap.so.bpmn.infrastructure.process;
@@ -25,10 +30,8 @@ import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching;
 import static org.assertj.core.api.Assertions.fail;
 import static org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareAssertions.assertThat;
 import com.google.protobuf.Struct;
-import com.google.protobuf.Value;
 import java.io.IOException;
 import java.util.List;
-import java.util.Map;
 import java.util.UUID;
 import org.camunda.bpm.engine.runtime.Execution;
 import org.camunda.bpm.engine.runtime.ProcessInstance;
@@ -114,6 +117,7 @@ public class CreateVcpeResCustServiceSimplifiedTest extends BaseBPMNTest {
 
         if (!execution.isSuspended() && !execution.isEnded()) {
             try {
+
                 runtimeService.signal(execution.getId());
             } catch (Exception e) {
                 logger.info(e.getMessage(), e);