Create VF Module Error

There are multiple issues here.

1) The LCM healthcheck and config-scale-out should be made
   conditional upon the VNF orchestration status being Active
   or Activated. I'm not going to do that with this commit,
   since the logic will probably need to be moved to the
   DoCreateVfModule flow. What I will do is bypass the LCM
   operations to unblock testing.  Another ticket will need
   to address the real solution.

2) APP-C gave us an API where the controller type is configured
   in their client object, which is NOT what we wanted.  As a
   result, we have to keep a client object for each controller
   type.  Our implementation did not do this.

3) Need to support the APP-C client configuration properties
   for specifying the SDN-C topic names.  I'm refactoring the
   APP-C client urn mapping names to make it clear that they
   are for configuring the APP-C *client* and not necessarily
   for APP-C itself.

Change-Id: I588f3b98b4ee44ba53b4931f9f1a7938ee70bebf
Issue-ID: SO-577
Signed-off-by: Rob Daugherty <rd472p@att.com>
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerClient.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerClient.java
index 8c57b92..3cd26be 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerClient.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerClient.java
@@ -26,9 +26,7 @@
 import java.util.Map;
 import java.util.Properties;
 import java.util.UUID;
-
-import org.openecomp.mso.bpmn.core.PropertyConfiguration;
-import org.springframework.beans.factory.annotation.Autowired;
+import java.util.concurrent.ConcurrentHashMap;
 
 import org.onap.appc.client.lcm.api.AppcClientServiceFactoryProvider;
 import org.onap.appc.client.lcm.api.AppcLifeCycleManagerServiceFactory;
@@ -44,11 +42,16 @@
 import org.onap.appc.client.lcm.model.Payload;
 import org.onap.appc.client.lcm.model.Status;
 import org.onap.appc.client.lcm.model.ZULU;
+import org.openecomp.mso.bpmn.core.PropertyConfiguration;
+import org.springframework.beans.factory.annotation.Autowired;
+
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFLogger.Level;
 import com.att.eelf.configuration.EELFManager;
 
 public class ApplicationControllerClient {
+	
+	public static final String DEFAULT_CONTROLLER_TYPE = "appc";
 
 	private static final String CLIENT_NAME = "MSO";
 
@@ -60,18 +63,68 @@
 	@Autowired
 	public ApplicationControllerSupport appCSupport;
 
-	private static LifeCycleManagerStateful client;	
+	// APPC gave us an API where the controllerType is configured in the
+	// client object, which is not what we asked for. We asked for an API
+	// in which the client would have additional methods that could take
+	// the controllerType as a parameter, so that we would not need to
+	// maintain multiple client objects.  This map should be removed when
+	// the (hopefully short-term) controllerType becomes obsolete.
 
+	private final String controllerType;
+
+	private static ConcurrentHashMap<String, LifeCycleManagerStateful> appCClients = new ConcurrentHashMap<>();
+
+	/**
+	 * Creates an ApplicationControllerClient for communication with APP-C.
+	 */
+	public ApplicationControllerClient() {
+		this(DEFAULT_CONTROLLER_TYPE);
+	}
+	
+	/**
+	 * Creates an ApplicationControllerClient for the specified controller type.
+	 * @param controllerType the controller type: "appc" or "sndnc".
+	 */
 	public ApplicationControllerClient(String controllerType) {
+		this.controllerType = controllerType;
 		appCSupport = new ApplicationControllerSupport();
-		client = this.getAppCClient(controllerType);		
+	}
+	
+	/**
+	 * Gets the controller type.
+	 * @return the controllertype
+	 */
+	public String getControllerType() {
+		return controllerType;
 	}
 
-	public Status runCommand(Action action, org.onap.appc.client.lcm.model.ActionIdentifiers actionIdentifiers, org.onap.appc.client.lcm.model.Payload payload, String requestID)
+	/**
+	 * Returns the AppC client object associated with this ApplicationControllerClient.
+	 * AppC client objects are shared objects.  One is created if it does not exist.
+	 * @return the client object, or null if creation failed
+	 */
+	public LifeCycleManagerStateful getAppCClient() {
+		return appCClients.computeIfAbsent(controllerType, k -> createAppCClient(k));
+	}
+
+	protected LifeCycleManagerStateful createAppCClient(String controllerType) {
+		try {
+			return AppcClientServiceFactoryProvider.getFactory(AppcLifeCycleManagerServiceFactory.class)
+					.createLifeCycleManagerStateful(new ApplicationContext(), getLCMProperties());
+		} catch (AppcClientException e) {
+			auditLogger.log(Level.ERROR, "Error in getting LifeCycleManagerStateful: ", e, e.getMessage());
+			// This null value will cause NullPointerException when used later.
+			// Error handling could certainly be improved here.
+			return null;
+		}
+	}
+
+	public Status runCommand(Action action, org.onap.appc.client.lcm.model.ActionIdentifiers actionIdentifiers,
+			org.onap.appc.client.lcm.model.Payload payload, String requestID)
 			throws ApplicationControllerOrchestratorException {
-		Object requestObject;
-		requestObject = createRequest(action, actionIdentifiers, payload, requestID);
+		Object requestObject = createRequest(action, actionIdentifiers, payload, requestID);
 		appCSupport.logLCMMessage(requestObject);
+		LifeCycleManagerStateful client = getAppCClient();
 		Method lcmMethod = appCSupport.getAPIMethod(action.name(), client, false);
 		try {
 			Object response = lcmMethod.invoke(client, requestObject);
@@ -81,35 +134,21 @@
 		}
 	}
 
-	public LifeCycleManagerStateful getAppCClient(String controllerType) {
-		if (client == null)
-			try {
-				client = AppcClientServiceFactoryProvider.getFactory(AppcLifeCycleManagerServiceFactory.class)
-						.createLifeCycleManagerStateful(new ApplicationContext(), getLCMProperties(controllerType));
-			} catch (AppcClientException e) {
-				auditLogger.log(Level.ERROR, "Error in getting LifeCycleManagerStateful: ", e, e.getMessage());
-			}
-		return client;
-	}
-
-	protected Properties getLCMProperties(String controllerType) {
+	protected Properties getLCMProperties() {
 		Properties properties = new Properties();
 		Map<String, String> globalProperties = PropertyConfiguration.getInstance()
 				.getProperties("mso.bpmn.urn.properties");
-		String controllerTypeValue = controllerType;
-		if (controllerType == null) {			
-			controllerTypeValue = "";
-		}
-		properties.put("topic.read", globalProperties.get("appc.topic.read"));
-		properties.put("topic.read.timeout", globalProperties.get("appc.topic.read.timeout"));
+		properties.put("topic.read", globalProperties.get("appc.client.topic.read"));
+		properties.put("topic.write", globalProperties.get("appc.client.topic.write"));
+		properties.put("topic.sdnc.read", globalProperties.get("appc.client.topic.sdnc.read"));
+		properties.put("topic.sdnc.write", globalProperties.get("appc.client.topic.sdnc.write"));
+		properties.put("topic.read.timeout", globalProperties.get("appc.client.topic.read.timeout"));
 		properties.put("client.response.timeout", globalProperties.get("appc.client.response.timeout"));
-		properties.put("topic.write", globalProperties.get("appc.topic.write"));
-		properties.put("poolMembers", globalProperties.get("appc.poolMembers"));
-		properties.put("client.controllerType", controllerTypeValue);
+		properties.put("poolMembers", globalProperties.get("appc.client.poolMembers"));
 		properties.put("client.key", globalProperties.get("appc.client.key"));
 		properties.put("client.secret", globalProperties.get("appc.client.secret"));
 		properties.put("client.name", CLIENT_NAME);
-		properties.put("service", globalProperties.get("appc.service"));
+		properties.put("service", globalProperties.get("appc.client.service"));
 		return properties;
 	}
 
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/appc/ApplicationControllerClientTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/appc/ApplicationControllerClientTest.java
index e737f5d..ec093be 100644
--- a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/appc/ApplicationControllerClientTest.java
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/appc/ApplicationControllerClientTest.java
@@ -21,6 +21,7 @@
 package org.openecomp.mso.client.appc;

 

 import static org.junit.Assert.assertEquals;

+import static org.junit.Assert.assertNotNull;

 

 import java.util.Properties;

 import java.util.UUID;

@@ -28,7 +29,6 @@
 import org.junit.BeforeClass;

 import org.junit.Ignore;

 import org.junit.Test;

-

 import org.onap.appc.client.lcm.model.Action;

 import org.onap.appc.client.lcm.model.ActionIdentifiers;

 import org.onap.appc.client.lcm.model.CheckLockInput;

@@ -42,6 +42,13 @@
 	}

 

 	@Test

+	public void testClientCreation() {

+		ApplicationControllerClient client = new ApplicationControllerClient("appc");

+		assertEquals(client.getControllerType(), "appc");

+		assertNotNull(client.getAppCClient());

+	}

+

+	@Test

 	public void createRequest_CheckLock_RequestBuilt() {

 		ApplicationControllerClient client = new ApplicationControllerClient("appc");

 		ActionIdentifiers actionIdentifiers = new ActionIdentifiers();

@@ -89,14 +96,15 @@
 	@Test

 	public void test_getLCMPropertiesHelper() {

 		ApplicationControllerClient client = new ApplicationControllerClient("appc");

-		Properties properties = client.getLCMProperties("appc");

+		Properties properties = client.getLCMProperties();

+		assertEquals(properties.get("topic.read"), "APPC-TEST-AMDOCS2");

 		assertEquals(properties.get("topic.write"), "APPC-TEST-AMDOCS1-DEV3");

+		assertEquals(properties.get("topic.sdnc.read"), "SDNC-LCM-READ");

+		assertEquals(properties.get("topic.sdnc.write"), "SDNC-LCM-WRITE");

 		assertEquals(properties.get("topic.read.timeout"), "120000");

 		assertEquals(properties.get("client.response.timeout"), "120000");

-		assertEquals(properties.get("topic.read"), "APPC-TEST-AMDOCS2");

 		assertEquals(properties.get("poolMembers"),

 				"uebsb93kcdc.it.att.com:3904,uebsb92kcdc.it.att.com:3904,uebsb91kcdc.it.att.com:3904");

-		assertEquals(properties.get("client.controllerType"), "appc");

 		assertEquals(properties.get("client.key"), "iaEMAfjsVsZnraBP");

 		assertEquals(properties.get("client.secret"), "wcivUjsjXzmGFBfxMmyJu9dz");

 	}

diff --git a/bpmn/MSOCommonBPMN/src/test/resources/mso.bpmn.urn.properties b/bpmn/MSOCommonBPMN/src/test/resources/mso.bpmn.urn.properties
index 539d365..4b338ae 100644
--- a/bpmn/MSOCommonBPMN/src/test/resources/mso.bpmn.urn.properties
+++ b/bpmn/MSOCommonBPMN/src/test/resources/mso.bpmn.urn.properties
@@ -33,14 +33,16 @@
 policy.auth=Basic dGVzdHBkcDphbHBoYTEyMw==
 policy.environment=TEST
 
-appc.topic.read=APPC-TEST-AMDOCS2
-appc.topic.write=APPC-TEST-AMDOCS1-DEV3
-appc.topic.read.timeout=120000
+appc.client.topic.read=APPC-TEST-AMDOCS2
+appc.client.topic.write=APPC-TEST-AMDOCS1-DEV3
+appc.client.topic.sdnc.read=SDNC-LCM-READ
+appc.client.topic.sdnc.write=SDNC-LCM-WRITE
+appc.client.topic.read.timeout=120000
 appc.client.response.timeout=120000
-appc.service=ueb
-appc.poolMembers=uebsb93kcdc.it.att.com:3904,uebsb92kcdc.it.att.com:3904,uebsb91kcdc.it.att.com:3904
+appc.client.poolMembers=uebsb93kcdc.it.att.com:3904,uebsb92kcdc.it.att.com:3904,uebsb91kcdc.it.att.com:3904
 appc.client.key=iaEMAfjsVsZnraBP
 appc.client.secret=wcivUjsjXzmGFBfxMmyJu9dz
+appc.client.service=ueb
 
 mso.adapters.sdnc.endpoint=http://localhost:28090/SDNCAdapter
 mso.adapters.sdnc.rest.endpoint=http://localhost:28090/SDNCAdapter/v1/sdnc
@@ -134,4 +136,4 @@
 sdno.health-check.dmaap.username=m04768@mso.ecomp.att.com
 sdno.health-check.dmaap.password=eHQ1cUJrOUc
 sdno.health-check.dmaap.subscriber.topic=com.att.sdno.test-health-diagnostic-v02
-sdno.health-check.dmaap.publisher.topic=com.att.sdno.test-health-diagnostic-v02
\ No newline at end of file
+sdno.health-check.dmaap.publisher.topic=com.att.sdno.test-health-diagnostic-v02
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVfModuleInfra.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVfModuleInfra.bpmn
index 70cfa7d..841dec9 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVfModuleInfra.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVfModuleInfra.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="_pNTO8MRhEeWv36YLr7PC3Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2" 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="_pNTO8MRhEeWv36YLr7PC3Q" 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="CreateVfModuleInfra" name="CreateVfModuleInfra" isExecutable="true">
     <bpmn2:startEvent id="StartEvent_1" name="Start">
       <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
@@ -39,6 +39,7 @@
         <camunda:in source="CVFMI_vfModuleInputParams" target="vfModuleInputParams" />
         <camunda:in source="CVFMI_aLaCarte" target="aLaCarte" />
       </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1y7d5qk</bpmn2:incoming>
       <bpmn2:incoming>SequenceFlow_1vx081s</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
     </bpmn2:callActivity>
@@ -91,6 +92,7 @@
     <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="PrepareUpdateInfraRequest" targetRef="ServiceTask_1" />
     <bpmn2:scriptTask id="PrepareMSOCompletionHandler" name="Prepare MSO Completion Handler" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_0td7d9m</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0u8zesf</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*

 def createVfModule = new CreateVfModuleInfra()

@@ -115,7 +117,7 @@
       <bpmn2:outgoing>updateInfraRequestResponseGood</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="updateInfraRequestResponseBad" name="no" sourceRef="UpdateInfraRequestResponseCheck" targetRef="EndEvent_2" />
-    <bpmn2:sequenceFlow id="updateInfraRequestResponseGood" name="yes" sourceRef="UpdateInfraRequestResponseCheck" targetRef="CallActivity_17ukiqm">
+    <bpmn2:sequenceFlow id="updateInfraRequestResponseGood" name="yes" sourceRef="UpdateInfraRequestResponseCheck" targetRef="ExclusiveGateway_0c8x2mq">
       <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("CVFMI_dbResponseCode" ) == '200'}]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
     <bpmn2:endEvent id="EndEvent_2">
@@ -206,7 +208,7 @@
       <bpmn2:sequenceFlow id="SequenceFlow_1qvgrvq" name="" sourceRef="StartEvent_1mov8he" targetRef="ProcessError" />
       <bpmn2:sequenceFlow id="SequenceFlow_1jqizzo" name="" sourceRef="ProcessError" targetRef="EndEvent_0100eju" />
     </bpmn2:subProcess>
-    <bpmn2:callActivity id="CallActivity_0i3men0" name="APP-C Healthcheck" calledElement="AppCClient">
+    <bpmn2:callActivity id="CallActivity_0i3men0" name="LCM HealthCheck" calledElement="AppCClient">
       <bpmn2:extensionElements>
         <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
         <camunda:in source="actionHealthCheck" target="action" />
@@ -220,11 +222,11 @@
         <camunda:out source="workStep" target="workStep" />
         <camunda:out source="failedActivity" target="failedActivity" />
       </bpmn2:extensionElements>
-      <bpmn2:incoming>SequenceFlow_0e2ta6w</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1xggje5</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_07llpjo</bpmn2:outgoing>
     </bpmn2:callActivity>
-    <bpmn2:sequenceFlow id="SequenceFlow_0e2ta6w" sourceRef="SendResponse" targetRef="CallActivity_0i3men0" />
-    <bpmn2:exclusiveGateway id="ExclusiveGateway_09h60ub" name="Error on Pre Health Check?" default="SequenceFlow_1vx081s">
+    <bpmn2:sequenceFlow id="SequenceFlow_0e2ta6w" sourceRef="SendResponse" targetRef="ExclusiveGateway_1qozral" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_09h60ub" name="Error on HealthCheck?" default="SequenceFlow_1vx081s">
       <bpmn2:incoming>SequenceFlow_07llpjo</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1vx081s</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_0nszq2o</bpmn2:outgoing>
@@ -238,7 +240,7 @@
     <bpmn2:sequenceFlow id="SequenceFlow_0nszq2o" name="yes" sourceRef="ExclusiveGateway_09h60ub" targetRef="EndEvent_0n6bb71">
       <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
-    <bpmn2:callActivity id="CallActivity_17ukiqm" name="APP-C ConfigScaleOut" calledElement="AppCClient">
+    <bpmn2:callActivity id="CallActivity_17ukiqm" name="LCM ConfigScaleOut" calledElement="AppCClient">
       <bpmn2:extensionElements>
         <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
         <camunda:in source="actionConfigScaleOut" target="action" />
@@ -253,7 +255,7 @@
         <camunda:out source="failedActivity" target="failedActivity" />
         <camunda:in source="CVFMI_vfModuleId" target="vfModuleId" />
       </bpmn2:extensionElements>
-      <bpmn2:incoming>updateInfraRequestResponseGood</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_020dbkp</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1tk5ru7</bpmn2:outgoing>
     </bpmn2:callActivity>
     <bpmn2:sequenceFlow id="SequenceFlow_1crl7uf" sourceRef="ServiceTask_1" targetRef="UpdateInfraRequestResponseCheck" />
@@ -271,50 +273,69 @@
     <bpmn2:sequenceFlow id="SequenceFlow_0h5cld9" name="yes" sourceRef="ExclusiveGateway_1hncvjy" targetRef="EndEvent_0a97jcr">
       <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorConfigScaleOutCode") != "0"]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1qozral" name="Do HealthCheck?" default="SequenceFlow_1y7d5qk">
+      <bpmn2:incoming>SequenceFlow_0e2ta6w</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1xggje5</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1y7d5qk</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1xggje5" name="yes" sourceRef="ExclusiveGateway_1qozral" targetRef="CallActivity_0i3men0">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA["VNF Orchestration Status" == "Active or Activated"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1y7d5qk" name="no" sourceRef="ExclusiveGateway_1qozral" targetRef="DoCreateVfModuleSubprocess" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0c8x2mq" name="Do ConfigScaleOut?" default="SequenceFlow_0u8zesf">
+      <bpmn2:incoming>updateInfraRequestResponseGood</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_020dbkp</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0u8zesf</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_020dbkp" name="yes" sourceRef="ExclusiveGateway_0c8x2mq" targetRef="CallActivity_17ukiqm">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA["VNF Orchestration Status" == "Active or Activated"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0u8zesf" name="no" sourceRef="ExclusiveGateway_0c8x2mq" targetRef="PrepareMSOCompletionHandler" />
   </bpmn2:process>
   <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmn2:error id="Error_2" name="REST Fault" errorCode="RESTFault" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateVfModuleInfra">
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1">
-        <dc:Bounds x="41" y="231" width="36" height="36" />
+        <dc:Bounds x="41" y="16" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="46" y="52" width="26" height="12" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124">
-        <di:waypoint xsi:type="dc:Point" x="77" y="249" />
-        <di:waypoint xsi:type="dc:Point" x="142" y="249" />
+        <di:waypoint xsi:type="dc:Point" x="77" y="34" />
+        <di:waypoint xsi:type="dc:Point" x="142" y="34" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="110" y="234" width="0" height="0" />
+          <dc:Bounds x="65" y="19" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="PreProcessRequest">
-        <dc:Bounds x="142" y="209" width="100" height="80" />
+        <dc:Bounds x="142" y="-6" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_86" bpmnElement="SendResponse">
-        <dc:Bounds x="309" y="209" width="100" height="80" />
+        <dc:Bounds x="309" y="-6" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_124" targetElement="_BPMNShape_ServiceTask_86">
-        <di:waypoint xsi:type="dc:Point" x="242" y="249" />
-        <di:waypoint xsi:type="dc:Point" x="309" y="249" />
+        <di:waypoint xsi:type="dc:Point" x="242" y="34" />
+        <di:waypoint xsi:type="dc:Point" x="309" y="34" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="276" y="234" width="0" height="0" />
+          <dc:Bounds x="231" y="19" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_178" bpmnElement="DoCreateVfModuleSubprocess">
-        <dc:Bounds x="816" y="209" width="145" height="80" />
+        <dc:Bounds x="597" y="-6" width="145" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_47" bpmnElement="IntermediateThrowEvent_1">
-        <dc:Bounds x="1031" y="231" width="36" height="36" />
+        <dc:Bounds x="812" y="16" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1016" y="272" width="65" height="13" />
+          <dc:Bounds x="796" y="57" width="67" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_178" targetElement="_BPMNShape_IntermediateThrowEvent_47">
-        <di:waypoint xsi:type="dc:Point" x="961" y="249" />
-        <di:waypoint xsi:type="dc:Point" x="995" y="249" />
-        <di:waypoint xsi:type="dc:Point" x="995" y="249" />
-        <di:waypoint xsi:type="dc:Point" x="1031" y="249" />
+        <di:waypoint xsi:type="dc:Point" x="742" y="34" />
+        <di:waypoint xsi:type="dc:Point" x="812" y="34" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1010" y="249" width="0" height="0" />
+          <dc:Bounds x="732" y="19" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_32" bpmnElement="IntermediateCatchEvent_1">
@@ -332,19 +353,19 @@
       <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_179" bpmnElement="UpdateInfraRequestResponseCheck" isMarkerVisible="true">
         <dc:Bounds x="406" y="342" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="407" y="309" width="49" height="12" />
+          <dc:Bounds x="406" y="320" width="50" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_220" bpmnElement="PrepareMSOCompletionHandler">
-        <dc:Bounds x="810" y="327" width="100" height="80" />
+        <dc:Bounds x="651" y="327" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_221" bpmnElement="MSOCompletionHandler">
-        <dc:Bounds x="948" y="327" width="100" height="80" />
+        <dc:Bounds x="789" y="327" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_1">
-        <dc:Bounds x="1237" y="349" width="36" height="36" />
+        <dc:Bounds x="1078" y="349" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1210" y="390" width="90" height="0" />
+          <dc:Bounds x="1051" y="390" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_EndEvent_178" bpmnElement="EndEvent_2">
@@ -368,21 +389,21 @@
         <di:waypoint xsi:type="dc:Point" x="430" y="391" />
         <di:waypoint xsi:type="dc:Point" x="431" y="454" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="423.56413838294776" y="426.8392769104355" width="12" height="12" />
+          <dc:Bounds x="436" y="420" width="15" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="updateInfraRequestResponseGood" sourceElement="_BPMNShape_ExclusiveGateway_179" targetElement="CallActivity_17ukiqm_di">
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="updateInfraRequestResponseGood" sourceElement="_BPMNShape_ExclusiveGateway_179" targetElement="ExclusiveGateway_0c8x2mq_di">
         <di:waypoint xsi:type="dc:Point" x="456" y="367" />
-        <di:waypoint xsi:type="dc:Point" x="525" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="520" y="367" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="482.10526315789474" y="367.00000000000006" width="18" height="12" />
+          <dc:Bounds x="462.46376811594206" y="371.99999999999994" width="20" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_ScriptTask_220" targetElement="_BPMNShape_ScriptTask_221">
-        <di:waypoint xsi:type="dc:Point" x="910" y="367" />
-        <di:waypoint xsi:type="dc:Point" x="948" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="751" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="789" y="367" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="884" y="349" width="90" height="6" />
+          <dc:Bounds x="725" y="349" width="90" height="6" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_SubProcess_20" bpmnElement="ErrorHandler" isExpanded="true">
@@ -440,20 +461,20 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_241" bpmnElement="SetSuccessIndicator">
-        <dc:Bounds x="1105" y="327" width="103" height="79" />
+        <dc:Bounds x="946" y="327" width="103" height="79" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_221" targetElement="_BPMNShape_ScriptTask_241">
-        <di:waypoint xsi:type="dc:Point" x="1048" y="367" />
-        <di:waypoint xsi:type="dc:Point" x="1105" y="366" />
+        <di:waypoint xsi:type="dc:Point" x="889" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="946" y="366" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1031.5" y="341.5" width="90" height="20" />
+          <dc:Bounds x="873" y="342" width="90" height="20" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ScriptTask_241" targetElement="_BPMNShape_EndEvent_177">
-        <di:waypoint xsi:type="dc:Point" x="1208" y="367" />
-        <di:waypoint xsi:type="dc:Point" x="1237" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="1049" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="1078" y="367" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1177.5" y="342" width="90" height="20" />
+          <dc:Bounds x="1019" y="342" width="90" height="20" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="SubProcess_0pgv3l6_di" bpmnElement="SubProcess_0pgv3l6" isExpanded="true">
@@ -508,54 +529,52 @@
         <dc:Bounds x="296" y="698" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_0i3men0_di" bpmnElement="CallActivity_0i3men0">
-        <dc:Bounds x="478" y="209" width="145" height="80" />
+        <dc:Bounds x="432" y="-145" width="145" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0e2ta6w_di" bpmnElement="SequenceFlow_0e2ta6w">
-        <di:waypoint xsi:type="dc:Point" x="409" y="249" />
-        <di:waypoint xsi:type="dc:Point" x="478" y="249" />
+        <di:waypoint xsi:type="dc:Point" x="409" y="34" />
+        <di:waypoint xsi:type="dc:Point" x="480" y="34" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="444" y="224" width="0" height="0" />
+          <dc:Bounds x="399.5" y="19" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_09h60ub_di" bpmnElement="ExclusiveGateway_09h60ub" isMarkerVisible="true">
-        <dc:Bounds x="690.4550758459743" y="224.00350058343057" width="50" height="50" />
+        <dc:Bounds x="645" y="-130" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="679" y="274.00350058343054" width="73" height="25" />
+          <dc:Bounds x="632" y="-162" width="75" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1vx081s_di" bpmnElement="SequenceFlow_1vx081s">
-        <di:waypoint xsi:type="dc:Point" x="740" y="249" />
-        <di:waypoint xsi:type="dc:Point" x="775" y="249" />
-        <di:waypoint xsi:type="dc:Point" x="775" y="249" />
-        <di:waypoint xsi:type="dc:Point" x="816" y="249" />
+        <di:waypoint xsi:type="dc:Point" x="670" y="-80" />
+        <di:waypoint xsi:type="dc:Point" x="670" y="-38" />
+        <di:waypoint xsi:type="dc:Point" x="670" y="-38" />
+        <di:waypoint xsi:type="dc:Point" x="670" y="-6" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="784" y="249" width="12" height="13" />
+          <dc:Bounds x="674.9351851851853" y="-69.97752808988761" width="15" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_07llpjo_di" bpmnElement="SequenceFlow_07llpjo">
-        <di:waypoint xsi:type="dc:Point" x="623" y="249" />
-        <di:waypoint xsi:type="dc:Point" x="653" y="249" />
-        <di:waypoint xsi:type="dc:Point" x="653" y="249" />
-        <di:waypoint xsi:type="dc:Point" x="690" y="249" />
+        <di:waypoint xsi:type="dc:Point" x="577" y="-105" />
+        <di:waypoint xsi:type="dc:Point" x="645" y="-105" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="668" y="249" width="0" height="0" />
+          <dc:Bounds x="566" y="-120" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_0n6bb71_di" bpmnElement="EndEvent_0n6bb71">
-        <dc:Bounds x="697" y="118" width="36" height="36" />
+        <dc:Bounds x="760" y="-123" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="715" y="159" width="0" height="0" />
+          <dc:Bounds x="733" y="-82" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0nszq2o_di" bpmnElement="SequenceFlow_0nszq2o">
-        <di:waypoint xsi:type="dc:Point" x="715" y="224" />
-        <di:waypoint xsi:type="dc:Point" x="715" y="154" />
+        <di:waypoint xsi:type="dc:Point" x="695" y="-105" />
+        <di:waypoint xsi:type="dc:Point" x="760" y="-105" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="721" y="179" width="17" height="13" />
+          <dc:Bounds x="700.9862881434168" y="-100.62310488133339" width="20" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="CallActivity_17ukiqm_di" bpmnElement="CallActivity_17ukiqm">
-        <dc:Bounds x="525" y="327" width="145" height="80" />
+        <dc:Bounds x="472" y="189" width="145" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1crl7uf_di" bpmnElement="SequenceFlow_1crl7uf">
         <di:waypoint xsi:type="dc:Point" x="377" y="367" />
@@ -565,38 +584,76 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_1hncvjy_di" bpmnElement="ExclusiveGateway_1hncvjy" isMarkerVisible="true">
-        <dc:Bounds x="712" y="342" width="50" height="50" />
+        <dc:Bounds x="675" y="204" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="696" y="308" width="82" height="24" />
+          <dc:Bounds x="657" y="170" width="86" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1tk5ru7_di" bpmnElement="SequenceFlow_1tk5ru7">
-        <di:waypoint xsi:type="dc:Point" x="670" y="367" />
-        <di:waypoint xsi:type="dc:Point" x="712" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="617" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="675" y="229" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="691" y="346" width="0" height="12" />
+          <dc:Bounds x="601" y="208" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0td7d9m_di" bpmnElement="SequenceFlow_0td7d9m">
-        <di:waypoint xsi:type="dc:Point" x="762" y="367" />
-        <di:waypoint xsi:type="dc:Point" x="810" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="700" y="254" />
+        <di:waypoint xsi:type="dc:Point" x="701" y="327" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="780" y="346" width="12" height="12" />
+          <dc:Bounds x="706.5002014596164" y="260.46992001430345" width="15" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_0a97jcr_di" bpmnElement="EndEvent_0a97jcr">
-        <dc:Bounds x="719" y="454" width="36" height="36" />
+        <dc:Bounds x="773" y="211" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="692" y="495" width="0" height="12" />
+          <dc:Bounds x="701" y="252" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0h5cld9_di" bpmnElement="SequenceFlow_0h5cld9">
-        <di:waypoint xsi:type="dc:Point" x="737" y="392" />
-        <di:waypoint xsi:type="dc:Point" x="737" y="423" />
-        <di:waypoint xsi:type="dc:Point" x="737" y="423" />
-        <di:waypoint xsi:type="dc:Point" x="737" y="454" />
+        <di:waypoint xsi:type="dc:Point" x="725" y="229" />
+        <di:waypoint xsi:type="dc:Point" x="773" y="229" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="743" y="417" width="18" height="12" />
+          <dc:Bounds x="729" y="235" width="20" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1qozral_di" bpmnElement="ExclusiveGateway_1qozral" isMarkerVisible="true">
+        <dc:Bounds x="479.5474525474525" y="9" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="463" y="66" width="86" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xggje5_di" bpmnElement="SequenceFlow_1xggje5">
+        <di:waypoint xsi:type="dc:Point" x="505" y="9" />
+        <di:waypoint xsi:type="dc:Point" x="505" y="-65" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="512" y="-26" width="20" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1y7d5qk_di" bpmnElement="SequenceFlow_1y7d5qk">
+        <di:waypoint xsi:type="dc:Point" x="530" y="34" />
+        <di:waypoint xsi:type="dc:Point" x="597" y="34" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="546" y="37" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0c8x2mq_di" bpmnElement="ExclusiveGateway_0c8x2mq" isMarkerVisible="true">
+        <dc:Bounds x="520" y="342" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="502" y="402" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_020dbkp_di" bpmnElement="SequenceFlow_020dbkp">
+        <di:waypoint xsi:type="dc:Point" x="545" y="342" />
+        <di:waypoint xsi:type="dc:Point" x="545" y="269" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="550" y="307" width="20" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0u8zesf_di" bpmnElement="SequenceFlow_0u8zesf">
+        <di:waypoint xsi:type="dc:Point" x="570" y="367" />
+        <di:waypoint xsi:type="dc:Point" x="651" y="367" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="585" y="372" width="15" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/mso.bpmn.urn.properties b/bpmn/MSOInfrastructureBPMN/src/test/resources/mso.bpmn.urn.properties
index c8ec2df..fc84d9e 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/mso.bpmn.urn.properties
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/mso.bpmn.urn.properties
@@ -114,14 +114,16 @@
 policy.endpoint=http://localhost:28090/pdp/api/

 policy.default.disposition=Skip

 

-appc.topic.read=APPC-CL-FUSION-LCM-RESPONSE

-appc.topic.read.timeout=100

+appc.client.topic.read=APPC-CL-FUSION-LCM-RESPONSE

+appc.client.topic.write=APPC-CL-FUSION-LCM

+appc.client.topic.sdnc.read=SDNC-LCM-READ

+appc.client.topic.sdnc.write=SDNC-LCM-WRITE

+appc.client.topic.read.timeout=100

 appc.client.response.timeout=300

-appc.topic.write=APPC-CL-FUSION-LCM

-appc.poolMembers=localhost:28090

+appc.client.poolMembers=localhost:28090

 appc.client.key=iaEMAfjsVsZnraBP

 appc.client.secret=wcivUjsjXzmGFBfxMmyJu9dz

-#appc.service=ueb

+#appc.client.service=ueb

 

 sdnc.si.sv.types=PORT-MIRROR,PPROBES

 mso.bpmn.optimisticlockingexception.retrycount=3