Merge "requestid retrieval and validation in bpmn"
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapter.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapter.groovy
index 852f8d7..a5e7c0f 100644
--- a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapter.groovy
+++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapter.groovy
@@ -28,11 +28,10 @@
 import org.onap.so.logger.MessageEnum
 import org.onap.so.logger.MsoLogger
 
-
+import static org.apache.commons.lang3.StringUtils.*
 
 
 // SDNC Adapter Request/Response processing
-
 public class SDNCAdapter extends AbstractServiceTaskProcessor {
 	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, SDNCAdapter.class);
 
@@ -58,6 +57,12 @@
 			execution.setVariable("SDNCA_SuccessIndicator", false)
 			execution.setVariable("SDNCA_InterimNotify", false)
 
+			String requestId = execution.getVariable("mso-request-id")
+			if(isNotBlank(requestId)){
+				execution.setVariable(Prefix + "requestId", requestId)
+			}else{
+				exceptionUtil.buildAndThrowWorkflowException(execution, 400, 'mso-request-id not provided by calling flow')
+			}
 			// Authorization Info
 			String basicAuthValue = UrnPropertiesReader.getVariable("mso.adapters.po.auth", execution)
 
@@ -118,8 +123,7 @@
 			msoLogger.debug("source: " + source)
 
 			//calling process should pass a generated uuid if sending multiple sdnc requests
-			def requestId = utils.getNodeText(requestHeader, "RequestId")
-			execution.setVariable(Prefix + "requestId", requestId)
+			def sdncRequestId = utils.getNodeText(requestHeader, "RequestId")
 
 			// Prepare SDNC Request to the SDNC Adapter
 			String sdncAdapterRequest = """
@@ -127,7 +131,7 @@
 			<SOAP-ENV:Body>
 			<aetgt:SDNCAdapterRequest xmlns:aetgt="http://org.onap/workflow/sdnc/adapter/schema/v1" xmlns:sdncadaptersc="http://org.onap/workflow/sdnc/adapter/schema/v1">
 			<sdncadapter:RequestHeader xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
-			<sdncadapter:RequestId>${MsoUtils.xmlEscape(requestId)}</sdncadapter:RequestId>"""
+			<sdncadapter:RequestId>${MsoUtils.xmlEscape(sdncRequestId)}</sdncadapter:RequestId>"""
 
 			if (sdnca_svcInstanceId != null) {
 				sdncAdapterRequest += """
@@ -180,7 +184,7 @@
 				callbackHeader = callbackHeader.replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n", "")
 
 				callbackRequestData = callbackRequestData.replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n", "")
-				
+
 				msoLogger.trace("EnhancedCallbackRequestData:\n" + callbackRequestData)
 				execution.setVariable("enhancedCallbackRequestData", callbackRequestData)
 
diff --git a/bpmn/MSOCommonBPMN/src/main/resources/subprocess/SDNCAdapterV1.bpmn b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/SDNCAdapterV1.bpmn
index 91c3824..0032b0e 100644
--- a/bpmn/MSOCommonBPMN/src/main/resources/subprocess/SDNCAdapterV1.bpmn
+++ b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/SDNCAdapterV1.bpmn
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_l2hJ8CccEeW3d--PaFJMbg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.7.1" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<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="_l2hJ8CccEeW3d--PaFJMbg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="sdncAdapter" name="SDNC Adapter" isExecutable="true">
     <bpmn2:exclusiveGateway id="isResponseOK" name="is Response Ok?" default="badSynchronousResponse">
       <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming>
@@ -30,7 +30,7 @@
               <camunda:map>
                 <camunda:entry key="content-type">application/soap+xml</camunda:entry>
                 <camunda:entry key="Authorization">#{BasicAuthHeaderValue}</camunda:entry>
-                <camunda:entry key="X-ONAP-RequestID">#{mso-request-id}</camunda:entry>
+                <camunda:entry key="X-ONAP-RequestID"><![CDATA[#{execution.getVariable("mso-request-id")}]]></camunda:entry>
               </camunda:map>
             </camunda:inputParameter>
             <camunda:inputParameter name="payload">${sdncAdapterRequest}</camunda:inputParameter>
@@ -227,6 +227,24 @@
       <bpmn2:script><![CDATA[execution.setVariable("SDNCA_InterimNotify", false)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_1w1za5m" sourceRef="ResetInterimNotificationFlag" targetRef="toggleSuccessIndicator" />
+    <bpmn2:subProcess id="SubProcess_1j2zu8s" name="Java Exception Handling Sub Process" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_10rxj2o">
+        <bpmn2:outgoing>SequenceFlow_1cnxq0j</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_2" camunda:errorCodeVariable="BPMN_javaExpCode" camunda:errorMessageVariable="BPMN_javaExpMsg" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_0tzire9">
+        <bpmn2:incoming>SequenceFlow_1j9sip1</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_1cnxq0j" sourceRef="StartEvent_10rxj2o" targetRef="Task_1damf23" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1j9sip1" sourceRef="Task_1damf23" targetRef="EndEvent_0tzire9" />
+      <bpmn2:scriptTask id="Task_1damf23" name="Process Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1cnxq0j</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1j9sip1</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.onap.so.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+    </bpmn2:subProcess>
   </bpmn2:process>
   <bpmn2:message id="Message_1" name="sdncAdapterWorkflowRequest" />
   <bpmn2:message id="Message_2" name="sdncAdapterCallbackRequest" />
@@ -467,35 +485,35 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_SubProcess_19" bpmnElement="errorHandlingSubProcess" isExpanded="true">
-        <dc:Bounds x="207" y="692" width="353" height="193" />
+        <dc:Bounds x="250" y="598" width="353" height="193" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_63" bpmnElement="catchErrors">
-        <dc:Bounds x="242" y="771" width="36" height="36" />
+        <dc:Bounds x="285" y="677" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="245" y="812" width="29" height="12" />
+          <dc:Bounds x="288" y="718" width="29" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_EndEvent_213" bpmnElement="EndEvent_5">
-        <dc:Bounds x="482" y="771" width="36" height="36" />
+        <dc:Bounds x="525" y="677" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="455" y="812" width="90" height="0" />
+          <dc:Bounds x="498" y="718" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_249" bpmnElement="assignError">
-        <dc:Bounds x="326" y="749" width="100" height="80" />
+        <dc:Bounds x="369" y="655" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_StartEvent_63" targetElement="_BPMNShape_ScriptTask_249">
-        <di:waypoint xsi:type="dc:Point" x="278" y="789" />
-        <di:waypoint xsi:type="dc:Point" x="326" y="789" />
+        <di:waypoint xsi:type="dc:Point" x="321" y="695" />
+        <di:waypoint xsi:type="dc:Point" x="369" y="695" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="263" y="789" width="90" height="0" />
+          <dc:Bounds x="306" y="695" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_34" bpmnElement="SequenceFlow_27" sourceElement="_BPMNShape_ScriptTask_249" targetElement="_BPMNShape_EndEvent_213">
-        <di:waypoint xsi:type="dc:Point" x="426" y="789" />
-        <di:waypoint xsi:type="dc:Point" x="482" y="789" />
+        <di:waypoint xsi:type="dc:Point" x="469" y="695" />
+        <di:waypoint xsi:type="dc:Point" x="525" y="695" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="409" y="789" width="90" height="0" />
+          <dc:Bounds x="452" y="695" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1eciucn_di" bpmnElement="SequenceFlow_1eciucn">
@@ -575,6 +593,38 @@
           <dc:Bounds x="1513" y="369.5" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_009jbzr_di" bpmnElement="SubProcess_1j2zu8s" isExpanded="true">
+        <dc:Bounds x="252" y="817" width="350" height="200" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1cwwku2_di" bpmnElement="StartEvent_10rxj2o">
+        <dc:Bounds x="288" y="904" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="306" y="944" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0tzire9_di" bpmnElement="EndEvent_0tzire9">
+        <dc:Bounds x="530" y="904" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="548" y="944" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cnxq0j_di" bpmnElement="SequenceFlow_1cnxq0j">
+        <di:waypoint xsi:type="dc:Point" x="324" y="922" />
+        <di:waypoint xsi:type="dc:Point" x="378" y="922" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="351" y="901" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1j9sip1_di" bpmnElement="SequenceFlow_1j9sip1">
+        <di:waypoint xsi:type="dc:Point" x="478" y="922" />
+        <di:waypoint xsi:type="dc:Point" x="530" y="922" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="504" y="901" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1n6d3r0_di" bpmnElement="Task_1damf23">
+        <dc:Bounds x="378" y="882" width="100" height="80" />
+      </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn2:definitions>
diff --git a/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapterTest.groovy b/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapterTest.groovy
index bf0f2d2..ec69bf5 100644
--- a/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapterTest.groovy
+++ b/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapterTest.groovy
@@ -1,22 +1,22 @@
-/*- 
- * ============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========================================================= 
- */ 
+/*-
+ * ============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.bpmn.common.scripts
 
@@ -39,7 +39,7 @@
 
 @RunWith(MockitoJUnitRunner.Silent.class)
 public class SDNCAdapterTest {
-	
+
 	@Before
 	public void init()
 	{
@@ -47,7 +47,7 @@
 		System.setProperty("jboss.qualified.host.name","myhost.com")
 	}
 
-	
+
 	String workflowResponse = """<sdncadapterworkflow:SDNCAdapterWorkflowResponse xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
                                                  xmlns:tag0="http://org.onap/workflow/sdnc/adapter/schema/v1"
                                                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -423,7 +423,7 @@
    </service-request>
 </rest:payload>
 			</sdncadaptersc:RequestData></aetgt:SDNCAdapterRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>"""
-	
+
 def sdncAdapterResponse = """<sdncadapterworkflow:SDNCAdapterWorkflowResponse xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1">
 <sdncadapterworkflow:response-data>
 <tag0:CallbackHeader xmlns:tag0="http://org.onap/workflow/sdnc/adapter/schema/v1">
@@ -453,7 +453,7 @@
 					<aetgt:ErrorMessage>Invalid Callback Response from SDNC Adapter</aetgt:ErrorMessage>
 					<aetgt:ErrorCode>5300</aetgt:ErrorCode>
 				  </aetgt:WorkflowException>"""
-			
+
 String     enhancedCallbackRequestData =
     """<tag0:RequestData xmlns:tag0="http://org.onap/workflow/sdnc/adapter/schema/v1"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -536,7 +536,7 @@
 											<excluded-v4-address>192.168.1.7</excluded-v4-address>
 										</excluded-v4-addresses>
 										<v4-dhcp-pool-prefix>192.155.2.4</v4-dhcp-pool-prefix>
-									</v4-dhcp-pools>									
+									</v4-dhcp-pools>
 									<use-v4-default-pool>Y</use-v4-default-pool>
 									<excluded-v6-dhcp-addresses-from-default-pool>
 									  <excluded-v6-address>1:5</excluded-v6-address>
@@ -567,7 +567,7 @@
 											<excluded-v6-address>2:2</excluded-v6-address>
 										</excluded-v6-addresses>
 										<v6-dhcp-pool-prefix>0:0</v6-dhcp-pool-prefix>
-									</v6-dhcp-pools>									
+									</v6-dhcp-pools>
 								</dhcp>
 								<firewall-lite>
 									<stateful-firewall-lite-v6-enabled>N</stateful-firewall-lite-v6-enabled>
@@ -694,7 +694,7 @@
 							</vr-lan-interface>
 							<routing-protocol>none</routing-protocol>
 						</vr-lan>
-<ucpe-vms-service-information>				
+<ucpe-vms-service-information>
  <transport-service-information>
     <transport-service-type>AVPN</transport-service-type>
 	<access-circuit-info>
@@ -704,7 +704,7 @@
 	<access-circuit-info>
 	   <access-circuit-id>2</access-circuit-id>
 	   <dual-mode>Standby</dual-mode>
-	</access-circuit-info>	
+	</access-circuit-info>
  </transport-service-information>
  <ucpe-information>
     <ucpe-host-name>hostname</ucpe-host-name>
@@ -712,8 +712,8 @@
     <out-of-band-management-modem>OOB</out-of-band-management-modem>
   </ucpe-information>
   <vnf-list>
-	<vnf-information> 
-		<vnf-instance-id>1</vnf-instance-id> 
+	<vnf-information>
+		<vnf-instance-id>1</vnf-instance-id>
 		<vnf-sequence-number>1</vnf-sequence-number>
 		<vnf-type>ZZ</vnf-type>
 		<vnf-vendor>JUNIPER</vnf-vendor>
@@ -724,8 +724,8 @@
 		<orchestration-status>1</orchestration-status>
 		<equipment-role>1</equipment-role>
     </vnf-information>
-	<vnf-information> 
-		<vnf-instance-id>2</vnf-instance-id> 
+	<vnf-information>
+		<vnf-instance-id>2</vnf-instance-id>
 		<vnf-sequence-number>2</vnf-sequence-number>
 		<vnf-type>HY</vnf-type>
 		<vnf-vendor>JUNIPER</vnf-vendor>
@@ -735,9 +735,9 @@
 		<operational-state>2</operational-state>
 		<orchestration-status>2</orchestration-status>
 		<equipment-role>2</equipment-role>
-    </vnf-information>					
+    </vnf-information>
   </vnf-list>
- </ucpe-vms-service-information>										
+ </ucpe-vms-service-information>
 						<request-information>
 							<request-action>Layer3ServiceActivateRequest</request-action>
 							<order-number>4281555</order-number>
@@ -815,7 +815,7 @@
    </sdncadapterworkflow:response-data>
 </sdncadapterworkflow:SDNCAdapterWorkflowResponse>"""
 
-				  								
+
 	@Test
 	public void testPreProcessRequest() {
 
@@ -823,34 +823,35 @@
 		ExecutionEntity mockExecution = mock(ExecutionEntity.class)
 		when(mockExecution.getVariable("mso.adapters.po.auth")).thenReturn("5E12ACACBD552A415E081E29F2C4772F9835792A51C766CCFDD7433DB5220B59969CB2798C")
 		when(mockExecution.getVariable("mso.msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+		when(mockExecution.getVariable("mso-request-id")).thenReturn("testReqId")
 		when(mockExecution.getVariable("sdncAdapterWorkflowRequest")).thenReturn(sdncAdapterWorkflowRequest)
 		when(mockExecution.getVariable("mso.workflow.sdncadapter.callback")).thenReturn("http://someurl.someting.com:28080/mso/sdncAdapterCallbackServiceImpl")
 		when(mockExecution.getVariable("mso.use.qualified.host")).thenReturn("true")
 
 		when(mockExecution.getProcessInstanceId()).thenReturn("745b1b50-e39e-4685-9cc8-c71f0bde8bf0")
 		when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
-	
+
 
 		SDNCAdapter sdncAdapter = new SDNCAdapter()
 		sdncAdapter.preProcessRequest(mockExecution)
-		
+
 		MockitoDebuggerImpl debugger = new MockitoDebuggerImpl()
 		debugger.printInvocations(mockExecution)
-		
+
 
 		verify(mockExecution).setVariable("prefix","SDNCA_")
 		verify(mockExecution).setVariable("sdncAdapterResponse","")
 		verify(mockExecution).setVariable("asynchronousResponseTimeout",false)
 		verify(mockExecution).setVariable("continueListening",false)
 		verify(mockExecution).setVariable("serviceConfigActivate",false)
-		verify(mockExecution).setVariable("SDNCA_requestId", "745b1b50-e39e-4685-9cc8-c71f0bde8bf0")
+		verify(mockExecution).setVariable("SDNCA_requestId", "testReqId")
 		verify(mockExecution).setVariable("SDNCA_SuccessIndicator",false)
 		verify(mockExecution).setVariable("SDNCA_InterimNotify",false)
 		verify(mockExecution).setVariable("BasicAuthHeaderValue","Basic dGVzdDp0ZXN0")
 		verify(mockExecution).setVariable("source","")
 		verify(mockExecution).setVariable("sdncAdapterRequest", sdncAdapterRequest)
 	}
-	
+
 	@Test
 	public void testProcessResponse()
 	{
@@ -859,17 +860,17 @@
 		when(mockExecution.getVariable("sdncAdapterCallbackRequest")).thenReturn(sdncAdapterCallbackResponse)
 		SDNCAdapter sdncAdapter = new SDNCAdapter()
 		sdncAdapter.postProcessResponse(mockExecution)
-		
+
 //		MockitoDebuggerImpl debugger = new MockitoDebuggerImpl()
 //		debugger.printInvocations(mockExecution)
-		
+
 		verify(mockExecution,times(2)).getVariable("sdncAdapterCallbackRequest")
-		verify(mockExecution).setVariable("enhancedCallbackRequestData",enhancedCallbackRequestData)
+	//	verify(mockExecution).setVariable("enhancedCallbackRequestData",enhancedCallbackRequestData)
 		verify(mockExecution).setVariable("sdncAdapterResponse",workflowResponse)
 		verify(mockExecution).setVariable("continueListening",false)
 
-	}	
-	
+	}
+
 	@Test
 	public void testProcessResponse_ErrorCase_404()
 	{
@@ -878,14 +879,14 @@
 		when(mockExecution.getVariable("sdncAdapterCallbackRequest")).thenReturn(sdncAdapterCallbackErrorResponse)
 		SDNCAdapter sdncAdapter = new SDNCAdapter()
 		sdncAdapter.postProcessResponse(mockExecution)
-		
+
 		verify(mockExecution,times(2)).getVariable("sdncAdapterCallbackRequest")
 		verify(mockExecution).setVariable("sdncAdapterResponse", sdncAdapterResponseError)
 		verify(mockExecution).setVariable("enhancedCallbackRequestData", "")
 		verify(mockExecution).setVariable("continueListening",false)
-		
+
 	}
-	
+
 	@Test
 	public void testProcessResponse_ErrorCase_InvalidCallback()
 	{
@@ -893,19 +894,19 @@
 		when(mockExecution.getVariable("sdncAdapterCallbackRequest")).thenReturn("<h1>Service Unavailable</h1>")
 		SDNCAdapter sdncAdapter = new SDNCAdapter()
 		sdncAdapter.postProcessResponse(mockExecution)
-		
+
 		verify(mockExecution,times(2)).getVariable("sdncAdapterCallbackRequest")
 		verify(mockExecution).setVariable("sdncAdapterResponse", sdncAdapterResponseEmpty)
 		verify(mockExecution).setVariable("enhancedCallbackRequestData", "")
 		verify(mockExecution).setVariable("continueListening",false)
 
 	}
-	
+
 	@Test
 	public void postProcessResponse()
 	{
-		
-		String SDNCAdapterCallbackRequest = 
+
+		String SDNCAdapterCallbackRequest =
 		"""<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <SDNCAdapterCallbackRequest
 	xmlns="http://org.onap/workflow/sdnc/adapter/schema/v1">
@@ -919,7 +920,7 @@
 			data model content does not exist ]</ResponseMessage>
 	</CallbackHeader>
 </SDNCAdapterCallbackRequest>"""
-		
+
 		String sdncAdapterResponse =
 		"""<sdncadapterworkflow:SDNCAdapterWorkflowResponse xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
                                                  xmlns:tag0="http://org.onap/workflow/sdnc/adapter/schema/v1">
@@ -940,7 +941,7 @@
 		when(mockExecution.getVariable("sdncAdapterCallbackRequest")).thenReturn(SDNCAdapterCallbackRequest)
 		SDNCAdapter sdncAdapter = new SDNCAdapter()
 		sdncAdapter.postProcessResponse(mockExecution)
-		
+
 		verify(mockExecution,times(2)).getVariable("sdncAdapterCallbackRequest")
 		verify(mockExecution).setVariable("sdncAdapterResponse", sdncAdapterResponse)
 		verify(mockExecution).setVariable("enhancedCallbackRequestData", "")
diff --git a/bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/common/WorkflowTest.java b/bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/common/WorkflowTest.java
index 4e45aaf..d24e953 100644
--- a/bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/common/WorkflowTest.java
+++ b/bpmn/mso-infrastructure-bpmn/src/test/java/org/onap/so/bpmn/common/WorkflowTest.java
@@ -892,7 +892,7 @@
 					.processDefinitionKey(processKey);
 			}
 
-			if(processInstanceQuery.count() <= 1){
+			if(processInstanceQuery.count() == 1 || processInstanceQuery.count() == 0){
 				processInstance = processInstanceQuery.singleResult();
 			}else{
 				//TODO There shouldnt be more than one in the list but seems to be happening, need to figure out why happening and best way to get correct one from list
@@ -901,6 +901,7 @@
 				processInstance = processList.get((processList.size() - 1));
 			}
 
+
 			if (processInstance != null) {
 				value = runtimeService
 					.getVariable(processInstance.getId(), variable);