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 cb86acb..54b3fbb 100644
--- a/src/main/java/org/onap/clamp/clds/client/PolicyClient.java
+++ b/src/main/java/org/onap/clamp/clds/client/PolicyClient.java
@@ -37,6 +37,7 @@
 
 import javax.ws.rs.BadRequestException;
 
+import org.onap.clamp.clds.client.req.TcaRequestFormatter;
 import org.onap.clamp.clds.exception.policy.PolicyClientException;
 import org.onap.clamp.clds.model.prop.ModelProperties;
 import org.onap.clamp.clds.model.refprop.RefProp;
@@ -62,7 +63,6 @@
  * Policy utility methods - specifically, send the policy.
  */
 public class PolicyClient {
-
     protected static final String     POLICY_PREFIX_BASE         = "Config_";
     protected static final String     POLICY_PREFIX_BRMS_PARAM   = "Config_BRMS_Param_";
     protected static final String     POLICY_PREFIX_MICROSERVICE = "Config_MS_";
@@ -110,8 +110,6 @@
         // Data Issue: No policyDescription given.
         policyParameters.setPolicyDescription(refProp.getStringValue("op.policyDescription"));
 
-        policyParameters.setAttributes(attributes);
-
         // Set a random UUID(Mandatory)
         policyParameters.setRequestID(UUID.fromString(policyRequestUuid));
         String policyNamePrefix = refProp.getStringValue("policy.op.policyNamePrefix");
@@ -213,16 +211,12 @@
     public String sendMicroServiceInOther(String configBody, ModelProperties prop, String policyRequestUuid) {
 
         PolicyParameters policyParameters = new PolicyParameters();
-
-        // Set Policy Type
+        // Set Policy Type 
         policyParameters.setPolicyConfigType(PolicyConfigType.MicroService);
+        policyParameters.setOnapName("DCAE");
         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
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
index c2590d7..a71a5f3 100644
--- a/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java
+++ b/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java
@@ -27,6 +27,7 @@
 import com.att.eelf.configuration.EELFManager;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.dataformat.yaml.snakeyaml.Yaml;
 
 import java.util.HashMap;
@@ -70,16 +71,11 @@
 
             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);
+            ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.policy.template", service);
+            String policyName = refProp.getStringValue("tca.policyid.prefix") + modelProperties.getCurrentPolicyScopeAndPolicyName();
+            ((ObjectNode) rootNode).put("policyName", policyName);
+            ((ObjectNode) rootNode).put("description", "MicroService vCPE Policy");
+            ((ObjectNode) rootNode).replace("content", createPolicyContent(refProp, modelProperties, service, policyName, tca));
 
             String tcaPolicyReq = rootNode.toString();
             logger.info("tcaPolicyReq=" + tcaPolicyReq);
@@ -90,6 +86,43 @@
     }
 
     /**
+     * Format Tca Policy Content 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
+     * @return The Json string containing that should be sent to policy
+     */
+    public static JsonNode createPolicyContent(RefProp refProp, ModelProperties modelProperties, String service, String policyName, Tca tca) {
+        try {
+            if (null == service) {
+                service = modelProperties.getGlobal().getService();
+            }
+            if (null == tca){
+                tca = modelProperties.getType(Tca.class);
+                modelProperties.setCurrentModelElementId(tca.getId());
+            }
+            if (null == policyName) {
+                policyName = refProp.getStringValue("tca.policyid.prefix") + modelProperties.getCurrentPolicyScopeAndPolicyName();
+            }
+            ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", service);
+            ((ObjectNode) rootNode.get("metricsPerEventName").get(0)).put("eventName", tca.getTcaItem().getEventName());
+            ((ObjectNode) rootNode.get("metricsPerEventName").get(0)).put("policyName", policyName);
+            ((ObjectNode) rootNode.get("metricsPerEventName").get(0)).put("controlLoopSchemaType", tca.getTcaItem().getControlLoopSchemaType());
+            ObjectNode thresholdsParent = ((ObjectNode) rootNode.get("metricsPerEventName").get(0));
+
+            addThresholds(refProp, service, thresholdsParent, tca.getTcaItem(), modelProperties);
+
+            logger.info("tcaPolicyContent=" + rootNode.toString());
+            return (JsonNode) rootNode;
+        } catch (Exception e) {
+            throw new TcaRequestFormatterException("Exception caught when attempting to create the policy content JSON", e);
+        }
+    }
+
+    /**
      * Add threshold values to the existing policy JSON.
      *
      * @param refProp
@@ -114,7 +147,6 @@
             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());
@@ -143,7 +175,7 @@
     public static String updatedBlueprintWithConfiguration(RefProp refProp, ModelProperties modelProperties,
             String yamlValue) {
         try {
-            String jsonPolicy = createPolicyJson(refProp, modelProperties);
+            String jsonPolicy = ((ObjectNode) createPolicyContent(refProp, modelProperties, null, null, null)).toString();
 
             logger.info("Yaml that will be updated:" + yamlValue);
             Yaml yaml = new Yaml();
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 79da2db..13bff00 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
@@ -44,6 +44,7 @@
     private String                    tcaUuId;
     private String                    policyId;
     private String                    eventName;
+    private String                    controlLoopSchemaType;
     private List<TcaThreshold>        tcaThresholds;
 
     /**
@@ -57,6 +58,7 @@
         tcaUuId = AbstractModelElement.getValueByName(node, "tuuid");
         policyId = AbstractModelElement.getValueByName(node, "tcaPolId");
         eventName = AbstractModelElement.getValueByName(node, "eventName");
+        controlLoopSchemaType = AbstractModelElement.getValueByName(node, "controlLoopSchemaType");
         // process service Configurations
         JsonNode serviceConfigurationsNode = node.get(node.size() - 1).get("serviceConfigurations");
         Iterator<JsonNode> itr = serviceConfigurationsNode.elements();
@@ -66,6 +68,14 @@
         }
     }
 
+    public String getControlLoopSchemaType() {
+        return controlLoopSchemaType;
+    }
+
+    public void setControlLoopSchemaType(String controlLoopSchemaType) {
+        this.controlLoopSchemaType = controlLoopSchemaType;
+    }
+
     public String getTcaName() {
         return tcaName;
     }
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
index 43bdb5c..d278c25 100644
--- a/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java
+++ b/src/main/java/org/onap/clamp/clds/model/prop/TcaThreshold.java
@@ -40,7 +40,6 @@
     private String                    operator;
     private Integer                   threshold;
     private String                    closedLoopEventStatus;
-    private String                    controlLoopSchema;
 
     /**
      * Parse Tca Threshhold given json node
@@ -59,10 +58,7 @@
             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();
+            closedLoopEventStatus = node.get(3).asText();
         }
     }
 
@@ -97,12 +93,4 @@
     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/resources/META-INF/resources/designer/partials/portfolios/tca_properties.html b/src/main/resources/META-INF/resources/designer/partials/portfolios/tca_properties.html
index 546909a..323891e 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
@@ -191,8 +191,13 @@
 							<div class="col-sm-9" style="padding:0px;">
 								<select name="eventName" id="eventName" enableFilter="true"></select>
 							</div>
-						</div>            
-						
+						</div>
+						<div class="col-sm-8 form-group">
+							<label class="col-sm-3">Control Loop Schema Type</label>
+							<div class="col-sm-9" style="padding:0px;">
+								<select name="controlLoopSchemaType" id="controlLoopSchemaType" enableFilter="true"></select>
+							</div>
+						</div>
 						<div class="col-sm-8 form-group" style="display:none;">
 							<label class="col-sm-3"> Policy ID </label>
 							<div class="col-sm-9" style="padding:0px;">
@@ -202,7 +207,7 @@
 
 					</div>
 				</form>
-				
+
  				<div class="tcaBody row">
 					<div class="col-sm-5" style="padding:0px 5px; margin: 15px;">
 						<div class="panel panel-default" id="tcaTableHolder">
@@ -243,17 +248,11 @@
 									</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>
 					</div>
@@ -298,17 +297,16 @@
       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
  		if (typeof allPolicies !== "undefined"){
 	       	$.each(Object.keys(allPolicies), function(val, text) {
 	       		$('#tcaPol').append($('<option></option>').val(text).html(text));
-	        });  
+	        });
 		} else if (typeof elementMap !== "undefined"){
 			for (key in elementMap){
 				if (key.indexOf("Policy")>-1){
@@ -509,16 +507,15 @@
 						$('#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');
+            $('#formId'+count+' #closedLoopEventStatus').val(str[3]).multiselect('refresh');
 					}
-					
+
 					if ((!(readOnly||readMOnly)) && ($('#formId'+count + ' #deleteThresh').prop('disabled'))) {
 						$('#formId'+count + ' #deleteThresh').prop('disabled', false);
 					}
 				}
 			});
-			
+
 			$('#formId'+count+' #deleteThresh').on('click', function(){
 				$('#formId'+num+' .tcaErr').hide();
 				$('#formId'+count+ ' #properties_tab').invisible();
@@ -544,7 +541,6 @@
 					$('#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')) {
@@ -552,7 +548,7 @@
 					}
 				}
 			});
-			
+
 			$('#formId'+count+' #tname').on('change',function(){
 				$('#go_properties_tab'+count).text($('#formId'+count+' #tname').val())
 			});
diff --git a/src/main/resources/clds/clds-policy-config.properties b/src/main/resources/clds/clds-policy-config.properties
index fa2634b..a2bc1fa 100644
--- a/src/main/resources/clds/clds-policy-config.properties
+++ b/src/main/resources/clds/clds-policy-config.properties
@@ -21,9 +21,8 @@
 # ECOMP is a trademark and service mark of AT&T Intellectual Property.
 ###
 # Configuration Settings for Policy Engine Components
-PDP_URL1=https://vm1.policy.simpledemo.openecomp.org:8081/pdp/ , testpdp, alpha123
-PDP_URL2=https://vm1.policy.simpledemo.openecomp.org:8081/pdp/ , testpdp, alpha456
-PAP_URL=https://vm1.policy.simpledemo.openecomp.org:8081/pap/ , testpap, alpha123
+PDP_URL1=https://vm1.policy.simpledemo.onap.org:8081/pdp/ , testpdp, alpha123
+PDP_URL2=https://vm1.policy.simpledemo.onap.org:8081/pdp/ , testpdp, alpha123
 NOTIFICATION_TYPE=websocket
 NOTIFICATION_UEB_SERVERS=localhost
 NOTIFICATION_TOPIC=
diff --git a/src/main/resources/clds/clds-reference.properties b/src/main/resources/clds/clds-reference.properties
index fd7af5e..94f6dd2 100644
--- a/src/main/resources/clds/clds-reference.properties
+++ b/src/main/resources/clds/clds-reference.properties
@@ -48,8 +48,9 @@
 # TCA MicroService Policy request build properties
 #
 tca.policyid.prefix=DCAE.Config_
-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": "???"}
+tca.policy.template={"service": "policy_tosca_tca", "version": "1.0.0", "location": "SampleServiceLocation", "configName": "SampleConfigName", "uuid": "test", "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e", "templateVersion": "OpenSource.version.1", "policyName": "MicroServicevCPE", "description": "MicroService Policy", "priority": "1", "riskType": "SampleRiskType", "riskLevel": "1", "guard": "False","content":{}}
+tca.template= {"domain": "measurementsForVfScaling", "metricsPerEventName": [{"eventName": "???", "controlLoopSchemaType":"VNF","policyScope": "DCAE","policyName": "???","policyVersion": "v0.0.1","thresholds": []}]}
+tca.thresholds.template={"closedLoopControlName": "???", "version": "1.0.2","fieldPath": "?????", "thresholdValue": 0,"direction": "???","severity": "MAJOR", "closedLoopEventStatus": "???"}
 
 #
 #
@@ -60,24 +61,24 @@
 op.templateName=ClosedLoopvUSP
 op.operationTopic=APPC-CL
 op.notificationTopic=POLICY-CL-MGT
-op.controller=1610-vUSP
+op.controller=amsterdam
 op.policy.appc=APPC
 # by service: vSCP
 op.templateName.vSCP=ClosedLoopTemplate
 op.controller.vSCP=1607-f5fw
-op.eNodeB.templateName=CLeNodeB
+op.eNodeB.templateName=ClosedLoopControlName
 op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00
 op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL
-op.eNodeB.controller=ClosedLoop-eNodeB
+op.eNodeB.controller=amsterdam
 op.eNodeB.recipe={"eNodeBRecipes":[{"Actor":"AOTS","Recipe":"checkENodeBTicketHours","ParentPolicy":"","PPConditions":"","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEquipmentStatus","ParentPolicy":"checkENodeBTicketHours","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkEimStatus","ParentPolicy":"checkEquipmentStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"AOTS","Recipe":"checkMaintenanceWindow","ParentPolicy":"checkEimStatus","PPConditions":"Success","Retry":"0","TimeLimit":"120"},{"Actor":"SDNR","Recipe":"Reset","ParentPolicy":"checkMaintenanceWindow","PPConditions":"Success","Retry":"","TimeLimit":""}]}
 op.eNodeB.timeWindow=35
 op.eNodeB.limit=2
 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.onap.org:8080/sdc/v1/catalog/
+sdc.hostUrl=http://sdc.api.simpledemo.onap.org:8080
+sdc.serviceUrl=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/services
 sdc.serviceUsername=test
 sdc.servicePassword=123456
 sdc.artifactLabel=blueprintclampcockpit
@@ -99,8 +100,8 @@
 CLDS_SERVICE_CACHE_MAX_SECONDS=30
 
 #DCAE Inventory Url Properties
-DCAE_INVENTORY_URL = https://dcae.api.simpledemo.openecomp.org:8080
+DCAE_INVENTORY_URL = https://dcae.api.simpledemo.onap.org:8080
 
 #DCAE Dispatcher Url Properties
-DCAE_DISPATCHER_URL = https://dcae.api.simpledemo.openecomp.org:8443
+DCAE_DISPATCHER_URL = https://dcae.api.simpledemo.onap.org:8443
 
diff --git a/src/main/resources/clds/clds-users.json b/src/main/resources/clds/clds-users.json
index b569f9d..5909e8e 100644
--- a/src/main/resources/clds/clds-users.json
+++ b/src/main/resources/clds/clds-users.json
@@ -1,7 +1,20 @@
  [{
-    "user":"admin",
-    "password":"5f4dcc3b5aa765d61d8327deb882cf99",
-	"permissions": 
+	"user":"admin",
+	"password":"5f4dcc3b5aa765d61d8327deb882cf99",
+	"permissions":
+	            [
+	               "permission-type-cl|dev|read",
+	               "permission-type-cl|dev|update",
+	               "permission-type-cl-manage|dev|*",
+	               "permission-type-filter-vf|dev|*",
+	               "permission-type-template|dev|read",
+	               "permission-type-template|dev|update"
+	            ]
+	},
+	{
+	"user":"cs0008",
+	"password":"5f4dcc3b5aa765d61d8327deb882cf99",
+	"permissions":
 	            [
 	               "permission-type-cl|dev|read",
 	               "permission-type-cl|dev|update",
@@ -11,5 +24,4 @@
 	               "permission-type-template|dev|update"
 	            ]
 	}
-
 ]
\ No newline at end of file
diff --git a/src/main/resources/clds/globalClds.properties b/src/main/resources/clds/globalClds.properties
index d21afbc..c3d2706 100644
--- a/src/main/resources/clds/globalClds.properties
+++ b/src/main/resources/clds/globalClds.properties
@@ -11,14 +11,14 @@
 # 
 # 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 
+# 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.
 ###
 
-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":{"":""}}}}}
+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"},"controlLoopSchemaType":{"":"","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":{"":""}}}}}
