Adding rest service for so monitoring 83/62083/15
authorwaqas.ikram <waqas.ikram@ericsson.com>
Thu, 23 Aug 2018 12:26:09 +0000 (13:26 +0100)
committerSeshu Kumar M <seshu.kumar.m@huawei.com>
Sat, 8 Sep 2018 04:42:09 +0000 (04:42 +0000)
Change-Id: I9dac918998901d54b3cbc5477cc9c057c3019cb3
Issue-ID: SO-724
Signed-off-by: waqas.ikram <waqas.ikram@ericsson.com>
60 files changed:
adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/InfraActiveRequestsRepositoryCustomController.java
mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/beans/InfraActiveRequests.java
mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/beans/InfraRequests.java
mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/data/repository/InfraActiveRequestsRepositoryCustom.java
mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/data/repository/InfraActiveRequestsRepositoryImpl.java
mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/data/repository/QueryOperationType.java [new file with mode: 0644]
mso-api-handlers/mso-requests-db/src/test/java/org/onap/so/db/request/data/repository/InfraActiveRequestsRepositoryImplTest.java [new file with mode: 0644]
pom.xml
so-monitoring/pom.xml [new file with mode: 0644]
so-monitoring/so-monitoring-handler/pom.xml [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/camunda/model/ActivityInstance.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/camunda/model/ProcessDefinition.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/camunda/model/ProcessInstance.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/camunda/model/ProcessInstanceVariable.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/camunda/model/SoActiveInfraRequests.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/camunda/CamundaConfiguration.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/camunda/CamundaRestUrlProvider.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/database/DatabaseConfiguration.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/database/DatabaseUrlProvider.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/BasicAuthorizationHttpRequestInterceptor.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/HttpClientConnectionConfiguration.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/HttpServiceProviderConfiguration.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/RestTemplateConfigration.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/db/service/DatabaseServiceProvider.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/db/service/DatabaseServiceProviderImpl.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/exception/InvalidRestRequestException.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/exception/RestProcessingException.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/ActivityInstanceDetail.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/ProcessDefinitionDetail.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/ProcessInstanceDetail.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/ProcessInstanceIdDetail.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/ProcessInstanceVariableDetail.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/SoInfraRequest.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/SoInfraRequestBuilder.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/rest/service/CamundaProcessDataServiceProvider.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/rest/service/CamundaProcessDataServiceProviderImpl.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/rest/service/HttpRestServiceProvider.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/rest/service/HttpRestServiceProviderImpl.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/utils/ObjectEqualsUtils.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/configuration/CamundaConfigurationTest.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/configuration/CamundaRestUrlProviderTest.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/configuration/HttpServiceProviderConfigurationTest.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/configuration/PojoClassesTests.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/configuration/database/DatabaseUrlProviderTest.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/db/api/DatabaseServiceProviderTest.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/rest/service/CamundaProcessDataServiceProviderTest.java [new file with mode: 0644]
so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/utils/ObjectEqualsUtilsTest.java [new file with mode: 0644]
so-monitoring/so-monitoring-service/pom.xml [new file with mode: 0644]
so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/JerseyConfiguration.java [new file with mode: 0644]
so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringApplication.java [new file with mode: 0644]
so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringController.java [new file with mode: 0644]
so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/WebApplicationConfig.java [new file with mode: 0644]
so-monitoring/so-monitoring-service/src/main/resources/application.yaml [new file with mode: 0644]
so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/SoMonitoringControllerTest.java [new file with mode: 0644]
so-monitoring/so-monitoring-service/src/test/resources/application-test.yaml [new file with mode: 0644]
so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/activityInstance.json [new file with mode: 0644]
so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processDefinition.json [new file with mode: 0644]
so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processInstance.json [new file with mode: 0644]
so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processInstanceVariables.json [new file with mode: 0644]
so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/singleprocessInstance.json [new file with mode: 0644]

index 34bf9cb..a476f89 100644 (file)
 
 package org.onap.so.adapters.requestsdb;
 
+import java.util.List;
+import java.util.Map;
+
 import org.onap.so.db.request.beans.InfraActiveRequests;
 import org.onap.so.db.request.data.controller.InstanceNameDuplicateCheckRequest;
 import org.onap.so.db.request.data.repository.InfraActiveRequestsRepository;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
-
-
-import java.util.List;
-import java.util.Map;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 @RestController
 public class InfraActiveRequestsRepositoryCustomController {
@@ -59,4 +59,11 @@ public class InfraActiveRequestsRepositoryCustomController {
     public InfraActiveRequests checkInstanceNameDuplicate(@RequestBody InstanceNameDuplicateCheckRequest instanceNameDuplicateCheckRequest) {
         return infraActiveRequestsRepository.checkInstanceNameDuplicate(instanceNameDuplicateCheckRequest.getInstanceIdMap(), instanceNameDuplicateCheckRequest.getInstanceName(), instanceNameDuplicateCheckRequest.getRequestScope());
     }
+    
+    @RequestMapping(method = RequestMethod.POST, value = "/infraActiveRequests/v1/getInfraActiveRequests")
+    public List<InfraActiveRequests> getInfraActiveRequests(@RequestBody Map<String, String[]> filters,
+            @RequestParam("from") long startTime, @RequestParam("to") long endTime,
+            @RequestParam(value = "maxResult", required = false) Integer maxResult) {
+        return infraActiveRequestsRepository.getInfraActiveRequests(filters, startTime, endTime, maxResult);
+    }
 }
index 924f887..348fc52 100644 (file)
@@ -36,60 +36,59 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
 @Table(name = "infra_active_requests")
 public class InfraActiveRequests extends InfraRequests {
 
-       private static final long serialVersionUID = -6818265918910035170L;
+    private static final long serialVersionUID = -6818265918910035170L;
 
-       public InfraActiveRequests() {
-       }
+    public InfraActiveRequests() {}
 
-       public InfraActiveRequests(String requestId, String action) {
-               setRequestId(requestId);
-               setAction(action);
-       }
+    public InfraActiveRequests(final String requestId, final String action) {
+        setRequestId(requestId);
+        setAction(action);
+    }
 
-       public InfraActiveRequests(String requestId) {
-               setRequestId(requestId);
-       }    
-       
-       @Override
-       public boolean equals(final Object other) {
-               if (this == other) {
-                       return true;
-               }
-               if (!(other instanceof InfraActiveRequests)) {
-                       return false;
-               }
-               InfraActiveRequests castOther = (InfraActiveRequests) other;
-               return Objects.equals(getRequestId(), castOther.getRequestId());
-       }
+    public InfraActiveRequests(final String requestId) {
+        setRequestId(requestId);
+    }
 
-       @Override
-       public int hashCode() {
-               return Objects.hash(getRequestId());
-       }
+    @Override
+    public boolean equals(final Object other) {
+        if (this == other) {
+            return true;
+        }
+        if (!(other instanceof InfraActiveRequests)) {
+            return false;
+        }
+        final InfraActiveRequests castOther = (InfraActiveRequests) other;
+        return Objects.equals(getRequestId(), castOther.getRequestId());
+    }
 
-       @Override
-       public String toString() {
-               return new ToStringBuilder(this).append("requestId", getRequestId())
-                               .append("clientRequestId", getClientRequestId()).append("action", getAction())
-                               .append("requestStatus", getRequestStatus()).append("statusMessage", getStatusMessage())
-                               .append("progress", getProgress()).append("startTime", getStartTime()).append("endTime", getEndTime())
-                               .append("source", getSource()).append("vnfId", getVnfId()).append("vnfName", getVnfName())
-                               .append("vnfType", getVnfType()).append("serviceType", getServiceType())
-                               .append("aicNodeClli", getAicNodeClli()).append("tenantId", getTenantId())
-                               .append("provStatus", getProvStatus()).append("vnfParams", getVnfParams())
-                               .append("vnfOutputs", getVnfOutputs()).append("requestBody", getRequestBody())
-                               .append("responseBody", getResponseBody()).append("lastModifiedBy", getLastModifiedBy())
-                               .append("modifyTime", getModifyTime()).append("requestType", getRequestType())
-                               .append("volumeGroupId", getVolumeGroupId()).append("volumeGroupName", getVolumeGroupName())
-                               .append("vfModuleId", getVfModuleId()).append("vfModuleName", getVfModuleName())
-                               .append("vfModuleModelName", getVfModuleModelName()).append("aaiServiceId", getAaiServiceId())
-                               .append("aicCloudRegion", getAicCloudRegion()).append("callBackUrl", getCallBackUrl())
-                               .append("correlator", getCorrelator()).append("serviceInstanceId", getServiceInstanceId())
-                               .append("serviceInstanceName", getServiceInstanceName()).append("requestScope", getRequestScope())
-                               .append("requestAction", getRequestAction()).append("networkId", getNetworkId())
-                               .append("networkName", getNetworkName()).append("networkType", getNetworkType())
-                               .append("requestorId", getRequestorId()).append("configurationId", getConfigurationId())
-                               .append("configurationName", getConfigurationName()).append("operationalEnvId", getOperationalEnvId())
-                               .append("operationalEnvName", getOperationalEnvName()).toString();
-       }
+    @Override
+    public int hashCode() {
+        return Objects.hash(getRequestId());
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this).append("requestId", getRequestId())
+                .append("clientRequestId", getClientRequestId()).append("action", getAction())
+                .append("requestStatus", getRequestStatus()).append("statusMessage", getStatusMessage())
+                .append("progress", getProgress()).append("startTime", getStartTime()).append("endTime", getEndTime())
+                .append("source", getSource()).append("vnfId", getVnfId()).append("vnfName", getVnfName())
+                .append("vnfType", getVnfType()).append("serviceType", getServiceType())
+                .append("aicNodeClli", getAicNodeClli()).append("tenantId", getTenantId())
+                .append("provStatus", getProvStatus()).append("vnfParams", getVnfParams())
+                .append("vnfOutputs", getVnfOutputs()).append("requestBody", getRequestBody())
+                .append("responseBody", getResponseBody()).append("lastModifiedBy", getLastModifiedBy())
+                .append("modifyTime", getModifyTime()).append("requestType", getRequestType())
+                .append("volumeGroupId", getVolumeGroupId()).append("volumeGroupName", getVolumeGroupName())
+                .append("vfModuleId", getVfModuleId()).append("vfModuleName", getVfModuleName())
+                .append("vfModuleModelName", getVfModuleModelName()).append("aaiServiceId", getAaiServiceId())
+                .append("aicCloudRegion", getAicCloudRegion()).append("callBackUrl", getCallBackUrl())
+                .append("correlator", getCorrelator()).append("serviceInstanceId", getServiceInstanceId())
+                .append("serviceInstanceName", getServiceInstanceName()).append("requestScope", getRequestScope())
+                .append("requestAction", getRequestAction()).append("networkId", getNetworkId())
+                .append("networkName", getNetworkName()).append("networkType", getNetworkType())
+                .append("requestorId", getRequestorId()).append("configurationId", getConfigurationId())
+                .append("configurationName", getConfigurationName()).append("operationalEnvId", getOperationalEnvId())
+                .append("operationalEnvName", getOperationalEnvName()).toString();
+    }
 }
index 48a6cf3..0833064 100644 (file)
@@ -42,515 +42,515 @@ import uk.co.blackpepper.bowman.annotation.ResourceId;
 @MappedSuperclass
 public abstract class InfraRequests implements java.io.Serializable {
 
-       private static final long serialVersionUID = -5497583682393936143L;
-       private static final String UNKNOWN = "unknown";
-       
-       
-       @Id
-       @Column(name = "REQUEST_ID", length=45)
+    private static final long serialVersionUID = -5497583682393936143L;
+    private static final String UNKNOWN = "unknown";
+
+
+    @Id
+    @Column(name = "REQUEST_ID", length = 45)
     private String requestId;
-       @Column(name = "CLIENT_REQUEST_ID", length=45, unique=true)
-       private String clientRequestId;
-       @Column(name = "ACTION", length=45)
-       private String action;
-       @Column(name = "REQUEST_STATUS", length=20)
-       private String requestStatus;
-       @Column(name = "STATUS_MESSAGE", length=2000)
-       private String statusMessage;
-       @Column(name = "PROGRESS", precision=11)
-       private Long progress;
-       
-       @Column(name = "START_TIME")
-       private Timestamp startTime;
-       @Column(name = "END_TIME")
-       private Timestamp endTime;
-       @Column(name = "SOURCE", length=45)
-       private String source;
-       @Column(name = "VNF_ID", length=45)
-       private String vnfId;
-       @Column(name = "VNF_NAME", length=80)
-       private String vnfName;
-       @Column(name = "VNF_TYPE", length=200)
-       private String vnfType;
-       @Column(name = "SERVICE_TYPE", length=45)
-       private String serviceType;
-       @Column(name = "AIC_NODE_CLLI", length=11)
-       private String aicNodeClli;
-       @Column(name = "TENANT_ID", length=45)
-       private String tenantId;
-       @Column(name = "PROV_STATUS", length=20)
-       private String provStatus;
-       @Column(name = "VNF_PARAMS")
-       private String vnfParams;
-       @Column(name = "VNF_OUTPUTS")
-       private String vnfOutputs;
-       @Column(name = "REQUEST_BODY")
-       private String requestBody;
-       @Column(name = "RESPONSE_BODY")
-       private String responseBody;
-       @Column(name = "LAST_MODIFIED_BY", length=50)
-       private String lastModifiedBy;
-       @Column(name = "MODIFY_TIME")
-       @Temporal(TemporalType.TIMESTAMP)
-       private Date modifyTime;
-       @Column(name = "REQUEST_TYPE", length=20)
-       private String requestType;
-       @Column(name = "VOLUME_GROUP_ID", length=45)
-       private String volumeGroupId;
-       @Column(name = "VOLUME_GROUP_NAME", length=45)
-       private String volumeGroupName;
-       @Column(name = "VF_MODULE_ID", length=45)
-       private String vfModuleId;
-       @Column(name = "VF_MODULE_NAME", length=200)
-       private String vfModuleName;
-       @Column(name = "VF_MODULE_MODEL_NAME", length=200)
-       private String vfModuleModelName;
-       @Column(name = "AAI_SERVICE_ID", length=50)
-       private String aaiServiceId;
-       @Column(name = "AIC_CLOUD_REGION", length=11)
-       private String aicCloudRegion;
-       @Column(name = "CALLBACK_URL", length=200)
-       private String callBackUrl;
-       @Column(name = "CORRELATOR", length=80)
-       private String correlator;
-       @Column(name = "SERVICE_INSTANCE_ID", length=45)
-       private String serviceInstanceId;
-       @Column(name = "SERVICE_INSTANCE_NAME", length=80)
-       private String serviceInstanceName;
-       @Column(name = "REQUEST_SCOPE", length=45)
-       private String requestScope;
-       @Column(name = "REQUEST_ACTION", length=45)
-       private String requestAction;
-       @Column(name = "NETWORK_ID", length=45)
-       private String networkId;
-       @Column(name = "NETWORK_NAME", length=80)
-       private String networkName;
-       @Column(name = "NETWORK_TYPE", length=80)
-       private String networkType;
-       @Column(name = "REQUESTOR_ID", length=80)
-       private String requestorId;
-       @Column(name = "CONFIGURATION_ID", length=45)
-       private String configurationId;
-       @Column(name = "CONFIGURATION_NAME", length=200)
-       private String configurationName;
-       @Column(name = "OPERATIONAL_ENV_ID", length=45)
-       private String operationalEnvId;
-       @Column(name = "OPERATIONAL_ENV_NAME", length=200)
-       private String operationalEnvName;
-
-       @ResourceId
-       public URI getRequestURI() {
-               return URI.create(this.requestId);
-       }
-
-       public String getRequestId() {
-               return this.requestId;
-       }
-       
-       public void setRequestId(String requestId) {
-               this.requestId = requestId;
-       }
-
-       public String getClientRequestId() {
-               return clientRequestId;
-       }
-
-       public void setClientRequestId(String clientRequestId) {
-               this.clientRequestId = clientRequestId;
-       }
-
-       public String getAction() {
-               return this.action;
-       }
-
-       public void setAction(String action) {
-               this.action = action;
-       }
-
-       public String getRequestStatus() {
-               return this.requestStatus;
-       }
-
-       public void setRequestStatus(String requestStatus) {
-               this.requestStatus = requestStatus;
-       }
-
-       public String getStatusMessage() {
-               return this.statusMessage;
-       }
-
-       public void setStatusMessage(String statusMessage) {
-               this.statusMessage = statusMessage;
-       }
-
-       public Long getProgress() {
-               return this.progress;
-       }
-
-       public void setProgress(Long progress) {
-               this.progress = progress;
-       }
+    @Column(name = "CLIENT_REQUEST_ID", length = 45, unique = true)
+    private String clientRequestId;
+    @Column(name = "ACTION", length = 45)
+    private String action;
+    @Column(name = "REQUEST_STATUS", length = 20)
+    private String requestStatus;
+    @Column(name = "STATUS_MESSAGE", length = 2000)
+    private String statusMessage;
+    @Column(name = "PROGRESS", precision = 11)
+    private Long progress;
+
+    @Column(name = "START_TIME")
+    private Timestamp startTime;
+    @Column(name = "END_TIME")
+    private Timestamp endTime;
+    @Column(name = "SOURCE", length = 45)
+    private String source;
+    @Column(name = "VNF_ID", length = 45)
+    private String vnfId;
+    @Column(name = "VNF_NAME", length = 80)
+    private String vnfName;
+    @Column(name = "VNF_TYPE", length = 200)
+    private String vnfType;
+    @Column(name = "SERVICE_TYPE", length = 45)
+    private String serviceType;
+    @Column(name = "AIC_NODE_CLLI", length = 11)
+    private String aicNodeClli;
+    @Column(name = "TENANT_ID", length = 45)
+    private String tenantId;
+    @Column(name = "PROV_STATUS", length = 20)
+    private String provStatus;
+    @Column(name = "VNF_PARAMS")
+    private String vnfParams;
+    @Column(name = "VNF_OUTPUTS")
+    private String vnfOutputs;
+    @Column(name = "REQUEST_BODY")
+    private String requestBody;
+    @Column(name = "RESPONSE_BODY")
+    private String responseBody;
+    @Column(name = "LAST_MODIFIED_BY", length = 50)
+    private String lastModifiedBy;
+    @Column(name = "MODIFY_TIME")
+    @Temporal(TemporalType.TIMESTAMP)
+    private Date modifyTime;
+    @Column(name = "REQUEST_TYPE", length = 20)
+    private String requestType;
+    @Column(name = "VOLUME_GROUP_ID", length = 45)
+    private String volumeGroupId;
+    @Column(name = "VOLUME_GROUP_NAME", length = 45)
+    private String volumeGroupName;
+    @Column(name = "VF_MODULE_ID", length = 45)
+    private String vfModuleId;
+    @Column(name = "VF_MODULE_NAME", length = 200)
+    private String vfModuleName;
+    @Column(name = "VF_MODULE_MODEL_NAME", length = 200)
+    private String vfModuleModelName;
+    @Column(name = "AAI_SERVICE_ID", length = 50)
+    private String aaiServiceId;
+    @Column(name = "AIC_CLOUD_REGION", length = 11)
+    private String aicCloudRegion;
+    @Column(name = "CALLBACK_URL", length = 200)
+    private String callBackUrl;
+    @Column(name = "CORRELATOR", length = 80)
+    private String correlator;
+    @Column(name = "SERVICE_INSTANCE_ID", length = 45)
+    private String serviceInstanceId;
+    @Column(name = "SERVICE_INSTANCE_NAME", length = 80)
+    private String serviceInstanceName;
+    @Column(name = "REQUEST_SCOPE", length = 45)
+    private String requestScope;
+    @Column(name = "REQUEST_ACTION", length = 45)
+    private String requestAction;
+    @Column(name = "NETWORK_ID", length = 45)
+    private String networkId;
+    @Column(name = "NETWORK_NAME", length = 80)
+    private String networkName;
+    @Column(name = "NETWORK_TYPE", length = 80)
+    private String networkType;
+    @Column(name = "REQUESTOR_ID", length = 80)
+    private String requestorId;
+    @Column(name = "CONFIGURATION_ID", length = 45)
+    private String configurationId;
+    @Column(name = "CONFIGURATION_NAME", length = 200)
+    private String configurationName;
+    @Column(name = "OPERATIONAL_ENV_ID", length = 45)
+    private String operationalEnvId;
+    @Column(name = "OPERATIONAL_ENV_NAME", length = 200)
+    private String operationalEnvName;
+
+    @ResourceId
+    public URI getRequestURI() {
+        return URI.create(this.requestId);
+    }
+
+    public String getRequestId() {
+        return this.requestId;
+    }
+
+    public void setRequestId(String requestId) {
+        this.requestId = requestId;
+    }
+
+    public String getClientRequestId() {
+        return clientRequestId;
+    }
+
+    public void setClientRequestId(String clientRequestId) {
+        this.clientRequestId = clientRequestId;
+    }
+
+    public String getAction() {
+        return this.action;
+    }
+
+    public void setAction(String action) {
+        this.action = action;
+    }
+
+    public String getRequestStatus() {
+        return this.requestStatus;
+    }
+
+    public void setRequestStatus(String requestStatus) {
+        this.requestStatus = requestStatus;
+    }
+
+    public String getStatusMessage() {
+        return this.statusMessage;
+    }
+
+    public void setStatusMessage(String statusMessage) {
+        this.statusMessage = statusMessage;
+    }
+
+    public Long getProgress() {
+        return this.progress;
+    }
+
+    public void setProgress(Long progress) {
+        this.progress = progress;
+    }
 
     @XmlJavaTypeAdapter(TimestampXMLAdapter.class)
-       public Timestamp getStartTime() {
-               return this.startTime;
-       }
+    public Timestamp getStartTime() {
+        return this.startTime;
+    }
 
-       public void setStartTime(Timestamp startTime) {
-               this.startTime = startTime;
-       }
+    public void setStartTime(Timestamp startTime) {
+        this.startTime = startTime;
+    }
 
     @XmlJavaTypeAdapter(TimestampXMLAdapter.class)
-       public Timestamp getEndTime() {
-               return this.endTime;
-       }
+    public Timestamp getEndTime() {
+        return this.endTime;
+    }
+
+    public void setEndTime(Timestamp endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getSource() {
+        return this.source;
+    }
+
+    public void setSource(String source) {
+        this.source = source;
+    }
+
+    public String getVnfId() {
+        return this.vnfId;
+    }
+
+    public void setVnfId(String vnfId) {
+        this.vnfId = vnfId;
+    }
+
+    public String getVnfName() {
+        return this.vnfName;
+    }
+
+    public void setVnfName(String vnfName) {
+        this.vnfName = vnfName;
+    }
+
+    public String getVnfType() {
+        return this.vnfType;
+    }
+
+    public void setVnfType(String vnfType) {
+        this.vnfType = vnfType;
+    }
+
+    public String getServiceType() {
+        return this.serviceType;
+    }
+
+    public void setServiceType(String serviceType) {
+        this.serviceType = serviceType;
+    }
+
+    public String getAicNodeClli() {
+        return this.aicNodeClli;
+    }
+
+    public void setAicNodeClli(String aicNodeClli) {
+        this.aicNodeClli = aicNodeClli;
+    }
+
+    public String getTenantId() {
+        return this.tenantId;
+    }
+
+    public void setTenantId(String tenantId) {
+        this.tenantId = tenantId;
+    }
+
+    public String getProvStatus() {
+        return this.provStatus;
+    }
+
+    public void setProvStatus(String provStatus) {
+        this.provStatus = provStatus;
+    }
+
+    public String getVnfParams() {
+        return this.vnfParams;
+    }
+
+    public void setVnfParams(String vnfParams) {
+        this.vnfParams = vnfParams;
+    }
+
+    public String getVnfOutputs() {
+        return this.vnfOutputs;
+    }
+
+    public void setVnfOutputs(String vnfOutputs) {
+        this.vnfOutputs = vnfOutputs;
+    }
+
+    public String getRequestBody() {
+        return this.requestBody;
+    }
+
+    public void setRequestBody(String requestBody) {
+        this.requestBody = requestBody;
+    }
+
+    public String getResponseBody() {
+        return this.responseBody;
+    }
+
+    public void setResponseBody(String responseBody) {
+        this.responseBody = responseBody;
+    }
 
-       public void setEndTime(Timestamp endTime) {
-               this.endTime = endTime;
-       }
+    public String getLastModifiedBy() {
+        return this.lastModifiedBy;
+    }
 
-       public String getSource() {
-               return this.source;
-       }
+    public void setLastModifiedBy(String lastModifiedBy) {
+        this.lastModifiedBy = lastModifiedBy;
+    }
 
-       public void setSource(String source) {
-               this.source = source;
-       }
-
-       public String getVnfId() {
-               return this.vnfId;
-       }
-
-       public void setVnfId(String vnfId) {
-               this.vnfId = vnfId;
-       }
-
-       public String getVnfName() {
-               return this.vnfName;
-       }
-
-       public void setVnfName(String vnfName) {
-               this.vnfName = vnfName;
-       }
-
-       public String getVnfType() {
-               return this.vnfType;
-       }
-
-       public void setVnfType(String vnfType) {
-               this.vnfType = vnfType;
-       }
-
-       public String getServiceType() {
-               return this.serviceType;
-       }
-
-       public void setServiceType(String serviceType) {
-               this.serviceType = serviceType;
-       }
-
-       public String getAicNodeClli() {
-               return this.aicNodeClli;
-       }
-
-       public void setAicNodeClli(String aicNodeClli) {
-               this.aicNodeClli = aicNodeClli;
-       }
-
-       public String getTenantId() {
-               return this.tenantId;
-       }
-
-       public void setTenantId(String tenantId) {
-               this.tenantId = tenantId;
-       }
-
-       public String getProvStatus() {
-               return this.provStatus;
-       }
-
-       public void setProvStatus(String provStatus) {
-               this.provStatus = provStatus;
-       }
-
-       public String getVnfParams() {
-               return this.vnfParams;
-       }
-
-       public void setVnfParams(String vnfParams) {
-               this.vnfParams = vnfParams;
-       }
-
-       public String getVnfOutputs() {
-               return this.vnfOutputs;
-       }
-
-       public void setVnfOutputs(String vnfOutputs) {
-               this.vnfOutputs = vnfOutputs;
-       }
-
-       public String getRequestBody() {
-               return this.requestBody;
-       }
-
-       public void setRequestBody(String requestBody) {
-               this.requestBody = requestBody;
-       }
-
-       public String getResponseBody() {
-               return this.responseBody;
-       }
-
-       public void setResponseBody(String responseBody) {
-               this.responseBody = responseBody;
-       }
+    public Date getModifyTime() {
+        return this.modifyTime;
+    }
 
-       public String getLastModifiedBy() {
-               return this.lastModifiedBy;
-       }
+    public String getRequestType() {
+        return this.requestType;
+    }
 
-       public void setLastModifiedBy(String lastModifiedBy) {
-               this.lastModifiedBy = lastModifiedBy;
-       }
+    public void setRequestType(String requestType) {
+        this.requestType = requestType;
+    }
 
-       public Date getModifyTime() {
-               return this.modifyTime;
-       }
-       
-       public String getRequestType() {
-               return this.requestType;
-       }
+    public String getVolumeGroupId() {
+        return this.volumeGroupId;
+    }
 
-       public void setRequestType(String requestType) {
-               this.requestType = requestType;
-       }
+    public void setVolumeGroupId(String volumeGroupId) {
+        this.volumeGroupId = volumeGroupId;
+    }
 
-       public String getVolumeGroupId() {
-               return this.volumeGroupId;
-       }
+    public String getVolumeGroupName() {
+        return this.volumeGroupName;
+    }
 
-       public void setVolumeGroupId(String volumeGroupId) {
-               this.volumeGroupId = volumeGroupId;
-       }
+    public void setVolumeGroupName(String volumeGroupName) {
+        this.volumeGroupName = volumeGroupName;
+    }
 
-       public String getVolumeGroupName() {
-               return this.volumeGroupName;
-       }
+    public String getVfModuleId() {
+        return this.vfModuleId;
+    }
 
-       public void setVolumeGroupName(String volumeGroupName) {
-               this.volumeGroupName = volumeGroupName;
-       }
+    public void setVfModuleId(String vfModuleId) {
+        this.vfModuleId = vfModuleId;
+    }
 
-       public String getVfModuleId() {
-               return this.vfModuleId;
-       }
+    public String getVfModuleName() {
+        return this.vfModuleName;
+    }
 
-       public void setVfModuleId(String vfModuleId) {
-               this.vfModuleId = vfModuleId;
-       }
+    public void setVfModuleName(String vfModuleName) {
+        this.vfModuleName = vfModuleName;
+    }
 
-       public String getVfModuleName() {
-               return this.vfModuleName;
-       }
+    public String getVfModuleModelName() {
+        return this.vfModuleModelName;
+    }
 
-       public void setVfModuleName(String vfModuleName) {
-               this.vfModuleName = vfModuleName;
-       }
+    public void setVfModuleModelName(String vfModuleModelName) {
+        this.vfModuleModelName = vfModuleModelName;
+    }
 
-       public String getVfModuleModelName() {
-               return this.vfModuleModelName;
-       }
+    public String getAaiServiceId() {
+        return this.aaiServiceId;
+    }
 
-       public void setVfModuleModelName(String vfModuleModelName) {
-               this.vfModuleModelName = vfModuleModelName;
-       }
+    public void setAaiServiceId(String aaiServiceId) {
+        this.aaiServiceId = aaiServiceId;
+    }
 
-       public String getAaiServiceId() {
-               return this.aaiServiceId;
-       }
+    public String getAicCloudRegion() {
+        return this.aicCloudRegion;
+    }
 
-       public void setAaiServiceId(String aaiServiceId) {
-               this.aaiServiceId = aaiServiceId;
-       }
+    public void setAicCloudRegion(String aicCloudRegion) {
+        this.aicCloudRegion = aicCloudRegion;
+    }
 
-       public String getAicCloudRegion() {
-               return this.aicCloudRegion;
-       }
+    public String getCallBackUrl() {
+        return callBackUrl;
+    }
 
-       public void setAicCloudRegion(String aicCloudRegion) {
-               this.aicCloudRegion = aicCloudRegion;
-       }
+    public void setCallBackUrl(String callBackUrl) {
+        this.callBackUrl = callBackUrl;
+    }
 
-       public String getCallBackUrl() {
-               return callBackUrl;
-       }
+    public String getCorrelator() {
+        return correlator;
+    }
 
-       public void setCallBackUrl(String callBackUrl) {
-               this.callBackUrl = callBackUrl;
-       }
+    public void setCorrelator(String correlator) {
+        this.correlator = correlator;
+    }
 
-       public String getCorrelator() {
-               return correlator;
-       }
-
-       public void setCorrelator(String correlator) {
-               this.correlator = correlator;
-       }
-
-       public String getServiceInstanceId() {
-               return serviceInstanceId;
-       }
-
-       public void setServiceInstanceId(String serviceInstanceId) {
-               this.serviceInstanceId = serviceInstanceId;
-       }
-
-       public String getServiceInstanceName() {
-               return serviceInstanceName;
-       }
-
-       public void setServiceInstanceName(String serviceInstanceName) {
-               this.serviceInstanceName = serviceInstanceName;
-       }
-
-       public String getRequestScope() {
-               return requestScope;
-       }
-
-       public void setRequestScope(String requestScope) {
-               this.requestScope = requestScope;
-       }
-
-       public String getRequestAction() {
-               return requestAction;
-       }
-
-       public void setRequestAction(String requestAction) {
-               this.requestAction = requestAction;
-       }
-
-       public String getNetworkId() {
-               return networkId;
-       }
-
-       public void setNetworkId(String networkId) {
-               this.networkId = networkId;
-       }
-
-       public String getNetworkName() {
-               return networkName;
-       }
-
-       public void setNetworkName(String networkName) {
-               this.networkName = networkName;
-       }
-
-       public String getNetworkType() {
-               return networkType;
-       }
-
-       public void setNetworkType(String networkType) {
-               this.networkType = networkType;
-       }
-
-       public String getRequestorId() {
-               return requestorId;
-       }
-
-       public void setRequestorId(String requestorId) {
-               this.requestorId = requestorId;
-       }
-
-       public String getConfigurationId() {
-               return configurationId;
-       }
-
-       public void setConfigurationId(String configurationId) {
-               this.configurationId = configurationId;
-       }
-
-       public String getConfigurationName() {
-               return configurationName;
-       }
-
-       public void setConfigurationName(String configurationName) {
-               this.configurationName = configurationName;
-       }
-
-       public String getOperationalEnvId() {
-               return operationalEnvId;
-       }
-
-       public void setOperationalEnvId(String operationalEnvId) {
-               this.operationalEnvId = operationalEnvId;
-       }
-
-       public String getOperationalEnvName() {
-               return operationalEnvName;
-       }
-
-       public void setOperationalEnvName(String operationalEnvName) {
-               this.operationalEnvName = operationalEnvName;
-       }
-       
-       @PrePersist
-       protected void onCreate() {
-               if(requestScope==null)
-                       requestScope=UNKNOWN;
-               if(requestAction==null)
-                       requestAction=UNKNOWN;
-               this.modifyTime = new Date();
-       }
-
-       @PreUpdate
-       protected void onUpdate() {
-               if(requestScope==null)
-                       requestScope=UNKNOWN;
-               if(requestAction==null)
-                       requestAction=UNKNOWN;
-               this.modifyTime = new Date();
-       }
-       
-       @Override
-       public boolean equals(final Object other) {
-               if (this == other) {
-                       return true;
-               }
-               if (!(other instanceof InfraRequests)) {
-                       return false;
-               }
-               InfraRequests castOther = (InfraRequests) other;
-               return Objects.equals(getRequestId(), castOther.getRequestId());
-       }
-       
-       @Override
-       public int hashCode() {
-               return Objects.hash(getRequestId());
-       }
-       
-       @Override
-       public String toString() {
-               return new ToStringBuilder(this).append("requestId", getRequestId())
-                               .append("clientRequestId", getClientRequestId()).append("action", getAction())
-                               .append("requestStatus", getRequestStatus()).append("statusMessage", getStatusMessage())
-                               .append("progress", getProgress()).append("startTime", getStartTime()).append("endTime", getEndTime())
-                               .append("source", getSource()).append("vnfId", getVnfId()).append("vnfName", getVnfName())
-                               .append("vnfType", getVnfType()).append("serviceType", getServiceType())
-                               .append("aicNodeClli", getAicNodeClli()).append("tenantId", getTenantId())
-                               .append("provStatus", getProvStatus()).append("vnfParams", getVnfParams())
-                               .append("vnfOutputs", getVnfOutputs()).append("requestBody", getRequestBody())
-                               .append("responseBody", getResponseBody()).append("lastModifiedBy", getLastModifiedBy())
-                               .append("modifyTime", getModifyTime()).append("requestType", getRequestType())
-                               .append("volumeGroupId", getVolumeGroupId()).append("volumeGroupName", getVolumeGroupName())
-                               .append("vfModuleId", getVfModuleId()).append("vfModuleName", getVfModuleName())
-                               .append("vfModuleModelName", getVfModuleModelName()).append("aaiServiceId", getAaiServiceId())
-                               .append("aicCloudRegion", getAicCloudRegion()).append("callBackUrl", getCallBackUrl())
-                               .append("correlator", getCorrelator()).append("serviceInstanceId", getServiceInstanceId())
-                               .append("serviceInstanceName", getServiceInstanceName()).append("requestScope", getRequestScope())
-                               .append("requestAction", getRequestAction()).append("networkId", getNetworkId())
-                               .append("networkName", getNetworkName()).append("networkType", getNetworkType())
-                               .append("requestorId", getRequestorId()).append("configurationId", getConfigurationId())
-                               .append("configurationName", getConfigurationName()).append("operationalEnvId", getOperationalEnvId())
-                               .append("operationalEnvName", getOperationalEnvName()).toString();
-       }
+    public String getServiceInstanceId() {
+        return serviceInstanceId;
+    }
+
+    public void setServiceInstanceId(String serviceInstanceId) {
+        this.serviceInstanceId = serviceInstanceId;
+    }
+
+    public String getServiceInstanceName() {
+        return serviceInstanceName;
+    }
+
+    public void setServiceInstanceName(String serviceInstanceName) {
+        this.serviceInstanceName = serviceInstanceName;
+    }
+
+    public String getRequestScope() {
+        return requestScope;
+    }
+
+    public void setRequestScope(String requestScope) {
+        this.requestScope = requestScope;
+    }
+
+    public String getRequestAction() {
+        return requestAction;
+    }
+
+    public void setRequestAction(String requestAction) {
+        this.requestAction = requestAction;
+    }
+
+    public String getNetworkId() {
+        return networkId;
+    }
+
+    public void setNetworkId(String networkId) {
+        this.networkId = networkId;
+    }
+
+    public String getNetworkName() {
+        return networkName;
+    }
+
+    public void setNetworkName(String networkName) {
+        this.networkName = networkName;
+    }
+
+    public String getNetworkType() {
+        return networkType;
+    }
+
+    public void setNetworkType(String networkType) {
+        this.networkType = networkType;
+    }
+
+    public String getRequestorId() {
+        return requestorId;
+    }
+
+    public void setRequestorId(String requestorId) {
+        this.requestorId = requestorId;
+    }
+
+    public String getConfigurationId() {
+        return configurationId;
+    }
+
+    public void setConfigurationId(String configurationId) {
+        this.configurationId = configurationId;
+    }
+
+    public String getConfigurationName() {
+        return configurationName;
+    }
+
+    public void setConfigurationName(String configurationName) {
+        this.configurationName = configurationName;
+    }
+
+    public String getOperationalEnvId() {
+        return operationalEnvId;
+    }
+
+    public void setOperationalEnvId(String operationalEnvId) {
+        this.operationalEnvId = operationalEnvId;
+    }
+
+    public String getOperationalEnvName() {
+        return operationalEnvName;
+    }
+
+    public void setOperationalEnvName(String operationalEnvName) {
+        this.operationalEnvName = operationalEnvName;
+    }
+
+    @PrePersist
+    protected void onCreate() {
+        if (requestScope == null)
+            requestScope = UNKNOWN;
+        if (requestAction == null)
+            requestAction = UNKNOWN;
+        this.modifyTime = new Date();
+    }
+
+    @PreUpdate
+    protected void onUpdate() {
+        if (requestScope == null)
+            requestScope = UNKNOWN;
+        if (requestAction == null)
+            requestAction = UNKNOWN;
+        this.modifyTime = new Date();
+    }
+
+    @Override
+    public boolean equals(final Object other) {
+        if (this == other) {
+            return true;
+        }
+        if (!(other instanceof InfraRequests)) {
+            return false;
+        }
+        InfraRequests castOther = (InfraRequests) other;
+        return Objects.equals(getRequestId(), castOther.getRequestId());
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(getRequestId());
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this).append("requestId", getRequestId())
+                .append("clientRequestId", getClientRequestId()).append("action", getAction())
+                .append("requestStatus", getRequestStatus()).append("statusMessage", getStatusMessage())
+                .append("progress", getProgress()).append("startTime", getStartTime()).append("endTime", getEndTime())
+                .append("source", getSource()).append("vnfId", getVnfId()).append("vnfName", getVnfName())
+                .append("vnfType", getVnfType()).append("serviceType", getServiceType())
+                .append("aicNodeClli", getAicNodeClli()).append("tenantId", getTenantId())
+                .append("provStatus", getProvStatus()).append("vnfParams", getVnfParams())
+                .append("vnfOutputs", getVnfOutputs()).append("requestBody", getRequestBody())
+                .append("responseBody", getResponseBody()).append("lastModifiedBy", getLastModifiedBy())
+                .append("modifyTime", getModifyTime()).append("requestType", getRequestType())
+                .append("volumeGroupId", getVolumeGroupId()).append("volumeGroupName", getVolumeGroupName())
+                .append("vfModuleId", getVfModuleId()).append("vfModuleName", getVfModuleName())
+                .append("vfModuleModelName", getVfModuleModelName()).append("aaiServiceId", getAaiServiceId())
+                .append("aicCloudRegion", getAicCloudRegion()).append("callBackUrl", getCallBackUrl())
+                .append("correlator", getCorrelator()).append("serviceInstanceId", getServiceInstanceId())
+                .append("serviceInstanceName", getServiceInstanceName()).append("requestScope", getRequestScope())
+                .append("requestAction", getRequestAction()).append("networkId", getNetworkId())
+                .append("networkName", getNetworkName()).append("networkType", getNetworkType())
+                .append("requestorId", getRequestorId()).append("configurationId", getConfigurationId())
+                .append("configurationName", getConfigurationName()).append("operationalEnvId", getOperationalEnvId())
+                .append("operationalEnvName", getOperationalEnvName()).toString();
+    }
 }
index ba237bf..570861d 100644 (file)
@@ -30,28 +30,31 @@ import org.springframework.stereotype.Repository;
 @Repository
 public interface InfraActiveRequestsRepositoryCustom {
 
-       public boolean healthCheck();
+    public boolean healthCheck();
 
-       public InfraActiveRequests getRequestFromInfraActive(String requestId);
+    public InfraActiveRequests getRequestFromInfraActive(String requestId);
 
-       public InfraActiveRequests checkInstanceNameDuplicate(HashMap<String, String> instanceIdMap, String instanceName,
-                       String requestScope);
+    public InfraActiveRequests checkInstanceNameDuplicate(HashMap<String, String> instanceIdMap, String instanceName,
+            String requestScope);
 
-       public List<InfraActiveRequests> getOrchestrationFiltersFromInfraActive(Map<String, List<String>> orchestrationMap);
+    public List<InfraActiveRequests> getOrchestrationFiltersFromInfraActive(Map<String, List<String>> orchestrationMap);
 
-       // Added this method for Tenant Isolation project ( 1802-295491a) to query the mso_requests DB 
-       // (infra_active_requests table) for operationalEnvId and OperationalEnvName
-       public List<InfraActiveRequests> getCloudOrchestrationFiltersFromInfraActive(Map<String, String> orchestrationMap);
+    // Added this method for Tenant Isolation project ( 1802-295491a) to query the mso_requests DB
+    // (infra_active_requests table) for operationalEnvId and OperationalEnvName
+    public List<InfraActiveRequests> getCloudOrchestrationFiltersFromInfraActive(Map<String, String> orchestrationMap);
 
-       public List<InfraActiveRequests> getRequestListFromInfraActive(String queryAttributeName, String queryValue,
-                       String requestType);
+    public List<InfraActiveRequests> getRequestListFromInfraActive(String queryAttributeName, String queryValue,
+            String requestType);
 
-       public InfraActiveRequests getRequestFromInfraActive(String requestId, String requestType);
+    public InfraActiveRequests getRequestFromInfraActive(String requestId, String requestType);
 
-       public InfraActiveRequests checkDuplicateByVnfName(String vnfName, String action, String requestType);
+    public InfraActiveRequests checkDuplicateByVnfName(String vnfName, String action, String requestType);
 
-       public InfraActiveRequests checkDuplicateByVnfId(String vnfId, String action, String requestType);
+    public InfraActiveRequests checkDuplicateByVnfId(String vnfId, String action, String requestType);
+
+    public InfraActiveRequests checkVnfIdStatus(String operationalEnvironmentId);
+
+    List<InfraActiveRequests> getInfraActiveRequests(final Map<String, String[]> filters, final long startTime,
+            final long endTime, final Integer maxResult);
 
-       public InfraActiveRequests checkVnfIdStatus(String operationalEnvironmentId);
-       
 }
index 3240972..d66e378 100644 (file)
@@ -25,11 +25,13 @@ import java.sql.Timestamp;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.concurrent.TimeUnit;
 
 import javax.persistence.EntityManager;
@@ -43,13 +45,9 @@ import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 
 import org.onap.so.db.request.beans.InfraActiveRequests;
-import org.onap.so.db.request.beans.OperationStatus;
-import org.onap.so.db.request.beans.ResourceOperationStatus;
 import org.onap.so.logger.MsoLogger;
-import org.onap.so.requestsdb.RequestsDbConstant;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.data.domain.Example;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -58,509 +56,563 @@ import org.springframework.transaction.annotation.Transactional;
 @Transactional(readOnly = true)
 public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRepositoryCustom {
 
-       @Qualifier("requestEntityManagerFactory")
-       @Autowired      
-       private EntityManager entityManager;
-    
-    protected static MsoLogger msoLogger = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL, InfraActiveRequestsRepositoryImpl.class);
-    
-    protected static final String         SOURCE                     = "source";
-    protected static final String         START_TIME                 = "startTime";
-    protected static final String         REQUEST_TYPE               = "requestType";
-    protected static final String         SERVICE_INSTANCE_ID        = "serviceInstanceId";
-    protected static final String         SERVICE_INSTANCE_NAME      = "serviceInstanceName";
-    protected static final String         VNF_INSTANCE_NAME          = "vnfName";
-    protected static final String         VNF_INSTANCE_ID            = "vnfId";
-    protected static final String         VOLUME_GROUP_INSTANCE_NAME = "volumeGroupName";
-    protected static final String         VOLUME_GROUP_INSTANCE_ID   = "volumeGroupId";
-    protected static final String         VFMODULE_INSTANCE_NAME     = "vfModuleName";
-    protected static final String         VFMODULE_INSTANCE_ID       = "vfModuleId";
-    protected static final String         NETWORK_INSTANCE_NAME      = "networkName";
-    protected static final String                CONFIGURATION_INSTANCE_ID  = "configurationId";
-    protected static final String                CONFIGURATION_INSTANCE_NAME= "configurationName";
-    protected static final String                OPERATIONAL_ENV_ID             = "operationalEnvId";
-    protected static final String                OPERATIONAL_ENV_NAME           = "operationalEnvName";
-    protected static final String         NETWORK_INSTANCE_ID        = "networkId";
-    protected static final String         GLOBAL_SUBSCRIBER_ID       = "globalSubscriberId";
-    protected static final String         SERVICE_NAME_VERSION_ID    = "serviceNameVersionId";
-    protected static final String         SERVICE_ID                 = "serviceId";
-    protected static final String         SERVICE_VERSION            = "serviceVersion";
-    protected static final String         REQUEST_ID                 = "requestId";
-    protected static final String         REQUESTOR_ID               = "requestorId";
-    
-    @Autowired
-    private OperationStatusRepository operationStatusRepository;
-
 
-    /* (non-Javadoc)
-        * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#healthCheck()
-        */
+    @Qualifier("requestEntityManagerFactory")
+    @Autowired
+    private EntityManager entityManager;
+
+    protected static MsoLogger msoLogger =
+            MsoLogger.getMsoLogger(MsoLogger.Catalog.GENERAL, InfraActiveRequestsRepositoryImpl.class);
+
+    protected static final String REQUEST_STATUS = "requestStatus";
+    protected static final String SOURCE = "source";
+    protected static final String START_TIME = "startTime";
+    protected static final String END_TIME = "endTime";
+    protected static final String REQUEST_TYPE = "requestType";
+    protected static final String SERVICE_INSTANCE_ID = "serviceInstanceId";
+    protected static final String SERVICE_INSTANCE_NAME = "serviceInstanceName";
+    protected static final String VNF_INSTANCE_NAME = "vnfName";
+    protected static final String VNF_INSTANCE_ID = "vnfId";
+    protected static final String VOLUME_GROUP_INSTANCE_NAME = "volumeGroupName";
+    protected static final String VOLUME_GROUP_INSTANCE_ID = "volumeGroupId";
+    protected static final String VFMODULE_INSTANCE_NAME = "vfModuleName";
+    protected static final String VFMODULE_INSTANCE_ID = "vfModuleId";
+    protected static final String NETWORK_INSTANCE_NAME = "networkName";
+    protected static final String CONFIGURATION_INSTANCE_ID = "configurationId";
+    protected static final String CONFIGURATION_INSTANCE_NAME = "configurationName";
+    protected static final String OPERATIONAL_ENV_ID = "operationalEnvId";
+    protected static final String OPERATIONAL_ENV_NAME = "operationalEnvName";
+    protected static final String NETWORK_INSTANCE_ID = "networkId";
+    protected static final String GLOBAL_SUBSCRIBER_ID = "globalSubscriberId";
+    protected static final String SERVICE_NAME_VERSION_ID = "serviceNameVersionId";
+    protected static final String SERVICE_ID = "serviceId";
+    protected static final String SERVICE_VERSION = "serviceVersion";
+    protected static final String REQUEST_ID = "requestId";
+    protected static final String REQUESTOR_ID = "requestorId";
+    protected static final String ACTION = "action";
+
+    private static final List<String> VALID_COLUMNS =
+            Arrays.asList(REQUEST_ID, SERVICE_INSTANCE_ID, SERVICE_INSTANCE_NAME, ACTION, REQUEST_STATUS);
+
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#healthCheck()
+     */
     @Override
-       public boolean healthCheck () {
-       
-       Query query = entityManager.createNativeQuery(" show tables ");
+    public boolean healthCheck() {
+
+        final Query query = entityManager.createNativeQuery(" show tables ");
 
-        List<?> list = query.getResultList();
+        final List<?> list = query.getResultList();
 
         return true;
     }
 
-    private List<InfraActiveRequests> executeInfraQuery (CriteriaQuery<InfraActiveRequests> crit, List <Predicate> predicates, Order order) {
+    private List<InfraActiveRequests> executeInfraQuery(final CriteriaQuery<InfraActiveRequests> crit,
+            final List<Predicate> predicates, final Order order) {
+
+        final long startTime = System.currentTimeMillis();
+        msoLogger.debug("Execute query on infra active request table");
 
-        long startTime = System.currentTimeMillis ();
-        msoLogger.debug ("Execute query on infra active request table");
-        
-        List <InfraActiveRequests> results = new ArrayList<InfraActiveRequests>();
+        List<InfraActiveRequests> results = new ArrayList<InfraActiveRequests>();
 
         try {
-            CriteriaBuilder cb = entityManager.getCriteriaBuilder();
-                       crit.where(cb.and(predicates.toArray(new Predicate[0])));
+            final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
+            crit.where(cb.and(predicates.toArray(new Predicate[0])));
             crit.orderBy(order);
             results = entityManager.createQuery(crit).getResultList();
 
         } finally {
-            msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "RequestDB", "getInfraActiveRequest", null);
+            msoLogger.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
+                    "Successfully", "RequestDB", "getInfraActiveRequest", null);
         }
         return results;
     }
-    
-    /* (non-Javadoc)
-        * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getRequestFromInfraActive(java.lang.String)
-        */
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getRequestFromInfraActive(java.
+     * lang.String)
+     */
     @Override
-       public InfraActiveRequests getRequestFromInfraActive (String requestId) {
-        long startTime = System.currentTimeMillis ();
-        msoLogger.debug ("Get request " + requestId + " from InfraActiveRequests DB");
+    public InfraActiveRequests getRequestFromInfraActive(final String requestId) {
+        final long startTime = System.currentTimeMillis();
+        msoLogger.debug("Get request " + requestId + " from InfraActiveRequests DB");
 
         InfraActiveRequests ar = null;
         try {
-            Query query = entityManager.createQuery ("from InfraActiveRequests where requestId = :requestId OR clientRequestId = :requestId");
-            query.setParameter (REQUEST_ID, requestId);
+            final Query query = entityManager.createQuery(
+                    "from InfraActiveRequests where requestId = :requestId OR clientRequestId = :requestId");
+            query.setParameter(REQUEST_ID, requestId);
             ar = this.getSingleResult(query);
         } finally {
-         
-            msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "InfraRequestDB", "getRequestFromInfraActive", null);
+
+            msoLogger.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
+                    "Successfully", "InfraRequestDB", "getRequestFromInfraActive", null);
         }
         return ar;
     }
-    
-    /* (non-Javadoc)
-        * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkInstanceNameDuplicate(java.util.HashMap, java.lang.String, java.lang.String)
-        */
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkInstanceNameDuplicate(java.
+     * util.HashMap, java.lang.String, java.lang.String)
+     */
     @Override
-       public InfraActiveRequests checkInstanceNameDuplicate (HashMap<String,String> instanceIdMap, String instanceName, String requestScope) {
-
-       List <Predicate> predicates = new LinkedList <> ();
-       CriteriaBuilder cb = entityManager.getCriteriaBuilder();
-               CriteriaQuery<InfraActiveRequests> crit = cb.createQuery(InfraActiveRequests.class);
-               Root<InfraActiveRequests> tableRoot = crit.from(InfraActiveRequests.class);
-               
-        if(instanceName != null && !instanceName.equals("")) {
-               
-               if("service".equals(requestScope)){
-                       predicates.add (cb.equal(tableRoot.get(SERVICE_INSTANCE_NAME), instanceName));
-               } else if("vnf".equals(requestScope)){
-                       predicates.add (cb.equal(tableRoot.get(VNF_INSTANCE_NAME), instanceName));
-               } else if("volumeGroup".equals(requestScope)){
-                       predicates.add (cb.equal(tableRoot.get(VOLUME_GROUP_INSTANCE_NAME), instanceName));
-               } else if("vfModule".equals(requestScope)){
-                       predicates.add (cb.equal(tableRoot.get(VFMODULE_INSTANCE_NAME), instanceName));
-               } else if("network".equals(requestScope)){
-                       predicates.add (cb.equal(tableRoot.get(NETWORK_INSTANCE_NAME), instanceName));
-               } else if(requestScope.equals("configuration")) {
-                       predicates.add (cb.equal(tableRoot.get(CONFIGURATION_INSTANCE_NAME), instanceName));
-               } else if(requestScope.equals("operationalEnvironment")) {
-                       predicates.add (cb.equal(tableRoot.get(OPERATIONAL_ENV_NAME), instanceName));
-               }
-        
+    public InfraActiveRequests checkInstanceNameDuplicate(final HashMap<String, String> instanceIdMap,
+            final String instanceName, final String requestScope) {
+
+        final List<Predicate> predicates = new LinkedList<>();
+        final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
+        final CriteriaQuery<InfraActiveRequests> crit = cb.createQuery(InfraActiveRequests.class);
+        final Root<InfraActiveRequests> tableRoot = crit.from(InfraActiveRequests.class);
+
+        if (instanceName != null && !instanceName.equals("")) {
+
+            if ("service".equals(requestScope)) {
+                predicates.add(cb.equal(tableRoot.get(SERVICE_INSTANCE_NAME), instanceName));
+            } else if ("vnf".equals(requestScope)) {
+                predicates.add(cb.equal(tableRoot.get(VNF_INSTANCE_NAME), instanceName));
+            } else if ("volumeGroup".equals(requestScope)) {
+                predicates.add(cb.equal(tableRoot.get(VOLUME_GROUP_INSTANCE_NAME), instanceName));
+            } else if ("vfModule".equals(requestScope)) {
+                predicates.add(cb.equal(tableRoot.get(VFMODULE_INSTANCE_NAME), instanceName));
+            } else if ("network".equals(requestScope)) {
+                predicates.add(cb.equal(tableRoot.get(NETWORK_INSTANCE_NAME), instanceName));
+            } else if (requestScope.equals("configuration")) {
+                predicates.add(cb.equal(tableRoot.get(CONFIGURATION_INSTANCE_NAME), instanceName));
+            } else if (requestScope.equals("operationalEnvironment")) {
+                predicates.add(cb.equal(tableRoot.get(OPERATIONAL_ENV_NAME), instanceName));
+            }
+
         } else {
-            if(instanceIdMap != null){
-               if("service".equals(requestScope) && instanceIdMap.get("serviceInstanceId") != null){
-                       predicates.add (cb.equal(tableRoot.get(SERVICE_INSTANCE_ID), instanceIdMap.get("serviceInstanceId")));
-               }
-            
-               if("vnf".equals(requestScope) && instanceIdMap.get("vnfInstanceId") != null){
-                       predicates.add (cb.equal(tableRoot.get(VNF_INSTANCE_ID), instanceIdMap.get("vnfInstanceId" )));
-               }
-            
-               if("vfModule".equals(requestScope) && instanceIdMap.get("vfModuleInstanceId") != null){
-                       predicates.add (cb.equal(tableRoot.get(VFMODULE_INSTANCE_ID), instanceIdMap.get("vfModuleInstanceId")));
-               }
-            
-               if("volumeGroup".equals(requestScope) && instanceIdMap.get("volumeGroupInstanceId") != null){
-                       predicates.add (cb.equal(tableRoot.get(VOLUME_GROUP_INSTANCE_ID), instanceIdMap.get("volumeGroupInstanceId")));
-               }
-            
-               if("network".equals(requestScope) && instanceIdMap.get("networkInstanceId") != null){
-                       predicates.add (cb.equal(tableRoot.get(NETWORK_INSTANCE_ID), instanceIdMap.get("networkInstanceId")));
-               }
-               
-               if(requestScope.equals("configuration") && instanceIdMap.get("configurationInstanceId") != null){
-                       predicates.add (cb.equal(tableRoot.get(CONFIGURATION_INSTANCE_ID), instanceIdMap.get("configurationInstanceId")));
-               }
-               
-               if(requestScope.equals("operationalEnvironment") && instanceIdMap.get("operationalEnvironmentId") != null) {
-                       predicates.add (cb.equal(tableRoot.get(OPERATIONAL_ENV_ID), instanceIdMap.get("operationalEnvironmentId")));
-               }
+            if (instanceIdMap != null) {
+                if ("service".equals(requestScope) && instanceIdMap.get("serviceInstanceId") != null) {
+                    predicates
+                            .add(cb.equal(tableRoot.get(SERVICE_INSTANCE_ID), instanceIdMap.get("serviceInstanceId")));
+                }
+
+                if ("vnf".equals(requestScope) && instanceIdMap.get("vnfInstanceId") != null) {
+                    predicates.add(cb.equal(tableRoot.get(VNF_INSTANCE_ID), instanceIdMap.get("vnfInstanceId")));
+                }
+
+                if ("vfModule".equals(requestScope) && instanceIdMap.get("vfModuleInstanceId") != null) {
+                    predicates.add(
+                            cb.equal(tableRoot.get(VFMODULE_INSTANCE_ID), instanceIdMap.get("vfModuleInstanceId")));
+                }
+
+                if ("volumeGroup".equals(requestScope) && instanceIdMap.get("volumeGroupInstanceId") != null) {
+                    predicates.add(cb.equal(tableRoot.get(VOLUME_GROUP_INSTANCE_ID),
+                            instanceIdMap.get("volumeGroupInstanceId")));
+                }
+
+                if ("network".equals(requestScope) && instanceIdMap.get("networkInstanceId") != null) {
+                    predicates
+                            .add(cb.equal(tableRoot.get(NETWORK_INSTANCE_ID), instanceIdMap.get("networkInstanceId")));
+                }
+
+                if (requestScope.equals("configuration") && instanceIdMap.get("configurationInstanceId") != null) {
+                    predicates.add(cb.equal(tableRoot.get(CONFIGURATION_INSTANCE_ID),
+                            instanceIdMap.get("configurationInstanceId")));
+                }
+
+                if (requestScope.equals("operationalEnvironment")
+                        && instanceIdMap.get("operationalEnvironmentId") != null) {
+                    predicates.add(
+                            cb.equal(tableRoot.get(OPERATIONAL_ENV_ID), instanceIdMap.get("operationalEnvironmentId")));
+                }
             }
         }
-        
-        predicates.add (tableRoot.get("requestStatus").in(Arrays.asList("PENDING", "IN_PROGRESS", "TIMEOUT", "PENDING_MANUAL_TASK")));
-        
-        Order order = cb.desc(tableRoot.get(START_TIME));
-        
-        List<InfraActiveRequests> dupList = executeInfraQuery(crit, predicates, order);
-        
+
+        predicates.add(tableRoot.get(REQUEST_STATUS)
+                .in(Arrays.asList("PENDING", "IN_PROGRESS", "TIMEOUT", "PENDING_MANUAL_TASK")));
+
+        final Order order = cb.desc(tableRoot.get(START_TIME));
+
+        final List<InfraActiveRequests> dupList = executeInfraQuery(crit, predicates, order);
+
         InfraActiveRequests infraActiveRequests = null;
-        
-        if(dupList != null && !dupList.isEmpty()){
-               infraActiveRequests = dupList.get(0);
+
+        if (dupList != null && !dupList.isEmpty()) {
+            infraActiveRequests = dupList.get(0);
         }
-               
-        return infraActiveRequests; 
+
+        return infraActiveRequests;
     }
-      
-    /* (non-Javadoc)
-        * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getOrchestrationFiltersFromInfraActive(java.util.Map)
-        */
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#
+     * getOrchestrationFiltersFromInfraActive(java.util.Map)
+     */
     @Override
-       public List<InfraActiveRequests> getOrchestrationFiltersFromInfraActive (Map<String, List<String>> orchestrationMap) {
-        
-       
-       List <Predicate> predicates = new LinkedList <> ();
-       CriteriaBuilder cb = entityManager.getCriteriaBuilder();
-               CriteriaQuery<InfraActiveRequests> crit = cb.createQuery(InfraActiveRequests.class);
-               Root<InfraActiveRequests> tableRoot = crit.from(InfraActiveRequests.class);
-       for (Map.Entry<String, List<String>> entry : orchestrationMap.entrySet())
-       {
-               String mapKey = entry.getKey();
-               if("serviceInstanceId".equalsIgnoreCase(mapKey)) {
-                       mapKey = "serviceInstanceId";
-               } else if("serviceInstanceName".equalsIgnoreCase(mapKey)) {
-                       mapKey = "serviceInstanceName";
-               } else if("vnfInstanceId".equalsIgnoreCase(mapKey)){
-               mapKey = "vnfId";
-           } else if("vnfInstanceName".equalsIgnoreCase(mapKey)) {
-               mapKey = "vnfName";
-           } else if("vfModuleInstanceId".equalsIgnoreCase(mapKey)) {
-               mapKey = "vfModuleId";
-           } else if("vfModuleInstanceName".equalsIgnoreCase(mapKey)) {
-               mapKey = "vfModuleName";
-           } else if("volumeGroupInstanceId".equalsIgnoreCase(mapKey)) {
-               mapKey = "volumeGroupId";
-           } else if("volumeGroupInstanceName".equalsIgnoreCase(mapKey)) {
-               mapKey = "volumeGroupName";
-           } else if("networkInstanceId".equalsIgnoreCase(mapKey)) {
-               mapKey = "networkId";
-           } else if("networkInstanceName".equalsIgnoreCase(mapKey)) {
-               mapKey = "networkName";
-           } else if(mapKey.equalsIgnoreCase("configurationInstanceId")) {             
-               mapKey = "configurationId";
-           } else if(mapKey.equalsIgnoreCase("configurationInstanceName")) {                   
-               mapKey = "configurationName";
-           } else if("lcpCloudRegionId".equalsIgnoreCase(mapKey)) {
-               mapKey = "aicCloudRegion";
-           } else if("tenantId".equalsIgnoreCase(mapKey)) {
-               mapKey = "tenantId";
-           } else if("modelType".equalsIgnoreCase(mapKey)) {
-               mapKey = "requestScope";
-           } else if("requestorId".equalsIgnoreCase(mapKey)) {
-               mapKey = "requestorId";
-           } else if("requestExecutionDate".equalsIgnoreCase(mapKey)) {
-               mapKey = "startTime";
-           }
-           
-               String propertyValue = entry.getValue().get(1);
-               if ("startTime".equals(mapKey)) {
-                       SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy");                   
-                       try {
-                       Date thisDate = format.parse(propertyValue);
-                       Timestamp minTime = new Timestamp(thisDate.getTime());                  
-                       Timestamp maxTime = new Timestamp(thisDate.getTime() + TimeUnit.DAYS.toMillis(1));
-                       
-                       if("DOES_NOT_EQUAL".equalsIgnoreCase(entry.getValue().get(0))) {
-                               predicates.add(cb.or(cb.lessThan(tableRoot.get(mapKey), minTime), cb.greaterThanOrEqualTo(tableRoot.get(mapKey), maxTime)));    
-                               } else {                                        
-                                       predicates.add(cb.between(tableRoot.get(mapKey), minTime, maxTime));                                            
-                               }    
-                       }
-                       catch (Exception e){
-                               msoLogger.debug("Exception in getOrchestrationFiltersFromInfraActive(): + " + e.getMessage(), e);
-                               return null;
-                       }
-               }
-               else if("DOES_NOT_EQUAL".equalsIgnoreCase(entry.getValue().get(0))) {
-                       predicates.add(cb.notEqual(tableRoot.get(mapKey), propertyValue));
-               } else {
-                       predicates.add(cb.equal(tableRoot.get(mapKey), propertyValue));
-               }
-           
-       }
-       
-         Order order = cb.asc(tableRoot.get(START_TIME));
-
-        return executeInfraQuery (crit, predicates, order);
+    public List<InfraActiveRequests> getOrchestrationFiltersFromInfraActive(
+            final Map<String, List<String>> orchestrationMap) {
+
+
+        final List<Predicate> predicates = new LinkedList<>();
+        final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
+        final CriteriaQuery<InfraActiveRequests> crit = cb.createQuery(InfraActiveRequests.class);
+        final Root<InfraActiveRequests> tableRoot = crit.from(InfraActiveRequests.class);
+        for (final Map.Entry<String, List<String>> entry : orchestrationMap.entrySet()) {
+            String mapKey = entry.getKey();
+            if ("serviceInstanceId".equalsIgnoreCase(mapKey)) {
+                mapKey = "serviceInstanceId";
+            } else if ("serviceInstanceName".equalsIgnoreCase(mapKey)) {
+                mapKey = "serviceInstanceName";
+            } else if ("vnfInstanceId".equalsIgnoreCase(mapKey)) {
+                mapKey = "vnfId";
+            } else if ("vnfInstanceName".equalsIgnoreCase(mapKey)) {
+                mapKey = "vnfName";
+            } else if ("vfModuleInstanceId".equalsIgnoreCase(mapKey)) {
+                mapKey = "vfModuleId";
+            } else if ("vfModuleInstanceName".equalsIgnoreCase(mapKey)) {
+                mapKey = "vfModuleName";
+            } else if ("volumeGroupInstanceId".equalsIgnoreCase(mapKey)) {
+                mapKey = "volumeGroupId";
+            } else if ("volumeGroupInstanceName".equalsIgnoreCase(mapKey)) {
+                mapKey = "volumeGroupName";
+            } else if ("networkInstanceId".equalsIgnoreCase(mapKey)) {
+                mapKey = "networkId";
+            } else if ("networkInstanceName".equalsIgnoreCase(mapKey)) {
+                mapKey = "networkName";
+            } else if (mapKey.equalsIgnoreCase("configurationInstanceId")) {
+                mapKey = "configurationId";
+            } else if (mapKey.equalsIgnoreCase("configurationInstanceName")) {
+                mapKey = "configurationName";
+            } else if ("lcpCloudRegionId".equalsIgnoreCase(mapKey)) {
+                mapKey = "aicCloudRegion";
+            } else if ("tenantId".equalsIgnoreCase(mapKey)) {
+                mapKey = "tenantId";
+            } else if ("modelType".equalsIgnoreCase(mapKey)) {
+                mapKey = "requestScope";
+            } else if ("requestorId".equalsIgnoreCase(mapKey)) {
+                mapKey = "requestorId";
+            } else if ("requestExecutionDate".equalsIgnoreCase(mapKey)) {
+                mapKey = "startTime";
+            }
+
+            final String propertyValue = entry.getValue().get(1);
+            if ("startTime".equals(mapKey)) {
+                final SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy");
+                try {
+                    final Date thisDate = format.parse(propertyValue);
+                    final Timestamp minTime = new Timestamp(thisDate.getTime());
+                    final Timestamp maxTime = new Timestamp(thisDate.getTime() + TimeUnit.DAYS.toMillis(1));
+
+                    if ("DOES_NOT_EQUAL".equalsIgnoreCase(entry.getValue().get(0))) {
+                        predicates.add(cb.or(cb.lessThan(tableRoot.get(mapKey), minTime),
+                                cb.greaterThanOrEqualTo(tableRoot.get(mapKey), maxTime)));
+                    } else {
+                        predicates.add(cb.between(tableRoot.get(mapKey), minTime, maxTime));
+                    }
+                } catch (final Exception e) {
+                    msoLogger.debug("Exception in getOrchestrationFiltersFromInfraActive(): + " + e.getMessage(), e);
+                    return null;
+                }
+            } else if ("DOES_NOT_EQUAL".equalsIgnoreCase(entry.getValue().get(0))) {
+                predicates.add(cb.notEqual(tableRoot.get(mapKey), propertyValue));
+            } else {
+                predicates.add(cb.equal(tableRoot.get(mapKey), propertyValue));
+            }
+
+        }
+
+        final Order order = cb.asc(tableRoot.get(START_TIME));
+
+        return executeInfraQuery(crit, predicates, order);
     }
 
-    // Added this method for Tenant Isolation project ( 1802-295491a) to query the mso_requests DB 
+    // Added this method for Tenant Isolation project ( 1802-295491a) to query the mso_requests DB
     // (infra_active_requests table) for operationalEnvId and OperationalEnvName
-    /* (non-Javadoc)
-        * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getCloudOrchestrationFiltersFromInfraActive(java.util.Map)
-        */
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#
+     * getCloudOrchestrationFiltersFromInfraActive(java.util.Map)
+     */
     @Override
-       public List<InfraActiveRequests> getCloudOrchestrationFiltersFromInfraActive (Map<String, String> orchestrationMap) {
-       List <Predicate> predicates = new LinkedList <> ();
-       CriteriaBuilder cb = entityManager.getCriteriaBuilder();
-               CriteriaQuery<InfraActiveRequests> crit = cb.createQuery(InfraActiveRequests.class);
-               Root<InfraActiveRequests> tableRoot = crit.from(InfraActiveRequests.class);
-       
-       // Add criteria on OperationalEnvironment RequestScope when requestorId is only specified in the filter
-       // as the same requestorId can also match on different API methods
-       String resourceType = orchestrationMap.get("resourceType");
-       if(resourceType == null) {
-               predicates.add(cb.equal(tableRoot.get("requestScope"), "operationalEnvironment"));
-       }
-       
-       for (Map.Entry<String, String> entry : orchestrationMap.entrySet()) {
-               String mapKey = entry.getKey();
-               if(mapKey.equalsIgnoreCase("requestorId")) {
-               mapKey = "requestorId";
-           } else if(mapKey.equalsIgnoreCase("requestExecutionDate")) {                
-               mapKey = "startTime";
-           } else if(mapKey.equalsIgnoreCase("operationalEnvironmentId")) {                    
-               mapKey = "operationalEnvId";
-           } else if(mapKey.equalsIgnoreCase("operationalEnvironmentName")) {                  
-               mapKey = "operationalEnvName";
-           } else if(mapKey.equalsIgnoreCase("resourceType")) {                
-               mapKey = "requestScope";
-           }
-           
-               String propertyValue = entry.getValue();
-               if (mapKey.equals("startTime")) {                       
-                       SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy");                   
-                       try {
-                       Date thisDate = format.parse(propertyValue);
-                       Timestamp minTime = new Timestamp(thisDate.getTime());                  
-                       Timestamp maxTime = new Timestamp(thisDate.getTime() + TimeUnit.DAYS.toMillis(1));
-                       
-                               predicates.add(cb.between(tableRoot.get(mapKey), minTime, maxTime));                                            
-                       }
-                       catch (Exception e){
-                               msoLogger.debug("Exception in getCloudOrchestrationFiltersFromInfraActive(): + " + e.getMessage());
-                               return null;
-                       }
-               } else {
-                       predicates.add(cb.equal(tableRoot.get(mapKey), propertyValue));
-               }
-       }
-       
-         Order order = cb.asc(tableRoot.get(START_TIME));
-         return executeInfraQuery (crit, predicates, order);
+    public List<InfraActiveRequests> getCloudOrchestrationFiltersFromInfraActive(
+            final Map<String, String> orchestrationMap) {
+        final List<Predicate> predicates = new LinkedList<>();
+        final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
+        final CriteriaQuery<InfraActiveRequests> crit = cb.createQuery(InfraActiveRequests.class);
+        final Root<InfraActiveRequests> tableRoot = crit.from(InfraActiveRequests.class);
+
+        // Add criteria on OperationalEnvironment RequestScope when requestorId is only specified in
+        // the filter
+        // as the same requestorId can also match on different API methods
+        final String resourceType = orchestrationMap.get("resourceType");
+        if (resourceType == null) {
+            predicates.add(cb.equal(tableRoot.get("requestScope"), "operationalEnvironment"));
+        }
+
+        for (final Map.Entry<String, String> entry : orchestrationMap.entrySet()) {
+            String mapKey = entry.getKey();
+            if (mapKey.equalsIgnoreCase("requestorId")) {
+                mapKey = "requestorId";
+            } else if (mapKey.equalsIgnoreCase("requestExecutionDate")) {
+                mapKey = "startTime";
+            } else if (mapKey.equalsIgnoreCase("operationalEnvironmentId")) {
+                mapKey = "operationalEnvId";
+            } else if (mapKey.equalsIgnoreCase("operationalEnvironmentName")) {
+                mapKey = "operationalEnvName";
+            } else if (mapKey.equalsIgnoreCase("resourceType")) {
+                mapKey = "requestScope";
+            }
+
+            final String propertyValue = entry.getValue();
+            if (mapKey.equals("startTime")) {
+                final SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy");
+                try {
+                    final Date thisDate = format.parse(propertyValue);
+                    final Timestamp minTime = new Timestamp(thisDate.getTime());
+                    final Timestamp maxTime = new Timestamp(thisDate.getTime() + TimeUnit.DAYS.toMillis(1));
+
+                    predicates.add(cb.between(tableRoot.get(mapKey), minTime, maxTime));
+                } catch (final Exception e) {
+                    msoLogger.debug("Exception in getCloudOrchestrationFiltersFromInfraActive(): + " + e.getMessage());
+                    return null;
+                }
+            } else {
+                predicates.add(cb.equal(tableRoot.get(mapKey), propertyValue));
+            }
+        }
+
+        final Order order = cb.asc(tableRoot.get(START_TIME));
+        return executeInfraQuery(crit, predicates, order);
     }
 
-    /* (non-Javadoc)
-        * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getRequestListFromInfraActive(java.lang.String, java.lang.String, java.lang.String)
-        */
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getRequestListFromInfraActive(java
+     * .lang.String, java.lang.String, java.lang.String)
+     */
     @Override
-       public List <InfraActiveRequests> getRequestListFromInfraActive (String queryAttributeName,
-                                                                            String queryValue,
-                                                                            String requestType) {
-        msoLogger.debug ("Get list of infra requests from DB with " + queryAttributeName + " = " + queryValue);
+    public List<InfraActiveRequests> getRequestListFromInfraActive(final String queryAttributeName,
+            final String queryValue, final String requestType) {
+        msoLogger.debug("Get list of infra requests from DB with " + queryAttributeName + " = " + queryValue);
+
 
-        
         try {
-                       CriteriaBuilder cb = entityManager.getCriteriaBuilder();
-            CriteriaQuery<InfraActiveRequests> crit = cb.createQuery(InfraActiveRequests.class);
-                       Root<InfraActiveRequests> candidateRoot = crit.from(InfraActiveRequests.class);
-                       Predicate isEqual = cb.equal(candidateRoot.get(queryAttributeName), queryValue);
-                       Predicate equalRequestType = cb.equal(candidateRoot.get(REQUEST_TYPE), requestType);
-                       Predicate isNull = cb.isNull(candidateRoot.get(REQUEST_TYPE));
-                       Predicate orClause = cb.or(equalRequestType, isNull);
-                       Order orderDesc = cb.desc(candidateRoot.get(START_TIME));
-                       Order orderAsc = cb.asc(candidateRoot.get(SOURCE));
-                       crit.where(cb.and(isEqual, orClause)).orderBy(orderDesc, orderAsc);
-                       
-            @SuppressWarnings("unchecked")
-            List <InfraActiveRequests> arList = entityManager.createQuery(crit).getResultList();
-            if (arList != null && !arList.isEmpty ()) {
+            final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
+            final CriteriaQuery<InfraActiveRequests> crit = cb.createQuery(InfraActiveRequests.class);
+            final Root<InfraActiveRequests> candidateRoot = crit.from(InfraActiveRequests.class);
+            final Predicate isEqual = cb.equal(candidateRoot.get(queryAttributeName), queryValue);
+            final Predicate equalRequestType = cb.equal(candidateRoot.get(REQUEST_TYPE), requestType);
+            final Predicate isNull = cb.isNull(candidateRoot.get(REQUEST_TYPE));
+            final Predicate orClause = cb.or(equalRequestType, isNull);
+            final Order orderDesc = cb.desc(candidateRoot.get(START_TIME));
+            final Order orderAsc = cb.asc(candidateRoot.get(SOURCE));
+            crit.where(cb.and(isEqual, orClause)).orderBy(orderDesc, orderAsc);
+
+            final List<InfraActiveRequests> arList = entityManager.createQuery(crit).getResultList();
+            if (arList != null && !arList.isEmpty()) {
                 return arList;
             }
-        } finally {
-           // msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "RequestDB", "getRequestListFromInfraActive", null);
+        } catch (final Exception exception) {
+            msoLogger.error("Unable to execute query", exception);
         }
-        return null;
+        return Collections.emptyList();
     }
 
 
-    /* (non-Javadoc)
-        * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getRequestFromInfraActive(java.lang.String, java.lang.String)
-        */
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getRequestFromInfraActive(java.
+     * lang.String, java.lang.String)
+     */
     @Override
-       public InfraActiveRequests getRequestFromInfraActive (String requestId, String requestType) {
-        long startTime = System.currentTimeMillis ();
-        msoLogger.debug ("Get infra request from DB with id " + requestId);
+    public InfraActiveRequests getRequestFromInfraActive(final String requestId, final String requestType) {
+        final long startTime = System.currentTimeMillis();
+        msoLogger.debug("Get infra request from DB with id " + requestId);
 
         InfraActiveRequests ar = null;
         try {
-            Query query = entityManager.createQuery ("from InfraActiveRequests where (requestId = :requestId OR clientRequestId = :requestId) and requestType = :requestType");
-            query.setParameter (REQUEST_ID, requestId);
-            query.setParameter (REQUEST_TYPE, requestType);
+            final Query query = entityManager.createQuery(
+                    "from InfraActiveRequests where (requestId = :requestId OR clientRequestId = :requestId) and requestType = :requestType");
+            query.setParameter(REQUEST_ID, requestId);
+            query.setParameter(REQUEST_TYPE, requestType);
             ar = this.getSingleResult(query);
         } finally {
-            msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "RequestDB", "getRequestFromInfraActive", null);
+            msoLogger.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
+                    "Successfully", "RequestDB", "getRequestFromInfraActive", null);
         }
         return ar;
     }
-    
 
-    /* (non-Javadoc)
-        * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkDuplicateByVnfName(java.lang.String, java.lang.String, java.lang.String)
-        */
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkDuplicateByVnfName(java.lang.
+     * String, java.lang.String, java.lang.String)
+     */
     @Override
-       public InfraActiveRequests checkDuplicateByVnfName (String vnfName, String action, String requestType) {
+    public InfraActiveRequests checkDuplicateByVnfName(final String vnfName, final String action,
+            final String requestType) {
 
-        long startTime = System.currentTimeMillis ();
-        msoLogger.debug ("Get infra request from DB for VNF " + vnfName + " and action " + action + " and requestType " + requestType);
+        final long startTime = System.currentTimeMillis();
+        msoLogger.debug("Get infra request from DB for VNF " + vnfName + " and action " + action + " and requestType "
+                + requestType);
 
         InfraActiveRequests ar = null;
         try {
-            Query query = entityManager.createQuery ("from InfraActiveRequests where vnfName = :vnfName and action = :action and (requestStatus = 'PENDING' or requestStatus = 'IN_PROGRESS' or requestStatus = 'TIMEOUT' or requestStatus = 'PENDING_MANUAL_TASK') and requestType = :requestType ORDER BY startTime DESC");
-            query.setParameter ("vnfName", vnfName);
-            query.setParameter ("action", action);
-            query.setParameter (REQUEST_TYPE, requestType);
+            final Query query = entityManager.createQuery(
+                    "from InfraActiveRequests where vnfName = :vnfName and action = :action and (requestStatus = 'PENDING' or requestStatus = 'IN_PROGRESS' or requestStatus = 'TIMEOUT' or requestStatus = 'PENDING_MANUAL_TASK') and requestType = :requestType ORDER BY startTime DESC");
+            query.setParameter("vnfName", vnfName);
+            query.setParameter("action", action);
+            query.setParameter(REQUEST_TYPE, requestType);
             @SuppressWarnings("unchecked")
-            List <InfraActiveRequests> results = query.getResultList();
-            if (!results.isEmpty ()) {
-                ar = results.get (0);
+            final List<InfraActiveRequests> results = query.getResultList();
+            if (!results.isEmpty()) {
+                ar = results.get(0);
             }
         } finally {
-            msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "RequestDB", "checkDuplicateByVnfName", null);
+            msoLogger.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
+                    "Successfully", "RequestDB", "checkDuplicateByVnfName", null);
         }
 
         return ar;
     }
 
-    /* (non-Javadoc)
-        * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkDuplicateByVnfId(java.lang.String, java.lang.String, java.lang.String)
-        */
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkDuplicateByVnfId(java.lang.
+     * String, java.lang.String, java.lang.String)
+     */
     @Override
-       public InfraActiveRequests checkDuplicateByVnfId (String vnfId, String action, String requestType) {
+    public InfraActiveRequests checkDuplicateByVnfId(final String vnfId, final String action,
+            final String requestType) {
 
-        long startTime = System.currentTimeMillis ();
-        msoLogger.debug ("Get list of infra requests from DB for VNF " + vnfId + " and action " + action);
+        final long startTime = System.currentTimeMillis();
+        msoLogger.debug("Get list of infra requests from DB for VNF " + vnfId + " and action " + action);
 
         InfraActiveRequests ar = null;
         try {
-            Query query = entityManager.createQuery ("from InfraActiveRequests where vnfId = :vnfId and action = :action and (requestStatus = 'PENDING' or requestStatus = 'IN_PROGRESS' or requestStatus = 'TIMEOUT' or requestStatus = 'PENDING_MANUAL_TASK') and requestType = :requestType ORDER BY startTime DESC");
-            query.setParameter ("vnfId", vnfId);
-            query.setParameter ("action", action);
-            query.setParameter (REQUEST_TYPE, requestType);
+            final Query query = entityManager.createQuery(
+                    "from InfraActiveRequests where vnfId = :vnfId and action = :action and (requestStatus = 'PENDING' or requestStatus = 'IN_PROGRESS' or requestStatus = 'TIMEOUT' or requestStatus = 'PENDING_MANUAL_TASK') and requestType = :requestType ORDER BY startTime DESC");
+            query.setParameter("vnfId", vnfId);
+            query.setParameter("action", action);
+            query.setParameter(REQUEST_TYPE, requestType);
             @SuppressWarnings("unchecked")
-            List <InfraActiveRequests> results = query.getResultList();
-            if (!results.isEmpty ()) {
-                ar = results.get (0);
+            final List<InfraActiveRequests> results = query.getResultList();
+            if (!results.isEmpty()) {
+                ar = results.get(0);
             }
         } finally {
-            msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "RequestDB", "checkDuplicateByVnfId", null);
+            msoLogger.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
+                    "Successfully", "RequestDB", "checkDuplicateByVnfId", null);
         }
 
         return ar;
     }
-    
-    /**
-     * update service operation status when a operation resource status updated
-     * <br>
+
+    /*
+     * (non-Javadoc)
      * 
-     * @param operStatus the resource operation status
-     * @since ONAP Amsterdam Release
+     * @see
+     * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkVnfIdStatus(java.lang.String)
      */
-    private void updateOperationStatusBasedOnResourceStatus(ResourceOperationStatus operStatus) {
-        long startTime = System.currentTimeMillis();
-        msoLogger.debug("Request database - query Resource Operation Status with service Id:"
-                + operStatus.getServiceId() + ", operationId:" + operStatus.getOperationId());
+    @Override
+    public InfraActiveRequests checkVnfIdStatus(final String operationalEnvironmentId) {
+        final long startTime = System.currentTimeMillis();
+        msoLogger.debug("Get Infra request from DB for OperationalEnvironmentId " + operationalEnvironmentId);
+
+        InfraActiveRequests ar = null;
         try {
-            // query all resources of the service
-            String hql = "FROM ResourceOperationStatus WHERE SERVICE_ID = :service_id and OPERATION_ID = :operation_id";
-            Query query = entityManager.createQuery(hql);
-            query.setParameter("service_id", operStatus.getServiceId());
-            query.setParameter("operation_id", operStatus.getOperationId());
-            @SuppressWarnings("unchecked")
-            List<ResourceOperationStatus> lstResourceStatus = (List<ResourceOperationStatus>)query.getResultList();
-            // count the total progress
-            int resourceCount = lstResourceStatus.size();
-            int progress = 0;
-            boolean isFinished = true;
-            for(int i = 0; i < resourceCount; i++) {
-                progress = progress + Integer.valueOf(lstResourceStatus.get(i).getProgress()) / resourceCount;
-                if(RequestsDbConstant.Status.PROCESSING.equals(lstResourceStatus.get(i).getStatus())) {
-                    isFinished = false;
-                }
+            final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
+            final CriteriaQuery<InfraActiveRequests> crit = cb.createQuery(InfraActiveRequests.class);
+            final Root<InfraActiveRequests> candidateRoot = crit.from(InfraActiveRequests.class);
+            final Predicate operationalEnvEq =
+                    cb.equal(candidateRoot.get("operationalEnvId"), operationalEnvironmentId);
+            final Predicate requestStatusNotEq = cb.notEqual(candidateRoot.get(REQUEST_STATUS), "COMPLETE");
+            final Predicate actionEq = cb.equal(candidateRoot.get("action"), "create");
+            final Order startTimeOrder = cb.desc(candidateRoot.get("startTime"));
+            crit.select(candidateRoot);
+            crit.where(cb.and(operationalEnvEq, requestStatusNotEq, actionEq));
+            crit.orderBy(startTimeOrder);
+            final TypedQuery<InfraActiveRequests> query = entityManager.createQuery(crit);
+            final List<InfraActiveRequests> results = query.getResultList();
+            if (!results.isEmpty()) {
+                ar = results.get(0);
             }
-            
-            OperationStatus serviceOperStatus = new OperationStatus(operStatus.getServiceId(), operStatus.getOperationId());
-            serviceOperStatus = operationStatusRepository.findOne(Example.of(serviceOperStatus));
-            progress = progress > 100 ? 100 : progress;
-            serviceOperStatus.setProgress(String.valueOf(progress));
-            serviceOperStatus.setOperationContent(operStatus.getStatusDescription());
-            // if current resource failed. service failed.
-            if(RequestsDbConstant.Status.ERROR.equals(operStatus.getStatus())) {
-                serviceOperStatus.setResult(RequestsDbConstant.Status.ERROR);
-                serviceOperStatus.setReason(operStatus.getStatusDescription());
-            } else if(isFinished) {
-                // if finished
-                serviceOperStatus.setResult(RequestsDbConstant.Status.FINISHED);
-                serviceOperStatus.setProgress(RequestsDbConstant.Progress.ONE_HUNDRED);
-            }
-            operationStatusRepository.save(serviceOperStatus);
         } finally {
             msoLogger.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
-                    "Successfully", "RequestDB", "updateResOperStatus", null);
+                    "Successfully", "RequestDB", "checkDuplicateByVnfName", null);
+        }
+
+        return ar;
+    }
+
+    protected <T> T getSingleResult(final Query query) {
+        query.setMaxResults(1);
+        final List<T> list = query.getResultList();
+        if (list == null || list.isEmpty()) {
+            return null;
+        } else if (list.size() == 1) {
+            return list.get(0);
+        } else {
+            throw new NonUniqueResultException();
+        }
+
+    }
+
+    @Override
+    public List<InfraActiveRequests> getInfraActiveRequests(final Map<String, String[]> filters, final long startTime,
+            final long endTime, final Integer maxResult) {
+        if (filters == null) {
+            return Collections.emptyList();
+        }
+        try {
+            final CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
+            final CriteriaQuery<InfraActiveRequests> criteriaQuery =
+                    criteriaBuilder.createQuery(InfraActiveRequests.class);
+            final Root<InfraActiveRequests> tableRoot = criteriaQuery.from(InfraActiveRequests.class);
+            final List<Predicate> predicates = getPredicates(filters, criteriaBuilder, tableRoot);
+
+            final Timestamp minTime = new Timestamp(startTime);
+            final Timestamp maxTime = new Timestamp(endTime);
+            predicates.add(criteriaBuilder.greaterThanOrEqualTo(tableRoot.get(START_TIME), minTime));
+            predicates.add(criteriaBuilder.lessThanOrEqualTo(tableRoot.get(END_TIME), maxTime));
+
+            criteriaQuery.where(criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()])));
+            if (maxResult != null) {
+                return entityManager.createQuery(criteriaQuery).setMaxResults(maxResult).getResultList();
+            }
+            return entityManager.createQuery(criteriaQuery).getResultList();
+        } catch (final Exception exception) {
+            msoLogger.error("Unable to execute query using filters: " + filters, exception);
+            return Collections.emptyList();
         }
     }
 
-       /* (non-Javadoc)
-        * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkVnfIdStatus(java.lang.String)
-        */
-       @Override
-       public InfraActiveRequests checkVnfIdStatus(String operationalEnvironmentId) {
-               long startTime = System.currentTimeMillis ();
-               msoLogger.debug ("Get Infra request from DB for OperationalEnvironmentId " + operationalEnvironmentId);
-
-               InfraActiveRequests ar = null;
-               try {
-                       CriteriaBuilder cb = entityManager.getCriteriaBuilder();
-                       CriteriaQuery<InfraActiveRequests> crit = cb.createQuery(InfraActiveRequests.class);
-                       Root<InfraActiveRequests> candidateRoot = crit.from(InfraActiveRequests.class);
-                       Predicate operationalEnvEq = cb.equal(candidateRoot.get("operationalEnvId"), operationalEnvironmentId);
-                       Predicate requestStatusNotEq = cb.notEqual(candidateRoot.get("requestStatus"), "COMPLETE");
-                       Predicate actionEq = cb.equal(candidateRoot.get("action"), "create");
-                       Order startTimeOrder = cb.desc(candidateRoot.get("startTime"));
-                       crit.select(candidateRoot);
-                       crit.where(cb.and(operationalEnvEq, requestStatusNotEq, actionEq));
-                       crit.orderBy(startTimeOrder);
-                       TypedQuery<InfraActiveRequests> query = entityManager.createQuery(crit);
-                       @SuppressWarnings("unchecked")
-                       List <InfraActiveRequests> results = query.getResultList();
-                       if (!results.isEmpty ()) {
-                               ar = results.get (0);
-                       }
-               } finally {
-                       msoLogger.recordMetricEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "RequestDB", "checkDuplicateByVnfName", null);
-               }
-
-               return ar;
-       }
-       
-       protected <T> T getSingleResult(Query query) {
-           query.setMaxResults(1);
-           List<T> list = query.getResultList();
-           if (list == null || list.isEmpty()) {
-               return null;
-           } else if (list.size() == 1) {
-                   return list.get(0);
-           } else {
-               throw new NonUniqueResultException();
-           }
-
-       }
+    private List<Predicate> getPredicates(final Map<String, String[]> filters, final CriteriaBuilder criteriaBuilder,
+            final Root<InfraActiveRequests> tableRoot) {
+        final List<Predicate> predicates = new LinkedList<>();
+        for (final Entry<String, String[]> entry : filters.entrySet()) {
+            final String[] params = entry.getValue();
+            if (VALID_COLUMNS.contains(entry.getKey()) && params.length == 2) {
+                final QueryOperationType operationType = QueryOperationType.getQueryOperationType(params[0]);
+                final Predicate predicate =
+                        operationType.getPredicate(criteriaBuilder, tableRoot, entry.getKey(), params[1]);
+                predicates.add(predicate);
+            }
+        }
+        return predicates;
+    }
 }
diff --git a/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/data/repository/QueryOperationType.java b/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/data/repository/QueryOperationType.java
new file mode 100644 (file)
index 0000000..4aaa8d2
--- /dev/null
@@ -0,0 +1,69 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.db.request.data.repository;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+public enum QueryOperationType {
+
+    EQ {
+        @Override
+        public <T> Predicate getPredicate(final CriteriaBuilder criteriaBuilder, final Root<T> tableRoot,
+                final String key, final String value) {
+            return criteriaBuilder.equal(tableRoot.get(key), value);
+        }
+
+    },
+    NEQ {
+
+        @Override
+        public <T> Predicate getPredicate(final CriteriaBuilder criteriaBuilder, final Root<T> tableRoot,
+                final String key, final String value) {
+            return criteriaBuilder.notEqual(tableRoot.get(key), value);
+        }
+
+    },
+    LIKE {
+
+        @Override
+        public <T> Predicate getPredicate(final CriteriaBuilder criteriaBuilder, final Root<T> tableRoot,
+                final String key, final String value) {
+            return criteriaBuilder.like(tableRoot.get(key), "%" + value + "%");
+        }
+    };
+
+    public static QueryOperationType getQueryOperationType(final String type) {
+        for (final QueryOperationType queryOperationType : QueryOperationType.values()) {
+            if (queryOperationType.name().equalsIgnoreCase(type)) {
+                return queryOperationType;
+            }
+        }
+        return QueryOperationType.EQ;
+    }
+
+    public abstract <T> Predicate getPredicate(final CriteriaBuilder criteriaBuilder, final Root<T> tableRoot,
+            final String key, final String value);
+
+}
diff --git a/mso-api-handlers/mso-requests-db/src/test/java/org/onap/so/db/request/data/repository/InfraActiveRequestsRepositoryImplTest.java b/mso-api-handlers/mso-requests-db/src/test/java/org/onap/so/db/request/data/repository/InfraActiveRequestsRepositoryImplTest.java
new file mode 100644 (file)
index 0000000..d889a15
--- /dev/null
@@ -0,0 +1,184 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.db.request.data.repository;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+import static org.onap.so.db.request.data.repository.InfraActiveRequestsRepositoryImpl.ACTION;
+import static org.onap.so.db.request.data.repository.InfraActiveRequestsRepositoryImpl.REQUEST_ID;
+import static org.onap.so.db.request.data.repository.InfraActiveRequestsRepositoryImpl.SERVICE_INSTANCE_ID;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.so.TestApplication;
+import org.onap.so.db.request.beans.InfraActiveRequests;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit4.SpringRunner;
+
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+@ActiveProfiles("test")
+public class InfraActiveRequestsRepositoryImplTest {
+
+    private static final int MAX_LIMIT = 1;
+    private static final long END_TIME_IN_MILISEC = 1482436800000l;
+    private static final long START_TIME_IN_MILISEC = 1482429600000l;
+    private static final String REQUEST_ID_VALUE = "00032ab7-3fb3-42e5-965d-8ea592502017";
+    private static final String SERVICE_INSTANCE_ID_VALUE = "e3b5744d-2ad1-4cdd-8390-c999a38829bc";
+
+    @Autowired
+    private InfraActiveRequestsRepository objUnderTest;
+
+    @Test
+    public void test_GetInfraActiveRequests_emptyFiltersMap() {
+        final List<InfraActiveRequests> actualRequests = objUnderTest.getInfraActiveRequests(Collections.emptyMap(),
+                START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, null);
+        assertFalse(actualRequests.isEmpty());
+    }
+
+    @Test
+    public void test_GetInfraActiveRequests_invalidFiltersMap() {
+        final Map<String, String[]> filters = new HashMap<>();
+        filters.put("OverTheMoon", new String[] {"Humpty Dumpty Sat On The Wall"});
+        final long startTime = START_TIME_IN_MILISEC - TimeUnit.DAYS.toMillis(20);
+        final long endTime = END_TIME_IN_MILISEC - TimeUnit.DAYS.toMillis(20);
+        final List<InfraActiveRequests> actualRequests =
+                objUnderTest.getInfraActiveRequests(filters, startTime, endTime, null);
+        assertTrue(actualRequests.isEmpty());
+    }
+
+    @Test
+    public void test_GetInfraActiveRequests_invalidFiltersMapWithInvalidKey() {
+        final Map<String, String[]> filters = new HashMap<>();
+        filters.put("OverTheMoon", new String[] {"Avengers", "Humpty Dumpty Sat On The Wall"});
+        final List<InfraActiveRequests> actualRequests =
+                objUnderTest.getInfraActiveRequests(filters, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, null);
+        assertFalse(actualRequests.isEmpty());
+    }
+
+    @Test
+    public void test_GetInfraActiveRequestsData_withEqualServiceInstanceId() {
+        final Map<String, String[]> values = new HashMap<>();
+        values.put(SERVICE_INSTANCE_ID, new String[] {QueryOperationType.EQ.name(), SERVICE_INSTANCE_ID_VALUE});
+        final List<InfraActiveRequests> actualRequests =
+                objUnderTest.getInfraActiveRequests(values, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, 1);
+        assertFalse(actualRequests.isEmpty());
+
+        assertEquals(SERVICE_INSTANCE_ID_VALUE, actualRequests.get(0).getServiceInstanceId());
+    }
+
+
+    @Test
+    public void test_GetInfraActiveRequestsData_withLikeRequestID() {
+        final Map<String, String[]> values = new HashMap<>();
+        values.put(REQUEST_ID, new String[] {QueryOperationType.LIKE.name(), "00032ab7"});
+        final List<InfraActiveRequests> actualRequests =
+                objUnderTest.getInfraActiveRequests(values, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, 1);
+        assertFalse(actualRequests.isEmpty());
+
+        assertEquals(REQUEST_ID_VALUE, actualRequests.get(0).getRequestId());
+        assertEquals(SERVICE_INSTANCE_ID_VALUE, actualRequests.get(0).getServiceInstanceId());
+    }
+
+
+    @Test
+    public void test_GetInfraActiveRequestsData_withLikeRequestIDAndEqualToServiceInstanceId() {
+        final Map<String, String[]> values = new HashMap<>();
+        values.put(REQUEST_ID, new String[] {QueryOperationType.LIKE.name(), "00032ab7"});
+        values.put(SERVICE_INSTANCE_ID, new String[] {QueryOperationType.EQ.name(), SERVICE_INSTANCE_ID_VALUE});
+        final List<InfraActiveRequests> actualRequests =
+                objUnderTest.getInfraActiveRequests(values, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, 1);
+        assertFalse(actualRequests.isEmpty());
+
+        assertEquals(REQUEST_ID_VALUE, actualRequests.get(0).getRequestId());
+        assertEquals(SERVICE_INSTANCE_ID_VALUE, actualRequests.get(0).getServiceInstanceId());
+    }
+
+
+    @Test
+    public void test_GetInfraActiveRequestsData_withNotEqualAction() {
+        final Map<String, String[]> values = new HashMap<>();
+        values.put(ACTION, new String[] {QueryOperationType.NEQ.name(), "createInstance"});
+        final List<InfraActiveRequests> actualRequests =
+                objUnderTest.getInfraActiveRequests(values, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, null);
+        assertFalse(actualRequests.isEmpty());
+        for (final InfraActiveRequests actualActiveRequests : actualRequests) {
+            assertNotEquals("createInstance", actualActiveRequests.getAction());
+        }
+    }
+
+
+    @Test
+    public void test_GetInfraActiveRequestsData_withNotEqualToServiceInstanceNameAndServiceInstanceIdNul() {
+        final Map<String, String[]> values = new HashMap<>();
+        values.put(ACTION, new String[] {QueryOperationType.NEQ.name(), "createInstance"});
+        values.put(SERVICE_INSTANCE_ID, new String[] {QueryOperationType.EQ.name(), SERVICE_INSTANCE_ID_VALUE});
+
+        final List<InfraActiveRequests> actualRequests =
+                objUnderTest.getInfraActiveRequests(values, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, null);
+        assertFalse(actualRequests.isEmpty());
+        for (final InfraActiveRequests actualActiveRequests : actualRequests) {
+            assertNotEquals("createInstance", actualActiveRequests.getAction());
+            assertEquals(SERVICE_INSTANCE_ID_VALUE, actualActiveRequests.getServiceInstanceId());
+        }
+    }
+
+    @Test
+    public void test_GetInfraActiveRequestsData_withStartEndDateTimeNotEqualAction() {
+        final Map<String, String[]> values = new HashMap<>();
+        values.put(ACTION, new String[] {QueryOperationType.NEQ.name(), "createInstance"});
+        final List<InfraActiveRequests> actualRequests =
+                objUnderTest.getInfraActiveRequests(values, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, null);
+        assertFalse(actualRequests.isEmpty());
+        for (final InfraActiveRequests actualActiveRequests : actualRequests) {
+            assertNotEquals("createInstance", actualActiveRequests.getAction());
+        }
+    }
+
+    @Test
+    public void test_GetInfraActiveRequestsData_withLimitNotEqualAction() {
+        final Map<String, String[]> values = new HashMap<>();
+        values.put(ACTION, new String[] {QueryOperationType.NEQ.name(), "createInstance"});
+        final List<InfraActiveRequests> actualRequests =
+                objUnderTest.getInfraActiveRequests(values, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, MAX_LIMIT);
+        assertFalse(actualRequests.isEmpty());
+        for (final InfraActiveRequests actualActiveRequests : actualRequests) {
+            assertNotEquals("createInstance", actualActiveRequests.getAction());
+        }
+    }
+
+    @Test
+    public void test_GetInfraActiveRequestsData_withNullFilters() {
+        final List<InfraActiveRequests> actualRequests =
+                objUnderTest.getInfraActiveRequests(null, START_TIME_IN_MILISEC, END_TIME_IN_MILISEC, MAX_LIMIT);
+        assertTrue(actualRequests.isEmpty());
+    }
+}
diff --git a/pom.xml b/pom.xml
index 59f0d5e..089131a 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -30,6 +30,7 @@
                <module>bpmn</module>
                <module>cloudify-client</module>
                <module>cxf-logging</module>
+                <module>so-monitoring</module>
                <module>packages</module>
        </modules>
        <properties>
diff --git a/so-monitoring/pom.xml b/so-monitoring/pom.xml
new file mode 100644 (file)
index 0000000..cf1f481
--- /dev/null
@@ -0,0 +1,65 @@
+<!--
+  ============LICENSE_START=======================================================
+   Copyright (C) 2018 Ericsson. 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.
+
+  SPDX-License-Identifier: Apache-2.0
+  ============LICENSE_END=========================================================
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.onap.so</groupId>
+        <artifactId>so</artifactId>
+        <version>1.3.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.onap.so.monitoring</groupId>
+    <artifactId>so-monitoring</artifactId>
+
+    <packaging>pom</packaging>
+    <name>${project.artifactId}</name>
+
+    <properties>
+        <java.version>1.8</java.version>
+        <version.java.compiler>1.8</version.java.compiler>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>${version.java.compiler}</source>
+                    <target>${version.java.compiler}</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <modules>
+        <module>so-monitoring-handler</module>
+        <module>so-monitoring-service</module>
+    </modules>
+</project>
\ No newline at end of file
diff --git a/so-monitoring/so-monitoring-handler/pom.xml b/so-monitoring/so-monitoring-handler/pom.xml
new file mode 100644 (file)
index 0000000..a535d40
--- /dev/null
@@ -0,0 +1,95 @@
+<!--
+  ============LICENSE_START=======================================================
+   Copyright (C) 2018 Ericsson. 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.
+
+  SPDX-License-Identifier: Apache-2.0
+  ============LICENSE_END=========================================================
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.onap.so.monitoring</groupId>
+        <artifactId>so-monitoring</artifactId>
+        <version>1.3.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>so-monitoring-handler</artifactId>
+    <name>${project.artifactId}</name>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <java.version>1.8</java.version>
+        <guava.version>22.0</guava.version>
+        <openpojo.version>0.8.6</openpojo.version>
+    </properties>
+
+
+    <dependencies>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>${guava.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.tomcat</groupId>
+                    <artifactId>tomcat-jdbc</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-ext</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpcore</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>nl.jqno.equalsverifier</groupId>
+            <artifactId>equalsverifier</artifactId>
+            <version>2.5.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.so</groupId>
+            <artifactId>common</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/camunda/model/ActivityInstance.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/camunda/model/ActivityInstance.java
new file mode 100644 (file)
index 0000000..10ca6c9
--- /dev/null
@@ -0,0 +1,188 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.camunda.model;
+
+import static org.onap.so.montoring.utils.ObjectEqualsUtils.isEqual;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ *
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ActivityInstance {
+
+    private String activityId;
+    private String activityName;
+    private String activityType;
+    private String processInstanceId;
+    private String calledProcessInstanceId;
+    private String startTime;
+    private String endTime;
+    private String durationInMillis;
+
+    public ActivityInstance() {}
+
+
+    /**
+     * @return the activityId
+     */
+    public String getActivityId() {
+        return activityId;
+    }
+
+    /**
+     * @param activityId the activityId to set
+     */
+    public void setActivityId(final String activityId) {
+        this.activityId = activityId;
+    }
+
+    /**
+     * @return the activityName
+     */
+    public String getActivityName() {
+        return activityName;
+    }
+
+    /**
+     * @param activityName the activityName to set
+     */
+    public void setActivityName(final String activityName) {
+        this.activityName = activityName;
+    }
+
+    /**
+     * @return the activityType
+     */
+    public String getActivityType() {
+        return activityType;
+    }
+
+    /**
+     * @param activityType the activityType to set
+     */
+    public void setActivityType(final String activityType) {
+        this.activityType = activityType;
+    }
+
+    /**
+     * @return the processInstanceId
+     */
+    public String getProcessInstanceId() {
+        return processInstanceId;
+    }
+
+    /**
+     * @param processInstanceId the processInstanceId to set
+     */
+    public void setProcessInstanceId(final String processInstanceId) {
+        this.processInstanceId = processInstanceId;
+    }
+
+    /**
+     * @return the calledProcessInstanceId
+     */
+    public String getCalledProcessInstanceId() {
+        return calledProcessInstanceId;
+    }
+
+    /**
+     * @param calledProcessInstanceId the calledProcessInstanceId to set
+     */
+    public void setCalledProcessInstanceId(final String calledProcessInstanceId) {
+        this.calledProcessInstanceId = calledProcessInstanceId;
+    }
+
+    /**
+     * @return the startTime
+     */
+    public String getStartTime() {
+        return startTime;
+    }
+
+    /**
+     * @param startTime the startTime to set
+     */
+    public void setStartTime(final String startTime) {
+        this.startTime = startTime;
+    }
+
+    /**
+     * @return the endTime
+     */
+    public String getEndTime() {
+        return endTime;
+    }
+
+    /**
+     * @param endTime the endTime to set
+     */
+    public void setEndTime(final String endTime) {
+        this.endTime = endTime;
+    }
+
+    /**
+     * @return the durationInMillis
+     */
+    public String getDurationInMillis() {
+        return durationInMillis;
+    }
+
+    /**
+     * @param durationInMillis the durationInMillis to set
+     */
+    public void setDurationInMillis(final String durationInMillis) {
+        this.durationInMillis = durationInMillis;
+    }
+
+    @JsonIgnore
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((activityId == null) ? 0 : activityId.hashCode());
+        result = prime * result + ((activityName == null) ? 0 : activityName.hashCode());
+        result = prime * result + ((activityType == null) ? 0 : activityType.hashCode());
+        result = prime * result + ((calledProcessInstanceId == null) ? 0 : calledProcessInstanceId.hashCode());
+        result = prime * result + ((durationInMillis == null) ? 0 : durationInMillis.hashCode());
+        result = prime * result + ((endTime == null) ? 0 : endTime.hashCode());
+        result = prime * result + ((processInstanceId == null) ? 0 : processInstanceId.hashCode());
+        result = prime * result + ((startTime == null) ? 0 : startTime.hashCode());
+        return result;
+    }
+
+    @JsonIgnore
+    @Override
+    public boolean equals(final Object obj) {
+        if (obj instanceof ActivityInstance) {
+            final ActivityInstance other = (ActivityInstance) obj;
+            return isEqual(activityId, other.activityId) && isEqual(activityName, other.activityName)
+                    && isEqual(activityType, other.activityType) && isEqual(processInstanceId, other.processInstanceId)
+                    && isEqual(calledProcessInstanceId, other.calledProcessInstanceId)
+                    && isEqual(startTime, other.startTime) && isEqual(endTime, other.endTime)
+                    && isEqual(durationInMillis, other.durationInMillis);
+        }
+        return false;
+    }
+    
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/camunda/model/ProcessDefinition.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/camunda/model/ProcessDefinition.java
new file mode 100644 (file)
index 0000000..ccddf0c
--- /dev/null
@@ -0,0 +1,88 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.camunda.model;
+
+import static org.onap.so.montoring.utils.ObjectEqualsUtils.isEqual;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ *
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ProcessDefinition {
+
+    private String id;
+    private String bpmn20Xml;
+
+    public ProcessDefinition() {}
+
+    /**
+     * @return the id
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * @param id the id to set
+     */
+    public void setId(final String id) {
+        this.id = id;
+    }
+
+    /**
+     * @return the bpmn20Xml
+     */
+    public String getBpmn20Xml() {
+        return bpmn20Xml;
+    }
+
+    /**
+     * @param bpmn20Xml the bpmn20Xml to set
+     */
+    public void setBpmn20Xml(final String bpmn20Xml) {
+        this.bpmn20Xml = bpmn20Xml;
+    }
+
+    @JsonIgnore
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((id == null) ? 0 : id.hashCode());
+        result = prime * result + ((bpmn20Xml == null) ? 0 : bpmn20Xml.hashCode());
+        return result;
+    }
+
+    @JsonIgnore
+    @Override
+    public boolean equals(final Object obj) {
+        if (obj instanceof ProcessDefinition) {
+            final ProcessDefinition other = (ProcessDefinition) obj;
+            return isEqual(id, other.id) && isEqual(bpmn20Xml, other.bpmn20Xml);
+        }
+        return false;
+    }
+
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/camunda/model/ProcessInstance.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/camunda/model/ProcessInstance.java
new file mode 100644 (file)
index 0000000..faea7b3
--- /dev/null
@@ -0,0 +1,129 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.camunda.model;
+
+import static org.onap.so.montoring.utils.ObjectEqualsUtils.isEqual;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ProcessInstance {
+
+    private String id;
+    private String processDefinitionId;
+    private String processDefinitionName;
+    private String superProcessInstanceId;
+
+    public ProcessInstance() {}
+
+    /**
+     * @return the id
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * @param id the id to set
+     */
+    public void setId(final String id) {
+        this.id = id;
+    }
+
+
+    /**
+     * @return the processDefinitionId
+     */
+    public String getProcessDefinitionId() {
+        return processDefinitionId;
+    }
+
+    /**
+     * @param processDefinitionId the processDefinitionId to set
+     */
+    public void setProcessDefinitionId(final String processDefinitionId) {
+        this.processDefinitionId = processDefinitionId;
+    }
+
+    /**
+     * @return the processDefinitionName
+     */
+    public String getProcessDefinitionName() {
+        return processDefinitionName;
+    }
+
+    /**
+     * @param processDefinitionName the processDefinitionName to set
+     */
+    public void setProcessDefinitionName(final String processDefinitionName) {
+        this.processDefinitionName = processDefinitionName;
+    }
+
+    /**
+     * @return the superProcessInstanceId
+     */
+    public String getSuperProcessInstanceId() {
+        return superProcessInstanceId;
+    }
+
+    /**
+     * @param superProcessInstanceId the superProcessInstanceId to set
+     */
+    public void setSuperProcessInstanceId(final String superProcessInstanceId) {
+        this.superProcessInstanceId = superProcessInstanceId;
+    }
+
+
+    @JsonIgnore
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((id == null) ? 0 : id.hashCode());
+        result = prime * result + ((processDefinitionId == null) ? 0 : processDefinitionId.hashCode());
+        result = prime * result + ((processDefinitionName == null) ? 0 : processDefinitionName.hashCode());
+        result = prime * result + ((superProcessInstanceId == null) ? 0 : superProcessInstanceId.hashCode());
+        return result;
+    }
+
+    @JsonIgnore
+    @Override
+    public boolean equals(final Object obj) {
+        if (obj instanceof ProcessInstance) {
+            final ProcessInstance other = (ProcessInstance) obj;
+            return isEqual(id, other.id) && isEqual(processDefinitionId, other.processDefinitionId)
+                    && isEqual(processDefinitionName, other.processDefinitionName)
+                    && isEqual(superProcessInstanceId, other.superProcessInstanceId);
+        }
+
+        return false;
+    }
+
+    @JsonIgnore
+    @Override
+    public String toString() {
+        return "ProcessInstance [id=" + id + ", processDefinitionId=" + processDefinitionId + ", processDefinitionName="
+                + processDefinitionName + "]";
+    }
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/camunda/model/ProcessInstanceVariable.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/camunda/model/ProcessInstanceVariable.java
new file mode 100644 (file)
index 0000000..14a01b9
--- /dev/null
@@ -0,0 +1,106 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.camunda.model;
+
+import static org.onap.so.montoring.utils.ObjectEqualsUtils.isEqual;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+public class ProcessInstanceVariable {
+
+    private String name;
+    private Object value;
+    private String type;
+
+    public ProcessInstanceVariable() {}
+
+    /**
+     * @return the name
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * @param name the name to set
+     */
+    public void setName(final String name) {
+        this.name = name;
+    }
+
+    /**
+     * @return the value
+     */
+    public Object getValue() {
+        return value;
+    }
+
+    /**
+     * @param value the value to set
+     */
+    public void setValue(final Object value) {
+        this.value = value;
+    }
+
+    /**
+     * @return the type
+     */
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * @param type the type to set
+     */
+    public void setType(final String type) {
+        this.type = type;
+    }
+
+    @JsonIgnore
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((name == null) ? 0 : name.hashCode());
+        result = prime * result + ((value == null) ? 0 : value.hashCode());
+        result = prime * result + ((type == null) ? 0 : type.hashCode());
+        return result;
+    }
+
+    @JsonIgnore
+    @Override
+    public boolean equals(final Object obj) {
+        if (obj instanceof ProcessInstanceVariable) {
+            final ProcessInstanceVariable other = (ProcessInstanceVariable) obj;
+            return isEqual(name, other.name) && isEqual(value, other.value) && isEqual(type, other.type);
+        }
+
+        return false;
+    }
+
+    @JsonIgnore
+    @Override
+    public String toString() {
+        return "ProcessInstance [name=" + name + ", value=" + value + ", type=" + type + "]";
+    }
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/camunda/model/SoActiveInfraRequests.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/camunda/model/SoActiveInfraRequests.java
new file mode 100644 (file)
index 0000000..b17cad2
--- /dev/null
@@ -0,0 +1,196 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.camunda.model;
+
+import static org.onap.so.montoring.utils.ObjectEqualsUtils.isEqual;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ *
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class SoActiveInfraRequests {
+
+    private String requestId;
+    private String serviceInstanceId;
+    private String networkId;
+    private String startTime;
+    private String endTime;
+    private String requestStatus;
+    private String serviceInstanceName;
+    private String serviceType;
+
+    /**
+     * @return the requestId
+     */
+    public String getRequestId() {
+        return requestId;
+    }
+
+    /**
+     * @param requestId the requestId to set
+     */
+    public void setRequestId(final String requestId) {
+        this.requestId = requestId;
+    }
+
+    /**
+     * @return the serviceInstanceId
+     */
+    public String getServiceInstanceId() {
+        return serviceInstanceId;
+    }
+
+    /**
+     * @param serviceInstanceId the serviceInstanceId to set
+     */
+    public void setServiceInstanceId(final String serviceInstanceId) {
+        this.serviceInstanceId = serviceInstanceId;
+    }
+
+    /**
+     * @return the networkId
+     */
+    public String getNetworkId() {
+        return networkId;
+    }
+
+    /**
+     * @param networkId the networkId to set
+     */
+    public void setNetworkId(final String networkId) {
+        this.networkId = networkId;
+    }
+
+    /**
+     * @return the startTime
+     */
+    public String getStartTime() {
+        return startTime;
+    }
+
+    /**
+     * @param startTime the startTime to set
+     */
+    public void setStartTime(final String startTime) {
+        this.startTime = startTime;
+    }
+
+    /**
+     * @return the endTime
+     */
+    public String getEndTime() {
+        return endTime;
+    }
+
+    /**
+     * @param endTime the endTime to set
+     */
+    public void setEndTime(final String endTime) {
+        this.endTime = endTime;
+    }
+
+    /**
+     * @return the requestStatus
+     */
+    public String getRequestStatus() {
+        return requestStatus;
+    }
+
+    /**
+     * @param requestStatus the requestStatus to set
+     */
+    public void setRequestStatus(final String requestStatus) {
+        this.requestStatus = requestStatus;
+    }
+
+    /**
+     * @return the serviceInstanceName
+     */
+    public String getServiceInstanceName() {
+        return serviceInstanceName;
+    }
+
+    /**
+     * @param serviceInstanceName the serviceInstanceName to set
+     */
+    public void setServiceInstanceName(final String serviceInstanceName) {
+        this.serviceInstanceName = serviceInstanceName;
+    }
+
+    /**
+     * @return the serviceType
+     */
+    public String getServiceType() {
+        return serviceType;
+    }
+
+    /**
+     * @param serviceType the serviceType to set
+     */
+    public void setServiceType(final String serviceType) {
+        this.serviceType = serviceType;
+    }
+
+    @JsonIgnore
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((endTime == null) ? 0 : endTime.hashCode());
+        result = prime * result + ((networkId == null) ? 0 : networkId.hashCode());
+        result = prime * result + ((requestId == null) ? 0 : requestId.hashCode());
+        result = prime * result + ((requestStatus == null) ? 0 : requestStatus.hashCode());
+        result = prime * result + ((serviceInstanceId == null) ? 0 : serviceInstanceId.hashCode());
+        result = prime * result + ((serviceInstanceName == null) ? 0 : serviceInstanceName.hashCode());
+        result = prime * result + ((serviceType == null) ? 0 : serviceType.hashCode());
+        result = prime * result + ((startTime == null) ? 0 : startTime.hashCode());
+        return result;
+    }
+
+    @JsonIgnore
+    @Override
+    public boolean equals(final Object obj) {
+        if (obj instanceof SoActiveInfraRequests) {
+            SoActiveInfraRequests other = (SoActiveInfraRequests) obj;
+            return isEqual(requestId, other.requestId) && isEqual(serviceInstanceId, other.serviceInstanceId)
+                    && isEqual(networkId, other.networkId) && isEqual(startTime, other.startTime)
+                    && isEqual(endTime, other.endTime) && isEqual(requestStatus, other.requestStatus)
+                    && isEqual(serviceInstanceName, other.serviceInstanceName)
+                    && isEqual(serviceType, other.serviceType);
+        }
+
+        return false;
+    }
+
+    @JsonIgnore
+    @Override
+    public String toString() {
+        return "SoActiveInfraRequests [requestId=" + requestId + ", serviceInstanceId=" + serviceInstanceId
+                + ", networkId=" + networkId + ", startTime=" + startTime + ", endTime=" + endTime + ", requestStatus="
+                + requestStatus + ", serviceInstanceName=" + serviceInstanceName + ", serviceType=" + serviceType + "]";
+    }
+
+
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/camunda/CamundaConfiguration.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/camunda/CamundaConfiguration.java
new file mode 100644 (file)
index 0000000..2540eda
--- /dev/null
@@ -0,0 +1,38 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.configuration.camunda;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+
+@Configuration
+public class CamundaConfiguration {
+
+    @Bean
+    public CamundaRestUrlProvider camundaRestUrlProvider(@Value(value = "${camunda.rest.api.url}") final String httpURL,
+            @Value(value = "${camunda.rest.api.engine:default}") final String engineName) {
+        return new CamundaRestUrlProvider(httpURL, engineName);
+    }
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/camunda/CamundaRestUrlProvider.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/camunda/CamundaRestUrlProvider.java
new file mode 100644 (file)
index 0000000..9a509f0
--- /dev/null
@@ -0,0 +1,106 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.configuration.camunda;
+
+import java.net.URI;
+
+import org.springframework.stereotype.Service;
+import org.springframework.web.util.UriComponentsBuilder;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+@Service
+public class CamundaRestUrlProvider {
+
+    private static final String HISTORY_PATH = "history";
+    private final URI baseUri;
+
+    public CamundaRestUrlProvider(final String httpUrl, final String engineName) {
+        this.baseUri = UriComponentsBuilder.fromHttpUrl(httpUrl).path(engineName).build().toUri();
+    }
+
+    /**
+     * see {@link <a href=
+     * "https://docs.camunda.org/manual/7.5/reference/rest/history/process-instance/get-process-instance-query/">Get
+     * Process Instances</a>}.
+     * 
+     * @param requestId the request ID
+     * @return URL
+     */
+    public String getHistoryProcessInstanceUrl(final String requestId) {
+        return UriComponentsBuilder.fromUri(baseUri).pathSegment(HISTORY_PATH).pathSegment("process-instance")
+                .query("variables=requestId_eq_{requestID}").buildAndExpand(requestId).toString();
+    }
+
+    /**
+     * see {@link <a href=
+     * "https://docs.camunda.org/manual/7.5/reference/rest/history/process-instance/get-process-instance/">Get
+     * Single Process Instance</a>}.
+     * 
+     * @param processInstanceId the process instance id.
+     * @return URL
+     */
+    public String getSingleProcessInstanceUrl(final String processInstanceId) {
+        return UriComponentsBuilder.fromUri(baseUri).pathSegment(HISTORY_PATH).pathSegment("process-instance")
+                .pathSegment(processInstanceId).build().toString();
+    }
+
+    /**
+     * see {@link <a href=
+     * "https://docs.camunda.org/manual/7.5/reference/rest/process-definition/get-xml/">Get BPMN 2.0
+     * XML</a>}.
+     * 
+     * @param processDefinitionId the process definition id.
+     * @return URL
+     */
+    public String getProcessDefinitionUrl(final String processDefinitionId) {
+        return UriComponentsBuilder.fromUri(baseUri).pathSegment("process-definition").pathSegment(processDefinitionId)
+                .pathSegment("xml").build().toString();
+    }
+
+    /**
+     * see {@link <a href=
+     * "https://docs.camunda.org/manual/7.5/reference/rest/history/activity-instance/get-activity-instance/">Get
+     * Single Activity Instance (Historic)</a>}.
+     * 
+     * @param processInstanceId the process instance id.
+     * @return URL
+     */
+    public String getActivityInstanceUrl(final String processInstanceId) {
+        return UriComponentsBuilder.fromUri(baseUri).pathSegment(HISTORY_PATH).pathSegment("activity-instance")
+                .query("processInstanceId={processInstanceId}").queryParam("sortBy", "startTime")
+                .queryParam("sortOrder", "asc").buildAndExpand(processInstanceId).toString();
+    }
+
+    /**
+     * see {@link <a href=
+     * "https://docs.camunda.org/manual/7.5/reference/rest/history/variable-instance/get-variable-instance/">Get
+     * Single Variable Instance</a>}.
+     * 
+     * @param processInstanceId the process instance id.
+     * @return URL
+     */
+    public String getProcessInstanceVariablesUrl(final String processInstanceId) {
+        return UriComponentsBuilder.fromUri(baseUri).pathSegment(HISTORY_PATH).pathSegment("variable-instance")
+                .query("processInstanceId={processInstanceId}").buildAndExpand(processInstanceId).toString();
+    }
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/database/DatabaseConfiguration.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/database/DatabaseConfiguration.java
new file mode 100644 (file)
index 0000000..3d2b529
--- /dev/null
@@ -0,0 +1,37 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.montoring.configuration.database;
+
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class DatabaseConfiguration {
+
+    @Bean
+    public DatabaseUrlProvider databaseUrlProvider(
+            @Value(value = "${mso.database.rest.api.url}") final String baseUrl) {
+        return new DatabaseUrlProvider(baseUrl);
+    }
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/database/DatabaseUrlProvider.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/database/DatabaseUrlProvider.java
new file mode 100644 (file)
index 0000000..8235b92
--- /dev/null
@@ -0,0 +1,48 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.configuration.database;
+
+import java.net.URI;
+
+import org.springframework.web.util.UriComponentsBuilder;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ *
+ */
+public class DatabaseUrlProvider {
+
+    private final URI baseUri;
+
+    public DatabaseUrlProvider(final String baseUrl) {
+        this.baseUri = UriComponentsBuilder.fromHttpUrl(baseUrl).build().toUri();
+    }
+
+    public String getSearchUrl(final long from, final long to, final Integer maxResult) {
+        final UriComponentsBuilder builder = UriComponentsBuilder.fromUri(baseUri).pathSegment("v1")
+                .pathSegment("getInfraActiveRequests").queryParam("from", from).queryParam("to", to);
+        if (maxResult != null) {
+            return builder.queryParam("maxResult", maxResult).build().toString();
+        }
+
+        return builder.build().toString();
+    }
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/BasicAuthorizationHttpRequestInterceptor.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/BasicAuthorizationHttpRequestInterceptor.java
new file mode 100644 (file)
index 0000000..0db1e51
--- /dev/null
@@ -0,0 +1,49 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.configuration.rest;
+
+import java.io.IOException;
+
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpRequest;
+import org.springframework.http.client.ClientHttpRequestExecution;
+import org.springframework.http.client.ClientHttpRequestInterceptor;
+import org.springframework.http.client.ClientHttpResponse;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ *
+ */
+public class BasicAuthorizationHttpRequestInterceptor implements ClientHttpRequestInterceptor {
+
+    private final String authorization;
+
+    public BasicAuthorizationHttpRequestInterceptor(final String authorization) {
+        this.authorization = authorization;
+    }
+
+    @Override
+    public ClientHttpResponse intercept(final HttpRequest request, final byte[] body,
+            final ClientHttpRequestExecution execution) throws IOException {
+        final HttpHeaders headers = request.getHeaders();
+        headers.add("Authorization", authorization);
+        return execution.execute(request, body);
+    }
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/HttpClientConnectionConfiguration.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/HttpClientConnectionConfiguration.java
new file mode 100644 (file)
index 0000000..a465b53
--- /dev/null
@@ -0,0 +1,87 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.configuration.rest;
+
+import java.util.concurrent.TimeUnit;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+@Service
+public class HttpClientConnectionConfiguration {
+
+    @Value(value = "${rest.http.client.configuration.connTimeOutInSec:10}")
+    private int connectionTimeOutInSeconds;
+
+    @Value(value = "${rest.http.client.configuration.socketTimeOutInSec:180}")
+    private int socketTimeOutInSeconds;
+
+    @Value(value = "${rest.http.client.configuration.socketTimeOutInSec:600}")
+    private int timeToLiveInSeconds;
+
+    @Value(value = "${rest.http.client.configuration.maxConnections:10}")
+    private int maxConnections;
+
+    @Value(value = "${rest.http.client.configuration.maxConnectionsPerRoute:2}")
+    private int maxConnectionsPerRoute;
+
+    /**
+     * @return the socketTimeOut
+     */
+    public int getSocketTimeOutInMiliSeconds() {
+        return (int) TimeUnit.SECONDS.toMillis(socketTimeOutInSeconds);
+    }
+
+    /**
+     * @return the maxConnections
+     */
+    public int getMaxConnections() {
+        return maxConnections;
+    }
+
+    /**
+     * @return the maxConnectionsPerRoute
+     */
+    public int getMaxConnectionsPerRoute() {
+        return maxConnectionsPerRoute;
+    }
+
+    /**
+     * @return the connectionTimeOut
+     */
+    public int getConnectionTimeOutInMilliSeconds() {
+        return (int) TimeUnit.SECONDS.toMillis(connectionTimeOutInSeconds);
+    }
+
+    /**
+     * @return the timeToLive
+     */
+    public int getTimeToLiveInMins() {
+        return (int) TimeUnit.SECONDS.toMinutes(timeToLiveInSeconds);
+    }
+
+    @Override
+    public String toString() {
+        return "HttpClientConnectionConfiguration [connectionTimeOutInSeconds=" + connectionTimeOutInSeconds
+                + ", socketTimeOutInSeconds=" + socketTimeOutInSeconds + ", timeToLiveInSeconds=" + timeToLiveInSeconds
+                + ", maxConnections=" + maxConnections + ", maxConnectionsPerRoute=" + maxConnectionsPerRoute + "]";
+    }
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/HttpServiceProviderConfiguration.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/HttpServiceProviderConfiguration.java
new file mode 100644 (file)
index 0000000..31cd12b
--- /dev/null
@@ -0,0 +1,73 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.configuration.rest;
+
+import static org.onap.so.montoring.configuration.rest.RestTemplateConfigration.CAMUNDA_REST_TEMPLATE;
+import static org.onap.so.montoring.configuration.rest.RestTemplateConfigration.DATABASE_REST_TEMPLATE;
+
+import org.onap.so.montoring.rest.service.HttpRestServiceProvider;
+import org.onap.so.montoring.rest.service.HttpRestServiceProviderImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.client.ClientHttpRequestInterceptor;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ *
+ */
+@Configuration
+public class HttpServiceProviderConfiguration {
+
+    public static final String DATABASE_HTTP_REST_SERVICE_PROVIDER = "databaseHttpRestServiceProvider";
+    public static final String CAMUNDA_HTTP_REST_SERVICE_PROVIDER = "camundaHttpRestServiceProvider";
+
+    @Bean
+    @Qualifier(CAMUNDA_HTTP_REST_SERVICE_PROVIDER)
+    public HttpRestServiceProvider camundaHttpRestServiceProvider(
+            @Qualifier(CAMUNDA_REST_TEMPLATE) @Autowired final RestTemplate restTemplate,
+            @Value(value = "${camunda.rest.api.auth:#{null}}") final String authorization) {
+        return getHttpRestServiceProvider(restTemplate, authorization);
+    }
+
+    @Bean
+    @Qualifier(DATABASE_HTTP_REST_SERVICE_PROVIDER)
+    public HttpRestServiceProvider databaseHttpRestServiceProvider(
+            @Qualifier(DATABASE_REST_TEMPLATE) @Autowired final RestTemplate restTemplate,
+            @Value(value = "${mso.database.rest.api.auth:#{null}}") final String authorization) {
+
+        return getHttpRestServiceProvider(restTemplate, authorization);
+    }
+
+    private HttpRestServiceProvider getHttpRestServiceProvider(final RestTemplate restTemplate,
+            final String authorization) {
+        if (authorization != null && !authorization.isEmpty()) {
+            final ClientHttpRequestInterceptor authorizationInterceptor =
+                    new BasicAuthorizationHttpRequestInterceptor(authorization);
+            restTemplate.getInterceptors().add(authorizationInterceptor);
+        }
+        return new HttpRestServiceProviderImpl(restTemplate);
+    }
+
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/RestTemplateConfigration.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/configuration/rest/RestTemplateConfigration.java
new file mode 100644 (file)
index 0000000..914e5d6
--- /dev/null
@@ -0,0 +1,84 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.configuration.rest;
+
+import java.util.concurrent.TimeUnit;
+
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+@Configuration
+public class RestTemplateConfigration {
+
+    public static final String DATABASE_REST_TEMPLATE = "databaseRestTemplate";
+
+    public static final String CAMUNDA_REST_TEMPLATE = "camundaRestTemplate";
+
+    @Autowired
+    private HttpClientConnectionConfiguration clientConnectionConfiguration;
+
+    @Bean
+    @Qualifier(CAMUNDA_REST_TEMPLATE)
+    public RestTemplate camundaRestTemplate() {
+        return new RestTemplate(httpComponentsClientHttpRequestFactory());
+    }
+
+    @Bean
+    @Qualifier(DATABASE_REST_TEMPLATE)
+    public RestTemplate dataBasecamundaRestTemplate() {
+        return new RestTemplate(httpComponentsClientHttpRequestFactory());
+    }
+
+    @Bean
+    public HttpComponentsClientHttpRequestFactory httpComponentsClientHttpRequestFactory() {
+        return new HttpComponentsClientHttpRequestFactory(httpClient());
+    }
+
+    @Bean
+    public CloseableHttpClient httpClient() {
+        return HttpClientBuilder.create().setConnectionManager(poolingHttpClientConnectionManager())
+                .setMaxConnPerRoute(clientConnectionConfiguration.getMaxConnectionsPerRoute())
+                .setMaxConnTotal(clientConnectionConfiguration.getMaxConnections())
+                .setDefaultRequestConfig(requestConfig()).build();
+    }
+
+    @Bean
+    public PoolingHttpClientConnectionManager poolingHttpClientConnectionManager() {
+        return new PoolingHttpClientConnectionManager(clientConnectionConfiguration.getTimeToLiveInMins(),
+                TimeUnit.MINUTES);
+    }
+
+    @Bean
+    public RequestConfig requestConfig() {
+        return RequestConfig.custom().setSocketTimeout(clientConnectionConfiguration.getSocketTimeOutInMiliSeconds())
+                .setConnectTimeout(clientConnectionConfiguration.getConnectionTimeOutInMilliSeconds()).build();
+    }
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/db/service/DatabaseServiceProvider.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/db/service/DatabaseServiceProvider.java
new file mode 100644 (file)
index 0000000..b848180
--- /dev/null
@@ -0,0 +1,36 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.db.service;
+
+import java.util.List;
+import java.util.Map;
+
+import org.onap.so.montoring.model.SoInfraRequest;
+
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+public interface DatabaseServiceProvider {
+
+    List<SoInfraRequest> getSoInfraRequest(final Map<String, String[]> filters, final long startTime,
+            final long endTime, final Integer maxResult);
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/db/service/DatabaseServiceProviderImpl.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/db/service/DatabaseServiceProviderImpl.java
new file mode 100644 (file)
index 0000000..f6cbc3c
--- /dev/null
@@ -0,0 +1,89 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.db.service;
+
+import static org.onap.so.montoring.configuration.rest.HttpServiceProviderConfiguration.DATABASE_HTTP_REST_SERVICE_PROVIDER;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.onap.so.montoring.camunda.model.SoActiveInfraRequests;
+import org.onap.so.montoring.configuration.database.DatabaseUrlProvider;
+import org.onap.so.montoring.model.SoInfraRequest;
+import org.onap.so.montoring.model.SoInfraRequestBuilder;
+import org.onap.so.montoring.rest.service.HttpRestServiceProvider;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Service;
+
+import com.google.common.base.Optional;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+@Service
+public class DatabaseServiceProviderImpl implements DatabaseServiceProvider {
+
+    private final DatabaseUrlProvider urlProvider;
+
+    private final HttpRestServiceProvider httpRestServiceProvider;
+
+    @Autowired
+    public DatabaseServiceProviderImpl(final DatabaseUrlProvider urlProvider,
+            @Qualifier(DATABASE_HTTP_REST_SERVICE_PROVIDER) @Autowired final HttpRestServiceProvider httpRestServiceProvider) {
+        this.urlProvider = urlProvider;
+        this.httpRestServiceProvider = httpRestServiceProvider;
+    }
+
+    @Override
+    public List<SoInfraRequest> getSoInfraRequest(final Map<String, String[]> filters, final long startTime,
+            final long endTime, final Integer maxResult) {
+        final String url = urlProvider.getSearchUrl(startTime, endTime, maxResult);
+
+        final Optional<SoActiveInfraRequests[]> optionalRequests =
+                httpRestServiceProvider.postHttpRequest(filters, url, SoActiveInfraRequests[].class);
+        if (optionalRequests.isPresent()) {
+            return getSoInfraRequest(optionalRequests.get());
+        }
+        return Collections.emptyList();
+    }
+
+
+    private List<SoInfraRequest> getSoInfraRequest(final SoActiveInfraRequests[] requests) {
+        final List<SoInfraRequest> result = new ArrayList<>(requests.length);
+        for (final SoActiveInfraRequests activeRequests : requests) {
+            final SoInfraRequest soInfraRequest =
+                    new SoInfraRequestBuilder().setRequestId(activeRequests.getRequestId())
+                            .setServiceInstanceId(activeRequests.getServiceInstanceId())
+                            .setNetworkId(activeRequests.getNetworkId()).setEndTime(activeRequests.getEndTime())
+                            .setRequestStatus(activeRequests.getRequestStatus())
+                            .setServiceIstanceName(activeRequests.getServiceInstanceName())
+                            .setServiceType(activeRequests.getServiceType()).setStartTime(activeRequests.getStartTime())
+                            .build();
+            result.add(soInfraRequest);
+
+        }
+        return result;
+    }
+
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/exception/InvalidRestRequestException.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/exception/InvalidRestRequestException.java
new file mode 100644 (file)
index 0000000..8e4c751
--- /dev/null
@@ -0,0 +1,36 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.exception;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ *
+ */
+public class InvalidRestRequestException extends RuntimeException {
+    private static final long serialVersionUID = -1158414939006977465L;
+
+    public InvalidRestRequestException(final String message) {
+        super(message);
+    }
+
+    public InvalidRestRequestException(final String message, final Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/exception/RestProcessingException.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/exception/RestProcessingException.java
new file mode 100644 (file)
index 0000000..2d3544e
--- /dev/null
@@ -0,0 +1,37 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.exception;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ *
+ */
+public class RestProcessingException extends RuntimeException {
+
+    private static final long serialVersionUID = 16862313537198441L;
+
+    public RestProcessingException(final String message) {
+        super(message);
+    }
+
+    public RestProcessingException(final String message, final Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/ActivityInstanceDetail.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/ActivityInstanceDetail.java
new file mode 100644 (file)
index 0000000..5691f23
--- /dev/null
@@ -0,0 +1,192 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.model;
+
+import static org.onap.so.montoring.utils.ObjectEqualsUtils.isEqual;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ *
+ */
+public class ActivityInstanceDetail {
+    private final String activityId;
+    private final String activityName;
+    private final String activityType;
+    private final String processInstanceId;
+    private final String calledProcessInstanceId;
+    private final String startTime;
+    private final String endTime;
+    private final String durationInMilliseconds;
+
+    public ActivityInstanceDetail(final ActivityInstanceDetailBuilder builder) {
+        this.activityId = builder.activityId;
+        this.activityName = builder.activityName;
+        this.activityType = builder.activityType;
+        this.processInstanceId = builder.processInstanceId;
+        this.calledProcessInstanceId = builder.calledProcessInstanceId;
+        this.startTime = builder.startTime;
+        this.endTime = builder.endTime;
+        this.durationInMilliseconds = builder.durationInMilliseconds;
+    }
+
+    /**
+     * @return the activityId
+     */
+    public String getActivityId() {
+        return activityId;
+    }
+
+    /**
+     * @return the activityName
+     */
+    public String getActivityName() {
+        return activityName;
+    }
+
+    /**
+     * @return the activityType
+     */
+    public String getActivityType() {
+        return activityType;
+    }
+
+    /**
+     * @return the processInstanceId
+     */
+    public String getProcessInstanceId() {
+        return processInstanceId;
+    }
+
+    /**
+     * @return the calledProcessInstanceId
+     */
+    public String getCalledProcessInstanceId() {
+        return calledProcessInstanceId;
+    }
+
+    /**
+     * @return the startTime
+     */
+    public String getStartTime() {
+        return startTime;
+    }
+
+    /**
+     * @return the endTime
+     */
+    public String getEndTime() {
+        return endTime;
+    }
+
+    /**
+     * @return the durationInMillis
+     */
+    public String getDurationInMillis() {
+        return durationInMilliseconds;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((activityId == null) ? 0 : activityId.hashCode());
+        result = prime * result + ((activityName == null) ? 0 : activityName.hashCode());
+        result = prime * result + ((activityType == null) ? 0 : activityType.hashCode());
+        result = prime * result + ((calledProcessInstanceId == null) ? 0 : calledProcessInstanceId.hashCode());
+        result = prime * result + ((durationInMilliseconds == null) ? 0 : durationInMilliseconds.hashCode());
+        result = prime * result + ((endTime == null) ? 0 : endTime.hashCode());
+        result = prime * result + ((processInstanceId == null) ? 0 : processInstanceId.hashCode());
+        result = prime * result + ((startTime == null) ? 0 : startTime.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(final Object obj) {
+
+        if (obj instanceof ActivityInstanceDetail) {
+            final ActivityInstanceDetail other = (ActivityInstanceDetail) obj;
+            return isEqual(activityId, other.activityId) && isEqual(activityName, other.activityName)
+                    && isEqual(activityType, other.activityType) && isEqual(processInstanceId, other.processInstanceId)
+                    && isEqual(calledProcessInstanceId, other.calledProcessInstanceId)
+                    && isEqual(startTime, other.startTime) && isEqual(endTime, other.endTime)
+                    && isEqual(durationInMilliseconds, other.durationInMilliseconds);
+        }
+
+        return false;
+    }
+
+
+    public static final class ActivityInstanceDetailBuilder {
+
+        private String activityId;
+        private String activityName;
+        private String activityType;
+        private String processInstanceId;
+        private String calledProcessInstanceId;
+        private String startTime;
+        private String endTime;
+        private String durationInMilliseconds;
+
+        public ActivityInstanceDetailBuilder activityId(final String activityId) {
+            this.activityId = activityId;
+            return this;
+        }
+
+        public ActivityInstanceDetailBuilder activityName(final String activityName) {
+            this.activityName = activityName;
+            return this;
+        }
+
+        public ActivityInstanceDetailBuilder activityType(final String activityType) {
+            this.activityType = activityType;
+            return this;
+        }
+
+        public ActivityInstanceDetailBuilder processInstanceId(final String processInstanceId) {
+            this.processInstanceId = processInstanceId;
+            return this;
+        }
+
+        public ActivityInstanceDetailBuilder calledProcessInstanceId(final String calledProcessInstanceId) {
+            this.calledProcessInstanceId = calledProcessInstanceId;
+            return this;
+        }
+
+        public ActivityInstanceDetailBuilder startTime(final String startTime) {
+            this.startTime = startTime;
+            return this;
+        }
+
+        public ActivityInstanceDetailBuilder endTime(final String endTime) {
+            this.endTime = endTime;
+            return this;
+        }
+
+        public ActivityInstanceDetailBuilder durationInMilliseconds(final String durationInMilliseconds) {
+            this.durationInMilliseconds = durationInMilliseconds;
+            return this;
+        }
+
+        public ActivityInstanceDetail build() {
+            return new ActivityInstanceDetail(this);
+        }
+    }
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/ProcessDefinitionDetail.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/ProcessDefinitionDetail.java
new file mode 100644 (file)
index 0000000..164a392
--- /dev/null
@@ -0,0 +1,76 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.model;
+
+import static org.onap.so.montoring.utils.ObjectEqualsUtils.isEqual;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ *
+ */
+public class ProcessDefinitionDetail {
+
+    private final String processDefinitionId;
+    private final String processDefinitionXml;
+
+    public ProcessDefinitionDetail(final String processDefinitionId, final String processDefinitionXml) {
+        this.processDefinitionId = processDefinitionId;
+        this.processDefinitionXml = processDefinitionXml;
+    }
+
+    /**
+     * @return the processDefinitionId
+     */
+    public String getProcessDefinitionId() {
+        return processDefinitionId;
+    }
+
+    /**
+     * @return the processDefinitionXml
+     */
+    public String getProcessDefinitionXml() {
+        return processDefinitionXml;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((processDefinitionId == null) ? 0 : processDefinitionId.hashCode());
+        result = prime * result + ((processDefinitionXml == null) ? 0 : processDefinitionXml.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(final Object obj) {
+        if (obj instanceof ProcessDefinitionDetail) {
+            final ProcessDefinitionDetail other = (ProcessDefinitionDetail) obj;
+            return isEqual(processDefinitionId, other.processDefinitionId)
+                    && isEqual(processDefinitionXml, other.processDefinitionXml);
+        }
+        return false;
+    }
+
+    @Override
+    public String toString() {
+        return "ProcessDefinitionDetail [processDefinitionId=" + processDefinitionId + ", processDefinitionXml="
+                + processDefinitionXml + "]";
+    }
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/ProcessInstanceDetail.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/ProcessInstanceDetail.java
new file mode 100644 (file)
index 0000000..a96b6c3
--- /dev/null
@@ -0,0 +1,103 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.model;
+
+import static org.onap.so.montoring.utils.ObjectEqualsUtils.isEqual;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+public class ProcessInstanceDetail {
+
+    private final String processInstanceId;
+    private final String processDefinitionId;
+    private final String processDefinitionName;
+    private final String superProcessInstanceId;
+
+
+    public ProcessInstanceDetail(final String processInstanceId, final String processDefinitionId,
+            final String processDefinitionName, final String superProcessInstanceId) {
+        this.processInstanceId = processInstanceId;
+        this.processDefinitionId = processDefinitionId;
+        this.processDefinitionName = processDefinitionName;
+        this.superProcessInstanceId = superProcessInstanceId;
+    }
+
+    /**
+     * @return the processInstanceId
+     */
+    public String getProcessInstanceId() {
+        return processInstanceId;
+    }
+
+    /**
+     * @return the processDefinitionId
+     */
+    public String getProcessDefinitionId() {
+        return processDefinitionId;
+    }
+
+    /**
+     * @return the processDefinitionName
+     */
+    public String getProcessDefinitionName() {
+        return processDefinitionName;
+    }
+
+    /**
+     * @return the superProcessInstanceId
+     */
+    public String getSuperProcessInstanceId() {
+        return superProcessInstanceId;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((processInstanceId == null) ? 0 : processInstanceId.hashCode());
+        result = prime * result + ((processDefinitionId == null) ? 0 : processDefinitionId.hashCode());
+        result = prime * result + ((processDefinitionName == null) ? 0 : processDefinitionName.hashCode());
+        result = prime * result + ((superProcessInstanceId == null) ? 0 : superProcessInstanceId.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(final Object obj) {
+        if (obj instanceof ProcessInstanceDetail) {
+            final ProcessInstanceDetail other = (ProcessInstanceDetail) obj;
+
+            return isEqual(processInstanceId, other.processInstanceId)
+                    && isEqual(processDefinitionId, other.processDefinitionId)
+                    && isEqual(processDefinitionName, other.processDefinitionName)
+                    && isEqual(superProcessInstanceId, other.superProcessInstanceId);
+        }
+        return false;
+    }
+
+    @Override
+    public String toString() {
+        return "ProcessInstanceDetail [processInstanceId=" + processInstanceId + ", processDefinitionId="
+                + processDefinitionId + ", processDefinitionName=" + processDefinitionName + ", superProcessInstanceId="
+                + superProcessInstanceId + "]";
+    }
+
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/ProcessInstanceIdDetail.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/ProcessInstanceIdDetail.java
new file mode 100644 (file)
index 0000000..b0bb7ac
--- /dev/null
@@ -0,0 +1,66 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.model;
+
+import static org.onap.so.montoring.utils.ObjectEqualsUtils.isEqual;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+public class ProcessInstanceIdDetail {
+
+    private final String processInstanceId;
+
+
+    public ProcessInstanceIdDetail(final String processInstanceId) {
+        this.processInstanceId = processInstanceId;
+    }
+
+    /**
+     * @return the processInstancId
+     */
+    public String getProcessInstanceId() {
+        return processInstanceId;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((processInstanceId == null) ? 0 : processInstanceId.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(final Object obj) {
+        if (obj instanceof ProcessInstanceIdDetail) {
+            final ProcessInstanceIdDetail other = (ProcessInstanceIdDetail) obj;
+
+            return isEqual(processInstanceId, other.processInstanceId);
+        }
+        return false;
+    }
+
+    @Override
+    public String toString() {
+        return "ProcessInstanceIdDetail [processInstanceId=" + processInstanceId + "]";
+    }
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/ProcessInstanceVariableDetail.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/ProcessInstanceVariableDetail.java
new file mode 100644 (file)
index 0000000..9674dfe
--- /dev/null
@@ -0,0 +1,84 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.model;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+import static org.onap.so.montoring.utils.ObjectEqualsUtils.isEqual;
+
+public class ProcessInstanceVariableDetail {
+
+    private final String name;
+    private final Object value;
+    private final String type;
+
+    public ProcessInstanceVariableDetail(final String name, final Object value, final String type) {
+        this.name = name;
+        this.value = value;
+        this.type = type;
+    }
+
+    /**
+     * @return the name
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * @return the value
+     */
+    public Object getValue() {
+        return value;
+    }
+
+    /**
+     * @return the type
+     */
+    public String getType() {
+        return type;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((name == null) ? 0 : name.hashCode());
+        result = prime * result + ((value == null) ? 0 : value.hashCode());
+        result = prime * result + ((type == null) ? 0 : type.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(final Object obj) {
+        if (obj instanceof ProcessInstanceVariableDetail) {
+            final ProcessInstanceVariableDetail other = (ProcessInstanceVariableDetail) obj;
+
+            return isEqual(name, other.name) && isEqual(value, other.value) && isEqual(type, other.type);
+        }
+        return false;
+    }
+
+    @Override
+    public String toString() {
+        return "ProcessInstanceVariableDetail [name=" + name + ", value=" + value + ", type=" + type + "]";
+    }
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/SoInfraRequest.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/SoInfraRequest.java
new file mode 100644 (file)
index 0000000..ca39249
--- /dev/null
@@ -0,0 +1,132 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.model;
+
+import static org.onap.so.montoring.utils.ObjectEqualsUtils.isEqual;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+public class SoInfraRequest {
+
+    private final String requestId;
+    private final String serviceInstanceId;
+    private final String serviceIstanceName;
+    private final String networkId;
+    private final String requestStatus;
+    private final String serviceType;
+    private final String startTime;
+    private final String endTime;
+
+    public SoInfraRequest(final SoInfraRequestBuilder requestBuilder) {
+        this.requestId = requestBuilder.getRequestId();
+        this.serviceInstanceId = requestBuilder.getServiceInstanceId();
+        this.serviceIstanceName = requestBuilder.getServiceIstanceName();
+        this.networkId = requestBuilder.getNetworkId();
+        this.requestStatus = requestBuilder.getRequestStatus();
+        this.serviceType = requestBuilder.getServiceType();
+        this.startTime = requestBuilder.getStartTime();
+        this.endTime = requestBuilder.getEndTime();
+    }
+
+    /**
+     * @return the requestId
+     */
+    public String getRequestId() {
+        return requestId;
+    }
+
+    /**
+     * @return the serviceInstanceId
+     */
+    public String getServiceInstanceId() {
+        return serviceInstanceId;
+    }
+
+    /**
+     * @return the serviceIstanceName
+     */
+    public String getServiceIstanceName() {
+        return serviceIstanceName;
+    }
+
+    /**
+     * @return the networkId
+     */
+    public String getNetworkId() {
+        return networkId;
+    }
+
+    /**
+     * @return the requestStatus
+     */
+    public String getRequestStatus() {
+        return requestStatus;
+    }
+
+    /**
+     * @return the serviceType
+     */
+    public String getServiceType() {
+        return serviceType;
+    }
+
+    /**
+     * @return the startTime
+     */
+    public String getStartTime() {
+        return startTime;
+    }
+
+    /**
+     * @return the endTime
+     */
+    public String getEndTime() {
+        return endTime;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((endTime == null) ? 0 : endTime.hashCode());
+        result = prime * result + ((networkId == null) ? 0 : networkId.hashCode());
+        result = prime * result + ((requestId == null) ? 0 : requestId.hashCode());
+        result = prime * result + ((requestStatus == null) ? 0 : requestStatus.hashCode());
+        result = prime * result + ((serviceInstanceId == null) ? 0 : serviceInstanceId.hashCode());
+        result = prime * result + ((serviceIstanceName == null) ? 0 : serviceIstanceName.hashCode());
+        result = prime * result + ((serviceType == null) ? 0 : serviceType.hashCode());
+        result = prime * result + ((startTime == null) ? 0 : startTime.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(final Object obj) {
+        if (obj instanceof SoInfraRequest) {
+            final SoInfraRequest other = (SoInfraRequest) obj;
+            return isEqual(requestId, other.requestId) && isEqual(serviceInstanceId, other.serviceInstanceId)
+                    && isEqual(serviceIstanceName, other.serviceIstanceName) && isEqual(networkId, other.networkId)
+                    && isEqual(requestStatus, other.requestStatus) && isEqual(serviceType, other.serviceType)
+                    && isEqual(startTime, other.startTime) && isEqual(endTime, other.endTime);
+        }
+        return false;
+    }
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/SoInfraRequestBuilder.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/model/SoInfraRequestBuilder.java
new file mode 100644 (file)
index 0000000..3b996f7
--- /dev/null
@@ -0,0 +1,148 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.model;
+
+import java.sql.Timestamp;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+public class SoInfraRequestBuilder {
+
+    private String requestId;
+    private String serviceInstanceId;
+    private String serviceIstanceName;
+    private String networkId;
+    private String requestStatus;
+    private String serviceType;
+    private String startTime;
+    private String endTime;
+
+    public SoInfraRequestBuilder setRequestId(final String requestId) {
+        this.requestId = requestId;
+        return this;
+    }
+
+    public SoInfraRequestBuilder setServiceInstanceId(final String serviceInstanceId) {
+        this.serviceInstanceId = serviceInstanceId;
+        return this;
+    }
+
+    public SoInfraRequestBuilder setServiceIstanceName(final String serviceIstanceName) {
+        this.serviceIstanceName = serviceIstanceName;
+        return this;
+    }
+
+    public SoInfraRequestBuilder setNetworkId(final String networkId) {
+        this.networkId = networkId;
+        return this;
+    }
+
+    public SoInfraRequestBuilder setRequestStatus(final String requestStatus) {
+        this.requestStatus = requestStatus;
+        return this;
+    }
+
+    public SoInfraRequestBuilder setServiceType(final String serviceType) {
+        this.serviceType = serviceType;
+        return this;
+    }
+
+    public SoInfraRequestBuilder setEndTime(final String endTime) {
+        this.endTime = endTime;
+        return this;
+    }
+
+    public SoInfraRequestBuilder setEndTime(final Timestamp endTime) {
+        this.endTime = endTime != null ? endTime.toString() : null;
+        return this;
+    }
+
+
+    public SoInfraRequestBuilder setStartTime(final String startTime) {
+        this.startTime = startTime;
+        return this;
+    }
+
+    public SoInfraRequestBuilder setStartTime(final Timestamp startTime) {
+        this.startTime = startTime != null ? startTime.toString() : null;
+        return this;
+    }
+
+    public SoInfraRequest build() {
+        return new SoInfraRequest(this);
+    }
+
+    /**
+     * @return the requestId
+     */
+    public String getRequestId() {
+        return requestId;
+    }
+
+    /**
+     * @return the serviceInstanceId
+     */
+    public String getServiceInstanceId() {
+        return serviceInstanceId;
+    }
+
+    /**
+     * @return the serviceIstanceName
+     */
+    public String getServiceIstanceName() {
+        return serviceIstanceName;
+    }
+
+    /**
+     * @return the networkId
+     */
+    public String getNetworkId() {
+        return networkId;
+    }
+
+    /**
+     * @return the requestStatus
+     */
+    public String getRequestStatus() {
+        return requestStatus;
+    }
+
+    /**
+     * @return the serviceType
+     */
+    public String getServiceType() {
+        return serviceType;
+    }
+
+    /**
+     * @return the startTime
+     */
+    public String getStartTime() {
+        return startTime;
+    }
+
+    /**
+     * @return the endTime
+     */
+    public String getEndTime() {
+        return endTime;
+    }
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/rest/service/CamundaProcessDataServiceProvider.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/rest/service/CamundaProcessDataServiceProvider.java
new file mode 100644 (file)
index 0000000..81e30f1
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.rest.service;
+
+import java.util.List;
+
+import org.onap.so.montoring.model.ActivityInstanceDetail;
+import org.onap.so.montoring.model.ProcessDefinitionDetail;
+import org.onap.so.montoring.model.ProcessInstanceDetail;
+import org.onap.so.montoring.model.ProcessInstanceIdDetail;
+import org.onap.so.montoring.model.ProcessInstanceVariableDetail;
+
+import com.google.common.base.Optional;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+public interface CamundaProcessDataServiceProvider {
+
+    Optional<ProcessInstanceIdDetail> getProcessInstanceIdDetail(final String requestId);
+    
+    Optional<ProcessInstanceDetail> getSingleProcessInstanceDetail(final String processInstanceId);
+
+    Optional<ProcessDefinitionDetail> getProcessDefinition(final String processDefinitionId);
+    
+    List<ActivityInstanceDetail> getActivityInstance(final String processInstanceId);
+    
+    List<ProcessInstanceVariableDetail> getProcessInstanceVariable(final String processInstanceId);
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/rest/service/CamundaProcessDataServiceProviderImpl.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/rest/service/CamundaProcessDataServiceProviderImpl.java
new file mode 100644 (file)
index 0000000..b1815b5
--- /dev/null
@@ -0,0 +1,174 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.rest.service;
+
+import static org.onap.so.montoring.configuration.rest.HttpServiceProviderConfiguration.CAMUNDA_HTTP_REST_SERVICE_PROVIDER;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.onap.so.montoring.camunda.model.ActivityInstance;
+import org.onap.so.montoring.camunda.model.ProcessDefinition;
+import org.onap.so.montoring.camunda.model.ProcessInstance;
+import org.onap.so.montoring.camunda.model.ProcessInstanceVariable;
+import org.onap.so.montoring.configuration.camunda.CamundaRestUrlProvider;
+import org.onap.so.montoring.model.ActivityInstanceDetail;
+import org.onap.so.montoring.model.ProcessDefinitionDetail;
+import org.onap.so.montoring.model.ProcessInstanceDetail;
+import org.onap.so.montoring.model.ProcessInstanceIdDetail;
+import org.onap.so.montoring.model.ProcessInstanceVariableDetail;
+import org.slf4j.ext.XLogger;
+import org.slf4j.ext.XLoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Service;
+
+import com.google.common.base.Optional;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+@Service
+public class CamundaProcessDataServiceProviderImpl implements CamundaProcessDataServiceProvider {
+    private static final XLogger LOGGER = XLoggerFactory.getXLogger(CamundaProcessDataServiceProviderImpl.class);
+
+    private final CamundaRestUrlProvider urlProvider;
+
+    private final HttpRestServiceProvider httpRestServiceProvider;
+
+    @Autowired
+    public CamundaProcessDataServiceProviderImpl(final CamundaRestUrlProvider urlProvider,
+            @Qualifier(CAMUNDA_HTTP_REST_SERVICE_PROVIDER) @Autowired final HttpRestServiceProvider httpRestServiceProvider) {
+        this.urlProvider = urlProvider;
+        this.httpRestServiceProvider = httpRestServiceProvider;
+    }
+
+    @Override
+    public Optional<ProcessInstanceIdDetail> getProcessInstanceIdDetail(final String requestId) {
+        final String url = urlProvider.getHistoryProcessInstanceUrl(requestId);
+        final Optional<ProcessInstance[]> processInstances =
+                httpRestServiceProvider.getHttpResponse(url, ProcessInstance[].class);
+
+        if (processInstances.isPresent()) {
+            final ProcessInstance[] instances = processInstances.get();
+            LOGGER.debug("found process instance for request id: {}, result size: {}", requestId, instances.length);
+
+            if (instances.length > 0) {
+                for (int index = 0; index < instances.length; index++) {
+                    final ProcessInstance processInstance = instances[index];
+                    if (processInstance.getSuperProcessInstanceId() == null) {
+                        return Optional.of(new ProcessInstanceIdDetail(processInstance.getId()));
+                    }
+                    LOGGER.debug("found sub process instance id with super process instanceId: {}",
+                            processInstance.getSuperProcessInstanceId());
+                }
+            }
+        }
+        LOGGER.error("Unable to find process intance for request id: {}", requestId);
+        return Optional.absent();
+    }
+
+    @Override
+    public Optional<ProcessInstanceDetail> getSingleProcessInstanceDetail(final String processInstanceId) {
+        final String url = urlProvider.getSingleProcessInstanceUrl(processInstanceId);
+        final Optional<ProcessInstance> processInstances =
+                httpRestServiceProvider.getHttpResponse(url, ProcessInstance.class);
+
+        if (processInstances.isPresent()) {
+            final ProcessInstance processInstance = processInstances.get();
+
+            final ProcessInstanceDetail instanceDetail =
+                    new ProcessInstanceDetail(processInstance.getId(), processInstance.getProcessDefinitionId(),
+                            processInstance.getProcessDefinitionName(), processInstance.getSuperProcessInstanceId());
+            return Optional.of(instanceDetail);
+
+        }
+        LOGGER.error("Unable to find process intance for id: {}", processInstanceId);
+        return Optional.absent();
+    }
+
+
+    @Override
+    public Optional<ProcessDefinitionDetail> getProcessDefinition(final String processDefinitionId) {
+        final String url = urlProvider.getProcessDefinitionUrl(processDefinitionId);
+        final Optional<ProcessDefinition> response =
+                httpRestServiceProvider.getHttpResponse(url, ProcessDefinition.class);
+        if (response.isPresent()) {
+            final ProcessDefinition processDefinition = response.get();
+            final String xmlDefinition = processDefinition.getBpmn20Xml();
+            if (xmlDefinition != null) {
+                return Optional.of(new ProcessDefinitionDetail(processDefinitionId, xmlDefinition));
+            }
+        }
+        LOGGER.error("Unable to find process definition for processDefinitionId: {}", processDefinitionId);
+        return Optional.absent();
+    }
+
+    @Override
+    public List<ActivityInstanceDetail> getActivityInstance(final String processInstanceId) {
+        final String url = urlProvider.getActivityInstanceUrl(processInstanceId);
+        final Optional<ActivityInstance[]> response =
+                httpRestServiceProvider.getHttpResponse(url, ActivityInstance[].class);
+        if (response.isPresent()) {
+            final ActivityInstance[] activityInstances = response.get();
+            final List<ActivityInstanceDetail> activityInstanceDetails = new ArrayList<>(activityInstances.length);
+            for (int index = 0; index < activityInstances.length; index++) {
+
+                final ActivityInstance activityInstance = activityInstances[index];
+
+                activityInstanceDetails.add(new ActivityInstanceDetail.ActivityInstanceDetailBuilder()
+                        .activityId(activityInstance.getActivityId()).activityName(activityInstance.getActivityName())
+                        .activityType(activityInstance.getActivityType())
+                        .calledProcessInstanceId(activityInstance.getCalledProcessInstanceId())
+                        .startTime(activityInstance.getStartTime()).endTime(activityInstance.getEndTime())
+                        .durationInMilliseconds(activityInstance.getDurationInMillis())
+                        .processInstanceId(activityInstance.getProcessInstanceId()).build());
+
+            }
+            return activityInstanceDetails;
+        }
+        LOGGER.error("Unable to find activity intance detail for process instance id: {}", processInstanceId);
+        return Collections.emptyList();
+    }
+
+    @Override
+    public List<ProcessInstanceVariableDetail> getProcessInstanceVariable(final String processInstanceId) {
+        final String url = urlProvider.getProcessInstanceVariablesUrl(processInstanceId);
+        final Optional<ProcessInstanceVariable[]> response =
+                httpRestServiceProvider.getHttpResponse(url, ProcessInstanceVariable[].class);
+        if (response.isPresent()) {
+            final ProcessInstanceVariable[] instanceVariables = response.get();
+            final List<ProcessInstanceVariableDetail> instanceVariableDetails =
+                    new ArrayList<>(instanceVariables.length);
+            for (int index = 0; index < instanceVariables.length; index++) {
+                final ProcessInstanceVariable processInstanceVariable = instanceVariables[index];
+                final ProcessInstanceVariableDetail instanceVariableDetail =
+                        new ProcessInstanceVariableDetail(processInstanceVariable.getName(),
+                                processInstanceVariable.getValue(), processInstanceVariable.getType());
+                instanceVariableDetails.add(instanceVariableDetail);
+            }
+            return instanceVariableDetails;
+        }
+        LOGGER.error("Unable to find process intance variable details for process instance id: {}", processInstanceId);
+        return Collections.emptyList();
+    }
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/rest/service/HttpRestServiceProvider.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/rest/service/HttpRestServiceProvider.java
new file mode 100644 (file)
index 0000000..eb80ddc
--- /dev/null
@@ -0,0 +1,33 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.rest.service;
+
+import com.google.common.base.Optional;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+public interface HttpRestServiceProvider {
+
+    public <T> Optional<T> getHttpResponse(final String url, final Class<T> clazz);
+
+    public <T> Optional<T> postHttpRequest(final Object object, final String url, final Class<T> clazz);
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/rest/service/HttpRestServiceProviderImpl.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/rest/service/HttpRestServiceProviderImpl.java
new file mode 100644 (file)
index 0000000..35e6038
--- /dev/null
@@ -0,0 +1,113 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.rest.service;
+
+import org.onap.so.montoring.exception.InvalidRestRequestException;
+import org.onap.so.montoring.exception.RestProcessingException;
+import org.slf4j.ext.XLogger;
+import org.slf4j.ext.XLoggerFactory;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.HttpClientErrorException;
+import org.springframework.web.client.RestClientException;
+import org.springframework.web.client.RestTemplate;
+
+import com.google.common.base.Optional;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+public class HttpRestServiceProviderImpl implements HttpRestServiceProvider {
+
+    private static final XLogger LOGGER = XLoggerFactory.getXLogger(HttpRestServiceProviderImpl.class);
+
+    private final RestTemplate restTemplate;
+
+    public HttpRestServiceProviderImpl(final RestTemplate restTemplate) {
+        this.restTemplate = restTemplate;
+    }
+
+    @Override
+    public <T> Optional<T> getHttpResponse(final String url, final Class<T> clazz) {
+        LOGGER.trace("Will invoke HTTP GET using URL: {}", url);
+        try {
+            final ResponseEntity<T> response = restTemplate.exchange(url, HttpMethod.GET, null, clazz);
+            if (!response.getStatusCode().equals(HttpStatus.OK)) {
+                LOGGER.error("Unable to invoke HTTP GET using URL: {}, Response Code: {}", url,
+                        response.getStatusCode());
+                return Optional.absent();
+            }
+
+            if (response.hasBody()) {
+                return Optional.of(response.getBody());
+            }
+        } catch (final HttpClientErrorException httpClientErrorException) {
+            LOGGER.error("Unable to invoke HTTP GET using url: {}, Response: {}", url,
+                    httpClientErrorException.getRawStatusCode(), httpClientErrorException);
+            final int rawStatusCode = httpClientErrorException.getRawStatusCode();
+            if (rawStatusCode == HttpStatus.BAD_REQUEST.value() || rawStatusCode == HttpStatus.NOT_FOUND.value()) {
+                throw new InvalidRestRequestException("No result found for given url: " + url);
+            }
+            throw new RestProcessingException("Unable to invoke HTTP GET using URL: " + url);
+
+        } catch (final RestClientException restClientException) {
+            LOGGER.error("Unable to invoke HTTP GET using url: {}", url, restClientException);
+            throw new RestProcessingException("Unable to invoke HTTP GET using URL: " + url, restClientException);
+        }
+
+        return Optional.absent();
+    }
+
+    @Override
+    public <T> Optional<T> postHttpRequest(final Object object, final String url, final Class<T> clazz) {
+        try {
+            final HttpEntity<?> request = new HttpEntity<>(object);
+            final ResponseEntity<T> response = restTemplate.exchange(url, HttpMethod.POST, request, clazz);
+            if (!response.getStatusCode().equals(HttpStatus.OK)) {
+                LOGGER.error("Unable to invoke HTTP GET using URL: {}, Response Code: {}", url,
+                        response.getStatusCode());
+                return Optional.absent();
+            }
+
+            if (response.hasBody()) {
+                return Optional.of(response.getBody());
+            }
+
+        } catch (final HttpClientErrorException httpClientErrorException) {
+            LOGGER.error("Unable to invoke HTTP POST using url: {}, Response: {}", url,
+                    httpClientErrorException.getRawStatusCode(), httpClientErrorException);
+            final int rawStatusCode = httpClientErrorException.getRawStatusCode();
+            if (rawStatusCode == HttpStatus.BAD_REQUEST.value() || rawStatusCode == HttpStatus.NOT_FOUND.value()) {
+                throw new InvalidRestRequestException("No result found for given url: " + url);
+            }
+            throw new RestProcessingException("Unable to invoke HTTP POST using URL: " + url);
+
+        } catch (final RestClientException restClientException) {
+            LOGGER.error("Unable to invoke HTTP POST using url: {}", url, restClientException);
+            throw new RestProcessingException("Unable to invoke HTTP POST using URL: " + url, restClientException);
+        }
+
+        return Optional.absent();
+    }
+
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/utils/ObjectEqualsUtils.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/montoring/utils/ObjectEqualsUtils.java
new file mode 100644 (file)
index 0000000..496ad26
--- /dev/null
@@ -0,0 +1,36 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.utils;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+public class ObjectEqualsUtils {
+
+    private ObjectEqualsUtils() {}
+
+    public static boolean isEqual(final Object objectA, final Object objectB) {
+        if (objectA == null) {
+            return objectB == null;
+        }
+        return objectA.equals(objectB);
+    }
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/configuration/CamundaConfigurationTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/configuration/CamundaConfigurationTest.java
new file mode 100644 (file)
index 0000000..de891dd
--- /dev/null
@@ -0,0 +1,44 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.configuration;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.onap.so.montoring.configuration.camunda.CamundaConfiguration;
+import org.onap.so.montoring.configuration.camunda.CamundaRestUrlProvider;
+
+
+/**
+ * @author waqas.ikram@ericsson.com
+ *
+ */
+public class CamundaConfigurationTest {
+
+    @Test
+    public void test_CamundaRestURIConfiguration_ValidUrl() {
+        final CamundaConfiguration objUnderTest = new CamundaConfiguration();
+        final CamundaRestUrlProvider provider = objUnderTest.camundaRestUrlProvider("http://localhost:8080", "default");
+        assertEquals(
+                "http://localhost:8080/default/history/activity-instance?processInstanceId=Deadpool&sortBy=startTime&sortOrder=asc",
+                provider.getActivityInstanceUrl("Deadpool"));
+    }
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/configuration/CamundaRestUrlProviderTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/configuration/CamundaRestUrlProviderTest.java
new file mode 100644 (file)
index 0000000..5fa9b44
--- /dev/null
@@ -0,0 +1,80 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.configuration;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.UUID;
+
+import org.junit.Test;
+import org.onap.so.montoring.configuration.camunda.CamundaRestUrlProvider;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+public class CamundaRestUrlProviderTest {
+    private static final String DEFAULT = "default";
+    private static final String CAMUNDA_REST_API_URL = "http://localhost:9080/engine-rest/engine/";
+    private static final String BASE_URL = CAMUNDA_REST_API_URL + DEFAULT;
+    private final CamundaRestUrlProvider objUnderTest = new CamundaRestUrlProvider(CAMUNDA_REST_API_URL, DEFAULT);
+    private static final String ID = UUID.randomUUID().toString();
+
+
+    @Test
+    public void test_GetHistoryProcessInstanceUrl() {
+        final String expectedUrl = BASE_URL + "/history/process-instance?variables=requestId_eq_" + ID;
+        final String actualUrl = objUnderTest.getHistoryProcessInstanceUrl(ID);
+        assertEquals(expectedUrl, actualUrl);
+    }
+
+    @Test
+    public void test_GetProcessInstanceUrl() {
+        final String expectedUrl = BASE_URL + "/history/process-instance/" + ID;
+        final String actualUrl = objUnderTest.getSingleProcessInstanceUrl(ID);
+        assertEquals(expectedUrl, actualUrl);
+    }
+
+
+    @Test
+    public void test_GetProcessDefinitionUrl() {
+        final String expectedUrl = BASE_URL + "/process-definition/" + ID + "/xml";
+        final String actualUrl = objUnderTest.getProcessDefinitionUrl(ID);
+        assertEquals(expectedUrl, actualUrl);
+
+    }
+
+    @Test
+    public void test_GetActivityIntanceUrl() {
+        final String expectedUrl =
+                BASE_URL + "/history/activity-instance?processInstanceId=" + ID + "&sortBy=startTime&sortOrder=asc";
+        final String actualUrl = objUnderTest.getActivityInstanceUrl(ID);
+        assertEquals(expectedUrl, actualUrl);
+
+    }
+
+    @Test
+    public void test_GetProcessInstanceVariablesUrl() {
+        final String expectedUrl = BASE_URL + "/history/variable-instance?processInstanceId=" + ID;
+        final String actualUrl = objUnderTest.getProcessInstanceVariablesUrl(ID);
+        assertEquals(expectedUrl, actualUrl);
+
+    }
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/configuration/HttpServiceProviderConfigurationTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/configuration/HttpServiceProviderConfigurationTest.java
new file mode 100644 (file)
index 0000000..13a2f98
--- /dev/null
@@ -0,0 +1,70 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.configuration;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+import org.onap.so.montoring.configuration.rest.HttpServiceProviderConfiguration;
+import org.onap.so.montoring.rest.service.HttpRestServiceProvider;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ *
+ */
+public class HttpServiceProviderConfigurationTest {
+
+    private final HttpServiceProviderConfiguration objUnderTest = new HttpServiceProviderConfiguration();
+    private static final String AUTHORIZATION =
+            "Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==";
+
+    @Test
+    public void test_CamundaHttpRestServiceProvider_NotNull() {
+
+        final HttpRestServiceProvider serviceProvider =
+                objUnderTest.camundaHttpRestServiceProvider(new RestTemplate(), AUTHORIZATION);
+
+        assertNotNull(serviceProvider);
+    }
+
+    @Test
+    public void test_DatabaseHttpRestServiceProvider_NotNull() {
+
+        final HttpRestServiceProvider serviceProvider =
+                objUnderTest.databaseHttpRestServiceProvider(new RestTemplate(), AUTHORIZATION);
+
+        assertNotNull(serviceProvider);
+    }
+
+    @Test
+    public void test_DatabaseHttpRestServiceProviderWithAuthorizationNullOrEmpty_NotNull() {
+
+        HttpRestServiceProvider serviceProvider =
+                objUnderTest.databaseHttpRestServiceProvider(new RestTemplate(), null);
+
+        assertNotNull(serviceProvider);
+
+        serviceProvider = objUnderTest.databaseHttpRestServiceProvider(new RestTemplate(), "");
+
+        assertNotNull(serviceProvider);
+    }
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/configuration/PojoClassesTests.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/configuration/PojoClassesTests.java
new file mode 100644 (file)
index 0000000..93dfa79
--- /dev/null
@@ -0,0 +1,82 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.configuration;
+
+import static org.junit.Assert.assertFalse;
+
+import java.util.Set;
+import java.util.regex.Pattern;
+
+import org.junit.Test;
+import org.onap.so.openpojo.rules.ToStringTester;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
+import org.springframework.core.type.filter.RegexPatternTypeFilter;
+
+import com.openpojo.reflection.filters.FilterPackageInfo;
+import com.openpojo.validation.Validator;
+import com.openpojo.validation.ValidatorBuilder;
+import com.openpojo.validation.test.impl.GetterTester;
+import com.openpojo.validation.test.impl.SetterTester;
+
+import nl.jqno.equalsverifier.EqualsVerifier;
+import nl.jqno.equalsverifier.Warning;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+public class PojoClassesTests {
+
+    @Test
+    public void test_camunda_module_pojo_classes() throws ClassNotFoundException {
+        test("org.onap.so.montoring.camunda.model");
+        assertEqualMethod("org.onap.so.montoring.camunda.model");
+    }
+
+    @Test
+    public void test_so_monitoring_pojo_classes() throws ClassNotFoundException {
+        test("org.onap.so.montoring.model");
+        assertEqualMethod("org.onap.so.montoring.model");
+    }
+
+    public void assertEqualMethod(final String pojoPackage) throws ClassNotFoundException {
+        final Set<BeanDefinition> classes = getBeanDefinition(pojoPackage);
+        assertFalse(classes.isEmpty());
+        for (final BeanDefinition bean : classes) {
+            final Class<?> clazz = Class.forName(bean.getBeanClassName());
+            if (!clazz.getName().endsWith("Builder")) {
+                EqualsVerifier.forClass(clazz).suppress(Warning.STRICT_INHERITANCE, Warning.NONFINAL_FIELDS).verify();
+            }
+        }
+    }
+
+    private Set<BeanDefinition> getBeanDefinition(final String pojoPackage) {
+        final ClassPathScanningCandidateComponentProvider provider =
+                new ClassPathScanningCandidateComponentProvider(false);
+        provider.addIncludeFilter(new RegexPatternTypeFilter(Pattern.compile(pojoPackage + ".*")));
+        return provider.findCandidateComponents(pojoPackage);
+    }
+
+    private void test(final String pojoPackage) {
+        final Validator validator = ValidatorBuilder.create().with(new SetterTester()).with(new GetterTester())
+                .with(new ToStringTester()).build();
+        validator.validate(pojoPackage, new FilterPackageInfo());
+    }
+}
diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/configuration/database/DatabaseUrlProviderTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/configuration/database/DatabaseUrlProviderTest.java
new file mode 100644 (file)
index 0000000..d9d2609
--- /dev/null
@@ -0,0 +1,52 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.configuration.database;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+public class DatabaseUrlProviderTest {
+
+    private static final int MAX_RESULT = 1;
+    private static final String URL = "http://localhost:8081/infraActiveRequests/";
+    private final DatabaseUrlProvider objUnderTest = new DatabaseUrlProvider(URL);
+
+    @Test
+    public void test_maxResultNull() {
+        final long from = System.currentTimeMillis();
+        final long to = System.currentTimeMillis();
+        final String actualUrl = objUnderTest.getSearchUrl(from, to, null);
+        assertEquals(URL + "v1/getInfraActiveRequests?from=" + from + "&to=" + to, actualUrl);
+    }
+
+    @Test
+    public void test_maxResultNotNull() {
+        final long from = System.currentTimeMillis();
+        final long to = System.currentTimeMillis();
+        final String actualUrl = objUnderTest.getSearchUrl(from, to, MAX_RESULT);
+        assertEquals(URL + "v1/getInfraActiveRequests?from=" + from + "&to=" + to + "&maxResult=" + MAX_RESULT,
+                actualUrl);
+    }
+}
diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/db/api/DatabaseServiceProviderTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/db/api/DatabaseServiceProviderTest.java
new file mode 100644 (file)
index 0000000..3bb7b28
--- /dev/null
@@ -0,0 +1,108 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.db.api;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import org.junit.Test;
+import org.onap.so.montoring.camunda.model.SoActiveInfraRequests;
+import org.onap.so.montoring.configuration.database.DatabaseUrlProvider;
+import org.onap.so.montoring.db.service.DatabaseServiceProvider;
+import org.onap.so.montoring.db.service.DatabaseServiceProviderImpl;
+import org.onap.so.montoring.model.SoInfraRequest;
+import org.onap.so.montoring.rest.service.HttpRestServiceProvider;
+
+import com.google.common.base.Optional;
+
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+public class DatabaseServiceProviderTest {
+
+    private final static DatabaseUrlProvider URL_PROVIDER =
+            new DatabaseUrlProvider("http://localhost:8081/infraActiveRequests/");
+
+    @Test
+    public void test_GetSoInfraRequest_WithEmptyFilters_EmptyList() {
+        final HttpRestServiceProvider mockServiceProvider = mock(HttpRestServiceProvider.class);
+        final String searchUrl = URL_PROVIDER.getSearchUrl(0, 0, null);
+        final Optional<SoActiveInfraRequests[]> response = Optional.of(new SoActiveInfraRequests[] {});
+
+        when(mockServiceProvider.postHttpRequest(eq(Collections.emptyMap()), eq(searchUrl),
+                eq(SoActiveInfraRequests[].class))).thenReturn(response);
+
+        final DatabaseServiceProvider objUnderTest = new DatabaseServiceProviderImpl(URL_PROVIDER, mockServiceProvider);
+
+        assertTrue(objUnderTest.getSoInfraRequest(Collections.emptyMap(), 0, 0, null).isEmpty());
+    }
+
+    @Test
+    public void test_GetSoInfraRequest_OptionalAbsent_EmptyList() {
+        final HttpRestServiceProvider mockServiceProvider = mock(HttpRestServiceProvider.class);
+        final String searchUrl = URL_PROVIDER.getSearchUrl(0, 0, null);
+        final Optional<SoActiveInfraRequests[]> response = Optional.absent();
+
+        when(mockServiceProvider.postHttpRequest(eq(Collections.emptyMap()), eq(searchUrl),
+                eq(SoActiveInfraRequests[].class))).thenReturn(response);
+
+        final DatabaseServiceProvider objUnderTest = new DatabaseServiceProviderImpl(URL_PROVIDER, mockServiceProvider);
+
+        assertTrue(objUnderTest.getSoInfraRequest(Collections.emptyMap(), 0, 0, null).isEmpty());
+    }
+
+
+    @Test
+    public void test_GetSoInfraRequest_WithFilters_InfraActiveRequestsList() {
+        final String searchUrl = URL_PROVIDER.getSearchUrl(0, 0, null);
+        final String requestID = UUID.randomUUID().toString();
+        final Map<String, String[]> filters = new HashMap<>();
+        filters.put("requestId", new String[] {"EQ", requestID});
+
+        SoActiveInfraRequests soActiveInfraRequests = new SoActiveInfraRequests();
+        soActiveInfraRequests.setRequestId(requestID);
+
+        final Optional<SoActiveInfraRequests[]> response =
+                Optional.of(new SoActiveInfraRequests[] {soActiveInfraRequests});
+
+        final HttpRestServiceProvider mockServiceProvider = mock(HttpRestServiceProvider.class);
+
+        when(mockServiceProvider.postHttpRequest(eq(filters), eq(searchUrl), eq(SoActiveInfraRequests[].class)))
+                .thenReturn(response);
+
+        final DatabaseServiceProvider objUnderTest = new DatabaseServiceProviderImpl(URL_PROVIDER, mockServiceProvider);
+
+        final List<SoInfraRequest> actualList = objUnderTest.getSoInfraRequest(filters, 0, 0, null);
+        assertFalse(actualList.isEmpty());
+        assertEquals(requestID, actualList.get(0).getRequestId());
+
+    }
+}
diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/rest/service/CamundaProcessDataServiceProviderTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/rest/service/CamundaProcessDataServiceProviderTest.java
new file mode 100644 (file)
index 0000000..351c476
--- /dev/null
@@ -0,0 +1,232 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.rest.service;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.junit.Test;
+import org.onap.so.montoring.camunda.model.ActivityInstance;
+import org.onap.so.montoring.camunda.model.ProcessDefinition;
+import org.onap.so.montoring.camunda.model.ProcessInstance;
+import org.onap.so.montoring.camunda.model.ProcessInstanceVariable;
+import org.onap.so.montoring.configuration.camunda.CamundaRestUrlProvider;
+import org.onap.so.montoring.model.ActivityInstanceDetail;
+import org.onap.so.montoring.model.ProcessDefinitionDetail;
+import org.onap.so.montoring.model.ProcessInstanceIdDetail;
+import org.onap.so.montoring.model.ProcessInstanceVariableDetail;
+
+import com.google.common.base.Optional;
+
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+public class CamundaProcessDataServiceProviderTest {
+    private static final String DURATION = "1";
+    private static final String FLOW_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
+    private static final String NAME = "Test";
+    private static final String DEFAULT = "default";
+    private static final String CAMUNDA_REST_API_URL = "http://localhost:9080/engine-rest/engine/";
+
+    private static final String ID = UUID.randomUUID().toString();
+    private static final String PROCESS_ID = UUID.randomUUID().toString();
+    private static final String DEF_ID = UUID.randomUUID().toString();
+    private static final String SUPER_PROCESS_ID = UUID.randomUUID().toString();
+    private final HttpRestServiceProvider httpRestServiceProvider = mock(HttpRestServiceProvider.class);
+    private final CamundaRestUrlProvider camundaRestUrlProvider =
+            new CamundaRestUrlProvider(CAMUNDA_REST_API_URL, DEFAULT);
+
+
+    @Test
+    public void test_GetProcessInstanceDetail_EmptyResponse() {
+        final Optional<ProcessInstance[]> response = Optional.<ProcessInstance[]>absent();
+        final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/process-instance?variables=requestId_eq_" + ID;
+        when(httpRestServiceProvider.getHttpResponse(url, ProcessInstance[].class)).thenReturn(response);
+        final CamundaProcessDataServiceProvider objUnderTest =
+                new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
+
+        final Optional<ProcessInstanceIdDetail> actualResponse = objUnderTest.getProcessInstanceIdDetail(ID);
+        assertFalse(actualResponse.isPresent());
+    }
+
+    @Test
+    public void test_GetProcessInstanceDetail_NonEmptyResponseWithSuperProcessIdNull() {
+        final Optional<ProcessInstance[]> response = Optional.of(getProcessInstance());
+        final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/process-instance?variables=requestId_eq_" + ID;
+        when(httpRestServiceProvider.getHttpResponse(url, ProcessInstance[].class)).thenReturn(response);
+        final CamundaProcessDataServiceProvider objUnderTest =
+                new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
+
+        final Optional<ProcessInstanceIdDetail> actualResponse = objUnderTest.getProcessInstanceIdDetail(ID);
+        assertTrue(actualResponse.isPresent());
+
+        final ProcessInstanceIdDetail actualProcessInstanceDetail = actualResponse.get();
+        assertEquals(PROCESS_ID, actualProcessInstanceDetail.getProcessInstanceId());
+    }
+
+    @Test
+    public void test_GetProcessInstanceDetail_NonEmptyResponseWithSuperProcessIdNotNull() {
+        final Optional<ProcessInstance[]> response = Optional.of(getProcessInstance(SUPER_PROCESS_ID));
+        final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/process-instance?variables=requestId_eq_" + ID;
+        when(httpRestServiceProvider.getHttpResponse(url, ProcessInstance[].class)).thenReturn(response);
+        final CamundaProcessDataServiceProvider objUnderTest =
+                new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
+
+        final Optional<ProcessInstanceIdDetail> actualResponse = objUnderTest.getProcessInstanceIdDetail(ID);
+        assertFalse(actualResponse.isPresent());
+
+    }
+
+    @Test
+    public void test_GetProcessDefinition_EmptyResponse() {
+        final Optional<ProcessDefinition> response = Optional.<ProcessDefinition>absent();
+        final String url = CAMUNDA_REST_API_URL + DEFAULT + "/process-definition/" + ID + "/xml";
+        when(httpRestServiceProvider.getHttpResponse(url, ProcessDefinition.class)).thenReturn(response);
+        final CamundaProcessDataServiceProvider objUnderTest =
+                new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
+
+        final Optional<ProcessDefinitionDetail> actualResponse = objUnderTest.getProcessDefinition(ID);
+        assertFalse(actualResponse.isPresent());
+    }
+
+    @Test
+    public void test_GetProcessDefinition_NonEmptyResponse() {
+        final Optional<ProcessDefinition> response = getProcessDefinition();
+        final String url = CAMUNDA_REST_API_URL + DEFAULT + "/process-definition/" + PROCESS_ID + "/xml";
+        when(httpRestServiceProvider.getHttpResponse(url, ProcessDefinition.class)).thenReturn(response);
+        final CamundaProcessDataServiceProvider objUnderTest =
+                new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
+
+        final Optional<ProcessDefinitionDetail> actualResponse = objUnderTest.getProcessDefinition(PROCESS_ID);
+        assertTrue(actualResponse.isPresent());
+        assertEquals(PROCESS_ID, actualResponse.get().getProcessDefinitionId());
+        assertEquals(FLOW_XML, actualResponse.get().getProcessDefinitionXml());
+    }
+
+    @Test
+    public void test_GetActivityInstance_EmptyResponse() {
+        final Optional<ActivityInstance[]> response = Optional.<ActivityInstance[]>absent();
+        final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/activity-instance?processInstanceId=" + PROCESS_ID
+                + "&sortBy=startTime&sortOrder=asc";
+        when(httpRestServiceProvider.getHttpResponse(url, ActivityInstance[].class)).thenReturn(response);
+        final CamundaProcessDataServiceProvider objUnderTest =
+                new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
+
+        final List<ActivityInstanceDetail> actualResponse = objUnderTest.getActivityInstance(PROCESS_ID);
+        assertTrue(actualResponse.isEmpty());
+
+    }
+
+    @Test
+    public void test_GetActivityInstance_NonEmptyResponse() {
+        final Optional<ActivityInstance[]> response = getActivityInstance();
+        final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/activity-instance?processInstanceId=" + PROCESS_ID
+                + "&sortBy=startTime&sortOrder=asc";
+        when(httpRestServiceProvider.getHttpResponse(url, ActivityInstance[].class)).thenReturn(response);
+        final CamundaProcessDataServiceProvider objUnderTest =
+                new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
+
+        final List<ActivityInstanceDetail> actualResponse = objUnderTest.getActivityInstance(PROCESS_ID);
+        assertFalse(actualResponse.isEmpty());
+        final ActivityInstanceDetail actualActivityInstanceDetail = actualResponse.get(0);
+        assertEquals(ID, actualActivityInstanceDetail.getActivityId());
+        assertEquals(NAME, actualActivityInstanceDetail.getActivityName());
+        assertEquals(NAME, actualActivityInstanceDetail.getActivityType());
+
+    }
+
+    @Test
+    public void test_GetProcessInstanceVariable_EmptyResponse() {
+        final Optional<ProcessInstanceVariable[]> response = Optional.<ProcessInstanceVariable[]>absent();
+        final String url =
+                CAMUNDA_REST_API_URL + DEFAULT + "/history/variable-instance?processInstanceId=" + PROCESS_ID;
+        when(httpRestServiceProvider.getHttpResponse(url, ProcessInstanceVariable[].class)).thenReturn(response);
+        final CamundaProcessDataServiceProvider objUnderTest =
+                new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
+
+        final List<ProcessInstanceVariableDetail> actualResponse = objUnderTest.getProcessInstanceVariable(PROCESS_ID);
+        assertTrue(actualResponse.isEmpty());
+
+    }
+
+    @Test
+    public void test_GetProcessInstanceVariable_NonEmptyResponse() {
+        final Optional<ProcessInstanceVariable[]> response = getProcessInstanceVariable();
+        final String url =
+                CAMUNDA_REST_API_URL + DEFAULT + "/history/variable-instance?processInstanceId=" + PROCESS_ID;
+        when(httpRestServiceProvider.getHttpResponse(url, ProcessInstanceVariable[].class)).thenReturn(response);
+        final CamundaProcessDataServiceProvider objUnderTest =
+                new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider);
+
+        final List<ProcessInstanceVariableDetail> actualResponse = objUnderTest.getProcessInstanceVariable(PROCESS_ID);
+        assertFalse(actualResponse.isEmpty());
+        final ProcessInstanceVariableDetail variableDetail = actualResponse.get(0);
+        assertEquals(NAME, variableDetail.getName());
+        assertEquals(NAME, variableDetail.getType());
+        assertEquals(NAME, variableDetail.getValue());
+
+    }
+
+    private Optional<ProcessInstanceVariable[]> getProcessInstanceVariable() {
+        final ProcessInstanceVariable instanceVariable = new ProcessInstanceVariable();
+        instanceVariable.setName(NAME);
+        instanceVariable.setType(NAME);
+        instanceVariable.setValue(NAME);
+        return Optional.of(new ProcessInstanceVariable[] {instanceVariable});
+    }
+
+    private Optional<ActivityInstance[]> getActivityInstance() {
+        final ActivityInstance activityInstance = new ActivityInstance();
+        activityInstance.setActivityId(ID);
+        activityInstance.setActivityName(NAME);
+        activityInstance.setActivityType(NAME);
+        activityInstance.setDurationInMillis(DURATION);
+        return Optional.of(new ActivityInstance[] {activityInstance});
+    }
+
+    private Optional<ProcessDefinition> getProcessDefinition() {
+        final ProcessDefinition processDefinition = new ProcessDefinition();
+        processDefinition.setId(PROCESS_ID);
+        processDefinition.setBpmn20Xml(FLOW_XML);
+        return Optional.of(processDefinition);
+    }
+
+    private ProcessInstance[] getProcessInstance() {
+        return getProcessInstance(null);
+    }
+
+    private ProcessInstance[] getProcessInstance(final String superProcessInstanceId) {
+        final ProcessInstance instance = new ProcessInstance();
+        instance.setId(PROCESS_ID);
+        instance.setProcessDefinitionId(DEF_ID);
+        instance.setProcessDefinitionName(NAME);
+        instance.setSuperProcessInstanceId(superProcessInstanceId);
+        return new ProcessInstance[] {instance};
+    }
+
+
+}
diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/utils/ObjectEqualsUtilsTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/montoring/utils/ObjectEqualsUtilsTest.java
new file mode 100644 (file)
index 0000000..b1ad4ea
--- /dev/null
@@ -0,0 +1,71 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.montoring.utils;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.junit.Test;
+
+
+/**
+ * @author waqas.ikram@ericsson.com
+ *
+ */
+public class ObjectEqualsUtilsTest {
+
+    private static final String VALUE = "Humpty Dumpty Sat On The Wall";
+
+    @Test
+    public void test_ObjectEqualsUtils_isEqual_NullValues() {
+        assertTrue(ObjectEqualsUtils.isEqual(null, null));
+    }
+
+    @Test
+    public void test_ObjectEqualsUtils_isEqual_FirstValueNullSecondNotNull() {
+        assertFalse(ObjectEqualsUtils.isEqual(null, VALUE));
+    }
+
+    @Test
+    public void test_ObjectEqualsUtils_isEqual_FirstValueNotNullSecondNull() {
+        assertFalse(ObjectEqualsUtils.isEqual(VALUE, null));
+    }
+
+    @Test
+    public void test_ObjectEqualsUtils_isEqual_NotNullValues() {
+        assertTrue(ObjectEqualsUtils.isEqual(VALUE, VALUE));
+    }
+
+    @Test
+    public void test_ObjectEqualsUtils_isEqual_CollectionValues() {
+        final List<Object> firstObject = Arrays.asList(VALUE);
+        final List<Object> secondObject = Arrays.asList(VALUE);
+        assertTrue(ObjectEqualsUtils.isEqual(firstObject, secondObject));
+    }
+
+    @Test
+    public void test_ObjectEqualsUtils_isEqual_CollectionAndStringValues() {
+        final List<Object> firstObject = Arrays.asList(VALUE);
+        assertFalse(ObjectEqualsUtils.isEqual(firstObject, VALUE));
+    }
+}
diff --git a/so-monitoring/so-monitoring-service/pom.xml b/so-monitoring/so-monitoring-service/pom.xml
new file mode 100644 (file)
index 0000000..3aeed23
--- /dev/null
@@ -0,0 +1,93 @@
+<!--
+  ============LICENSE_START=======================================================
+   Copyright (C) 2018 Ericsson. 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.
+
+  SPDX-License-Identifier: Apache-2.0
+  ============LICENSE_END=========================================================
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.onap.so.monitoring</groupId>
+        <artifactId>so-monitoring</artifactId>
+        <version>1.3.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>so-monitoring-service</artifactId>
+    <name>${project.artifactId}</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.onap.so.monitoring</groupId>
+            <artifactId>so-monitoring-handler</artifactId>
+            <version>${project.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-security</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-data-jpa</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-jersey</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>${springboot.version}</version>
+                <configuration>
+                    <mainClass>org.onap.so.monitoring.rest.api.SoMonitoringApplication</mainClass>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file
diff --git a/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/JerseyConfiguration.java b/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/JerseyConfiguration.java
new file mode 100644 (file)
index 0000000..0f03f23
--- /dev/null
@@ -0,0 +1,40 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.monitoring.rest.api;
+
+import javax.annotation.PostConstruct;
+import javax.ws.rs.ApplicationPath;
+
+import org.glassfish.jersey.server.ResourceConfig;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+@Configuration
+@ApplicationPath("/so/monitoring")
+public class JerseyConfiguration extends ResourceConfig {
+
+    @PostConstruct
+    public void setUp() {
+        register(SoMonitoringController.class);
+    }
+
+}
diff --git a/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringApplication.java b/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringApplication.java
new file mode 100644 (file)
index 0000000..7c5a896
--- /dev/null
@@ -0,0 +1,37 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. 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.monitoring.rest.api;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+@SpringBootApplication(scanBasePackages = {"org.onap"})
+public class SoMonitoringApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(SoMonitoringApplication.class, args);
+
+    }
+
+}
diff --git a/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringController.java b/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringController.java
new file mode 100644 (file)
index 0000000..913fb3f
--- /dev/null
@@ -0,0 +1,236 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.monitoring.rest.api;
+
+import java.util.List;
+import java.util.Map;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import org.onap.so.montoring.db.service.DatabaseServiceProvider;
+import org.onap.so.montoring.exception.InvalidRestRequestException;
+import org.onap.so.montoring.exception.RestProcessingException;
+import org.onap.so.montoring.model.ActivityInstanceDetail;
+import org.onap.so.montoring.model.ProcessDefinitionDetail;
+import org.onap.so.montoring.model.ProcessInstanceDetail;
+import org.onap.so.montoring.model.ProcessInstanceIdDetail;
+import org.onap.so.montoring.model.ProcessInstanceVariableDetail;
+import org.onap.so.montoring.model.SoInfraRequest;
+import org.onap.so.montoring.rest.service.CamundaProcessDataServiceProvider;
+import org.slf4j.ext.XLogger;
+import org.slf4j.ext.XLoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.google.common.base.Optional;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+@Component
+@Path("/")
+public class SoMonitoringController {
+
+    private static final String INVALID_PROCESS_INSTANCE_ERROR_MESSAGE = "Invalid process instance id: ";
+
+    private static final XLogger LOGGER = XLoggerFactory.getXLogger(SoMonitoringController.class);
+
+    private final DatabaseServiceProvider databaseServiceProvider;
+
+    private final CamundaProcessDataServiceProvider camundaProcessDataServiceProvider;
+
+    @Autowired
+    public SoMonitoringController(final DatabaseServiceProvider databaseServiceProvider,
+            final CamundaProcessDataServiceProvider camundaProcessDataServiceProvider) {
+        this.databaseServiceProvider = databaseServiceProvider;
+        this.camundaProcessDataServiceProvider = camundaProcessDataServiceProvider;
+    }
+
+    @GET
+    @Path("/process-instance-id/{requestId}")
+    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+    public Response getProcessInstanceId(final @PathParam("requestId") String requestId) {
+        if (requestId == null || requestId.isEmpty()) {
+            return Response.status(Status.BAD_REQUEST).entity("Invalid Request id: " + requestId).build();
+        }
+        try {
+            final Optional<ProcessInstanceIdDetail> processInstanceId =
+                    camundaProcessDataServiceProvider.getProcessInstanceIdDetail(requestId);
+            if (processInstanceId.isPresent()) {
+                return Response.status(Status.OK).entity(processInstanceId.get()).build();
+            }
+
+            LOGGER.error("Unable to find process instance id for : {}", requestId);
+            return Response.status(Status.NO_CONTENT).build();
+
+        } catch (final InvalidRestRequestException extensions) {
+            final String message = "Unable to find process instance id for : " + requestId;
+            LOGGER.error(message);
+            return Response.status(Status.BAD_REQUEST).entity(message).build();
+        } catch (final RestProcessingException restProcessingException) {
+            final String message = "Unable to process request for id: " + requestId;
+            LOGGER.error(message);
+            return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build();
+        }
+    }
+
+    @GET
+    @Path("/process-instance/{processInstanceId}")
+    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+    public Response getSingleProcessInstance(final @PathParam("processInstanceId") String processInstanceId) {
+        if (processInstanceId == null || processInstanceId.isEmpty()) {
+            return Response.status(Status.BAD_REQUEST)
+                    .entity(INVALID_PROCESS_INSTANCE_ERROR_MESSAGE + processInstanceId).build();
+        }
+        try {
+            final Optional<ProcessInstanceDetail> processInstanceDetail =
+                    camundaProcessDataServiceProvider.getSingleProcessInstanceDetail(processInstanceId);
+            if (processInstanceDetail.isPresent()) {
+                return Response.status(Status.OK).entity(processInstanceDetail.get()).build();
+            }
+
+            LOGGER.error("Unable to find process instance id for : {}", processInstanceId);
+            return Response.status(Status.NO_CONTENT).build();
+
+        } catch (final InvalidRestRequestException extensions) {
+            final String message = "Unable to find process instance id for : " + processInstanceId;
+            LOGGER.error(message);
+            return Response.status(Status.BAD_REQUEST).entity(message).build();
+        } catch (final RestProcessingException restProcessingException) {
+            final String message = "Unable to process request for id: " + processInstanceId;
+            LOGGER.error(message);
+            return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build();
+        }
+    }
+
+    @GET
+    @Path("/process-definition/{processDefinitionId}")
+    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+    public Response getProcessDefinitionXml(final @PathParam("processDefinitionId") String processDefinitionId) {
+        if (processDefinitionId == null || processDefinitionId.isEmpty()) {
+            return Response.status(Status.BAD_REQUEST).entity("Invalid process definition id: " + processDefinitionId)
+                    .build();
+        }
+        try {
+            final Optional<ProcessDefinitionDetail> response =
+                    camundaProcessDataServiceProvider.getProcessDefinition(processDefinitionId);
+            if (response.isPresent()) {
+                final ProcessDefinitionDetail definitionDetail = response.get();
+                return Response.status(Status.OK).entity(definitionDetail).build();
+            }
+            LOGGER.error("Unable to find process definition xml for processDefinitionId: {}", processDefinitionId);
+            return Response.status(Status.NO_CONTENT).build();
+
+        } catch (final InvalidRestRequestException extensions) {
+            final String message =
+                    "Unable to find process definition xml for processDefinitionId: {}" + processDefinitionId;
+            return Response.status(Status.BAD_REQUEST).entity(message).build();
+        } catch (final RestProcessingException restProcessingException) {
+            final String message = "Unable to get process definition xml for id: " + processDefinitionId;
+            LOGGER.error(message);
+            return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build();
+        }
+    }
+
+    @GET
+    @Path("/activity-instance/{processInstanceId}")
+    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+    public Response getActivityInstanceDetail(final @PathParam("processInstanceId") String processInstanceId) {
+        if (processInstanceId == null || processInstanceId.isEmpty()) {
+            return Response.status(Status.BAD_REQUEST)
+                    .entity(INVALID_PROCESS_INSTANCE_ERROR_MESSAGE + processInstanceId).build();
+        }
+        try {
+            final List<ActivityInstanceDetail> activityInstanceDetails =
+                    camundaProcessDataServiceProvider.getActivityInstance(processInstanceId);
+            return Response.status(Status.OK).entity(activityInstanceDetails).build();
+        } catch (final InvalidRestRequestException extensions) {
+            final String message = "Unable to find activity instance for processInstanceId: " + processInstanceId;
+            LOGGER.error(message);
+            return Response.status(Status.BAD_REQUEST).entity(message).build();
+        } catch (final RestProcessingException restProcessingException) {
+            final String message = "Unable to get activity instance detail for id: " + processInstanceId;
+            LOGGER.error(message);
+            return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build();
+        }
+    }
+
+    @GET
+    @Path("/variable-instance/{processInstanceId}")
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response getProcessInstanceVariables(final @PathParam("processInstanceId") String processInstanceId) {
+        if (processInstanceId == null || processInstanceId.isEmpty()) {
+            return Response.status(Status.BAD_REQUEST)
+                    .entity(INVALID_PROCESS_INSTANCE_ERROR_MESSAGE + processInstanceId).build();
+        }
+        try {
+            final List<ProcessInstanceVariableDetail> processInstanceVariable =
+                    camundaProcessDataServiceProvider.getProcessInstanceVariable(processInstanceId);
+            return Response.status(Status.OK).entity(processInstanceVariable).build();
+        } catch (final InvalidRestRequestException extensions) {
+            final String message =
+                    "Unable to find process instance variables for processInstanceId: " + processInstanceId;
+            LOGGER.error(message);
+            return Response.status(Status.BAD_REQUEST).entity(message).build();
+        } catch (final RestProcessingException restProcessingException) {
+            final String message = "Unable to get process instance variables for id: " + processInstanceId;
+            LOGGER.error(message);
+            return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build();
+        }
+    }
+
+    @POST
+    @Path("/v1/search")
+    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+    public Response getInfraActiveRequests(final Map<String, String[]> filters,
+            @QueryParam("from") final long startTime, @QueryParam("to") final long endTime,
+            @QueryParam("maxResult") final Integer maxResult) {
+
+        if (filters == null) {
+            return Response.status(Status.BAD_REQUEST).entity("Invalid filters: " + filters).build();
+        }
+        try {
+            final List<SoInfraRequest> requests =
+                    databaseServiceProvider.getSoInfraRequest(filters, startTime, endTime, maxResult);
+            LOGGER.info("result size: {}", requests.size());
+            return Response.status(Status.OK).entity(requests).build();
+
+        } catch (final InvalidRestRequestException extensions) {
+            final String message = "Unable to search request for filters: " + filters + ", from: " + startTime
+                    + ", to: " + endTime + ", maxResult: " + maxResult;
+            LOGGER.error(message);
+            return Response.status(Status.BAD_REQUEST).entity(message).build();
+        } catch (final RestProcessingException restProcessingException) {
+            final String message = "Unable to search request for filters: " + filters + ", from: " + startTime
+                    + ", to: " + endTime + ", maxResult: " + maxResult;
+            LOGGER.error(message);
+            return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build();
+        }
+    }
+
+}
diff --git a/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/WebApplicationConfig.java b/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/WebApplicationConfig.java
new file mode 100644 (file)
index 0000000..cadd60b
--- /dev/null
@@ -0,0 +1,36 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.monitoring.rest.api;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+@Configuration
+public class WebApplicationConfig extends WebMvcConfigurerAdapter {
+    @Override
+    public void addViewControllers(final ViewControllerRegistry registry) {
+        super.addViewControllers(registry);
+        registry.addViewController("/details/**").setViewName("forward:/");
+    }
+}
diff --git a/so-monitoring/so-monitoring-service/src/main/resources/application.yaml b/so-monitoring/so-monitoring-service/src/main/resources/application.yaml
new file mode 100644 (file)
index 0000000..f212074
--- /dev/null
@@ -0,0 +1,17 @@
+server:
+  port: 9091
+  tomcat:
+    max-threads: 50
+ssl-enable: false
+camunda:
+  rest:
+    api:
+      url: http://bpmn-infra:8081/engine-rest/engine/
+      engine: default
+      auth: Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==
+mso:
+  database:
+    rest:
+      api:
+        url: http://request-db-adapter:8083/infraActiveRequests/
+        auth: Basic YnBlbDpwYXNzd29yZDEk
\ No newline at end of file
diff --git a/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/SoMonitoringControllerTest.java b/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/SoMonitoringControllerTest.java
new file mode 100644 (file)
index 0000000..13953b0
--- /dev/null
@@ -0,0 +1,400 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2018 Ericsson. 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.
+ * 
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.monitoring.rest.api;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.onap.so.montoring.configuration.rest.RestTemplateConfigration.CAMUNDA_REST_TEMPLATE;
+import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo;
+import static org.springframework.test.web.client.response.MockRestResponseCreators.withBadRequest;
+import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
+import static org.springframework.test.web.client.response.MockRestResponseCreators.withUnauthorizedRequest;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+import java.util.UUID;
+
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.so.montoring.configuration.camunda.CamundaRestUrlProvider;
+import org.onap.so.montoring.model.ActivityInstanceDetail;
+import org.onap.so.montoring.model.ProcessDefinitionDetail;
+import org.onap.so.montoring.model.ProcessInstanceDetail;
+import org.onap.so.montoring.model.ProcessInstanceIdDetail;
+import org.onap.so.montoring.model.ProcessInstanceVariableDetail;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.web.client.MockRestServiceServer;
+import org.springframework.web.client.RestTemplate;
+
+
+
+/**
+ * @author waqas.ikram@ericsson.com
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@ActiveProfiles("test")
+@SpringBootTest
+public class SoMonitoringControllerTest {
+
+    private static final String PROCRESS_DEF_ID = "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb";
+
+    private static final String EMPTY_ARRAY_RESPONSE = "[]";
+
+    private static final String PROCESS_INSTACE_ID = "5956a99d-9736-11e8-8caf-022ac9304eeb";
+
+    private static final String EMPTY_STRING = "";
+
+    private static final String SOURCE_TEST_FOLDER = "src/test/resources/camundaResponses/";
+
+    private static final Path PROCESS_DEF_RESPONSE_JSON_FILE = Paths.get(SOURCE_TEST_FOLDER + "processDefinition.json");
+
+    private static final Path ACTIVITY_INSTANCE_RESPONSE_JSON_FILE =
+            Paths.get(SOURCE_TEST_FOLDER + "activityInstance.json");
+
+    private static final Path PROCESS_INSTANCE_VARIABLES_RESPONSE_JSON_FILE =
+            Paths.get(SOURCE_TEST_FOLDER + "processInstanceVariables.json");
+
+    private static final Path PROCCESS_INSTANCE_RESPONSE_JSON_FILE =
+            Paths.get(SOURCE_TEST_FOLDER + "processInstance.json");
+
+    private static final Path SINGLE_PROCCESS_INSTANCE_RESPONSE_JSON_FILE =
+            Paths.get(SOURCE_TEST_FOLDER + "singleprocessInstance.json");
+
+    private static final String ID = UUID.randomUUID().toString();
+
+    @Autowired
+    @Qualifier(CAMUNDA_REST_TEMPLATE)
+    private RestTemplate restTemplate;
+
+    @Autowired
+    private CamundaRestUrlProvider urlProvider;
+
+    private MockRestServiceServer camundaMockServer;
+
+    @Autowired
+    private SoMonitoringController objUnderTest;
+
+    @Before
+    public void setUp() throws Exception {
+        camundaMockServer = MockRestServiceServer.bindTo(restTemplate).build();
+    }
+
+    @Test
+    public void test_GetProcessInstance_SuccessResponseWithDataFromCamunda() throws Exception {
+        final String jsonString = getJsonResponse(PROCCESS_INSTANCE_RESPONSE_JSON_FILE);
+        this.camundaMockServer.expect(requestTo(urlProvider.getHistoryProcessInstanceUrl(ID)))
+                .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON));
+
+        final Response response = objUnderTest.getProcessInstanceId(ID);
+
+        assertEquals(Status.OK.getStatusCode(), response.getStatus());
+        final ProcessInstanceIdDetail actualProcessInstance = (ProcessInstanceIdDetail) response.getEntity();
+        assertEquals("dba707b6-8c02-11e8-a6ba-022a5dba5402", actualProcessInstance.getProcessInstanceId());
+    }
+
+    @Test
+    public void test_GetProcessInstance_SuccessResponseWithEmptyDataFromCamunda() throws Exception {
+        final String jsonString = EMPTY_ARRAY_RESPONSE;
+        this.camundaMockServer.expect(requestTo(urlProvider.getHistoryProcessInstanceUrl(ID)))
+                .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON));
+
+        final Response response = objUnderTest.getProcessInstanceId(ID);
+        assertEquals(Status.NO_CONTENT.getStatusCode(), response.getStatus());
+        assertNull(response.getEntity());
+    }
+
+    @Test
+    public void test_GetProcessInstance_FailureResponseWithEmptyDataFromCamunda() throws Exception {
+        this.camundaMockServer.expect(requestTo(urlProvider.getHistoryProcessInstanceUrl(ID)))
+                .andRespond(withBadRequest());
+
+        final Response response = objUnderTest.getProcessInstanceId(ID);
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+    }
+
+    @Test
+    public void test_GetProcessInstance_UnauthorizedRequestFromCamunda() throws Exception {
+        this.camundaMockServer.expect(requestTo(urlProvider.getHistoryProcessInstanceUrl(ID)))
+                .andRespond(withUnauthorizedRequest());
+
+        final Response response = objUnderTest.getProcessInstanceId(ID);
+        assertEquals(Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+    }
+
+    @Test
+    public void test_GetSinlgeProcessInstance_SuccessResponseWithDataFromCamunda() throws Exception {
+        final String jsonString = getJsonResponse(SINGLE_PROCCESS_INSTANCE_RESPONSE_JSON_FILE);
+        this.camundaMockServer.expect(requestTo(urlProvider.getSingleProcessInstanceUrl(PROCESS_INSTACE_ID)))
+                .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON));
+
+        final Response response = objUnderTest.getSingleProcessInstance(PROCESS_INSTACE_ID);
+
+        assertEquals(Status.OK.getStatusCode(), response.getStatus());
+        final ProcessInstanceDetail actualProcessInstance = (ProcessInstanceDetail) response.getEntity();
+        assertEquals(PROCESS_INSTACE_ID, actualProcessInstance.getProcessInstanceId());
+        assertEquals("EricssonNetworkSliceV1:3:28f9e0fc-9b00-11e8-a57a-022ac90273ed",
+                actualProcessInstance.getProcessDefinitionId());
+        assertEquals("EricssonNetworkSliceV1", actualProcessInstance.getProcessDefinitionName());
+        assertNull(actualProcessInstance.getSuperProcessInstanceId());
+    }
+
+    @Test
+    public void test_GetSingleProcessInstance_WithBadRequestResponseFromCamunda() throws Exception {
+        this.camundaMockServer.expect(requestTo(urlProvider.getSingleProcessInstanceUrl(PROCESS_INSTACE_ID)))
+                .andRespond(withBadRequest());
+
+        final Response response = objUnderTest.getSingleProcessInstance(PROCESS_INSTACE_ID);
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+    }
+
+    @Test
+    public void test_GetSingleProcessInstance_WithUnauthorizedRequestResponseFromCamunda() throws Exception {
+        this.camundaMockServer.expect(requestTo(urlProvider.getSingleProcessInstanceUrl(PROCESS_INSTACE_ID)))
+                .andRespond(withUnauthorizedRequest());
+
+        final Response response = objUnderTest.getSingleProcessInstance(PROCESS_INSTACE_ID);
+        assertEquals(Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+    }
+
+    @Test
+    public void test_GetSingleProcessInstance_NullAndEmptyProcessInstanceIdFromCamunda() throws Exception {
+
+        Response response = objUnderTest.getSingleProcessInstance(null);
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+
+        response = objUnderTest.getSingleProcessInstance("");
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+    }
+
+
+    @Test
+    public void test_GetProcessInstance_EmptyRequestID() throws Exception {
+
+        Response response = objUnderTest.getProcessInstanceId(EMPTY_STRING);
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+
+        response = objUnderTest.getProcessInstanceId(null);
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+    }
+
+
+    @Test
+    public void test_GetProcessDefinitionXml_SuccessResponseWithDataFromCamunda() throws Exception {
+        final String jsonString = getJsonResponse(PROCESS_DEF_RESPONSE_JSON_FILE);
+        this.camundaMockServer.expect(requestTo(urlProvider.getProcessDefinitionUrl(PROCRESS_DEF_ID)))
+                .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON));
+
+        final Response response = objUnderTest.getProcessDefinitionXml(PROCRESS_DEF_ID);
+        assertEquals(Status.OK.getStatusCode(), response.getStatus());
+
+        final ProcessDefinitionDetail actual = (ProcessDefinitionDetail) response.getEntity();
+        assertEquals(PROCRESS_DEF_ID, actual.getProcessDefinitionId());
+    }
+
+    @Test
+    public void test_GetProcessDefinitionXml_BadRequestResponseFromCamunda() throws Exception {
+        this.camundaMockServer.expect(requestTo(urlProvider.getProcessDefinitionUrl(PROCRESS_DEF_ID)))
+                .andRespond(withBadRequest());
+
+        final Response response = objUnderTest.getProcessDefinitionXml(PROCRESS_DEF_ID);
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+    }
+
+    @Test
+    public void test_GetProcessDefinitionXml_UnauthorizedRequestFromCamunda() throws Exception {
+        this.camundaMockServer.expect(requestTo(urlProvider.getProcessDefinitionUrl(PROCRESS_DEF_ID)))
+                .andRespond(withUnauthorizedRequest());
+
+        final Response response = objUnderTest.getProcessDefinitionXml(PROCRESS_DEF_ID);
+        assertEquals(Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+    }
+
+    @Test
+    public void test_GetProcessDefinitionXml_NullValues() throws Exception {
+        Response response = objUnderTest.getProcessDefinitionXml(EMPTY_STRING);
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+
+        response = objUnderTest.getProcessDefinitionXml(null);
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+    }
+
+    @Test
+    public void test_GetActivityInstanceDetail_SuccessResponseWithDataFromCamunda() throws Exception {
+        final String jsonString = getJsonResponse(ACTIVITY_INSTANCE_RESPONSE_JSON_FILE);
+        this.camundaMockServer.expect(requestTo(urlProvider.getActivityInstanceUrl(PROCESS_INSTACE_ID)))
+                .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON));
+
+        final Response response = objUnderTest.getActivityInstanceDetail(PROCESS_INSTACE_ID);
+        @SuppressWarnings("unchecked")
+        final List<ActivityInstanceDetail> actual = (List<ActivityInstanceDetail>) response.getEntity();
+        assertEquals(Status.OK.getStatusCode(), response.getStatus());
+        assertEquals(12, actual.size());
+        final ActivityInstanceDetail activityInstanceDetail = actual.get(0);
+        assertEquals("createVCPE_startEvent", activityInstanceDetail.getActivityId());
+        assertEquals("Start Flow", activityInstanceDetail.getActivityName());
+        assertEquals("startEvent", activityInstanceDetail.getActivityType());
+        assertEquals(PROCESS_INSTACE_ID, activityInstanceDetail.getProcessInstanceId());
+        assertNull(activityInstanceDetail.getCalledProcessInstanceId());
+        assertEquals("26", activityInstanceDetail.getDurationInMillis());
+        assertEquals("2018-08-03T16:00:31.815+0000", activityInstanceDetail.getStartTime());
+        assertEquals("2018-08-03T16:00:31.841+0000", activityInstanceDetail.getEndTime());
+
+        final ActivityInstanceDetail callActivityInstanceDetail = actual.get(4);
+        assertEquals("DecomposeService", callActivityInstanceDetail.getActivityId());
+        assertEquals("Call Decompose Service", callActivityInstanceDetail.getActivityName());
+        assertEquals("callActivity", callActivityInstanceDetail.getActivityType());
+        assertEquals("59d99609-9736-11e8-8caf-022ac9304eeb", callActivityInstanceDetail.getCalledProcessInstanceId());
+    }
+
+    @Test
+    public void test_GetActivityInstanceDetail_SuccessResponseWithEmptyDataFromCamunda() throws Exception {
+        this.camundaMockServer.expect(requestTo(urlProvider.getActivityInstanceUrl(PROCESS_INSTACE_ID)))
+                .andRespond(withSuccess(EMPTY_ARRAY_RESPONSE, MediaType.APPLICATION_JSON));
+
+        final Response response = objUnderTest.getActivityInstanceDetail(PROCESS_INSTACE_ID);
+        assertEquals(Status.OK.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+    }
+
+    @Test
+    public void test_GetActivityInstanceDetail_UnauthorizedRequestFromCamunda() throws Exception {
+        this.camundaMockServer.expect(requestTo(urlProvider.getActivityInstanceUrl(PROCESS_INSTACE_ID)))
+                .andRespond(withUnauthorizedRequest());
+
+        final Response response = objUnderTest.getActivityInstanceDetail(PROCESS_INSTACE_ID);
+        assertEquals(Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+    }
+
+    @Test
+    public void test_GetActivityInstanceDetail_BadRequestFromCamunda() throws Exception {
+        this.camundaMockServer.expect(requestTo(urlProvider.getActivityInstanceUrl(PROCESS_INSTACE_ID)))
+                .andRespond(withBadRequest());
+
+        final Response response = objUnderTest.getActivityInstanceDetail(PROCESS_INSTACE_ID);
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+    }
+
+    @Test
+    public void test_GetActivityInstanceDetail_NullValues() throws Exception {
+        Response response = objUnderTest.getActivityInstanceDetail(EMPTY_STRING);
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+
+        response = objUnderTest.getActivityInstanceDetail(null);
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+    }
+
+    @Test
+    public void test_GetProcessInstanceVariables_SuccessResponseWithDataFromCamunda() throws Exception {
+        final String jsonString = getJsonResponse(PROCESS_INSTANCE_VARIABLES_RESPONSE_JSON_FILE);
+        this.camundaMockServer.expect(requestTo(urlProvider.getProcessInstanceVariablesUrl(PROCESS_INSTACE_ID)))
+                .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON));
+
+        final Response response = objUnderTest.getProcessInstanceVariables(PROCESS_INSTACE_ID);
+
+        assertEquals(Status.OK.getStatusCode(), response.getStatus());
+        @SuppressWarnings("unchecked")
+        final List<ProcessInstanceVariableDetail> actual = (List<ProcessInstanceVariableDetail>) response.getEntity();
+        assertEquals(230, actual.size());
+
+        ProcessInstanceVariableDetail variableDetail = actual.get(0);
+        assertEquals("serviceType", variableDetail.getName());
+        assertEquals("String", variableDetail.getType());
+        assertEquals("PNFSERVICE", variableDetail.getValue());
+    }
+
+    @Test
+    public void test_GetProcessInstanceVariables_SuccessResponseWithEmptyDataFromCamunda() throws Exception {
+        this.camundaMockServer.expect(requestTo(urlProvider.getProcessInstanceVariablesUrl(PROCESS_INSTACE_ID)))
+                .andRespond(withSuccess(EMPTY_ARRAY_RESPONSE, MediaType.APPLICATION_JSON));
+
+        final Response response = objUnderTest.getProcessInstanceVariables(PROCESS_INSTACE_ID);
+
+        assertEquals(Status.OK.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+    }
+
+    @Test
+    public void test_GetProcessInstanceVariables_BadRequestFromCamunda() throws Exception {
+        this.camundaMockServer.expect(requestTo(urlProvider.getProcessInstanceVariablesUrl(PROCESS_INSTACE_ID)))
+                .andRespond(withBadRequest());
+
+        final Response response = objUnderTest.getProcessInstanceVariables(PROCESS_INSTACE_ID);
+
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+    }
+
+    @Test
+    public void test_GetProcessInstanceVariables_UnauthorizedRequestFromCamunda() throws Exception {
+        this.camundaMockServer.expect(requestTo(urlProvider.getProcessInstanceVariablesUrl(PROCESS_INSTACE_ID)))
+                .andRespond(withUnauthorizedRequest());
+
+        final Response response = objUnderTest.getProcessInstanceVariables(PROCESS_INSTACE_ID);
+
+        assertEquals(Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+    }
+
+    @Test
+    public void test_GetProcessInstanceVariables_NullAndEmptyValues() throws Exception {
+
+        Response response = objUnderTest.getProcessInstanceVariables(EMPTY_STRING);
+
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+
+        response = objUnderTest.getProcessInstanceVariables(null);
+
+        assertEquals(Status.BAD_REQUEST.getStatusCode(), response.getStatus());
+        assertNotNull(response.getEntity());
+
+    }
+
+    private String getJsonResponse(final Path path) throws IOException {
+        return new String(Files.readAllBytes(path));
+    }
+
+}
diff --git a/so-monitoring/so-monitoring-service/src/test/resources/application-test.yaml b/so-monitoring/so-monitoring-service/src/test/resources/application-test.yaml
new file mode 100644 (file)
index 0000000..be39294
--- /dev/null
@@ -0,0 +1,11 @@
+server:
+  port: 8080
+  tomcat:
+    max-threads: 50
+ssl-enable: false
+camunda:
+  rest:
+    api:
+      url: http://localhost:8080/engine-rest/engine/
+      engine: default
+      auth: Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==
diff --git a/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/activityInstance.json b/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/activityInstance.json
new file mode 100644 (file)
index 0000000..a4f9e5b
--- /dev/null
@@ -0,0 +1,254 @@
+[
+    {
+        "id": "createVCPE_startEvent:595dae93-9736-11e8-8caf-022ac9304eeb",
+        "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityId": "createVCPE_startEvent",
+        "activityName": "Start Flow",
+        "activityType": "startEvent",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "taskId": null,
+        "calledProcessInstanceId": null,
+        "calledCaseInstanceId": null,
+        "assignee": null,
+        "startTime": "2018-08-03T16:00:31.815+0000",
+        "endTime": "2018-08-03T16:00:31.841+0000",
+        "durationInMillis": 26,
+        "canceled": false,
+        "completeScope": false,
+        "tenantId": null
+    },
+    {
+        "id": "5961f4bb-9736-11e8-8caf-022ac9304eeb",
+        "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityId": "preProcessRequest_ScriptTask",
+        "activityName": "PreProcess Incoming Request",
+        "activityType": "scriptTask",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "taskId": null,
+        "calledProcessInstanceId": null,
+        "calledCaseInstanceId": null,
+        "assignee": null,
+        "startTime": "2018-08-03T16:00:31.842+0000",
+        "endTime": "2018-08-03T16:00:32.532+0000",
+        "durationInMillis": 690,
+        "canceled": false,
+        "completeScope": false,
+        "tenantId": null
+    },
+    {
+        "id": "59cb3e17-9736-11e8-8caf-022ac9304eeb",
+        "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityId": "sendSyncAckResponse_ScriptTask",
+        "activityName": "Send Sync Ack Response",
+        "activityType": "scriptTask",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "taskId": null,
+        "calledProcessInstanceId": null,
+        "calledCaseInstanceId": null,
+        "assignee": null,
+        "startTime": "2018-08-03T16:00:32.532+0000",
+        "endTime": "2018-08-03T16:00:32.588+0000",
+        "durationInMillis": 56,
+        "canceled": false,
+        "completeScope": false,
+        "tenantId": null
+    },
+    {
+        "id": "ScriptTask_0cdtchu:59d465e4-9736-11e8-8caf-022ac9304eeb",
+        "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityId": "ScriptTask_0cdtchu",
+        "activityName": "Prepare\nDecompose\nService\n",
+        "activityType": "scriptTask",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "taskId": null,
+        "calledProcessInstanceId": null,
+        "calledCaseInstanceId": null,
+        "assignee": null,
+        "startTime": "2018-08-03T16:00:32.592+0000",
+        "endTime": "2018-08-03T16:00:32.609+0000",
+        "durationInMillis": 17,
+        "canceled": false,
+        "completeScope": false,
+        "tenantId": null
+    },
+    {
+        "id": "DecomposeService:59d6fdf8-9736-11e8-8caf-022ac9304eeb",
+        "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityId": "DecomposeService",
+        "activityName": "Call Decompose Service",
+        "activityType": "callActivity",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "59d6fdf7-9736-11e8-8caf-022ac9304eeb",
+        "taskId": null,
+        "calledProcessInstanceId": "59d99609-9736-11e8-8caf-022ac9304eeb",
+        "calledCaseInstanceId": null,
+        "assignee": null,
+        "startTime": "2018-08-03T16:00:32.609+0000",
+        "endTime": "2018-08-03T16:00:34.418+0000",
+        "durationInMillis": 1809,
+        "canceled": false,
+        "completeScope": false,
+        "tenantId": null
+    },
+    {
+        "id": "ScriptTask_0lpv2da:5aeb53a2-9736-11e8-8caf-022ac9304eeb",
+        "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityId": "ScriptTask_0lpv2da",
+        "activityName": "PostProcess\nDecompose\nService\n",
+        "activityType": "scriptTask",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "taskId": null,
+        "calledProcessInstanceId": null,
+        "calledCaseInstanceId": null,
+        "assignee": null,
+        "startTime": "2018-08-03T16:00:34.420+0000",
+        "endTime": "2018-08-03T16:00:34.437+0000",
+        "durationInMillis": 17,
+        "canceled": false,
+        "completeScope": false,
+        "tenantId": null
+    },
+    {
+        "id": "5aee12d2-9736-11e8-8caf-022ac9304eeb",
+        "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityId": "prepareCreateService_scriptTask",
+        "activityName": "Prepare\nCreate\nService\n",
+        "activityType": "scriptTask",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "taskId": null,
+        "calledProcessInstanceId": null,
+        "calledCaseInstanceId": null,
+        "assignee": null,
+        "startTime": "2018-08-03T16:00:34.438+0000",
+        "endTime": "2018-08-03T16:00:34.454+0000",
+        "durationInMillis": 16,
+        "canceled": false,
+        "completeScope": false,
+        "tenantId": null
+    },
+    {
+        "id": "5af083d7-9736-11e8-8caf-022ac9304eeb",
+        "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityId": "doCreateServiceInstance_CallActivity",
+        "activityName": "Call Create \nServiceInstance\n",
+        "activityType": "callActivity",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5af083d6-9736-11e8-8caf-022ac9304eeb",
+        "taskId": null,
+        "calledProcessInstanceId": "5af12018-9736-11e8-8caf-022ac9304eeb",
+        "calledCaseInstanceId": null,
+        "assignee": null,
+        "startTime": "2018-08-03T16:00:34.454+0000",
+        "endTime": "2018-08-03T16:00:40.424+0000",
+        "durationInMillis": 5970,
+        "canceled": false,
+        "completeScope": false,
+        "tenantId": null
+    },
+    {
+        "id": "ScriptTask_1qd3uwb:5e7f9de7-9736-11e8-8caf-022ac9304eeb",
+        "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityId": "ScriptTask_1qd3uwb",
+        "activityName": "Post Process\nCreate\nService\n",
+        "activityType": "scriptTask",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "taskId": null,
+        "calledProcessInstanceId": null,
+        "calledCaseInstanceId": null,
+        "assignee": null,
+        "startTime": "2018-08-03T16:00:40.425+0000",
+        "endTime": "2018-08-03T16:00:40.443+0000",
+        "durationInMillis": 18,
+        "canceled": false,
+        "completeScope": false,
+        "tenantId": null
+    },
+    {
+        "id": "updateInfraRequest:5e825d0a-9736-11e8-8caf-022ac9304eeb",
+        "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityId": "updateInfraRequest",
+        "activityName": "Update DB status to SUCCESS",
+        "activityType": "serviceTask",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "taskId": null,
+        "calledProcessInstanceId": null,
+        "calledCaseInstanceId": null,
+        "assignee": null,
+        "startTime": "2018-08-03T16:00:40.443+0000",
+        "endTime": "2018-08-03T16:00:40.503+0000",
+        "durationInMillis": 60,
+        "canceled": false,
+        "completeScope": false,
+        "tenantId": null
+    },
+    {
+        "id": "5e8b84cc-9736-11e8-8caf-022ac9304eeb",
+        "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityId": "IntermediateCatchEvent_1x88t9v",
+        "activityName": "Await AAI Distribution\n\n",
+        "activityType": "intermediateTimer",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5e8b84cb-9736-11e8-8caf-022ac9304eeb",
+        "taskId": null,
+        "calledProcessInstanceId": null,
+        "calledCaseInstanceId": null,
+        "assignee": null,
+        "startTime": "2018-08-03T16:00:40.505+0000",
+        "endTime": "2018-08-03T16:01:14.309+0000",
+        "durationInMillis": 33804,
+        "canceled": false,
+        "completeScope": false,
+        "tenantId": null
+    },
+    {
+        "id": "Task_14l19kv:72b2d216-9736-11e8-8caf-022ac9304eeb",
+        "parentActivityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityId": "Task_14l19kv",
+        "activityName": "Create And Activate Pnf Resource",
+        "activityType": "callActivity",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "72b2d215-9736-11e8-8caf-022ac9304eeb",
+        "taskId": null,
+        "calledProcessInstanceId": "72b4cde7-9736-11e8-8caf-022ac9304eeb",
+        "calledCaseInstanceId": null,
+        "assignee": null,
+        "startTime": "2018-08-03T16:01:14.315+0000",
+        "endTime": null,
+        "durationInMillis": null,
+        "canceled": false,
+        "completeScope": false,
+        "tenantId": null
+    }
+]
\ No newline at end of file
diff --git a/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processDefinition.json b/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processDefinition.json
new file mode 100644 (file)
index 0000000..c4d9c7d
--- /dev/null
@@ -0,0 +1,4 @@
+{
+    "id": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+    "bpmn20Xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bpmn2:definitions xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:bpmn2=\"http://www.omg.org/spec/BPMN/20100524/MODEL\" xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\" xmlns:camunda=\"http://camunda.org/schema/1.0/bpmn\" xmlns:dc=\"http://www.omg.org/spec/DD/20100524/DC\" xmlns:di=\"http://www.omg.org/spec/DD/20100524/DI\" id=\"_MagIIMOUEeW8asg-vCEgWQ\" targetNamespace=\"http://camunda.org/schema/1.0/bpmn\" exporter=\"Camunda Modeler\" exporterVersion=\"1.6.0\" xsi:schemaLocation=\"http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd\"></bpmn2:definitions>"
+}
\ No newline at end of file
diff --git a/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processInstance.json b/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processInstance.json
new file mode 100644 (file)
index 0000000..d9e75e9
--- /dev/null
@@ -0,0 +1,59 @@
+[
+    {
+        "id": "dba707b6-8c02-11e8-a6ba-022a5dba5402",
+        "businessKey": "0a8b32d2-7281-423b-81a1-a44ebf8e489e",
+        "processDefinitionId": "b76aaeb6-8993-11e8-9f7c-022a5d7b2d2d",
+        "processDefinitionKey": "CreateGenericALaCarteServiceInstance",
+        "processDefinitionName": "CreateGenericALaCarteServiceInstance",
+        "processDefinitionVersion": 5,
+        "startTime": "2018-07-20T09:54:13.779+0000",
+        "endTime": "2018-07-20T09:54:15.344+0000",
+        "durationInMillis": 1565,
+        "startUserId": null,
+        "startActivityId": "createSI_startEvent",
+        "deleteReason": null,
+        "superProcessInstanceId": null,
+        "superCaseInstanceId": null,
+        "caseInstanceId": null,
+        "tenantId": null,
+        "state": "COMPLETED"
+    },
+    {
+        "id": "dbbcd94a-8c02-11e8-a6ba-022a5dba5402",
+        "businessKey": null,
+        "processDefinitionId": "DecomposeService:1:78e994ec-7fa7-11e8-816b-022a5d533d2a",
+        "processDefinitionKey": "DecomposeService",
+        "processDefinitionName": "DecomposeService",
+        "processDefinitionVersion": 1,
+        "startTime": "2018-07-20T09:54:13.921+0000",
+        "endTime": "2018-07-20T09:54:14.124+0000",
+        "durationInMillis": 203,
+        "startUserId": null,
+        "startActivityId": "createSI_startEvent",
+        "deleteReason": null,
+        "superProcessInstanceId": "dba707b6-8c02-11e8-a6ba-022a5dba5402",
+        "superCaseInstanceId": null,
+        "caseInstanceId": null,
+        "tenantId": null,
+        "state": "COMPLETED"
+    },
+    {
+        "id": "dbe0404f-8c02-11e8-a6ba-022a5dba5402",
+        "businessKey": null,
+        "processDefinitionId": "DoCreateServiceInstance:5:b7750f0d-8993-11e8-9f7c-022a5d7b2d2d",
+        "processDefinitionKey": "DoCreateServiceInstance",
+        "processDefinitionName": "DoCreateServiceInstance",
+        "processDefinitionVersion": 5,
+        "startTime": "2018-07-20T09:54:14.155+0000",
+        "endTime": "2018-07-20T09:54:15.169+0000",
+        "durationInMillis": 1014,
+        "startUserId": null,
+        "startActivityId": "createSI_startEvent",
+        "deleteReason": null,
+        "superProcessInstanceId": "dba707b6-8c02-11e8-a6ba-022a5dba5402",
+        "superCaseInstanceId": null,
+        "caseInstanceId": null,
+        "tenantId": null,
+        "state": "COMPLETED"
+    }
+]
\ No newline at end of file
diff --git a/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processInstanceVariables.json b/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/processInstanceVariables.json
new file mode 100644 (file)
index 0000000..15c87ea
--- /dev/null
@@ -0,0 +1,5062 @@
+[
+    {
+        "type": "String",
+        "value": "PNFSERVICE",
+        "valueInfo": {
+            
+        },
+        "id": "59571ece-9736-11e8-8caf-022ac9304eeb",
+        "name": "serviceType",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "Boolean",
+        "value": false,
+        "valueInfo": {
+            
+        },
+        "id": "595745df-9736-11e8-8caf-022ac9304eeb",
+        "name": "isBaseVfModule",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "",
+        "valueInfo": {
+            
+        },
+        "id": "595745e0-9736-11e8-8caf-022ac9304eeb",
+        "name": "vfModuleId",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "",
+        "valueInfo": {
+            
+        },
+        "id": "595745e1-9736-11e8-8caf-022ac9304eeb",
+        "name": "vfModuleType",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "Null",
+        "value": null,
+        "valueInfo": {
+            
+        },
+        "id": "595745e2-9736-11e8-8caf-022ac9304eeb",
+        "name": "recipeParams",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "createInstance",
+        "valueInfo": {
+            
+        },
+        "id": "595745e3-9736-11e8-8caf-022ac9304eeb",
+        "name": "requestAction",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "8383cec3-a39d-4037-aa23-e82891f178a7",
+        "valueInfo": {
+            
+        },
+        "id": "595745e4-9736-11e8-8caf-022ac9304eeb",
+        "name": "mso-business-key",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "55b3f0ea-70c5-4965-9e00-df77ed1552a3",
+        "valueInfo": {
+            
+        },
+        "id": "595745e5-9736-11e8-8caf-022ac9304eeb",
+        "name": "mso-request-id",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "",
+        "valueInfo": {
+            
+        },
+        "id": "595745e6-9736-11e8-8caf-022ac9304eeb",
+        "name": "volumeGroupId",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "744fee42-8e20-4152-ad75-17fb1ebfc5b2",
+        "valueInfo": {
+            
+        },
+        "id": "595745e7-9736-11e8-8caf-022ac9304eeb",
+        "name": "serviceInstanceId",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "",
+        "valueInfo": {
+            
+        },
+        "id": "595745e8-9736-11e8-8caf-022ac9304eeb",
+        "name": "vnfType",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "55b3f0ea-70c5-4965-9e00-df77ed1552a3",
+        "valueInfo": {
+            
+        },
+        "id": "595745e9-9736-11e8-8caf-022ac9304eeb",
+        "name": "requestId",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "so",
+        "valueInfo": {
+            
+        },
+        "id": "595745ea-9736-11e8-8caf-022ac9304eeb",
+        "name": "host",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "{\"requestDetails\":{\"modelInfo\":{\"modelInvariantUuid\":\"8e2be9fa-fffb-4e23-89a5-65497709f507\",\"modelType\":\"service\",\"modelName\":\"PNFSERVICE\",\"modelVersion\":\"1.0\",\"modelUuid\":\"4f7afc34-e475-41ca-be73-40f9a0f7ffa4\"},\"requestInfo\":{\"productFamilyId\":\"c8d92bf2-2c2e-4802-94e0-3f9e0825cc08\",\"source\":\"UUI\",\"instanceName\":\"AFRPOSTMAN51\",\"suppressRollback\":false,\"requestorId\":\"demo\"},\"subscriberInfo\":{\"globalSubscriberId\":\"Demonstration\"},\"cloudConfiguration\":{\"tenantId\":\"3e001881bcb342418ab5f2788a73255d\",\"lcpCloudRegionId\":\"regionOne_aaa_bbb\"},\"requestParameters\":{\"alaCarte\":false,\"subscriptionServiceType\":\"vCPE\",\"userParams\":[{\"name\":\"Homing_Solution\",\"value\":\"dummy\"}],\"aLaCarte\":false},\"project\":{\"projectName\":\"Project-Demonstration\"},\"owningEntity\":{\"owningEntityId\":\"c77274d4-4881-493a-ad46-368ea0996eb3\",\"owningEntityName\":\"OE-Demonstration\"}},\"correlationId\":\"afr\"}",
+        "valueInfo": {
+            
+        },
+        "id": "595745eb-9736-11e8-8caf-022ac9304eeb",
+        "name": "bpmnRequest",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "afr",
+        "valueInfo": {
+            
+        },
+        "id": "595745ec-9736-11e8-8caf-022ac9304eeb",
+        "name": "correlationId",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "",
+        "valueInfo": {
+            
+        },
+        "id": "595745ed-9736-11e8-8caf-022ac9304eeb",
+        "name": "networkId",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "",
+        "valueInfo": {
+            
+        },
+        "id": "595745ee-9736-11e8-8caf-022ac9304eeb",
+        "name": "vnfId",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "",
+        "valueInfo": {
+            
+        },
+        "id": "595745ef-9736-11e8-8caf-022ac9304eeb",
+        "name": "configurationId",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "",
+        "valueInfo": {
+            
+        },
+        "id": "595745f0-9736-11e8-8caf-022ac9304eeb",
+        "name": "networkType",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "Integer",
+        "value": 180,
+        "valueInfo": {
+            
+        },
+        "id": "595745f1-9736-11e8-8caf-022ac9304eeb",
+        "name": "recipeTimeout",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595745f2-9736-11e8-8caf-022ac9304eeb",
+        "name": "isAsyncProcess",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://so:8080/mso/vnfAdapterNotify",
+        "valueInfo": {
+            
+        },
+        "id": "595ee714-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_vnfadapter_create_callback",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595ee715-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoCreateResourcesV3",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595ee716-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoUpdateNetworkInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://so:8080/networks/rest/v1/networks",
+        "valueInfo": {
+            
+        },
+        "id": "595ee717-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_adapters_network_rest_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595ee718-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DeleteViprAtmService",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner",
+        "valueInfo": {
+            
+        },
+        "id": "595ee719-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_default_aai_v11_cloud_region_uri",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595ee71a-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DisconnectLayer3Service",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595ee71b-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_updateCinderVolumeV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://com/att/svc/mis/firewall-lite-gui",
+        "valueInfo": {
+            
+        },
+        "id": "595ee71c-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_sdnc_firewall_yang_model",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "message-router:3904",
+        "valueInfo": {
+            
+        },
+        "id": "595ee71d-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_appc_client_poolMembers",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595ee71e-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoCreateE2EServiceInstanceV3",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595ee71f-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_Layer3ServiceActivateV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595ee720-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_UpdateNetworkInstanceInfra",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595ee721-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DeleteNetworkInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595ee722-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CreateNetworkInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595ee723-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoScaleE2EServiceInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595ee724-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_OofAdapter",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "1533303618885",
+        "valueInfo": {
+            
+        },
+        "id": "595ee725-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_properties_timestamp",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "6B0E6863FB8EE010AB6F191B3C0489437601E81DC7C86305CB92DB98AFC53D74",
+        "valueInfo": {
+            
+        },
+        "id": "595ee726-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_adapters_po_auth",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e37-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_vnfAdapterDeleteV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e38-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoCompareModelVersions",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "PT30M",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e39-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_oof_timeout",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e3a-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_default_cloud_owner_id",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e3b-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DelServiceInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e3c-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DeleteVFCNSResource",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e3d-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_commonCompletion",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "VIlbtVl6YLhNUrtU",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e3e-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_appc_client_key",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://so:8080/tenants/TenantAdapter",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e3f-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_adapters_tenant_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "/aai/v11/network/route-table-references/route-table-reference",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e40-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_default_aai_v11_route_table_reference_uri",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e41-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CreateServiceInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e42-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_deleteVCEV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://so:8080/ecomp/mso/catalog",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e43-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_catalog_db_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e44-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_ChangeFeatureActivateV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e45-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CustomE2EPutService",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e46-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_l3ToHigherLayerAddBonding",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e47-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DHVActivateService",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e48-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_deleteGenericVNFV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e49-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_RollbackServiceInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "message-router.onap",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e4a-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_dmaap_host",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e4b-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CreateViprAtmService",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e4c-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_l3ToHigherLayerDeleteBonding",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f0e4d-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CustomE2EGetService",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f355e-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_ChangeLayer3ServiceActivateV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "APPC-LCM-READ",
+        "valueInfo": {
+            
+        },
+        "id": "595f355f-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_appc_client_topic_write",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://org.openecomp.mso",
+        "valueInfo": {
+            
+        },
+        "id": "595f3560-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_adapters_namespace",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f3561-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CreateCustomerV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "SDNC-LCM-READ",
+        "valueInfo": {
+            
+        },
+        "id": "595f3562-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_appc_client_topic_sdnc_write",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f3563-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_UpdateCustomE2EServiceInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "360000",
+        "valueInfo": {
+            
+        },
+        "id": "595f3564-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_appc_client_response_timeout",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://so:8080/dbadapters/RequestsDbAdapter",
+        "valueInfo": {
+            
+        },
+        "id": "595f3565-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_adapters_openecomp_db_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://so:8080/mso/vnfAdapterNotify",
+        "valueInfo": {
+            
+        },
+        "id": "595f3566-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_vnfadapter_delete_callback",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "20",
+        "valueInfo": {
+            
+        },
+        "id": "595f3567-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_sdnc_timeout_firewall_minutes",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "1000",
+        "valueInfo": {
+            
+        },
+        "id": "595f3568-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_callbackRetrySleepTime",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "30",
+        "valueInfo": {
+            
+        },
+        "id": "595f3569-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_callbackRetryAttempts",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f356a-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CompleteMsoProcess",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://so:8080/mso/SDNCAdapterCallbackService",
+        "valueInfo": {
+            
+        },
+        "id": "595f356b-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_sdncadapter_callback",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://sniro-emulator:80/sniro/api/v2/placement",
+        "valueInfo": {
+            
+        },
+        "id": "595f356c-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_sniro_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "2630606608347B7124C244AB0FE34F6F",
+        "valueInfo": {
+            
+        },
+        "id": "595f356d-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_aai_auth",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f356e-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_createCinderVolumeV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f356f-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_GenericPutService",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f3570-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CreateVFCNSResource",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://so:8080/adapters/rest/v1/sdnc",
+        "valueInfo": {
+            
+        },
+        "id": "595f3571-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_adapters_sdnc_rest_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f3572-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_RemoveLayer3Service",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f3573-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_GenericDeleteService",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "ueb",
+        "valueInfo": {
+            
+        },
+        "id": "595f3574-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_appc_client_service",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://so:8080/networks/NetworkAdapter",
+        "valueInfo": {
+            
+        },
+        "id": "595f3575-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_adapters_network_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "test:testpwd",
+        "valueInfo": {
+            
+        },
+        "id": "595f3576-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_oof_auth",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c87-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_QueryTenantInfo",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "false",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c88-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_use_qualified_host",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c89-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_deleteCinderVolumeV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "/aai/v11/search/nodes-query",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c8a-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_default_aai_v11_nodes_query_uri",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://org.openecomp.aai.inventory/",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c8b-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_global_default_aai_namespace",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "SDNC-LCM-WRITE",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c8c-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_appc_client_topic_sdnc_read",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c8d-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoDeleteServiceInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://sniro-emulator:80",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c8e-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_service_agnostic_sniro_host",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c8f-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_vnfAdapterQueryV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "/aai/v11/network/vpn-bindings/vpn-binding",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c90-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_default_aai_v11_vpn_binding_uri",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c91-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoCreateVfModuleVolumeV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c92-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoDeleteE2EServiceInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c93-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_UpdateVfModuleVolume",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c94-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CreateNetworkV2",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c95-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DecomposeService",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c96-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoDeleteNetworkInstanceRollback",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c97-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DeleteVfModuleVolume",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c98-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DHVCreateService",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "WAN Bonding",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c99-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_l3ToHigherLayerAddBonding_model_name",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "/aai/v11/search/generic-query",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c9a-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_default_aai_v11_generic_query_uri",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c9b-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoUpdateE2EServiceInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "21014aa2-526b-11e6-beb8-9e71128cae77",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c9c-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_infra_customer_id",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c9d-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DeleteSDNCNetworkResource",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c9e-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_sdncAdapter",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5c9f-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_asyncQueryAAICustomer",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "/sniro/api/v2/placement",
+        "valueInfo": {
+            
+        },
+        "id": "595f5ca0-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_service_agnostic_sniro_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5ca1-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_sendAOTSTicket",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f5ca2-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DeleteServiceInstanceInfra",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f83b3-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DeleteTenantV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "07a7159d3bf51a0e53be7a8f89699be7",
+        "valueInfo": {
+            
+        },
+        "id": "595f83b4-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_msoKey",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f83b5-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_GenericGetService",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f83b6-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DeleteVfModuleVolumeInfraV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "360000",
+        "valueInfo": {
+            
+        },
+        "id": "595f83b7-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_appc_client_topic_read_timeout",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f83b8-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoScaleVFCServiceInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f83b9-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoCreateVfModuleVolumeRollback",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "/aai/v11/network/generic-vnfs/generic-vnf",
+        "valueInfo": {
+            
+        },
+        "id": "595f83ba-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_default_aai_v11_generic_vnf_uri",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "PT5S",
+        "valueInfo": {
+            
+        },
+        "id": "595f83bb-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_sdnc_replication_delay",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://so:8080/vnfs/VnfAdapterAsync",
+        "valueInfo": {
+            
+        },
+        "id": "595f83bc-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_adapters_vnf_async_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f83bd-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_rollback",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "PT30M",
+        "valueInfo": {
+            
+        },
+        "id": "595f83be-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_sniro_timeout",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "PORT-MIRROR,PPROBE",
+        "valueInfo": {
+            
+        },
+        "id": "595f83bf-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_sdnc_si_svc_types",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "2015-05-15",
+        "valueInfo": {
+            
+        },
+        "id": "595f83c0-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_sdnc_firewall_yang_model_version",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f83c1-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DeleteNetworkInstanceInfra",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f83c2-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoDeleteNetworkInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f83c3-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_vnfAdapterCreateV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "11",
+        "valueInfo": {
+            
+        },
+        "id": "595f83c4-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_global_default_aai_version",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://oof-has-api:8091/api/oof/v1/placement",
+        "valueInfo": {
+            
+        },
+        "id": "595f83c5-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_oof_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f83c6-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_VPECreateVfModule",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/DFW/tenants/tenant",
+        "valueInfo": {
+            
+        },
+        "id": "595f83c7-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_default_aai_v11_tenant_uri",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f83c8-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CreateVfModuleVolumeInfraV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "PT5M",
+        "valueInfo": {
+            
+        },
+        "id": "595f83c9-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_po_timeout",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f83ca-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CreateServiceInstanceInfra",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f83cb-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_UpdateNetworkInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "52dbec20-47aa-42e4-936c-331d8e350d44",
+        "valueInfo": {
+            
+        },
+        "id": "595f83cc-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_l3ToHigherLayerAddBonding_model_versionid",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "https://aai.onap:8443",
+        "valueInfo": {
+            
+        },
+        "id": "595f83cd-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_aai_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595f83ce-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CreateTenantV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://so:8080/workflows/messages/message",
+        "valueInfo": {
+            
+        },
+        "id": "595faadf-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_adapters_workflow_message_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "PT30S",
+        "valueInfo": {
+            
+        },
+        "id": "595faae0-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_aai_distribution_delay",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "2.0",
+        "valueInfo": {
+            
+        },
+        "id": "595faae1-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_l3ToHigherLayerAddBonding_model_version",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595faae2-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_ScaleCustomE2EServiceInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "/aai/v11/business/customers/customer",
+        "valueInfo": {
+            
+        },
+        "id": "595faae3-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_default_aai_v11_customer_uri",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "/aai/v11/network/vces/vce",
+        "valueInfo": {
+            
+        },
+        "id": "595faae4-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_default_aai_v11_vce_uri",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://oof-has-api:8091",
+        "valueInfo": {
+            
+        },
+        "id": "595faae5-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_service_agnostic_oof_host",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://so:8080/adapters/SDNCAdapter",
+        "valueInfo": {
+            
+        },
+        "id": "595faae6-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_adapters_sdnc_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "test:testpwd",
+        "valueInfo": {
+            
+        },
+        "id": "595faae7-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_sniro_auth",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "APPC-LCM-WRITE",
+        "valueInfo": {
+            
+        },
+        "id": "595faae8-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_appc_client_topic_read",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595faae9-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoUpdateNetworkInstanceRollback",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595faaea-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DeleteNetworkV2",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595faaeb-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoCompareModelofE2EServiceInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "3904",
+        "valueInfo": {
+            
+        },
+        "id": "595faaec-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_dmaap_port",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595faaed-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoCreateNetworkInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "/api/oof/v1/placement",
+        "valueInfo": {
+            
+        },
+        "id": "595faaee-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_service_agnostic_oof_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595faaef-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_SNIROAdapter",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595faaf0-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoDeleteResourcesV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595faaf1-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DeleteCustomE2EServiceInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "PT5M",
+        "valueInfo": {
+            
+        },
+        "id": "595faaf2-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_sdnc_timeout",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "mso-docker",
+        "valueInfo": {
+            
+        },
+        "id": "595faaf3-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_sitename",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://so:8080/CompleteMsoProcess",
+        "valueInfo": {
+            
+        },
+        "id": "595faaf4-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_adapters_completemsoprocess_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595faaf5-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoCreateNetworkInstanceRollback",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "/aai/v11/network/network-policies/network-policy",
+        "valueInfo": {
+            
+        },
+        "id": "595faaf6-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_default_aai_v11_network_policy_uri",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595faaf7-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CreateCustomE2EServiceInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "6B0E6863FB8EE010AB6F191B3C0489437601E81DC7C86305CB92DB98AFC53D74",
+        "valueInfo": {
+            
+        },
+        "id": "595faaf8-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_adapters_db_auth",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595faaf9-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_Layer3TestAndTurnUpV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595faafa-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_QueryAAICustomer",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595faafb-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_UpdateNetworkV2",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595faafc-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_getLayer3ServiceDetailsV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595faafd-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_UpdateVfModuleVolumeInfraV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595fd20e-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CreateNetworkInstanceInfra",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "/aai/v11/network/l3-networks/l3-network",
+        "valueInfo": {
+            
+        },
+        "id": "595fd20f-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_default_aai_v11_l3_network_uri",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595fd210-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CreateSDNCNetworkResource",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://so:8080/vnfs/rest/v1/vnfs",
+        "valueInfo": {
+            
+        },
+        "id": "595fd211-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_adapters_vnf_rest_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "64AG2hF4pYeG2pq7CT6XwUOT",
+        "valueInfo": {
+            
+        },
+        "id": "595fd212-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_appc_client_secret",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595fd213-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CompareModelofE2EServiceInstance",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595fd214-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoDeleteVfModuleVolumeV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595fd215-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoDeleteVfModuleVolumeRollback",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://so:8080/mso/WorkflowMessage",
+        "valueInfo": {
+            
+        },
+        "id": "595fd216-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_message_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595fd217-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_CreateVfModuleVolume",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "50359538-066f-4a8d-807f-f2bc8eaa79dc",
+        "valueInfo": {
+            
+        },
+        "id": "595fd218-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_workflow_l3ToHigherLayerAddBonding_model_invariantid",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595fd219-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_vnfAdapterRollbackV1",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "http://so:8080/dbadapters/MsoRequestsDbAdapter",
+        "valueInfo": {
+            
+        },
+        "id": "595fd21a-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_mso_adapters_db_endpoint",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "595fd21b-9736-11e8-8caf-022ac9304eeb",
+        "name": "URN_log_debug_DoCreateServiceInstanceRollback",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "false",
+        "valueInfo": {
+            
+        },
+        "id": "595fd21c-9736-11e8-8caf-022ac9304eeb",
+        "name": "isDebugLogEnabled",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "CVRCS_",
+        "valueInfo": {
+            
+        },
+        "id": "59bb113c-9736-11e8-8caf-022ac9304eeb",
+        "name": "prefix",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "{\"requestDetails\":{\"modelInfo\":{\"modelInvariantUuid\":\"8e2be9fa-fffb-4e23-89a5-65497709f507\",\"modelType\":\"service\",\"modelName\":\"PNFSERVICE\",\"modelVersion\":\"1.0\",\"modelUuid\":\"4f7afc34-e475-41ca-be73-40f9a0f7ffa4\"},\"requestInfo\":{\"productFamilyId\":\"c8d92bf2-2c2e-4802-94e0-3f9e0825cc08\",\"source\":\"UUI\",\"instanceName\":\"AFRPOSTMAN51\",\"suppressRollback\":false,\"requestorId\":\"demo\"},\"subscriberInfo\":{\"globalSubscriberId\":\"Demonstration\"},\"cloudConfiguration\":{\"tenantId\":\"3e001881bcb342418ab5f2788a73255d\",\"lcpCloudRegionId\":\"regionOne_aaa_bbb\"},\"requestParameters\":{\"alaCarte\":false,\"subscriptionServiceType\":\"vCPE\",\"userParams\":[{\"name\":\"Homing_Solution\",\"value\":\"dummy\"}],\"aLaCarte\":false},\"project\":{\"projectName\":\"Project-Demonstration\"},\"owningEntity\":{\"owningEntityId\":\"c77274d4-4881-493a-ad46-368ea0996eb3\",\"owningEntityName\":\"OE-Demonstration\"}},\"correlationId\":\"afr\"}",
+        "valueInfo": {
+            
+        },
+        "id": "59bbfb9e-9736-11e8-8caf-022ac9304eeb",
+        "name": "createVcpeServiceRequest",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "Demonstration",
+        "valueInfo": {
+            
+        },
+        "id": "59bbfba0-9736-11e8-8caf-022ac9304eeb",
+        "name": "globalSubscriberId",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "AFRPOSTMAN51",
+        "valueInfo": {
+            
+        },
+        "id": "59bbfba2-9736-11e8-8caf-022ac9304eeb",
+        "name": "serviceInstanceName",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "55b3f0ea-70c5-4965-9e00-df77ed1552a3",
+        "valueInfo": {
+            
+        },
+        "id": "59bbfba4-9736-11e8-8caf-022ac9304eeb",
+        "name": "msoRequestId",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "Integer",
+        "value": 0,
+        "valueInfo": {
+            
+        },
+        "id": "59bcbef6-9736-11e8-8caf-022ac9304eeb",
+        "name": "CVRCS_VnfsCreatedCount",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "c8d92bf2-2c2e-4802-94e0-3f9e0825cc08",
+        "valueInfo": {
+            
+        },
+        "id": "59bcbef8-9736-11e8-8caf-022ac9304eeb",
+        "name": "productFamilyId",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "",
+        "valueInfo": {
+            
+        },
+        "id": "59bcbefa-9736-11e8-8caf-022ac9304eeb",
+        "name": "brgWanMacAddress",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "",
+        "valueInfo": {
+            
+        },
+        "id": "59bcbefc-9736-11e8-8caf-022ac9304eeb",
+        "name": "customerLocation",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "dummy",
+        "valueInfo": {
+            
+        },
+        "id": "59bcbefe-9736-11e8-8caf-022ac9304eeb",
+        "name": "homingService",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "regionOne",
+        "valueInfo": {
+            
+        },
+        "id": "59bcbf00-9736-11e8-8caf-022ac9304eeb",
+        "name": "cloudOwner",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "aaa",
+        "valueInfo": {
+            
+        },
+        "id": "59bcbf02-9736-11e8-8caf-022ac9304eeb",
+        "name": "cloudRegionId",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "",
+        "valueInfo": {
+            
+        },
+        "id": "59bcbf04-9736-11e8-8caf-022ac9304eeb",
+        "name": "homingModelIds",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "1707",
+        "valueInfo": {
+            
+        },
+        "id": "59bcbf06-9736-11e8-8caf-022ac9304eeb",
+        "name": "sdncVersion",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "PT30S",
+        "valueInfo": {
+            
+        },
+        "id": "59bdf788-9736-11e8-8caf-022ac9304eeb",
+        "name": "aaiDistDelay",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "Basic QlBFTENsaWVudDpwYXNzd29yZDEk",
+        "valueInfo": {
+            
+        },
+        "id": "59c34ebf-9736-11e8-8caf-022ac9304eeb",
+        "name": "BasicAuthHeaderValueDB",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "UUI",
+        "valueInfo": {
+            
+        },
+        "id": "59c375d1-9736-11e8-8caf-022ac9304eeb",
+        "name": "source",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "Demonstration",
+        "valueInfo": {
+            
+        },
+        "id": "59c39ce4-9736-11e8-8caf-022ac9304eeb",
+        "name": "globalCustomerId",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "vCPE",
+        "valueInfo": {
+            
+        },
+        "id": "59c39ce6-9736-11e8-8caf-022ac9304eeb",
+        "name": "subscriptionServiceType",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "false",
+        "valueInfo": {
+            
+        },
+        "id": "59c3c3f8-9736-11e8-8caf-022ac9304eeb",
+        "name": "disableRollback",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "{\"globalSubscriberId\":\"Demonstration\"}",
+        "valueInfo": {
+            
+        },
+        "id": "59c3eb0b-9736-11e8-8caf-022ac9304eeb",
+        "name": "subscriberInfo",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "Object",
+        "value": {
+            "Homing_Solution": "dummy"
+        },
+        "valueInfo": {
+            "objectTypeName": "java.util.LinkedHashMap",
+            "serializationDataFormat": "application/x-java-serialized-object"
+        },
+        "id": "59ca7ac1-9736-11e8-8caf-022ac9304eeb",
+        "name": "serviceInputParams",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "<request-info xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\">\n                    <request-id>55b3f0ea-70c5-4965-9e00-df77ed1552a3</request-id>\n                    <action>CREATE</action>\n                    <source>UUI</source>\n                   </request-info>",
+        "valueInfo": {
+            
+        },
+        "id": "59cb3e15-9736-11e8-8caf-022ac9304eeb",
+        "name": "CVRCS_requestInfo",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "202",
+        "valueInfo": {
+            
+        },
+        "id": "59d1f4d8-9736-11e8-8caf-022ac9304eeb",
+        "name": "AFRFLOWResponseCode",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "{\"requestReferences\":{\"instanceId\":\"744fee42-8e20-4152-ad75-17fb1ebfc5b2\",\"requestId\":\"55b3f0ea-70c5-4965-9e00-df77ed1552a3\"}}",
+        "valueInfo": {
+            
+        },
+        "id": "59d1f4da-9736-11e8-8caf-022ac9304eeb",
+        "name": "AFRFLOWResponse",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "Success",
+        "valueInfo": {
+            
+        },
+        "id": "59d1f4dc-9736-11e8-8caf-022ac9304eeb",
+        "name": "AFRFLOWStatus",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "{\"requestReferences\":{\"instanceId\":\"744fee42-8e20-4152-ad75-17fb1ebfc5b2\",\"requestId\":\"55b3f0ea-70c5-4965-9e00-df77ed1552a3\"}}",
+        "valueInfo": {
+            
+        },
+        "id": "59d1f4de-9736-11e8-8caf-022ac9304eeb",
+        "name": "WorkflowResponse",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "true",
+        "valueInfo": {
+            
+        },
+        "id": "59d3c9a0-9736-11e8-8caf-022ac9304eeb",
+        "name": "AFRFLOWWorkflowResponseSent",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "{\"modelInvariantUuid\":\"8e2be9fa-fffb-4e23-89a5-65497709f507\",\"modelName\":\"PNFSERVICE\",\"modelVersion\":\"1.0\",\"modelType\":\"service\",\"modelUuid\":\"4f7afc34-e475-41ca-be73-40f9a0f7ffa4\"}",
+        "valueInfo": {
+            
+        },
+        "id": "59d6d6e5-9736-11e8-8caf-022ac9304eeb",
+        "name": "serviceModelInfo",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "Object",
+        "value": null,
+        "valueInfo": null,
+        "id": "5aea904b-9736-11e8-8caf-022ac9304eeb",
+        "name": "serviceDecomposition",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": "Cannot deserialize object in variable 'serviceDecomposition': ENGINE-09017 Cannot load class 'org.openecomp.mso.bpmn.core.domain.ServiceDecomposition': org.openecomp.mso.bpmn.core.domain.ServiceDecomposition from [Module \"deployment.camunda-rest-api-1.2.0-SNAPSHOT.war:main\" from Service Module Loader]",
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "Null",
+        "value": null,
+        "valueInfo": {
+            
+        },
+        "id": "5aea904f-9736-11e8-8caf-022ac9304eeb",
+        "name": "WorkflowException",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "Object",
+        "value": [],
+        "valueInfo": {
+            "objectTypeName": "java.util.ArrayList",
+            "serializationDataFormat": "application/x-java-serialized-object"
+        },
+        "id": "5aedc4a4-9736-11e8-8caf-022ac9304eeb",
+        "name": "vnfList",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "[]",
+        "valueInfo": {
+            
+        },
+        "id": "5aedc4a8-9736-11e8-8caf-022ac9304eeb",
+        "name": "vnfListString",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "Integer",
+        "value": 0,
+        "valueInfo": {
+            
+        },
+        "id": "5aedebba-9736-11e8-8caf-022ac9304eeb",
+        "name": "CVRCS_VNFsCount",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "",
+        "valueInfo": {
+            
+        },
+        "id": "5aedebbc-9736-11e8-8caf-022ac9304eeb",
+        "name": "vnfModelInfo",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "",
+        "valueInfo": {
+            
+        },
+        "id": "5aedebbe-9736-11e8-8caf-022ac9304eeb",
+        "name": "vnfModelInfoString",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "{\n  \"serviceInstance\" : {\n    \"instanceId\" : \"744fee42-8e20-4152-ad75-17fb1ebfc5b2\"\n  },\n  \"serviceNetworks\" : [ ],\n  \"serviceVnfs\" : [ ],\n  \"serviceAllottedResources\" : [ ],\n  \"modelInfo\" : {\n    \"modelName\" : \"PNFSERVIVE\",\n    \"modelUuid\" : \"4f7afc34-e475-41ca-be73-40f9a0f7ffa4\",\n    \"modelInvariantUuid\" : \"8e2be9fa-fffb-4e23-89a5-65497709f507\",\n    \"modelVersion\" : \"1.0\",\n    \"modelCustomizationUuid\" : \"\",\n    \"modelCustomizationName\" : \"\",\n    \"modelInstanceName\" : \"\",\n    \"modelType\" : \"\"\n  },\n  \"serviceType\" : \"aaa\",\n  \"serviceRole\" : \"aaa\",\n  \"vnfResource\" : [ ],\n  \"networkResource\" : [ ],\n  \"allottedResource\" : [ ]\n}",
+        "valueInfo": {
+            
+        },
+        "id": "5af083d4-9736-11e8-8caf-022ac9304eeb",
+        "name": "serviceDecompositionString",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "Null",
+        "value": null,
+        "valueInfo": {
+            
+        },
+        "id": "5e7eb37e-9736-11e8-8caf-022ac9304eeb",
+        "name": "rolledBack",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "Object",
+        "value": null,
+        "valueInfo": null,
+        "id": "5e7eda91-9736-11e8-8caf-022ac9304eeb",
+        "name": "DCRESI_rollbackData",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": "Cannot deserialize object in variable 'DCRESI_rollbackData': ENGINE-09017 Cannot load class 'org.openecomp.mso.bpmn.core.RollbackData': org.openecomp.mso.bpmn.core.RollbackData from [Module \"deployment.camunda-rest-api-1.2.0-SNAPSHOT.war:main\" from Service Module Loader]",
+        "tenantId": null,
+        "state": "CREATED"
+    },
+    {
+        "type": "String",
+        "value": "\n            <soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:req=\"http://org.openecomp.mso/requestsdb\">\n            <soapenv:Header/>\n            <soapenv:Body>\n            <req:updateInfraRequest>\n                <requestId>55b3f0ea-70c5-4965-9e00-df77ed1552a3</requestId>\n                <lastModifiedBy>BPEL</lastModifiedBy>\n                <serviceInstanceId>744fee42-8e20-4152-ad75-17fb1ebfc5b2</serviceInstanceId>\n                <serviceInstanceName>AFRPOSTMAN51</serviceInstanceName>\n            </req:updateInfraRequest>\n            </soapenv:Body>\n            </soapenv:Envelope>\n            ",
+        "valueInfo": {
+            
+        },
+        "id": "5e825d08-9736-11e8-8caf-022ac9304eeb",
+        "name": "CVRCS_setUpdateDbInstancePayload",
+        "processDefinitionKey": "AFRFLOW",
+        "processDefinitionId": "AFRFLOW:1:c6eea1b7-9722-11e8-8caf-022ac9304eeb",
+        "processInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "executionId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "activityInstanceId": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+        "caseDefinitionKey": null,
+        "caseDefinitionId": null,
+        "caseInstanceId": null,
+        "caseExecutionId": null,
+        "taskId": null,
+        "errorMessage": null,
+        "tenantId": null,
+        "state": "CREATED"
+    }
+]
\ No newline at end of file
diff --git a/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/singleprocessInstance.json b/so-monitoring/so-monitoring-service/src/test/resources/camundaResponses/singleprocessInstance.json
new file mode 100644 (file)
index 0000000..d1e70e1
--- /dev/null
@@ -0,0 +1,19 @@
+{
+  "id": "5956a99d-9736-11e8-8caf-022ac9304eeb",
+  "businessKey": "203b9171-c113-435e-aaa6-f47cb836e3cb",
+  "processDefinitionId": "EricssonNetworkSliceV1:3:28f9e0fc-9b00-11e8-a57a-022ac90273ed",
+  "processDefinitionKey": "EricssonNetworkSliceV1",
+  "processDefinitionName": "EricssonNetworkSliceV1",
+  "processDefinitionVersion": 3,
+  "startTime": "2018-08-14T09:52:46.105+0000",
+  "endTime": "2018-08-14T09:53:50.499+0000",
+  "durationInMillis": 64394,
+  "startUserId": null,
+  "startActivityId": "createVCPE_startEvent",
+  "deleteReason": null,
+  "superProcessInstanceId": null,
+  "superCaseInstanceId": null,
+  "caseInstanceId": null,
+  "tenantId": null,
+  "state": "COMPLETED"
+}
\ No newline at end of file