diff --git a/pom.xml b/pom.xml
index fb86ae8..c4c1a81 100644
--- a/pom.xml
+++ b/pom.xml
@@ -795,6 +795,9 @@
               <goal>verify</goal>
             </goals>
             <configuration>
+            <includes>
+              <include>**/*ItCase.java</include>
+            </includes>
               <forkCount>1</forkCount>
               <reuseForks>false</reuseForks>
             </configuration>
diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java
index 192dcdb..8f80e07 100644
--- a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java
+++ b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java
@@ -101,7 +101,7 @@
             String serviceUuid = sdcCatalogServices.getServiceUuidFromServiceInvariantId(invariantServiceUuid);
             String resourceUuid = "";
             if (resourceUuidList != null && !resourceUuidList.isEmpty()) {
-                resourceUuid = resourceUuidList.get(0).toString();
+                resourceUuid = resourceUuidList.get(0);
             }
             /* Invemtory service url is called in this method */
             isDcaeInfoAvailable = getDcaeInformation(artifactName, serviceUuid, resourceUuid);
@@ -215,7 +215,7 @@
             JSONArray itemsArray = (JSONArray) jsonObj.get("items");
             JSONObject dcaeServiceType0 = (JSONObject) itemsArray.get(0);
             daceInventoryResponse = dcaeServiceType0.toString();
-            logger.info(daceInventoryResponse.toString());
+            logger.info(daceInventoryResponse);
         }
         LoggingUtils.setTimeContext(startTime, new Date());
         metricsLogger.info("getDcaeInformation complete: number services returned=" + numServices);
diff --git a/src/main/java/org/onap/clamp/clds/client/PolicyClient.java b/src/main/java/org/onap/clamp/clds/client/PolicyClient.java
index 391e395..7aa1330 100644
--- a/src/main/java/org/onap/clamp/clds/client/PolicyClient.java
+++ b/src/main/java/org/onap/clamp/clds/client/PolicyClient.java
@@ -140,7 +140,7 @@
 
         // Set Policy Type
         policyParameters.setPolicyConfigType(PolicyConfigType.MicroService);
-        policyParameters.setEcompName(refProp.getStringValue("policy.ecomp.name"));
+        policyParameters.setEcompName(refProp.getStringValue("policy.onap.name"));
         policyParameters.setPolicyName(prop.getCurrentPolicyScopeAndPolicyName());
 
         policyParameters.setConfigBody(policyJson);
@@ -177,7 +177,7 @@
 
         // Set Policy Type
         policyParameters.setPolicyConfigType(PolicyConfigType.Base);
-        policyParameters.setEcompName(refProp.getStringValue("policy.ecomp.name"));
+        policyParameters.setEcompName(refProp.getStringValue("policy.onap.name"));
         policyParameters.setPolicyName(prop.getCurrentPolicyScopeAndPolicyName());
 
         policyParameters.setConfigBody(configBody);
@@ -197,6 +197,43 @@
     }
 
     /**
+     * Perform send of Microservice policy in OTHER type.
+     * 
+     * @param configBody
+     *            The config policy string body
+     * @param prop
+     *            The ModelProperties
+     * @param policyRequestUuid
+     *            The policy request UUID
+     * @return The answer from policy call
+     */
+    public String sendMicroServiceInOther(String configBody, ModelProperties prop, String policyRequestUuid) {
+
+        PolicyParameters policyParameters = new PolicyParameters();
+
+        // Set Policy Type
+        policyParameters.setPolicyConfigType(PolicyConfigType.MicroService);
+        policyParameters.setEcompName(refProp.getStringValue("policy.onap.name"));
+        policyParameters.setPolicyName(prop.getCurrentPolicyScopeAndPolicyName());
+
+        policyParameters.setConfigBody(configBody);
+        policyParameters.setConfigBodyType(PolicyType.OTHER);
+
+        policyParameters.setRequestID(UUID.fromString(policyRequestUuid));
+        String policyNamePrefix = refProp.getStringValue("policy.ms.policyNamePrefix");
+
+        // Adding this line to clear the policy id from policy name while
+        // pushing to policy engine
+        prop.setPolicyUniqueId("");
+
+        String rtnMsg = send(policyParameters, prop, policyNamePrefix);
+        String policyType = refProp.getStringValue("policy.ms.type");
+        push(policyType, prop);
+
+        return rtnMsg;
+    }
+
+    /**
      * Perform send of policy.
      *
      * @param policyParameters
diff --git a/src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDelegate.java
deleted file mode 100644
index d149137..0000000
--- a/src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDelegate.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * 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============================================
- * ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- */
-
-package org.onap.clamp.clds.client;
-
-import java.util.UUID;
-
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.camunda.bpm.engine.delegate.JavaDelegate;
-import org.onap.clamp.clds.client.req.StringMatchPolicyReq;
-import org.onap.clamp.clds.model.prop.ModelProperties;
-import org.onap.clamp.clds.model.prop.StringMatch;
-import org.onap.clamp.clds.model.refprop.RefProp;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-
-/**
- * Send String Match info to policy api.
- */
-public class StringMatchPolicyDelegate implements JavaDelegate {
-    protected static final EELFLogger logger        = EELFManager.getInstance()
-            .getLogger(StringMatchPolicyDelegate.class);
-    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
-
-    @Autowired
-    private PolicyClient            policyClient;
-
-    @Autowired
-    private RefProp                 refProp;
-
-    /**
-     * Perform activity. Send String Match info to policy api.
-     *
-     * @param execution
-     */
-    @Override
-    public void execute(DelegateExecution execution) throws Exception {
-        String stringMatchPolicyRequestUuid = UUID.randomUUID().toString();
-        execution.setVariable("stringMatchPolicyRequestUuid", stringMatchPolicyRequestUuid);
-
-        ModelProperties prop = ModelProperties.create(execution);
-        StringMatch stringMatch = prop.getType(StringMatch.class);
-        if (stringMatch.isFound()) {
-            String policyJson = StringMatchPolicyReq.format(refProp, prop);
-            String responseMessage = policyClient.sendMicroServiceInJson(policyJson, prop, stringMatchPolicyRequestUuid);
-            if (responseMessage != null) {
-                execution.setVariable("stringMatchPolicyResponseMessage", responseMessage.getBytes());
-            }
-        }
-    }
-
-}
diff --git a/src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDeleteDelegate.java b/src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDeleteDelegate.java
deleted file mode 100644
index 5bda8d3..0000000
--- a/src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDeleteDelegate.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * 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============================================
- * ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- */
-
-package org.onap.clamp.clds.client;
-
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.camunda.bpm.engine.delegate.JavaDelegate;
-import org.onap.clamp.clds.model.prop.ModelProperties;
-import org.onap.clamp.clds.model.prop.StringMatch;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-
-/**
- * Delete String Match Policy via policy api.
- */
-public class StringMatchPolicyDeleteDelegate implements JavaDelegate {
-    protected static final EELFLogger logger        = EELFManager.getInstance()
-            .getLogger(StringMatchPolicyDeleteDelegate.class);
-    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
-
-    @Autowired
-    private PolicyClient            policyClient;
-
-    /**
-     * Perform activity. Delete String Match Policy via policy api.
-     *
-     * @param execution
-     */
-    @Override
-    public void execute(DelegateExecution execution) throws Exception {
-        ModelProperties prop = ModelProperties.create(execution);
-        StringMatch stringMatch = prop.getType(StringMatch.class);
-        if (stringMatch.isFound()) {
-            prop.setCurrentModelElementId(stringMatch.getId());
-
-            policyClient.deleteMicrosService(prop);
-        }
-    }
-
-}
diff --git a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java
index 9debcc2..7de1268 100644
--- a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java
@@ -23,19 +23,19 @@
 
 package org.onap.clamp.clds.client;
 
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.DelegateExecution;
 import org.camunda.bpm.engine.delegate.JavaDelegate;
-import org.onap.clamp.clds.client.req.TcaMPolicyReq;
+import org.onap.clamp.clds.client.req.TcaRequestFormatter;
 import org.onap.clamp.clds.model.prop.ModelProperties;
 import org.onap.clamp.clds.model.prop.Tca;
 import org.onap.clamp.clds.model.refprop.RefProp;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-
 /**
  * Send Tca info to policy api.
  *
@@ -46,10 +46,10 @@
     protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
 
     @Autowired
-    private RefProp                 refProp;
+    private RefProp                   refProp;
 
     @Autowired
-    PolicyClient                    policyClient;
+    PolicyClient                      policyClient;
 
     /**
      * Perform activity. Send Tca info to policy api.
@@ -64,8 +64,8 @@
         ModelProperties prop = ModelProperties.create(execution);
         Tca tca = prop.getType(Tca.class);
         if (tca.isFound()) {
-            String policyJson = TcaMPolicyReq.formatTca(refProp, prop);
-            String responseMessage = policyClient.sendMicroServiceInJson(policyJson, prop, tcaPolicyRequestUuid);
+            String policyJson = TcaRequestFormatter.createPolicyJson(refProp, prop);
+            String responseMessage = policyClient.sendMicroServiceInOther(policyJson, prop, tcaPolicyRequestUuid);
             if (responseMessage != null) {
                 execution.setVariable("tcaPolicyResponseMessage", responseMessage.getBytes());
             }
diff --git a/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java b/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java
index f8351ca..32846ed 100644
--- a/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java
+++ b/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java
@@ -26,7 +26,6 @@
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -50,7 +49,6 @@
 import org.onap.clamp.clds.model.CldsSdcServiceDetail;
 import org.onap.clamp.clds.model.prop.Global;
 import org.onap.clamp.clds.model.prop.ModelProperties;
-import org.onap.clamp.clds.model.prop.StringMatch;
 import org.onap.clamp.clds.model.prop.Tca;
 import org.onap.clamp.clds.model.refprop.RefProp;
 
@@ -88,85 +86,16 @@
         String yamlvalue = getYamlvalue(docText);
 
         String updatedBlueprint = "";
-        StringMatch stringMatch = prop.getType(StringMatch.class);
         Tca tca = prop.getType(Tca.class);
-        if (stringMatch.isFound()) {
-            prop.setCurrentModelElementId(stringMatch.getId());
-            ObjectMapper objectMapper = new ObjectMapper();
-            ObjectNode serviceConfigurations = objectMapper.createObjectNode();
-
-            StringMatchPolicyReq.appendServiceConfigurations(refProp, service, serviceConfigurations, stringMatch,
-                    prop);
-            logger.info("Value of serviceConfigurations:" + serviceConfigurations);
-            ObjectNode servConfNode = (ObjectNode) serviceConfigurations.get("serviceConfigurations");
-
-            // get updated blueprint by attaching service Conf from
-            // globalProperties
-            updatedBlueprint = getUpdatedBlueprintWithServiceConf(refProp, prop, yamlvalue, servConfNode);
-        } else if (tca.isFound()) {
-            prop.setCurrentModelElementId(tca.getId());
-            ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", service);
-            ObjectNode content = rootNode.with("content");
-            TcaMPolicyReq.appendSignatures(refProp, service, content, tca, prop);
-            logger.info("Value of content:" + content);
-            // ObjectNode servConfNode =
-            // (ObjectNode)signatures.get("signatures");
-
-            // get updated blueprint by attaching service Conf from
-            // globalProperties
-            updatedBlueprint = getUpdatedBlueprintWithConfiguration(refProp, prop, yamlvalue, content);
-        }
-
+        if (tca.isFound()) {
+		updatedBlueprint = TcaRequestFormatter.updatedBlueprintWithConfiguration(refProp, prop, yamlvalue);
+        } 
         logger.info("value of blueprint:" + updatedBlueprint);
         return updatedBlueprint;
     }
 
-    private static String getUpdatedBlueprintWithServiceConf(RefProp refProp, ModelProperties prop, String yamlValue,
-            ObjectNode serviceConf) throws IOException {
-        Yaml yaml = new Yaml();
-
-        // Serialiaze Yaml file
-        Map<String, Map> loadedYaml = (Map<String, Map>) yaml.load(yamlValue);
-        // Get node templates information from Yaml
-        Map<String, Map> nodeTemplates = loadedYaml.get("node_templates");
-        logger.info("value of NodeTemplates:" + nodeTemplates);
-
-        // Get StringMatch Object information from node templates of Yaml
-        Map<String, Map> smObject = nodeTemplates.get("SM");
-        logger.info("value of StringMatch:" + smObject);
-
-        // Get Properties Object information from stringmatch of Yaml
-        Map<String, String> propsObject = smObject.get("properties");
-        logger.info("value of PropsObject:" + propsObject);
-
-        String deploymentJsonObject = propsObject.get("deployment_JSON");
-        logger.info("value of deploymentJson:" + deploymentJsonObject);
-
-        ObjectMapper mapper = new ObjectMapper();
-        ObjectNode deployJsonNode = (ObjectNode) mapper.readTree(deploymentJsonObject);
-        ObjectNode configurationObjectNode = (ObjectNode) deployJsonNode.get("configuration");
-
-        // "policyName":"example_model06.ClosedLoop_FRWL_SIG_0538e6f2_8c1b_4656_9999_3501b3c59ad7_StringMatch_",
-        String policyNamePrefix = refProp.getStringValue("policy.ms.policyNamePrefix");
-        String policyName = prop.getCurrentPolicyScopeAndFullPolicyName(policyNamePrefix);
-        configurationObjectNode.put("policyName", policyName);
-
-        // "closedLoopControlName":"ClosedLoop-FRWL-SIG-0538e6f2-8c1b-4656-9999-3501b3c59ad7",
-        configurationObjectNode.put("closedLoopControlName", prop.getControlName());
-        configurationObjectNode.put("messageReaderConsumerGroup", prop.getModelName());
-        configurationObjectNode.set("serviceConfigurations", serviceConf);
-        propsObject.put("deployment_JSON", deployJsonNode.toString());
-        String blueprint = yaml.dump(loadedYaml);
-        logger.info("value of updated Yaml File:" + blueprint);
-
-        blueprint = yaml.dump(loadedYaml);
-        logger.info("value of updated Yaml File:" + blueprint);
-
-        return blueprint;
-    }
-
     private static String getUpdatedBlueprintWithConfiguration(RefProp refProp, ModelProperties prop, String yamlValue,
-            ObjectNode serviceConf) throws JsonProcessingException, IOException {
+            ObjectNode serviceConf) throws IOException {
         String blueprint = "";
         Yaml yaml = new Yaml();
         // Serialiaze Yaml file
diff --git a/src/main/java/org/onap/clamp/clds/client/req/StringMatchPolicyReq.java b/src/main/java/org/onap/clamp/clds/client/req/StringMatchPolicyReq.java
deleted file mode 100644
index 5884c3d..0000000
--- a/src/main/java/org/onap/clamp/clds/client/req/StringMatchPolicyReq.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * 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============================================
- * ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- */
-
-package org.onap.clamp.clds.client.req;
-
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.Map.Entry;
-
-import org.onap.clamp.clds.model.prop.Global;
-import org.onap.clamp.clds.model.prop.ModelProperties;
-import org.onap.clamp.clds.model.prop.ResourceGroup;
-import org.onap.clamp.clds.model.prop.ServiceConfiguration;
-import org.onap.clamp.clds.model.prop.StringMatch;
-import org.onap.clamp.clds.model.refprop.RefProp;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Construct a Policy for String Match Micro Service request given CLDS objects.
- */
-public class StringMatchPolicyReq {
-    protected static final EELFLogger logger        = EELFManager.getInstance().getLogger(StringMatchPolicyReq.class);
-    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
-
-    /**
-     * Format Policy String Match request.
-     *
-     * @param refProp
-     * @param prop
-     * @return
-     * @throws IOException
-     */
-    public static String format(RefProp refProp, ModelProperties prop) throws IOException {
-        Global global = prop.getGlobal();
-        String service = global.getService();
-
-        StringMatch sm = prop.getType(StringMatch.class);
-        prop.setCurrentModelElementId(sm.getId());
-        ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("sm.template", service);
-        rootNode.put("policyName", prop.getCurrentPolicyScopeAndPolicyName());
-        ObjectNode content = rootNode.with("content");
-        appendServiceConfigurations(refProp, service, content, sm, prop);
-
-        String stringMatchPolicyReq = rootNode.toString();
-        logger.info("stringMatchPolicyReq=" + stringMatchPolicyReq);
-        return stringMatchPolicyReq;
-    }
-
-    /**
-     * Add serviceConfigurations to json
-     *
-     * @param appendToNode
-     * @param sm
-     * @throws IOException
-     */
-    public static void appendServiceConfigurations(RefProp refProp, String service, ObjectNode appendToNode,
-            StringMatch sm, ModelProperties prop) throws IOException {
-        // "serviceConfigurations":{
-        ObjectNode scNodes = appendToNode.with("serviceConfigurations");
-
-        int index = 0;
-        if (sm != null && sm.getResourceGroups() != null) {
-            for (ResourceGroup resourceGroup : sm.getResourceGroups()) {
-                Iterator<ServiceConfiguration> scItr = resourceGroup.getServiceConfigurations().iterator();
-
-                while (scItr.hasNext()) {
-                    ServiceConfiguration sc = scItr.next();
-
-                    // "ItemX":{
-                    index++;
-                    String keyValue = "Item" + index;
-                    ObjectNode scNode = (ObjectNode) refProp.getJsonTemplate("sm.sc.template", service);
-                    scNodes.set(keyValue, scNode);
-
-                    // "rulegroup":"abc",
-                    String rulegroupInd = refProp.getStringValue("sm.rulegroup", service);
-                    String groupNumber = resourceGroup.getGroupNumber();
-                    if (rulegroupInd != null && rulegroupInd.equalsIgnoreCase("true") && groupNumber != null
-                            && groupNumber.length() > 0) {
-                        scNode.put("rulegroup", groupNumber);
-                    }
-
-                    // "closedLoopControlName":
-                    prop.setPolicyUniqueId(resourceGroup.getPolicyId());
-                    scNode.put("closedLoopControlName", prop.getControlNameAndPolicyUniqueId());
-
-                    // "aaiMatchingFields" : ["VM_NAME"],
-                    JsonUtil.addArrayField(scNode, "aaiMatchingFields", sc.getaaiMatchingFields());
-                    // "aaiSendFields" : ["VMID", "TenantID"],
-                    JsonUtil.addArrayField(scNode, "aaiSendFields", sc.getaaiSendFields());
-
-                    // "stringSet": [
-                    ArrayNode ssNode = scNode.putArray("stringSet");
-
-                    for (Entry<String, String> entry : sc.getStringSet().entrySet()) {
-                        // exclude eventSourceType
-                        if (!entry.getKey().equals("eventSourceType")) {
-                            ssNode.add(entry.getKey());
-                            ssNode.add(entry.getValue());
-                        }
-                    }
-
-                    // timeWindow": "0",
-                    scNode.put("timeWindow", sc.getTimeWindow());
-                    // "ageLimit": "3600",
-                    scNode.put("ageLimit", sc.getAgeLimit());
-                    // "createClosedLoopEventId" : "Initial",
-                    scNode.put("createClosedLoopEventId", sc.getCreateClosedLoopEventId());
-                    // "outputEventName": "OnSet"
-                    scNode.put("outputEventName", sc.getOutputEventName());
-                }
-            }
-        }
-    }
-}
diff --git a/src/main/java/org/onap/clamp/clds/client/req/TcaMPolicyReq.java b/src/main/java/org/onap/clamp/clds/client/req/TcaMPolicyReq.java
deleted file mode 100644
index f310628..0000000
--- a/src/main/java/org/onap/clamp/clds/client/req/TcaMPolicyReq.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * 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============================================
- * ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- */
-
-package org.onap.clamp.clds.client.req;
-
-import java.io.IOException;
-import java.util.Iterator;
-
-import org.onap.clamp.clds.model.prop.Global;
-import org.onap.clamp.clds.model.prop.ModelProperties;
-import org.onap.clamp.clds.model.prop.Tca;
-import org.onap.clamp.clds.model.prop.TcaItem;
-import org.onap.clamp.clds.model.prop.TcaThreshhold;
-import org.onap.clamp.clds.model.refprop.RefProp;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Construct a Policy for Tca/MTca Service request given CLDS objects.
- *
- *
- */
-public class TcaMPolicyReq {
-    protected static final EELFLogger logger        = EELFManager.getInstance().getLogger(TcaMPolicyReq.class);
-    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
-
-    /**
-     * Format Tca Policy request
-     *
-     * @param refProp
-     * @param prop
-     * @return
-     * @throws JsonParseException
-     * @throws JsonMappingException
-     * @throws IOException
-     */
-    public static String formatTca(RefProp refProp, ModelProperties prop)
-            throws JsonParseException, JsonMappingException, IOException {
-        Global global = prop.getGlobal();
-        String service = global.getService();
-
-        Tca tca = prop.getType(Tca.class);
-        prop.setCurrentModelElementId(tca.getId());
-        ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", service);
-        rootNode.put("policyName", prop.getCurrentPolicyScopeAndPolicyName());
-        ObjectNode content = rootNode.with("content");
-        appendSignatures(refProp, service, content, tca, prop);
-
-        String tcaPolicyReq = rootNode.toString();
-        logger.info("tcaPolicyReq=" + tcaPolicyReq);
-        return tcaPolicyReq;
-    }
-
-    /**
-     * Add appendSignatures to json
-     *
-     * @param refProp
-     * @param service
-     * @param appendToNode
-     * @param tca
-     * @param prop
-     * @throws JsonParseException
-     * @throws JsonMappingException
-     * @throws IOException
-     */
-    public static void appendSignatures(RefProp refProp, String service, ObjectNode appendToNode, Tca tca,
-            ModelProperties prop) throws JsonParseException, JsonMappingException, IOException {
-        // "signatures":{
-        ArrayNode tcaNodes = appendToNode.withArray("signatures");
-        for (TcaItem tcaItem : tca.getTcaItems()) {
-            ObjectNode tcaNode = (ObjectNode) refProp.getJsonTemplate("tca.signature.template", service);
-            tcaNode.put("useCaseName", tcaItem.getTcaName());
-            tcaNode.put("signatureName", tcaItem.getTcaName() + "_" + tcaItem.getTcaUuId());
-            tcaNode.put("signatureUuid", tcaItem.getTcaUuId());
-            prop.setPolicyUniqueId(tcaItem.getPolicyId());
-            tcaNode.put("closedLoopControlName", prop.getControlNameAndPolicyUniqueId());
-            tcaNode.put("severity", tcaItem.getSeverity());
-            tcaNode.put("maxInterval", tcaItem.getInterval());
-            tcaNode.put("minMessageViolations", tcaItem.getViolations());
-
-            tcaNodes.add(tcaNode);
-            Iterator<TcaThreshhold> scItr = tcaItem.getTcaThreshholds().iterator();
-            while (scItr.hasNext()) {
-                TcaThreshhold tcaThreshhold = scItr.next();
-                // "thresholds": [
-                ArrayNode thNodes = tcaNode.withArray("thresholds");
-                ObjectNode thNode = thNodes.addObject();
-                thNode.put("fieldPath", tcaThreshhold.getFieldPath());
-                thNode.put("thresholdName", tcaThreshhold.getMetric());
-                thNode.put("thresholdValue", tcaThreshhold.getThreshhold());
-                thNode.put("direction", tcaThreshhold.getOperator());
-            }
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java b/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java
new file mode 100644
index 0000000..3fbf873
--- /dev/null
+++ b/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java
@@ -0,0 +1,166 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.client.req;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.dataformat.yaml.snakeyaml.Yaml;
+
+import java.util.Map;
+
+import org.onap.clamp.clds.exception.TcaRequestFormatterException;
+import org.onap.clamp.clds.model.prop.ModelProperties;
+import org.onap.clamp.clds.model.prop.Tca;
+import org.onap.clamp.clds.model.prop.TcaItem;
+import org.onap.clamp.clds.model.prop.TcaThreshold;
+import org.onap.clamp.clds.model.refprop.RefProp;
+
+/**
+ * Construct the requests for TCA policy and SDC.
+ *
+ */
+public class TcaRequestFormatter {
+    protected static final EELFLogger logger        = EELFManager.getInstance().getLogger(TcaRequestFormatter.class);
+    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
+
+    /**
+     * Hide the default constructor.
+     */
+    private TcaRequestFormatter() {
+
+    }
+
+    /**
+     * Format Tca Policy JSON request.
+     *
+     * @param refProp
+     *            The refProp generally created by Spring, it's an access on the
+     *            clds-references.properties file
+     * @param modelProperties
+     *            The Model Prop created from BPMN JSON and BPMN properties JSON
+     * @return The Json string containing that should be sent to policy
+     */
+    public static String createPolicyJson(RefProp refProp, ModelProperties modelProperties) {
+        try {
+            String service = modelProperties.getGlobal().getService();
+
+            Tca tca = modelProperties.getType(Tca.class);
+            modelProperties.setCurrentModelElementId(tca.getId());
+            ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", service);
+            ((ObjectNode) rootNode.get("cdap-tca-hi-lo_policy").get("metricsPerEventName").get(0)).put("policyName",
+                    modelProperties.getCurrentPolicyScopeAndPolicyName());
+            ((ObjectNode) rootNode.get("cdap-tca-hi-lo_policy").get("metricsPerEventName").get(0)).put("eventName",
+                    tca.getTcaItem().getEventName());
+
+            ObjectNode thresholdsParent = ((ObjectNode) rootNode.get("cdap-tca-hi-lo_policy").get("metricsPerEventName")
+                    .get(0));
+
+            addThresholds(refProp, service, thresholdsParent, tca.getTcaItem(), modelProperties);
+
+            String tcaPolicyReq = rootNode.toString();
+            logger.info("tcaPolicyReq=" + tcaPolicyReq);
+            return tcaPolicyReq;
+        } catch (Exception e) {
+            throw new TcaRequestFormatterException("Exception caught when attempting to create the policy JSON", e);
+        }
+    }
+
+    /**
+     * Add threshold values to the existing policy JSON.
+     *
+     * @param refProp
+     *            The refProp generally created by Spring, it's an access on the
+     *            clds-references.properties file
+     * @param service
+     *            The Service value extracted from Global section of the Bpmn
+     *            Properties JSON
+     * @param appendToNode
+     *            The JSON structure from where the thresholds section must be
+     *            added
+     * @param tcaItem
+     *            The TCA item contained in the Tca object
+     * @param modelProperties
+     *            The Model Properties created from BPMN JSON and BPMN
+     *            properties JSON
+     */
+    private static void addThresholds(RefProp refProp, String service, ObjectNode appendToNode, TcaItem tcaItem,
+            ModelProperties modelProperties) {
+        try {
+            ArrayNode tcaNodes = appendToNode.withArray("thresholds");
+            ObjectNode tcaNode = (ObjectNode) refProp.getJsonTemplate("tca.thresholds.template", service);
+
+            for (TcaThreshold tcaThreshold : tcaItem.getTcaThresholds()) {
+                tcaNode.put("controlLoopSchema", tcaThreshold.getControlLoopSchema());
+                tcaNode.put("closedLoopControlName", modelProperties.getControlNameAndPolicyUniqueId());
+                tcaNode.put("fieldPath", tcaThreshold.getFieldPath());
+                tcaNode.put("thresholdValue", tcaThreshold.getThreshold());
+                tcaNode.put("direction", tcaThreshold.getOperator());
+                tcaNode.put("closedLoopEventStatus", tcaThreshold.getClosedLoopEventStatus());
+                tcaNodes.add(tcaNode);
+            }
+        } catch (Exception e) {
+            throw new TcaRequestFormatterException("Exception caught when attempting to create the thresholds JSON", e);
+        }
+    }
+
+    /**
+     * This method updates the blueprint that is received in the UI with the TCA
+     * Json.
+     * 
+     * @param refProp
+     *            * The refProp generally created by Spring, it's an access on
+     *            the clds-references.properties file
+     * @param modelProperties
+     *            The Model Prop created from BPMN JSON and BPMN properties JSON
+     * @param yamlValue
+     *            The yaml string received from the UI
+     * @return The updated YAML as a string
+     */
+    public static String updatedBlueprintWithConfiguration(RefProp refProp, ModelProperties modelProperties,
+            String yamlValue) {
+        try {
+            String jsonPolicy = createPolicyJson(refProp, modelProperties);
+
+            logger.info("Yaml that will be updated:" + yamlValue);
+            Yaml yaml = new Yaml();
+
+            Map<String, Object> loadedYaml = (Map<String, Object>) yaml.load(yamlValue);
+
+            Map<String, Object> nodeTemplates = (Map<String, Object>) loadedYaml.get("node_templates");
+            Map<String, Object> tcaObject = (Map<String, Object>) nodeTemplates.get("tca_tca");
+            Map<String, Object> propsObject = (Map<String, Object>) tcaObject.get("properties");
+            Map<String, Object> appPreferences = (Map<String, Object>) propsObject.get("app_preferences");
+            appPreferences.put("tca_policy", jsonPolicy);
+
+            String blueprint = yaml.dump(loadedYaml);
+            logger.info("Yaml updated:" + blueprint);
+
+            return blueprint;
+        } catch (Exception e) {
+            throw new TcaRequestFormatterException("Exception caught when attempting to update the blueprint", e);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java b/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java
index a6baa96..6b7d337 100644
--- a/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java
+++ b/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java
@@ -42,8 +42,6 @@
 import org.onap.clamp.clds.client.PolicyClient;
 import org.onap.clamp.clds.client.SdcCatalogServices;
 import org.onap.clamp.clds.client.SdcSendReqDelegate;
-import org.onap.clamp.clds.client.StringMatchPolicyDelegate;
-import org.onap.clamp.clds.client.StringMatchPolicyDeleteDelegate;
 import org.onap.clamp.clds.client.TcaPolicyDelegate;
 import org.onap.clamp.clds.client.TcaPolicyDeleteDelegate;
 import org.onap.clamp.clds.dao.CldsDao;
@@ -128,16 +126,6 @@
         return new OperationalPolicyDeleteDelegate();
     }
 
-    @Bean(name = "stringMatchPolicyDelegate")
-    public StringMatchPolicyDelegate getStringMatchPolicyDelegate() {
-        return new StringMatchPolicyDelegate();
-    }
-
-    @Bean(name = "stringMatchPolicyDeleteDelegate")
-    public StringMatchPolicyDeleteDelegate getStringMatchPolicyDeleteDelegate() {
-        return new StringMatchPolicyDeleteDelegate();
-    }
-
     @Bean(name = "sdcCatalogServices")
     public SdcCatalogServices getSdcCatalogServices() {
         return new SdcCatalogServices();
diff --git a/src/main/java/org/onap/clamp/clds/exception/TcaRequestFormatterException.java b/src/main/java/org/onap/clamp/clds/exception/TcaRequestFormatterException.java
new file mode 100644
index 0000000..055b47f
--- /dev/null
+++ b/src/main/java/org/onap/clamp/clds/exception/TcaRequestFormatterException.java
@@ -0,0 +1,63 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.exception;
+
+/**
+ * New exception to capture TcaRequestFormatterException errors.
+ *
+ */
+public class TcaRequestFormatterException extends RuntimeException {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 169875373143236667L;
+
+    /**
+     * This constructor can be used to create a new
+     * TcaRequestFormatterException.
+     * 
+     * @param message
+     *            A string message detailing the problem
+     * @param e
+     *            The exception sent by the code
+     */
+    public TcaRequestFormatterException(String message, Throwable e) {
+        super(message, e);
+    }
+
+    /**
+     * This constructor can be used to create a new
+     * TcaRequestFormatterException. Use this constructor only if you are
+     * creating a new exception stack, not if an exception was already raised by
+     * another code.
+     *
+     * @param message
+     *            A string message detailing the problem
+     */
+    public TcaRequestFormatterException(String message) {
+        super(message);
+    }
+
+}
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/AbstractModelElement.java b/src/main/java/org/onap/clamp/clds/model/prop/AbstractModelElement.java
index 7038dc6..9ced019 100644
--- a/src/main/java/org/onap/clamp/clds/model/prop/AbstractModelElement.java
+++ b/src/main/java/org/onap/clamp/clds/model/prop/AbstractModelElement.java
@@ -33,7 +33,7 @@
 
 /**
  * Provide base ModelElement functionality. Perform base parsing of properties
- * for a ModelElement (such as, Collector, StringMatch, Policy, Tca, Holmes,
+ * for a ModelElement (such as, VesCollector, Policy, Tca, Holmes,
  * ...)
  */
 public abstract class AbstractModelElement {
@@ -54,7 +54,7 @@
 
     /**
      * Perform base parsing of properties for a ModelElement (such as,
-     * Collector, StringMatch, Policy and Tca)
+     * VesCollector, Policy and Tca)
      *
      * @param type
      * @param modelProp
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/Collector.java b/src/main/java/org/onap/clamp/clds/model/prop/Collector.java
deleted file mode 100644
index be30f3e..0000000
--- a/src/main/java/org/onap/clamp/clds/model/prop/Collector.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * 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============================================
- * ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- */
-
-package org.onap.clamp.clds.model.prop;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import com.fasterxml.jackson.databind.JsonNode;
-
-/**
- * Parse Collector json properties.
- */
-public class Collector extends AbstractModelElement {
-    protected static final EELFLogger       logger         = EELFManager.getInstance().getLogger(Collector.class);
-    protected static final EELFLogger auditLogger    = EELFManager.getInstance().getAuditLogger();
-
-    private static final String     TYPE_COLLECTOR = "collector";
-
-    /**
-     * Parse Collector given json node.
-     *
-     * @param modelBpmn
-     * @param modelJson
-     */
-    public Collector(ModelProperties modelProp, ModelBpmn modelBpmn, JsonNode modelJson) {
-        super(TYPE_COLLECTOR, modelProp, modelBpmn, modelJson);
-        topicPublishes = getValueByName("topicPublishes");
-    }
-
-    public static final String getType() {
-        return TYPE_COLLECTOR;
-    }
-
-}
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmn.java b/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmn.java
index ae7028d..f3d344a 100644
--- a/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmn.java
+++ b/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmn.java
@@ -45,9 +45,8 @@
 /**
  * Parse Model BPMN properties.
  * <p>
- * Example json: {"collector":[{"id":"Collector_11r50j1",
- * "from":"StartEvent_1"}],"stringMatch":[{"id":"StringMatch_0h6cbdv"}],"policy"
- * :[{"id":"Policy_0oxeocn", "from":"StringMatch_0h6cbdv"}]}
+ * Example json: {"policy"
+ * :[{"id":"Policy_0oxeocn", "from":"StartEvent_1"}]}
  */
 public class ModelBpmn {
     protected static final EELFLogger               logger        = EELFManager.getInstance()
@@ -77,7 +76,7 @@
         ObjectMapper objectMapper = new ObjectMapper();
         ObjectNode root = objectMapper.readValue(modelBpmnPropText, ObjectNode.class);
         // iterate over each entry like:
-        // "collector":[{"id":"Collector_11r50j1","from":"StartEvent_1"}]
+        // "Policy":[{"id":"Policy","from":"StartEvent_1"}]
         Iterator<Entry<String, JsonNode>> entryItr = root.fields();
         List<String> bpmnElementIdList = new ArrayList<>();
         while (entryItr.hasNext()) {
@@ -86,7 +85,7 @@
             String type = entry.getKey();
             ArrayNode arrayNode = (ArrayNode) entry.getValue();
             // process each id/from object, like:
-            // {"id":"Collector_11r50j1","from":"StartEvent_1"}
+            // {"id":"Policy","from":"StartEvent_1"}
             for (JsonNode anArrayNode : arrayNode) {
                 ObjectNode node = (ObjectNode) anArrayNode;
                 String id = node.get("id").asText();
@@ -123,11 +122,11 @@
     }
 
     /**
-     * This method verifies if the ModelElement Type (collector, holmes, tca,
+     * This method verifies if the ModelElement Type (holmes, tca,
      * ...) is in the list.
      *
      * @param type
-     *            A model Element type (tca, collector, ...)
+     *            A model Element type (tca, ...)
      * @return true if the element is found or false otherwise
      */
     public boolean isModelElementTypeInList(String type) {
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmnEntry.java b/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmnEntry.java
index 210795b..dc66822 100644
--- a/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmnEntry.java
+++ b/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmnEntry.java
@@ -29,9 +29,8 @@
 /**
  * Model BPMN property entry
  * <p>
- * Example json: {"collector":[{"id":"Collector_11r50j1",
- * "from":"StartEvent_1"}],"stringMatch":[{"id":"StringMatch_0h6cbdv"],"policy":
- * [{"id":"Policy_0oxeocn", "from":"StringMatch_0h6cbdv"}]}
+ * Example json: {"policy":
+ * [{"id":"Policy_0oxeocn", "from":"StartEvent_1"}]}
  */
 public class ModelBpmnEntry {
     protected static final EELFLogger       logger      = EELFManager.getInstance().getLogger(ModelBpmnEntry.class);
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java b/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java
index dc0de32..7111f1d 100644
--- a/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java
+++ b/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java
@@ -72,10 +72,9 @@
 
     static {
         synchronized (lock) {
-            modelElementClasses.put(Collector.class, Collector.getType());
             modelElementClasses.put(Policy.class, Policy.getType());
-            modelElementClasses.put(StringMatch.class, StringMatch.getType());
             modelElementClasses.put(Tca.class, Tca.getType());
+            modelElementClasses.put(Holmes.class, Holmes.getType());
         }
     }
 
@@ -136,7 +135,7 @@
                                             .newInstance(this, modelBpmn, modelJson)));
                         } catch (InstantiationException | NoSuchMethodException | IllegalAccessException
                                 | InvocationTargetException e) {
-                            logger.warn("Unable to instantiate a ModelElement, exception follows: " + e);
+                            logger.warn("Unable to instantiate a ModelElement, exception follows: ", e);
                         }
                     });
         }
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/ResourceGroup.java b/src/main/java/org/onap/clamp/clds/model/prop/ResourceGroup.java
index 7395ced..8b2dbeb 100644
--- a/src/main/java/org/onap/clamp/clds/model/prop/ResourceGroup.java
+++ b/src/main/java/org/onap/clamp/clds/model/prop/ResourceGroup.java
@@ -35,7 +35,7 @@
  * Parse Resource Group json properties.
  *
  * Example json:
- * {"StringMatch_0aji7go":{"Group1":[{"name":"rgname","value":"1493749598520"},{
+ * {"TCA_0aji7go":{"Group1":[{"name":"rgname","value":"1493749598520"},{
  * "name":"rgfriendlyname","value":"Group1"},{"name":"policyName","value":
  * "Policy1"},{"name":"policyId","value":"1"},{"serviceConfigurations":[[{"name"
  * :"aaiMatchingFields","value":["complex.city","vserver.vserver-name"]},{"name"
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/ServiceConfiguration.java b/src/main/java/org/onap/clamp/clds/model/prop/ServiceConfiguration.java
index f15d701..418afbb 100644
--- a/src/main/java/org/onap/clamp/clds/model/prop/ServiceConfiguration.java
+++ b/src/main/java/org/onap/clamp/clds/model/prop/ServiceConfiguration.java
@@ -33,10 +33,10 @@
 import com.fasterxml.jackson.databind.JsonNode;
 
 /**
- * Parse serviceConfigurations from StringMatch json properties.
+ * Parse serviceConfigurations from Tca json properties.
  * <p>
  * Example json:
- * {"StringMatch_0aji7go":{"Group1":[{"name":"rgname","value":"1493749598520"},{
+ * {"Tca_0aji7go":{"Group1":[{"name":"rgname","value":"1493749598520"},{
  * "name":"rgfriendlyname","value":"Group1"},{"name":"policyName","value":
  * "Policy1"},{"name":"policyId","value":"1"},{"serviceConfigurations":[[{"name"
  * :"aaiMatchingFields","value":["complex.city","vserver.vserver-name"]},{"name"
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/StringMatch.java b/src/main/java/org/onap/clamp/clds/model/prop/StringMatch.java
deleted file mode 100644
index b74e7d1..0000000
--- a/src/main/java/org/onap/clamp/clds/model/prop/StringMatch.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * 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============================================
- * ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- */
-
-package org.onap.clamp.clds.model.prop;
-
-import com.fasterxml.jackson.databind.JsonNode;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Parse StringMatch json properties.
- * <p>
- * Example json:
- * {"StringMatch_0aji7go":{"Group1":[{"name":"rgname","value":"1493749598520"},{
- * "name":"rgfriendlyname","value":"Group1"},{"name":"policyName","value":
- * "Policy1"},{"name":"policyId","value":"1"},{"serviceConfigurations":[[{"name"
- * :"aaiMatchingFields","value":["complex.city","vserver.vserver-name"]},{"name"
- * :"aaiSendFields","value":["complex.city","vserver.vserver-name"]},{"name":
- * "eventSeverity","value":["OK"]},{"name":"eventSourceType","value":[""]},{
- * "name":"timeWindow","value":["100"]},{"name":"ageLimit","value":["100"]},{
- * "name":"createClosedLoopEventId","value":["Initial"]},{"name":
- * "outputEventName","value":["ONSET"]}]]}],"Group2":[{"name":"rgname","value":
- * "1493749665149"},{"name":"rgfriendlyname","value":"Group2"},{"name":
- * "policyName","value":"Policy2"},{"name":"policyId","value":"2"},{
- * "serviceConfigurations":[[{"name":"aaiMatchingFields","value":[
- * "cloud-region.identity-url","vserver.vserver-name"]},{"name":"aaiSendFields",
- * "value":["cloud-region.identity-url","vserver.vserver-name"]},{"name":
- * "eventSeverity","value":["NORMAL"]},{"name":"eventSourceType","value":[""]},{
- * "name":"timeWindow","value":["1000"]},{"name":"ageLimit","value":["1000"]},{
- * "name":"createClosedLoopEventId","value":["Initial"]},{"name":
- * "outputEventName","value":["ONSET"]}],[{"name":"aaiMatchingFields","value":[
- * "generic-vnf.vnf-name","vserver.vserver-name"]},{"name":"aaiSendFields",
- * "value":["generic-vnf.vnf-name","vserver.vserver-name"]},{"name":
- * "eventSeverity","value":["CRITICAL"]},{"name":"eventSourceType","value":[""]}
- * ,{"name":"timeWindow","value":["3000"]},{"name":"ageLimit","value":["3000"]},
- * {"name":"createClosedLoopEventId","value":["Initial"]},{"name":
- * "outputEventName","value":["ABATED"]}]]}]}}
- *
- */
-public class StringMatch extends AbstractModelElement {
-
-    private List<ResourceGroup> resourceGroups;
-
-    private static final String TYPE_STRING_MATCH = "stringMatch";
-
-    /**
-     * Parse StringMatch given json node.
-     *
-     * @param modelBpmn
-     * @param modelJson
-     */
-    public StringMatch(ModelProperties modelProp, ModelBpmn modelBpmn, JsonNode modelJson) {
-        super(TYPE_STRING_MATCH, modelProp, modelBpmn, modelJson);
-
-        // process Server_Configurations
-        if (modelElementJsonNode != null) {
-            Iterator<JsonNode> itr = modelElementJsonNode.elements();
-            resourceGroups = new ArrayList<>();
-            while (itr.hasNext()) {
-                resourceGroups.add(new ResourceGroup(itr.next()));
-            }
-        }
-    }
-
-    /**
-     * @return the resourceGroups
-     */
-    public List<ResourceGroup> getResourceGroups() {
-        return resourceGroups;
-    }
-
-    public static final String getType() {
-        return TYPE_STRING_MATCH;
-    }
-
-}
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/Tca.java b/src/main/java/org/onap/clamp/clds/model/prop/Tca.java
index f7bbac0..4fd6b59 100644
--- a/src/main/java/org/onap/clamp/clds/model/prop/Tca.java
+++ b/src/main/java/org/onap/clamp/clds/model/prop/Tca.java
@@ -27,25 +27,8 @@
 import com.att.eelf.configuration.EELFManager;
 import com.fasterxml.jackson.databind.JsonNode;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 /**
- * Parse Tca json properties.
- *
- * Example json:
- * {"TCA_0lm6cix":{"Narra":[{"name":"tname","value":"Narra"},{"name":"tcaEnab",
- * "value":"on"},{"name":"tcaPol","value":"Polcicy1"},{"name":"tcaPolId","value"
- * :"1"},{"name":"tcaInt","value":"1"},{"name":"tcaSev","value":"Critical"},{
- * "name":"tcaVio","value":"1"},{"serviceConfigurations":[["FIELDPATH_test_1",
- * ">","4"],["FIELDPATH_test_1","=","5"]]}],"Srini":[{"name":"tname","value":
- * "Srini"},{"name":"tcaEnab","value":"on"},{"name":"tcaPol","value":"Policy1"},
- * {"name":"tcaPolId","value":"1"},{"name":"tcaInt","value":"1"},{"name":
- * "tcaSev","value":"Major"},{"name":"tcaVio","value":"1"},{
- * "serviceConfigurations":[["FIELDPATH_test_2","=","3"],["FIELDPATH_test_1",">"
- * ,"2"]]}]}}
- *
+ * Parse ONAP Tca json properties.
  *
  */
 public class Tca extends AbstractModelElement {
@@ -53,7 +36,7 @@
     protected static final EELFLogger logger      = EELFManager.getInstance().getLogger(Tca.class);
     protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
 
-    private List<TcaItem>             tcaItems;
+    private TcaItem                   tcaItem;
 
     private static final String       TYPE_TCA    = "tca";
 
@@ -69,16 +52,12 @@
 
         // process Server_Configurations
         if (modelElementJsonNode != null) {
-            Iterator<JsonNode> itr = modelElementJsonNode.elements();
-            tcaItems = new ArrayList<>();
-            while (itr.hasNext()) {
-                tcaItems.add(new TcaItem(itr.next()));
-            }
+            tcaItem = new TcaItem(modelElementJsonNode.elements().next());
         }
     }
 
-    public List<TcaItem> getTcaItems() {
-        return tcaItems;
+    public TcaItem getTcaItem() {
+        return tcaItem;
     }
 
     public static final String getType() {
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java b/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java
index f104b09..79da2db 100644
--- a/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java
+++ b/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java
@@ -23,45 +23,28 @@
 
 package org.onap.clamp.clds.model.prop;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 import com.fasterxml.jackson.databind.JsonNode;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 /**
- * Parse Tca Item json properties.
- *
- * Example json:
- * {"TCA_0lm6cix":{"Narra":[{"name":"tname","value":"Narra"},{"name":"tcaEnab",
- * "value":"on"},{"name":"tcaPol","value":"Polcicy1"},{"name":"tcaPolId","value"
- * :"1"},{"name":"tcaInt","value":"1"},{"name":"tcaSev","value":"Critical"},{
- * "name":"tcaVio","value":"1"},{"serviceConfigurations":[["FIELDPATH_test_1",
- * ">","4"],["FIELDPATH_test_1","=","5"]]}],"Srini":[{"name":"tname","value":
- * "Srini"},{"name":"tcaEnab","value":"on"},{"name":"tcaPol","value":"Policy1"},
- * {"name":"tcaPolId","value":"1"},{"name":"tcaInt","value":"1"},{"name":
- * "tcaSev","value":"Major"},{"name":"tcaVio","value":"1"},{
- * "serviceConfigurations":[["FIELDPATH_test_2","=","3"],["FIELDPATH_test_1",">"
- * ,"2"]]}]}}
- *
+ * Parse ONAP Tca Item json properties.
  *
  */
 public class TcaItem {
 
-    protected static final EELFLogger       logger      = EELFManager.getInstance().getLogger(TcaItem.class);
+    protected static final EELFLogger logger      = EELFManager.getInstance().getLogger(TcaItem.class);
     protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
 
-    private String                  tcaName;
-    private String                  tcaUuId;
-    private String                  nfNamingCode;
-    private String                  tcaEnable;
-    private String                  policyId;
-    private Integer                 interval;
-    private String                  severity;
-    private Integer                 violations;
-    private List<TcaThreshhold>     tcaThreshholds;
+    private String                    tcaName;
+    private String                    tcaUuId;
+    private String                    policyId;
+    private String                    eventName;
+    private List<TcaThreshold>        tcaThresholds;
 
     /**
      * Parse Tca Item given json node
@@ -72,23 +55,14 @@
 
         tcaName = AbstractModelElement.getValueByName(node, "tname");
         tcaUuId = AbstractModelElement.getValueByName(node, "tuuid");
-        nfNamingCode = AbstractModelElement.getValueByName(node, "tnfc");
-        tcaEnable = AbstractModelElement.getValueByName(node, "tcaEnab");
         policyId = AbstractModelElement.getValueByName(node, "tcaPolId");
-        if (AbstractModelElement.getValueByName(node, "tcaInt") != null) {
-            interval = Integer.valueOf(AbstractModelElement.getValueByName(node, "tcaInt"));
-        }
-        severity = AbstractModelElement.getValueByName(node, "tcaSev");
-        if (AbstractModelElement.getValueByName(node, "tcaVio") != null) {
-            violations = Integer.valueOf(AbstractModelElement.getValueByName(node, "tcaVio"));
-        }
-
+        eventName = AbstractModelElement.getValueByName(node, "eventName");
         // process service Configurations
         JsonNode serviceConfigurationsNode = node.get(node.size() - 1).get("serviceConfigurations");
         Iterator<JsonNode> itr = serviceConfigurationsNode.elements();
-        tcaThreshholds = new ArrayList<TcaThreshhold>();
+        tcaThresholds = new ArrayList<>();
         while (itr.hasNext()) {
-            tcaThreshholds.add(new TcaThreshhold(itr.next()));
+            tcaThresholds.add(new TcaThreshold(itr.next()));
         }
     }
 
@@ -108,22 +82,6 @@
         this.tcaUuId = tcaUuId;
     }
 
-    public String getNfNamingCode() {
-        return nfNamingCode;
-    }
-
-    public void setNfNamingCode(String nfNamingCode) {
-        this.nfNamingCode = nfNamingCode;
-    }
-
-    public String getTcaEnable() {
-        return tcaEnable;
-    }
-
-    public void setTcaEnable(String tcaEnable) {
-        this.tcaEnable = tcaEnable;
-    }
-
     public String getPolicyId() {
         return policyId;
     }
@@ -132,32 +90,16 @@
         this.policyId = policyId;
     }
 
-    public Integer getInterval() {
-        return interval;
+    public List<TcaThreshold> getTcaThresholds() {
+        return tcaThresholds;
     }
 
-    public void setInterval(Integer interval) {
-        this.interval = interval;
+    public String getEventName() {
+        return eventName;
     }
 
-    public String getSeverity() {
-        return severity;
-    }
-
-    public void setSeverity(String severity) {
-        this.severity = severity;
-    }
-
-    public Integer getViolations() {
-        return violations;
-    }
-
-    public void setViolations(Integer violations) {
-        this.violations = violations;
-    }
-
-    public List<TcaThreshhold> getTcaThreshholds() {
-        return tcaThreshholds;
+    public void setEventName(String eventName) {
+        this.eventName = eventName;
     }
 
 }
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshhold.java b/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshhold.java
deleted file mode 100644
index 39369f1..0000000
--- a/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshhold.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * 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============================================
- * ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- */
-
-package org.onap.clamp.clds.model.prop;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import com.fasterxml.jackson.databind.JsonNode;
-
-/**
- * Parse Tca Threshhold json properties.
- *
- * Example json:
- * {"TCA_0lm6cix":{"Narra":[{"name":"tname","value":"Narra"},{"name":"tcaEnab",
- * "value":"on"},{"name":"tcaPol","value":"Polcicy1"},{"name":"tcaPolId","value"
- * :"1"},{"name":"tcaInt","value":"1"},{"name":"tcaSev","value":"Critical"},{
- * "name":"tcaVio","value":"1"},{"serviceConfigurations":[["FIELDPATH_test_1",
- * ">","4"],["FIELDPATH_test_1","=","5"]]}],"Srini":[{"name":"tname","value":
- * "Srini"},{"name":"tcaEnab","value":"on"},{"name":"tcaPol","value":"Policy1"},
- * {"name":"tcaPolId","value":"1"},{"name":"tcaInt","value":"1"},{"name":
- * "tcaSev","value":"Major"},{"name":"tcaVio","value":"1"},{
- * "serviceConfigurations":[["FIELDPATH_test_2","=","3"],["FIELDPATH_test_1",">"
- * ,"2"]]}]}}
- *
- *
- */
-public class TcaThreshhold {
-
-    protected static final EELFLogger       logger      = EELFManager.getInstance().getLogger(TcaThreshhold.class);
-    protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
-
-    private String                  metric;
-    private String                  fieldPath;
-    private String                  operator;
-    private Integer                 threshhold;
-
-    /**
-     * Parse Tca Threshhold given json node
-     *
-     * @param node
-     */
-    public TcaThreshhold(JsonNode node) {
-
-        if (node.get(0) != null) {
-            metric = node.get(0).asText();
-        }
-        if (node.get(1) != null) {
-            operator = node.get(1).asText();
-        }
-        if (node.get(2) != null) {
-            threshhold = Integer.valueOf(node.get(2).asText());
-        }
-        if (node.get(3) != null) {
-            fieldPath = node.get(3).asText();
-        }
-    }
-
-    public String getMetric() {
-        return metric;
-    }
-
-    public void setMetric(String metric) {
-        this.metric = metric;
-    }
-
-    public String getFieldPath() {
-        return fieldPath;
-    }
-
-    public void setFieldPath(String fieldPath) {
-        this.fieldPath = fieldPath;
-    }
-
-    public String getOperator() {
-        return operator;
-    }
-
-    public void setOperator(String operator) {
-        this.operator = operator;
-    }
-
-    public Integer getThreshhold() {
-        return threshhold;
-    }
-
-    public void setThreshhold(Integer threshhold) {
-        this.threshhold = threshhold;
-    }
-
-}
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java b/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java
new file mode 100644
index 0000000..43bdb5c
--- /dev/null
+++ b/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java
@@ -0,0 +1,108 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.model.prop;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.fasterxml.jackson.databind.JsonNode;
+
+/**
+ * Parse ONAP Tca Threshold json properties.
+ *
+ */
+public class TcaThreshold {
+
+    protected static final EELFLogger logger      = EELFManager.getInstance().getLogger(TcaThreshold.class);
+    protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
+
+    private String                    fieldPath;
+    private String                    operator;
+    private Integer                   threshold;
+    private String                    closedLoopEventStatus;
+    private String                    controlLoopSchema;
+
+    /**
+     * Parse Tca Threshhold given json node
+     *
+     * @param node
+     */
+    public TcaThreshold(JsonNode node) {
+
+        if (node.get(0) != null) {
+            fieldPath = node.get(0).asText();
+        }
+        if (node.get(1) != null) {
+            operator = node.get(1).asText();
+        }
+        if (node.get(2) != null) {
+            threshold = Integer.valueOf(node.get(2).asText());
+        }
+        if (node.get(3) != null) {
+            controlLoopSchema = node.get(3).asText();
+        }
+        if (node.get(4) != null) {
+            closedLoopEventStatus = node.get(4).asText();
+        }
+    }
+
+    public String getFieldPath() {
+        return fieldPath;
+    }
+
+    public void setFieldPath(String fieldPath) {
+        this.fieldPath = fieldPath;
+    }
+
+    public String getOperator() {
+        return operator;
+    }
+
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    public Integer getThreshold() {
+        return threshold;
+    }
+
+    public void setThreshold(Integer threshold) {
+        this.threshold = threshold;
+    }
+
+    public String getClosedLoopEventStatus() {
+        return closedLoopEventStatus;
+    }
+
+    public void setClosedLoopEventStatus(String closedLoopEventStatus) {
+        this.closedLoopEventStatus = closedLoopEventStatus;
+    }
+
+    public String getControlLoopSchema() {
+        return controlLoopSchema;
+    }
+
+    public void setControlLoopSchema(String controlLoopSchema) {
+        this.controlLoopSchema = controlLoopSchema;
+    }
+}
diff --git a/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java b/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java
index e6e7325..e29b188 100644
--- a/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java
+++ b/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java
@@ -65,8 +65,6 @@
 @Path("/cldsTempate")
 public class CldsTemplateService extends SecureServiceBase {
 
-    private static final String     COLLECTOR_KEY    = "Collector";
-    private static final String     STRING_MATCH_KEY = "StringMatch";
     private static final String     POLICY_KEY       = "Policy";
 
     @Value("${CLDS_PERMISSION_TYPE_TEMPLATE:permission-type-template}")
@@ -314,16 +312,12 @@
                     if (keyPropName != null && keyPropName.equalsIgnoreCase(currElementId)) {
                         ArrayNode arrayNode = (ArrayNode) entry.getValue();
                         // process each id/from object, like:
-                        // {"id":"Collector_11r50j1", "from":"StartEvent_1"}
+                        // {"id":"Policy_11r50j1", "from":"StartEvent_1"}
                         for (JsonNode anArrayNode : arrayNode) {
                             ObjectNode node = (ObjectNode) anArrayNode;
                             String valueNode = node.get("value").asText();
                             logger.info("value of node:" + valueNode);
-                            if (keyPropName.startsWith(COLLECTOR_KEY)) {
-                                valueNode = COLLECTOR_KEY + "_" + valueNode;
-                            } else if (keyPropName.startsWith(STRING_MATCH_KEY)) {
-                                valueNode = STRING_MATCH_KEY + "_" + valueNode;
-                            } else if (keyPropName.startsWith(POLICY_KEY)) {
+                            if (keyPropName.startsWith(POLICY_KEY)) {
                                 valueNode = POLICY_KEY + "_" + valueNode;
                             }
                             bpmnIoIdsMap.put(keyPropName, valueNode);
diff --git a/src/main/resources/META-INF/resources/designer/css/app.css b/src/main/resources/META-INF/resources/designer/css/app.css
index 333c966..e387dc0 100644
--- a/src/main/resources/META-INF/resources/designer/css/app.css
+++ b/src/main/resources/META-INF/resources/designer/css/app.css
@@ -170,20 +170,18 @@
 } /* '' */
 
 .define-path:before{ 
-	content: url('../images/DefinePath.png'); 
+	content: url('../images/DefinePath.png');
 	position:relative; /*or absolute*/
 	z-index:100000; /*a number that's more than the modal box*/
 } /* '' */
-.define-decision:before{ 
+.define-decision:before{
 	content: url('../images/DefineDecision.png');
 	position:relative; /*or absolute*/
 	z-index:100000; /*a number that's more than the modal box*/
 } /* '' */
 .icon-initial-node:before{ content: url('../images/InitialProcess.png'); } /* '' */
-.icon-collector-node:before{ content: url('../images/clds-collector-icon.png'); } /* '' */
 .icon-holmes-node:before{ content: url('../images/clds-holmes-icon.png'); } /* '' */
 .icon-ves-collector-node:before{ content: url('../images/clds-ves-collector-icon.png'); } /* '' */
-.icon-stringmatch-node:before{ content: url('../images/clds-string-match-icon.png'); } /* '' */
 .icon-tca-node:before{ content: url('../images/clds-tca-icon.png'); } /* '' */
 .icon-policy-node:before{ content: url('../images/clds-policy-icon.png'); } /* '' */
 .icon-goc-node:before{ content: url('../images/GOC.png'); } /* '' */
diff --git a/src/main/resources/META-INF/resources/designer/images/clds-string-match-icon.png b/src/main/resources/META-INF/resources/designer/images/clds-string-match-icon.png
deleted file mode 100644
index 6b00414..0000000
--- a/src/main/resources/META-INF/resources/designer/images/clds-string-match-icon.png
+++ /dev/null
Binary files differ
diff --git a/src/main/resources/META-INF/resources/designer/index.js b/src/main/resources/META-INF/resources/designer/index.js
index 89a688a..33b84e6 100644
--- a/src/main/resources/META-INF/resources/designer/index.js
+++ b/src/main/resources/META-INF/resources/designer/index.js
@@ -1450,58 +1450,6 @@
 
 
         },
-        'bpmn:Collector': function(p, element) {
-          var lane = renderer('bpmn:Lane')(p, element, {
-            fill: 'White'
-          });
-
-          var expandedPool = DiUtil.isExpanded(element);
-
-          if (expandedPool) {
-            drawLine(p, [{
-              x: element.width,
-              y: 80
-            }, {
-              x: element.width,
-              y: 20
-            }]);
-
-            drawLine(p, [{
-              x: 20,
-              y: 0
-            }, {
-              x: 20,
-              y: element.height
-            }]);
-            var text2 = getSemantic(element).name;
-            if (text2 == undefined) {
-              text2 = 'Collector';
-            }
-
-            renderLabel(p, text2, {
-              box: element,
-              align: 'center-middle'
-            });
-
-          } else {
-            // Collapsed pool draw text inline
-            var text2 = getSemantic(element).name;
-            renderLabel(p, text2, {
-              box: element,
-              align: 'center-middle'
-            });
-          }
-
-          var participantMultiplicity = !!(getSemantic(element).participantMultiplicity);
-
-          if (participantMultiplicity) {
-            renderer('ParticipantMultiplicityMarker')(p, element);
-          }
-
-          return lane;
-
-
-        },
         'bpmn:VesCollector': function(p, element) {
           var lane = renderer('bpmn:Lane')(p, element, {
             fill: 'White'
@@ -1626,52 +1574,6 @@
           return lane;
         },
 
-
-        'bpmn:StringMatch': function(p, element) {
-          var lane = renderer('bpmn:Lane')(p, element, {
-            fill: 'White'
-          });
-
-          var expandedPool = DiUtil.isExpanded(element);
-
-          if (expandedPool) {
-
-            drawLine(p, [{
-              x: 0,
-              y: 20
-            }, {
-              x: element.width,
-              y: 20
-            }]);
-            var text2 = getSemantic(element).name;
-            if (text2 == undefined) {
-              text2 = 'StringMatch';
-            }
-            renderLabel(p, text2, {
-              box: element,
-              align: 'center-middle'
-            });
-
-          } else {
-            // Collapsed pool draw text inline
-            var text2 = getSemantic(element).name;
-            renderLabel(p, text2, {
-              box: element,
-              align: 'center-middle'
-            });
-          }
-
-          var participantMultiplicity = !!(getSemantic(element).participantMultiplicity);
-
-          if (participantMultiplicity) {
-            renderer('ParticipantMultiplicityMarker')(p, element);
-          }
-
-          return lane;
-
-
-        },
-
         'bpmn:TCA': function(p, element) {
           var lane = renderer('bpmn:Lane')(p, element, {
             fill: 'White'
@@ -3838,39 +3740,6 @@
       if (bpmnElement.$instanceOf('bpmn:InitiateProcess')) {}
 
       if (bpmnElement.$instanceOf('bpmn:StartEvent')) {}
-      if (bpmnElement.$instanceOf('bpmn:Collector')) {
-        assign(actions, {
-          'Properties': {
-            group: 'clds',
-            label: 'Edit Properties',
-            className: 'clds-edit-properties',
-            title: 'Properties',
-            action: {
-              click: function(event) {
-                lastElementSelected = bpmnElement.id
-                CollectorsWindow(bpmnElement);
-              }
-            }
-          }
-        });
-
-      }
-      if (bpmnElement.$instanceOf('bpmn:StringMatch')) {
-        assign(actions, {
-          'Properties': {
-            group: 'clds',
-            label: 'Edit Properties',
-            className: 'clds-edit-properties',
-            title: 'Properties',
-            action: {
-              click: function(event) {
-                lastElementSelected = bpmnElement.id
-                StringMatchWindow(bpmnElement);
-              }
-            }
-          }
-        });
-      }
       if (bpmnElement.$instanceOf('bpmn:Holmes')) {
         assign(actions, {
           'Properties': {
@@ -5007,19 +4876,6 @@
           height: 80
         };
       }
-      if (semantic.$instanceOf('bpmn:Collector')) {
-        return {
-          width: 120,
-          height: 80
-        };
-      }
-
-      if (semantic.$instanceOf('bpmn:StringMatch')) {
-        return {
-          width: 120,
-          height: 80
-        };
-      }
       if (semantic.$instanceOf('bpmn:VesCollector')) {
         return {
           width: 120,
@@ -6541,12 +6397,6 @@
         'create.start-event': createAction(
           'bpmn:StartEvent', 'event', 'icon-start-event-none', "Start"
         ),
-        'create.collector': createAction(
-          'bpmn:Collector', 'event', 'icon-collector-node', 'Collector'
-        ),
-        'create.String-Match': createAction(
-          'bpmn:StringMatch', 'event', 'icon-stringmatch-node', 'String Match'
-        ),
         'create.ves-collector': createAction(
           'bpmn:VesCollector', 'event', 'icon-ves-collector-node', 'Ves Collector'
         ),
@@ -14382,18 +14232,6 @@
             "InteractionNode"
           ]
         }, {
-          "name": "Collector",
-          "superClass": [
-            "Activity",
-            "InteractionNode"
-          ]
-        }, {
-          "name": "StringMatch",
-          "superClass": [
-            "Activity",
-            "InteractionNode"
-          ]
-        }, {
           "name": "VesCollector",
           "superClass": [
             "Activity",
diff --git a/src/main/resources/META-INF/resources/designer/partials/portfolios/Collector_properties.html b/src/main/resources/META-INF/resources/designer/partials/portfolios/Collector_properties.html
deleted file mode 100644
index 7537f72..0000000
--- a/src/main/resources/META-INF/resources/designer/partials/portfolios/Collector_properties.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!--
-  ============LICENSE_START=======================================================
-  ONAP CLAMP
-  ================================================================================
-  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============================================
-  ===================================================================
-  ECOMP is a trademark and service mark of AT&T Intellectual Property.
-  -->
-
-<style>
-    .fileUpload {
-        position: relative;
-        overflow: hidden;
-        margin: 10px;
-    }
-    .fileUpload input.upload {
-        position: absolute;
-        top: 0;
-        right: 0;
-        margin: 0;
-        padding: 0;
-        font-size: 20px;
-        cursor: pointer;
-        opacity: 0;
-        filter: alpha(opacity=0);
-        float:left;
-    }
-    .fileDisplay {
-
-        display: inline-block;
-        overflow: hidden;
-        float: right;
-        margin-left: 0px;
-        z-index: initial;
-        text-align: center;
-        margin-top: 17px;
-    }
-
-
-</style>
-
-
-<div attribute-test="collectorproperties" id="configure-widgets"  >
-    <div attribute-test="cldsopentemplateh" class="modal-header">
-        <button type="button" class="close" ng-click="close(false)" aria-hidden="true" style="margin-top: -3px">&times;</button>
-        <h4>Collector</h4>
-    </div>
-    <div attribute-test="cldsopentemplateb" class="modal-body" style="height: 280px">
-        <div style="height: 10px">
-        </div>
-        <form id="saveProps" class="form-horizontal">
-
-            <div>
-                <div class="form-group">
-                    <label for="schemaLocation" class="col-sm-4 control-label">Topic Publishes</label>
-
-                    <div class="col-sm-8">
-                        <select class="form-control" focus="true" name="topicPublishes"  id="topicPublishes">
-                            <!--  <option value="volvo">volvo</option>
-                            <option value="saab">saab</option>
-                            <option value="opel">opel</option> -->
-                        </select>
-                    </div>
-                </div>
-                
-                
-            </div>
-
-        </form>
-
-    </div>
-    <div class="modal-footer">
-        <!--<button ng-click="reset()" class="btn btn-primary" style="float:left">Reset</button>-->
-        <button  id="savePropsBtn" class="btn btn-primary">Close</button>
-        <button ng-click="close(true)" id="close_button" class="btn btn-primary">Cancel</button>
-
-    </div>
-    <script>
-    loadPropertyWindow("collector");
-    var el=elementMap[lastElementSelected];
-    if(el!==undefined){
-        for(var i=0;i<el.length;i++){
-            
-            $("#"+el[i].name).val(el[i].value);
-        }
-
-
-    }
-    $("#saveProps").on('submit', function (event) {
-        console.log("clicksaveprop");
-        //alert("lol");
-        //console.log($(this).serializeArray()[0].name);
-        saveProperties($(this).serializeArray())
-        event.preventDefault();
-
-        $("#close_button").click();
-
-    })
-    $("#savePropsBtn").click(function (event) {
-        console.log("savepropbtn");
-        //alert($("#CProp_Target").val())
-        //alert(las)
-        $("#saveProps").submit();
-    })
-</script>
-</div>
-
-
diff --git a/src/main/resources/META-INF/resources/designer/partials/portfolios/stringMatch_properties.html b/src/main/resources/META-INF/resources/designer/partials/portfolios/stringMatch_properties.html
deleted file mode 100644
index 49ac07d..0000000
--- a/src/main/resources/META-INF/resources/designer/partials/portfolios/stringMatch_properties.html
+++ /dev/null
@@ -1,1019 +0,0 @@
-<!--
-  ============LICENSE_START=======================================================
-  ONAP CLAMP
-  ================================================================================
-  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============================================
-  ===================================================================
-  ECOMP is a trademark and service mark of AT&T Intellectual Property.
-  -->
-<style>
-#deleteStringMatch{
-	height:34px;
-	background-color:#dddd;
-}
-
-.disabled{
-	background-color: #dddd;
-}
-.fileUpload {
-	position: relative;
-	overflow: hidden;
-	margin: 10px;
-}
-
-.fileUpload input.upload {
-	position: absolute;
-	top: 0;
-	right: 0;
-	margin: 0;
-	padding: 0;
-	font-size: 20px;
-	cursor: pointer;
-	opacity: 0;
-	filter: alpha(opacity = 0);
-	float: left;
-}
-
-.fileDisplay {
-	display: inline-block;
-	overflow: hidden;
-	float: right;
-	margin-left: 0px;
-	z-index: initial;
-	text-align: center;
-	margin-top: 17px;
-}
-
-.form-group {
-/* 	height:24px; */
-/* 	box-sizing:border-box; */
-	margin-bottom:20px;
-}
-
-.modelSearchBox{
-	position:absolute; 
-	padding: 25px 12px;
-}
-
-label{
-	text-align:right;
-	vertical-align:middle;
-}
-
-.leftStringMatchPanel{
-	padding: 0 10px 0 0;
-}
-
-#createNewStringMatch{
-	height:34px;
-	width:120px; /*84*/
-	background-color:#f2bfab;
-}
-
-.idError{
-	color:red; 
-	padding:50px 0px; 
-	text-align:center; 
-	display:none;
-}
-
-#rgname{
-	height:28px; 
-	margin-left:-5px;
-}
-
-.stringMatchPanel{
-	background-color: #f5f5f5;
-	padding: 10px 5px;
-}
-
-#stringMatchSearch{
-	height: 33px;
-	font-size: 12px;
-	padding: 2px 2px 2px 30px;
-	margin-bottom: 5px;
-	width:100%;
-}
-#stringMatchTable{
-	cursor: pointer;
-	width:100%;
-}
-
-#stringMatchTable tr{
-	border-bottom: 1px solid #ddd;
-	border-collapse: collapse;
-	text-align: left;
-	font-size: 12px;
-	font-weight: normal;
-}
-
-#stringMatchTable td{
-	padding: 8px 10px;
-}
-
-#stringMatchTable tr.highlight{
-	background-color: #f5f5f5;
-	font-weight: bold;
-	font-size: 13px;
-}
-
-#stringMatchTableHolder{
-	height:200px; 
-	width: 100%; 
-	overflow:auto;
-}
-
-#timeout{
-	height:28px; 
-	margin-left:10px;
-}
-
-</style>
-
-<script type="text/javascript">
-	function disablefile() {
-
-		document.getElementById("fileUpload").disabled = true;
-
-	}
-
-	function disableSVN() {
-		var selectLength = document.querySelectorAll(".disabled-block-container .tab-close-popup");
-		if(selectLength && selectLength.length>0){
-			for(var i = 0; i< selectLength.length ; i++){
-				selectLength[i].disabled = true;
-			}	
-		}
-
-		document.getElementById("schemaLocation").disabled = true;
-		document.getElementById("userID").disabled = true;
-		document.getElementById("password").disabled = true;
-
-	}
-</script>
-
-
-<div attribute-test="stringMatchwindowproperties" id="configure-widgets" class="disabled-block-container">
-	<div attribute-test="stringMatchwindowpropertiesh" class="modal-header">
-		<button type="button" class="close" ng-click="close(false)"
-			aria-hidden="true" style="margin-top: -3px">&times;</button>
-		<h4>String Matching Micro Service</h4>
-	</div>
-
-
-	<div class="modal-body">
-		<div attribute-test="stringMatchwindowpropertiesb" class="modal-body row">
-
-			<div class="leftStringMatchPanel">
-				<div class="panel panel-default">
-					<i class="modelSearchBox"></i> <input type="text"
-						id="stringMatchSearch" onkeyup="searchStringMatchList()"
-						placeholder="Search ...">
-					<div id="stringMatchTableHolder">
-						<table id="stringMatchTable"></table>
-					</div>
-				</div>
-				<div style="float: left">
-					<button type="button" id="createNewStringMatch" class="btn btn-sm">New Group</button>
-					</span>
-				</div>
-				<div style="float: right">
-					<button type="button" id="deleteStringMatch" class="btn btn-sm glyphicon glyphicon-trash" disabled></button>
-					</span>
-				</div>
-				<div id="repeatIdError" class="idError">Error: This Group name is already taken.</div>
-				<div id="newIdError" class="idError">Error: Please rename your new Group.</div>
-			</div>
-
-			<div class="panel panel-default col-sm-9 stringMatchPanel"
-				style="display: none;">
-				<form id="topicPublish" class="form-horizontal">
-					<div>
-<!-- 						As per the last minute new requirements for 1707 the ID needs to be hidden and we need to have a friendly name instead -->
-							<div style="display: none;">
-								<div class="form-group clearfix">
-									<label class="col-sm-4 control-label">Resource Group Id</label>
-									<div class="col-sm-8">
-										<input class="form-control" id="rgname" name="rgname" readOnly> </input>
-									</div>
-								</div>
-							</div>
-							
-							<div>
-								<div class="form-group clearfix">
-									<label class="col-sm-4 control-label">Resource Group</label>
-									<div class="col-sm-8">
-										<input class="form-control" maxlength="48" placeholder="Enter Unique Name" id="rgfriendlyname" name="rgfriendlyname"> </input>
-									</div>
-								</div>
-							</div>							
-							
-							<!--Policy's drop down box -->
-							<div class="form-group clearfix">
-								<label class="col-sm-4 control-label">Ops Policy:</label>
-								<div class="col-sm-8">
-									<select class="form-control" id="policyName" name="policyName"
-										autofocus="autofocus" required ng-trim="true" enableFilter="true">
-										<option ng-repeat="x in policyNames" value="{{x}}">{{x}}</option>
-									</select>
-								</div>
-							</div>
-							
-					</div>
-				</form>
-				
-				<div class="panel-heading" style="background-color: white;">
-					<ul id="nav_Tabs" class="nav nav-tabs">
-						<li class><a id="add_one_more" href="#desc_tab"><span
-								class="glyphicon glyphicon-plus" aria-hidden="true"></span></a></li>
-					</ul>
-				</div>
-				<div class="panel-body">
-					<div class="tab-content">
-						<div id="properties_tab" class="tab-pane fade in active"></div>
-					</div>
-				</div>
-			</div>
-
-			<span id="formSpan" style="display: none">
-				<form class="saveProps" class="form-horizontal">
-
-					<div>
-						<div class="form-group clearfix">
-							<label for="aaiMatchingFields" class="col-sm-4 control-label">AAI Fields Matching </label>
-							<div class="col-sm-8">
-								<select class="form-control" name="aaiMatchingFields" id="aaiMatchingFields" multiple size=2></select>
-							</div>
-													
-						</div>
-						<div class="form-group clearfix">
-							<label for="aaiSendFields" class="col-sm-4 control-label">AAI Fields Send (Select Multiple)</label>
-
-							<div class="col-sm-8 ">
-								<select class="form-control" id="aaiSendFields"
-									name="aaiSendFields" multiple size=2>
-								</select>
-
-							</div>
-						</div>
-<!-- 						<div class="form-group clearfix"> -->
-<!-- 							<label for="groupNumber" class="col-sm-4 control-label"> -->
-<!-- 								Resource-Group</label> -->
-
-<!-- 							<div class="col-sm-8"> -->
-<!-- 								<input type="number" class="form-control" id="groupNumber" -->
-<!-- 									name="groupNumber" min="0"> </input> -->
-
-<!-- 							</div> -->
-<!-- 						</div> -->
-						<div class="form-group clearfix">
-							<label for="vfc" class="col-sm-4 control-label">Resource-VFC</label>
-							<div class="col-sm-8">
-								<select class="form-control" id="vfc" name="vfc" enableFilter="true">
-
-								</select>
-
-							</div>
-						</div>
-						<div class="form-group clearfix">
-							<label for="alarmCondition" class="col-sm-4 control-label">Alarm Condition</label>
-							<div class="col-sm-8">
-								<select class="form-control" id="alarmCondition" name="alarmCondition" enableFilter="true">
-								
-								</select>
-							</div>
-						</div>
-						<div class="form-group clearfix">
-							<label for="eventSeverity" class="col-sm-4 control-label">Event Severity</label>
-							<div class="col-sm-8">
-								<select class="form-control" id="eventSeverity"
-									name="eventSeverity" enableFilter="false"></select>
-							</div>
-						</div>
-						<div class="form-group clearfix">
-							<label for="eventSourceType" class="col-sm-4 control-label">
-								Event Source Type</label>
-							<div class="col-sm-8">
-								<input type="text" class="form-control" id="eventSourceType"
-									name="eventSourceType" readOnly></input>
-							</div>
-						</div>
-
-						<div class="form-group clearfix">
-							<label for="timeWindow" class="col-sm-4 control-label">
-								Time Window</label>
-
-							<div class="col-sm-8">
-								<input type="text" maxlength="5" class="form-control"
-									onkeypress="return isNumberKey(event)"
-									id="timeWindow" name="timeWindow" />
-							</div>
-						</div>
-						<div class="form-group clearfix">
-							<label for="ageLimit" class="col-sm-4 control-label"> Age
-								Limit</label>
-
-							<div class="col-sm-8">
-								<input type="text" maxlength="5" class="form-control" id="ageLimit"
-									onkeypress="return isNumberKey(event)"
-									name="ageLimit" />
-							</div>
-						</div>
-						<div class="form-group clearfix">
-							<label for="createClosedLoopEventId"
-								class="col-sm-4 control-label"> Create CL Event ID</label>
-							<div class="col-sm-8">
-								<select class="form-control" id="createClosedLoopEventId"
-									name="createClosedLoopEventId" enableFilter="false">
-								</select>
-
-							</div>
-						</div>
-
-						<div class="form-group clearfix">
-							<label for="outputEventName" class="col-sm-4 control-label">
-								Output Event Name</label>
-
-							<div class="col-sm-8">
-								<select class="form-control" id="outputEventName"
-									name="outputEventName" enableFilter="true"></select>
-
-							</div>
-						</div>
-					</div>
-
-
-
-				</form>
-			</span>
-		</div>
-	</div>
-
-	<div attribute-test="stringMatchwindowpropertiesf" class="modal-footer">
-		<!--<button ng-click="reset()" class="btn btn-primary" style="float:left">Reset</button>-->
-		<button id="savePropsBtn" class="btn btn-primary">Close</button>
-		<button ng-click="close(true)" id="close_button"
-			class="btn btn-primary">Cancel</button>
-	</div>
-
-	<script>
-
-		//Basically this method will add a new form. All forms share the same class. When you want one form to show(active form) the other forms get the 
-		// css attribute display:none
-		$("#add_one_more").click(function(event) {
-			event.preventDefault();
-			num = add_one_more();
-			setMultiSelect();
-			addSelectListen(num);
-		});
-		
-		
-		//This method will load the existing Strin Match onto the screen
-		loadPropertyWindow("string_match");
-		setASDCFields();
-
-		// By default, parentStringMatchConditions is disabled
-		$("#parentStringMatchConditions").prop('disabled', 'disabled');
-		
-		
-		var parent_stringMatch = {}
-		var stringMatch_ids = {}
-		var loadingId = false;
-		var allSMatch = {};
-		var vfc_temp=""
-		var alarm_conditions_temp=""
-		var event_severity_temp=""
-		var event_type_source_temp=""		
-
-		//Grab saved values for dropdowns
-		var obj = elementMap[lastElementSelected];
-
-		if (!($.isEmptyObject(obj))) {
-			allSMatch = jQuery.extend({}, obj);
-			for ( var x in allSMatch) {
-				$("#stringMatchTable").prepend(
-						"<tr><td>" + x + "</td></tr>");
-			}
-		}
-
-		
-		//Load properties_tab for a chosen String Match
-		function disperseConfig(stringMatchObj, id) {			
-			//remove old gui forms
-			for (var i = 1; i < ($(".formId").length + 1); i++) {
-				$("#go_properties_tab" + i).parent().remove();
-			}
-			$(".formId").remove();
-
-			if (stringMatchObj !== undefined) {
-				var el = stringMatchObj[id][4]['serviceConfigurations']
-				for (var i = 0; i < el.length; i++) {
-					loadingId = true;
-					var num = add_one_more();
-					loadingId = false;
-					for (var j = 0; j < el[i].length; j++) {
-						if (el[i][j]["stringSet"] !== undefined) {
-							var ss = el[i][j]["stringSet"]
-							for (var o = 0; o < ss.length; o++) {
-								if(ss[o].hasOwnProperty("name")){
-									if(ss[o].name==="alarmCondition"){
-										alarm_conditions_temp=ss[o].value
-									}else if(ss[o].name==="eventSeverity"){
-										event_severity_temp=ss[o].value;
-									}else if(ss[o].name==="eventSourceType"){
-										event_type_source_temp=ss[o].value;
-									}
-									else 
-									$("#formId" + num + " #" + ss[o].name).val(ss[o].value);	
-								}
-								
-							}
-						}else if(el[i][j].hasOwnProperty("name") && el[i][j].name==="vfc"){
-							vfc_temp=el[i][j].value
-						}
-						else if (el[i][j].name === 'outputEventName' && el[i][j].value.toString() !== '') {
-							$("#go_properties_tab" + num).text(el[i][j].value);
-							$("#formId" + num + " #" + el[i][j].name).val(el[i][j].value);
-						}
-						else {
-							if(el[i][j].hasOwnProperty("name")){
-								$("#formId" + num + " #" + el[i][j].name).val(
-										el[i][j].value);
-							}
-						}
-					}
-					set_vfc_alarm_event(num);
-					vfc_temp="";
-					alarm_conditions_temp="";
-					event_severity_temp="";
-					event_type_source_temp="";
-
-					addSelectListen(num);
-				}
-
-				//Adding all the ids for parent String options
-				for (var i = 1; i <= $(".formId").length; i++) {
-					for (k in stringMatch_ids) {
-						if ($("#formId" + i + " #_id").val() !== stringMatch_ids[k].toString() && $(k + " #recipe").val() !== undefined && $(k + " #recipe").val() !== "") {
-							$("#formId" + i + " #parentStringMatch").append("<option value=\""+stringMatch_ids[k]+"\">"+ $(k + " #recipe").val()+ "</option>");
-						}
-					}
-				}
-
-				for (k in parent_stringMatch) {
-					$("#formId" + k + " #parentStringMatch").val(parent_stringMatch[k]);
-					// force the change event
-					$("#formId" + k + " #parentStringMatch").change();
-				}
-
-				if (stringMatchObj[id][0]) {
-					$("#" + stringMatchObj[id][0].name).val(stringMatchObj[id][0].value);
-				}
-				
-				if (stringMatchObj[id][1]) {
-					$("#" + stringMatchObj[id][1].name).val(stringMatchObj[id][1].value);
-				}		
-				
-				if (stringMatchObj[id][2]) {
-					$("#" + stringMatchObj[id][2].name).val(stringMatchObj[id][2].value);
-				}
-			}
-
-			setMultiSelect();
-			
-			if (readOnly||readMOnly){
-				$('select[multiple] option').each(function() {
-		          var input = $('input[value="' + $(this).val() + '"]');
-		          input.prop('disabled', true);
-		          input.parent('li').addClass('disabled');
-		        });
-				$('input[value="multiselect-all"]').prop('disabled', true).parent('li').addClass('disabled');
-			}
-		}
-
-
-		//This is ensure there are no repeated keys in the map
-		function noRepeats(form) {
-			//triggered per String.
-			var select = {};
-			for (var i = 0; i < form.length; i++) {
-				if (select[form[i].name] === undefined)
-					select[form[i].name] = []
-				select[form[i].name].push(form[i].value);
-			}
-			var arr = []
-			for (s in select) {
-				var f = {}
-				f.name = s
-				f.value = select[s]
-				arr.push(f)
-			}
-			return arr
-		}
-
-		$("#savePropsBtn").click(function(event) {
-			$(".idError").hide();
-			if ($("#stringMatchTable .highlight td").html() !== $("#rgfriendlyname").val()){
-				//repeated name
-				if ($.inArray($("#rgfriendlyname").val(), Object.keys(allSMatch)) > -1){
-					$("#repeatIdError").show();
-					return;
-				} else { //not repeated
-					delete allSMatch[$("#stringMatchTable .highlight td").html()];
-				}
-			}
-			/* //Saves edits
-			if ($("#stringMatchTable .highlight").length > 0) {
-				saveLastStringMatchLocally($("#stringMatchTable .highlight td").html());
-			} */
-			if ($("#rgfriendlyname").val().trim() == "New_Group"){
-				$("#newIdError").show();
-				return;
-			}
-			startNextItem();
-			//Removes outdated (deleted) resource Groups by checking against left menu
-			var finalSaveList = {};
-			$("#stringMatchTable td").each(function() {
-				var tableVal = $(this).text();
-				if (tableVal in allSMatch) {
-					finalSaveList[tableVal] = allSMatch[tableVal];
-				}
-			});
-
-			saveProperties(finalSaveList);
-			$("#close_button").click();
-		})
-
-		function add_one_more() {
-			$("#nav_Tabs li").removeClass("active");
-
-			//FormSpan contains a block of the form that is not being displayed. We will create clones of that and add them to tabs
-			var form = $($("#formSpan").children()[0]).clone()
-			var count = 0;
-			//Each new tab will have the formId class attached to it. This way we can track how many forms we currently have out there and assign listeners to them
-			if ($(".formId").length > 0) {
-				var greatest = 0;
-				var s = $(".formId");
-				for (var i = 0; i < s.length; i++) {
-					if (parseInt($(s[i]).attr("id").substring(6)) > greatest) {
-						greatest = parseInt($(s[i]).attr("id").substring(6))
-					}
-				}
-				count = greatest + 1;
-				$("#properties_tab").append(
-						('<span class="formId" id="formId'+count+'"></span>'));
-			} else {
-				count++;
-				$("#properties_tab").append(
-						'<span class="formId" id="formId1"></span>');
-			}
-
-			//$(form).find("#stringMatchName").val("Recipe "+makid(2))
-			//TODO change up how we auto assign stringMatchName. There could be the case where we do this and it will have repeats
-			//alert($(form).find("#_id").val())
-			//stringMatchNameChangeListener(form)
-			
-			$("#add_one_more")
-					.parent()
-					.before(
-							' <li class="active"><a id="go_properties_tab'+count+'">Condition</a><button id="tab_close'+count+'" type="button" class="close tab-close-popup" aria-hidden="true" style="margin-top: -30px;margin-right: 5px">&times;</button></li>');
-			$("#formId" + count).append(form);
-			$(".formId").not($("#formId" + count)).css("display", "none")
-			addCustListen(count)
-			addTabListen(count)
-			
-			// This is for when the process is not loading from map but being created
-			if (!loadingId) {
-				var l = makeid()
-				$(form).find("#_id").val(l)
-				stringMatch_ids["#formId" + count] = l
-				var answers = {}
-
-				for (k in answers) {
-					$(k).val(answers[k])
-				}
-			}
-			return count;
-		}
-
-		function add_new_stringMatch(issueNewNames) {
-			//remove old gui forms
-			for (var i = 1; i < ($(".formId").length + 1); i++) {
-				$("#go_properties_tab" + i).parent().remove();
-			}
-			$(".formId").remove();
-
-			//Reset header
-			var ms = new Date().getTime();
-			var defSMatch = ms;
-			$("#rgname").val(defSMatch);
-			
-			$("#rgfriendlyname").val("New_Group");
-
-			$("#add_one_more").click();
-			return defSMatch;
-		}
-
-		//listener will change the tab name to the recipe
-		function addTabListen(count) {
-			$("#formId" + count + " #recipe").on("change",function() {
-				if ($("#formId" + count + " #recipe").val().toString() !== "") {
-					$('#go_properties_tab' + count).text($("#formId" + count + " #recipe").val())
-				} else
-					$('#go_properties_tab' + count).text("String");
-
-				var answers = {}
-
-				for (var i = 1; i <= greatestIdNum(); i++) {
-					if ($("#formId" + i).length > 0) {
-
-						answers["#formId" + i + " #parentStringMatch"] = $("#formId" + i + " #parentStringMatch").val()
-						$("#formId" + i + " #parentStringMatch").empty();
-
-						for (k in stringMatch_ids) {
-							if ($("#formId" + i + " #_id").val().toString() !== stringMatch_ids[k] && $(k + " #recipe").val() !== 'undefined' && $(k + " #recipe").val() !== "") {
-								$("#formId" + i + " #parentStringMatch").append("<option value='"+stringMatch_ids[k]+"''> "+ $(k+ " #recipe").val()+ "</option>")
-							}
-						}
-						$("#formId" + i + " #parentStringMatch").prepend("<option value=''></option>")
-					}
-				}
-				for (k in answers) {
-					$(k).val(answers[k])
-				}
-			})
-
-			// disable parentStringMatchConditions when a parentStringMatch is not selected
-			$("#formId" + count + " #parentStringMatch").on("change",function() {
-				if ($("#formId" + count + " #parentStringMatch").val().toString() == "") {
-					// deselect all options
-					$("#formId"+ count+ " #parentStringMatchConditions option:selected").prop("selected", false);
-					// disable the select box
-					$("#formId"+ count+ " #parentStringMatchConditions").prop('disabled', 'disabled');
-				} else {
-					$("#formId"+ count+ " #parentStringMatchConditions").prop('disabled', false);
-				}
-			})
-		}
-
-			function addSelectListen(count) {
-				var onSelectChange = function() {
-					var opselected = this.selectedOptions[0].text;
-
-					if (this.id=="outputEventName"){
-						if(opselected!==""){
-							var stringMatchCount = $(this).closest("[id^='formId']").attr("id").substring(6);
-							$(this).closest(".stringMatchPanel").find("#go_properties_tab"+stringMatchCount).text(opselected);
-						} else {
-							$(this).closest("[id^='go_properties_tab']").text("Condition");
-						}
-					}
-
-					if (this.id=="vfc"){
-						var vfcCount = $(this).closest("[id^='formId']").attr("id").substring(6);
-						if(opselected!==""){
-							setAlarmConditions(opselected, vfcCount);
-							setAlertDescription(opselected, vfcCount);
-						} else {
-							$(this).closest(".formId").find("#eventSourceType").val("");
-							$(this).closest(".formId").find("#eventSeverity").val("");
-						}
-					}
-
-					if (this.id=="alarmCondition"){
-						var alarmCount = $(this).closest("[id^='formId']").attr("id").substring(6);
-						if(opselected!==""){
-							setEventSourceType(opselected.toString(), alarmCount, "alarm");
-						} else {
-							$(this).closest(".formId").find("#eventSourceType").val("");
-							$(this).closest(".formId").find("#eventSeverity").val("");
-						}
-					}
-
-				};
-
-				$("#formId"+count+" select").each( function () {
-					this.change = onSelectChange;
-				});
-			}
-
-		function addCustListen(count) {			
-			$('#go_properties_tab' + count).click(function(event) {
-				$("#nav_Tabs li").removeClass("active");
-				$(this).parent().addClass("active");
-				$("#formId" + count).css("display", "")
-				$(".formId").not($("#formId" + count)).css("display", "none")
-
-			})
-			$('#tab_close' + count).click(function(event) {
-
-				$(this).parent().remove();
-				delete stringMatch_ids["#formId" + count + " #_id"]
-				$("#formId" + count).remove();
-			})
-		}
-		
-		function setStringSet(form) {
-			var arr = []
-			var alarmCondition = {}
-			var eventSeverity = {}
-			var eventSourceType = {}
-			for (var i = 0; i < form.length; i++) {
-				if (form[i].name === "alarmCondition") {
-					alarmCondition = form[i]
-				} else if (form[i].name === "eventSeverity") {
-					eventSeverity = form[i];
-				} else if (form[i].name === "eventSourceType") {
-					eventSourceType = form[i];
-				} else {
-
-					arr.push(form[i])
-				}
-
-			}
-			var stringSet = {};
-			stringSet['stringSet'] = []
-			stringSet['stringSet'].push(alarmCondition);
-			stringSet['stringSet'].push(eventSeverity);
-			stringSet['stringSet'].push(eventSourceType);
-			arr.push(stringSet)
-
-			return arr;
-		}
-		
-		//this will populate alarmcondition,vfc,eventtypesource if they are saved in elementmap
-		function set_vfc_alarm_event (count){
-			if(vfc_temp!=="" && vfc_temp!==undefined){
-				$("#formId"+count+" #vfc").val(vfc_temp)
-				
-				if(alarm_conditions_temp!=="" && alarm_conditions_temp!==undefined){
-					setAlarmConditions(vfc_temp,count)
-					$("#formId"+count+" #alarmCondition").val(alarm_conditions_temp);
-					
-					if(event_severity_temp!=="" && event_severity_temp!==undefined){
-						setEventSourceType(alarm_conditions_temp,count)
-						$("#formId"+count+" #eventSeverity").val(event_severity_temp)
-						if(event_type_source_temp!=="" && event_type_source_temp!==undefined){
-							$("#formId"+count+" #eventSourceType").val(event_type_source_temp)
-						}
-					}
-					if(event_type_source_temp!=="" && event_type_source_temp!==undefined){
-						setEventSourceType(alarm_conditions_temp,count)
-						$("#formId"+count+" #eventSourceType").val(event_type_source_temp)
-						if(event_severity_temp!=="" && event_severity_temp!==undefined){
-							$("#formId"+count+" #eventSeverity").val(event_severity_temp)
-						}
-					}
-				}
-			}
-		}
-
-		function setAlarmConditions(vfcID, count){
-			var alarmCondition={}
-			
-			if($("#formId"+count+" #vfc").val()!==""){
-				if(vf_Services['shared'] && vf_Services['shared']['byVfc'] && vf_Services['shared']['byVfc'][vfcID]){
-					alarmCondition=vf_Services['shared']['byVfc'][vfcID]['alarmCondition']	
-				}
-			}
-			
-			$("#formId"+count+" #alarmCondition").empty();
-			$("#formId"+count+" #alarmCondition").append("<option value=\"\"></opton>");
-			 if(alarmCondition && _.keys(alarmCondition).length>0){
-				for(key in alarmCondition){
-					var safestring = $('<div>').text(key).html();
-					$("#formId"+count+" #alarmCondition").append("<option value='"+safestring+"'>"+alarmCondition[key]+"</opton>");	
-				}
-				$("#formId"+count+" #alarmCondition").multiselect("rebuild");
-			}
-		}
-
-		function setEventSourceType(alarm, count){
-			var eventSourceTypSeverity={}
-			if($("#formId"+count+" #alarmCondition").val()!==""){
-				if(vf_Services && vf_Services['shared'] && vf_Services['shared']['byAlarmCondition'] && vf_Services['shared']['byAlarmCondition'][alarm]){
-					eventSourceTypSeverity=vf_Services['shared']['byAlarmCondition'][alarm]	
-				}
-				
-			}
-			
-			$("#formId"+count+" #eventSourceType").val(eventSourceTypSeverity.eventSourceType);
-			$("#formId"+count+" #eventSeverity").val(eventSourceTypSeverity.eventSeverity);
-			$("#formId"+count+" #eventSeverity").multiselect("rebuild");
-		}		
-
-		function greatestIdNum() {
-			var greatest = 0;
-			var s = $(".formId");
-			for (var i = 0; i < s.length; i++) {
-				if (parseInt($(s[i]).attr("id").substring(6)) > greatest) {
-					greatest = parseInt($(s[i]).attr("id").substring(6))
-				}
-			}
-			return greatest;
-		}
-
-		//Generate random id for each String
-		//Also made sure ids couldnt be repeated
-		function makeid(num) {
-
-			var text = "";
-			var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
-			if (num == null)
-				num = 7;
-			for (var i = 0; i < 7; i++)
-				text += possible.charAt(Math.floor(Math.random()
-						* possible.length));
-			var hasValue = false;
-			for (k in stringMatch_ids) {
-				if (text === stringMatch_ids[k])
-					hasValue = true
-			}
-			if (hasValue)
-				return makeid(num);
-			else
-				return text
-		}
-
-		var ParentStringMatch = function(id, name) {
-			this.id = id
-			this.name = name
-		}
-
-		//String table search filter
-		function searchStringMatchList() {
-			var search = document.getElementById("stringMatchSearch");
-			var row = document.getElementsByTagName("td");
-			for (var i = 0; i < row.length; i++) {
-				if (row[i].innerHTML.toUpperCase().indexOf(
-						search.value.toUpperCase()) > -1) {
-					row[i].style.display = "";
-				} else {
-					row[i].style.display = "none";
-				}
-			}
-		}
-
-		function saveLastStringMatchLocally(lastStringMatchId) {
-			var polForm = []
-
-			var properties = $(".saveProps").not("#formSpan .saveProps")
-			
-			var topicPublish = $("#topicPublish").serializeArray();
-			
-			for (var i = 0; i < topicPublish.length; i++) {
-				polForm.push(topicPublish[i]);
-			}
-			
-			//The below three lines are added to make sure resource group can be save correctly even if the policy is not present 
-			if (topicPublish.length == 2){
-				var pname = {name:"policyName", value:""};
-				polForm.push(pname);
-				var pid = {name:"policyId", value:""};
-				polForm.push(pid);
-			}else{
-				var selectedPName = topicPublish[2]["value"];
-				var pid = {name:"policyId", value:allPolicies[selectedPName][1]["value"]};
-				polForm.push(pid);
-			}
-
-			var d = {}
-			d["serviceConfigurations"] = [];
-			for (var i = 0; i < properties.length; i++) {
-				var ser = $(properties[i]).serializeArray();
-				var s = noRepeats(ser)
-				var newSer = setStringSet(s);
-				d["serviceConfigurations"].push(newSer);
-			}
-			polForm.push(d);
-			allSMatch[lastStringMatchId] = polForm;
-		}
-
-		$("#deleteStringMatch").on('click', function() {
-			$(".idError").hide();
-			var deleteId = $("#stringMatchTable .highlight td").html();
-			delete allSMatch.deleteId;
-			$("#stringMatchTable .highlight").remove();
-			$("#rgfriendlyname").val('');
-			expandTable();
-		});
-
-		$('#stringMatchTable').on('click', 'tr', function(event) {
-			$(".idError").hide();
-			//edited name
-			if ($("#stringMatchTable .highlight td").html() !== $("#rgfriendlyname").val()){
-				//repeated name
-				if ($.inArray($("#rgfriendlyname").val(), Object.keys(allSMatch)) > -1){
-					$("#repeatIdError").show();
-					return;
-				} else { //not repeated
-					$("#repeatIdError").hide();
-					delete allSMatch[$("#stringMatchTable .highlight td").html()];
-				}
-			}
-			if ($("#rgfriendlyname").val().trim() == "New_Group"){
-				$("#newIdError").show();
-				return;
-			}
-			if (!(readOnly||readMOnly)){
-				startNextItem();
-			} else {
-				if ($("#stringMatchTable .highlight").length == 0){
-					collapseTable();		
-				}
-			}
-
-			$(this).addClass('highlight').siblings().removeClass('highlight');
-			disperseConfig(allSMatch, $(this).find("td").html());
-		});
-
-		
-		$('#createNewStringMatch').on('click',	function() {
-			$(".idError").hide();
-			//edited name
-			if ($("#stringMatchTable .highlight td").html() !== $("#rgfriendlyname").val()){
-				//repeated name
-				if ($.inArray($("#rgfriendlyname").val(), Object.keys(allSMatch)) > -1){
-					$("#repeatIdError").show();
-					return;
-				} else { //not repeated
-					$("#repeatIdError").hide();
-					delete allSMatch[$("#stringMatchTable .highlight td").html()];
-				}
-			}
-			if ($("#rgfriendlyname").val().trim() == "New_Group"){
-				$("#newIdError").show();
-				return;
-			}
-			startNextItem();
-			var defSMatch = add_new_stringMatch();
-
-			if (("#stringMatchTable .highlight").length > 0) {
-				$('#stringMatchTable tr.highlight').removeClass('highlight');
-			}
-			//$("#stringMatchTable").prepend("<tr class='highlight' id='" +defSMatch+ "''><td>"+ defSMatch + "</td></tr>");
-			$("#stringMatchTable").prepend("<tr class='highlight'><td>New_Group</td></tr>");
-			
-		});
-
-		function isNumberKey(event){
-			var charCode = (event.which) ? event.which : event.keyCode
-			if (charCode > 31 && (charCode < 48 || charCode > 57)){
-				return false;
-			}
-			return true;
-		};
-		
-		function startNextItem() {
-			//save last item before transitioning
-			var lastItem = $("#stringMatchTable .highlight");
-			
-			
-			if (lastItem.length > 0) {
-				saveLastStringMatchLocally($("#rgfriendlyname").val());
-				//lastItem.attr("id", $("#rgfriendlyname").val());
-				if($("#rgfriendlyname").val() != ''){
-					lastItem.find("td").html($("#rgfriendlyname").val());
-				}
-			} else {
-				collapseTable();
-			}
-
-			//allow deleting
-			if ($("#deleteStringMatch").prop("disabled")) {
-				$("#deleteStringMatch").prop("disabled", false);
-			}
-		}
-
-		//Show table panel only
-		function expandTable() {
-			$(".stringMatchPanel").css("display", "none");
-			$(".leftStringMatchPanel").removeClass("col-sm-3");
-			$(".modelSearchBox").css("padding", "25px 12px");
-			if (!($("#deleteStringMatch").prop("disabled"))) {
-				$("#deleteStringMatch").prop("disabled", true);
-			}
-		}
-
-		//Show both menus
-		function collapseTable() {
-			$(".leftStringMatchPanel").addClass("col-sm-3");
-			$(".glyphicon-search").css("padding", "10px 12px");
-			$(".stringMatchPanel").css("display", "unset");
-		}
-	</script>
-</div>
diff --git a/src/main/resources/META-INF/resources/designer/partials/portfolios/tca_properties.html b/src/main/resources/META-INF/resources/designer/partials/portfolios/tca_properties.html
index 7305fd9..546909a 100644
--- a/src/main/resources/META-INF/resources/designer/partials/portfolios/tca_properties.html
+++ b/src/main/resources/META-INF/resources/designer/partials/portfolios/tca_properties.html
@@ -70,17 +70,22 @@
 }
 
 #tcaEditHolder{
-	height:260px; 
 	background-color: #f5f5f5; 
-	padding:10px 0px; 
+	padding:10px 10px; 
 	margin: 15px 15px 0 0; 
 	float: right;
 }
+
+
+#tcaEditHolder #properties_tab>div+div {
+  margin-top: 10px;
+}
+
 .tcaErr{
 	display:none; 
 	text-align:center; 
 	margin-bottom:20px; 
-	color:red;"
+	color:red;
 }
 
 .tcaParentItems {
@@ -155,12 +160,6 @@
 		<div style="height: 10px"></div>
 		<div class="panel panel-default" id="panelHolder">
 			
-			<div class="panel-heading">
-				<ul id="nav_Tabs" class="nav nav-tabs">
-					<li class><a id="add_one_more" href="#desc_tab"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></a></li>
-				</ul>
-			</div>
-			
 			<span id="formSpan" style="display:none;">
 			<div class="panel-body">
 			
@@ -179,19 +178,6 @@
 								<input class="form-control" onkeydown="return false;" type="text" id="tuuid" name="tuuid"></input>
 							</div>
 						</div>
-						
-						<div class="col-sm-8 form-group" style="display:none;">
-							<label class="col-sm-3"> NF Code </label>
-							<div class="col-sm-9" style="padding:0px;">
-								<input class="form-control" onkeydown="return false;" type="text" id="tnfc" name="tnfc"></input>
-							</div>
-						</div>
-						
-						<div class="col-sm-3 form-group"> 
-							<label class="col-sm-8"> Enable </label>
-							<input class="col-sm-4" type="checkbox" style="height:21px; 
-								width:21px; margin:6px;" checked="checked" id="tcaEnab" name="tcaEnab"></input>
-						</div>
 					</div>
 					<div class="row">
 						<div class="col-sm-8 form-group">
@@ -200,6 +186,12 @@
 								<select name="tcaPol" id="tcaPol" enableFilter="true"></select>
 							</div>
 						</div>
+						<div class="col-sm-8 form-group">
+							<label class="col-sm-3">EventName</label>
+							<div class="col-sm-9" style="padding:0px;">
+								<select name="eventName" id="eventName" enableFilter="true"></select>
+							</div>
+						</div>            
 						
 						<div class="col-sm-8 form-group" style="display:none;">
 							<label class="col-sm-3"> Policy ID </label>
@@ -207,27 +199,7 @@
 								<input class="form-control" onkeydown="return false;" type="text" id="tcaPolId" name="tcaPolId"></input>
 							</div>
 						</div>
-						
-						<div class="col-sm-3 form-group"> 
-							<label class="col-sm-8">Max Intervals</label>
-							<input class="col-sm-4 form-control" style="width:80%" type="text" maxlength="3" 
-							id="tcaInt" onkeypress="return isNumberKey(event)" name="tcaInt"></input>
-						</div>
-					</div>
-					<div class="row">
-						<div class="col-sm-8 form-group">
-							<label class="col-sm-3"> Severity </label>
-							<div class="col-sm-9" style="padding:0px;">
-								<select name="tcaSev" id="tcaSev" enableFilter="false">
-								</select>
-							</div>
-						</div>
-						
-						<div class="col-sm-3 form-group"> 
-							<label class="col-sm-8">Min Violations</label>
-							<input class="col-sm-4 form-control" style="width:80%" type="text" maxlength="3" 
-							id="tcaVio" onkeypress="return isNumberKey(event)" name="tcaVio"></input>
-						</div>
+
 					</div>
 				</form>
 				
@@ -250,26 +222,38 @@
 					
 					<div id="tcaEditHolder" class="panel panel-default col-sm-6">
 						<div class="tab-content">
-							<div id="properties_tab" style="padding:10px;" class="form-horizontal">
-								<div style="margin-bottom:20px;">
+							<div id="properties_tab" class="form-vertical">
+								<div>
 									<label class="control-label">Metric</label>
 									<div>
 										<select id="fieldPathM" name="fieldPathM"></select>
 									</div>
 								</div>
-								<div style="margin-bottom:20px;">
+								<div>
 									<label class="control-label">Operator</label>
 									<div>
 										<select id="operator" name="operator"></select>
 									</div>
 								</div>
-								<div style="margin-bottom:20px;">
+								<div>
 									<label class="control-label">Threshold</label>
 									<div>
 										<input type="text" maxlength="10" class="form-control" name="threshold" 
 										onkeypress="return isNumberKey(event)" id="threshold"></input>
 									</div>
 								</div>
+								<div>
+									<label class="control-label">Control Loop Schema</label>
+									<div>
+										<select id="controlLoopSchema" name="controlLoopSchema"></select>
+									</div>
+								</div>
+								<div>
+									<label class="control-label">Closed Loop Event Status</label>
+									<div>
+										<select id="closedLoopEventStatus" name="closedLoopEventStatus"></select>
+									</div>
+								</div>                
 							</div>
 						</div>
 					</div>
@@ -289,7 +273,16 @@
 			class="btn btn-primary">Cancel</button>
 	</div>
 	
-	<script>
+	<script language="javascript">
+    // helper that make jquery objects visibles or invisible
+    // to use instead of show to keep placeholder size correct
+    jQuery.fn.visible = function() {
+        return this.css('visibility', 'visible');
+    };
+    jQuery.fn.invisible = function() {
+        return this.css('visibility', 'hidden');
+    };
+
 		var generateTUUID = function(count){
 			var d = new Date().getTime();
 			var tuuid = 'xxxxxxxx-xxxx-txxx-xxxx-xxxxxxxxxxxx'.replace(/[x]/g, function(c){
@@ -298,30 +291,17 @@
 				return (c == 'x' ? r : (r*0x3|0*8)).toString(16);
 			});
 			$("#formId" + count + " #tuuid").val(tuuid);
-		}
-		
-		$("#add_one_more").click(function(event) {
-			event.preventDefault();
-			if ($("#nav_Tabs li.active").length>0){
-				var oldCount = $("#nav_Tabs li.active").find("a").attr("id").slice(-1);
-				if (($('#formId'+oldCount+' #tcaTable .highlight').length > 0 ) &&
-						(!($('#formId'+oldCount+' #threshold').val()) || !($('#formId'+oldCount+' #fieldPathM').val())) ) {
-					$('#formId'+oldCount+' #tcaError').show();
-					return;
-				} else {
-					$('#formId'+oldCount+' .tcaErr').hide();
-					if ($('#formId'+oldCount+' #tcaTable .highlight').length > 0){
-						$('#formId'+oldCount+' #tcaTable .highlight td').text(
-								$('#formId'+oldCount+' #fieldPathM').val() + ' ' +
-								$('#formId'+oldCount+' #operator').val() + ' ' +
-								$('#formId'+oldCount+' #threshold').val());
-					}
-					$("#formId"+oldCount+" #tcaTable .highlight").removeClass("highlight")
-				}
-			}
-			var count = add_one_more();	
-			generateTUUID(count);
-		})
+		};
+
+
+    var propertiesToString = function(formIdNum) {
+      return $('#formId'+formIdNum+' #fieldPathM').find(':selected').text() + ' ' +
+				$('#formId'+formIdNum+' #operator').val() + ' ' +
+				$('#formId'+formIdNum+' #threshold').val() + ' ' +
+        $('#formId'+formIdNum+' #controlLoopSchema').val() + ' ' +
+        $('#formId'+formIdNum+' #closedLoopEventStatus').val();
+    };
+
 		loadPropertyWindow("tca");
 		
 		//load dropdown with policy options
@@ -340,79 +320,54 @@
 				}
 			}
 		}
-		
+
+		var fieldPathMLabel2Value = function(label) {
+			return Object.keys(defaults_props['tca']['fieldPathM']).find(key => defaults_props['tca']['fieldPathM'][key] == label)
+		}
+		var fieldPathMValue2Label = function(value) {
+			return defaults_props['tca']['fieldPathM'][value];
+		}
+
 		setASDCFields();
-		
-		//load metrics dropdown
-		if (elementMap["global"]){
-			for (var i = 0; i < (elementMap["global"].length); i++){
-				if ((elementMap["global"][i]["name"]) == "vf"){
-					var vfSel = elementMap["global"][i]["value"];	
-					if (vf_Services["shared"]["byVf"][vfSel]["kpi"]){
-						$.each((vf_Services["shared"]["byVf"][vfSel]["kpi"]), function(val, text) {
-			                $('#fieldPathM').append(
-			                    $('<option></option>').val(val).html(text)
-			                );
-			            });
-					}
-					break;
-				};
-			};
-		};
-		
+
 		var arr = elementMap[lastElementSelected];
-		
+
 		if (arr !== undefined) {
 			for (var x in arr){
 				var num = add_one_more();
-				var setCheck = true;
 				for (var i=0; i< arr[x].length; i++){
-					if (arr[x][i].name=='tcaEnab'){
-						$("#formId" + num + " #tcaEnab").prop("checked","true");
-						setCheck = false;
-					}
 					
 					if (arr[x][i].hasOwnProperty('serviceConfigurations')){
 						for (var j=0; j<arr[x][i]["serviceConfigurations"].length; j++){
 							$("#formId" + num + " #tcaTable").prepend("<tr><td>"
-									+arr[x][i]["serviceConfigurations"][j][0]+" "
-									//+(defaults_props['tca']['operator']).getKey(arr[x][i]["serviceConfigurations"][j][1])+" "
-									+(Object.keys(defaults_props['tca']['operator']).find(key => defaults_props['tca']['operator'][key] == (arr[x][i]["serviceConfigurations"][j][1])))+ " " 
-									+arr[x][i]["serviceConfigurations"][j][2]+"</td></tr>");
+									+fieldPathMValue2Label(arr[x][i]["serviceConfigurations"][j][0])+ " "
+									+(Object.keys(defaults_props['tca']['operator']).find(key => defaults_props['tca']['operator'][key] == (arr[x][i]["serviceConfigurations"][j][1])))+ " "
+									+arr[x][i]["serviceConfigurations"][j][2]+" "
+									+arr[x][i]["serviceConfigurations"][j][3]+" "
+									+arr[x][i]["serviceConfigurations"][j][4]+"</td></tr>");
 						}
 					} else {
 						$("#formId" + num + " #"+arr[x][i].name).val(arr[x][i].value);
 					}
 				}
-				if (setCheck){
-					$("#formId" + num + " #tcaEnab").prop("checked",false);
-				}
 				$('#go_properties_tab'+num).text($('#formId' +num+ ' #tname').val());
-				$("#formId"+num + " #properties_tab").hide();
+				$("#formId"+num + " #properties_tab").invisible();
 			}
-		} 
+		} else {
+      var count = add_one_more();
+      generateTUUID(count);
+    }
 	
 		$("#savePropsBtn").click(function(event) {
-			var num = $('#nav_Tabs .active a').attr('id').slice(-1);
-			var tabs = [];
-			$('#nav_Tabs li:not(:last)').each(function(){
-				tabs.push($(this).text());
-			});
-			var nonunique = uniquet(tabs);
+			var num = 1
 			if (($('#formId'+num+' #tcaTable .highlight').length > 0 ) &&
 					(!($('#formId'+num+' #threshold').val()) || !($('#formId'+num+' #fieldPathM').val())) ) {
 				$('#formId'+num+' #tcaError').show();
 				return;
-			} else if (nonunique){
-				$('#formId'+num+' #tcaUnique').show();
-				return;
 			} else {
 				$('#formId'+num+' .tcaErr').hide();
 				if ($('#formId'+num+' #tcaTable .highlight').length > 0){
-					$('#formId'+num+' #tcaTable .highlight td').text(
-							$('#formId'+num+' #fieldPathM').val() + ' ' +
-							$('#formId'+num+' #operator').val() + ' ' +
-							$('#formId'+num+' #threshold').val());
+					$('#formId'+num+' #tcaTable .highlight td').text(propertiesToString(num));
 				}
 				var saveP = {};
 				$('.formId').each(function(){
@@ -420,23 +375,11 @@
 					var header = $(this).find('.tcaParentItems').serializeArray();
 					var sconf = {};
 					var sconfa = [];
-					var checkNF = true;
 					$('#formId' +count+' #tcaTable tr').each(function(){
 						$('td', this).each(function(){
 							var splitTd = $(this).text().split(' ');
+              splitTd[0]=fieldPathMLabel2Value(splitTd[0]);
 							splitTd[1]=defaults_props['tca']['operator'][splitTd[1]];
-							var checkByKpi = vf_Services["shared"]["byKpi"][splitTd[0].replace(/\s/g, "")];
-							if (checkByKpi["fieldPath"]){
-								splitTd.push(Object.keys(vf_Services["shared"]["byKpi"][splitTd[0].replace(/\s/g, "")]["fieldPath"])[0]);
-							};
-							if ((checkByKpi["nfNamingCode"]) && (checkNF)){
-								$.grep(header, function(e,i){ 
-									if (e.name == "tnfc"){
-										header[i]["value"] = (Object.keys(checkByKpi["nfNamingCode"])[0]);
-									}
-								});
-								checkNF = false;
-							}
 							sconfa.push(splitTd);
 						});
 						
@@ -505,7 +448,7 @@
 			
 			$("#add_one_more").parent().before(' <li class="active"><a id="go_properties_tab'+count+'">New_Set</a><button id="tab_close'+count+'" type="button" class="close tab-close-popup" aria-hidden="true" style="margin-top: -30px;margin-right: 5px">&times;</button></li>');
 			$("#formId"+count).append(form);
-			$('#formId'+count+ ' #properties_tab').hide();
+			$('#formId'+count+ ' #properties_tab').invisible();
 			$(".formId").not($("#formId"+count)).css("display","none");
 			addCustListen(count);
 			setMultiSelect();
@@ -531,10 +474,7 @@
 					} else {
 						$('#formId'+oldCount+' .tcaErr').hide();
 						if ($('#formId'+oldCount+' #tcaTable .highlight').length > 0){
-							$('#formId'+oldCount+' #tcaTable .highlight td').text(
-									$('#formId'+oldCount+' #fieldPathM').val() + ' ' +
-									$('#formId'+oldCount+' #operator').val() + ' ' +
-									$('#formId'+oldCount+' #threshold').val());
+							$('#formId'+oldCount+' #tcaTable .highlight td').text(propertiesToString(oldCount));
 						}
 						$("#formId"+oldCount+" #tcaTable .highlight").removeClass("highlight")
 					}
@@ -559,19 +499,18 @@
 				} else {
 					$('#formId'+count+' .tcaErr').hide();
 					if ($('#formId'+count+' #tcaTable .highlight').length > 0){
-						$('#formId'+count+' #tcaTable .highlight td').text(
-								$('#formId'+count+' #fieldPathM').val() + ' ' +
-								$('#formId'+count+' #operator').val() + ' ' +
-								$('#formId'+count+' #threshold').val());
+						$('#formId'+count+' #tcaTable .highlight td').text(propertiesToString(num));
 					}
 					//$('#formId'+count+' #tcaTable .highlight').text();
 					$(this).addClass('highlight').siblings().removeClass('highlight');
 					var str = $(this).text().split(' ');
-					$('#formId'+count + ' #properties_tab').show();
-					if (str.length == 3){
-						$('#formId'+count+' #fieldPathM').val(str[0]).multiselect('refresh');
+					$('#formId'+count + ' #properties_tab').visible();
+					if (str.length == 5){
+						$('#formId'+count+' #fieldPathM').val(fieldPathMLabel2Value(str[0])).multiselect('refresh');
 						$('#formId'+count+' #operator').val(str[1]).multiselect('refresh');
 						$('#formId'+count+' #threshold').val(str[2]);
+            $('#formId'+count+' #controlLoopSchema').val(str[3]).multiselect('refresh');
+            $('#formId'+count+' #closedLoopEventStatus').val(str[4]).multiselect('refresh');
 					}
 					
 					if ((!(readOnly||readMOnly)) && ($('#formId'+count + ' #deleteThresh').prop('disabled'))) {
@@ -582,7 +521,7 @@
 			
 			$('#formId'+count+' #deleteThresh').on('click', function(){
 				$('#formId'+num+' .tcaErr').hide();
-				$('#formId'+count+ ' #properties_tab').hide();
+				$('#formId'+count+ ' #properties_tab').invisible();
 				$('#formId'+count+ ' #tcaTable .highlight').remove();
 				$('#formId'+count+ ' #deleteThresh').prop('disabled', true);
 			});
@@ -595,12 +534,9 @@
 				} else {
 					$('#formId'+count+' .tcaErr').hide();
 					if ($('#formId'+count+' #tcaTable .highlight').length > 0){
-						$('#formId'+count+' #tcaTable .highlight td').text(
-								$('#formId'+count+' #fieldPathM').val() + ' ' +
-								$('#formId'+count+' #operator').val() + ' ' +
-								$('#formId'+count+' #threshold').val());
+						$('#formId'+count+' #tcaTable .highlight td').text(propertiesToString(count));
 					}
-					$('#formId'+count+ ' #properties_tab').show();
+					$('#formId'+count+ ' #properties_tab').visible();
 					if (('#formId'+count+' #tcaTable .highlight').length > 0 ){
 						$('#formId'+count+' #tcaTable tr.highlight').removeClass('highlight');
 					}
@@ -608,7 +544,9 @@
 					$('#formId'+count+' #fieldPathM').prop("selectedIndex", 0).multiselect('refresh');
 					$('#formId'+count+' #operator').prop("selectedIndex", 0).multiselect('refresh');
 					$('#formId'+count+' #threshold').val("");
-					
+					$('#formId'+count+' #controlLoopSchema').prop("selectedIndex", 0).multiselect('refresh');
+					$('#formId'+count+' #closedLoopEventStatus').prop("selectedIndex", 0).multiselect('refresh');
+
 					if ($('#formId'+count + ' #deleteThresh').prop('disabled')) {
 						$('#formId'+count + ' #deleteThresh').prop('disabled', false);
 					}
diff --git a/src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js b/src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js
index b42b5bb..195886c 100644
--- a/src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js
+++ b/src/main/resources/META-INF/resources/designer/scripts/CldsModelService.js
@@ -30,10 +30,8 @@
     }
 
     mapping = {
-      'stringmatch': StringMatchWindow,
       'tca': TCAWindow,
       'policy': PolicyWindow,
-      'collector': CollectorsWindow,
       'vescollector': VesCollectorWindow,
       'holmes': HolmesWindow,
     };
diff --git a/src/main/resources/META-INF/resources/designer/scripts/app.js b/src/main/resources/META-INF/resources/designer/scripts/app.js
index 555b31c..f300bb0 100644
--- a/src/main/resources/META-INF/resources/designer/scripts/app.js
+++ b/src/main/resources/META-INF/resources/designer/scripts/app.js
@@ -1296,106 +1296,6 @@
             // $modalInstance.close("closed");
           });
         };
-        $scope.CollectorsWindow = function(collectorsWin) {
-
-          if (isTemplate) {
-            var dlg = dialogs
-              .create(
-                'partials/portfolios/Template_model.html',
-                'ImportSchemaCtrl',
-                collectorsWin, {
-                  closable: true,
-                  draggable: true
-                }, {
-                  size: 'lg',
-                  keyboard: true,
-                  backdrop: 'static',
-                  windowClass: 'my-class'
-                });
-            dlg.result.then(function(name) {
-
-            }, function() {
-
-              // if(angular.equals($scope.name,''))
-              // $scope.name = 'You did not enter in
-              // your name!';
-            });
-          } else {
-            var dlg = dialogs
-              .create(
-                'partials/portfolios/Collector_properties.html',
-                'ImportSchemaCtrl', {
-                  closable: true,
-                  draggable: true
-                }, {
-                  size: 'lg',
-                  keyboard: true,
-                  backdrop: 'static',
-                  windowClass: 'my-class'
-                });
-            dlg.result.then(function(name) {
-
-            }, function() {
-
-              // if(angular.equals($scope.name,''))
-              // $scope.name = 'You did not enter in
-              // your name!';
-            });
-
-          }
-
-        };
-        $scope.StringMatchWindow = function(stringMatch) {
-
-          if (isTemplate) {
-            var dlg = dialogs
-              .create(
-                'partials/portfolios/Template_model.html',
-                'ImportSchemaCtrl',
-                stringMatch, {
-                  closable: true,
-                  draggable: true
-                }, {
-                  size: 'lg',
-                  keyboard: true,
-                  backdrop: 'static',
-                  windowClass: 'my-class'
-                });
-            dlg.result.then(function(name) {
-
-            }, function() {
-
-              // if(angular.equals($scope.name,''))
-              // $scope.name = 'You did not enter in
-              // your name!';
-            });
-          } else {
-
-            var dlg = dialogs
-              .create(
-                'partials/portfolios/stringMatch_properties.html',
-                'ImportSchemaCtrl', {
-                  closable: true,
-                  draggable: true
-                }, {
-                  size: 'lg',
-                  keyboard: true,
-                  backdrop: 'static',
-                  windowClass: 'my-class'
-                });
-
-            dlg.result.then(function(name) {
-
-              // $scope.name = name;
-            }, function() {
-
-              // if(angular.equals($scope.name,''))
-              // $scope.name = 'You did not enter in
-              // your name!';
-            });
-
-          }
-        };
         $scope.VesCollectorWindow = function(vesCollector) {
 
           if (isTemplate) {
@@ -1677,13 +1577,6 @@
 
 }
 
-function CollectorsWindow(collectorsWin) {
-
-  angular.element(document.getElementById('navbar')).scope()
-    .CollectorsWindow(collectorsWin);
-
-}
-
 function VesCollectorWindow(vesCollectorWin) {
   angular.element(document.getElementById('navbar')).scope()
     .VesCollectorWindow(vesCollectorWin);
@@ -1700,13 +1593,6 @@
 
 }
 
-function StringMatchWindow(stringMatch) {
-
-  angular.element(document.getElementById('navbar')).scope()
-    .StringMatchWindow(stringMatch);
-
-}
-
 function TCAWindow(tca) {
 
   angular.element(document.getElementById('navbar')).scope().TCAWindow(tca);
diff --git a/src/main/resources/bpmn/clds-process-action.bpmn b/src/main/resources/bpmn/clds-process-action.bpmn
index 7801624..11edc07 100644
--- a/src/main/resources/bpmn/clds-process-action.bpmn
+++ b/src/main/resources/bpmn/clds-process-action.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="_-A31MBMpEea185sFktMJ7Q" 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: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="_-A31MBMpEea185sFktMJ7Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.7.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:collaboration id="_Collaboration_2">
     <bpmn2:participant id="_Participant_2" name="Process Action" processRef="clds-process-action-wf" />
   </bpmn2:collaboration>
@@ -14,18 +14,15 @@
         <bpmn2:flowNodeRef>StartEvent_1</bpmn2:flowNodeRef>
         <bpmn2:flowNodeRef>ServiceTask_0x8ypxf</bpmn2:flowNodeRef>
         <bpmn2:flowNodeRef>sendTcaReqDistribute</bpmn2:flowNodeRef>
-        <bpmn2:flowNodeRef>sendStringMatchingReqDistribute</bpmn2:flowNodeRef>
         <bpmn2:flowNodeRef>sendHolmesReqDistribute</bpmn2:flowNodeRef>
       </bpmn2:lane>
       <bpmn2:lane id="Lane_5" name="Delete">
-        <bpmn2:flowNodeRef>sendStringMatchingReqDelete</bpmn2:flowNodeRef>
         <bpmn2:flowNodeRef>sendTcaReqDelete</bpmn2:flowNodeRef>
         <bpmn2:flowNodeRef>sendOpPolicyReqDelete</bpmn2:flowNodeRef>
         <bpmn2:flowNodeRef>sendHolmesReqDelete</bpmn2:flowNodeRef>
       </bpmn2:lane>
       <bpmn2:lane id="Lane_4" name="Update">
         <bpmn2:flowNodeRef>sendOpPolicyReqUpdate</bpmn2:flowNodeRef>
-        <bpmn2:flowNodeRef>sendStringMatchingReqUpdate</bpmn2:flowNodeRef>
         <bpmn2:flowNodeRef>sendTcaReqUpdate</bpmn2:flowNodeRef>
         <bpmn2:flowNodeRef>sendHolmesReqUpdate</bpmn2:flowNodeRef>
       </bpmn2:lane>
@@ -79,7 +76,7 @@
       <bpmn2:incoming>SequenceFlow_0ejpmee</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_28</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_27" name="" sourceRef="ExclusiveGateway_2" targetRef="sendStringMatchingReqUpdate">
+    <bpmn2:sequenceFlow id="SequenceFlow_27" name="" sourceRef="ExclusiveGateway_2" targetRef="sendTcaReqUpdate">
       <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${ actionCd == 'UPDATE' }]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_28" name="" sourceRef="sendOpPolicyReqUpdate" targetRef="ExclusiveGateway_3" />
@@ -103,16 +100,11 @@
       <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
     </bpmn2:startEvent>
     <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="StartEvent_1" targetRef="ExclusiveGateway_2" />
-    <bpmn2:serviceTask id="sendStringMatchingReqDelete" name="Send String Match Micro Service request to Policy [Delete]" camunda:delegateExpression="${stringMatchPolicyDeleteDelegate}">
-      <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing>
-    </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="sendStringMatchingReqDelete" targetRef="sendTcaReqDelete" />
     <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="sendOpPolicyReqDelete" targetRef="ExclusiveGateway_3" />
-    <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="ExclusiveGateway_2" targetRef="sendStringMatchingReqDelete">
+    <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="ExclusiveGateway_2" targetRef="sendTcaReqDelete">
       <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${ actionCd == 'DELETE' }]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0w39hon" sourceRef="ServiceTask_0x8ypxf" targetRef="sendStringMatchingReqDistribute" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0w39hon" sourceRef="ServiceTask_0x8ypxf" targetRef="sendTcaReqDistribute" />
     <bpmn2:sequenceFlow id="SequenceFlow_1xlfq66" sourceRef="ExclusiveGateway_2" targetRef="ServiceTask_0x8ypxf">
       <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${ actionCd == 'SUBMIT' || actionCd == 'RESUBMIT' }]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
@@ -124,19 +116,14 @@
     <bpmn2:sequenceFlow id="SequenceFlow_1rga27p" sourceRef="sendTcaReqDistribute" targetRef="sendHolmesReqDistribute" />
     <bpmn2:sequenceFlow id="SequenceFlow_0tpegxf" sourceRef="sendTcaReqDelete" targetRef="sendHolmesReqDelete" />
     <bpmn2:serviceTask id="sendTcaReqDelete" name="Send Tca Micro Service request to Policy [Delete]" camunda:delegateExpression="${tcaPolicyDeleteDelegate}">
-      <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0tpegxf</bpmn2:outgoing>
     </bpmn2:serviceTask>
     <bpmn2:sequenceFlow id="SequenceFlow_1kegg6u" sourceRef="sendTcaReqUpdate" targetRef="sendHolmesReqUpdate" />
     <bpmn2:serviceTask id="sendTcaReqDistribute" name="Send Tca Micro Service request to Policy [Submit]" camunda:delegateExpression="${tcaPolicyDelegate}">
-      <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0w39hon</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1rga27p</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:serviceTask id="sendStringMatchingReqDistribute" name="Send String Match Micro Service request to Policy [Submit]" camunda:delegateExpression="${stringMatchPolicyDelegate}">
-      <bpmn2:incoming>SequenceFlow_0w39hon</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
-    </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="sendStringMatchingReqDistribute" targetRef="sendTcaReqDistribute" />
     <bpmn2:sequenceFlow id="SequenceFlow_1tu9g11" sourceRef="sendHolmesReqDistribute" targetRef="sendOpPolicyReqDistribute" />
     <bpmn2:serviceTask id="sendHolmesReqDistribute" name="Send Holmes Micro Service request to Policy [Submit]" camunda:delegateExpression="${holmesPolicyDelegate}">
       <bpmn2:incoming>SequenceFlow_1rga27p</bpmn2:incoming>
@@ -151,15 +138,10 @@
       <bpmn2:outgoing>SequenceFlow_1mtizad</bpmn2:outgoing>
     </bpmn2:serviceTask>
     <bpmn2:sequenceFlow id="SequenceFlow_1mtizad" sourceRef="sendHolmesReqDelete" targetRef="sendOpPolicyReqDelete" />
-    <bpmn2:serviceTask id="sendStringMatchingReqUpdate" name="Send String Match Micro Service request to Policy [Update]" camunda:delegateExpression="${stringMatchPolicyDelegate}">
-      <bpmn2:incoming>SequenceFlow_27</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_26</bpmn2:outgoing>
-    </bpmn2:serviceTask>
     <bpmn2:serviceTask id="sendTcaReqUpdate" name="Send Tca Micro Service request to Policy [Update]" camunda:delegateExpression="${tcaPolicyDelegate}">
-      <bpmn2:incoming>SequenceFlow_26</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_27</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1kegg6u</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_26" name="" sourceRef="sendStringMatchingReqUpdate" targetRef="sendTcaReqUpdate" />
     <bpmn2:serviceTask id="sendHolmesReqUpdate" name="Send Holmes Micro Service request to Policy [Update]" camunda:delegateExpression="${holmesPolicyDelegate}">
       <bpmn2:incoming>SequenceFlow_1kegg6u</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0ejpmee</bpmn2:outgoing>
@@ -180,19 +162,9 @@
           <dc:Bounds x="1338" y="257" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_8" bpmnElement="sendStringMatchingReqDistribute">
-        <dc:Bounds x="400" y="89" width="100" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_6" bpmnElement="sendOpPolicyReqDistribute">
         <dc:Bounds x="912" y="89" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_8" targetElement="ServiceTask_1r1brt6_di">
-        <di:waypoint xsi:type="dc:Point" x="500" y="129" />
-        <di:waypoint xsi:type="dc:Point" x="546" y="129" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="624" y="192" width="90" height="6" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_7" bpmnElement="insEvent">
         <dc:Bounds x="1188" y="194" width="100" height="80" />
       </bpmndi:BPMNShape>
@@ -249,39 +221,19 @@
           <dc:Bounds x="1027" y="178.5" width="90" height="6" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_11" bpmnElement="sendStringMatchingReqDelete">
-        <dc:Bounds x="348" y="385" width="100" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_12" bpmnElement="sendOpPolicyReqDelete">
         <dc:Bounds x="831" y="385" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_ServiceTask_11" targetElement="_BPMNShape_ServiceTask_12">
-        <di:waypoint xsi:type="dc:Point" x="448" y="425" />
-        <di:waypoint xsi:type="dc:Point" x="496" y="425" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="467" y="425" width="6" height="6" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_Lane_9" bpmnElement="Lane_4" isHorizontal="true">
         <dc:Bounds x="30" y="484" width="1339" height="117" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_14" bpmnElement="sendStringMatchingReqUpdate">
-        <dc:Bounds x="350" y="500" width="100" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_15" bpmnElement="sendOpPolicyReqUpdate">
         <dc:Bounds x="912" y="500" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_26" bpmnElement="SequenceFlow_26" sourceElement="_BPMNShape_ServiceTask_14" targetElement="ServiceTask_08pqhb3_di">
-        <di:waypoint xsi:type="dc:Point" x="450" y="540" />
-        <di:waypoint xsi:type="dc:Point" x="496" y="540" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="580" y="540" width="90" height="6" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_27" bpmnElement="SequenceFlow_27" sourceElement="_BPMNShape_ExclusiveGateway_3" targetElement="_BPMNShape_ServiceTask_14">
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_27" bpmnElement="SequenceFlow_27" sourceElement="_BPMNShape_ExclusiveGateway_3" targetElement="ServiceTask_08pqhb3_di">
         <di:waypoint xsi:type="dc:Point" x="169" y="262" />
         <di:waypoint xsi:type="dc:Point" x="169" y="540" />
-        <di:waypoint xsi:type="dc:Point" x="350" y="540" />
+        <di:waypoint xsi:type="dc:Point" x="496" y="540" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="139" y="398" width="90" height="6" />
         </bpmndi:BPMNLabel>
@@ -341,10 +293,10 @@
           <dc:Bounds x="1028" y="501.5" width="90" height="6" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ExclusiveGateway_3" targetElement="_BPMNShape_ServiceTask_11">
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ExclusiveGateway_3" targetElement="ServiceTask_0y2gwy4_di">
         <di:waypoint xsi:type="dc:Point" x="169" y="262" />
         <di:waypoint xsi:type="dc:Point" x="169" y="425" />
-        <di:waypoint xsi:type="dc:Point" x="348" y="425" />
+        <di:waypoint xsi:type="dc:Point" x="496" y="425" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="139" y="333.5" width="90" height="20" />
         </bpmndi:BPMNLabel>
@@ -354,9 +306,9 @@
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0w39hon_di" bpmnElement="SequenceFlow_0w39hon">
         <di:waypoint xsi:type="dc:Point" x="304" y="129" />
-        <di:waypoint xsi:type="dc:Point" x="400" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="546" y="129" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="307" y="114" width="90" height="0" />
+          <dc:Bounds x="380" y="114" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1xlfq66_di" bpmnElement="SequenceFlow_1xlfq66">
diff --git a/src/main/resources/clds/clds-reference.properties b/src/main/resources/clds/clds-reference.properties
index abc25b1..00d2f61 100644
--- a/src/main/resources/clds/clds-reference.properties
+++ b/src/main/resources/clds/clds-reference.properties
@@ -27,7 +27,7 @@
 #
 # DCAE request build properties
 #
-dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"string_matching":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.stringmatcher.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}}
+dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"tca":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.tca.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}}
 dcae.decode.service_ids={"vUSP":["vUSP - vCTS"],"Trinity":["ASBGv TLS VNF","ASBGv No TLS","ASBGv (NO TLS) VNF","ASBGv TLS","NSBGv VNF","NSBGv"],"vSCP":["AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1","ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1"],"vProbes":["vProbes - FW"]}
 #
 # SDC request blueprint properties
@@ -38,30 +38,18 @@
 #
 # General Policy request properties
 #
-policy.ecomp.name=DCAE
+policy.onap.name=DCAE
 policy.pdp.group=default
 policy.ms.type=MicroService
 policy.ms.policyNamePrefix=Config_MS_
 policy.op.type=BRMS_Param
 policy.op.policyNamePrefix=Config_BRMS_Param_
-#
+
 # TCA MicroService Policy request build properties
 #
-tca.template={"service":"MThresholdCrossingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"MThresholdCrossingConfiguration","templateVersion":"5.2.0.1","priority":"4","version":"5.2.0.1","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"$class": "com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration","domain":"measurementsForVfScaling","policyScope":"pnf=eNodeB;type=configuration","policyName":"policy.dcae.configuration","policyVersion":"1.0.0","subscriberContentType": "application/json","subscriberConsumerId": "c13","subscriberConsumerGroup": "OpenDCAE-c13","subscriberTimeoutMS": "-1","subscriberMessageLimit": "-1","subscriberPollingInterval": "20000","publisherContentType": "application/json","publisherMaxBatchSize": "10","publisherMaxRecoveryQueueSize": "100000","publisherPollingInterval": "20000","publisherAlertWindowingTime": "86400","signatures":[]}}
-tca.signature.template={"nfNamingCode":"ENBE","target":"common_id","targetType":"eNodeB","useCaseName":"???","signatureName":"???","signatureUuid":"???","closedLoopControlName":"???","severity":"???","version":"1.0.2","maxInterval":1200,"minMessageViolations":4,"thresholds":[]}
-#
-# String Match MicroService Policy request build properties
-#
-# default
-sm.template={"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"1610","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{}}}
-# by service: vSCP
-sm.template.vSCP={"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"0.1.0-SNAPSHOT","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{}}}
-sm.sc.template={}
-#
-# default
-sm.rulegroup=true
-# by service: vSCP
-sm.rulegroup.vSCP=false
+tca.template={"cdap-tca-hi-lo_policy": {"domain": "measurementsForVfScaling","metricsPerEventName": [{"eventName": "???","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]}}
+tca.thresholds.template={"closedLoopControlName": "???", "controlLoopSchema": "VM","version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"}
+
 #
 #
 # Operational Policy request build properties
@@ -86,9 +74,9 @@
 op.eNodeB.period=10s
 #
 # Sdc service properties
-sdc.catalog.url=http://sdc.api.simpledemo.openecomp.org:8080/sdc/v1/catalog/
-sdc.hostUrl=http://sdc.api.simpledemo.openecomp.org:8080
-sdc.serviceUrl=http://sdc.api.simpledemo.openecomp.org:8080/sdc/v1/catalog/services
+sdc.catalog.url=http://sdc.api.simpledemo.openecomp.org:8080/sdc/v1/catalog/
+sdc.hostUrl=http://sdc.api.simpledemo.openecomp.org:8080
+sdc.serviceUrl=http://sdc.api.simpledemo.openecomp.org:8080/sdc/v1/catalog/services
 sdc.serviceUsername=test
 sdc.servicePassword=123456
 sdc.artifactLabel=blueprintclampcockpit
@@ -107,7 +95,7 @@
 action.test.override=false
 # if action.insert.test.event is true, then insert event even if the action is set to test
 action.insert.test.event=false
-CLDS_SERVICE_CACHE_MAX_SECONDS=5
+CLDS_SERVICE_CACHE_MAX_SECONDS=300
 
 #DCAE Inventory Url Properties
 DCAE_INVENTORY_URL = https://dcae.api.simpledemo.openecomp.org:8080
diff --git a/src/main/resources/clds/globalClds.properties b/src/main/resources/clds/globalClds.properties
index f6607cb..d21afbc 100644
--- a/src/main/resources/clds/globalClds.properties
+++ b/src/main/resources/clds/globalClds.properties
@@ -21,4 +21,4 @@
 # ECOMP is a trademark and service mark of AT&T Intellectual Property.
 ###
 
-globalCldsProps ={"collector":{"topicPublishes":{"DCAE-COLLECTOR-UCSNMP":"DCAE-COLLECTOR-UCSNMP"}},"string_match":{"topicPublishes":{"DCAE-CL-EVENT":"DCAE-CL-EVENT"},"aaiMatchingFields":{"cloud-region.identity-url":"cloud-region.identity-url","complex.city":"complex.city","complex.physical-location-id":"complex.physical-location-id","complex.state":"complex.state","generic-vnf.service-id":"generic-vnf.service-id","generic-vnf.vnf-name":"generic-vnf.vnf-name","generic-vnf.vnf-type":"generic-vnf.vnf-type","tenant.tenant-id":"tenant.tenant-id","vserver.in-maint":"vserver.in-maint","vserver.is-closed-loop-disabled":"vserver.is-closed-loop-disabled","vserver.l-interface.interface-name":"vserver.l-interface.interface-name","vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address":"vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address","vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address":"vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address","vserver.l-interface.network-name":"vserver.l-interface.network-name","vserver.prov-status":"vserver.prov-status","vserver.selflink":"vserver.selflink","vserver.vserver-id":"vserver.vserver-id","vserver.vserver-name":"vserver.vserver-name"},"aaiSendFields":{"cloud-region.identity-url":"cloud-region.identity-url","complex.city":"complex.city","complex.physical-location-id":"complex.physical-location-id","complex.state":"complex.state","generic-vnf.service-id":"generic-vnf.service-id","generic-vnf.vnf-name":"generic-vnf.vnf-name","generic-vnf.vnf-type":"generic-vnf.vnf-type","tenant.tenant-id":"tenant.tenant-id","vserver.in-maint":"vserver.in-maint","vserver.is-closed-loop-disabled":"vserver.is-closed-loop-disabled","vserver.l-interface.interface-name":"vserver.l-interface.interface-name","vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address":"vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address","vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address":"vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address","vserver.l-interface.network-name":"vserver.l-interface.network-name","vserver.prov-status":"vserver.prov-status","vserver.selflink":"vserver.selflink","vserver.vserver-id":"vserver.vserver-id","vserver.vserver-name":"vserver.vserver-name"},"eventSourceType":{"f5BigIP":"f5BigIP","vSBG_Alarms":"vSBG_Alarms","vCTS_Alarms":"vCTS_Alarms"},"eventSeverity":{"NORMAL":"NORMAL","not-NORMAL":"not-NORMAL","OK":"OK","WARNING":"WARNING","MINOR":"MINOR","MAJOR":"MAJOR","CRITICAL":"CRITICAL"},"timeWindow":0,"ageLimit":1600,"outputEventName":{"":"","ONSET":"ONSET","ABATED":"ABATED"},"createClosedLoopEventId":{"Initial":"Initial","Close":"Close"}},"tca":{"tname":"New_Set","tcaInt":"1","tcaVio":"1","tcaSev":{"NORMAL":"NORMAL","CRITICAL":"CRITICAL","MAJOR":"MAJOR","MINOR":"MINOR","WARNING":"WARNING"},"fieldPath":{"FIELDPATH_test_1":"FIELDPATH_test_1","FIELDPATH_test_2":"FIELDPATH_test_2"},"operator":{">":"GREATER","=":"EQUAL","<":"LESS"},"opsPolicy":{"POLICY_test_X":"POLICY_test_X","POLICY_test_Y":"POLICY_test_Y"}},"global":{"actionSet":{"vnfRecipe":"VNF", "enbRecipe":"eNodeB"},"location":{"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3","MDTWNJC1":"FTL_C_location1","MDTWNJC2":"FTL_C_location2","MDTWNJ21":"FTL_L_location1","MDTWNJ22":"FTL_L_location2","RDM2WAGPLCP":"ISTFTL_location","RDM3":"RDM3WAGPLCP"}},"policy":{"pname":"0","timeout":345,"vnfRecipe":{"":"","restart":"Restart","rebuild":"Rebuild","migrate":"Migrate","healthCheck":"Health Check"},"enbRecipe":{"":"","reset":"Reset"},"maxRetries":"3","retryTimeLimit":180,"resource":{"vCTS":"vCTS","v3CDB":"v3CDB","vUDR":"vUDR","vCOM":"vCOM","vRAR":"vRAR","vLCS":"vLCS","vUDR-BE":"vUDR-BE","vDBE":"vDBE"},"parentPolicyConditions":{"Failure_Retries":"Failure: Max Retries Exceeded","Failure_Timeout":"Failure: Time Limit Exceeded","Failure_Guard":"Failure: Guard","Failure_Exception":"Failure: Exception","Failure":"Failure: Other","Success":"Success"}},"shared":{"byService":{"":{"vf":{"":""},"location":{"":""},"alarmCondition":{"":""}}},"byVf":{"":{"vfc":{"":""}}}}}
\ No newline at end of file
+globalCldsProps ={"tca":{"tname":"New_Set","tcaInt":"1","tcaVio":"1","eventName":{"vCPEvGMUXPacketLoss":"vCPEvGMUXPacketLoss","vLoadBalancer":"vLoadBalancer","vFirewallBroadcastPackets":"vFirewallBroadcastPackets"},"fieldPathM":{"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated":"receivedBroadcastPacketsAccumulated","$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta":"receivedDiscardedPacketsDelta"},"operator":{">":"GREATER",">=":"GREATER_OR_EQUAL","=":"EQUAL","<=":"LESS_OR_EQUAL","<":"LESS"},"opsPolicy":{"POLICY_test_X":"POLICY_test_X","POLICY_test_Y":"POLICY_test_Y"},"controlLoopSchema":{"":"","VM":"VM","VNF":"VNF"},"closedLoopEventStatus":{"":"","ONSET":"ONSET","ABATED":"ABATED"}},"global":{"actionSet":{"vnfRecipe":"VNF", "enbRecipe":"eNodeB"},"location":{"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3","MDTWNJC1":"FTL_C_location1","MDTWNJC2":"FTL_C_location2","MDTWNJ21":"FTL_L_location1","MDTWNJ22":"FTL_L_location2","RDM2WAGPLCP":"ISTFTL_location","RDM3":"RDM3WAGPLCP"}},"policy":{"pname":"0","timeout":345,"vnfRecipe":{"":"","restart":"Restart","rebuild":"Rebuild","migrate":"Migrate","healthCheck":"Health Check"},"enbRecipe":{"":"","reset":"Reset"},"maxRetries":"3","retryTimeLimit":180,"resource":{"vCTS":"vCTS","v3CDB":"v3CDB","vUDR":"vUDR","vCOM":"vCOM","vRAR":"vRAR","vLCS":"vLCS","vUDR-BE":"vUDR-BE","vDBE":"vDBE"},"parentPolicyConditions":{"Failure_Retries":"Failure: Max Retries Exceeded","Failure_Timeout":"Failure: Time Limit Exceeded","Failure_Guard":"Failure: Guard","Failure_Exception":"Failure: Exception","Failure":"Failure: Other","Success":"Success"}},"shared":{"byService":{"":{"vf":{"":""},"location":{"":""},"alarmCondition":{"":""}}},"byVf":{"":{"vfc":{"":""}}}}}
diff --git a/src/main/resources/xsl/clds-bpmn-transformer.xsl b/src/main/resources/xsl/clds-bpmn-transformer.xsl
index 8a39be5..3cd98e3 100644
--- a/src/main/resources/xsl/clds-bpmn-transformer.xsl
+++ b/src/main/resources/xsl/clds-bpmn-transformer.xsl
@@ -34,19 +34,7 @@
 	<!-- by default copy all attributes and elements -->
 	<xsl:template match="/bpmn2:definitions/bpmn2:process">
 
-                <xsl:text>{"collector":[</xsl:text>
-                <xsl:for-each select="bpmn2:collector" >
-		        <xsl:call-template name="network-element" />
-                </xsl:for-each>
-                <xsl:text>],</xsl:text>
-
-                <xsl:text>"stringMatch":[</xsl:text>
-                <xsl:for-each select="bpmn2:stringMatch" >
-		        <xsl:call-template name="network-element" />
-                </xsl:for-each>
-                <xsl:text>],</xsl:text>
-
-                <xsl:text>"policy":[</xsl:text>
+                <xsl:text>{"policy":[</xsl:text>
                 <xsl:for-each select="bpmn2:policy" >
 		        <xsl:call-template name="network-element" />
                 </xsl:for-each>
@@ -63,7 +51,7 @@
 		        <xsl:call-template name="network-element" />
                 </xsl:for-each>
                 <xsl:text>],</xsl:text>
-                
+
                 <xsl:text>"vesCollector":[</xsl:text>
                 <xsl:for-each select="bpmn2:vesCollector" >
 		        <xsl:call-template name="network-element" />
diff --git a/src/test/java/org/onap/clamp/clds/AbstractIT.java b/src/test/java/org/onap/clamp/clds/AbstractItCase.java
similarity index 97%
rename from src/test/java/org/onap/clamp/clds/AbstractIT.java
rename to src/test/java/org/onap/clamp/clds/AbstractItCase.java
index b705e38..9be8a13 100644
--- a/src/test/java/org/onap/clamp/clds/AbstractIT.java
+++ b/src/test/java/org/onap/clamp/clds/AbstractItCase.java
@@ -30,7 +30,7 @@
 import org.springframework.test.context.ActiveProfiles;
 
 @ActiveProfiles("clamp-default")
-public abstract class AbstractIT {
+public abstract class AbstractItCase {
 
     @Autowired
     protected RefProp      refProp;
diff --git a/src/test/java/org/onap/clamp/clds/client/req/OperationalPolicyReqTest.java b/src/test/java/org/onap/clamp/clds/client/req/OperationalPolicyReqTest.java
index d458443..734b605 100644
--- a/src/test/java/org/onap/clamp/clds/client/req/OperationalPolicyReqTest.java
+++ b/src/test/java/org/onap/clamp/clds/client/req/OperationalPolicyReqTest.java
@@ -31,9 +31,9 @@
 import java.util.List;
 
 import org.junit.Test;
+import org.onap.policy.controlloop.policy.PolicyResult;
 import org.onap.policy.sdc.Resource;
 import org.onap.policy.sdc.ResourceType;
-import org.onap.policy.controlloop.policy.PolicyResult;
 
 public class OperationalPolicyReqTest {
 
@@ -49,7 +49,7 @@
         stringList.add("test2");
         stringList.add("test3");
         stringList.add("test4");
-        Resource resources[] = (Resource[]) method.invoke(null, stringList, ResourceType.VF);
+        Resource[] resources = (Resource[]) method.invoke(null, stringList, ResourceType.VF);
 
         assertTrue(resources.length == 4);
         assertTrue("test1".equals(resources[0].getResourceName()));
@@ -69,7 +69,7 @@
         stringList.add("SUCCESS");
         stringList.add("FAILURE_GUARD");
         stringList.add("FAILURE_TIMEOUT");
-        PolicyResult policyResult[] = (PolicyResult[]) method.invoke(null, stringList);
+        PolicyResult[] policyResult = (PolicyResult[]) method.invoke(null, stringList);
 
         assertTrue(policyResult.length == 4);
         assertTrue(policyResult[0].equals(PolicyResult.FAILURE));
diff --git a/src/test/java/org/onap/clamp/clds/client/req/SdcReqTest.java b/src/test/java/org/onap/clamp/clds/client/req/SdcReqTest.java
index a283f43..497abe0 100644
--- a/src/test/java/org/onap/clamp/clds/client/req/SdcReqTest.java
+++ b/src/test/java/org/onap/clamp/clds/client/req/SdcReqTest.java
@@ -41,7 +41,7 @@
 public class SdcReqTest {
 
     String baseUrl              = "AYBABTU";
-    String serviceInvariantUUID = "serviceInvariantUUID";
+    String serviceInvariantUuid = "serviceInvariantUUID";
 
     @Test
     public void getSdcReqUrlsListNoGlobalPropTest() {
@@ -52,7 +52,7 @@
         List<CldsSdcResource> cldsSdcResources = new ArrayList<>();
         cldsSdcResources.add(cldsSdcResource);
         List<String> resourceVf = new ArrayList<>();
-        resourceVf.add(serviceInvariantUUID);
+        resourceVf.add(serviceInvariantUuid);
 
         Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
 
@@ -60,7 +60,7 @@
         when(prop.getGlobal()).thenReturn(global);
         Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
 
-        when(global.getService()).thenReturn(serviceInvariantUUID);
+        when(global.getService()).thenReturn(serviceInvariantUuid);
         Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
 
         CldsSdcServiceDetail cldsSdcServiceDetail = mock(CldsSdcServiceDetail.class);
@@ -75,7 +75,7 @@
         Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
 
         when(global.getResourceVf()).thenReturn(resourceVf);
-        when(cldsSdcResource.getResourceInvariantUUID()).thenReturn(serviceInvariantUUID);
+        when(cldsSdcResource.getResourceInvariantUUID()).thenReturn(serviceInvariantUuid);
         when(cldsSdcResource.getResourceInstanceName()).thenReturn("Resource instance name");
         List<String> expected = new ArrayList<>();
         expected.add("AYBABTU/null/resourceInstances/resourceinstancename/artifacts");
diff --git a/src/test/java/org/onap/clamp/clds/it/CldsDaoIT.java b/src/test/java/org/onap/clamp/clds/it/CldsDaoItCase.java
similarity index 95%
rename from src/test/java/org/onap/clamp/clds/it/CldsDaoIT.java
rename to src/test/java/org/onap/clamp/clds/it/CldsDaoItCase.java
index bd41964..1427c32 100644
--- a/src/test/java/org/onap/clamp/clds/it/CldsDaoIT.java
+++ b/src/test/java/org/onap/clamp/clds/it/CldsDaoItCase.java
@@ -32,7 +32,7 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.dao.CldsDao;
 import org.onap.clamp.clds.model.CldsEvent;
 import org.onap.clamp.clds.model.CldsModel;
@@ -50,7 +50,7 @@
 @RunWith(SpringRunner.class)
 @SpringBootTest
 @TestPropertySource(locations = "classpath:application-no-camunda.properties")
-public class CldsDaoIT extends AbstractIT {
+public class CldsDaoItCase extends AbstractItCase {
 
     @Autowired
     public CldsDao cldsDao;
@@ -59,6 +59,12 @@
     private String imageText;
     private String bpmnPropText;
 
+    /**
+     * Setup the variable before the tests execution.
+     * 
+     * @throws IOException
+     *             In case of issues when opening the files
+     */
     @Before
     public void setupBefore() throws IOException {
         bpmnText = ResourceFileUtil.getResourceAsString("example/dao/bpmn-template.xml");
diff --git a/src/test/java/org/onap/clamp/clds/it/CldsServiceIT.java b/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java
similarity index 94%
rename from src/test/java/org/onap/clamp/clds/it/CldsServiceIT.java
rename to src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java
index f09c357..a1882ea 100644
--- a/src/test/java/org/onap/clamp/clds/it/CldsServiceIT.java
+++ b/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java
@@ -36,7 +36,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mockito;
-import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.model.CldsInfo;
 import org.onap.clamp.clds.service.CldsService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -51,7 +51,7 @@
 @RunWith(SpringJUnit4ClassRunner.class)
 @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
 @TestPropertySource(locations = "classpath:application-no-camunda.properties")
-public class CldsServiceIT extends AbstractIT {
+public class CldsServiceItCase extends AbstractItCase {
 
     @Autowired
     CldsService cldsService;
@@ -59,10 +59,10 @@
     @Test
     public void testCldsInfoNotAuthorized() throws Exception {
         SecurityContext securityContext = Mockito.mock(SecurityContext.class);
-        Principal p = Mockito.mock(Principal.class);
-        Mockito.when(p.getName()).thenReturn("admin");
+        Principal principal = Mockito.mock(Principal.class);
+        Mockito.when(principal.getName()).thenReturn("admin");
 
-        Mockito.when(securityContext.getUserPrincipal()).thenReturn(p);
+        Mockito.when(securityContext.getUserPrincipal()).thenReturn(principal);
         cldsService.setSecurityContext(securityContext);
 
         CldsInfo cldsInfo = cldsService.getCldsInfo();
diff --git a/src/test/java/org/onap/clamp/clds/it/HttpsIT.java b/src/test/java/org/onap/clamp/clds/it/HttpsItCase.java
similarity index 96%
rename from src/test/java/org/onap/clamp/clds/it/HttpsIT.java
rename to src/test/java/org/onap/clamp/clds/it/HttpsItCase.java
index 98319b4..9befc40 100644
--- a/src/test/java/org/onap/clamp/clds/it/HttpsIT.java
+++ b/src/test/java/org/onap/clamp/clds/it/HttpsItCase.java
@@ -38,7 +38,7 @@
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.AbstractItCase;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
@@ -55,7 +55,7 @@
 @RunWith(SpringRunner.class)
 @SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT)
 @TestPropertySource(locations = "classpath:https/https-test.properties")
-public class HttpsIT extends AbstractIT {
+public class HttpsItCase extends AbstractItCase {
 
     @Value("${server.port}")
     private String httpsPort;
@@ -63,6 +63,9 @@
     @Value("${server.http-to-https-redirection.port}")
     private String httpPort;
 
+    /**
+     * Setup the variable before tests execution.
+     */
     @BeforeClass
     public static void setUp() {
 
diff --git a/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqIT.java b/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java
similarity index 97%
rename from src/test/java/org/onap/clamp/clds/it/OperationPolicyReqIT.java
rename to src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java
index 0f874e9..c7084b6 100644
--- a/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqIT.java
+++ b/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java
@@ -35,7 +35,7 @@
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.client.req.OperationalPolicyReq;
 import org.onap.clamp.clds.model.CldsEvent;
 import org.onap.clamp.clds.model.prop.ModelProperties;
@@ -51,7 +51,7 @@
 @RunWith(SpringRunner.class)
 @SpringBootTest
 @TestPropertySource(locations = "classpath:application-no-camunda.properties")
-public class OperationPolicyReqIT extends AbstractIT {
+public class OperationPolicyReqItCase extends AbstractItCase {
 
     @Test
     public void formatAttributesTest() throws IOException, BuilderException {
diff --git a/src/test/java/org/onap/clamp/clds/it/PolicyClientIT.java b/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java
similarity index 65%
rename from src/test/java/org/onap/clamp/clds/it/PolicyClientIT.java
rename to src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java
index c57ddbf..0c35894 100644
--- a/src/test/java/org/onap/clamp/clds/it/PolicyClientIT.java
+++ b/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java
@@ -33,19 +33,16 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.client.req.OperationalPolicyReq;
-import org.onap.clamp.clds.client.req.StringMatchPolicyReq;
-import org.onap.clamp.clds.client.req.TcaMPolicyReq;
+import org.onap.clamp.clds.client.req.TcaRequestFormatter;
 import org.onap.clamp.clds.model.CldsEvent;
 import org.onap.clamp.clds.model.prop.ModelProperties;
 import org.onap.clamp.clds.model.prop.Policy;
 import org.onap.clamp.clds.model.prop.PolicyChain;
-import org.onap.clamp.clds.model.prop.StringMatch;
 import org.onap.clamp.clds.model.prop.Tca;
 import org.onap.clamp.clds.util.ResourceFileUtil;
 import org.onap.policy.api.AttributeType;
-import org.skyscreamer.jsonassert.JSONAssert;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.TestPropertySource;
 import org.springframework.test.context.junit4.SpringRunner;
@@ -57,7 +54,7 @@
 @RunWith(SpringRunner.class)
 @SpringBootTest
 @TestPropertySource(locations = "classpath:application-no-camunda.properties")
-public class PolicyClientIT extends AbstractIT {
+public class PolicyClientItCase extends AbstractItCase {
     String modelProp;
     String modelBpmnProp;
     String modelName;
@@ -74,24 +71,6 @@
         controlName = "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf";
     }
 
-    private void createUpdateStringMatch(String actionCd) throws Exception {
-        ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp);
-        StringMatch stringMatch = prop.getType(StringMatch.class);
-        if (stringMatch.isFound()) {
-            String stringMatchPolicyRequestUuid = UUID.randomUUID().toString();
-
-            String policyJson = StringMatchPolicyReq.format(refProp, prop);
-            String correctValue = ResourceFileUtil.getResourceAsString("expected/stringmatch.json");
-            JSONAssert.assertEquals(policyJson, correctValue, true);
-            String responseMessage = "";
-            try {
-                responseMessage = policyClient.sendMicroServiceInJson(policyJson, prop, stringMatchPolicyRequestUuid);
-            } catch (Exception e) {
-                assertTrue(e.getMessage().contains("Policy send failed: PE500 "));
-            }
-        }
-    }
-
     private void createUpdateOperationalPolicy(String actionCd) throws Exception {
         ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp);
         Policy policy = prop.getType(Policy.class);
@@ -101,7 +80,7 @@
 
                 Map<AttributeType, Map<String, String>> attributes = OperationalPolicyReq.formatAttributes(refProp,
                         prop, policy.getId(), policyChain);
-                String responseMessage = policyClient.sendBrmsPolicy(attributes, prop, operationalPolicyRequestUuid);
+                policyClient.sendBrmsPolicy(attributes, prop, operationalPolicyRequestUuid);
             }
         }
     }
@@ -111,33 +90,16 @@
         Tca tca = prop.getType(Tca.class);
         if (tca.isFound()) {
             String tcaPolicyRequestUuid = UUID.randomUUID().toString();
-            String policyJson = TcaMPolicyReq.formatTca(refProp, prop);
-            String correctValue = ResourceFileUtil.getResourceAsString("expected/tca.json");
-            JSONAssert.assertEquals(policyJson, correctValue, true);
-            String responseMessage = "";
+            String policyJson = TcaRequestFormatter.createPolicyJson(refProp, prop);
+
             try {
-                responseMessage = policyClient.sendMicroServiceInJson(policyJson, prop, tcaPolicyRequestUuid);
+                policyClient.sendMicroServiceInJson(policyJson, prop, tcaPolicyRequestUuid);
             } catch (Exception e) {
                 assertTrue(e.getMessage().contains("Exception while communicating with Policy"));
             }
         }
     }
 
-    private void deleteStringMatchPolicy(String actionCd) throws Exception {
-        ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp);
-
-        StringMatch stringMatch = prop.getType(StringMatch.class);
-        if (stringMatch.isFound()) {
-            prop.setCurrentModelElementId(stringMatch.getId());
-            String responseMessage = "";
-            try {
-                responseMessage = policyClient.deleteMicrosService(prop);
-            } catch (Exception e) {
-                assertTrue(e.getMessage().contains("Policy delete failed: PE500 "));
-            }
-        }
-    }
-
     private void deleteOperationalPolicy(String actionCd) throws Exception {
         ModelProperties prop = new ModelProperties(modelName, controlName, actionCd, false, modelBpmnProp, modelProp);
 
@@ -146,7 +108,7 @@
             prop.setCurrentModelElementId(policy.getId());
             for (PolicyChain policyChain : policy.getPolicyChains()) {
                 prop.setPolicyUniqueId(policyChain.getPolicyId());
-                String responseMessage = policyClient.deleteBrms(prop);
+                policyClient.deleteBrms(prop);
             }
         }
     }
@@ -157,9 +119,9 @@
         Tca tca = prop.getType(Tca.class);
         if (tca.isFound()) {
             prop.setCurrentModelElementId(tca.getId());
-            String responseMessage = "";
+
             try {
-                responseMessage = policyClient.deleteMicrosService(prop);
+                policyClient.deleteMicrosService(prop);
             } catch (Exception e) {
                 assertTrue(e.getMessage().contains("Policy delete failed: PE500 "));
             }
@@ -170,19 +132,6 @@
     /**
      * Temporarily disabled Test.
      */
-    public void testCreateUpdateDeleteStringMatchPolicy() throws Exception {
-
-        createUpdateStringMatch(CldsEvent.ACTION_SUBMIT);
-
-        TimeUnit.SECONDS.sleep(20);
-
-        deleteStringMatchPolicy(CldsEvent.ACTION_DELETE);
-    }
-
-    // @Test
-    /**
-     * Temporarily disabled Test.
-     */
     public void testCreateUpdateDeleteOperationalPolicy() throws Exception {
 
         createUpdateOperationalPolicy(CldsEvent.ACTION_SUBMIT);
diff --git a/src/test/java/org/onap/clamp/clds/it/PropJsonBuilderIT.java b/src/test/java/org/onap/clamp/clds/it/PropJsonBuilderIT.java
deleted file mode 100644
index cd626dd..0000000
--- a/src/test/java/org/onap/clamp/clds/it/PropJsonBuilderIT.java
+++ /dev/null
@@ -1,378 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * 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============================================
- * ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- */
-
-package org.onap.clamp.clds.it;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-import java.io.IOException;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractIT;
-import org.onap.clamp.clds.client.req.SdcReq;
-import org.onap.clamp.clds.model.CldsSdcServiceDetail;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit4.SpringRunner;
-
-/**
- * Test SDC API - stand alone (except for some config). Replicates
- * getSdcServices and getSdcServicesByUUID in the CldsService Adds test of
- * putting putting an artifact to VF. TODO Also needs update and perhaps delete
- * tests.
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
-@TestPropertySource(locations = "classpath:application-no-camunda.properties")
-public class PropJsonBuilderIT extends AbstractIT {
-
-    private String       globalPropsPartial;
-    private ObjectMapper mapper;
-
-    /**
-     * Initial test setup.
-     */
-    @Before
-    public void setUp() throws IOException {
-        String url = refProp.getStringValue("sdc.serviceUrl");
-        String basicAuth = SdcReq.getSdcBasicAuth(refProp);
-        System.out.println("value of string and basicAuth:" + url + basicAuth);
-        // cldsservicedetail.set
-        globalPropsPartial = refProp.getStringValue("globalPropsPartialTest");
-        mapper = new ObjectMapper();
-    }
-
-    /**
-     * List services from SDC. List meta data for a particular service from SDC.
-     * Test uploading artifact to a VF in SDC.
-     */
-    @Test
-    public void testSdc() throws Exception {
-        // String createEmptySharedObject = createEmptySharedObject();
-        // System.out.println("value of emptySharedObject:" +
-        // createEmptySharedObject);
-        sampleJsonObject();
-        System.out.println(createTestEmptySharedObject());
-    }
-
-    private void sampleJsonObject() throws JsonProcessingException {
-
-        /**
-         * Create three JSON Objects objectNode1, objectNode2, objectNode3. Add
-         * all these three objects in the array
-         */
-        ObjectNode objectNode1 = mapper.createObjectNode();
-        objectNode1.put("bookName", "Java");
-        objectNode1.put("price", "100");
-
-        ObjectNode objectNode2 = mapper.createObjectNode();
-        objectNode2.put("bookName", "Spring");
-        objectNode2.put("price", "200");
-
-        ObjectNode objectNode3 = mapper.createObjectNode();
-        objectNode3.put("bookName", "Liferay");
-        objectNode3.put("price", "500");
-
-        /**
-         * Array contains JSON Objects.
-         */
-        ArrayNode arrayNode = mapper.createArrayNode();
-        arrayNode.add(objectNode1);
-        arrayNode.add(objectNode2);
-        arrayNode.add(objectNode3);
-
-        /**
-         * We can directly write the JSON in the console. But it wont be pretty
-         * JSON String
-         */
-        System.out.println(arrayNode.toString());
-
-        /**
-         * To make the JSON String pretty use the below code.
-         */
-        System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(arrayNode));
-    }
-
-    private String createEmptySharedObject() throws JsonProcessingException {
-
-        /**
-         * Empty Object initialization. "": { "vf": { "": "" }, "location": {
-         * "": "" }, "alarmCondition": { "": "" } }
-         */
-        ObjectNode emptyObjectNode = mapper.createObjectNode();
-        emptyObjectNode.put("", "");
-        ObjectNode vfObjectNode = mapper.createObjectNode();
-        vfObjectNode.putPOJO("vf", emptyObjectNode);
-        ObjectNode locationObjectNode = mapper.createObjectNode();
-        locationObjectNode.putPOJO("location", emptyObjectNode);
-        ObjectNode alarmConditionObjectNode = mapper.createObjectNode();
-        alarmConditionObjectNode.putPOJO("alarmCondition", emptyObjectNode);
-        ArrayNode samArrayNode = mapper.createArrayNode();
-        samArrayNode.add(vfObjectNode);
-        samArrayNode.add(locationObjectNode);
-        samArrayNode.add(alarmConditionObjectNode);
-        ObjectNode emptyServiceObjectNode = mapper.createObjectNode();
-        emptyServiceObjectNode.putPOJO("", samArrayNode);
-
-        /**
-         * Object initialization. "vf": { " ": " ", "DCAE_CLAMP_DEMO3 1":
-         * "DCAE_CLAMP_DEMO3" }
-         *
-         */
-        ObjectNode dcaeClampDemo3Node = mapper.createObjectNode();
-        dcaeClampDemo3Node.put("DCAE_CLAMP_DEMO3", "DCAE_CLAMP_DEMO3");
-        ArrayNode vfArrayNode = mapper.createArrayNode();
-        vfArrayNode.add(emptyObjectNode);
-        vfArrayNode.add(dcaeClampDemo3Node);
-        ObjectNode vfObjectNode2 = mapper.createObjectNode();
-        vfObjectNode2.putPOJO("vf", vfArrayNode);
-
-        /**
-         * Object initialization. "location": { "SNDGCA64": "San Diego SAN3",
-         * "ALPRGAED": "Alpharetta PDK1", "LSLEILAA": "Lisle DPA3" },
-         */
-        ObjectNode sandiegoLocationNode = mapper.createObjectNode();
-        sandiegoLocationNode.put("SNDGCA64", "San Diego SAN3");
-        ObjectNode alpharettaNode = mapper.createObjectNode();
-        alpharettaNode.put("ALPRGAED", "Alpharetta PDK1");
-        ArrayNode locationArrayNode = mapper.createArrayNode();
-        locationArrayNode.add(emptyObjectNode);
-        locationArrayNode.add(sandiegoLocationNode);
-        locationArrayNode.add(alpharettaNode);
-        ObjectNode locationObjectNode2 = mapper.createObjectNode();
-        locationObjectNode2.putPOJO("location", locationArrayNode);
-
-        /**
-         * Object initialization. "alarmCondition": {
-         * "A+Fallback+Operation+will+soon+be+started": "A Fallback Operation
-         * will soon be started", "BRM%2C+Auto+Export+Backup+Failed": "BRM, Auto
-         * Export Backup Failed",
-         */
-        ObjectNode alamrCondition1 = mapper.createObjectNode();
-        alamrCondition1.put("A+Fallback+Operation+will+soon+be+started", "A Fallback Operation will soon be started");
-        ObjectNode alarmConditon2 = mapper.createObjectNode();
-        alarmConditon2.put("BRM%2C+Scheduled+Backup+Failed", "BRM, Scheduled Backup Failed");
-        ArrayNode alarmArrayNode = mapper.createArrayNode();
-        alarmArrayNode.add(emptyObjectNode);
-        alarmArrayNode.add(alamrCondition1);
-        alarmArrayNode.add(alarmConditon2);
-        ObjectNode alarmConditionObjectNode2 = mapper.createObjectNode();
-        alarmConditionObjectNode2.putPOJO("alarmCondition", alarmArrayNode);
-
-        ArrayNode byServiceIdArrayNode = mapper.createArrayNode();
-        byServiceIdArrayNode.add(vfObjectNode2);
-        byServiceIdArrayNode.add(locationObjectNode2);
-        byServiceIdArrayNode.add(alarmConditionObjectNode2);
-
-        ObjectNode byServiceIdNode = mapper.createObjectNode();
-        byServiceIdNode.putPOJO("c989a551-69f7-4b30-b10a-2e85bb227c30", byServiceIdArrayNode);
-
-        ArrayNode byServiceBasicArrayNode = mapper.createArrayNode();
-        byServiceBasicArrayNode.add(emptyServiceObjectNode);
-        byServiceBasicArrayNode.add(byServiceIdNode);
-
-        ObjectNode byServiceBasicObjetNode = mapper.createObjectNode();
-
-        byServiceBasicObjetNode.putPOJO("byService", byServiceBasicArrayNode);
-
-        /**
-         * Object initialization. "byVf": { "": { "vfc": { "": "" },
-         * "03596c12-c7e3-44b7-8994-5cdfeda8afdd": { "vfc": { " ": " " } } } }
-         */
-        ObjectNode vfCObjectNode = mapper.createObjectNode();
-        vfCObjectNode.putPOJO("vfC", emptyObjectNode);
-        ObjectNode vfcIdObjectNode = mapper.createObjectNode();
-        vfcIdObjectNode.putPOJO("03596c12-c7e3-44b7-8994-5cdfeda8afdd", vfCObjectNode);
-        ArrayNode emptyvfcArrayNode = mapper.createArrayNode();
-        emptyvfcArrayNode.add(vfCObjectNode);
-        emptyvfcArrayNode.add(vfcIdObjectNode);
-        ObjectNode emptyvfcobjectNode = mapper.createObjectNode();
-        emptyvfcobjectNode.putPOJO("", emptyvfcArrayNode);
-
-        ObjectNode byVfCBasicNode = mapper.createObjectNode();
-        byVfCBasicNode.putPOJO("byVf", emptyvfcobjectNode);
-
-        ArrayNode finalSharedArrayObject = mapper.createArrayNode();
-
-        finalSharedArrayObject.add(byServiceBasicObjetNode);
-        finalSharedArrayObject.add(byVfCBasicNode);
-
-        ObjectNode finalSharedObjectNode = mapper.createObjectNode();
-        finalSharedObjectNode.putPOJO("shared", finalSharedArrayObject);
-
-        System.out.println("value :" + finalSharedObjectNode.toString());
-        String testFinal = finalSharedObjectNode.toString();
-        testFinal = testFinal.replaceFirst("\\{", ",");
-        return globalPropsPartial + testFinal;
-    }
-
-    private String createTestEmptySharedObject() throws IOException {
-
-        /**
-         * Object initialization. "": { "vf": { "": "" }, "location": { "": ""
-         * }, "alarmCondition": { "": "" } }
-         */
-        ObjectNode emptyObjectNode = mapper.createObjectNode();
-        emptyObjectNode.put("", "");
-        ObjectNode vfObjectNode = mapper.createObjectNode();
-        vfObjectNode.putPOJO("vf", emptyObjectNode);
-        vfObjectNode.putPOJO("location", emptyObjectNode);
-        vfObjectNode.putPOJO("alarmCondition", emptyObjectNode);
-        ObjectNode emptyServiceObjectNode = mapper.createObjectNode();
-        emptyServiceObjectNode.putPOJO("", vfObjectNode);
-
-        /**
-         * Object initialization. "vf": { " ": " ", "DCAE_CLAMP_DEMO3 1":
-         * "DCAE_CLAMP_DEMO3" }
-         *
-         */
-        ObjectNode vfObjectNode2 = mapper.createObjectNode();
-        ObjectNode dcaeClampDemo3Node = mapper.createObjectNode();
-        dcaeClampDemo3Node.put("", "");
-        dcaeClampDemo3Node.put("DCAE_CLAMP_DEMO3", "DCAE_CLAMP_DEMO3");
-        vfObjectNode2.putPOJO("vf", dcaeClampDemo3Node);
-
-        /**
-         * Object initialization. "location": { "SNDGCA64": "San Diego SAN3",
-         * "ALPRGAED": "Alpharetta PDK1", "LSLEILAA": "Lisle DPA3" },
-         */
-        // ObjectNode sandiegoLocationNode = mapper.createObjectNode();
-        // sandiegoLocationNode.put("SNDGCA64","San Diego SAN3");
-        // sandiegoLocationNode.put("ALPRGAED","Alpharetta PDK1");
-        String locationStringValue = refProp.getStringValue("ui.location.default");
-        ObjectNode locationJsonNode = (ObjectNode) mapper.readValue(locationStringValue, JsonNode.class);
-        vfObjectNode2.putPOJO("location", locationJsonNode);
-
-        /**
-         * Object initialization. "alarmCondition": {
-         * "A+Fallback+Operation+will+soon+be+started": "A Fallback Operation
-         * will soon be started", "BRM%2C+Auto+Export+Backup+Failed": "BRM, Auto
-         * Export Backup Failed",
-         */
-        // ObjectNode alamrCondition1 = mapper.createObjectNode();
-        // alamrCondition1.put("A+Fallback+Operation+will+soon+be+started","A
-        // Fallback Operation will soon be started");
-        // alamrCondition1.put("BRM%2C+Scheduled+Backup+Failed","BRM, Scheduled
-        // Backup Failed");
-        String alarmStringValue = refProp.getStringValue("ui.alarm.default");
-        ObjectNode alarmStringJsonNode = (ObjectNode) mapper.readValue(alarmStringValue, JsonNode.class);
-        vfObjectNode2.putPOJO("alarmCondition", alarmStringJsonNode);
-        emptyServiceObjectNode.putPOJO("c989a551-69f7-4b30-b10a-2e85bb227c30", vfObjectNode2);
-        ObjectNode byServiceBasicObjetNode = mapper.createObjectNode();
-        byServiceBasicObjetNode.putPOJO("byService", emptyServiceObjectNode);
-
-        /**
-         * Object initialization. "byVf": { "": { "vfc": { "": "" },
-         * "03596c12-c7e3-44b7-8994-5cdfeda8afdd": { "vfc": { " ": " " } } } }
-         */
-        ObjectNode vfCObjectNode = mapper.createObjectNode();
-        vfCObjectNode.putPOJO("vfC", emptyObjectNode);
-        ObjectNode subVfCObjectNode = mapper.createObjectNode();
-        subVfCObjectNode.putPOJO("vfc", emptyObjectNode);
-        vfCObjectNode.putPOJO("03596c12-c7e3-44b7-8994-5cdfeda8afdd", subVfCObjectNode);
-        ObjectNode emptyvfcobjectNode = mapper.createObjectNode();
-        emptyvfcobjectNode.putPOJO("", vfCObjectNode);
-        byServiceBasicObjetNode.putPOJO("byVf", emptyvfcobjectNode);
-
-        ObjectNode readTree = (ObjectNode) mapper.readValue(globalPropsPartial, JsonNode.class);
-        readTree.putPOJO("shared", byServiceBasicObjetNode);
-        System.out.println("valuie of objNode:" + readTree);
-        return readTree.toString();
-    }
-
-    private String createCldsSharedObject(CldsSdcServiceDetail CldsSdcServiceDetail) throws IOException {
-        /**
-         * Object initialization. "": { "vf": { "": "" }, "location": { "": ""
-         * }, "alarmCondition": { "": "" } }
-         */
-        ObjectNode emptyObjectNode = mapper.createObjectNode();
-        emptyObjectNode.put("", "");
-        ObjectNode vfObjectNode = mapper.createObjectNode();
-        vfObjectNode.putPOJO("vf", emptyObjectNode);
-        vfObjectNode.putPOJO("location", emptyObjectNode);
-        vfObjectNode.putPOJO("alarmCondition", emptyObjectNode);
-        ObjectNode emptyServiceObjectNode = mapper.createObjectNode();
-        emptyServiceObjectNode.putPOJO("", vfObjectNode);
-
-        /**
-         * Object initialization. "vf": { " ": " ", "DCAE_CLAMP_DEMO3 1":
-         * "DCAE_CLAMP_DEMO3" }
-         *
-         */
-        ObjectNode vfObjectNode2 = mapper.createObjectNode();
-        ObjectNode dcaeClampDemo3Node = mapper.createObjectNode();
-        dcaeClampDemo3Node.put("", "");
-        dcaeClampDemo3Node.put("DCAE_CLAMP_DEMO3", "DCAE_CLAMP_DEMO3");
-        vfObjectNode2.putPOJO("vf", dcaeClampDemo3Node);
-
-        /**
-         * Object initialization. "location": { "SNDGCA64": "San Diego SAN3",
-         * "ALPRGAED": "Alpharetta PDK1", "LSLEILAA": "Lisle DPA3" },
-         */
-        ObjectNode sandiegoLocationNode = mapper.createObjectNode();
-        sandiegoLocationNode.put("SNDGCA64", "San Diego SAN3");
-        sandiegoLocationNode.put("ALPRGAED", "Alpharetta PDK1");
-        vfObjectNode2.putPOJO("location", sandiegoLocationNode);
-
-        /**
-         * Object initialization. "alarmCondition": {
-         * "A+Fallback+Operation+will+soon+be+started": "A Fallback Operation
-         * will soon be started", "BRM%2C+Auto+Export+Backup+Failed": "BRM, Auto
-         * Export Backup Failed",
-         */
-        ObjectNode alamrCondition1 = mapper.createObjectNode();
-        alamrCondition1.put("A+Fallback+Operation+will+soon+be+started", "A Fallback Operation will soon be started");
-        alamrCondition1.put("BRM%2C+Scheduled+Backup+Failed", "BRM, Scheduled Backup Failed");
-        vfObjectNode2.putPOJO("alarmCondition", alamrCondition1);
-        emptyServiceObjectNode.putPOJO("c989a551-69f7-4b30-b10a-2e85bb227c30", vfObjectNode2);
-        ObjectNode byServiceBasicObjetNode = mapper.createObjectNode();
-        byServiceBasicObjetNode.putPOJO("byService", emptyServiceObjectNode);
-
-        /**
-         * Object initialization. "byVf": { "": { "vfc": { "": "" },
-         * "03596c12-c7e3-44b7-8994-5cdfeda8afdd": { "vfc": { " ": " " } } } }
-         */
-
-        ObjectNode vfCObjectNode = mapper.createObjectNode();
-        vfCObjectNode.putPOJO("vfC", emptyObjectNode);
-        ObjectNode subVfCObjectNode = mapper.createObjectNode();
-        subVfCObjectNode.putPOJO("vfc", emptyObjectNode);
-        vfCObjectNode.putPOJO("03596c12-c7e3-44b7-8994-5cdfeda8afdd", subVfCObjectNode);
-        ObjectNode emptyvfcobjectNode = mapper.createObjectNode();
-        emptyvfcobjectNode.putPOJO("", vfCObjectNode);
-        byServiceBasicObjetNode.putPOJO("byVf", emptyvfcobjectNode);
-
-        ObjectNode readTree = (ObjectNode) mapper.readValue(globalPropsPartial, JsonNode.class);
-
-        readTree.putPOJO("shared", byServiceBasicObjetNode);
-        System.out.println("valuie of objNode:" + readTree);
-        return readTree.toString();
-    }
-}
diff --git a/src/test/java/org/onap/clamp/clds/it/RefPropIT.java b/src/test/java/org/onap/clamp/clds/it/RefPropItCase.java
similarity index 95%
rename from src/test/java/org/onap/clamp/clds/it/RefPropIT.java
rename to src/test/java/org/onap/clamp/clds/it/RefPropItCase.java
index 473ce4a..478a7b3 100644
--- a/src/test/java/org/onap/clamp/clds/it/RefPropIT.java
+++ b/src/test/java/org/onap/clamp/clds/it/RefPropItCase.java
@@ -30,7 +30,7 @@
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.AbstractItCase;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.TestPropertySource;
 import org.springframework.test.context.junit4.SpringRunner;
@@ -41,7 +41,7 @@
 @RunWith(SpringRunner.class)
 @SpringBootTest
 @TestPropertySource(locations = "classpath:application-no-camunda.properties")
-public class RefPropIT extends AbstractIT {
+public class RefPropItCase extends AbstractItCase {
 
     /**
      * Test getting prop value as a JSON Node / template.
@@ -51,7 +51,7 @@
      */
     @Test
     public void testJsonTemplate() throws IOException {
-        ObjectNode root = (ObjectNode) refProp.getJsonTemplate("sm.template");
+        ObjectNode root = (ObjectNode) refProp.getJsonTemplate("tca.template");
         root.put("closedLoopControlName", "ClosedLoop-FRWL-SIG-1582f840-2881-11e6-b4ec-005056a9d756");
 
         ObjectMapper mapper = new ObjectMapper();
diff --git a/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesIT.java b/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.java
similarity index 82%
rename from src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesIT.java
rename to src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.java
index dce6c90..0deae6d 100644
--- a/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesIT.java
+++ b/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.java
@@ -32,7 +32,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mockito;
-import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.AbstractItCase;
 import org.onap.clamp.clds.client.SdcCatalogServices;
 import org.onap.clamp.clds.model.CldsAlarmCondition;
 import org.onap.clamp.clds.model.CldsSdcResource;
@@ -50,7 +50,7 @@
 @RunWith(SpringRunner.class)
 @SpringBootTest
 @TestPropertySource(locations = "classpath:application-no-camunda.properties")
-public class SdcCatalogServicesIT extends AbstractIT {
+public class SdcCatalogServicesItCase extends AbstractItCase {
     @Autowired
     private SdcCatalogServices sdcCatalogWired = new SdcCatalogServices();
 
@@ -205,8 +205,8 @@
         SdcCatalogServices spy = Mockito.spy(sdcCatalogWired);
 
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8"))
-                .when(spy).getSdcServicesInformation(null);
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"),
+                "UTF-8")).when(spy).getSdcServicesInformation(null);
         // Try the vcts4 version 1.0, this one should be replaced by 1.1 so it
         // should not exist, returning empty string
         String resUuidVcts4Null = spy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d9b");
@@ -232,82 +232,82 @@
         SdcCatalogServices spy = Mockito.spy(sdcCatalogWired);
 
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8"))
-                .when(spy).getSdcServicesInformation(null);
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"),
+                "UTF-8")).when(spy).getSdcServicesInformation(null);
 
         // This invariant uuid is the one from vcts4 v1.1
         String serviceResourceDetailUrl = refProp.getStringValue("sdc.serviceUrl")
                 + "/29018914-966c-442d-9d08-251b9dc45b8f/metadata";
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServiceDetailsExample.json"), "UTF-8"))
-                .when(spy).getCldsServicesOrResourcesBasedOnURL(serviceResourceDetailUrl, false);
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcServiceDetailsExample.json"),
+                "UTF-8")).when(spy).getCldsServicesOrResourcesBasedOnURL(serviceResourceDetailUrl, false);
 
         String resourceDetailUrl = refProp.getStringValue("sdc.catalog.url")
                 + "resources/585822c7-4027-4f84-ba50-e9248606f136/metadata";
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcResourceDetailsExample.json"), "UTF-8"))
-                .when(spy).getCldsServicesOrResourcesBasedOnURL(resourceDetailUrl, false);
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcResourceDetailsExample.json"),
+                "UTF-8")).when(spy).getCldsServicesOrResourcesBasedOnURL(resourceDetailUrl, false);
 
         String securityRulesDetailUrl = refProp.getStringValue("sdc.catalog.url")
                 + "resources/d57e57d2-e3c6-470d-8d16-e6ea05f536c5/metadata";
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcSecurityRules.json"), "UTF-8"))
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcSecurityRules.json"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(securityRulesDetailUrl, false);
 
         String cinderVolumeDetailUrl = refProp.getStringValue("sdc.catalog.url")
                 + "resources/b4288e07-597a-44a2-aa98-ad36e551a39d/metadata";
-        Mockito.doReturn(IOUtils
-                .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcCinderVolume.json"), "UTF-8"))
+        Mockito.doReturn(IOUtils.toString(
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcCinderVolume.json"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(cinderVolumeDetailUrl, false);
 
         String vfcGenericDetailUrl = refProp.getStringValue("sdc.catalog.url")
                 + "resources/2c8f1219-8000-4001-aa13-496a0396d40f/metadata";
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFCGenericWithAlarms.json"), "UTF-8"))
-                .when(spy).getCldsServicesOrResourcesBasedOnURL(vfcGenericDetailUrl, false);
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcVFCGenericWithAlarms.json"),
+                "UTF-8")).when(spy).getCldsServicesOrResourcesBasedOnURL(vfcGenericDetailUrl, false);
 
         String csvAlarmsDetailUrl = refProp.getStringValue("sdc.catalog.url")
                 + "resources/2c8f1219-8000-4001-aa13-496a0396d40f/resourceInstances/virc_fe_be/artifacts/5138e316-0237-49aa-817a-b3d8eaf77392";
-        Mockito.doReturn(IOUtils
-                .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8"))
+        Mockito.doReturn(IOUtils.toString(
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(csvAlarmsDetailUrl, false);
 
-        Mockito.doReturn(IOUtils
-                .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8"))
+        Mockito.doReturn(IOUtils.toString(
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(csvAlarmsDetailUrl, true);
 
         String csvAlarmsDetailUrl2 = refProp.getStringValue("sdc.catalog.url")
                 + "resources/d7646638-2572-4a94-b497-c028ac15f9ca/artifacts/5138e316-0237-49aa-817a-b3d8eaf77392";
-        Mockito.doReturn(IOUtils
-                .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8"))
+        Mockito.doReturn(IOUtils.toString(
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(csvAlarmsDetailUrl2, true);
 
         String allVfResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources?resourceType=VF";
-        Mockito.doReturn(IOUtils
-                .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFResources.json"), "UTF-8"))
+        Mockito.doReturn(IOUtils.toString(
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcVFResources.json"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(allVfResourcesDetailUrl, false);
 
-        String cVfcResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url")
+        String vfcResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url")
                 + "resources/a0475018-1e7e-4ddd-8bee-33cbf958c2e6/metadata";
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcCVFCResourceExample.json"), "UTF-8"))
-                .when(spy).getCldsServicesOrResourcesBasedOnURL(cVfcResourcesDetailUrl, false);
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcCVFCResourceExample.json"),
+                "UTF-8")).when(spy).getCldsServicesOrResourcesBasedOnURL(vfcResourcesDetailUrl, false);
 
         String allVfcResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources?resourceType=VFC";
-        Mockito.doReturn(IOUtils
-                .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFCResources.json"), "UTF-8"))
+        Mockito.doReturn(IOUtils.toString(
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcVFCResources.json"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(allVfcResourcesDetailUrl, false);
 
         String allVfAlarms = refProp.getStringValue("sdc.catalog.url")
                 + "resources/84855843-5247-4e97-a2bd-5395a510253b/artifacts/d57ac7ec-f3c3-4793-983a-c75ac3a43153";
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcMeasurementsList.csv"), "UTF-8"))
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcMeasurementsList.csv"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(allVfAlarms, true);
 
         String vfcResourceExample = refProp.getStringValue("sdc.catalog.url")
                 + "resources/d7646638-2572-4a94-b497-c028ac15f9ca/metadata";
         Mockito.doReturn(IOUtils.toString(
-                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFCResourceExample.json"), "UTF-8"))
+                SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcVFCResourceExample.json"), "UTF-8"))
                 .when(spy).getCldsServicesOrResourcesBasedOnURL(vfcResourceExample, false);
 
         CldsServiceData cldsServiceData = spy
diff --git a/src/test/java/org/onap/clamp/clds/it/SdcIT.java b/src/test/java/org/onap/clamp/clds/it/SdcIT.java
deleted file mode 100644
index 8883af2..0000000
--- a/src/test/java/org/onap/clamp/clds/it/SdcIT.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * 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============================================
- * ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- */
-
-package org.onap.clamp.clds.it;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import org.onap.clamp.clds.AbstractIT;
-import org.onap.clamp.clds.client.SdcCatalogServices;
-import org.onap.clamp.clds.client.req.SdcReq;
-import org.onap.clamp.clds.model.CldsEvent;
-import org.onap.clamp.clds.model.prop.ModelProperties;
-import org.onap.clamp.clds.model.refprop.RefProp;
-import org.onap.clamp.clds.util.ResourceFileUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit4.SpringRunner;
-
-/**
- * Test SDC Blueprint formater.
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest
-@TestPropertySource(locations = "classpath:application-no-camunda.properties")
-public class SdcIT extends AbstractIT {
-    @Autowired
-    private RefProp refProp;
-
-    @Autowired
-    private SdcCatalogServices sdcCatalogServices;
-
-    @BeforeClass
-    public static void oneTimeSetUp() {
-        System.setProperty("AJSC_CONF_HOME", System.getProperty("user.dir") + "/src/test/resources/");
-    }
-
-    @Test
-    public void testBlueprint() throws Exception {
-        String modelProp = ResourceFileUtil.getResourceAsString("example/modelProp.json");
-        String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/modelBpmnProp.json");
-        String modelName = "example-model06";
-        String controlName = "ClosedLoop-FRWL-SIG04-1582f840-test-test-1234-005056a9d756";
-        String docText = ResourceFileUtil.getResourceAsString("example/templateProp.json");
-        ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT,
-                true, modelBpmnProp, modelProp);
-        String blueprint = SdcReq.formatBlueprint(refProp, prop, docText);
-        System.out.println("blueprint=" + blueprint);
-        //assertEquals(blueprint, "");
-    }
-
-
-    @Test
-    public void testTcaBlueprint() throws Exception {
-        String modelProp = ResourceFileUtil.getResourceAsString("example/modelPropForPolicy.json");
-        String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/modelBpmnPropForPolicy.json");
-        String modelName = "example-model06";
-        String controlName = "ClosedLoop-FRWL-SIG04-1582f840-test-test-1234-005056a9d756";
-        String docText = ResourceFileUtil.getResourceAsString("example/templatePropForTca.json");
-        ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT,
-                true, modelBpmnProp, modelProp);
-        String blueprint = SdcReq.formatBlueprint(refProp, prop, docText);
-        System.out.println("blueprint=" + blueprint);
-        //assertEquals(blueprint, "");
-    }
-}
diff --git a/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java b/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java
new file mode 100644
index 0000000..a32743a
--- /dev/null
+++ b/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java
@@ -0,0 +1,89 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * 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============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.it;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.clamp.clds.AbstractItCase;
+import org.onap.clamp.clds.client.req.TcaRequestFormatter;
+import org.onap.clamp.clds.model.CldsEvent;
+import org.onap.clamp.clds.model.prop.ModelProperties;
+import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.skyscreamer.jsonassert.JSONAssert;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * Test Onap TcaRequestFormatter features.
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@TestPropertySource(locations = "classpath:application-no-camunda.properties")
+public class TcaRequestFormatterItCase extends AbstractItCase {
+
+    String modelProp;
+    String modelBpmn;
+    String modelName;
+    String controlName;
+    String yamlInput;
+
+    /**
+     * Initialize Test.
+     */
+    @Before
+    public void setUp() throws IOException {
+        modelProp = ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmnProperties.json");
+        modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmn.json");
+        yamlInput = ResourceFileUtil.getResourceAsString("example/tca-policy-req/blueprint-input.yaml");
+        modelName = "example-model01";
+        controlName = "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf";
+    }
+
+    @Test
+    public void testCreatePolicyJson() throws IOException {
+        ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, false, modelBpmn,
+                modelProp);
+        String result = TcaRequestFormatter.createPolicyJson(refProp, prop);
+        assertNotNull(result);
+        JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("example/tca-policy-req/tca-policy-expected.json"),
+                result, true);
+    }
+
+    @Test
+    public void testUpdatedBlueprintWithConfiguration() throws IOException {
+        ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, false, modelBpmn,
+                modelProp);
+        String result = TcaRequestFormatter.updatedBlueprintWithConfiguration(refProp, prop, yamlInput);
+
+        assertNotNull(result);
+        assertEquals(ResourceFileUtil.getResourceAsString("example/tca-policy-req/blueprint-expected.yaml"), result);
+    }
+}
diff --git a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
index f87bd37..45f39a4 100644
--- a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
+++ b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
@@ -24,11 +24,10 @@
 package org.onap.clamp.clds.model.prop;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -46,30 +45,15 @@
     }
 
     @Test
-    public void testHolmes() throws IOException {
+    public void testTcaModelDecoding() throws IOException {
 
-        String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/model-properties/modelBpmnProp.json");
-        String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/modelBpmn.json");
+        String modelBpmnProp = ResourceFileUtil
+                .getResourceAsString("example/model-properties/tca/modelBpmnProperties.json");
+        String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmn.json");
 
         ModelProperties prop = new ModelProperties("example-model-name", "example-control-name", null, true, modelBpmn,
                 modelBpmnProp);
 
-        StringMatch stringMatch = prop.getType(StringMatch.class);
-        assertTrue(stringMatch.isFound());
-        assertEquals("1505133578560", stringMatch.getResourceGroups().get(0).getGroupNumber());
-        assertEquals("0", stringMatch.getResourceGroups().get(0).getPolicyId());
-        assertEquals(1, stringMatch.getResourceGroups().get(0).getServiceConfigurations().size());
-        List<String> aaiMathcingFields = new ArrayList<String>();
-        aaiMathcingFields.add("complex.city");
-        assertEquals(aaiMathcingFields,
-                stringMatch.getResourceGroups().get(0).getServiceConfigurations().get(0).getaaiMatchingFields());
-        assertEquals("1600", stringMatch.getResourceGroups().get(0).getServiceConfigurations().get(0).getAgeLimit());
-        assertEquals(1, stringMatch.getResourceGroups().get(0).getServiceConfigurations().get(0).getStringSet().size());
-
-        Collector collector = prop.getType(Collector.class);
-        assertTrue(collector.isFound());
-        assertEquals("DCAE-COLLECTOR-UCSNMP", collector.getTopicPublishes());
-
         Policy policy = prop.getType(Policy.class);
         assertTrue(policy.isFound());
         assertEquals(1, policy.getPolicyChains().size());
@@ -82,11 +66,52 @@
         assertEquals(null, policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicyConditions());
 
         Tca tca = prop.getType(Tca.class);
+        assertNotNull(tca);
         assertTrue(tca.isFound());
-        assertEquals(1, tca.getTcaItems().size());
-        assertEquals(0, tca.getTcaItems().get(0).getTcaThreshholds().size());
+        assertEquals("vFirewallBroadcastPackets", tca.getTcaItem().getEventName());
+        assertEquals("policy1", tca.getTcaItem().getPolicyId());
+        assertEquals("f734f031-10aa-t8fb-330f-04dde2886325", tca.getTcaItem().getTcaUuId());
+        assertEquals(2, tca.getTcaItem().getTcaThresholds().size());
+
+        assertEquals("ABATED", tca.getTcaItem().getTcaThresholds().get(0).getClosedLoopEventStatus());
+        assertEquals("VM", tca.getTcaItem().getTcaThresholds().get(0).getControlLoopSchema());
+        assertEquals(
+                "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
+                tca.getTcaItem().getTcaThresholds().get(0).getFieldPath());
+        assertEquals("LESS_OR_EQUAL", tca.getTcaItem().getTcaThresholds().get(0).getOperator());
+        assertEquals(Integer.valueOf(123), tca.getTcaItem().getTcaThresholds().get(0).getThreshold());
+
+        assertEquals("ONSET", tca.getTcaItem().getTcaThresholds().get(1).getClosedLoopEventStatus());
+        assertEquals("VNF", tca.getTcaItem().getTcaThresholds().get(1).getControlLoopSchema());
+        assertEquals("$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
+                tca.getTcaItem().getTcaThresholds().get(1).getFieldPath());
+        assertEquals("GREATER_OR_EQUAL", tca.getTcaItem().getTcaThresholds().get(1).getOperator());
+        assertEquals(Integer.valueOf(123), tca.getTcaItem().getTcaThresholds().get(1).getThreshold());
+    }
+
+    @Test
+    public void testHolmesModelDecoding() throws IOException {
+
+        String modelBpmnProp = ResourceFileUtil
+                .getResourceAsString("example/model-properties/holmes/modelBpmnProperties.json");
+        String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/holmes/modelBpmn.json");
+
+        ModelProperties prop = new ModelProperties("example-model-name", "example-control-name", null, true, modelBpmn,
+                modelBpmnProp);
+
+        Policy policy = prop.getType(Policy.class);
+        assertTrue(policy.isFound());
+        assertEquals(1, policy.getPolicyChains().size());
+        assertEquals("0", policy.getPolicyChains().get(0).getPolicyId());
+        assertEquals(1, policy.getPolicyChains().get(0).getPolicyItems().size());
+        assertEquals("resourceid", policy.getPolicyChains().get(0).getPolicyItems().get(0).getTargetResourceId());
+        assertEquals(180, policy.getPolicyChains().get(0).getPolicyItems().get(0).getRetryTimeLimit());
+        assertEquals(3, policy.getPolicyChains().get(0).getPolicyItems().get(0).getMaxRetries());
+        assertEquals("", policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicy());
+        assertEquals(null, policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicyConditions());
 
         Holmes holmes = prop.getType(Holmes.class);
+        assertNotNull(holmes);
         assertTrue(holmes.isFound());
         assertEquals("policy1", holmes.getOperationalPolicy());
         assertEquals("blabla", holmes.getCorrelationLogic());
@@ -96,7 +121,7 @@
     public void testGetVf() throws IOException {
         CldsModel cldsModel = new CldsModel();
         cldsModel.setPropText(
-                ResourceFileUtil.getResourceAsString("example/model-properties/modelBpmnPropWithGlobal.json"));
+                ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmnProperties.json"));
         assertEquals("f5213e3a-9191-4362-93b5-b67f8d770e44", ModelProperties.getVf(cldsModel));
     }
 }
\ No newline at end of file
diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties
index fb91197..405b3ed 100644
--- a/src/test/resources/clds/clds-reference.properties
+++ b/src/test/resources/clds/clds-reference.properties
@@ -28,13 +28,13 @@
 #
 # TCA MicroService Policy request build properties
 #
-tca.template={"service":"MThresholdCrossingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"MThresholdCrossingConfiguration","templateVersion":"5.2.0.1","priority":"4","version":"5.2.0.1","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"$class": "com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration","domain":"measurementsForVfScaling","policyScope":"pnf=eNodeB;type=configuration","policyName":"policy.dcae.configuration","policyVersion":"1.0.0","subscriberContentType": "application/json","subscriberConsumerId": "c13","subscriberConsumerGroup": "OpenDCAE-c13","subscriberTimeoutMS": "-1","subscriberMessageLimit": "-1","subscriberPollingInterval": "20000","publisherContentType": "application/json","publisherMaxBatchSize": "10","publisherMaxRecoveryQueueSize": "100000","publisherPollingInterval": "20000","publisherAlertWindowingTime": "86400","signatures":[]}}
-tca.signature.template={"nfNamingCode":"ENBE","target":"common_id","targetType":"eNodeB","useCaseName":"???","signatureName":"???","signatureUuid":"???","closedLoopControlName":"???","severity":"???","version":"1.0.2","maxInterval":1200,"minMessageViolations":4,"thresholds":[]}
-
+tca.template={"cdap-tca-hi-lo_policy": {"domain": "measurementsForVfScaling","metricsPerEventName": [{"eventName": "???","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]}}
+tca.thresholds.template={"closedLoopControlName": "???", "controlLoopSchema": "VM","version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"}
+#
 #
 # DCAE request build properties
 #
-dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"string_matching":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.stringmatcher.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}}
+dcae.template={"properties":{"service_name":"","service_ids":[],"vnf_ids":[],"location_ids":[]},"template":{"tca":{"dcae":{"inputTopic":"","outputTopic":"","closedLoopControlName":"","closedLoopEventClient":"configuration.dcae.microservice.tca.xml","policyName":"","policyScope":"service=vSCP;resource=F5;type=configuration","policyVersion":"v0.0.1","serviceConfigurations":{}}}}}
 dcae.decode.service_ids={"vUSP":["vUSP - vCTS"],"Trinity":["ASBGv TLS VNF","ASBGv No TLS","ASBGv (NO TLS) VNF","ASBGv TLS","NSBGv VNF","NSBGv"],"vSCP":["AKRON_vSCP_F5_FW-SVC/vSCP_F5_FW 1","ALLEN_vSCP_F5_FW-SVC/vSCP_F5_FW 1"],"vProbes":["vProbes - FW"]}
 #
 # SDC request blueprint properties
@@ -45,28 +45,12 @@
 #
 # General Policy request properties
 #
-policy.ecomp.name=DCAE
+policy.onap.name=DCAE
 policy.pdp.group=default
 policy.ms.type=MicroService
 policy.ms.policyNamePrefix=Config_MS_
 policy.op.type=BRMS_Param
 policy.op.policyNamePrefix=Config_BRMS_Param_
-
-# by service: xxx
-#
-#
-# String Match MicroService Policy request build properties
-#
-# default
-sm.template={"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"1610","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{}}}
-# by service: vSCP
-sm.template.vSCP={"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"???","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"0.1.0-SNAPSHOT","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{}}}
-sm.sc.template={}
-#
-# default
-sm.rulegroup=true
-# by service: vSCP
-sm.rulegroup.vSCP=false
 #
 #
 # Operational Policy request build properties
@@ -113,9 +97,9 @@
 action.insert.test.event=false
 CLDS_SERVICE_CACHE_MAX_SECONDS=14400
 #
-globalProps={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP",	"GFP-IP-SNMP-TRAPS" : "GFP-IP-SNMP-TRAPS"	}	},	"string_match": { 		"topicPublishes": { 			"DCAE-CL-EVENT": "DCAE-CL-EVENT" 		}, 		"aaiMatchingFields": { 			"VMID": "VMID", 			"Identiy": "Identiy", 			"VNFNAME": "VNFNAME", 			"LOCID": "LOCID", 			"VServerSelfLink": "VServerSelfLink", 			"ProvStatus": "Provstatus", 			"OAMIPV4": "OAMIPV4", 			"OAMIPV6": "OAMIPV6", 			"VMNAME": "VMNAME", 			"TenantID":"TenantID", 			"in_maint":"in_maint", 			"is_closed_loop_disabled":"is_closed_loop_disabled", 			"Location":"Location", 			"OAM_network_name":"OAM_network_name" 		}, 		"aaiSendFields": { 			"VMID": "VMID", 			"Identiy": "Identiy", 			"VNFNAME": "VNFNAME", 			"LOCID": "LOCID", 			"VServerSelfLink": "VServerSelfLink", 			"Provstatus": "Provstatus", 			"OAMIPV4": "OAMIPV4", 			"OAMIPV6": "OAMIPV6", 			"VMNAME": "VMNAME", 			"TenantID":"TenantID", 			"in_maint":"in_maint", 			"is_closed_loop_disabled":"is_closed_loop_disabled", 			"Location":"Location", 			"OAM_network_name":"OAM_network_name" 		}, 		"eventSourceType": { 			"f5BigIP": "f5BigIP", 			"vSBG_Alarms": "vSBG_Alarms", 			"vCTS_Alarms": "vCTS_Alarms" 		}, 		"eventSeverity": { 			"NORMAL": "NORMAL", 			"not-NORMAL": "not-NORMAL", 			"WARNING": "WARNING", 			"MINOR": "MINOR", 			"MAJOR": "MAJOR", 			"CRITICAL": "CRITICAL" 		}, 		"timeWindow": 0, 		"ageLimit": 1600, 		"outputEventName": { 			"": "", 			"OnSet": "OnSet", 			"Abatement": "Abatement" 		}, 		"createClosedLoopEventId": { 			"Initial": "Initial", 			"Close": "Close" 		} 	}, 	"global": { 		"service": { 			"": "", 			"vUSP": "vUSP", 			"vSCP": "vSCP", 			"vProbes": "vProbes" 		} 	}, 	"policy": { 		"timeout": 5, 		"recipe": { 			"": "", 			"restart": "Restart", 			"rebuild": "Rebuild", 			"migrate": "Migrate" 		}, 		"maxRetries": "3", 		"retryTimeLimit": 180, 		"resource": { 			"vCTS": "vCTS", 			"v3CDB": "v3CDB", 			"vUDR": "vUDR", 			"vCOM": "vCOM", 			"vRAR": "vRAR", 			"vLCS": "vLCS", 			"vUDR-BE": "vUDR-BE", 			"vDBE": "vDBE" 		}, 		"parentPolicyConditions": { 			"Failure_Retries": "Failure: Max Retries Exceeded", 			"Failure_Timeout": "Failure: Time Limit Exceeded", 			"Failure_Exception": "Failure: Exception", 			"Failure": "Failure: Other", 			"Success": "Success" 		} 	}, 	"shared": { 		"byService": { 			"": { 				"vf": { 				}, 				"vfc": { 				}, 				"location": { 				}, 				"alarmCondition": { 				} 			}, 			"vSCP": { 				"vf": { 					"frwl_scp": "FW" 				}, 				"vfc": { 					"FW": "FW" 				}, 				"location": { 					"AKRNOHAH": "Akron", 					"ALLNTXSA": "Allen-2" 				}, 				"alarmCondition": { 					"authenticationFailure": "authenticationFailure", 					"bigipActive": "bigipActive", 					"bigipActiveActive": "bigipActiveActive", 					"bigipAgentRestart": "bigipAgentRestart", 					"bigipAgentShutdown": "bigipAgentShutdown", 					"bigipAgentStart": "bigipAgentStart", 					"bigipAggrReaperStateChange": "bigipAggrReaperStateChange", 					"bigipAomCpuTempTooHigh": "bigipAomCpuTempTooHigh", 					"bigipARPConflict": "bigipARPConflict", 					"bigipAsmBruteForceAttackDetected": "bigipAsmBruteForceAttackDetected", 					"bigipAsmDosAttackDetected": "bigipAsmDosAttackDetected", 					"bigipAsmFtpRequestBlocked": "bigipAsmFtpRequestBlocked", 					"bigipAsmFtpRequestViolation": "bigipAsmFtpRequestViolation", 					"bigipAsmRequestBlocked": "bigipAsmRequestBlocked", 					"bigipAsmRequestViolation": "bigipAsmRequestViolation", 					"bigipAsmSmtpRequestBlocked": "bigipAsmSmtpRequestBlocked", 					"bigipAsmSmtpRequestViolation": "bigipAsmSmtpRequestViolation", 					"bigipAuthFailed": "bigipAuthFailed", 					"bigipAvrAlertsMetricSmtp": "bigipAvrAlertsMetricSmtp", 					"bigipAvrAlertsMetricSnmp": "bigipAvrAlertsMetricSnmp", 					"bigipBladeNoPower": "bigipBladeNoPower", 					"bigipBladeOffline": "bigipBladeOffline", 					"bigipBladeTempHigh": "bigipBladeTempHigh", 					"bigipChassisFanBad": "bigipChassisFanBad", 					"bigipChassisPowerSupplyBad": "bigipChassisPowerSupplyBad", 					"bigipChassisTempHigh": "bigipChassisTempHigh", 					"bigipChmandAlertFanTrayBad": "bigipChmandAlertFanTrayBad", 					"bigipClusterdNoResponse": "bigipClusterdNoResponse", 					"bigipClusterPrimaryChanged": "bigipClusterPrimaryChanged", 					"bigipCompLimitExceeded": "bigipCompLimitExceeded", 					"bigipConfigLoaded": "bigipConfigLoaded", 					"bigipCpuFanSpeedBad": "bigipCpuFanSpeedBad", 					"bigipCpuFanSpeedLow": "bigipCpuFanSpeedLow", 					"bigipCpuTempHigh": "bigipCpuTempHigh", 					"bigipDiskPartitionGrowth": "bigipDiskPartitionGrowth", 					"bigipDiskPartitionWarn": "bigipDiskPartitionWarn", 					"bigipDnsRequestRateLimiterEngaged": "bigipDnsRequestRateLimiterEngaged", 					"bigipDosAttackStart": "bigipDosAttackStart", 					"bigipDosAttackStop": "bigipDosAttackStop", 					"bigipExternalLinkChange": "bigipExternalLinkChange", 					"bigipFeatureFailed": "bigipFeatureFailed", 					"bigipFeatureOnline": "bigipFeatureOnline",	 					"bigipFipsDeviceError": "bigipFipsDeviceError", 					"bigipGtmAppAvail": "bigipGtmAppAvail", 					"bigipGtmAppNotAvail": "bigipGtmAppNotAvail", 					"bigipGtmAppObjAvail": "bigipGtmAppObjAvail", 					"bigipGtmAppObjNotAvail": "bigipGtmAppObjNotAvail", 					"bigipGtmBig3dSslCertExpired": "bigipGtmBig3dSslCertExpired", 					"bigipGtmBig3dSslCertWillExpire": "bigipGtmBig3dSslCertWillExpire", 					"bigipGtmBoxAvail": "bigipGtmBoxAvail", 					"bigipGtmBoxNotAvail": "bigipGtmBoxNotAvail", 					"bigipGtmDcAvail": "bigipGtmDcAvail", 					"bigipGtmDcDisabled": "bigipGtmDcDisabled", 					"bigipGtmDcEnabled": "bigipGtmDcEnabled", 					"bigipGtmDcNotAvail": "bigipGtmDcNotAvail", 					"bigipGtmJoinedGroup": "bigipGtmJoinedGroup", 					"bigipGtmKeyGenerationExpiration": "bigipGtmKeyGenerationExpiration", 					"bigipGtmKeyGenerationRollover": "bigipGtmKeyGenerationRollover", 					"bigipGtmLeftGroup": "bigipGtmLeftGroup", 					"bigipGtmLinkAvail": "bigipGtmLinkAvail", 					"bigipGtmLinkDisabled": "bigipGtmLinkDisabled", 					"bigipGtmLinkEnabled": "bigipGtmLinkEnabled", 					"bigipGtmLinkNotAvail": "bigipGtmLinkNotAvail", 					"bigipGtmPoolAvail": "bigipGtmPoolAvail", 					"bigipGtmPoolDisabled": "bigipGtmPoolDisabled", 					"bigipGtmPoolEnabled": "bigipGtmPoolEnabled", 					"bigipGtmPoolMbrAvail": "bigipGtmPoolMbrAvail", 					"bigipGtmPoolMbrDisabled": "bigipGtmPoolMbrDisabled", 					"bigipGtmPoolMbrEnabled": "bigipGtmPoolMbrEnabled", 					"bigipGtmPoolMbrNotAvail": "bigipGtmPoolMbrNotAvail", 					"bigipGtmPoolNotAvail": "bigipGtmPoolNotAvail", 					"bigipGtmProberPoolDisabled": "bigipGtmProberPoolDisabled", 					"bigipGtmProberPoolEnabled": "bigipGtmProberPoolEnabled", 					"bigipGtmProberPoolMbrDisabled": "bigipGtmProberPoolMbrDisabled", 					"bigipGtmProberPoolMbrEnabled": "bigipGtmProberPoolMbrEnabled", 					"bigipGtmProberPoolMbrStatusChange": "bigipGtmProberPoolMbrStatusChange", 					"bigipGtmProberPoolMbrStatusChangeReason": "bigipGtmProberPoolMbrStatusChangeReason", 					"bigipGtmProberPoolStatusChange": "bigipGtmProberPoolStatusChange", 					"bigipGtmProberPoolStatusChangeReason": "bigipGtmProberPoolStatusChangeReason", 					"bigipGtmRequestRateLimiterEngaged": "bigipGtmRequestRateLimiterEngaged", 					"bigipGtmServerAvail": "bigipGtmServerAvail", 					"bigipGtmServerDisabled": "bigipGtmServerDisabled", 					"bigipGtmServerEnabled": "bigipGtmServerEnabled", 					"bigipGtmServerNotAvail": "bigipGtmServerNotAvail", 					"bigipGtmSslCertExpired": "bigipGtmSslCertExpired", 					"bigipGtmSslCertWillExpire": "bigipGtmSslCertWillExpire", 					"bigipGtmVsAvail": "bigipGtmVsAvail", 					"bigipGtmVsDisabled": "bigipGtmVsDisabled", 					"bigipGtmVsEnabled": "bigipGtmVsEnabled", 					"bigipGtmVsNotAvail": "bigipGtmVsNotAvail", 					"bigipGtmWideIpAvail": "bigipGtmWideIpAvail", 					"bigipGtmWideIpDisabled": "bigipGtmWideIpDisabled", 					"bigipGtmWideIpEnabled": "bigipGtmWideIpEnabled", 					"bigipGtmWideIpNotAvail": "bigipGtmWideIpNotAvail", 					"bigipHardDiskFailure": "bigipHardDiskFailure", 					"bigipInetPortExhaustion": "bigipInetPortExhaustion", 					"bigipLibhalBladePoweredOff": "bigipLibhalBladePoweredOff", 					"bigipLibhalDiskBayRemoved": "bigipLibhalDiskBayRemoved", 					"bigipLibhalSensorAlarmCritical": "bigipLibhalSensorAlarmCritical", 					"bigipLibhalSsdLogicalDiskRemoved": "bigipLibhalSsdLogicalDiskRemoved", 					"bigipLibhalSsdPhysicalDiskRemoved": "bigipLibhalSsdPhysicalDiskRemoved", 					"bigipLicenseExpired": "bigipLicenseExpired", 					"bigipLicenseFailed": "bigipLicenseFailed", 					"bigipLogAlert": "bigipLogAlert", 					"bigipLogCrit": "bigipLogCrit", 					"bigipLogEmerg": "bigipLogEmerg", 					"bigipLogErr": "bigipLogErr", 					"bigipLogWarning": "bigipLogWarning", 					"bigipLtmVsAvail": "bigipLtmVsAvail", 					"bigipLtmVsDisabled": "bigipLtmVsDisabled", 					"bigipLtmVsEnabled": "bigipLtmVsEnabled", 					"bigipLtmVsUnavail": "bigipLtmVsUnavail", 					"bigipMemberRate": "bigipMemberRate", 					"bigipNetLinkDown": "bigipNetLinkDown", 					"bigipNodeDown": "bigipNodeDown", 					"bigipNodeRate": "bigipNodeRate", 					"bigipNodeUp": "bigipNodeUp", 					"bigipPacketRejected": "bigipPacketRejected", 					"bigipPsAbsent": "bigipPsAbsent", 					"bigipPsPowerOff": "bigipPsPowerOff", 					"bigipPsPowerOn": "bigipPsPowerOn", 					"bigipRaidDiskFailure": "bigipRaidDiskFailure", 					"bigipServiceDown": "bigipServiceDown", 					"bigipServiceUp": "bigipServiceUp", 					"bigipSsdMwiNearThreshold": "bigipSsdMwiNearThreshold", 					"bigipSsdMwiReachedThreshold": "bigipSsdMwiReachedThreshold", 					"bigipSslLimitExceeded": "bigipSslLimitExceeded", 					"bigipStandby": "bigipStandby", 					"bigipStandByFail": "bigipStandByFail", 					"bigipSystemCheckAlertCurrentHigh": "bigipSystemCheckAlertCurrentHigh", 					"bigipSystemCheckAlertCurrentLow": "bigipSystemCheckAlertCurrentLow", 					"bigipSystemCheckAlertFanSpeedLow": "bigipSystemCheckAlertFanSpeedLow", 					"bigipSystemCheckAlertMilliVoltageHigh": "bigipSystemCheckAlertMilliVoltageHigh", 					"bigipSystemCheckAlertMilliVoltageLow": "bigipSystemCheckAlertMilliVoltageLow", 					"bigipSystemCheckAlertPowerHigh": "bigipSystemCheckAlertPowerHigh", 					"bigipSystemCheckAlertPowerLow": "bigipSystemCheckAlertPowerLow", 					"bigipSystemCheckAlertTempHigh": "bigipSystemCheckAlertTempHigh", 					"bigipSystemCheckAlertVoltageHigh": "bigipSystemCheckAlertVoltageHigh", 					"bigipSystemCheckAlertVoltageLow": "bigipSystemCheckAlertVoltageLow", 					"bigipSystemShutdown": "bigipSystemShutdown", 					"bigipTamdAlert": "bigipTamdAlert", 					"bigipTrafficGroupActivate": "bigipTrafficGroupActivate", 					"bigipTrafficGroupActive": "bigipTrafficGroupActive", 					"bigipTrafficGroupDeactivate": "bigipTrafficGroupDeactivate", 					"bigipTrafficGroupForcedOffline": "bigipTrafficGroupForcedOffline", 					"bigipTrafficGroupOffline": "bigipTrafficGroupOffline", 					"bigipTrafficGroupStandby": "bigipTrafficGroupStandby", 					"bigipUnsolicitedRepliesExceededThreshold": "bigipUnsolicitedRepliesExceededThreshold", 					"bigipUpdateError": "bigipUpdateError", 					"bigipUpdatePriority": "bigipUpdatePriority", 					"bigipUpdateServer": "bigipUpdateServer", 					"bigipVcmpAlertsVcmpHBDetected": "bigipVcmpAlertsVcmpHBDetected", 					"bigipVcmpAlertsVcmpHBLost": "bigipVcmpAlertsVcmpHBLost", 					"bigipVcmpAlertsVcmpPowerOff": "bigipVcmpAlertsVcmpPowerOff", 					"bigipVcmpAlertsVcmpPowerOn": "bigipVcmpAlertsVcmpPowerOn", 					"bigipVirtualRate": "bigipVirtualRate", 					"coldStart": "coldStart", 					"emASMSigInstallComplete": "emASMSigInstallComplete", 					"emASMSigInstallFailed": "emASMSigInstallFailed", 					"emASMSigUpdateAvailable": "emASMSigUpdateAvailable", 					"emASMSigUpdateFailed": "emASMSigUpdateFailed", 					"emCertificateExpiration": "emCertificateExpiration", 					"emCpuUsage": "emCpuUsage", 					"emDeviceActiveMode": "emDeviceActiveMode", 					"emDeviceClockSkew": "emDeviceClockSkew", 					"emDeviceConfigSettingChanged": "emDeviceConfigSettingChanged", 					"emDeviceConfigSync": "emDeviceConfigSync", 					"emDeviceForcedOfflineMode": "emDeviceForcedOfflineMode", 					"emDeviceImpaired": "emDeviceImpaired", 					"emDeviceOfflineMode": "emDeviceOfflineMode", 					"emDeviceStandbyMode": "emDeviceStandbyMode", 					"emDeviceUnreachable": "emDeviceUnreachable", 					"emDiskUsage": "emDiskUsage", 					"emGatherServiceContractFailure": "emGatherServiceContractFailure", 					"emHaSyncFailed": "emHaSyncFailed", 					"emHotfixInstallComplete": "emHotfixInstallComplete", 					"emHotfixInstallFailed": "emHotfixInstallFailed", 					"emMemoryUsage": "emMemoryUsage", 					"emPerformanceStorageCap": "emPerformanceStorageCap", 					"emPerformanceStorageDays": "emPerformanceStorageDays", 					"emPerformanceThreshold": "emPerformanceThreshold", 					"emRaidDriveFailureDetected": "emRaidDriveFailureDetected", 					"emRaidDriveRebuildComplete": "emRaidDriveRebuildComplete", 					"emSchedBackupFailed": "emSchedBackupFailed", 					"emScheduledArchiveFailed": "emScheduledArchiveFailed", 					"emServiceContractExpiry": "emServiceContractExpiry", 					"emSoftwareInstallComplete": "emSoftwareInstallComplete", 					"emSoftwareInstallFailed": "emSoftwareInstallFailed", 					"emStatsCollectionRateCap": "emStatsCollectionRateCap", 					"emStatsDBConnectivityLost": "emStatsDBConnectivityLost", 					"emStatsDBConnectivityRestored": "emStatsDBConnectivityRestored", 					"fallingAlarm": "fallingAlarm", 					"ipv6IfStateChange": "ipv6IfStateChange", 					"linkDown": "linkDown", 					"linkUp": "linkUp", 					"mteEventSetFailure": "mteEventSetFailure", 					"mteTriggerFailure": "mteTriggerFailure", 					"mteTriggerFalling": "mteTriggerFalling", 					"mteTriggerFired": "mteTriggerFired", 					"mteTriggerRising": "mteTriggerRising", 					"netSnmpExampleHeartbeatNotification": "netSnmpExampleHeartbeatNotification", 					"newRoot": "newRoot", 					"nsNotifyRestart": "nsNotifyRestart", 					"nsNotifyShutdown": "nsNotifyShutdown", 					"nsNotifyStart": "nsNotifyStart", 					"risingAlarm": "risingAlarm", 					"schedActionFailure": "schedActionFailure", 					"smScriptAbort": "smScriptAbort", 					"smScriptException": "smScriptException", 					"smScriptResult": "smScriptResult", 					"topologyChange": "topologyChange", 					"ucdShutdown": "ucdShutdown", 					"ucdStart": "ucdStart", 					"warmStart": "warmStart" 				} 			}, 			"vUSP": { 				"vf": { 					"ctsf-xxx": "vCTS" 				}, 				"vfc": { 					"vCTS - CFED": "vCTS - CFED", 					"vCTS - Config": "vCTS - Config", 					"vCTS - DFED": "vCTS - DFED", 					"vCTS - TAFE-fsd": "vCTS - TAFE-fsd", 					"vCTS - GLS": "vCTS - GLS", 					"vCTS - XXX": "vCTS - XXX", 					"vCTS - Management Interface": "vCTS - Management Interface", 					"vCTS - SPFE-pfe": "vCTS - SPFE-pfe", 					"vCTS - DNS": "vCTS - DNS", 					"vCTS - SPFE-spd": "vCTS - SPFE-spd", 					"vCTS - SPFE-spt": "vCTS - SPFE-spt", 					"vCTS - TAFE-tas": "vCTS - TAFE-tas" 				}, 				"location": { 					"SNDGCA06": "San Diego(core site) A06", 					"SNDGCA64": "San Diego(core site) A64", 					"SNANTXCA": "San Antonio(core site)", 					"KSCYMO09": "Kansas City(core site)", 					"kings_mountain": "Kings Mountain(AMG)", 					"Secaucus": "Secaucus(AMG)", 					"lisle": "Lisle(AMG)", 					"concord": "Concord(AMG)", 					"houston": "Houston(AMG)", 					"akron": "Akron(AMG)" 				}, 				"alarmCondition": { 					"acrTemporaryBufferOverload": "acrTemporaryBufferOverload", 					"adnsExtendedTTLcaching": "adnsExtendedTTLcaching", 					"adnsQueryFailureCaching": "adnsQueryFailureCaching", 					"adnsQueueCongestion": "adnsQueueCongestion", 					"asdaCommunicationFailure": "asdaCommunicationFailure", 					"asdaRequestQueue": "asdaRequestQueue", 					"capacityLicenseKeyExpiration": "capacityLicenseKeyExpiration", 					"capacityLicenseKeyNearExpiration": "capacityLicenseKeyNearExpiration", 					"capacityLicenseKeyValidationError": "capacityLicenseKeyValidationError", 					"cardConnectionLost": "cardConnectionLost", 					"ccdbCommunicationFailure": "ccdbCommunicationFailure", 					"cpiAlrmCritical": "cpiAlrmCritical", 					"cpiAlrmMajor": "cpiAlrmMajor", 					"cpiAlrmMinor": "cpiAlrmMinor", 					"cpiAlrmWarning": "cpiAlrmWarning", 					"cpiAsrtEsc": "cpiAsrtEsc", 					"cpiAsrtNonEsc": "cpiAsrtNonEsc", 					"cpiAsrtNonEscCritical": "cpiAsrtNonEscCritical", 					"cpiAsrtNonEscMajor": "cpiAsrtNonEscMajor", 					"cpiAsrtNonEscMinor": "cpiAsrtNonEscMinor", 					"cpiAudErrCount": "cpiAudErrCount", 					"cpiAudManAct": "cpiAudManAct", 					"cpiAudNewEvent": "cpiAudNewEvent", 					"cpiCompleteRateAlarm": "cpiCompleteRateAlarm", 					"cpiCTS3xxFailRate": "cpiCTS3xxFailRate", 					"cpiCTS4xxFailRate": "cpiCTS4xxFailRate", 					"cpiCTS5xxFailRate": "cpiCTS5xxFailRate", 					"cpiCTS6xxFailRate": "cpiCTS6xxFailRate", 					"cpiCTSSIPRetransmitInvite": "cpiCTSSIPRetransmitInvite", 					"cpiCTSSIPRetransmitNonInvite": "cpiCTSSIPRetransmitNonInvite", 					"cpiDropMGAllocConnReq": "cpiDropMGAllocConnReq", 					"cpiDropRateAlarm": "cpiDropRateAlarm", 					"cpiExceptionService": "cpiExceptionService", 					"cpiFailRateAlarm": "cpiFailRateAlarm", 					"cpiFailSCTPFastRetransIncr": "cpiFailSCTPFastRetransIncr", 					"cpiFailSCTPFastRetransRate": "cpiFailSCTPFastRetransRate", 					"cpiFailSCTPSRTT1Incr": "cpiFailSCTPSRTT1Incr", 					"cpiFailSCTPSRTT2Incr": "cpiFailSCTPSRTT2Incr", 					"cpiFailSCTPT3RetransIncr": "cpiFailSCTPT3RetransIncr", 					"cpiFailSCTPT3RetransRate": "cpiFailSCTPT3RetransRate", 					"cpiFileSysUsage": "cpiFileSysUsage", 					"cpiMemAllocFail": "cpiMemAllocFail", 					"cpiNumOfLICDRDel": "cpiNumOfLICDRDel", 					"cpiReinitServiceSelf": "cpiReinitServiceSelf", 					"cpiSIPRetransmitInvite": "cpiSIPRetransmitInvite", 					"cpiSIPRetransmitNonInvite": "cpiSIPRetransmitNonInvite", 					"cpiSS7DropSCTPPktsRcvd": "cpiSS7DropSCTPPktsRcvd", 					"cpiSS7FailSCTPFastRetransRate": "cpiSS7FailSCTPFastRetransRate", 					"cpiStabilityAlarm": "cpiStabilityAlarm", 					"cpuOverload": "cpuOverload", 					"databaseConnectionLost": "databaseConnectionLost", 					"databaseReplicationLinkDown": "databaseReplicationLinkDown", 					"databaseSizeExhausted": "databaseSizeExhausted", 					"dbHighCpuUtilization": "dbHighCpuUtilization", 					"dbOffline": "dbOffline", 					"dbStatusUnexpected": "dbStatusUnexpected", 					"degradedResource": "degradedResource", 					"degrow": "degrow", 					"deviceServerCxnLost": "deviceServerCxnLost", 					"diamLinkDown": "diamLinkDown", 					"diamMaxClientsExceeded": "diamMaxClientsExceeded", 					"dnsThreshold": "dnsThreshold", 					"ethernetError": "ethernetError", 					"ethernetLinkDown": "ethernetLinkDown", 					"externalConnectivity": "externalConnectivity", 					"featureLicenseExpiration": "featureLicenseExpiration", 					"featureLicenseKeyNearExpiration": "featureLicenseKeyNearExpiration", 					"featureLockValidationError": "featureLockValidationError", 					"fqdnError": "fqdnError", 					"fru": "fru",	 					"gatewayCongestion": "gatewayCongestion", 					"gatewayForcedOOS": "gatewayForcedOOS", 					"gatewayProvisioningError": "gatewayProvisioningError", 					"gatewayUnreachable": "gatewayUnreachable", 					"gatewayUnregistered": "gatewayUnregistered", 					"globalParameterNotFound": "globalParameterNotFound", 					"glsInvalidCellId": "glsInvalidCellId", 					"glsServerUnavailable": "glsServerUnavailable", 					"grow": "grow", 					"h248MessageBufferDepletion": "h248MessageBufferDepletion", 					"hlrSyncConnection": "hlrSyncConnection", 					"hlrSyncQueue": "hlrSyncQueue", 					"hostDown": "hostDown", 					"hostReset": "hostReset", 					"invalidGateway": "invalidGateway", 					"iriLinkDown": "iriLinkDown", 					"ldapServerConnectionLost": "ldapServerConnectionLost", 					"lispBufferFullExternalLIG": "lispBufferFullExternalLIG", 					"llcDown": "llcDown", 					"logicalLinkDown": "logicalLinkDown", 					"logicalLinkNotFound": "logicalLinkNotFound", 					"logRotateThreshold": "logRotateThreshold", 					"memoryOverload": "memoryOverload", 					"nodeConfigFailure": "nodeConfigFailure", 					"nodeGroupOOS": "nodeGroupOOS", 					"nodeOOS": "nodeOOS", 					"nonCompliantFaultGroupMemberState": "nonCompliantFaultGroupMemberState", 					"nonCsAddrChannelDepletion": "nonCsAddrChannelDepletion", 					"numberOfTuplesInUse": "numberOfTuplesInUse", 					"osSecInfoModificationDetected": "osSecInfoModificationDetected", 					"osSecInformationMissing": "osSecInformationMissing", 					"osSecUnexpectedInformation": "osSecUnexpectedInformation", 					"pdnsMySqlReplication": "pdnsMySqlReplication", 					"pktCorruptionDetectedViaRCCLANCheck": "pktCorruptionDetectedViaRCCLANCheck", 					"platformCommandFailure": "platformCommandFailure", 					"pmDataNotCollected": "pmDataNotCollected", 					"prdbConnectWithAlternateFailure": "prdbConnectWithAlternateFailure", 					"prdbSyncDataToAlternateFailure": "prdbSyncDataToAlternateFailure", 					"preAllocatedResourceOverload": "preAllocatedResourceOverload", 					"prifSocketError": "prifSocketError", 					"processDown": "processDown", 					"processNotStarted": "processNotStarted", 					"provisioningInhibitedMode": "provisioningInhibitedMode", 					"prsCallInstanceExceeded": "prsCallInstanceExceeded", 					"prsCpuOverload": "prsCpuOverload", 					"prsDatabaseMigrationFailure": "prsDatabaseMigrationFailure", 					"prsFailureToConnectWithPRDB": "prsFailureToConnectWithPRDB", 					"prsQueueExceeded": "prsQueueExceeded", 					"rccInhibitedMode": "rccInhibitedMode", 					"remotedbLinkDown": "remotedbLinkDown", 					"remoteQueryServerFailure": "remoteQueryServerFailure", 					"restore": "restore", 					"serviceCFGDataTimestampError": "serviceCFGDataTimestampError", 					"serviceCommCxnLost": "serviceCommCxnLost", 					"serviceOnewayCommunication": "serviceOnewayCommunication", 					"sheddingOverload": "sheddingOverload", 					"simxml": "simxml", 					"sipLinkSetMaxQuarantineList": "sipLinkSetMaxQuarantineList", 					"sipLinkSetUnavailable": "sipLinkSetUnavailable", 					"sipLinkUnavailable": "sipLinkUnavailable", 					"smdiSocketError": "smdiSocketError", 					"socketError": "socketError", 					"softwareAllocatedResourceOverload": "softwareAllocatedResourceOverload", 					"softwareComponentDown": "softwareComponentDown", 					"softwareComponentStandbyNotReady": "softwareComponentStandbyNotReady", 					"softwareLicense": "softwareLicense", 					"svcdegrow": "svcdegrow", 					"svcgrow": "svcgrow", 					"swVersionMismatch": "swVersionMismatch", 					"tftpDownloadCorrupt": "tftpDownloadCorrupt", 					"timeStampValueOutOfSystemRange": "timeStampValueOutOfSystemRange", 					"tlsInitError": "tlsInitError", 					"transactionHandlerBlockDepletion": "transactionHandlerBlockDepletion", 					"upgrade": "upgrade", 					"usageOfSyncTable": "usageOfSyncTable", 					"utHttpProxyConnectionDown": "utHttpProxyConnectionDown", 					"wpifSocketError": "wpifSocketError", 					"BackupFailure": "BackupFailure", 					"Configuration": "Configuration", 					"COTRecordTransferFailure": "COTRecordTransferFailure", 					"CPMUSERDATAINCONSITENCY": "CPMUSERDATAINCONSITENCY", 					"CPMUSERDATARESTORED": "CPMUSERDATARESTORED", 					"EventQueueCapacity": "EventQueueCapacity", 					"ICMPFailure": "ICMPFailure", 					"IPsecConfig": "IPsecConfig", 					"LinkDown": "LinkDown", 					"NotifyDisabled": "NotifyDisabled", 					"NotifyLocked": "NotifyLocked", 					"NumTL1MeasThresh": "NumTL1MeasThresh", 					"RADIUSTOLDAPFAILURE": "RADIUSTOLDAPFAILURE", 					"ROOTACCESSDENIED": "ROOTACCESSDENIED", 					"ROOTFTPVIOLATION": "ROOTFTPVIOLATION", 					"ROOTLOGINVIOLATION": "ROOTLOGINVIOLATION", 					"ROOTSSHLOGINVIOLATION": "ROOTSSHLOGINVIOLATION", 					"SetupAAAFailure": "SetupAAAFailure", 					"SNETrapOverload": "SNETrapOverload", 					"SNMPAuthenticationFailure": "SNMPAuthenticationFailure", 					"SNMPFailure": "SNMPFailure", 					"SUTOROOTFAILURE": "SUTOROOTFAILURE", 					"SYSTEMTrapOverload": "SYSTEMTrapOverload", 					"ThresholdCrossed": "ThresholdCrossed", 					"UndiscoveredObject": "UndiscoveredObject", 					"WriteAAAFailure": "WriteAAAFailure" 				} 			}, 			"Trinity": { 				"vf": { 					"aSBG": "aSBG", 					"nSBG": "nSBG", 					"tSBG": "tSBG" 				}, 				"vfc": { 					"pld": "PL - Payload Processor", 					"scr": "SC - System Controller" 				}, 				"location": { 					"SNDGCA64": "San Diego SAN3", 					"ALPRGAED": "Alpharetta PDK1", 					"LSLEILAA":"Lisle DPA3"	 				}, 				"alarmCondition": { 					"A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started", 					"BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed", 					"BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed", 					"COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed", 					"COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed", 					"COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned", 					"COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable", 					"COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error", 					"COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied", 					"File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded", 					"File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded", 					"LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication", 					"LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency", 					"LOTC+Disk+Usage":"LOTC Disk Usage", 					"LOTC+memory+Usage":"LOTC memory Usage", 					"LOTC+Time+Synchronization":"LOTC Time Synchronization", 					"SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down", 					"SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled", 					"SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled", 					"SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked", 					"SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached", 					"SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data", 					"SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ", 					"SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received", 					"SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected", 					"SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received", 					"SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ", 					"SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate", 					"SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server", 					"SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service", 					"SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling", 					"SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call", 					"SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data", 					"SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure", 					"SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure", 					"SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded", 					"SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine", 					"SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold", 					"SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated", 					"SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected", 					"SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked", 					"SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable", 					"SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable", 					"SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling", 					"SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported", 					"SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached", 					"SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated", 					"SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out", 					"SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type" 					} 			}, 			"vProbes": { 				"vf": { 				}, 				"vfc": { 				}, 				"location": { 				}, 				"alarmCondition": { 				} 			} 		} 	} }
-globalPropsPartial={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP",	"GFP-IP--SNMP-TRAPS" : "GFP-IP--SNMP-TRAPS"	}	},	"string_match": { 		"topicPublishes": { 			"DCAE-CL-EVENT": "DCAE-CL-EVENT" 		}, 		"aaiMatchingFields": { 			"VMID": "VMID", 			"Identiy": "Identiy", 			"VNFNAME": "VNFNAME", 			"LOCID": "LOCID", 			"VServerSelfLink": "VServerSelfLink", 			"ProvStatus": "Provstatus", 			"OAMIPV4": "OAMIPV4", 			"OAMIPV6": "OAMIPV6", 			"VMNAME": "VMNAME", 			"TenantID":"TenantID", 			"in_maint":"in_maint", 			"is_closed_loop_disabled":"is_closed_loop_disabled", 			"Location":"Location", 			"OAM_network_name":"OAM_network_name" 		}, 		"aaiSendFields": { 			"VMID": "VMID", 			"Identiy": "Identiy", 			"VNFNAME": "VNFNAME", 			"LOCID": "LOCID", 			"VServerSelfLink": "VServerSelfLink", 			"Provstatus": "Provstatus", 			"OAMIPV4": "OAMIPV4", 			"OAMIPV6": "OAMIPV6", 			"VMNAME": "VMNAME", 			"TenantID":"TenantID", 			"in_maint":"in_maint", 			"is_closed_loop_disabled":"is_closed_loop_disabled", 			"Location":"Location", 			"OAM_network_name":"OAM_network_name" 		}, 		"eventSourceType": { 			"f5BigIP": "f5BigIP", 			"vSBG_Alarms": "vSBG_Alarms", 			"vCTS_Alarms": "vCTS_Alarms" 		}, 		"eventSeverity": { 			"NORMAL": "NORMAL", 			"not-NORMAL": "not-NORMAL", 			"WARNING": "WARNING", 			"MINOR": "MINOR", 			"MAJOR": "MAJOR", 			"CRITICAL": "CRITICAL" 		}, 		"timeWindow": 0, 		"ageLimit": 1600, 		"outputEventName": { 			"": "", 			"OnSet": "OnSet", 			"Abatement": "Abatement" 		}, 		"createClosedLoopEventId": { 			"Initial": "Initial", 			"Close": "Close" 		} 	}, 	"global": { 		"service": { 			"": "", 			"vUSP": "vUSP", 			"vSCP": "vSCP", 			"vProbes": "vProbes" 		} 	}, 	"policy": { 		"timeout": 5, 		"recipe": { 			"": "", 			"restart": "Restart", 			"rebuild": "Rebuild", 			"migrate": "Migrate" 		}, 		"maxRetries": "3", 		"retryTimeLimit": 180, 		"resource": { 			"vCTS": "vCTS", 			"v3CDB": "v3CDB", 			"vUDR": "vUDR", 			"vCOM": "vCOM", 			"vRAR": "vRAR", 			"vLCS": "vLCS", 			"vUDR-BE": "vUDR-BE", 			"vDBE": "vDBE" 		}, 		"parentPolicyConditions": { 			"Failure_Retries": "Failure: Max Retries Exceeded", 			"Failure_Timeout": "Failure: Time Limit Exceeded", 			"Failure_Exception": "Failure: Exception", 			"Failure": "Failure: Other", 			"Success": "Success" 		} 	}  }
-globalPropsTest={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP",	"GFP-IP--SNMP-TRAPS" : "GFP-IP--SNMP-TRAPS"	}	},	"string_match": { 		"topicPublishes": { 			"DCAE-CL-EVENT": "DCAE-CL-EVENT" 		}, 		"aaiMatchingFields": { 			"VMID": "VMID", 			"Identiy": "Identiy", 			"VNFNAME": "VNFNAME", 			"LOCID": "LOCID", 			"VServerSelfLink": "VServerSelfLink", 			"ProvStatus": "Provstatus", 			"OAMIPV4": "OAMIPV4", 			"OAMIPV6": "OAMIPV6", 			"VMNAME": "VMNAME", 			"TenantID":"TenantID", 			"in_maint":"in_maint", 			"is_closed_loop_disabled":"is_closed_loop_disabled", 			"Location":"Location", 			"OAM_network_name":"OAM_network_name" 		}, 		"aaiSendFields": { 			"VMID": "VMID", 			"Identiy": "Identiy", 			"VNFNAME": "VNFNAME", 			"LOCID": "LOCID", 			"VServerSelfLink": "VServerSelfLink", 			"Provstatus": "Provstatus", 			"OAMIPV4": "OAMIPV4", 			"OAMIPV6": "OAMIPV6", 			"VMNAME": "VMNAME", 			"TenantID":"TenantID", 			"in_maint":"in_maint", 			"is_closed_loop_disabled":"is_closed_loop_disabled", 			"Location":"Location", 			"OAM_network_name":"OAM_network_name" 		}, 		"eventSourceType": { 			"f5BigIP": "f5BigIP", 			"vSBG_Alarms": "vSBG_Alarms", 			"vCTS_Alarms": "vCTS_Alarms" 		}, 		"eventSeverity": { 			"NORMAL": "NORMAL", 			"not-NORMAL": "not-NORMAL", 			"WARNING": "WARNING", 			"MINOR": "MINOR", 			"MAJOR": "MAJOR", 			"CRITICAL": "CRITICAL" 		}, 		"timeWindow": 0, 		"ageLimit": 1600, 		"outputEventName": { 			"": "", 			"OnSet": "OnSet", 			"Abatement": "Abatement" 		}, 		"createClosedLoopEventId": { 			"Initial": "Initial", 			"Close": "Close" 		} 	}, 	"global": { 		"service": { 			"": "", 			"vUSP": "vUSP", 			"vSCP": "vSCP", 			"vProbes": "vProbes" 		} 	}, 	"policy": { 		"timeout": 5, 		"recipe": { 			"": "", 			"restart": "Restart", 			"rebuild": "Rebuild", 			"migrate": "Migrate" 		}, 		"maxRetries": "3", 		"retryTimeLimit": 180, 		"resource": { 			"vCTS": "vCTS", 			"v3CDB": "v3CDB", 			"vUDR": "vUDR", 			"vCOM": "vCOM", 			"vRAR": "vRAR", 			"vLCS": "vLCS", 			"vUDR-BE": "vUDR-BE", 			"vDBE": "vDBE" 		}, 		"parentPolicyConditions": { 			"Failure_Retries": "Failure: Max Retries Exceeded", 			"Failure_Timeout": "Failure: Time Limit Exceeded", 			"Failure_Exception": "Failure: Exception", 			"Failure": "Failure: Other", 			"Success": "Success" 		} 	}, 	"shared": { 		"byService": { 			"": { 				"vf": { 				}, 				"vfc": { 				}, 				"location": { 				}, 				"alarmCondition": { 				} 			}, 			"vSCP": { 				"vf": { 					"frwl_scp": "FW" 				}, 				"vfc": { 					"FW": "FW" 				}, 				"location": { 					"AKRNOHAH": "Akron", 					"ALLNTXSA": "Allen-2" 				}, 				"alarmCondition": { 					"authenticationFailure": "authenticationFailure", 					"bigipActive": "bigipActive", 					"bigipActiveActive": "bigipActiveActive", 					"bigipAgentRestart": "bigipAgentRestart", 					"bigipAgentShutdown": "bigipAgentShutdown", 					"bigipAgentStart": "bigipAgentStart", 					"bigipAggrReaperStateChange": "bigipAggrReaperStateChange", 					"bigipAomCpuTempTooHigh": "bigipAomCpuTempTooHigh", 					"bigipARPConflict": "bigipARPConflict", 					"bigipAsmBruteForceAttackDetected": "bigipAsmBruteForceAttackDetected", 					"bigipAsmDosAttackDetected": "bigipAsmDosAttackDetected", 					"bigipAsmFtpRequestBlocked": "bigipAsmFtpRequestBlocked", 					"bigipAsmFtpRequestViolation": "bigipAsmFtpRequestViolation", 					"bigipAsmRequestBlocked": "bigipAsmRequestBlocked", 					"bigipAsmRequestViolation": "bigipAsmRequestViolation", 					"bigipAsmSmtpRequestBlocked": "bigipAsmSmtpRequestBlocked", 					"bigipAsmSmtpRequestViolation": "bigipAsmSmtpRequestViolation", 					"bigipAuthFailed": "bigipAuthFailed", 					"bigipAvrAlertsMetricSmtp": "bigipAvrAlertsMetricSmtp", 					"bigipAvrAlertsMetricSnmp": "bigipAvrAlertsMetricSnmp", 					"bigipBladeNoPower": "bigipBladeNoPower", 					"bigipBladeOffline": "bigipBladeOffline", 					"bigipBladeTempHigh": "bigipBladeTempHigh", 					"bigipChassisFanBad": "bigipChassisFanBad", 					"bigipChassisPowerSupplyBad": "bigipChassisPowerSupplyBad", 					"bigipChassisTempHigh": "bigipChassisTempHigh", 					"bigipChmandAlertFanTrayBad": "bigipChmandAlertFanTrayBad", 					"bigipClusterdNoResponse": "bigipClusterdNoResponse", 					"bigipClusterPrimaryChanged": "bigipClusterPrimaryChanged", 					"bigipCompLimitExceeded": "bigipCompLimitExceeded", 					"bigipConfigLoaded": "bigipConfigLoaded", 					"bigipCpuFanSpeedBad": "bigipCpuFanSpeedBad", 					"bigipCpuFanSpeedLow": "bigipCpuFanSpeedLow", 					"bigipCpuTempHigh": "bigipCpuTempHigh", 					"bigipDiskPartitionGrowth": "bigipDiskPartitionGrowth", 					"bigipDiskPartitionWarn": "bigipDiskPartitionWarn", 					"bigipDnsRequestRateLimiterEngaged": "bigipDnsRequestRateLimiterEngaged", 					"bigipDosAttackStart": "bigipDosAttackStart", 					"bigipDosAttackStop": "bigipDosAttackStop", 					"bigipExternalLinkChange": "bigipExternalLinkChange", 					"bigipFeatureFailed": "bigipFeatureFailed", 					"bigipFeatureOnline": "bigipFeatureOnline",	 					"bigipFipsDeviceError": "bigipFipsDeviceError", 					"bigipGtmAppAvail": "bigipGtmAppAvail", 					"bigipGtmAppNotAvail": "bigipGtmAppNotAvail", 					"bigipGtmAppObjAvail": "bigipGtmAppObjAvail", 					"bigipGtmAppObjNotAvail": "bigipGtmAppObjNotAvail", 					"bigipGtmBig3dSslCertExpired": "bigipGtmBig3dSslCertExpired", 					"bigipGtmBig3dSslCertWillExpire": "bigipGtmBig3dSslCertWillExpire", 					"bigipGtmBoxAvail": "bigipGtmBoxAvail", 					"bigipGtmBoxNotAvail": "bigipGtmBoxNotAvail", 					"bigipGtmDcAvail": "bigipGtmDcAvail", 					"bigipGtmDcDisabled": "bigipGtmDcDisabled", 					"bigipGtmDcEnabled": "bigipGtmDcEnabled", 					"bigipGtmDcNotAvail": "bigipGtmDcNotAvail", 					"bigipGtmJoinedGroup": "bigipGtmJoinedGroup", 					"bigipGtmKeyGenerationExpiration": "bigipGtmKeyGenerationExpiration", 					"bigipGtmKeyGenerationRollover": "bigipGtmKeyGenerationRollover", 					"bigipGtmLeftGroup": "bigipGtmLeftGroup", 					"bigipGtmLinkAvail": "bigipGtmLinkAvail", 					"bigipGtmLinkDisabled": "bigipGtmLinkDisabled", 					"bigipGtmLinkEnabled": "bigipGtmLinkEnabled", 					"bigipGtmLinkNotAvail": "bigipGtmLinkNotAvail", 					"bigipGtmPoolAvail": "bigipGtmPoolAvail", 					"bigipGtmPoolDisabled": "bigipGtmPoolDisabled", 					"bigipGtmPoolEnabled": "bigipGtmPoolEnabled", 					"bigipGtmPoolMbrAvail": "bigipGtmPoolMbrAvail", 					"bigipGtmPoolMbrDisabled": "bigipGtmPoolMbrDisabled", 					"bigipGtmPoolMbrEnabled": "bigipGtmPoolMbrEnabled", 					"bigipGtmPoolMbrNotAvail": "bigipGtmPoolMbrNotAvail", 					"bigipGtmPoolNotAvail": "bigipGtmPoolNotAvail", 					"bigipGtmProberPoolDisabled": "bigipGtmProberPoolDisabled", 					"bigipGtmProberPoolEnabled": "bigipGtmProberPoolEnabled", 					"bigipGtmProberPoolMbrDisabled": "bigipGtmProberPoolMbrDisabled", 					"bigipGtmProberPoolMbrEnabled": "bigipGtmProberPoolMbrEnabled", 					"bigipGtmProberPoolMbrStatusChange": "bigipGtmProberPoolMbrStatusChange", 					"bigipGtmProberPoolMbrStatusChangeReason": "bigipGtmProberPoolMbrStatusChangeReason", 					"bigipGtmProberPoolStatusChange": "bigipGtmProberPoolStatusChange", 					"bigipGtmProberPoolStatusChangeReason": "bigipGtmProberPoolStatusChangeReason", 					"bigipGtmRequestRateLimiterEngaged": "bigipGtmRequestRateLimiterEngaged", 					"bigipGtmServerAvail": "bigipGtmServerAvail", 					"bigipGtmServerDisabled": "bigipGtmServerDisabled", 					"bigipGtmServerEnabled": "bigipGtmServerEnabled", 					"bigipGtmServerNotAvail": "bigipGtmServerNotAvail", 					"bigipGtmSslCertExpired": "bigipGtmSslCertExpired", 					"bigipGtmSslCertWillExpire": "bigipGtmSslCertWillExpire", 					"bigipGtmVsAvail": "bigipGtmVsAvail", 					"bigipGtmVsDisabled": "bigipGtmVsDisabled", 					"bigipGtmVsEnabled": "bigipGtmVsEnabled", 					"bigipGtmVsNotAvail": "bigipGtmVsNotAvail", 					"bigipGtmWideIpAvail": "bigipGtmWideIpAvail", 					"bigipGtmWideIpDisabled": "bigipGtmWideIpDisabled", 					"bigipGtmWideIpEnabled": "bigipGtmWideIpEnabled", 					"bigipGtmWideIpNotAvail": "bigipGtmWideIpNotAvail", 					"bigipHardDiskFailure": "bigipHardDiskFailure", 					"bigipInetPortExhaustion": "bigipInetPortExhaustion", 					"bigipLibhalBladePoweredOff": "bigipLibhalBladePoweredOff", 					"bigipLibhalDiskBayRemoved": "bigipLibhalDiskBayRemoved", 					"bigipLibhalSensorAlarmCritical": "bigipLibhalSensorAlarmCritical", 					"bigipLibhalSsdLogicalDiskRemoved": "bigipLibhalSsdLogicalDiskRemoved", 					"bigipLibhalSsdPhysicalDiskRemoved": "bigipLibhalSsdPhysicalDiskRemoved", 					"bigipLicenseExpired": "bigipLicenseExpired", 					"bigipLicenseFailed": "bigipLicenseFailed", 					"bigipLogAlert": "bigipLogAlert", 					"bigipLogCrit": "bigipLogCrit", 					"bigipLogEmerg": "bigipLogEmerg", 					"bigipLogErr": "bigipLogErr", 					"bigipLogWarning": "bigipLogWarning", 					"bigipLtmVsAvail": "bigipLtmVsAvail", 					"bigipLtmVsDisabled": "bigipLtmVsDisabled", 					"bigipLtmVsEnabled": "bigipLtmVsEnabled", 					"bigipLtmVsUnavail": "bigipLtmVsUnavail", 					"bigipMemberRate": "bigipMemberRate", 					"bigipNetLinkDown": "bigipNetLinkDown", 					"bigipNodeDown": "bigipNodeDown", 					"bigipNodeRate": "bigipNodeRate", 					"bigipNodeUp": "bigipNodeUp", 					"bigipPacketRejected": "bigipPacketRejected", 					"bigipPsAbsent": "bigipPsAbsent", 					"bigipPsPowerOff": "bigipPsPowerOff", 					"bigipPsPowerOn": "bigipPsPowerOn", 					"bigipRaidDiskFailure": "bigipRaidDiskFailure", 					"bigipServiceDown": "bigipServiceDown", 					"bigipServiceUp": "bigipServiceUp", 					"bigipSsdMwiNearThreshold": "bigipSsdMwiNearThreshold", 					"bigipSsdMwiReachedThreshold": "bigipSsdMwiReachedThreshold", 					"bigipSslLimitExceeded": "bigipSslLimitExceeded", 					"bigipStandby": "bigipStandby", 					"bigipStandByFail": "bigipStandByFail", 					"bigipSystemCheckAlertCurrentHigh": "bigipSystemCheckAlertCurrentHigh", 					"bigipSystemCheckAlertCurrentLow": "bigipSystemCheckAlertCurrentLow", 					"bigipSystemCheckAlertFanSpeedLow": "bigipSystemCheckAlertFanSpeedLow", 					"bigipSystemCheckAlertMilliVoltageHigh": "bigipSystemCheckAlertMilliVoltageHigh", 					"bigipSystemCheckAlertMilliVoltageLow": "bigipSystemCheckAlertMilliVoltageLow", 					"bigipSystemCheckAlertPowerHigh": "bigipSystemCheckAlertPowerHigh", 					"bigipSystemCheckAlertPowerLow": "bigipSystemCheckAlertPowerLow", 					"bigipSystemCheckAlertTempHigh": "bigipSystemCheckAlertTempHigh", 					"bigipSystemCheckAlertVoltageHigh": "bigipSystemCheckAlertVoltageHigh", 					"bigipSystemCheckAlertVoltageLow": "bigipSystemCheckAlertVoltageLow", 					"bigipSystemShutdown": "bigipSystemShutdown", 					"bigipTamdAlert": "bigipTamdAlert", 					"bigipTrafficGroupActivate": "bigipTrafficGroupActivate", 					"bigipTrafficGroupActive": "bigipTrafficGroupActive", 					"bigipTrafficGroupDeactivate": "bigipTrafficGroupDeactivate", 					"bigipTrafficGroupForcedOffline": "bigipTrafficGroupForcedOffline", 					"bigipTrafficGroupOffline": "bigipTrafficGroupOffline", 					"bigipTrafficGroupStandby": "bigipTrafficGroupStandby", 					"bigipUnsolicitedRepliesExceededThreshold": "bigipUnsolicitedRepliesExceededThreshold", 					"bigipUpdateError": "bigipUpdateError", 					"bigipUpdatePriority": "bigipUpdatePriority", 					"bigipUpdateServer": "bigipUpdateServer", 					"bigipVcmpAlertsVcmpHBDetected": "bigipVcmpAlertsVcmpHBDetected", 					"bigipVcmpAlertsVcmpHBLost": "bigipVcmpAlertsVcmpHBLost", 					"bigipVcmpAlertsVcmpPowerOff": "bigipVcmpAlertsVcmpPowerOff", 					"bigipVcmpAlertsVcmpPowerOn": "bigipVcmpAlertsVcmpPowerOn", 					"bigipVirtualRate": "bigipVirtualRate", 					"coldStart": "coldStart", 					"emASMSigInstallComplete": "emASMSigInstallComplete", 					"emASMSigInstallFailed": "emASMSigInstallFailed", 					"emASMSigUpdateAvailable": "emASMSigUpdateAvailable", 					"emASMSigUpdateFailed": "emASMSigUpdateFailed", 					"emCertificateExpiration": "emCertificateExpiration", 					"emCpuUsage": "emCpuUsage", 					"emDeviceActiveMode": "emDeviceActiveMode", 					"emDeviceClockSkew": "emDeviceClockSkew", 					"emDeviceConfigSettingChanged": "emDeviceConfigSettingChanged", 					"emDeviceConfigSync": "emDeviceConfigSync", 					"emDeviceForcedOfflineMode": "emDeviceForcedOfflineMode", 					"emDeviceImpaired": "emDeviceImpaired", 					"emDeviceOfflineMode": "emDeviceOfflineMode", 					"emDeviceStandbyMode": "emDeviceStandbyMode", 					"emDeviceUnreachable": "emDeviceUnreachable", 					"emDiskUsage": "emDiskUsage", 					"emGatherServiceContractFailure": "emGatherServiceContractFailure", 					"emHaSyncFailed": "emHaSyncFailed", 					"emHotfixInstallComplete": "emHotfixInstallComplete", 					"emHotfixInstallFailed": "emHotfixInstallFailed", 					"emMemoryUsage": "emMemoryUsage", 					"emPerformanceStorageCap": "emPerformanceStorageCap", 					"emPerformanceStorageDays": "emPerformanceStorageDays", 					"emPerformanceThreshold": "emPerformanceThreshold", 					"emRaidDriveFailureDetected": "emRaidDriveFailureDetected", 					"emRaidDriveRebuildComplete": "emRaidDriveRebuildComplete", 					"emSchedBackupFailed": "emSchedBackupFailed", 					"emScheduledArchiveFailed": "emScheduledArchiveFailed", 					"emServiceContractExpiry": "emServiceContractExpiry", 					"emSoftwareInstallComplete": "emSoftwareInstallComplete", 					"emSoftwareInstallFailed": "emSoftwareInstallFailed", 					"emStatsCollectionRateCap": "emStatsCollectionRateCap", 					"emStatsDBConnectivityLost": "emStatsDBConnectivityLost", 					"emStatsDBConnectivityRestored": "emStatsDBConnectivityRestored", 					"fallingAlarm": "fallingAlarm", 					"ipv6IfStateChange": "ipv6IfStateChange", 					"linkDown": "linkDown", 					"linkUp": "linkUp", 					"mteEventSetFailure": "mteEventSetFailure", 					"mteTriggerFailure": "mteTriggerFailure", 					"mteTriggerFalling": "mteTriggerFalling", 					"mteTriggerFired": "mteTriggerFired", 					"mteTriggerRising": "mteTriggerRising", 					"netSnmpExampleHeartbeatNotification": "netSnmpExampleHeartbeatNotification", 					"newRoot": "newRoot", 					"nsNotifyRestart": "nsNotifyRestart", 					"nsNotifyShutdown": "nsNotifyShutdown", 					"nsNotifyStart": "nsNotifyStart", 					"risingAlarm": "risingAlarm", 					"schedActionFailure": "schedActionFailure", 					"smScriptAbort": "smScriptAbort", 					"smScriptException": "smScriptException", 					"smScriptResult": "smScriptResult", 					"topologyChange": "topologyChange", 					"ucdShutdown": "ucdShutdown", 					"ucdStart": "ucdStart", 					"warmStart": "warmStart" 				} 			}, 			"vUSP": { 				"vf": { 					"ctsf-xxx": "vCTS" 				}, 				"vfc": { 					"vCTS - CFED": "vCTS - CFED", 					"vCTS - Config": "vCTS - Config", 					"vCTS - DFED": "vCTS - DFED", 					"vCTS - TAFE-fsd": "vCTS - TAFE-fsd", 					"vCTS - GLS": "vCTS - GLS", 					"vCTS - XXX": "vCTS - XXX", 					"vCTS - Management Interface": "vCTS - Management Interface", 					"vCTS - SPFE-pfe": "vCTS - SPFE-pfe", 					"vCTS - DNS": "vCTS - DNS", 					"vCTS - SPFE-spd": "vCTS - SPFE-spd", 					"vCTS - SPFE-spt": "vCTS - SPFE-spt", 					"vCTS - TAFE-tas": "vCTS - TAFE-tas" 				}, 				"location": { 					"SNDGCA06": "San Diego(core site) A06", 					"SNDGCA64": "San Diego(core site) A64", 					"SNANTXCA": "San Antonio(core site)", 					"KSCYMO09": "Kansas City(core site)", 					"kings_mountain": "Kings Mountain(AMG)", 					"Secaucus": "Secaucus(AMG)", 					"lisle": "Lisle(AMG)", 					"concord": "Concord(AMG)", 					"houston": "Houston(AMG)", 					"akron": "Akron(AMG)" 				}, 				"alarmCondition": { 					"acrTemporaryBufferOverload": "acrTemporaryBufferOverload", 					"adnsExtendedTTLcaching": "adnsExtendedTTLcaching", 					"adnsQueryFailureCaching": "adnsQueryFailureCaching", 					"adnsQueueCongestion": "adnsQueueCongestion", 					"asdaCommunicationFailure": "asdaCommunicationFailure", 					"asdaRequestQueue": "asdaRequestQueue", 					"capacityLicenseKeyExpiration": "capacityLicenseKeyExpiration", 					"capacityLicenseKeyNearExpiration": "capacityLicenseKeyNearExpiration", 					"capacityLicenseKeyValidationError": "capacityLicenseKeyValidationError", 					"cardConnectionLost": "cardConnectionLost", 					"ccdbCommunicationFailure": "ccdbCommunicationFailure", 					"cpiAlrmCritical": "cpiAlrmCritical", 					"cpiAlrmMajor": "cpiAlrmMajor", 					"cpiAlrmMinor": "cpiAlrmMinor", 					"cpiAlrmWarning": "cpiAlrmWarning", 					"cpiAsrtEsc": "cpiAsrtEsc", 					"cpiAsrtNonEsc": "cpiAsrtNonEsc", 					"cpiAsrtNonEscCritical": "cpiAsrtNonEscCritical", 					"cpiAsrtNonEscMajor": "cpiAsrtNonEscMajor", 					"cpiAsrtNonEscMinor": "cpiAsrtNonEscMinor", 					"cpiAudErrCount": "cpiAudErrCount", 					"cpiAudManAct": "cpiAudManAct", 					"cpiAudNewEvent": "cpiAudNewEvent", 					"cpiCompleteRateAlarm": "cpiCompleteRateAlarm", 					"cpiCTS3xxFailRate": "cpiCTS3xxFailRate", 					"cpiCTS4xxFailRate": "cpiCTS4xxFailRate", 					"cpiCTS5xxFailRate": "cpiCTS5xxFailRate", 					"cpiCTS6xxFailRate": "cpiCTS6xxFailRate", 					"cpiCTSSIPRetransmitInvite": "cpiCTSSIPRetransmitInvite", 					"cpiCTSSIPRetransmitNonInvite": "cpiCTSSIPRetransmitNonInvite", 					"cpiDropMGAllocConnReq": "cpiDropMGAllocConnReq", 					"cpiDropRateAlarm": "cpiDropRateAlarm", 					"cpiExceptionService": "cpiExceptionService", 					"cpiFailRateAlarm": "cpiFailRateAlarm", 					"cpiFailSCTPFastRetransIncr": "cpiFailSCTPFastRetransIncr", 					"cpiFailSCTPFastRetransRate": "cpiFailSCTPFastRetransRate", 					"cpiFailSCTPSRTT1Incr": "cpiFailSCTPSRTT1Incr", 					"cpiFailSCTPSRTT2Incr": "cpiFailSCTPSRTT2Incr", 					"cpiFailSCTPT3RetransIncr": "cpiFailSCTPT3RetransIncr", 					"cpiFailSCTPT3RetransRate": "cpiFailSCTPT3RetransRate", 					"cpiFileSysUsage": "cpiFileSysUsage", 					"cpiMemAllocFail": "cpiMemAllocFail", 					"cpiNumOfLICDRDel": "cpiNumOfLICDRDel", 					"cpiReinitServiceSelf": "cpiReinitServiceSelf", 					"cpiSIPRetransmitInvite": "cpiSIPRetransmitInvite", 					"cpiSIPRetransmitNonInvite": "cpiSIPRetransmitNonInvite", 					"cpiSS7DropSCTPPktsRcvd": "cpiSS7DropSCTPPktsRcvd", 					"cpiSS7FailSCTPFastRetransRate": "cpiSS7FailSCTPFastRetransRate", 					"cpiStabilityAlarm": "cpiStabilityAlarm", 					"cpuOverload": "cpuOverload", 					"databaseConnectionLost": "databaseConnectionLost", 					"databaseReplicationLinkDown": "databaseReplicationLinkDown", 					"databaseSizeExhausted": "databaseSizeExhausted", 					"dbHighCpuUtilization": "dbHighCpuUtilization", 					"dbOffline": "dbOffline", 					"dbStatusUnexpected": "dbStatusUnexpected", 					"degradedResource": "degradedResource", 					"degrow": "degrow", 					"deviceServerCxnLost": "deviceServerCxnLost", 					"diamLinkDown": "diamLinkDown", 					"diamMaxClientsExceeded": "diamMaxClientsExceeded", 					"dnsThreshold": "dnsThreshold", 					"ethernetError": "ethernetError", 					"ethernetLinkDown": "ethernetLinkDown", 					"externalConnectivity": "externalConnectivity", 					"featureLicenseExpiration": "featureLicenseExpiration", 					"featureLicenseKeyNearExpiration": "featureLicenseKeyNearExpiration", 					"featureLockValidationError": "featureLockValidationError", 					"fqdnError": "fqdnError", 					"fru": "fru",	 					"gatewayCongestion": "gatewayCongestion", 					"gatewayForcedOOS": "gatewayForcedOOS", 					"gatewayProvisioningError": "gatewayProvisioningError", 					"gatewayUnreachable": "gatewayUnreachable", 					"gatewayUnregistered": "gatewayUnregistered", 					"globalParameterNotFound": "globalParameterNotFound", 					"glsInvalidCellId": "glsInvalidCellId", 					"glsServerUnavailable": "glsServerUnavailable", 					"grow": "grow", 					"h248MessageBufferDepletion": "h248MessageBufferDepletion", 					"hlrSyncConnection": "hlrSyncConnection", 					"hlrSyncQueue": "hlrSyncQueue", 					"hostDown": "hostDown", 					"hostReset": "hostReset", 					"invalidGateway": "invalidGateway", 					"iriLinkDown": "iriLinkDown", 					"ldapServerConnectionLost": "ldapServerConnectionLost", 					"lispBufferFullExternalLIG": "lispBufferFullExternalLIG", 					"llcDown": "llcDown", 					"logicalLinkDown": "logicalLinkDown", 					"logicalLinkNotFound": "logicalLinkNotFound", 					"logRotateThreshold": "logRotateThreshold", 					"memoryOverload": "memoryOverload", 					"nodeConfigFailure": "nodeConfigFailure", 					"nodeGroupOOS": "nodeGroupOOS", 					"nodeOOS": "nodeOOS", 					"nonCompliantFaultGroupMemberState": "nonCompliantFaultGroupMemberState", 					"nonCsAddrChannelDepletion": "nonCsAddrChannelDepletion", 					"numberOfTuplesInUse": "numberOfTuplesInUse", 					"osSecInfoModificationDetected": "osSecInfoModificationDetected", 					"osSecInformationMissing": "osSecInformationMissing", 					"osSecUnexpectedInformation": "osSecUnexpectedInformation", 					"pdnsMySqlReplication": "pdnsMySqlReplication", 					"pktCorruptionDetectedViaRCCLANCheck": "pktCorruptionDetectedViaRCCLANCheck", 					"platformCommandFailure": "platformCommandFailure", 					"pmDataNotCollected": "pmDataNotCollected", 					"prdbConnectWithAlternateFailure": "prdbConnectWithAlternateFailure", 					"prdbSyncDataToAlternateFailure": "prdbSyncDataToAlternateFailure", 					"preAllocatedResourceOverload": "preAllocatedResourceOverload", 					"prifSocketError": "prifSocketError", 					"processDown": "processDown", 					"processNotStarted": "processNotStarted", 					"provisioningInhibitedMode": "provisioningInhibitedMode", 					"prsCallInstanceExceeded": "prsCallInstanceExceeded", 					"prsCpuOverload": "prsCpuOverload", 					"prsDatabaseMigrationFailure": "prsDatabaseMigrationFailure", 					"prsFailureToConnectWithPRDB": "prsFailureToConnectWithPRDB", 					"prsQueueExceeded": "prsQueueExceeded", 					"rccInhibitedMode": "rccInhibitedMode", 					"remotedbLinkDown": "remotedbLinkDown", 					"remoteQueryServerFailure": "remoteQueryServerFailure", 					"restore": "restore", 					"serviceCFGDataTimestampError": "serviceCFGDataTimestampError", 					"serviceCommCxnLost": "serviceCommCxnLost", 					"serviceOnewayCommunication": "serviceOnewayCommunication", 					"sheddingOverload": "sheddingOverload", 					"simxml": "simxml", 					"sipLinkSetMaxQuarantineList": "sipLinkSetMaxQuarantineList", 					"sipLinkSetUnavailable": "sipLinkSetUnavailable", 					"sipLinkUnavailable": "sipLinkUnavailable", 					"smdiSocketError": "smdiSocketError", 					"socketError": "socketError", 					"softwareAllocatedResourceOverload": "softwareAllocatedResourceOverload", 					"softwareComponentDown": "softwareComponentDown", 					"softwareComponentStandbyNotReady": "softwareComponentStandbyNotReady", 					"softwareLicense": "softwareLicense", 					"svcdegrow": "svcdegrow", 					"svcgrow": "svcgrow", 					"swVersionMismatch": "swVersionMismatch", 					"tftpDownloadCorrupt": "tftpDownloadCorrupt", 					"timeStampValueOutOfSystemRange": "timeStampValueOutOfSystemRange", 					"tlsInitError": "tlsInitError", 					"transactionHandlerBlockDepletion": "transactionHandlerBlockDepletion", 					"upgrade": "upgrade", 					"usageOfSyncTable": "usageOfSyncTable", 					"utHttpProxyConnectionDown": "utHttpProxyConnectionDown", 					"wpifSocketError": "wpifSocketError", 					"BackupFailure": "BackupFailure", 					"Configuration": "Configuration", 					"COTRecordTransferFailure": "COTRecordTransferFailure", 					"CPMUSERDATAINCONSITENCY": "CPMUSERDATAINCONSITENCY", 					"CPMUSERDATARESTORED": "CPMUSERDATARESTORED", 					"EventQueueCapacity": "EventQueueCapacity", 					"ICMPFailure": "ICMPFailure", 					"IPsecConfig": "IPsecConfig", 					"LinkDown": "LinkDown", 					"NotifyDisabled": "NotifyDisabled", 					"NotifyLocked": "NotifyLocked", 					"NumTL1MeasThresh": "NumTL1MeasThresh", 					"RADIUSTOLDAPFAILURE": "RADIUSTOLDAPFAILURE", 					"ROOTACCESSDENIED": "ROOTACCESSDENIED", 					"ROOTFTPVIOLATION": "ROOTFTPVIOLATION", 					"ROOTLOGINVIOLATION": "ROOTLOGINVIOLATION", 					"ROOTSSHLOGINVIOLATION": "ROOTSSHLOGINVIOLATION", 					"SetupAAAFailure": "SetupAAAFailure", 					"SNETrapOverload": "SNETrapOverload", 					"SNMPAuthenticationFailure": "SNMPAuthenticationFailure", 					"SNMPFailure": "SNMPFailure", 					"SUTOROOTFAILURE": "SUTOROOTFAILURE", 					"SYSTEMTrapOverload": "SYSTEMTrapOverload", 					"ThresholdCrossed": "ThresholdCrossed", 					"UndiscoveredObject": "UndiscoveredObject", 					"WriteAAAFailure": "WriteAAAFailure" 				} 			}, 			"Trinity": { 				"vf": { 					"aSBG": "aSBG", 					"nSBG": "nSBG", 					"tSBG": "tSBG" 				}, 				"vfc": { 					"pld": "PL - Payload Processor", 					"scr": "SC - System Controller" 				}, 				"location": { 					"SNDGCA64": "San Diego SAN3", 					"ALPRGAED": "Alpharetta PDK1", 					"LSLEILAA":"Lisle DPA3"	 				}, 				"alarmCondition": { 					"A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started", 					"BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed", 					"BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed", 					"COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed", 					"COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed", 					"COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned", 					"COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable", 					"COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error", 					"COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied", 					"File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded", 					"File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded", 					"LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication", 					"LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency", 					"LOTC+Disk+Usage":"LOTC Disk Usage", 					"LOTC+memory+Usage":"LOTC memory Usage", 					"LOTC+Time+Synchronization":"LOTC Time Synchronization", 					"SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down", 					"SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled", 					"SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled", 					"SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked", 					"SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached", 					"SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data", 					"SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ", 					"SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received", 					"SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected", 					"SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received", 					"SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ", 					"SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate", 					"SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server", 					"SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service", 					"SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling", 					"SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call", 					"SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data", 					"SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure", 					"SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure", 					"SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded", 					"SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine", 					"SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold", 					"SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated", 					"SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected", 					"SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked", 					"SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable", 					"SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable", 					"SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling", 					"SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported", 					"SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached", 					"SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated", 					"SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out", 					"SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type" 					} 			}, 			"vProbes": { 				"vf": { 				}, 				"vfc": { 				}, 				"location": { 				}, 				"alarmCondition": { 				} 			} 		} 	} }
-globalPropsPartialTest={"collector": {"topicPublishes": {"DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP",	"GFP-IP--SNMP-TRAPS" : "GFP-IP--SNMP-TRAPS"	}	},	"string_match": { 		"topicPublishes": { 			"DCAE-CL-EVENT": "DCAE-CL-EVENT" 		}, 		"aaiMatchingFields": { 			"VMID": "VMID", 			"Identiy": "Identiy", 			"VNFNAME": "VNFNAME", 			"LOCID": "LOCID", 			"VServerSelfLink": "VServerSelfLink", 			"ProvStatus": "Provstatus", 			"OAMIPV4": "OAMIPV4", 			"OAMIPV6": "OAMIPV6", 			"VMNAME": "VMNAME", 			"TenantID":"TenantID", 			"in_maint":"in_maint", 			"is_closed_loop_disabled":"is_closed_loop_disabled", 			"Location":"Location", 			"OAM_network_name":"OAM_network_name" 		}, 		"aaiSendFields": { 			"VMID": "VMID", 			"Identiy": "Identiy", 			"VNFNAME": "VNFNAME", 			"LOCID": "LOCID", 			"VServerSelfLink": "VServerSelfLink", 			"Provstatus": "Provstatus", 			"OAMIPV4": "OAMIPV4", 			"OAMIPV6": "OAMIPV6", 			"VMNAME": "VMNAME", 			"TenantID":"TenantID", 			"in_maint":"in_maint", 			"is_closed_loop_disabled":"is_closed_loop_disabled", 			"Location":"Location", 			"OAM_network_name":"OAM_network_name" 		}, 		"eventSourceType": { 			"f5BigIP": "f5BigIP", 			"vSBG_Alarms": "vSBG_Alarms", 			"vCTS_Alarms": "vCTS_Alarms" 		}, 		"eventSeverity": { 			"NORMAL": "NORMAL", 			"not-NORMAL": "not-NORMAL", 			"WARNING": "WARNING", 			"MINOR": "MINOR", 			"MAJOR": "MAJOR", 			"CRITICAL": "CRITICAL" 		}, 		"timeWindow": 0, 		"ageLimit": 1600, 		"outputEventName": { 			"": "", 			"OnSet": "OnSet", 			"Abatement": "Abatement" 		}, 		"createClosedLoopEventId": { 			"Initial": "Initial", 			"Close": "Close" 		} 	}, 	"global": { 		"service": { 			"": "", 			"vUSP": "vUSP", 			"vSCP": "vSCP", 			"vProbes": "vProbes" 		} 	}, 	"policy": { 		"timeout": 5, 		"recipe": { 			"": "", 			"restart": "Restart", 			"rebuild": "Rebuild", 			"migrate": "Migrate" 		}, 		"maxRetries": "3", 		"retryTimeLimit": 180, 		"resource": { 			"vCTS": "vCTS", 			"v3CDB": "v3CDB", 			"vUDR": "vUDR", 			"vCOM": "vCOM", 			"vRAR": "vRAR", 			"vLCS": "vLCS", 			"vUDR-BE": "vUDR-BE", 			"vDBE": "vDBE" 		}, 		"parentPolicyConditions": { 			"Failure_Retries": "Failure: Max Retries Exceeded", 			"Failure_Timeout": "Failure: Time Limit Exceeded", 			"Failure_Exception": "Failure: Exception", 			"Failure": "Failure: Other", 			"Success": "Success" 		} 	}}
+globalProps={"global": { 		"service": { 			"": "", 			"vUSP": "vUSP", 			"vSCP": "vSCP", 			"vProbes": "vProbes" 		} 	}, 	"policy": { 		"timeout": 5, 		"recipe": { 			"": "", 			"restart": "Restart", 			"rebuild": "Rebuild", 			"migrate": "Migrate" 		}, 		"maxRetries": "3", 		"retryTimeLimit": 180, 		"resource": { 			"vCTS": "vCTS", 			"v3CDB": "v3CDB", 			"vUDR": "vUDR", 			"vCOM": "vCOM", 			"vRAR": "vRAR", 			"vLCS": "vLCS", 			"vUDR-BE": "vUDR-BE", 			"vDBE": "vDBE" 		}, 		"parentPolicyConditions": { 			"Failure_Retries": "Failure: Max Retries Exceeded", 			"Failure_Timeout": "Failure: Time Limit Exceeded", 			"Failure_Exception": "Failure: Exception", 			"Failure": "Failure: Other", 			"Success": "Success" 		} 	}, 	"shared": { 		"byService": { 			"": { 				"vf": { 				}, 				"vfc": { 				}, 				"location": { 				}, 				"alarmCondition": { 				} 			}, 			"vSCP": { 				"vf": { 					"frwl_scp": "FW" 				}, 				"vfc": { 					"FW": "FW" 				}, 				"location": { 					"AKRNOHAH": "Akron", 					"ALLNTXSA": "Allen-2" 				}, 				"alarmCondition": { 					"authenticationFailure": "authenticationFailure", 					"bigipActive": "bigipActive", 					"bigipActiveActive": "bigipActiveActive", 					"bigipAgentRestart": "bigipAgentRestart", 					"bigipAgentShutdown": "bigipAgentShutdown", 					"bigipAgentStart": "bigipAgentStart", 					"bigipAggrReaperStateChange": "bigipAggrReaperStateChange", 					"bigipAomCpuTempTooHigh": "bigipAomCpuTempTooHigh", 					"bigipARPConflict": "bigipARPConflict", 					"bigipAsmBruteForceAttackDetected": "bigipAsmBruteForceAttackDetected", 					"bigipAsmDosAttackDetected": "bigipAsmDosAttackDetected", 					"bigipAsmFtpRequestBlocked": "bigipAsmFtpRequestBlocked", 					"bigipAsmFtpRequestViolation": "bigipAsmFtpRequestViolation", 					"bigipAsmRequestBlocked": "bigipAsmRequestBlocked", 					"bigipAsmRequestViolation": "bigipAsmRequestViolation", 					"bigipAsmSmtpRequestBlocked": "bigipAsmSmtpRequestBlocked", 					"bigipAsmSmtpRequestViolation": "bigipAsmSmtpRequestViolation", 					"bigipAuthFailed": "bigipAuthFailed", 					"bigipAvrAlertsMetricSmtp": "bigipAvrAlertsMetricSmtp", 					"bigipAvrAlertsMetricSnmp": "bigipAvrAlertsMetricSnmp", 					"bigipBladeNoPower": "bigipBladeNoPower", 					"bigipBladeOffline": "bigipBladeOffline", 					"bigipBladeTempHigh": "bigipBladeTempHigh", 					"bigipChassisFanBad": "bigipChassisFanBad", 					"bigipChassisPowerSupplyBad": "bigipChassisPowerSupplyBad", 					"bigipChassisTempHigh": "bigipChassisTempHigh", 					"bigipChmandAlertFanTrayBad": "bigipChmandAlertFanTrayBad", 					"bigipClusterdNoResponse": "bigipClusterdNoResponse", 					"bigipClusterPrimaryChanged": "bigipClusterPrimaryChanged", 					"bigipCompLimitExceeded": "bigipCompLimitExceeded", 					"bigipConfigLoaded": "bigipConfigLoaded", 					"bigipCpuFanSpeedBad": "bigipCpuFanSpeedBad", 					"bigipCpuFanSpeedLow": "bigipCpuFanSpeedLow", 					"bigipCpuTempHigh": "bigipCpuTempHigh", 					"bigipDiskPartitionGrowth": "bigipDiskPartitionGrowth", 					"bigipDiskPartitionWarn": "bigipDiskPartitionWarn", 					"bigipDnsRequestRateLimiterEngaged": "bigipDnsRequestRateLimiterEngaged", 					"bigipDosAttackStart": "bigipDosAttackStart", 					"bigipDosAttackStop": "bigipDosAttackStop", 					"bigipExternalLinkChange": "bigipExternalLinkChange", 					"bigipFeatureFailed": "bigipFeatureFailed", 					"bigipFeatureOnline": "bigipFeatureOnline",	 					"bigipFipsDeviceError": "bigipFipsDeviceError", 					"bigipGtmAppAvail": "bigipGtmAppAvail", 					"bigipGtmAppNotAvail": "bigipGtmAppNotAvail", 					"bigipGtmAppObjAvail": "bigipGtmAppObjAvail", 					"bigipGtmAppObjNotAvail": "bigipGtmAppObjNotAvail", 					"bigipGtmBig3dSslCertExpired": "bigipGtmBig3dSslCertExpired", 					"bigipGtmBig3dSslCertWillExpire": "bigipGtmBig3dSslCertWillExpire", 					"bigipGtmBoxAvail": "bigipGtmBoxAvail", 					"bigipGtmBoxNotAvail": "bigipGtmBoxNotAvail", 					"bigipGtmDcAvail": "bigipGtmDcAvail", 					"bigipGtmDcDisabled": "bigipGtmDcDisabled", 					"bigipGtmDcEnabled": "bigipGtmDcEnabled", 					"bigipGtmDcNotAvail": "bigipGtmDcNotAvail", 					"bigipGtmJoinedGroup": "bigipGtmJoinedGroup", 					"bigipGtmKeyGenerationExpiration": "bigipGtmKeyGenerationExpiration", 					"bigipGtmKeyGenerationRollover": "bigipGtmKeyGenerationRollover", 					"bigipGtmLeftGroup": "bigipGtmLeftGroup", 					"bigipGtmLinkAvail": "bigipGtmLinkAvail", 					"bigipGtmLinkDisabled": "bigipGtmLinkDisabled", 					"bigipGtmLinkEnabled": "bigipGtmLinkEnabled", 					"bigipGtmLinkNotAvail": "bigipGtmLinkNotAvail", 					"bigipGtmPoolAvail": "bigipGtmPoolAvail", 					"bigipGtmPoolDisabled": "bigipGtmPoolDisabled", 					"bigipGtmPoolEnabled": "bigipGtmPoolEnabled", 					"bigipGtmPoolMbrAvail": "bigipGtmPoolMbrAvail", 					"bigipGtmPoolMbrDisabled": "bigipGtmPoolMbrDisabled", 					"bigipGtmPoolMbrEnabled": "bigipGtmPoolMbrEnabled", 					"bigipGtmPoolMbrNotAvail": "bigipGtmPoolMbrNotAvail", 					"bigipGtmPoolNotAvail": "bigipGtmPoolNotAvail", 					"bigipGtmProberPoolDisabled": "bigipGtmProberPoolDisabled", 					"bigipGtmProberPoolEnabled": "bigipGtmProberPoolEnabled", 					"bigipGtmProberPoolMbrDisabled": "bigipGtmProberPoolMbrDisabled", 					"bigipGtmProberPoolMbrEnabled": "bigipGtmProberPoolMbrEnabled", 					"bigipGtmProberPoolMbrStatusChange": "bigipGtmProberPoolMbrStatusChange", 					"bigipGtmProberPoolMbrStatusChangeReason": "bigipGtmProberPoolMbrStatusChangeReason", 					"bigipGtmProberPoolStatusChange": "bigipGtmProberPoolStatusChange", 					"bigipGtmProberPoolStatusChangeReason": "bigipGtmProberPoolStatusChangeReason", 					"bigipGtmRequestRateLimiterEngaged": "bigipGtmRequestRateLimiterEngaged", 					"bigipGtmServerAvail": "bigipGtmServerAvail", 					"bigipGtmServerDisabled": "bigipGtmServerDisabled", 					"bigipGtmServerEnabled": "bigipGtmServerEnabled", 					"bigipGtmServerNotAvail": "bigipGtmServerNotAvail", 					"bigipGtmSslCertExpired": "bigipGtmSslCertExpired", 					"bigipGtmSslCertWillExpire": "bigipGtmSslCertWillExpire", 					"bigipGtmVsAvail": "bigipGtmVsAvail", 					"bigipGtmVsDisabled": "bigipGtmVsDisabled", 					"bigipGtmVsEnabled": "bigipGtmVsEnabled", 					"bigipGtmVsNotAvail": "bigipGtmVsNotAvail", 					"bigipGtmWideIpAvail": "bigipGtmWideIpAvail", 					"bigipGtmWideIpDisabled": "bigipGtmWideIpDisabled", 					"bigipGtmWideIpEnabled": "bigipGtmWideIpEnabled", 					"bigipGtmWideIpNotAvail": "bigipGtmWideIpNotAvail", 					"bigipHardDiskFailure": "bigipHardDiskFailure", 					"bigipInetPortExhaustion": "bigipInetPortExhaustion", 					"bigipLibhalBladePoweredOff": "bigipLibhalBladePoweredOff", 					"bigipLibhalDiskBayRemoved": "bigipLibhalDiskBayRemoved", 					"bigipLibhalSensorAlarmCritical": "bigipLibhalSensorAlarmCritical", 					"bigipLibhalSsdLogicalDiskRemoved": "bigipLibhalSsdLogicalDiskRemoved", 					"bigipLibhalSsdPhysicalDiskRemoved": "bigipLibhalSsdPhysicalDiskRemoved", 					"bigipLicenseExpired": "bigipLicenseExpired", 					"bigipLicenseFailed": "bigipLicenseFailed", 					"bigipLogAlert": "bigipLogAlert", 					"bigipLogCrit": "bigipLogCrit", 					"bigipLogEmerg": "bigipLogEmerg", 					"bigipLogErr": "bigipLogErr", 					"bigipLogWarning": "bigipLogWarning", 					"bigipLtmVsAvail": "bigipLtmVsAvail", 					"bigipLtmVsDisabled": "bigipLtmVsDisabled", 					"bigipLtmVsEnabled": "bigipLtmVsEnabled", 					"bigipLtmVsUnavail": "bigipLtmVsUnavail", 					"bigipMemberRate": "bigipMemberRate", 					"bigipNetLinkDown": "bigipNetLinkDown", 					"bigipNodeDown": "bigipNodeDown", 					"bigipNodeRate": "bigipNodeRate", 					"bigipNodeUp": "bigipNodeUp", 					"bigipPacketRejected": "bigipPacketRejected", 					"bigipPsAbsent": "bigipPsAbsent", 					"bigipPsPowerOff": "bigipPsPowerOff", 					"bigipPsPowerOn": "bigipPsPowerOn", 					"bigipRaidDiskFailure": "bigipRaidDiskFailure", 					"bigipServiceDown": "bigipServiceDown", 					"bigipServiceUp": "bigipServiceUp", 					"bigipSsdMwiNearThreshold": "bigipSsdMwiNearThreshold", 					"bigipSsdMwiReachedThreshold": "bigipSsdMwiReachedThreshold", 					"bigipSslLimitExceeded": "bigipSslLimitExceeded", 					"bigipStandby": "bigipStandby", 					"bigipStandByFail": "bigipStandByFail", 					"bigipSystemCheckAlertCurrentHigh": "bigipSystemCheckAlertCurrentHigh", 					"bigipSystemCheckAlertCurrentLow": "bigipSystemCheckAlertCurrentLow", 					"bigipSystemCheckAlertFanSpeedLow": "bigipSystemCheckAlertFanSpeedLow", 					"bigipSystemCheckAlertMilliVoltageHigh": "bigipSystemCheckAlertMilliVoltageHigh", 					"bigipSystemCheckAlertMilliVoltageLow": "bigipSystemCheckAlertMilliVoltageLow", 					"bigipSystemCheckAlertPowerHigh": "bigipSystemCheckAlertPowerHigh", 					"bigipSystemCheckAlertPowerLow": "bigipSystemCheckAlertPowerLow", 					"bigipSystemCheckAlertTempHigh": "bigipSystemCheckAlertTempHigh", 					"bigipSystemCheckAlertVoltageHigh": "bigipSystemCheckAlertVoltageHigh", 					"bigipSystemCheckAlertVoltageLow": "bigipSystemCheckAlertVoltageLow", 					"bigipSystemShutdown": "bigipSystemShutdown", 					"bigipTamdAlert": "bigipTamdAlert", 					"bigipTrafficGroupActivate": "bigipTrafficGroupActivate", 					"bigipTrafficGroupActive": "bigipTrafficGroupActive", 					"bigipTrafficGroupDeactivate": "bigipTrafficGroupDeactivate", 					"bigipTrafficGroupForcedOffline": "bigipTrafficGroupForcedOffline", 					"bigipTrafficGroupOffline": "bigipTrafficGroupOffline", 					"bigipTrafficGroupStandby": "bigipTrafficGroupStandby", 					"bigipUnsolicitedRepliesExceededThreshold": "bigipUnsolicitedRepliesExceededThreshold", 					"bigipUpdateError": "bigipUpdateError", 					"bigipUpdatePriority": "bigipUpdatePriority", 					"bigipUpdateServer": "bigipUpdateServer", 					"bigipVcmpAlertsVcmpHBDetected": "bigipVcmpAlertsVcmpHBDetected", 					"bigipVcmpAlertsVcmpHBLost": "bigipVcmpAlertsVcmpHBLost", 					"bigipVcmpAlertsVcmpPowerOff": "bigipVcmpAlertsVcmpPowerOff", 					"bigipVcmpAlertsVcmpPowerOn": "bigipVcmpAlertsVcmpPowerOn", 					"bigipVirtualRate": "bigipVirtualRate", 					"coldStart": "coldStart", 					"emASMSigInstallComplete": "emASMSigInstallComplete", 					"emASMSigInstallFailed": "emASMSigInstallFailed", 					"emASMSigUpdateAvailable": "emASMSigUpdateAvailable", 					"emASMSigUpdateFailed": "emASMSigUpdateFailed", 					"emCertificateExpiration": "emCertificateExpiration", 					"emCpuUsage": "emCpuUsage", 					"emDeviceActiveMode": "emDeviceActiveMode", 					"emDeviceClockSkew": "emDeviceClockSkew", 					"emDeviceConfigSettingChanged": "emDeviceConfigSettingChanged", 					"emDeviceConfigSync": "emDeviceConfigSync", 					"emDeviceForcedOfflineMode": "emDeviceForcedOfflineMode", 					"emDeviceImpaired": "emDeviceImpaired", 					"emDeviceOfflineMode": "emDeviceOfflineMode", 					"emDeviceStandbyMode": "emDeviceStandbyMode", 					"emDeviceUnreachable": "emDeviceUnreachable", 					"emDiskUsage": "emDiskUsage", 					"emGatherServiceContractFailure": "emGatherServiceContractFailure", 					"emHaSyncFailed": "emHaSyncFailed", 					"emHotfixInstallComplete": "emHotfixInstallComplete", 					"emHotfixInstallFailed": "emHotfixInstallFailed", 					"emMemoryUsage": "emMemoryUsage", 					"emPerformanceStorageCap": "emPerformanceStorageCap", 					"emPerformanceStorageDays": "emPerformanceStorageDays", 					"emPerformanceThreshold": "emPerformanceThreshold", 					"emRaidDriveFailureDetected": "emRaidDriveFailureDetected", 					"emRaidDriveRebuildComplete": "emRaidDriveRebuildComplete", 					"emSchedBackupFailed": "emSchedBackupFailed", 					"emScheduledArchiveFailed": "emScheduledArchiveFailed", 					"emServiceContractExpiry": "emServiceContractExpiry", 					"emSoftwareInstallComplete": "emSoftwareInstallComplete", 					"emSoftwareInstallFailed": "emSoftwareInstallFailed", 					"emStatsCollectionRateCap": "emStatsCollectionRateCap", 					"emStatsDBConnectivityLost": "emStatsDBConnectivityLost", 					"emStatsDBConnectivityRestored": "emStatsDBConnectivityRestored", 					"fallingAlarm": "fallingAlarm", 					"ipv6IfStateChange": "ipv6IfStateChange", 					"linkDown": "linkDown", 					"linkUp": "linkUp", 					"mteEventSetFailure": "mteEventSetFailure", 					"mteTriggerFailure": "mteTriggerFailure", 					"mteTriggerFalling": "mteTriggerFalling", 					"mteTriggerFired": "mteTriggerFired", 					"mteTriggerRising": "mteTriggerRising", 					"netSnmpExampleHeartbeatNotification": "netSnmpExampleHeartbeatNotification", 					"newRoot": "newRoot", 					"nsNotifyRestart": "nsNotifyRestart", 					"nsNotifyShutdown": "nsNotifyShutdown", 					"nsNotifyStart": "nsNotifyStart", 					"risingAlarm": "risingAlarm", 					"schedActionFailure": "schedActionFailure", 					"smScriptAbort": "smScriptAbort", 					"smScriptException": "smScriptException", 					"smScriptResult": "smScriptResult", 					"topologyChange": "topologyChange", 					"ucdShutdown": "ucdShutdown", 					"ucdStart": "ucdStart", 					"warmStart": "warmStart" 				} 			}, 			"vUSP": { 				"vf": { 					"ctsf-xxx": "vCTS" 				}, 				"vfc": { 					"vCTS - CFED": "vCTS - CFED", 					"vCTS - Config": "vCTS - Config", 					"vCTS - DFED": "vCTS - DFED", 					"vCTS - TAFE-fsd": "vCTS - TAFE-fsd", 					"vCTS - GLS": "vCTS - GLS", 					"vCTS - XXX": "vCTS - XXX", 					"vCTS - Management Interface": "vCTS - Management Interface", 					"vCTS - SPFE-pfe": "vCTS - SPFE-pfe", 					"vCTS - DNS": "vCTS - DNS", 					"vCTS - SPFE-spd": "vCTS - SPFE-spd", 					"vCTS - SPFE-spt": "vCTS - SPFE-spt", 					"vCTS - TAFE-tas": "vCTS - TAFE-tas" 				}, 				"location": { 					"SNDGCA06": "San Diego(core site) A06", 					"SNDGCA64": "San Diego(core site) A64", 					"SNANTXCA": "San Antonio(core site)", 					"KSCYMO09": "Kansas City(core site)", 					"kings_mountain": "Kings Mountain(AMG)", 					"Secaucus": "Secaucus(AMG)", 					"lisle": "Lisle(AMG)", 					"concord": "Concord(AMG)", 					"houston": "Houston(AMG)", 					"akron": "Akron(AMG)" 				}, 				"alarmCondition": { 					"acrTemporaryBufferOverload": "acrTemporaryBufferOverload", 					"adnsExtendedTTLcaching": "adnsExtendedTTLcaching", 					"adnsQueryFailureCaching": "adnsQueryFailureCaching", 					"adnsQueueCongestion": "adnsQueueCongestion", 					"asdaCommunicationFailure": "asdaCommunicationFailure", 					"asdaRequestQueue": "asdaRequestQueue", 					"capacityLicenseKeyExpiration": "capacityLicenseKeyExpiration", 					"capacityLicenseKeyNearExpiration": "capacityLicenseKeyNearExpiration", 					"capacityLicenseKeyValidationError": "capacityLicenseKeyValidationError", 					"cardConnectionLost": "cardConnectionLost", 					"ccdbCommunicationFailure": "ccdbCommunicationFailure", 					"cpiAlrmCritical": "cpiAlrmCritical", 					"cpiAlrmMajor": "cpiAlrmMajor", 					"cpiAlrmMinor": "cpiAlrmMinor", 					"cpiAlrmWarning": "cpiAlrmWarning", 					"cpiAsrtEsc": "cpiAsrtEsc", 					"cpiAsrtNonEsc": "cpiAsrtNonEsc", 					"cpiAsrtNonEscCritical": "cpiAsrtNonEscCritical", 					"cpiAsrtNonEscMajor": "cpiAsrtNonEscMajor", 					"cpiAsrtNonEscMinor": "cpiAsrtNonEscMinor", 					"cpiAudErrCount": "cpiAudErrCount", 					"cpiAudManAct": "cpiAudManAct", 					"cpiAudNewEvent": "cpiAudNewEvent", 					"cpiCompleteRateAlarm": "cpiCompleteRateAlarm", 					"cpiCTS3xxFailRate": "cpiCTS3xxFailRate", 					"cpiCTS4xxFailRate": "cpiCTS4xxFailRate", 					"cpiCTS5xxFailRate": "cpiCTS5xxFailRate", 					"cpiCTS6xxFailRate": "cpiCTS6xxFailRate", 					"cpiCTSSIPRetransmitInvite": "cpiCTSSIPRetransmitInvite", 					"cpiCTSSIPRetransmitNonInvite": "cpiCTSSIPRetransmitNonInvite", 					"cpiDropMGAllocConnReq": "cpiDropMGAllocConnReq", 					"cpiDropRateAlarm": "cpiDropRateAlarm", 					"cpiExceptionService": "cpiExceptionService", 					"cpiFailRateAlarm": "cpiFailRateAlarm", 					"cpiFailSCTPFastRetransIncr": "cpiFailSCTPFastRetransIncr", 					"cpiFailSCTPFastRetransRate": "cpiFailSCTPFastRetransRate", 					"cpiFailSCTPSRTT1Incr": "cpiFailSCTPSRTT1Incr", 					"cpiFailSCTPSRTT2Incr": "cpiFailSCTPSRTT2Incr", 					"cpiFailSCTPT3RetransIncr": "cpiFailSCTPT3RetransIncr", 					"cpiFailSCTPT3RetransRate": "cpiFailSCTPT3RetransRate", 					"cpiFileSysUsage": "cpiFileSysUsage", 					"cpiMemAllocFail": "cpiMemAllocFail", 					"cpiNumOfLICDRDel": "cpiNumOfLICDRDel", 					"cpiReinitServiceSelf": "cpiReinitServiceSelf", 					"cpiSIPRetransmitInvite": "cpiSIPRetransmitInvite", 					"cpiSIPRetransmitNonInvite": "cpiSIPRetransmitNonInvite", 					"cpiSS7DropSCTPPktsRcvd": "cpiSS7DropSCTPPktsRcvd", 					"cpiSS7FailSCTPFastRetransRate": "cpiSS7FailSCTPFastRetransRate", 					"cpiStabilityAlarm": "cpiStabilityAlarm", 					"cpuOverload": "cpuOverload", 					"databaseConnectionLost": "databaseConnectionLost", 					"databaseReplicationLinkDown": "databaseReplicationLinkDown", 					"databaseSizeExhausted": "databaseSizeExhausted", 					"dbHighCpuUtilization": "dbHighCpuUtilization", 					"dbOffline": "dbOffline", 					"dbStatusUnexpected": "dbStatusUnexpected", 					"degradedResource": "degradedResource", 					"degrow": "degrow", 					"deviceServerCxnLost": "deviceServerCxnLost", 					"diamLinkDown": "diamLinkDown", 					"diamMaxClientsExceeded": "diamMaxClientsExceeded", 					"dnsThreshold": "dnsThreshold", 					"ethernetError": "ethernetError", 					"ethernetLinkDown": "ethernetLinkDown", 					"externalConnectivity": "externalConnectivity", 					"featureLicenseExpiration": "featureLicenseExpiration", 					"featureLicenseKeyNearExpiration": "featureLicenseKeyNearExpiration", 					"featureLockValidationError": "featureLockValidationError", 					"fqdnError": "fqdnError", 					"fru": "fru",	 					"gatewayCongestion": "gatewayCongestion", 					"gatewayForcedOOS": "gatewayForcedOOS", 					"gatewayProvisioningError": "gatewayProvisioningError", 					"gatewayUnreachable": "gatewayUnreachable", 					"gatewayUnregistered": "gatewayUnregistered", 					"globalParameterNotFound": "globalParameterNotFound", 					"glsInvalidCellId": "glsInvalidCellId", 					"glsServerUnavailable": "glsServerUnavailable", 					"grow": "grow", 					"h248MessageBufferDepletion": "h248MessageBufferDepletion", 					"hlrSyncConnection": "hlrSyncConnection", 					"hlrSyncQueue": "hlrSyncQueue", 					"hostDown": "hostDown", 					"hostReset": "hostReset", 					"invalidGateway": "invalidGateway", 					"iriLinkDown": "iriLinkDown", 					"ldapServerConnectionLost": "ldapServerConnectionLost", 					"lispBufferFullExternalLIG": "lispBufferFullExternalLIG", 					"llcDown": "llcDown", 					"logicalLinkDown": "logicalLinkDown", 					"logicalLinkNotFound": "logicalLinkNotFound", 					"logRotateThreshold": "logRotateThreshold", 					"memoryOverload": "memoryOverload", 					"nodeConfigFailure": "nodeConfigFailure", 					"nodeGroupOOS": "nodeGroupOOS", 					"nodeOOS": "nodeOOS", 					"nonCompliantFaultGroupMemberState": "nonCompliantFaultGroupMemberState", 					"nonCsAddrChannelDepletion": "nonCsAddrChannelDepletion", 					"numberOfTuplesInUse": "numberOfTuplesInUse", 					"osSecInfoModificationDetected": "osSecInfoModificationDetected", 					"osSecInformationMissing": "osSecInformationMissing", 					"osSecUnexpectedInformation": "osSecUnexpectedInformation", 					"pdnsMySqlReplication": "pdnsMySqlReplication", 					"pktCorruptionDetectedViaRCCLANCheck": "pktCorruptionDetectedViaRCCLANCheck", 					"platformCommandFailure": "platformCommandFailure", 					"pmDataNotCollected": "pmDataNotCollected", 					"prdbConnectWithAlternateFailure": "prdbConnectWithAlternateFailure", 					"prdbSyncDataToAlternateFailure": "prdbSyncDataToAlternateFailure", 					"preAllocatedResourceOverload": "preAllocatedResourceOverload", 					"prifSocketError": "prifSocketError", 					"processDown": "processDown", 					"processNotStarted": "processNotStarted", 					"provisioningInhibitedMode": "provisioningInhibitedMode", 					"prsCallInstanceExceeded": "prsCallInstanceExceeded", 					"prsCpuOverload": "prsCpuOverload", 					"prsDatabaseMigrationFailure": "prsDatabaseMigrationFailure", 					"prsFailureToConnectWithPRDB": "prsFailureToConnectWithPRDB", 					"prsQueueExceeded": "prsQueueExceeded", 					"rccInhibitedMode": "rccInhibitedMode", 					"remotedbLinkDown": "remotedbLinkDown", 					"remoteQueryServerFailure": "remoteQueryServerFailure", 					"restore": "restore", 					"serviceCFGDataTimestampError": "serviceCFGDataTimestampError", 					"serviceCommCxnLost": "serviceCommCxnLost", 					"serviceOnewayCommunication": "serviceOnewayCommunication", 					"sheddingOverload": "sheddingOverload", 					"simxml": "simxml", 					"sipLinkSetMaxQuarantineList": "sipLinkSetMaxQuarantineList", 					"sipLinkSetUnavailable": "sipLinkSetUnavailable", 					"sipLinkUnavailable": "sipLinkUnavailable", 					"smdiSocketError": "smdiSocketError", 					"socketError": "socketError", 					"softwareAllocatedResourceOverload": "softwareAllocatedResourceOverload", 					"softwareComponentDown": "softwareComponentDown", 					"softwareComponentStandbyNotReady": "softwareComponentStandbyNotReady", 					"softwareLicense": "softwareLicense", 					"svcdegrow": "svcdegrow", 					"svcgrow": "svcgrow", 					"swVersionMismatch": "swVersionMismatch", 					"tftpDownloadCorrupt": "tftpDownloadCorrupt", 					"timeStampValueOutOfSystemRange": "timeStampValueOutOfSystemRange", 					"tlsInitError": "tlsInitError", 					"transactionHandlerBlockDepletion": "transactionHandlerBlockDepletion", 					"upgrade": "upgrade", 					"usageOfSyncTable": "usageOfSyncTable", 					"utHttpProxyConnectionDown": "utHttpProxyConnectionDown", 					"wpifSocketError": "wpifSocketError", 					"BackupFailure": "BackupFailure", 					"Configuration": "Configuration", 					"COTRecordTransferFailure": "COTRecordTransferFailure", 					"CPMUSERDATAINCONSITENCY": "CPMUSERDATAINCONSITENCY", 					"CPMUSERDATARESTORED": "CPMUSERDATARESTORED", 					"EventQueueCapacity": "EventQueueCapacity", 					"ICMPFailure": "ICMPFailure", 					"IPsecConfig": "IPsecConfig", 					"LinkDown": "LinkDown", 					"NotifyDisabled": "NotifyDisabled", 					"NotifyLocked": "NotifyLocked", 					"NumTL1MeasThresh": "NumTL1MeasThresh", 					"RADIUSTOLDAPFAILURE": "RADIUSTOLDAPFAILURE", 					"ROOTACCESSDENIED": "ROOTACCESSDENIED", 					"ROOTFTPVIOLATION": "ROOTFTPVIOLATION", 					"ROOTLOGINVIOLATION": "ROOTLOGINVIOLATION", 					"ROOTSSHLOGINVIOLATION": "ROOTSSHLOGINVIOLATION", 					"SetupAAAFailure": "SetupAAAFailure", 					"SNETrapOverload": "SNETrapOverload", 					"SNMPAuthenticationFailure": "SNMPAuthenticationFailure", 					"SNMPFailure": "SNMPFailure", 					"SUTOROOTFAILURE": "SUTOROOTFAILURE", 					"SYSTEMTrapOverload": "SYSTEMTrapOverload", 					"ThresholdCrossed": "ThresholdCrossed", 					"UndiscoveredObject": "UndiscoveredObject", 					"WriteAAAFailure": "WriteAAAFailure" 				} 			}, 			"Trinity": { 				"vf": { 					"aSBG": "aSBG", 					"nSBG": "nSBG", 					"tSBG": "tSBG" 				}, 				"vfc": { 					"pld": "PL - Payload Processor", 					"scr": "SC - System Controller" 				}, 				"location": { 					"SNDGCA64": "San Diego SAN3", 					"ALPRGAED": "Alpharetta PDK1", 					"LSLEILAA":"Lisle DPA3"	 				}, 				"alarmCondition": { 					"A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started", 					"BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed", 					"BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed", 					"COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed", 					"COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed", 					"COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned", 					"COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable", 					"COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error", 					"COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied", 					"File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded", 					"File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded", 					"LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication", 					"LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency", 					"LOTC+Disk+Usage":"LOTC Disk Usage", 					"LOTC+memory+Usage":"LOTC memory Usage", 					"LOTC+Time+Synchronization":"LOTC Time Synchronization", 					"SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down", 					"SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled", 					"SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled", 					"SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked", 					"SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached", 					"SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data", 					"SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ", 					"SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received", 					"SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected", 					"SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received", 					"SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ", 					"SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate", 					"SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server", 					"SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service", 					"SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling", 					"SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call", 					"SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data", 					"SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure", 					"SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure", 					"SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded", 					"SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine", 					"SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold", 					"SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated", 					"SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected", 					"SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked", 					"SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable", 					"SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable", 					"SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling", 					"SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported", 					"SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached", 					"SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated", 					"SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out", 					"SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type" 					} 			}, 			"vProbes": { 				"vf": { 				}, 				"vfc": { 				}, 				"location": { 				}, 				"alarmCondition": { 				} 			} 		} 	} }
+globalPropsPartial={"global": { 		"service": { 			"": "", 			"vUSP": "vUSP", 			"vSCP": "vSCP", 			"vProbes": "vProbes" 		} 	}, 	"policy": { 		"timeout": 5, 		"recipe": { 			"": "", 			"restart": "Restart", 			"rebuild": "Rebuild", 			"migrate": "Migrate" 		}, 		"maxRetries": "3", 		"retryTimeLimit": 180, 		"resource": { 			"vCTS": "vCTS", 			"v3CDB": "v3CDB", 			"vUDR": "vUDR", 			"vCOM": "vCOM", 			"vRAR": "vRAR", 			"vLCS": "vLCS", 			"vUDR-BE": "vUDR-BE", 			"vDBE": "vDBE" 		}, 		"parentPolicyConditions": { 			"Failure_Retries": "Failure: Max Retries Exceeded", 			"Failure_Timeout": "Failure: Time Limit Exceeded", 			"Failure_Exception": "Failure: Exception", 			"Failure": "Failure: Other", 			"Success": "Success" 		} 	}  }
+globalPropsTest={"global": { 		"service": { 			"": "", 			"vUSP": "vUSP", 			"vSCP": "vSCP", 			"vProbes": "vProbes" 		} 	}, 	"policy": { 		"timeout": 5, 		"recipe": { 			"": "", 			"restart": "Restart", 			"rebuild": "Rebuild", 			"migrate": "Migrate" 		}, 		"maxRetries": "3", 		"retryTimeLimit": 180, 		"resource": { 			"vCTS": "vCTS", 			"v3CDB": "v3CDB", 			"vUDR": "vUDR", 			"vCOM": "vCOM", 			"vRAR": "vRAR", 			"vLCS": "vLCS", 			"vUDR-BE": "vUDR-BE", 			"vDBE": "vDBE" 		}, 		"parentPolicyConditions": { 			"Failure_Retries": "Failure: Max Retries Exceeded", 			"Failure_Timeout": "Failure: Time Limit Exceeded", 			"Failure_Exception": "Failure: Exception", 			"Failure": "Failure: Other", 			"Success": "Success" 		} 	}, 	"shared": { 		"byService": { 			"": { 				"vf": { 				}, 				"vfc": { 				}, 				"location": { 				}, 				"alarmCondition": { 				} 			}, 			"vSCP": { 				"vf": { 					"frwl_scp": "FW" 				}, 				"vfc": { 					"FW": "FW" 				}, 				"location": { 					"AKRNOHAH": "Akron", 					"ALLNTXSA": "Allen-2" 				}, 				"alarmCondition": { 					"authenticationFailure": "authenticationFailure", 					"bigipActive": "bigipActive", 					"bigipActiveActive": "bigipActiveActive", 					"bigipAgentRestart": "bigipAgentRestart", 					"bigipAgentShutdown": "bigipAgentShutdown", 					"bigipAgentStart": "bigipAgentStart", 					"bigipAggrReaperStateChange": "bigipAggrReaperStateChange", 					"bigipAomCpuTempTooHigh": "bigipAomCpuTempTooHigh", 					"bigipARPConflict": "bigipARPConflict", 					"bigipAsmBruteForceAttackDetected": "bigipAsmBruteForceAttackDetected", 					"bigipAsmDosAttackDetected": "bigipAsmDosAttackDetected", 					"bigipAsmFtpRequestBlocked": "bigipAsmFtpRequestBlocked", 					"bigipAsmFtpRequestViolation": "bigipAsmFtpRequestViolation", 					"bigipAsmRequestBlocked": "bigipAsmRequestBlocked", 					"bigipAsmRequestViolation": "bigipAsmRequestViolation", 					"bigipAsmSmtpRequestBlocked": "bigipAsmSmtpRequestBlocked", 					"bigipAsmSmtpRequestViolation": "bigipAsmSmtpRequestViolation", 					"bigipAuthFailed": "bigipAuthFailed", 					"bigipAvrAlertsMetricSmtp": "bigipAvrAlertsMetricSmtp", 					"bigipAvrAlertsMetricSnmp": "bigipAvrAlertsMetricSnmp", 					"bigipBladeNoPower": "bigipBladeNoPower", 					"bigipBladeOffline": "bigipBladeOffline", 					"bigipBladeTempHigh": "bigipBladeTempHigh", 					"bigipChassisFanBad": "bigipChassisFanBad", 					"bigipChassisPowerSupplyBad": "bigipChassisPowerSupplyBad", 					"bigipChassisTempHigh": "bigipChassisTempHigh", 					"bigipChmandAlertFanTrayBad": "bigipChmandAlertFanTrayBad", 					"bigipClusterdNoResponse": "bigipClusterdNoResponse", 					"bigipClusterPrimaryChanged": "bigipClusterPrimaryChanged", 					"bigipCompLimitExceeded": "bigipCompLimitExceeded", 					"bigipConfigLoaded": "bigipConfigLoaded", 					"bigipCpuFanSpeedBad": "bigipCpuFanSpeedBad", 					"bigipCpuFanSpeedLow": "bigipCpuFanSpeedLow", 					"bigipCpuTempHigh": "bigipCpuTempHigh", 					"bigipDiskPartitionGrowth": "bigipDiskPartitionGrowth", 					"bigipDiskPartitionWarn": "bigipDiskPartitionWarn", 					"bigipDnsRequestRateLimiterEngaged": "bigipDnsRequestRateLimiterEngaged", 					"bigipDosAttackStart": "bigipDosAttackStart", 					"bigipDosAttackStop": "bigipDosAttackStop", 					"bigipExternalLinkChange": "bigipExternalLinkChange", 					"bigipFeatureFailed": "bigipFeatureFailed", 					"bigipFeatureOnline": "bigipFeatureOnline",	 					"bigipFipsDeviceError": "bigipFipsDeviceError", 					"bigipGtmAppAvail": "bigipGtmAppAvail", 					"bigipGtmAppNotAvail": "bigipGtmAppNotAvail", 					"bigipGtmAppObjAvail": "bigipGtmAppObjAvail", 					"bigipGtmAppObjNotAvail": "bigipGtmAppObjNotAvail", 					"bigipGtmBig3dSslCertExpired": "bigipGtmBig3dSslCertExpired", 					"bigipGtmBig3dSslCertWillExpire": "bigipGtmBig3dSslCertWillExpire", 					"bigipGtmBoxAvail": "bigipGtmBoxAvail", 					"bigipGtmBoxNotAvail": "bigipGtmBoxNotAvail", 					"bigipGtmDcAvail": "bigipGtmDcAvail", 					"bigipGtmDcDisabled": "bigipGtmDcDisabled", 					"bigipGtmDcEnabled": "bigipGtmDcEnabled", 					"bigipGtmDcNotAvail": "bigipGtmDcNotAvail", 					"bigipGtmJoinedGroup": "bigipGtmJoinedGroup", 					"bigipGtmKeyGenerationExpiration": "bigipGtmKeyGenerationExpiration", 					"bigipGtmKeyGenerationRollover": "bigipGtmKeyGenerationRollover", 					"bigipGtmLeftGroup": "bigipGtmLeftGroup", 					"bigipGtmLinkAvail": "bigipGtmLinkAvail", 					"bigipGtmLinkDisabled": "bigipGtmLinkDisabled", 					"bigipGtmLinkEnabled": "bigipGtmLinkEnabled", 					"bigipGtmLinkNotAvail": "bigipGtmLinkNotAvail", 					"bigipGtmPoolAvail": "bigipGtmPoolAvail", 					"bigipGtmPoolDisabled": "bigipGtmPoolDisabled", 					"bigipGtmPoolEnabled": "bigipGtmPoolEnabled", 					"bigipGtmPoolMbrAvail": "bigipGtmPoolMbrAvail", 					"bigipGtmPoolMbrDisabled": "bigipGtmPoolMbrDisabled", 					"bigipGtmPoolMbrEnabled": "bigipGtmPoolMbrEnabled", 					"bigipGtmPoolMbrNotAvail": "bigipGtmPoolMbrNotAvail", 					"bigipGtmPoolNotAvail": "bigipGtmPoolNotAvail", 					"bigipGtmProberPoolDisabled": "bigipGtmProberPoolDisabled", 					"bigipGtmProberPoolEnabled": "bigipGtmProberPoolEnabled", 					"bigipGtmProberPoolMbrDisabled": "bigipGtmProberPoolMbrDisabled", 					"bigipGtmProberPoolMbrEnabled": "bigipGtmProberPoolMbrEnabled", 					"bigipGtmProberPoolMbrStatusChange": "bigipGtmProberPoolMbrStatusChange", 					"bigipGtmProberPoolMbrStatusChangeReason": "bigipGtmProberPoolMbrStatusChangeReason", 					"bigipGtmProberPoolStatusChange": "bigipGtmProberPoolStatusChange", 					"bigipGtmProberPoolStatusChangeReason": "bigipGtmProberPoolStatusChangeReason", 					"bigipGtmRequestRateLimiterEngaged": "bigipGtmRequestRateLimiterEngaged", 					"bigipGtmServerAvail": "bigipGtmServerAvail", 					"bigipGtmServerDisabled": "bigipGtmServerDisabled", 					"bigipGtmServerEnabled": "bigipGtmServerEnabled", 					"bigipGtmServerNotAvail": "bigipGtmServerNotAvail", 					"bigipGtmSslCertExpired": "bigipGtmSslCertExpired", 					"bigipGtmSslCertWillExpire": "bigipGtmSslCertWillExpire", 					"bigipGtmVsAvail": "bigipGtmVsAvail", 					"bigipGtmVsDisabled": "bigipGtmVsDisabled", 					"bigipGtmVsEnabled": "bigipGtmVsEnabled", 					"bigipGtmVsNotAvail": "bigipGtmVsNotAvail", 					"bigipGtmWideIpAvail": "bigipGtmWideIpAvail", 					"bigipGtmWideIpDisabled": "bigipGtmWideIpDisabled", 					"bigipGtmWideIpEnabled": "bigipGtmWideIpEnabled", 					"bigipGtmWideIpNotAvail": "bigipGtmWideIpNotAvail", 					"bigipHardDiskFailure": "bigipHardDiskFailure", 					"bigipInetPortExhaustion": "bigipInetPortExhaustion", 					"bigipLibhalBladePoweredOff": "bigipLibhalBladePoweredOff", 					"bigipLibhalDiskBayRemoved": "bigipLibhalDiskBayRemoved", 					"bigipLibhalSensorAlarmCritical": "bigipLibhalSensorAlarmCritical", 					"bigipLibhalSsdLogicalDiskRemoved": "bigipLibhalSsdLogicalDiskRemoved", 					"bigipLibhalSsdPhysicalDiskRemoved": "bigipLibhalSsdPhysicalDiskRemoved", 					"bigipLicenseExpired": "bigipLicenseExpired", 					"bigipLicenseFailed": "bigipLicenseFailed", 					"bigipLogAlert": "bigipLogAlert", 					"bigipLogCrit": "bigipLogCrit", 					"bigipLogEmerg": "bigipLogEmerg", 					"bigipLogErr": "bigipLogErr", 					"bigipLogWarning": "bigipLogWarning", 					"bigipLtmVsAvail": "bigipLtmVsAvail", 					"bigipLtmVsDisabled": "bigipLtmVsDisabled", 					"bigipLtmVsEnabled": "bigipLtmVsEnabled", 					"bigipLtmVsUnavail": "bigipLtmVsUnavail", 					"bigipMemberRate": "bigipMemberRate", 					"bigipNetLinkDown": "bigipNetLinkDown", 					"bigipNodeDown": "bigipNodeDown", 					"bigipNodeRate": "bigipNodeRate", 					"bigipNodeUp": "bigipNodeUp", 					"bigipPacketRejected": "bigipPacketRejected", 					"bigipPsAbsent": "bigipPsAbsent", 					"bigipPsPowerOff": "bigipPsPowerOff", 					"bigipPsPowerOn": "bigipPsPowerOn", 					"bigipRaidDiskFailure": "bigipRaidDiskFailure", 					"bigipServiceDown": "bigipServiceDown", 					"bigipServiceUp": "bigipServiceUp", 					"bigipSsdMwiNearThreshold": "bigipSsdMwiNearThreshold", 					"bigipSsdMwiReachedThreshold": "bigipSsdMwiReachedThreshold", 					"bigipSslLimitExceeded": "bigipSslLimitExceeded", 					"bigipStandby": "bigipStandby", 					"bigipStandByFail": "bigipStandByFail", 					"bigipSystemCheckAlertCurrentHigh": "bigipSystemCheckAlertCurrentHigh", 					"bigipSystemCheckAlertCurrentLow": "bigipSystemCheckAlertCurrentLow", 					"bigipSystemCheckAlertFanSpeedLow": "bigipSystemCheckAlertFanSpeedLow", 					"bigipSystemCheckAlertMilliVoltageHigh": "bigipSystemCheckAlertMilliVoltageHigh", 					"bigipSystemCheckAlertMilliVoltageLow": "bigipSystemCheckAlertMilliVoltageLow", 					"bigipSystemCheckAlertPowerHigh": "bigipSystemCheckAlertPowerHigh", 					"bigipSystemCheckAlertPowerLow": "bigipSystemCheckAlertPowerLow", 					"bigipSystemCheckAlertTempHigh": "bigipSystemCheckAlertTempHigh", 					"bigipSystemCheckAlertVoltageHigh": "bigipSystemCheckAlertVoltageHigh", 					"bigipSystemCheckAlertVoltageLow": "bigipSystemCheckAlertVoltageLow", 					"bigipSystemShutdown": "bigipSystemShutdown", 					"bigipTamdAlert": "bigipTamdAlert", 					"bigipTrafficGroupActivate": "bigipTrafficGroupActivate", 					"bigipTrafficGroupActive": "bigipTrafficGroupActive", 					"bigipTrafficGroupDeactivate": "bigipTrafficGroupDeactivate", 					"bigipTrafficGroupForcedOffline": "bigipTrafficGroupForcedOffline", 					"bigipTrafficGroupOffline": "bigipTrafficGroupOffline", 					"bigipTrafficGroupStandby": "bigipTrafficGroupStandby", 					"bigipUnsolicitedRepliesExceededThreshold": "bigipUnsolicitedRepliesExceededThreshold", 					"bigipUpdateError": "bigipUpdateError", 					"bigipUpdatePriority": "bigipUpdatePriority", 					"bigipUpdateServer": "bigipUpdateServer", 					"bigipVcmpAlertsVcmpHBDetected": "bigipVcmpAlertsVcmpHBDetected", 					"bigipVcmpAlertsVcmpHBLost": "bigipVcmpAlertsVcmpHBLost", 					"bigipVcmpAlertsVcmpPowerOff": "bigipVcmpAlertsVcmpPowerOff", 					"bigipVcmpAlertsVcmpPowerOn": "bigipVcmpAlertsVcmpPowerOn", 					"bigipVirtualRate": "bigipVirtualRate", 					"coldStart": "coldStart", 					"emASMSigInstallComplete": "emASMSigInstallComplete", 					"emASMSigInstallFailed": "emASMSigInstallFailed", 					"emASMSigUpdateAvailable": "emASMSigUpdateAvailable", 					"emASMSigUpdateFailed": "emASMSigUpdateFailed", 					"emCertificateExpiration": "emCertificateExpiration", 					"emCpuUsage": "emCpuUsage", 					"emDeviceActiveMode": "emDeviceActiveMode", 					"emDeviceClockSkew": "emDeviceClockSkew", 					"emDeviceConfigSettingChanged": "emDeviceConfigSettingChanged", 					"emDeviceConfigSync": "emDeviceConfigSync", 					"emDeviceForcedOfflineMode": "emDeviceForcedOfflineMode", 					"emDeviceImpaired": "emDeviceImpaired", 					"emDeviceOfflineMode": "emDeviceOfflineMode", 					"emDeviceStandbyMode": "emDeviceStandbyMode", 					"emDeviceUnreachable": "emDeviceUnreachable", 					"emDiskUsage": "emDiskUsage", 					"emGatherServiceContractFailure": "emGatherServiceContractFailure", 					"emHaSyncFailed": "emHaSyncFailed", 					"emHotfixInstallComplete": "emHotfixInstallComplete", 					"emHotfixInstallFailed": "emHotfixInstallFailed", 					"emMemoryUsage": "emMemoryUsage", 					"emPerformanceStorageCap": "emPerformanceStorageCap", 					"emPerformanceStorageDays": "emPerformanceStorageDays", 					"emPerformanceThreshold": "emPerformanceThreshold", 					"emRaidDriveFailureDetected": "emRaidDriveFailureDetected", 					"emRaidDriveRebuildComplete": "emRaidDriveRebuildComplete", 					"emSchedBackupFailed": "emSchedBackupFailed", 					"emScheduledArchiveFailed": "emScheduledArchiveFailed", 					"emServiceContractExpiry": "emServiceContractExpiry", 					"emSoftwareInstallComplete": "emSoftwareInstallComplete", 					"emSoftwareInstallFailed": "emSoftwareInstallFailed", 					"emStatsCollectionRateCap": "emStatsCollectionRateCap", 					"emStatsDBConnectivityLost": "emStatsDBConnectivityLost", 					"emStatsDBConnectivityRestored": "emStatsDBConnectivityRestored", 					"fallingAlarm": "fallingAlarm", 					"ipv6IfStateChange": "ipv6IfStateChange", 					"linkDown": "linkDown", 					"linkUp": "linkUp", 					"mteEventSetFailure": "mteEventSetFailure", 					"mteTriggerFailure": "mteTriggerFailure", 					"mteTriggerFalling": "mteTriggerFalling", 					"mteTriggerFired": "mteTriggerFired", 					"mteTriggerRising": "mteTriggerRising", 					"netSnmpExampleHeartbeatNotification": "netSnmpExampleHeartbeatNotification", 					"newRoot": "newRoot", 					"nsNotifyRestart": "nsNotifyRestart", 					"nsNotifyShutdown": "nsNotifyShutdown", 					"nsNotifyStart": "nsNotifyStart", 					"risingAlarm": "risingAlarm", 					"schedActionFailure": "schedActionFailure", 					"smScriptAbort": "smScriptAbort", 					"smScriptException": "smScriptException", 					"smScriptResult": "smScriptResult", 					"topologyChange": "topologyChange", 					"ucdShutdown": "ucdShutdown", 					"ucdStart": "ucdStart", 					"warmStart": "warmStart" 				} 			}, 			"vUSP": { 				"vf": { 					"ctsf-xxx": "vCTS" 				}, 				"vfc": { 					"vCTS - CFED": "vCTS - CFED", 					"vCTS - Config": "vCTS - Config", 					"vCTS - DFED": "vCTS - DFED", 					"vCTS - TAFE-fsd": "vCTS - TAFE-fsd", 					"vCTS - GLS": "vCTS - GLS", 					"vCTS - XXX": "vCTS - XXX", 					"vCTS - Management Interface": "vCTS - Management Interface", 					"vCTS - SPFE-pfe": "vCTS - SPFE-pfe", 					"vCTS - DNS": "vCTS - DNS", 					"vCTS - SPFE-spd": "vCTS - SPFE-spd", 					"vCTS - SPFE-spt": "vCTS - SPFE-spt", 					"vCTS - TAFE-tas": "vCTS - TAFE-tas" 				}, 				"location": { 					"SNDGCA06": "San Diego(core site) A06", 					"SNDGCA64": "San Diego(core site) A64", 					"SNANTXCA": "San Antonio(core site)", 					"KSCYMO09": "Kansas City(core site)", 					"kings_mountain": "Kings Mountain(AMG)", 					"Secaucus": "Secaucus(AMG)", 					"lisle": "Lisle(AMG)", 					"concord": "Concord(AMG)", 					"houston": "Houston(AMG)", 					"akron": "Akron(AMG)" 				}, 				"alarmCondition": { 					"acrTemporaryBufferOverload": "acrTemporaryBufferOverload", 					"adnsExtendedTTLcaching": "adnsExtendedTTLcaching", 					"adnsQueryFailureCaching": "adnsQueryFailureCaching", 					"adnsQueueCongestion": "adnsQueueCongestion", 					"asdaCommunicationFailure": "asdaCommunicationFailure", 					"asdaRequestQueue": "asdaRequestQueue", 					"capacityLicenseKeyExpiration": "capacityLicenseKeyExpiration", 					"capacityLicenseKeyNearExpiration": "capacityLicenseKeyNearExpiration", 					"capacityLicenseKeyValidationError": "capacityLicenseKeyValidationError", 					"cardConnectionLost": "cardConnectionLost", 					"ccdbCommunicationFailure": "ccdbCommunicationFailure", 					"cpiAlrmCritical": "cpiAlrmCritical", 					"cpiAlrmMajor": "cpiAlrmMajor", 					"cpiAlrmMinor": "cpiAlrmMinor", 					"cpiAlrmWarning": "cpiAlrmWarning", 					"cpiAsrtEsc": "cpiAsrtEsc", 					"cpiAsrtNonEsc": "cpiAsrtNonEsc", 					"cpiAsrtNonEscCritical": "cpiAsrtNonEscCritical", 					"cpiAsrtNonEscMajor": "cpiAsrtNonEscMajor", 					"cpiAsrtNonEscMinor": "cpiAsrtNonEscMinor", 					"cpiAudErrCount": "cpiAudErrCount", 					"cpiAudManAct": "cpiAudManAct", 					"cpiAudNewEvent": "cpiAudNewEvent", 					"cpiCompleteRateAlarm": "cpiCompleteRateAlarm", 					"cpiCTS3xxFailRate": "cpiCTS3xxFailRate", 					"cpiCTS4xxFailRate": "cpiCTS4xxFailRate", 					"cpiCTS5xxFailRate": "cpiCTS5xxFailRate", 					"cpiCTS6xxFailRate": "cpiCTS6xxFailRate", 					"cpiCTSSIPRetransmitInvite": "cpiCTSSIPRetransmitInvite", 					"cpiCTSSIPRetransmitNonInvite": "cpiCTSSIPRetransmitNonInvite", 					"cpiDropMGAllocConnReq": "cpiDropMGAllocConnReq", 					"cpiDropRateAlarm": "cpiDropRateAlarm", 					"cpiExceptionService": "cpiExceptionService", 					"cpiFailRateAlarm": "cpiFailRateAlarm", 					"cpiFailSCTPFastRetransIncr": "cpiFailSCTPFastRetransIncr", 					"cpiFailSCTPFastRetransRate": "cpiFailSCTPFastRetransRate", 					"cpiFailSCTPSRTT1Incr": "cpiFailSCTPSRTT1Incr", 					"cpiFailSCTPSRTT2Incr": "cpiFailSCTPSRTT2Incr", 					"cpiFailSCTPT3RetransIncr": "cpiFailSCTPT3RetransIncr", 					"cpiFailSCTPT3RetransRate": "cpiFailSCTPT3RetransRate", 					"cpiFileSysUsage": "cpiFileSysUsage", 					"cpiMemAllocFail": "cpiMemAllocFail", 					"cpiNumOfLICDRDel": "cpiNumOfLICDRDel", 					"cpiReinitServiceSelf": "cpiReinitServiceSelf", 					"cpiSIPRetransmitInvite": "cpiSIPRetransmitInvite", 					"cpiSIPRetransmitNonInvite": "cpiSIPRetransmitNonInvite", 					"cpiSS7DropSCTPPktsRcvd": "cpiSS7DropSCTPPktsRcvd", 					"cpiSS7FailSCTPFastRetransRate": "cpiSS7FailSCTPFastRetransRate", 					"cpiStabilityAlarm": "cpiStabilityAlarm", 					"cpuOverload": "cpuOverload", 					"databaseConnectionLost": "databaseConnectionLost", 					"databaseReplicationLinkDown": "databaseReplicationLinkDown", 					"databaseSizeExhausted": "databaseSizeExhausted", 					"dbHighCpuUtilization": "dbHighCpuUtilization", 					"dbOffline": "dbOffline", 					"dbStatusUnexpected": "dbStatusUnexpected", 					"degradedResource": "degradedResource", 					"degrow": "degrow", 					"deviceServerCxnLost": "deviceServerCxnLost", 					"diamLinkDown": "diamLinkDown", 					"diamMaxClientsExceeded": "diamMaxClientsExceeded", 					"dnsThreshold": "dnsThreshold", 					"ethernetError": "ethernetError", 					"ethernetLinkDown": "ethernetLinkDown", 					"externalConnectivity": "externalConnectivity", 					"featureLicenseExpiration": "featureLicenseExpiration", 					"featureLicenseKeyNearExpiration": "featureLicenseKeyNearExpiration", 					"featureLockValidationError": "featureLockValidationError", 					"fqdnError": "fqdnError", 					"fru": "fru",	 					"gatewayCongestion": "gatewayCongestion", 					"gatewayForcedOOS": "gatewayForcedOOS", 					"gatewayProvisioningError": "gatewayProvisioningError", 					"gatewayUnreachable": "gatewayUnreachable", 					"gatewayUnregistered": "gatewayUnregistered", 					"globalParameterNotFound": "globalParameterNotFound", 					"glsInvalidCellId": "glsInvalidCellId", 					"glsServerUnavailable": "glsServerUnavailable", 					"grow": "grow", 					"h248MessageBufferDepletion": "h248MessageBufferDepletion", 					"hlrSyncConnection": "hlrSyncConnection", 					"hlrSyncQueue": "hlrSyncQueue", 					"hostDown": "hostDown", 					"hostReset": "hostReset", 					"invalidGateway": "invalidGateway", 					"iriLinkDown": "iriLinkDown", 					"ldapServerConnectionLost": "ldapServerConnectionLost", 					"lispBufferFullExternalLIG": "lispBufferFullExternalLIG", 					"llcDown": "llcDown", 					"logicalLinkDown": "logicalLinkDown", 					"logicalLinkNotFound": "logicalLinkNotFound", 					"logRotateThreshold": "logRotateThreshold", 					"memoryOverload": "memoryOverload", 					"nodeConfigFailure": "nodeConfigFailure", 					"nodeGroupOOS": "nodeGroupOOS", 					"nodeOOS": "nodeOOS", 					"nonCompliantFaultGroupMemberState": "nonCompliantFaultGroupMemberState", 					"nonCsAddrChannelDepletion": "nonCsAddrChannelDepletion", 					"numberOfTuplesInUse": "numberOfTuplesInUse", 					"osSecInfoModificationDetected": "osSecInfoModificationDetected", 					"osSecInformationMissing": "osSecInformationMissing", 					"osSecUnexpectedInformation": "osSecUnexpectedInformation", 					"pdnsMySqlReplication": "pdnsMySqlReplication", 					"pktCorruptionDetectedViaRCCLANCheck": "pktCorruptionDetectedViaRCCLANCheck", 					"platformCommandFailure": "platformCommandFailure", 					"pmDataNotCollected": "pmDataNotCollected", 					"prdbConnectWithAlternateFailure": "prdbConnectWithAlternateFailure", 					"prdbSyncDataToAlternateFailure": "prdbSyncDataToAlternateFailure", 					"preAllocatedResourceOverload": "preAllocatedResourceOverload", 					"prifSocketError": "prifSocketError", 					"processDown": "processDown", 					"processNotStarted": "processNotStarted", 					"provisioningInhibitedMode": "provisioningInhibitedMode", 					"prsCallInstanceExceeded": "prsCallInstanceExceeded", 					"prsCpuOverload": "prsCpuOverload", 					"prsDatabaseMigrationFailure": "prsDatabaseMigrationFailure", 					"prsFailureToConnectWithPRDB": "prsFailureToConnectWithPRDB", 					"prsQueueExceeded": "prsQueueExceeded", 					"rccInhibitedMode": "rccInhibitedMode", 					"remotedbLinkDown": "remotedbLinkDown", 					"remoteQueryServerFailure": "remoteQueryServerFailure", 					"restore": "restore", 					"serviceCFGDataTimestampError": "serviceCFGDataTimestampError", 					"serviceCommCxnLost": "serviceCommCxnLost", 					"serviceOnewayCommunication": "serviceOnewayCommunication", 					"sheddingOverload": "sheddingOverload", 					"simxml": "simxml", 					"sipLinkSetMaxQuarantineList": "sipLinkSetMaxQuarantineList", 					"sipLinkSetUnavailable": "sipLinkSetUnavailable", 					"sipLinkUnavailable": "sipLinkUnavailable", 					"smdiSocketError": "smdiSocketError", 					"socketError": "socketError", 					"softwareAllocatedResourceOverload": "softwareAllocatedResourceOverload", 					"softwareComponentDown": "softwareComponentDown", 					"softwareComponentStandbyNotReady": "softwareComponentStandbyNotReady", 					"softwareLicense": "softwareLicense", 					"svcdegrow": "svcdegrow", 					"svcgrow": "svcgrow", 					"swVersionMismatch": "swVersionMismatch", 					"tftpDownloadCorrupt": "tftpDownloadCorrupt", 					"timeStampValueOutOfSystemRange": "timeStampValueOutOfSystemRange", 					"tlsInitError": "tlsInitError", 					"transactionHandlerBlockDepletion": "transactionHandlerBlockDepletion", 					"upgrade": "upgrade", 					"usageOfSyncTable": "usageOfSyncTable", 					"utHttpProxyConnectionDown": "utHttpProxyConnectionDown", 					"wpifSocketError": "wpifSocketError", 					"BackupFailure": "BackupFailure", 					"Configuration": "Configuration", 					"COTRecordTransferFailure": "COTRecordTransferFailure", 					"CPMUSERDATAINCONSITENCY": "CPMUSERDATAINCONSITENCY", 					"CPMUSERDATARESTORED": "CPMUSERDATARESTORED", 					"EventQueueCapacity": "EventQueueCapacity", 					"ICMPFailure": "ICMPFailure", 					"IPsecConfig": "IPsecConfig", 					"LinkDown": "LinkDown", 					"NotifyDisabled": "NotifyDisabled", 					"NotifyLocked": "NotifyLocked", 					"NumTL1MeasThresh": "NumTL1MeasThresh", 					"RADIUSTOLDAPFAILURE": "RADIUSTOLDAPFAILURE", 					"ROOTACCESSDENIED": "ROOTACCESSDENIED", 					"ROOTFTPVIOLATION": "ROOTFTPVIOLATION", 					"ROOTLOGINVIOLATION": "ROOTLOGINVIOLATION", 					"ROOTSSHLOGINVIOLATION": "ROOTSSHLOGINVIOLATION", 					"SetupAAAFailure": "SetupAAAFailure", 					"SNETrapOverload": "SNETrapOverload", 					"SNMPAuthenticationFailure": "SNMPAuthenticationFailure", 					"SNMPFailure": "SNMPFailure", 					"SUTOROOTFAILURE": "SUTOROOTFAILURE", 					"SYSTEMTrapOverload": "SYSTEMTrapOverload", 					"ThresholdCrossed": "ThresholdCrossed", 					"UndiscoveredObject": "UndiscoveredObject", 					"WriteAAAFailure": "WriteAAAFailure" 				} 			}, 			"Trinity": { 				"vf": { 					"aSBG": "aSBG", 					"nSBG": "nSBG", 					"tSBG": "tSBG" 				}, 				"vfc": { 					"pld": "PL - Payload Processor", 					"scr": "SC - System Controller" 				}, 				"location": { 					"SNDGCA64": "San Diego SAN3", 					"ALPRGAED": "Alpharetta PDK1", 					"LSLEILAA":"Lisle DPA3"	 				}, 				"alarmCondition": { 					"A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started", 					"BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed", 					"BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed", 					"COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed", 					"COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed", 					"COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned", 					"COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable", 					"COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error", 					"COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied", 					"File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded", 					"File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded", 					"LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication", 					"LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency", 					"LOTC+Disk+Usage":"LOTC Disk Usage", 					"LOTC+memory+Usage":"LOTC memory Usage", 					"LOTC+Time+Synchronization":"LOTC Time Synchronization", 					"SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down", 					"SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled", 					"SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled", 					"SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked", 					"SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached", 					"SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data", 					"SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ", 					"SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received", 					"SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected", 					"SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received", 					"SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ", 					"SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate", 					"SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server", 					"SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service", 					"SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling", 					"SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call", 					"SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data", 					"SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure", 					"SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure", 					"SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded", 					"SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine", 					"SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold", 					"SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated", 					"SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected", 					"SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked", 					"SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable", 					"SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable", 					"SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling", 					"SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported", 					"SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached", 					"SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated", 					"SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out", 					"SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type" 					} 			}, 			"vProbes": { 				"vf": { 				}, 				"vfc": { 				}, 				"location": { 				}, 				"alarmCondition": { 				} 			} 		} 	} }
+globalPropsPartialTest={"global": { 		"service": { 			"": "", 			"vUSP": "vUSP", 			"vSCP": "vSCP", 			"vProbes": "vProbes" 		} 	}, 	"policy": { 		"timeout": 5, 		"recipe": { 			"": "", 			"restart": "Restart", 			"rebuild": "Rebuild", 			"migrate": "Migrate" 		}, 		"maxRetries": "3", 		"retryTimeLimit": 180, 		"resource": { 			"vCTS": "vCTS", 			"v3CDB": "v3CDB", 			"vUDR": "vUDR", 			"vCOM": "vCOM", 			"vRAR": "vRAR", 			"vLCS": "vLCS", 			"vUDR-BE": "vUDR-BE", 			"vDBE": "vDBE" 		}, 		"parentPolicyConditions": { 			"Failure_Retries": "Failure: Max Retries Exceeded", 			"Failure_Timeout": "Failure: Time Limit Exceeded", 			"Failure_Exception": "Failure: Exception", 			"Failure": "Failure: Other", 			"Success": "Success" 		} 	}}
 ui.location.default={"location":{"SNDGCA64":"San Diego SAN3","ALPRGAED":"Alpharetta PDK1","LSLEILAA":"Lisle DPA3"}}
 ui.alarm.fault={"alarmCondition":{"A+Fallback+Operation+will+soon+be+started":"A Fallback Operation will soon be started","BRM%2C+Auto+Export+Backup+Failed":"BRM, Auto Export Backup Failed","BRM%2C+Scheduled+Backup+Failed":"BRM, Scheduled Backup Failed","COM+SA%2C+AMF+Component+Cleanup+Failed":"COM SA, AMF Component Cleanup Failed","COM+SA%2C+AMF+Component+Instantiation+Failed":"COM SA, AMF Component Instantiation Failed","COM+SA%2C+AMF+SI+Unassigned":"COM SA, AMF SI Unassigned","COM+SA%2C+CLM+Cluster+Node+Unavailable":"COM SA, CLM Cluster Node Unavailable","COM+SA%2C+MDF+Detected+Model+Error":"COM SA, MDF Detected Model Error","COM+SA%2C+Proxy+Status+of+a+Component+Changed+to+Unproxied":"COM SA, Proxy Status of a Component Changed to Unproxied","File+Management%2C+Number+of+Files+in+FileGroup+Exceeded":"File Management, Number of Files in FileGroup Exceeded","File+Management%2C+Max+Size+in+FileGroup+Exceeded":"File Management, Max Size in FileGroup Exceeded","LOTC+Disk+Replication+Communication":"LOTC Disk Replication Communication","LOTC+Disk+Replication+Consistency":"LOTC Disk Replication Consistency","LOTC+Disk+Usage":"LOTC Disk Usage","LOTC+memory+Usage":"LOTC memory Usage","LOTC+Time+Synchronization":"LOTC Time Synchronization","SBG%2C+BGF+Control+Link+Down":"SBG, BGF Control Link Down","SBG%2C+BGF+Control+Link+Disabled":"SBG, BGF Control Link Disabled","SBG%2C+BGF+Control+Link+Enabled":"SBG, BGF Control Link Enabled","SBG%2C+BGF+Control+Link+Remote+Locked":"SBG, BGF Control Link Remote Locked","SBG%2C+Charging+Data+Storage+Maximum+Records+Reached":"SBG, Charging Data Storage Maximum Records Reached","SBG%2C+Charging+Server+Rejects+Charging+Data":"SBG, Charging Server Rejects Charging Data","SBG%2C+Excessive+Packet+Rate+Detected+":"SBG, Excessive Packet Rate Detected ","SBG%2C+High+Amount+of+Malformed+Packets+Received":"SBG, High Amount of Malformed Packets Received","SBG%2C+High+Amount+of+STUN+Packets+Detected":"SBG, High Amount of STUN Packets Detected","SBG%2C+High+Amount+of+TCP+SYN+Packets+Received":"SBG, High Amount of TCP SYN Packets Received","SBG%2C+High+Amount+of+UDP+Packets+Received+":"SBG, High Amount of UDP Packets Received ","SBG%2C+IP+Address+Blocked+Due+to+Excessive+Packet+Rate":"SBG, IP Address Blocked Due to Excessive Packet Rate","SBG%2C+Lost+Connectivity+to+Diameter+Server":"SBG, Lost Connectivity to Diameter Server","SBG%2C+Mated+Pair+out+of+Service":"SBG, Mated Pair out of Service","SBG%2C+Network+Unavailable+for+Media+Handling":"SBG, Network Unavailable for Media Handling","SBG%2C+Non-emergency+Call+Released+to+Free+Resources+for+Emergency+Call":"SBG, Non-emergency Call Released to Free Resources for Emergency Call","SBG%2C+Not+Enough+Disk+Space+for+Storing+Charging+Data":"SBG, Not Enough Disk Space for Storing Charging Data","SBG%2C+Payload+Mated+Pair+Failure":"SBG, Payload Mated Pair Failure","SBG%2C+Payload+Processor+Failure":"SBG, Payload Processor Failure","SBG%2C+Processor+Overloaded":"SBG, Processor Overloaded","SBG%2C+Registered+User+Set+in+Quarantine":"SBG, Registered User Set in Quarantine","SBG%2C+Registration+Contacts+Exceed+Configured+Threshold":"SBG, Registration Contacts Exceed Configured Threshold","SBG%2C+Sequential+Restart+Initiated":"SBG, Sequential Restart Initiated","SBG%2C+SIP+Abuse+Detected":"SBG, SIP Abuse Detected","SBG%2C+SIP+Network+Locked":"SBG, SIP Network Locked","SBG%2C+SIP+Next+Hop+Reachable":"SBG, SIP Next Hop Reachable","SBG%2C+SIP+Next+Hop+Unreachable":"SBG, SIP Next Hop Unreachable","SBG%2C+SIP+Request+Rejected+by+Network+Throttling":"SBG, SIP Request Rejected by Network Throttling","SBG%2C+TLS+Certificate+Imported":"SBG, TLS Certificate Imported","SBG%2C+Trace+Recording+Session+Number+Limit+Reached":"SBG, Trace Recording Session Number Limit Reached","SBG%2C+Trace+Session+Deactivated":"SBG, Trace Session Deactivated","SBG%2C+Trace+Session+Times+Out":"SBG, Trace Session Times Out","SBG%2C+Unknown+Media+Type+or+Payload+Type":"SBG, Unknown Media Type or Payload Type"}}
diff --git a/src/test/resources/example/dao/bpmn-template.xml b/src/test/resources/example/dao/bpmn-template.xml
index 5aa133a..12671ac 100644
--- a/src/test/resources/example/dao/bpmn-template.xml
+++ b/src/test/resources/example/dao/bpmn-template.xml
@@ -4,16 +4,8 @@
     <bpmn:startEvent id="StartEvent_1">
       <bpmn:outgoing>SequenceFlow_0mshiwd</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:collector id="Collector_1i63yo1">
-      <bpmn:incoming>SequenceFlow_0mshiwd</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0z37chw</bpmn:outgoing>
-    </bpmn:collector>
-    <bpmn:stringMatch id="StringMatch_1g5af0z">
-      <bpmn:incoming>SequenceFlow_0z37chw</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1io8zzg</bpmn:outgoing>
-    </bpmn:stringMatch>
     <bpmn:vesCollector id="VesCollector_1s3sgbh">
-      <bpmn:incoming>SequenceFlow_1io8zzg</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0mshiwd</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0yenh9m</bpmn:outgoing>
     </bpmn:vesCollector>
     <bpmn:holmes id="Holmes_1m8n1s9">
@@ -31,9 +23,7 @@
     <bpmn:endEvent id="EndEvent_0z8t6ek">
       <bpmn:incoming>SequenceFlow_1q2yngv</bpmn:incoming>
     </bpmn:endEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_0mshiwd" sourceRef="StartEvent_1" targetRef="Collector_1i63yo1" />
-    <bpmn:sequenceFlow id="SequenceFlow_0z37chw" sourceRef="Collector_1i63yo1" targetRef="StringMatch_1g5af0z" />
-    <bpmn:sequenceFlow id="SequenceFlow_1io8zzg" sourceRef="StringMatch_1g5af0z" targetRef="VesCollector_1s3sgbh" />
+    <bpmn:sequenceFlow id="SequenceFlow_0mshiwd" sourceRef="StartEvent_1" targetRef="VesCollector_1s3sgbh" />
     <bpmn:sequenceFlow id="SequenceFlow_0yenh9m" sourceRef="VesCollector_1s3sgbh" targetRef="Holmes_1m8n1s9" />
     <bpmn:sequenceFlow id="SequenceFlow_1gq21be" sourceRef="Holmes_1m8n1s9" targetRef="TCA_11n5nl9" />
     <bpmn:sequenceFlow id="SequenceFlow_14phr7v" sourceRef="TCA_11n5nl9" targetRef="Policy_19c1hms" />
@@ -44,12 +34,6 @@
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
         <dc:Bounds x="50" y="162" width="36" height="36" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="Collector_1i63yo1_di" bpmnElement="Collector_1i63yo1">
-        <dc:Bounds x="216" y="152" width="120" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="StringMatch_1g5af0z_di" bpmnElement="StringMatch_1g5af0z">
-        <dc:Bounds x="378" y="140" width="120" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="VesCollector_1s3sgbh_di" bpmnElement="VesCollector_1s3sgbh">
         <dc:Bounds x="552" y="140" width="120" height="80" />
       </bpmndi:BPMNShape>
diff --git a/src/test/resources/example/dao/image-template.xml b/src/test/resources/example/dao/image-template.xml
index d7af2aa..fe0af06 100644
--- a/src/test/resources/example/dao/image-template.xml
+++ b/src/test/resources/example/dao/image-template.xml
@@ -70,48 +70,6 @@
 		</g>
 	</g>
 	<g class="djs-group" xmlns="http://www.w3.org/2000/svg">
-		<g class="djs-element djs-shape" data-element-id="Collector_1i63yo1"
-			transform="matrix(1,0,0,1,216,152)" style="display: block;">
-			<rect fill="none" class="djs-outline" x="-6" y="-6" width="132"
-				height="92"></rect>
-			<g class="djs-visual">
-				<rect x="0" y="0" width="120" height="80" rx="0" ry="0"
-					style="stroke-width: 2;" stroke="#000000" fill="#ffffff"></rect>
-				<polyline points="120,80 120,20 " style="stroke-width: 2;"
-					fill="none" stroke="#000000"></polyline>
-				<polyline points="20,0 20,80 " style="stroke-width: 2;"
-					fill="none" stroke="#000000"></polyline>
-				<text style="font-family: Arial,sans-serif; font-size: 12px;"
-					class=" djs-label">
-					<tspan x="35.5" y="43.5">Collector</tspan>
-				</text>
-			</g>
-			<rect x="0" y="0" width="120" height="80"
-				style="stroke-opacity: 0; stroke-width: 15;" fill="none" stroke="#ffffff"
-				class="djs-hit"></rect>
-		</g>
-	</g>
-	<g class="djs-group" xmlns="http://www.w3.org/2000/svg">
-		<g class="djs-element djs-shape" data-element-id="StringMatch_1g5af0z"
-			transform="matrix(1,0,0,1,378,140)" style="display: block;">
-			<rect fill="none" class="djs-outline" x="-6" y="-6" width="132"
-				height="92"></rect>
-			<g class="djs-visual">
-				<rect x="0" y="0" width="120" height="80" rx="0" ry="0"
-					style="stroke-width: 2;" stroke="#000000" fill="#ffffff"></rect>
-				<polyline points="0,20 120,20 " style="stroke-width: 2;"
-					fill="none" stroke="#000000"></polyline>
-				<text style="font-family: Arial,sans-serif; font-size: 12px;"
-					class=" djs-label">
-					<tspan x="27.5" y="43.5">StringMatch</tspan>
-				</text>
-			</g>
-			<rect x="0" y="0" width="120" height="80"
-				style="stroke-opacity: 0; stroke-width: 15;" fill="none" stroke="#ffffff"
-				class="djs-hit"></rect>
-		</g>
-	</g>
-	<g class="djs-group" xmlns="http://www.w3.org/2000/svg">
 		<g class="djs-element djs-shape" data-element-id="VesCollector_1s3sgbh"
 			transform="matrix(1,0,0,1,552,140)" style="display: block;">
 			<rect fill="none" class="djs-outline" x="-6" y="-6" width="132"
diff --git a/src/test/resources/example/model-properties/holmes/modelBpmn.json b/src/test/resources/example/model-properties/holmes/modelBpmn.json
new file mode 100644
index 0000000..db8e54d
--- /dev/null
+++ b/src/test/resources/example/model-properties/holmes/modelBpmn.json
@@ -0,0 +1,20 @@
+{
+  "vesCollector": [
+    {
+      "id": "VesCollector_0orydnh",
+      "from": "StartEvent_1"
+    }
+  ],
+   "holmes": [
+    {
+      "id": "Holmes_0i4n2mm",
+      "from": "VesCollector_0orydnh"
+    }
+  ],
+  "policy": [
+    {
+      "id": "Policy_0honxgv",
+      "from": "Holmes_0i4n2mm"
+    }
+  ]
+}
diff --git a/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json b/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json
new file mode 100644
index 0000000..14b3a8c
--- /dev/null
+++ b/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json
@@ -0,0 +1,116 @@
+{
+  "Holmes_0i4n2mm": [
+    {
+      "name": "correlationalLogic",
+      "value": "blabla"
+    },
+    {
+      "name": "operationalPolicy",
+      "value": "policy1"
+    }
+  ],
+  "Policy_0honxgv": {
+    "policy1": [
+      {
+        "name": "pname",
+        "value": "policy1"
+      },
+      {
+        "name": "pid",
+        "value": "0"
+      },
+      {
+        "name": "timeout",
+        "value": "345"
+      },
+      {
+        "policyConfigurations": [
+          [
+            {
+              "name": "maxRetries",
+              "value": [
+                "3"
+              ]
+            },
+            {
+              "name": "retryTimeLimit",
+              "value": [
+                "180"
+              ]
+            },
+            {
+              "name": "_id",
+              "value": [
+                "dGLuNqg"
+              ]
+            },
+            {
+              "name": "parentPolicy",
+              "value": [
+                ""
+              ]
+            },
+            {
+              "name": "targetResourceId",
+              "value": [
+                "resourceid"
+              ]
+            }
+          ]
+        ]
+      }
+    ]
+  },
+  "global": [
+    {
+      "name": "actionSet",
+      "value": [
+        "vnfRecipe"
+      ]
+    },
+    {
+      "name": "location",
+      "value": [
+        "SNDGCA64",
+        "ALPRGAED"
+      ]
+    },
+    {
+      "name": "vf",
+      "value": [
+        "f5213e3a-9191-4362-93b5-b67f8d770e44"
+      ]
+    },
+    {
+      "name": "location",
+      "value": [
+        "SNDGCA64",
+        "ALPRGAED",
+        "LSLEILAA",
+        "MDTWNJC1"
+      ]
+    }
+  ],
+  "shared": {
+    "byService": {
+      "": {
+        "vf": {
+          "": ""
+        },
+        "location": {
+          "": ""
+        },
+        "alarmCondition": {
+          "": ""
+        }
+      }
+    },
+    "byVf": {
+      "": {
+        "vfc": {
+          "": ""
+        }
+      }
+    }
+  }
+}
diff --git a/src/test/resources/example/model-properties/modelBpmn.json b/src/test/resources/example/model-properties/modelBpmn.json
index 823641c..8f7b8e6 100644
--- a/src/test/resources/example/model-properties/modelBpmn.json
+++ b/src/test/resources/example/model-properties/modelBpmn.json
@@ -1,16 +1,4 @@
 {
-  "collector": [
-    {
-      "id": "Collector_1c72ct5",
-      "from": "StartEvent_1"
-    }
-  ],
-  "stringMatch": [
-    {
-      "id": "StringMatch_05arstl",
-      "from": "Collector_1c72ct5"
-    }
-  ],
   "policy": [
     {
       "id": "Policy_0honxgv",
@@ -32,7 +20,7 @@
   "vesCollector": [
     {
       "id": "VesCollector_0orydnh",
-      "from": "StringMatch_05arstl"
+      "from": "StartEvent_1"
     }
   ]
 }
diff --git a/src/test/resources/example/model-properties/modelBpmnProp.json b/src/test/resources/example/model-properties/modelBpmnProp.json
index 3b86ad7..a521ba7 100644
--- a/src/test/resources/example/model-properties/modelBpmnProp.json
+++ b/src/test/resources/example/model-properties/modelBpmnProp.json
@@ -1,90 +1,4 @@
 {
-  "Collector_1c72ct5": [
-    {
-      "name": "topicPublishes",
-      "value": "DCAE-COLLECTOR-UCSNMP"
-    }
-  ],
-  "StringMatch_05arstl": {
-    "group1": [
-      {
-        "name": "rgname",
-        "value": "1505133578560"
-      },
-      {
-        "name": "rgfriendlyname",
-        "value": "group1"
-      },
-      {
-        "name": "policyName",
-        "value": "policy1"
-      },
-      {
-        "name": "policyId",
-        "value": "0"
-      },
-      {
-        "serviceConfigurations": [
-          [
-            {
-              "name": "aaiMatchingFields",
-              "value": [
-                "complex.city"
-              ]
-            },
-            {
-              "name": "aaiSendFields",
-              "value": [
-                "cloud-region.identity-url"
-              ]
-            },
-            {
-              "name": "timeWindow",
-              "value": [
-                "0"
-              ]
-            },
-            {
-              "name": "ageLimit",
-              "value": [
-                "1600"
-              ]
-            },
-            {
-              "name": "createClosedLoopEventId",
-              "value": [
-                "Initial"
-              ]
-            },
-            {
-              "name": "outputEventName",
-              "value": [
-                ""
-              ]
-            },
-            {
-              "stringSet": [
-                {
-                },
-                {
-                  "name": "eventSeverity",
-                  "value": [
-                    "NORMAL"
-                  ]
-                },
-                {
-                  "name": "eventSourceType",
-                  "value": [
-                    ""
-                  ]
-                }
-              ]
-            }
-          ]
-        ]
-      }
-    ]
-  },
   "Policy_0honxgv": {
     "policy1": [
       {
diff --git a/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json b/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json
index fba99c6..3030adf 100644
--- a/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json
+++ b/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json
@@ -1,81 +1,4 @@
 {
-  "collector": {
-    "topicPublishes": {
-      "DCAE-COLLECTOR-UCSNMP": "DCAE-COLLECTOR-UCSNMP",
-      "GFP-IP-AIC-SNMP-TRAPS": "GFP-IP-AIC-SNMP-TRAPS",
-      "AIC-SNMP-TRAPS": "AIC-SNMP-TRAPS"
-    }
-  },
-  "string_match": {
-    "topicPublishes": {
-      "DCAE-CL-EVENT": "DCAE-CL-EVENT"
-    },
-    "aaiMatchingFields": {
-      "cloud-region.identity-url": "cloud-region.identity-url",
-      "complex.city": "complex.city",
-      "complex.physical-location-id": "complex.physical-location-id",
-      "complex.state": "complex.state",
-      "generic-vnf.service-id": "generic-vnf.service-id",
-      "generic-vnf.vnf-name": "generic-vnf.vnf-name",
-      "generic-vnf.vnf-type": "generic-vnf.vnf-type",
-      "tenant.tenant-id": "tenant.tenant-id",
-      "vserver.in-maint": "vserver.in-maint",
-      "vserver.is-closed-loop-disabled": "vserver.is-closed-loop-disabled",
-      "vserver.l-interface.interface-name": "vserver.l-interface.interface-name",
-      "vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address": "vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address",
-      "vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address": "vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address",
-      "vserver.l-interface.network-name": "vserver.l-interface.network-name",
-      "vserver.prov-status": "vserver.prov-status",
-      "vserver.selflink": "vserver.selflink",
-      "vserver.vserver-id": "vserver.vserver-id",
-      "vserver.vserver-name": "vserver.vserver-name"
-    },
-    "aaiSendFields": {
-      "cloud-region.identity-url": "cloud-region.identity-url",
-      "complex.city": "complex.city",
-      "complex.physical-location-id": "complex.physical-location-id",
-      "complex.state": "complex.state",
-      "generic-vnf.service-id": "generic-vnf.service-id",
-      "generic-vnf.vnf-name": "generic-vnf.vnf-name",
-      "generic-vnf.vnf-type": "generic-vnf.vnf-type",
-      "tenant.tenant-id": "tenant.tenant-id",
-      "vserver.in-maint": "vserver.in-maint",
-      "vserver.is-closed-loop-disabled": "vserver.is-closed-loop-disabled",
-      "vserver.l-interface.interface-name": "vserver.l-interface.interface-name",
-      "vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address": "vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address",
-      "vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address": "vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address",
-      "vserver.l-interface.network-name": "vserver.l-interface.network-name",
-      "vserver.prov-status": "vserver.prov-status",
-      "vserver.selflink": "vserver.selflink",
-      "vserver.vserver-id": "vserver.vserver-id",
-      "vserver.vserver-name": "vserver.vserver-name"
-    },
-    "eventSourceType": {
-      "f5BigIP": "f5BigIP",
-      "vSBG_Alarms": "vSBG_Alarms",
-      "vCTS_Alarms": "vCTS_Alarms"
-    },
-    "eventSeverity": {
-      "NORMAL": "NORMAL",
-      "not-NORMAL": "not-NORMAL",
-      "OK": "OK",
-      "WARNING": "WARNING",
-      "MINOR": "MINOR",
-      "MAJOR": "MAJOR",
-      "CRITICAL": "CRITICAL"
-    },
-    "timeWindow": 0,
-    "ageLimit": 1600,
-    "outputEventName": {
-      "": "",
-      "ONSET": "ONSET",
-      "ABATED": "ABATED"
-    },
-    "createClosedLoopEventId": {
-      "Initial": "Initial",
-      "Close": "Close"
-    }
-  },
   "tca": {
     "tname": "New_Set",
     "tcaInt": "1",
diff --git a/src/test/resources/example/model-properties/tca/modelBpmn.json b/src/test/resources/example/model-properties/tca/modelBpmn.json
new file mode 100644
index 0000000..7358f9a
--- /dev/null
+++ b/src/test/resources/example/model-properties/tca/modelBpmn.json
@@ -0,0 +1,20 @@
+{
+  "vesCollector": [
+    {
+      "id": "VesCollector_0orydnh",
+      "from": "StartEvent_1"
+    }
+  ],
+   "tca": [
+    {
+      "id": "TCA_1jy9to4",
+      "from": "VesCollector_0orydnh"
+    }
+  ],
+  "policy": [
+    {
+      "id": "Policy_0honxgv",
+      "from": "TCA_1jy9to4"
+    }
+  ]
+}
diff --git a/src/test/resources/example/model-properties/tca/modelBpmnProperties.json b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json
new file mode 100644
index 0000000..0bfa78c
--- /dev/null
+++ b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json
@@ -0,0 +1,150 @@
+{
+  "TCA_1jy9to4": {
+    "group1": [
+      {
+        "name": "tname",
+        "value": "group1"
+      },
+      {
+        "name": "tuuid",
+        "value": "f734f031-10aa-t8fb-330f-04dde2886325"
+      },
+      {
+        "name": "tcaPolId",
+        "value": "policy1"
+      },
+      {
+        "name": "eventName",
+        "value": "vFirewallBroadcastPackets"
+      },
+      {
+        "serviceConfigurations": [
+          [
+            "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
+            "LESS_OR_EQUAL",
+            "123",
+            "VM",
+            "ABATED"
+          ],
+          [
+            "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
+            "GREATER_OR_EQUAL",
+            "123",
+            "VNF",
+            "ONSET"
+          ]
+        ]
+      }
+    ]
+  },
+  "Policy_0honxgv": {
+    "policy1": [
+      {
+        "name": "pname",
+        "value": "policy1"
+      },
+      {
+        "name": "pid",
+        "value": "0"
+      },
+      {
+        "name": "timeout",
+        "value": "345"
+      },
+      {
+        "policyConfigurations": [
+          [
+            {
+              "name": "maxRetries",
+              "value": [
+                "3"
+              ]
+            },
+            {
+              "name": "retryTimeLimit",
+              "value": [
+                "180"
+              ]
+            },
+            {
+              "name": "_id",
+              "value": [
+                "dGLuNqg"
+              ]
+            },
+            {
+              "name": "parentPolicy",
+              "value": [
+                ""
+              ]
+            },
+            {
+              "name": "targetResourceId",
+              "value": [
+                "resourceid"
+              ]
+            }
+          ]
+        ]
+      }
+    ]
+  },
+  "global": [
+    {
+      "name": "actionSet",
+      "value": [
+        "vnfRecipe"
+      ]
+    },
+    {
+      "name": "service",
+      "value": [
+        "serviceUUID"
+      ]
+    },
+    {
+      "name": "location",
+      "value": [
+        "SNDGCA64",
+        "ALPRGAED"
+      ]
+    },
+    {
+      "name": "vf",
+      "value": [
+        "f5213e3a-9191-4362-93b5-b67f8d770e44"
+      ]
+    },
+    {
+      "name": "location",
+      "value": [
+        "SNDGCA64",
+        "ALPRGAED",
+        "LSLEILAA",
+        "MDTWNJC1"
+      ]
+    }
+  ],
+  "shared": {
+    "byService": {
+      "": {
+        "vf": {
+          "": ""
+        },
+        "location": {
+          "": ""
+        },
+        "alarmCondition": {
+          "": ""
+        }
+      }
+    },
+    "byVf": {
+      "": {
+        "vfc": {
+          "": ""
+        }
+      }
+    }
+  }
+}
diff --git a/src/test/resources/example/modelBpmnProp.json b/src/test/resources/example/modelBpmnProp.json
index 26fd884..c8efff8 100644
--- a/src/test/resources/example/modelBpmnProp.json
+++ b/src/test/resources/example/modelBpmnProp.json
@@ -1,29 +1,13 @@
 {
-    "collector": 
+    "policy":
     [
         {
-            "id": "Collector_",
+            "id": "Policy_",
             "from": "StartEvent_1"
         }
     ],
 
-    "stringMatch": 
-    [
-        {
-            "id": "StringMatch_",
-            "from": "Collector_"
-        }
-    ],
-
-    "policy": 
-    [
-        {
-            "id": "Policy_",
-            "from": "StringMatch_"
-        }
-    ],
-
-    "tca": 
+    "tca":
     [
         {
             "id": "TCA_",
@@ -31,7 +15,7 @@
         }
     ],
 
-    "customType": 
+    "customType":
     [
         {
             "id": "CustomType_",
diff --git a/src/test/resources/example/modelBpmnPropForPolicy.json b/src/test/resources/example/modelBpmnPropForPolicy.json
index 243f7e8..de643a6 100644
--- a/src/test/resources/example/modelBpmnPropForPolicy.json
+++ b/src/test/resources/example/modelBpmnPropForPolicy.json
@@ -1,14 +1,5 @@
 {
-	"collector":
-	[
-	
-	],
-    "stringMatch": 
-    [
-        
-    ],
-
-    "policy": 
+    "policy":
     [
         {
             "id": "Policy_",
@@ -16,7 +7,7 @@
         }
     ],
 
-    "tca": 
+    "tca":
     [
         {
             "id": "TCA_",
diff --git a/src/test/resources/example/modelProp.json b/src/test/resources/example/modelProp.json
index c2262f5..99f67b6 100644
--- a/src/test/resources/example/modelProp.json
+++ b/src/test/resources/example/modelProp.json
@@ -1,17 +1,9 @@
 {
-    "Collector_": 
-    [
-        {
-            "name": "topicPublishes",
-            "value": "DCAE-COLLECTOR-UCSNMP"
-        }
-    ],
-
-    "global": 
+    "global":
     [
         {
             "name": "service",
-            "value": 
+            "value":
             [
                 "0f983e18-4603-4bb4-a98c-e29691fb16a1"
             ]
@@ -19,7 +11,7 @@
 
         {
             "name": "vf",
-            "value": 
+            "value":
             [
                 "6c7aaec2-59eb-41d9-8681-b7f976ab668d"
             ]
@@ -27,7 +19,7 @@
 
         {
             "name": "actionSet",
-            "value": 
+            "value":
             [
                 "enbRecipe"
             ]
@@ -35,318 +27,16 @@
 
         {
             "name": "location",
-            "value": 
+            "value":
             [
                 "SNDGCA64"
             ]
         }
     ],
 
-    "StringMatch_": 
+    "Policy_":
     {
-        "Group1": 
-        [
-            {
-                "name": "rgname",
-                "value": "1493749598520"
-            },
-
-            {
-                "name": "rgfriendlyname",
-                "value": "Group1"
-            },
-
-            {
-                "name": "policyName",
-                "value": "Policy1"
-            },
-
-            {
-                "name": "policyId",
-                "value": "1"
-            },
-
-            {
-                "serviceConfigurations": 
-                [
-                    [
-                        {
-                            "name": "aaiMatchingFields",
-                            "value": 
-                            [
-                                "complex.city",
-                                "vserver.vserver-name"
-                            ]
-                        },
-
-                        {
-                            "name": "aaiSendFields",
-                            "value": 
-                            [
-                                "complex.city",
-                                "vserver.vserver-name"
-                            ]
-                        },
-
-                        {
-                            "name": "timeWindow",
-                            "value": 
-                            [
-                                "100"
-                            ]
-                        },
-
-                        {
-                            "name": "ageLimit",
-                            "value": 
-                            [
-                                "100"
-                            ]
-                        },
-
-                        {
-                            "name": "createClosedLoopEventId",
-                            "value": 
-                            [
-                                "Initial"
-                            ]
-                        },
-
-                        {
-                            "name": "outputEventName",
-                            "value": 
-                            [
-                                "ONSET"
-                            ]
-                        },
-
-                        {
-                            "stringSet": 
-                            [
-                                {
-                                    "name": "alarmCondition",
-                                    "value": 
-                                    [
-                                        "Reports a transient alarm condition when an outgoing Ro message send fails"
-                                    ]
-                                },
-
-                                {
-                                    "name": "eventSeverity",
-                                    "value": 
-                                    [
-                                        "WARNING"
-                                    ]
-                                },
-
-                                {
-                                    "name": "eventSourceType",
-                                    "value": 
-                                    [
-                                        "f5BigIP"
-                                    ]
-                                }
-                            ]
-                        }
-                    ]
-                ]
-            }
-        ],
-
-        "Group2": 
-        [
-            {
-                "name": "rgname",
-                "value": "1493749665149"
-            },
-
-            {
-                "name": "rgfriendlyname",
-                "value": "Group2"
-            },
-
-            {
-                "name": "policyName",
-                "value": "Policy2"
-            },
-
-            {
-                "name": "policyId",
-                "value": "2"
-            },
-
-            {
-                "serviceConfigurations": 
-                [
-                    [
-                        {
-                            "name": "aaiMatchingFields",
-                            "value": 
-                            [
-                                "cloud-region.identity-url",
-                                "vserver.vserver-name"
-                            ]
-                        },
-
-                        {
-                            "name": "aaiSendFields",
-                            "value": 
-                            [
-                                "cloud-region.identity-url",
-                                "vserver.vserver-name"
-                            ]
-                        },
-
-                        {
-                            "name": "timeWindow",
-                            "value": 
-                            [
-                                "1000"
-                            ]
-                        },
-
-                        {
-                            "name": "ageLimit",
-                            "value": 
-                            [
-                                "1000"
-                            ]
-                        },
-
-                        {
-                            "name": "createClosedLoopEventId",
-                            "value": 
-                            [
-                                "Initial"
-                            ]
-                        },
-
-                        {
-                            "name": "outputEventName",
-                            "value": 
-                            [
-                                "ONSET"
-                            ]
-                        },
-
-                        {
-                            "stringSet": 
-                            [
-                                {
-                                    "name": "alarmCondition",
-                                    "value": 
-                                    [
-                                        "LSS_asdaCommunicationFailure"
-                                    ]
-                                },
-
-                                {
-                                    "name": "eventSeverity",
-                                    "value": 
-                                    [
-                                        "WARNING"
-                                    ]
-                                },
-
-                                {
-                                    "name": "eventSourceType",
-                                    "value": 
-                                    [
-                                        "f5BigIP"
-                                    ]
-                                }
-                            ]
-                        }
-                    ],
-
-                    [
-                        {
-                            "name": "aaiMatchingFields",
-                            "value": 
-                            [
-                                "generic-vnf.vnf-name",
-                                "vserver.vserver-name"
-                            ]
-                        },
-
-                        {
-                            "name": "aaiSendFields",
-                            "value": 
-                            [
-                                "generic-vnf.vnf-name",
-                                "vserver.vserver-name"
-                            ]
-                        },
-
-                        {
-                            "name": "timeWindow",
-                            "value": 
-                            [
-                                "3000"
-                            ]
-                        },
-
-                        {
-                            "name": "ageLimit",
-                            "value": 
-                            [
-                                "3000"
-                            ]
-                        },
-
-                        {
-                            "name": "createClosedLoopEventId",
-                            "value": 
-                            [
-                                "Initial"
-                            ]
-                        },
-
-                        {
-                            "name": "outputEventName",
-                            "value": 
-                            [
-                                "ABATED"
-                            ]
-                        },
-
-                        {
-                            "stringSet": 
-                            [
-                                {
-                                    "name": "alarmCondition",
-                                    "value": 
-                                    [
-                                        "LSS_asdaCommunicationFailure"
-                                    ]
-                                },
-
-                                {
-                                    "name": "eventSeverity",
-                                    "value": 
-                                    [
-                                        "MAJOR"
-                                    ]
-                                },
-
-                                {
-                                    "name": "eventSourceType",
-                                    "value": 
-                                    [
-                                        "f5BigIP"
-                                    ]
-                                }
-                            ]
-                        }
-                    ]
-                ]
-            }
-        ]
-    },
-
-    "Policy_": 
-    {
-        "Policy1": 
+        "Policy1":
         [
             {
                 "name": "pname",
@@ -364,12 +54,12 @@
             },
 
             {
-                "policyConfigurations": 
+                "policyConfigurations":
                 [
                     [
                         {
                             "name": "recipe",
-                            "value": 
+                            "value":
                             [
                                 "restart"
                             ]
@@ -377,7 +67,7 @@
 
                         {
                             "name": "maxRetries",
-                            "value": 
+                            "value":
                             [
                                 "3"
                             ]
@@ -385,7 +75,7 @@
 
                         {
                             "name": "retryTimeLimit",
-                            "value": 
+                            "value":
                             [
                                 "180"
                             ]
@@ -393,7 +83,7 @@
 
                         {
                             "name": "_id",
-                            "value": 
+                            "value":
                             [
                                 "n9bQ4t6"
                             ]
@@ -401,14 +91,14 @@
 
                         {
                             "name": "parentPolicy",
-                            "value": 
+                            "value":
                             [
                                 ""
                             ]
                         },
                         {
                             "name": "targetResourceId",
-                            "value": 
+                            "value":
                             [
                                 "resource-id"
                             ]
@@ -418,7 +108,7 @@
                     [
                         {
                             "name": "recipe",
-                            "value": 
+                            "value":
                             [
                                 "rebuild"
                             ]
@@ -426,7 +116,7 @@
 
                         {
                             "name": "maxRetries",
-                            "value": 
+                            "value":
                             [
                                 "3"
                             ]
@@ -434,7 +124,7 @@
 
                         {
                             "name": "retryTimeLimit",
-                            "value": 
+                            "value":
                             [
                                 "180"
                             ]
@@ -442,7 +132,7 @@
 
                         {
                             "name": "_id",
-                            "value": 
+                            "value":
                             [
                                 "ItE5xKT"
                             ]
@@ -450,7 +140,7 @@
 
                         {
                             "name": "parentPolicy",
-                            "value": 
+                            "value":
                             [
                                 "n9bQ4t6"
                             ]
@@ -458,7 +148,7 @@
 
                         {
                             "name": "parentPolicyConditions",
-                            "value": 
+                            "value":
                             [
                                 "Failure_Retries",
                                 "Failure_Timeout",
@@ -468,7 +158,7 @@
                         },
                         {
                             "name": "targetResourceId",
-                            "value": 
+                            "value":
                             [
                                 "resource-id"
                             ]
@@ -478,7 +168,7 @@
             }
         ],
 
-        "Policy2": 
+        "Policy2":
         [
             {
                 "name": "pname",
@@ -496,12 +186,12 @@
             },
 
             {
-                "policyConfigurations": 
+                "policyConfigurations":
                 [
                     [
                         {
                             "name": "recipe",
-                            "value": 
+                            "value":
                             [
                                 "restart"
                             ]
@@ -509,7 +199,7 @@
 
                         {
                             "name": "maxRetries",
-                            "value": 
+                            "value":
                             [
                                 "3"
                             ]
@@ -517,7 +207,7 @@
 
                         {
                             "name": "retryTimeLimit",
-                            "value": 
+                            "value":
                             [
                                 "180"
                             ]
@@ -525,7 +215,7 @@
 
                         {
                             "name": "_id",
-                            "value": 
+                            "value":
                             [
                                 "n9bQ4t6"
                             ]
@@ -533,14 +223,14 @@
 
                         {
                             "name": "parentPolicy",
-                            "value": 
+                            "value":
                             [
                                 ""
                             ]
                         },
                         {
                             "name": "targetResourceId",
-                            "value": 
+                            "value":
                             [
                                 "resource-id"
                             ]
@@ -550,7 +240,7 @@
                     [
                         {
                             "name": "recipe",
-                            "value": 
+                            "value":
                             [
                                 "rebuild"
                             ]
@@ -558,7 +248,7 @@
 
                         {
                             "name": "maxRetries",
-                            "value": 
+                            "value":
                             [
                                 "3"
                             ]
@@ -566,7 +256,7 @@
 
                         {
                             "name": "retryTimeLimit",
-                            "value": 
+                            "value":
                             [
                                 "180"
                             ]
@@ -574,7 +264,7 @@
 
                         {
                             "name": "_id",
-                            "value": 
+                            "value":
                             [
                                 "ItE5xKT"
                             ]
@@ -582,7 +272,7 @@
 
                         {
                             "name": "parentPolicy",
-                            "value": 
+                            "value":
                             [
                                 "n9bQ4t6"
                             ]
@@ -590,7 +280,7 @@
 
                         {
                             "name": "parentPolicyConditions",
-                            "value": 
+                            "value":
                             [
                                 "Failure_Retries",
                                 "Failure_Timeout",
@@ -600,7 +290,7 @@
                         },
                         {
                             "name": "targetResourceId",
-                            "value": 
+                            "value":
                             [
                                 "resource-id"
                             ]
@@ -611,9 +301,9 @@
         ]
     },
 
-    "TCA_": 
+    "TCA_":
     {
-        "Narra": 
+        "Narra":
         [
             {
                 "name": "tname",
@@ -661,7 +351,7 @@
             },
 
             {
-                "serviceConfigurations": 
+                "serviceConfigurations":
                 [
                     [
                         "PMRRCCONNESTABFAILCELLLATENCY",
@@ -680,7 +370,7 @@
             }
         ],
 
-        "Srini": 
+        "Srini":
         [
             {
                 "name": "tname",
@@ -728,7 +418,7 @@
             },
 
             {
-                "serviceConfigurations": 
+                "serviceConfigurations":
                 [
                     [
                         "PMRRCCONNESTABFAILCELLLATENCY",
diff --git a/src/test/resources/example/sdc/sdcVFResources.json b/src/test/resources/example/sdc/sdcVFResources.json
index a8f3219..62c58be 100644
--- a/src/test/resources/example/sdc/sdcVFResources.json
+++ b/src/test/resources/example/sdc/sdcVFResources.json
@@ -197,7 +197,7 @@
     {
         "uuid": "10b535db-b01b-4a4b-aeef-97423d2d2093",
         "invariantUUID": "761ed279-e5ff-43e2-8a05-b160224b7f54",
-        "name": "StringMatchingMS",
+        "name": "TcaMS",
         "version": "0.1",
         "toscaModelURL": "/sdc/v1/catalog/resources/10b535db-b01b-4a4b-aeef-97423d2d2093/toscaModel",
         "category": "DCAE Component",
diff --git a/src/test/resources/example/tca-policy-req/blueprint-expected.yaml b/src/test/resources/example/tca-policy-req/blueprint-expected.yaml
new file mode 100644
index 0000000..cd8ebd8
--- /dev/null
+++ b/src/test/resources/example/tca-policy-req/blueprint-expected.yaml
@@ -0,0 +1,50 @@
+tosca_definitions_version: cloudify_dsl_1_3
+imports: ['http://www.getcloudify.org/spec/cloudify/3.4/types.yaml', 'https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml',
+  'https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml',
+  'http://nexus01.research.att.com:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml']
+inputs:
+  location_id: {type: string}
+  service_id: {type: string}
+node_templates:
+  cdap_host_host:
+    type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure
+    properties:
+      location_id: {get_input: location_id}
+      scn_override: cdap_broker.solutioning-central.dcae.att.com
+    interfaces:
+      cloudify.interfaces.lifecycle: {}
+  tca_tca:
+    type: dcae.nodes.MicroService.cdap
+    properties:
+      app_config: {appDescription: DCAE Analytics Threshold Crossing Alert Application,
+        appName: dcae-tca, tcaSubscriberOutputStreamName: TCASubscriberOutputStream,
+        tcaVESAlertsTableName: TCAVESAlertsTable, tcaVESAlertsTableTTLSeconds: '1728000',
+        tcaVESMessageStatusTableName: TCAVESMessageStatusTable, tcaVESMessageStatusTableTTLSeconds: '86400',
+        thresholdCalculatorFlowletInstances: '2'}
+      app_preferences: {publisherContentType: application/json, publisherHostName: mrlocal-mtnjftle01.homer.att.com,
+        publisherHostPort: '3905', publisherMaxBatchSize: '10', publisherMaxRecoveryQueueSize: '100000',
+        publisherPollingInterval: '20000', publisherProtocol: https, publisherTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESPub,
+        publisherUserName: m00502@tca.af.dcae.att.com, publisherUserPassword: Te5021abc,
+        subscriberConsumerGroup: OpenDCAE-c12, subscriberConsumerId: c12, subscriberContentType: application/json,
+        subscriberHostName: mrlocal-mtnjftle01.homer.att.com, subscriberHostPort: '3905',
+        subscriberMessageLimit: '-1', subscriberPollingInterval: '20000', subscriberProtocol: https,
+        subscriberTimeoutMS: '-1', subscriberTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESSub,
+        subscriberUserName: m00502@tca.af.dcae.att.com, subscriberUserPassword: Te5021abc,
+        tca_policy: '{"cdap-tca-hi-lo_policy":{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","policyScope":"DCAE","policyName":"example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","controlLoopSchema":"VNF","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","controlLoopSchema":"VNF","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"}]}]}}'}
+      artifact_name: dcae-analytics-tca
+      artifact_version: 1.0.0
+      connections:
+        streams_publishes: []
+        streams_subscribes: []
+      jar_url: http://somejar
+      location_id: {get_input: location_id}
+      namespace: cdap_tca_hi_lo
+      programs:
+      - {program_id: TCAVESCollectorFlow, program_type: flows}
+      - {program_id: TCADMaaPMRSubscriberWorker, program_type: workers}
+      - {program_id: TCADMaaPMRPublisherWorker, program_type: workers}
+      service_component_type: cdap_app_tca
+      service_id: {get_input: service_id}
+      streamname: TCASubscriberOutputStream
+    relationships:
+    - {target: cdap_host_host, type: dcae.relationships.component_contained_in}
diff --git a/src/test/resources/example/tca-policy-req/blueprint-input.yaml b/src/test/resources/example/tca-policy-req/blueprint-input.yaml
new file mode 100644
index 0000000..9532225
--- /dev/null
+++ b/src/test/resources/example/tca-policy-req/blueprint-input.yaml
@@ -0,0 +1,79 @@
+tosca_definitions_version: cloudify_dsl_1_3
+imports:
+- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml
+- https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml
+- https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml
+- http://nexus01.research.att.com:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml
+inputs:
+  location_id:
+    type: string
+  service_id:
+    type: string
+node_templates:
+  cdap_host_host:
+    type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure
+    properties:
+      location_id:
+        get_input: location_id
+      scn_override: cdap_broker.solutioning-central.dcae.att.com
+    interfaces:
+      cloudify.interfaces.lifecycle: {}
+  tca_tca:
+    type: dcae.nodes.MicroService.cdap
+    properties:
+      app_config:
+        appDescription: DCAE Analytics Threshold Crossing Alert Application
+        appName: dcae-tca
+        tcaSubscriberOutputStreamName: TCASubscriberOutputStream
+        tcaVESAlertsTableName: TCAVESAlertsTable
+        tcaVESAlertsTableTTLSeconds: '1728000'
+        tcaVESMessageStatusTableName: TCAVESMessageStatusTable
+        tcaVESMessageStatusTableTTLSeconds: '86400'
+        thresholdCalculatorFlowletInstances: '2'
+      app_preferences:
+        publisherContentType: application/json
+        publisherHostName: mrlocal-mtnjftle01.homer.att.com
+        publisherHostPort: '3905'
+        publisherMaxBatchSize: '10'
+        publisherMaxRecoveryQueueSize: '100000'
+        publisherPollingInterval: '20000'
+        publisherProtocol: https
+        publisherTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESPub
+        publisherUserName: m00502@tca.af.dcae.att.com
+        publisherUserPassword: Te5021abc
+        subscriberConsumerGroup: OpenDCAE-c12
+        subscriberConsumerId: c12
+        subscriberContentType: application/json
+        subscriberHostName: mrlocal-mtnjftle01.homer.att.com
+        subscriberHostPort: '3905'
+        subscriberMessageLimit: '-1'
+        subscriberPollingInterval: '20000'
+        subscriberProtocol: https
+        subscriberTimeoutMS: '-1'
+        subscriberTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESSub
+        subscriberUserName: m00502@tca.af.dcae.att.com
+        subscriberUserPassword: Te5021abc
+        tca_policy: 
+      artifact_name: dcae-analytics-tca
+      artifact_version: 1.0.0
+      connections:
+        streams_publishes: []
+        streams_subscribes: []
+      jar_url: http://somejar
+      location_id:
+        get_input: location_id
+      namespace: cdap_tca_hi_lo
+      programs:
+      - program_id: TCAVESCollectorFlow
+        program_type: flows
+      - program_id: TCADMaaPMRSubscriberWorker
+        program_type: workers
+      - program_id: TCADMaaPMRPublisherWorker
+        program_type: workers
+      service_component_type: cdap_app_tca
+      service_id:
+        get_input: service_id
+      streamname: TCASubscriberOutputStream
+    relationships:
+    - target: cdap_host_host
+      type: dcae.relationships.component_contained_in
diff --git a/src/test/resources/example/tca-policy-req/tca-policy-expected.json b/src/test/resources/example/tca-policy-req/tca-policy-expected.json
new file mode 100644
index 0000000..ce23091
--- /dev/null
+++ b/src/test/resources/example/tca-policy-req/tca-policy-expected.json
@@ -0,0 +1,35 @@
+{
+  "cdap-tca-hi-lo_policy": {
+    "domain": "measurementsForVfScaling",
+    "metricsPerEventName": [
+      {
+        "eventName": "vFirewallBroadcastPackets",
+        "policyScope": "DCAE",
+        "policyName": "example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4",
+        "policyVersion": "v0.0.1",
+        "thresholds": [
+          {
+            "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null",
+            "controlLoopSchema": "VNF",
+            "version": "1.0.2",
+            "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
+            "thresholdValue": 123,
+            "direction": "GREATER_OR_EQUAL",
+            "severity": "MAJOR",
+            "closedLoopEventStatus": "ONSET"
+          },
+          {
+            "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null",
+            "controlLoopSchema": "VNF",
+            "version": "1.0.2",
+            "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
+            "thresholdValue": 123,
+            "direction": "GREATER_OR_EQUAL",
+            "severity": "MAJOR",
+            "closedLoopEventStatus": "ONSET"
+          }
+        ]
+      }
+    ]
+  }
+}
diff --git a/src/test/resources/example/templateProp.json b/src/test/resources/example/templateProp.json
deleted file mode 100644
index bbbfca5..0000000
--- a/src/test/resources/example/templateProp.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-  "global":[
-    {
-      "name":"service",
-      "value":[
-        "tosca_definitions_version: cloudify_dsl_1_2\r\n\r\nimports:\r\n - http:\/\/www.getcloudify.org\/spec\/cloudify\/3.3.1\/types.yaml\r\n - http:\/\/127.0.0.1\/1607_prod\/type_files\/cdap_app.yaml\r\n\r\nnode_templates:\r\n  SM:\r\n    type: dcae.nodes.cdap_app\r\n    properties:\r\n      service_name: \"cdap-string-matching\"\r\n      deployment_JSON: |-\r\n          {\r\n            \"clusterService\": {\"$ref\": \"\/services\/vm-cdap-cluster-central\/instances\/rdm2-central\"},\r\n            \"$class\": \"com.att.ecomp.dcae.controller.service.cdap.CdapServiceInstance\",\r\n            \"namespace\": \"<%= dcae_target_name %>\",\r\n            \"appNames\": [ \"SM\" ],\r\n            \"flowNames\": [ \"SM.SimpleFlow\" ],\r\n            \"apps\": {\r\n              \"SM\": {\r\n                \"jarFile\": \"\/opt\/app\/dcae-analytics-closed-loop-stringmatching-jars\/lib\/CdapClosedLoopSnmpTrapStringMatcher-0.1.jar\",\r\n                \"artifactName\": \"CdapClosedLoopSnmpTrapStringMatcher\",\r\n                \"version\": \"0.1\"\r\n              }\r\n            },\r\n          \r\n            \"configuration\": {\r\n             \"$class\": \"com.att.ecomp.dcae.clamp.common.StringMatchingConfiguration\",\r\n              \"messageReaderConsumerID\":\"4699\",\r\n              \"messageReaderConsumerGroup\": \"<%= dcae_target_name %>\",\r\n              \"aaiURL\": \"http:\/\/REPLACE_THIS_WITH_IP_PORT_FROM_BOOTED_DOCKER\/tenant\/\",\r\n              \"closedLoopEventClient\": \"configuration.dcae.microservice.stringmatcher.xml\",\r\n              \"dcae_target_name\": \"<%= dcae_target_name %>\",\r\n              \"dcae_target_type\": \"VM\",\r\n          \r\n              \"serviceConfigurations\": {}\r\n            }\r\n          }}}"
-      ]
-    }
-  ]
-}
diff --git a/src/test/resources/example/templatePropForTca.json b/src/test/resources/example/templatePropForTca.json
deleted file mode 100644
index 9f1ce1d..0000000
--- a/src/test/resources/example/templatePropForTca.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-  "global": [
-    {
-      "name": "service",
-      "value": [
-        "tosca_definitions_version: cloudify_dsl_1_2\r\n\r\nimports:\r\n- http://www.getcloudify.org/spec/cloudify/3.3.1/types.yaml\r\n- http://135.207.127.211/1607_prod/type_files/cdap_app.yaml\r\n\r\nnode_templates:\r\n  MTCA:\r\n    type: dcae.nodes.cdap_app\r\n    properties:\r\n      service_name: \"cdap-mtca-central\"\r\n      deployment_JSON: |-\r\n          {\r\n            \"clusterService\": {\"$ref\": \"/services/vm-cdap-cluster-central/instances/rdm2c\"},\r\n            \"namespace\": \"MTCA\",\r\n            \"appNames\": [ \"cdap-mtca\" ],\r\n            \"flowNames\": [ \"cdap-mtca.TCAVESCollectorFlow\" ],\r\n            \"workerNames\": [\"cdap-mtca.TCADMaaPMRSubscriberWorker\", \"cdap-mtca.TCADMaaPMRPublisherWorker\"],\r\n            \"serviceNames\" : [],\r\n            \"apps\": {\r\n              \"cdap-mtca\": {\r\n                \"jarFile\": \"/opt/app/cdap-apps/dcae-analytics-mtca-1.0.0.jar\",\r\n                \"artifactName\": \"dcae-analytics-mtca\",\r\n                \"version\": \"1.0.0\",\r\n                \"appConfigFileContent\": \"{config:{ \\\"appName\\\":\\\"cdap-mtca\\\", \\\"appDescription\\\":\\\"DCAE Analytics Threshold Crossing Alert Application\\\", \\\"tcaSubscriberOutputStreamName\\\":\\\"TCASubscriberOutputStream\\\", \\\"thresholdCalculatorFlowletInstances\\\":2, \\\"tcaVESMessageStatusTableName\\\":\\\"TCAVESMessageStatusTable\\\", \\\"tcaVESMessageStatusTableTTLSeconds\\\":864000, \\\"tcaVESAlertsTableName\\\":\\\"TCAVESAlertsTable\\\", \\\"tcaVESAlertsTableTTLSeconds\\\":1728000 }}\"\r\n              }\r\n            },\r\n          \r\n            \"configuration\": {\r\n                \"$class\": \"com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration\",\r\n                \"subscriberContentType\": \"\",\r\n                \"subscriberConsumerId\": \"c12\",\r\n                \"subscriberConsumerGroup\": \"OpenDCAE-c12\",\r\n                \"subscriberTimeoutMS\": \"-1\",\r\n                \"subscriberMessageLimit\": \"-1\",\r\n                \"subscriberPollingInterval\": \"20000\",\r\n                \"publisherContentType\": \"application/json\",\r\n                \"publisherMaxBatchSize\": \"10\",\r\n                \"publisherMaxRecoveryQueueSize\": \"100000\",\r\n                \"publisherPollingInterval\": \"20000\",\r\n                \"publisherAlertWindowingTime\": \"86400\",\r\n                \"policyName\": \"policy.dcae.configuration\",\r\n                \"policyScope\": \"pnf=eNodeB;type=configuration\",\r\n                \"policyVersion\": \"1.0.0\",\r\n                \"domain\" : \"measurementsForVfScaling\",\r\n                \r\n                \"signatures\" : {\r\n             \t }\r\n\r\n             }\r\n          }\r\n"
-      ]
-    }
-  ]
-}
\ No newline at end of file
diff --git a/src/test/resources/example/xsl-validation/modelBpmn.xml b/src/test/resources/example/xsl-validation/modelBpmn.xml
index 3021902..d80c89e 100644
--- a/src/test/resources/example/xsl-validation/modelBpmn.xml
+++ b/src/test/resources/example/xsl-validation/modelBpmn.xml
@@ -7,18 +7,10 @@
 		<bpmn:startEvent id="StartEvent_1">
 			<bpmn:outgoing>SequenceFlow_1nvvr00</bpmn:outgoing>
 		</bpmn:startEvent>
-		<bpmn:stringMatch id="StringMatch_0tw2y4f">
-			<bpmn:incoming>SequenceFlow_0qf2552</bpmn:incoming>
-			<bpmn:outgoing>SequenceFlow_1a2oxpd</bpmn:outgoing>
-		</bpmn:stringMatch>
 		<bpmn:vesCollector id="VesCollector_1kxjxy6" name="AAAAA">
 			<bpmn:incoming>SequenceFlow_0jeu0gv</bpmn:incoming>
 			<bpmn:outgoing>SequenceFlow_15gkgs5</bpmn:outgoing>
 		</bpmn:vesCollector>
-		<bpmn:collector id="Collector_">
-			<bpmn:incoming>SequenceFlow_1nvvr00</bpmn:incoming>
-			<bpmn:outgoing>SequenceFlow_0qf2552</bpmn:outgoing>
-		</bpmn:collector>
 		<bpmn:tCA id="TCA_09hcdsx">
 			<bpmn:incoming>SequenceFlow_15gkgs5</bpmn:incoming>
 			<bpmn:outgoing>SequenceFlow_0ev75ss</bpmn:outgoing>
@@ -31,15 +23,11 @@
 			<bpmn:incoming>SequenceFlow_103hvmr</bpmn:incoming>
 		</bpmn:endEvent>
 		<bpmn:holmes id="Holmes_1fzdqp9">
-			<bpmn:incoming>SequenceFlow_1a2oxpd</bpmn:incoming>
+			<bpmn:incoming>SequenceFlow_1nvvr00</bpmn:incoming>
 			<bpmn:outgoing>SequenceFlow_0jeu0gv</bpmn:outgoing>
 		</bpmn:holmes>
 		<bpmn:sequenceFlow id="SequenceFlow_1nvvr00"
-			sourceRef="StartEvent_1" targetRef="Collector_" />
-		<bpmn:sequenceFlow id="SequenceFlow_0qf2552"
-			sourceRef="Collector_" targetRef="StringMatch_0tw2y4f" />
-		<bpmn:sequenceFlow id="SequenceFlow_1a2oxpd"
-			sourceRef="StringMatch_0tw2y4f" targetRef="Holmes_1fzdqp9" />
+			sourceRef="StartEvent_1" targetRef="Holmes_1fzdqp9" />
 		<bpmn:sequenceFlow id="SequenceFlow_0jeu0gv"
 			sourceRef="Holmes_1fzdqp9" targetRef="VesCollector_1kxjxy6" />
 		<bpmn:sequenceFlow id="SequenceFlow_15gkgs5"
@@ -55,17 +43,10 @@
 				bpmnElement="StartEvent_1">
 				<dc:Bounds x="50" y="162" width="36" height="36" />
 			</bpmndi:BPMNShape>
-			<bpmndi:BPMNShape id="StringMatch_0tw2y4f_di"
-				bpmnElement="StringMatch_0tw2y4f">
-				<dc:Bounds x="324" y="192" width="120" height="80" />
-			</bpmndi:BPMNShape>
 			<bpmndi:BPMNShape id="VesCollector_1kxjxy6_di"
 				bpmnElement="VesCollector_1kxjxy6">
 				<dc:Bounds x="492" y="192" width="120" height="80" />
 			</bpmndi:BPMNShape>
-			<bpmndi:BPMNShape id="Collector__di" bpmnElement="Collector_">
-				<dc:Bounds x="159" y="206" width="120" height="80" />
-			</bpmndi:BPMNShape>
 			<bpmndi:BPMNShape id="TCA_09hcdsx_di" bpmnElement="TCA_09hcdsx">
 				<dc:Bounds x="651" y="192" width="120" height="80" />
 			</bpmndi:BPMNShape>
diff --git a/src/test/resources/example/xsl-validation/modelBpmnForVerif.json b/src/test/resources/example/xsl-validation/modelBpmnForVerif.json
index 40afe17..567a69d 100644
--- a/src/test/resources/example/xsl-validation/modelBpmnForVerif.json
+++ b/src/test/resources/example/xsl-validation/modelBpmnForVerif.json
@@ -1,16 +1,4 @@
 {
-  "collector": [
-    {
-      "id": "Collector_",
-      "from": "StartEvent_1"
-    }
-  ],
-  "stringMatch": [
-    {
-      "id": "StringMatch_0tw2y4f",
-      "from": "Collector_"
-    }
-  ],
   "policy": [
     {
       "id": "Policy_",
@@ -32,7 +20,7 @@
   "holmes": [
     {
       "id": "Holmes_1fzdqp9",
-      "from": "StringMatch_0tw2y4f"
+      "from": "StartEvent_1"
     }
   ]
 }
diff --git a/src/test/resources/expected/stringmatch.json b/src/test/resources/expected/stringmatch.json
deleted file mode 100644
index 52e6d01..0000000
--- a/src/test/resources/expected/stringmatch.json
+++ /dev/null
@@ -1 +0,0 @@
-{"service":"StringMatchingConfiguration","location":"Edge","uuid":"TestUUID","policyName":"example_model06.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_StringMatch_","description":"from clds","configName":"com.att.d2.policy.StringMatchingConfiguration","templateVersion":"1604","priority":"4","version":"1610","policyScope":"resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8","content":{"serviceConfigurations":{"Item1":{"rulegroup":"1493749598520","closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_1","aaiMatchingFields":["complex.city","vserver.vserver-name"],"aaiSendFields":["complex.city","vserver.vserver-name"],"stringSet":["eventSeverity","WARNING","alarmCondition","Reports a transient alarm condition when an outgoing Ro message send fails"],"timeWindow":"100","ageLimit":"100","createClosedLoopEventId":"Initial","outputEventName":"ONSET"},"Item2":{"rulegroup":"1493749665149","closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_2","aaiMatchingFields":["cloud-region.identity-url","vserver.vserver-name"],"aaiSendFields":["cloud-region.identity-url","vserver.vserver-name"],"stringSet":["eventSeverity","WARNING","alarmCondition","Reports a transient alarm condition when an outgoing Ro message send fails"],"timeWindow":"1000","ageLimit":"1000","createClosedLoopEventId":"Initial","outputEventName":"ONSET"},"Item3":{"rulegroup":"1493749665149","closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_2","aaiMatchingFields":["generic-vnf.vnf-name","vserver.vserver-name"],"aaiSendFields":["generic-vnf.vnf-name","vserver.vserver-name"],"stringSet":["eventSeverity","WARNING","alarmCondition","Reports a transient alarm condition when an outgoing Ro message send fails"],"timeWindow":"3000","ageLimit":"3000","createClosedLoopEventId":"Initial","outputEventName":"ABATED"}}}}
\ No newline at end of file
diff --git a/src/test/resources/expected/tca.json b/src/test/resources/expected/tca.json
deleted file mode 100644
index 2fd16bd..0000000
--- a/src/test/resources/expected/tca.json
+++ /dev/null
@@ -1,93 +0,0 @@
-{
-    "service": "MThresholdCrossingConfiguration",
-    "location": "Edge",
-    "uuid": "TestUUID",
-    "policyName": "example_model06.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_",
-    "description": "from clds",
-    "configName": "MThresholdCrossingConfiguration",
-    "templateVersion": "5.2.0.1",
-    "priority": "4",
-    "version": "5.2.0.1",
-    "policyScope": "resource=F5,service=vSCP,type=configuration,closedLoopControlName=vSCP_F5_Firewall_d925ed73-8231-4d02-9545-db4e101f88f8",
-    "content": 
-    {
-        "$class": "com.att.ecomp.dcae.clamp.common.MThresholdCrossingConfiguration",
-        "domain": "measurementsForVfScaling",
-        "policyScope": "pnf=eNodeB;type=configuration",
-        "policyName": "policy.dcae.configuration",
-        "policyVersion": "1.0.0",
-        "subscriberContentType": "application/json",
-        "subscriberConsumerId": "c13",
-        "subscriberConsumerGroup": "OpenDCAE-c13",
-        "subscriberTimeoutMS": "-1",
-        "subscriberMessageLimit": "-1",
-        "subscriberPollingInterval": "20000",
-        "publisherContentType": "application/json",
-        "publisherMaxBatchSize": "10",
-        "publisherMaxRecoveryQueueSize": "100000",
-        "publisherPollingInterval": "20000",
-        "publisherAlertWindowingTime": "86400",
-        "signatures": 
-        [
-            {
-                "nfNamingCode": "ENBE",
-                "target": "common_id",
-                "targetType": "eNodeB",
-                "useCaseName": "Narra",
-                "signatureName": "Narra_886be8da-14fe-tca1-d04b-d13b55d58df9",
-                "signatureUuid": "886be8da-14fe-tca1-d04b-d13b55d58df9",
-                "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_1",
-                "severity": "Warning",
-                "version": "1.0.2",
-                "maxInterval": 2,
-                "minMessageViolations": 3,
-                "thresholds": 
-                [
-                    {
-                        "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value",
-                        "thresholdName": "PMRRCCONNESTABFAILCELLLATENCY",
-                        "thresholdValue": 4,
-                        "direction": "LESS"
-                    },
-
-                    {
-                        "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value",
-                        "thresholdName": "PMRAATTCBRA",
-                        "thresholdValue": 30,
-                        "direction": "GREATER"
-                    }
-                ]
-            },
-
-            {
-                "nfNamingCode": "ENBE",
-                "target": "common_id",
-                "targetType": "eNodeB",
-                "useCaseName": "Srini",
-                "signatureName": "Srini_8b5ba88d-f4b4-tf0e-50b1-78a5a7dd412d",
-                "signatureUuid": "8b5ba88d-f4b4-tf0e-50b1-78a5a7dd412d",
-                "closedLoopControlName": "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_2",
-                "severity": "Critical",
-                "version": "1.0.2",
-                "maxInterval": 10,
-                "minMessageViolations": 5,
-                "thresholds": 
-                [
-                    {
-                        "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value",
-                        "thresholdName": "PMRRCCONNESTABFAILCELLLATENCY",
-                        "thresholdValue": 3,
-                        "direction": "EQUAL"
-                    },
-
-                    {
-                        "fieldPath": "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value",
-                        "thresholdName": "PMRAATTCBRA",
-                        "thresholdValue": 30,
-                        "direction": "GREATER"
-                    }
-                ]
-            }
-        ]
-    }
-}
\ No newline at end of file
