diff --git a/ui-react/src/components/backend_communication/LoopActionService.js b/ui-react/src/components/backend_communication/LoopActionService.js
index 027243b..9ce8ff0 100644
--- a/ui-react/src/components/backend_communication/LoopActionService.js
+++ b/ui-react/src/components/backend_communication/LoopActionService.js
@@ -20,37 +20,35 @@
  * ===================================================================
  *
  */
-const clActionService = {
-    submit
+const loopActionService = {
+	submit
 };
 
+
 function submit(uiAction) {
-    const cl_name = "";
-    console.log("clActionServices perform action: " + uiAction + " closedloopName="
-		    + cl_name);
-    const svcAction = uiAction.toLowerCase();
-		const svcUrl = "/restservices/clds/v2/loop/" + svcAction + "/" + cl_name;
+	const cl_name = "";
+	console.log("clActionServices perform action: " + uiAction + " closedloopName="
+		+ cl_name);
+	const svcAction = uiAction.toLowerCase();
+	const svcUrl = "/restservices/clds/v2/loop/" + svcAction + "/" + cl_name;
 
-    let options = {
-        method: 'GET'
-    };
-    return sendRequest (svcUrl, svcAction, options);
+	let options = {
+		method: 'GET'
+	};
+	return sendRequest(svcUrl, svcAction, options);
 }
 
+function sendRequest(svcUrl, svcAction) {
+	fetch(svcUrl, options)
+		.then(
+			response => {
+				alertService.alertMessage("Action Successful: " + svcAction, 1)
+			}).error(error => {
+				alertService.alertMessage("Action Failure: " + svcAction, 2);
+				return Promise.reject(error);
+			});
 
+	return response.json();
+};
 
-function sendRequest (svcUrl, svcAction) {
-  fetch(svcUrl, options)
-    .then(
-      response => {
-        alertService.alertMessage("Action Successful: " + svcAction, 1)
-    }).error( error => {
-        alertService.alertMessage("Action Failure: " + svcAction, 2);
-        return Promise.reject(error);
-    });
-
-      return response.json();
-    });
-}
-
-export default clActionService;
+export default loopActionService;
\ No newline at end of file
diff --git a/ui-react/src/components/backend_communication/LoopCache.js b/ui-react/src/components/backend_communication/LoopCache.js
index 7fd2059..2ef8396 100644
--- a/ui-react/src/components/backend_communication/LoopCache.js
+++ b/ui-react/src/components/backend_communication/LoopCache.js
@@ -20,95 +20,95 @@
  * ===================================================================
  * 
  */
-class LoopCache
-{
-	constructor(loopJson) {
-		this.loopJsonCache=loopJson;
+class LoopCache {
+	constructor() {
+		//this.loopJsonCache=loopJson;
+		this.loopJsonCache = require('./example.json'); //(with path)
 	}
-	
+
 	updateMsProperties(type, newMsProperties) {
-	    if (newMsProperties["name"] == type) {
-	        for (p in this.loopJsonCache["microServicePolicies"]) {
-	            if (this.loopJsonCache["microServicePolicies"][p]["name"] == type) {
-	                this.loopJsonCache["microServicePolicies"][p] = newMsProperties;
-	            }
-	        }
-	    }
+		if (newMsProperties["name"] == type) {
+			for (var policy in this.loopJsonCache["microServicePolicies"]) {
+				if (this.loopJsonCache["microServicePolicies"][policy]["name"] == type) {
+					this.loopJsonCache["microServicePolicies"][policy] = newMsProperties;
+				}
+			}
+		}
 	}
-	
-	 updateGlobalProperties(newGlobalProperties) {
-	    this.loopJsonCache["globalPropertiesJson"] = newGlobalProperties;
+
+	updateGlobalProperties(newGlobalProperties) {
+		this.loopJsonCache["globalPropertiesJson"] = newGlobalProperties;
 	}
-	
-	 updateOpPolicyProperties(newOpProperties) {	
-	   this.loopJsonCache["operationalPolicies"] = newOpProperties;
+
+	updateOpPolicyProperties(newOpProperties) {
+		this.loopJsonCache["operationalPolicies"] = newOpProperties;
 	}
-	
-	 getLoopName() {
-	    return this.loopJsonCache["name"];
+
+	getLoopName() {
+		return this.loopJsonCache["name"];
 	}
-	
-	 getOperationalPolicyProperty() {
-	    return JSON.parse(JSON.stringify(this.loopJsonCache["operationalPolicies"]["0"]["configurationsJson"]));
+
+	getOperationalPolicyProperty() {
+		return JSON.parse(JSON.stringify(this.loopJsonCache["operationalPolicies"]["0"]["configurationsJson"]));
 	}
-	
-	 getOperationalPolicies() {
-	    return JSON.parse(JSON.stringify(this.loopJsonCache["operationalPolicies"]));
+
+	getOperationalPolicies() {
+		return JSON.parse(JSON.stringify(this.loopJsonCache["operationalPolicies"]));
 	}
-	
-	 getGlobalProperty() {
-	    return JSON.parse(JSON.stringify(this.loopJsonCache["globalPropertiesJson"]));
+
+	getGlobalProperty() {
+		return JSON.parse(JSON.stringify(this.loopJsonCache["globalPropertiesJson"]));
 	}
-	
-	 getDeploymentProperties() {
-	    return JSON.parse(JSON.stringify(this.loopJsonCache["globalPropertiesJson"]["dcaeDeployParameters"]));
+
+	getDeploymentProperties() {
+		return JSON.parse(JSON.stringify(this.loopJsonCache["globalPropertiesJson"]["dcaeDeployParameters"]));
 	}
-	
-	 getMsJson(type) {
-	    var msProperties = this.loopJsonCache["microServicePolicies"];
-	    for (p in msProperties) {
-	        if (msProperties[p]["name"] == type) {
-	           return JSON.parse(JSON.stringify(msProperties[p]));
-	        }
-	    }
-	    return null;
+
+	getMsJson(type) {
+		var msProperties = this.loopJsonCache["microServicePolicies"];
+		for (var policy in msProperties) {
+			if (msProperties[policy]["name"] == type) {
+				return JSON.parse(JSON.stringify(msProperties[policy]));
+			}
+		}
+		return null;
 	}
-	
-	 getMsProperty(type) {
-	    var msProperties = this.loopJsonCache["microServicePolicies"];
-	    for (p in msProperties) {
-	        if (msProperties[p]["name"] == type) {
-	        	if (msProperties[p]["properties"] !== null && msProperties[p]["properties"] !== undefined) {
-	        		return JSON.parse(JSON.stringify(msProperties[p]["properties"]));
-	        	}
-	        }
-	    }
-	    return null;
+
+	getMsProperty(type) {
+		var msProperties = this.loopJsonCache["microServicePolicies"];
+		for (var policy in msProperties) {
+			if (msProperties[policy]["name"] == type) {
+				if (msProperties[policy]["properties"] !== null && msProperties[policy]["properties"] !== undefined) {
+					return JSON.parse(JSON.stringify(msProperties[policy]["properties"]));
+				}
+			}
+		}
+		return null;
 	}
-	
-	 getMsUI(type) {
-	    var msProperties = this.loopJsonCache["microServicePolicies"];
-	    for (p in msProperties) {
-	        if (msProperties[p]["name"] == type) {
-	        	return JSON.parse(JSON.stringify(msProperties[p]["jsonRepresentation"]));
-	        }
-	    }
-	    return null;
+
+	getMsUI(type) {
+		var msProperties = this.loopJsonCache["microServicePolicies"];
+		for (var policy in msProperties) {
+			if (msProperties[policy]["name"] == type) {
+				return JSON.parse(JSON.stringify(msProperties[policy]["jsonRepresentation"]));
+			}
+		}
+		return null;
 	}
-	
-	 getResourceDetailsVfProperty() {
+
+	getResourceDetailsVfProperty() {
 		return this.loopJsonCache["modelPropertiesJson"]["resourceDetails"]["VF"];
 	}
-	
-	 getResourceDetailsVfModuleProperty() {
+
+	getResourceDetailsVfModuleProperty() {
 		return this.loopJsonCache["modelPropertiesJson"]["resourceDetails"]["VFModule"];
 	}
-	
-	 getLoopLogsArray() {
+
+	getLoopLogsArray() {
 		return this.loopJsonCache.loopLogs;
 	}
-	
-	 getComponentStates() {
+
+	getComponentStates() {
 		return this.loopJsonCache.components;
 	}
 
diff --git a/ui-react/src/components/backend_communication/LoopService.js b/ui-react/src/components/backend_communication/LoopService.js
deleted file mode 100644
index 982180d..0000000
--- a/ui-react/src/components/backend_communication/LoopService.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * Copyright (C) 2019 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============================================
- * ===================================================================
- *
- */
-
-const LoopService = {
-    login
-};
-
-function login(username, password) {
-    let options = {
-           method: 'GET'
-         };
-    if (username && password) {
-      options = {
-             method: 'GET',
-             credentials: 'include',
-             headers: {
-                'Authorization': "Basic " + new Buffer(username + ":" + password).toString("base64")
-             }
-           };
-    }
-
-    return fetch(`/restservices/clds/v1/user/getUser`, options)
-      .then(response => handleResponse(response))
-      .then(function(data) {
-          localStorage.setItem('user', data);
-          console.log(data);
-});
-}
-
-function handleResponse(response) {
-     if (!response.ok || response.redirected === true) {
-          if (response.status === 401 || response.status === 500 || response.redirected === true) {
-              if (localStorage.getItem('tryBasicAuth')) {
-                // login failed, go to invalud login page
-                localStorage.removeItem('user');
-              } else {
-                // try to login with username and password
-                localStorage.setItem('tryBasicAuth', true);
-              }
-          }
-          const error = response.statusText;
-          return Promise.reject(error);
-      }
-    return response.text();
-}
-export default LoopService;
diff --git a/ui-react/src/components/backend_communication/UserService.js b/ui-react/src/components/backend_communication/UserService.js
new file mode 100644
index 0000000..8145395
--- /dev/null
+++ b/ui-react/src/components/backend_communication/UserService.js
@@ -0,0 +1,50 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2019 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============================================
+ * ===================================================================
+ *
+ */
+
+export default class UserService {
+
+	static LOGIN() {
+		return fetch('/restservices/clds/v1/user/getUser', {
+				method: 'GET',
+				credentials: 'include',
+			})
+		.then(function (response) {
+			if (response.ok) {
+				console.log("getUser response received: ", response.status);
+				return response.text();
+			} else {
+				console.error("getUser failed with status code: ",response.status);
+				return "Anonymous";
+			}
+		})
+		.then(function (data) {
+			console.log ("User connected:",data)
+			return data;
+		})
+		.catch(function(error) {
+			console.error("getUser error received",error);
+			return "Anonymous";
+		});
+	}
+}
+
diff --git a/ui-react/src/components/backend_communication/example.json b/ui-react/src/components/backend_communication/example.json
new file mode 100644
index 0000000..f3cc9e1
--- /dev/null
+++ b/ui-react/src/components/backend_communication/example.json
@@ -0,0 +1,417 @@
+{
+  "name": "LOOP_h2NMX_v1_0_ResourceInstanceName1_tca",
+  "dcaeBlueprintId": "typeId-3a942643-a8f7-4e54-b2c1-eea8daba2b17",
+  "globalPropertiesJson": {
+    "dcaeDeployParameters": {
+      "location_id": "",
+      "service_id": "",
+      "policy_id": "TCA_h2NMX_v1_0_ResourceInstanceName1_tca"
+    }
+  },
+  "modelPropertiesJson": {
+    "serviceDetails": {
+      "serviceType": "",
+      "namingPolicy": "",
+      "environmentContext": "General_Revenue-Bearing",
+      "serviceEcompNaming": "true",
+      "serviceRole": "",
+      "name": "vLoadBalancerMS",
+      "description": "vLBMS",
+      "invariantUUID": "30ec5b59-4799-48d8-ac5f-1058a6b0e48f",
+      "ecompGeneratedNaming": "true",
+      "category": "Network L4+",
+      "type": "Service",
+      "UUID": "63cac700-ab9a-4115-a74f-7eac85e3fce0",
+      "instantiationType": "A-la-carte"
+    },
+    "resourceDetails": {
+      "CP": {},
+      "VL": {},
+      "VF": {
+        "vLoadBalancerMS 0": {
+          "resourceVendor": "Test",
+          "resourceVendorModelNumber": "",
+          "name": "vLoadBalancerMS",
+          "description": "vLBMS",
+          "invariantUUID": "1a31b9f2-e50d-43b7-89b3-a040250cf506",
+          "subcategory": "Load Balancer",
+          "category": "Application L4+",
+          "type": "VF",
+          "UUID": "b4c4f3d7-929e-4b6d-a1cd-57e952ddc3e6",
+          "version": "1.0",
+          "resourceVendorRelease": "1.0",
+          "customizationUUID": "465246dc-7748-45f4-a013-308d92922552"
+        }
+      },
+      "CR": {},
+      "VFC": {},
+      "PNF": {},
+      "Service": {},
+      "CVFC": {},
+      "Service Proxy": {},
+      "Configuration": {},
+      "AllottedResource": {},
+      "VFModule": {
+        "Vloadbalancerms..vpkg..module-1": {
+          "vfModuleModelInvariantUUID": "ca052563-eb92-4b5b-ad41-9111768ce043",
+          "vfModuleModelVersion": "1",
+          "vfModuleModelName": "Vloadbalancerms..vpkg..module-1",
+          "vfModuleModelUUID": "1e725ccc-b823-4f67-82b9-4f4367070dbc",
+          "vfModuleModelCustomizationUUID": "1bffdc31-a37d-4dee-b65c-dde623a76e52",
+          "min_vf_module_instances": 0,
+          "vf_module_label": "vpkg",
+          "max_vf_module_instances": 1,
+          "vf_module_type": "Expansion",
+          "isBase": false,
+          "initial_count": 0,
+          "volume_group": false
+        },
+        "Vloadbalancerms..vdns..module-3": {
+          "vfModuleModelInvariantUUID": "4c10ba9b-f88f-415e-9de3-5d33336047fa",
+          "vfModuleModelVersion": "1",
+          "vfModuleModelName": "Vloadbalancerms..vdns..module-3",
+          "vfModuleModelUUID": "4fa73b49-8a6c-493e-816b-eb401567b720",
+          "vfModuleModelCustomizationUUID": "bafcdab0-801d-4d81-9ead-f464640a38b1",
+          "min_vf_module_instances": 0,
+          "vf_module_label": "vdns",
+          "max_vf_module_instances": 50,
+          "vf_module_type": "Expansion",
+          "isBase": false,
+          "initial_count": 0,
+          "volume_group": false
+        },
+        "Vloadbalancerms..base_template..module-0": {
+          "vfModuleModelInvariantUUID": "921f7c96-ebdd-42e6-81b9-1cfc0c9796f3",
+          "vfModuleModelVersion": "1",
+          "vfModuleModelName": "Vloadbalancerms..base_template..module-0",
+          "vfModuleModelUUID": "63734409-f745-4e4d-a38b-131638a0edce",
+          "vfModuleModelCustomizationUUID": "86baddea-c730-4fb8-9410-cd2e17fd7f27",
+          "min_vf_module_instances": 1,
+          "vf_module_label": "base_template",
+          "max_vf_module_instances": 1,
+          "vf_module_type": "Base",
+          "isBase": true,
+          "initial_count": 1,
+          "volume_group": false
+        },
+        "Vloadbalancerms..vlb..module-2": {
+          "vfModuleModelInvariantUUID": "a772a1f4-0064-412c-833d-4749b15828dd",
+          "vfModuleModelVersion": "1",
+          "vfModuleModelName": "Vloadbalancerms..vlb..module-2",
+          "vfModuleModelUUID": "0f5c3f6a-650a-4303-abb6-fff3e573a07a",
+          "vfModuleModelCustomizationUUID": "96a78aad-4ffb-4ef0-9c4f-deb03bf1d806",
+          "min_vf_module_instances": 0,
+          "vf_module_label": "vlb",
+          "max_vf_module_instances": 1,
+          "vf_module_type": "Expansion",
+          "isBase": false,
+          "initial_count": 0,
+          "volume_group": false
+        }
+      }
+    }
+  },
+  "lastComputedState": "DESIGN",
+  "components": {
+    "POLICY": {
+      "componentState": {
+        "stateName": "NOT_SENT",
+        "description": "The policies defined have NOT yet been created on the policy engine"
+      }
+    },
+    "DCAE": {
+      "componentState": {
+        "stateName": "BLUEPRINT_DEPLOYED",
+        "description": "The DCAE blueprint has been found in the DCAE inventory but not yet instancianted for this loop"
+      }
+    }
+  },
+  "operationalPolicies": [
+    {
+      "name": "OPERATIONAL_h2NMX_v1_0_ResourceInstanceName1_tca",
+      "configurationsJson": {
+        "guard_policies": {
+          "guard.minmax.new": {
+            "recipe": "",
+            "clname": "LOOP_h2NMX_v1_0_ResourceInstanceName1_tca",
+            "actor": "",
+            "targets": "",
+            "min": "gg",
+            "max": "gg",
+            "limit": "",
+            "timeUnits": "",
+            "timeWindow": "",
+            "guardActiveStart": "00:00:00Z",
+            "guardActiveEnd": "00:00:01Z"
+          }
+        },
+        "operational_policy": {
+          "controlLoop": {
+            "trigger_policy": "new",
+            "timeout": "0",
+            "abatement": "false",
+            "controlLoopName": "LOOP_h2NMX_v1_0_ResourceInstanceName1_tca"
+          },
+          "policies": [
+            {
+              "id": "new",
+              "recipe": "",
+              "retry": "0",
+              "timeout": "0",
+              "actor": "",
+              "payload": "",
+              "success": "",
+              "failure": "",
+              "failure_timeout": "",
+              "failure_retries": "",
+              "failure_exception": "",
+              "failure_guard": "",
+              "target": {
+                "type": "VM",
+                "resourceID": ""
+              }
+            }
+          ]
+        }
+      }
+    }
+  ],
+  "microServicePolicies": [
+    {
+      "name": "TCA_h2NMX_v1_0_ResourceInstanceName1_tca",
+      "modelType": "onap.policies.monitoring.cdap.tca.hi.lo.app",
+      "properties": {
+        "domain": "measurementsForVfScaling",
+        "metricsPerEventName": [
+          {
+            "policyVersion": "ff",
+            "thresholds": [
+              {
+                "severity": "CRITICAL",
+                "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta",
+                "thresholdValue": 0,
+                "closedLoopEventStatus": "ONSET",
+                "closedLoopControlName": "ff",
+                "version": "ff",
+                "direction": "LESS"
+              }
+            ],
+            "policyName": "ff",
+            "controlLoopSchemaType": "VM",
+            "policyScope": "ff",
+            "eventName": "ff"
+          }
+        ]
+      },
+      "shared": false,
+      "jsonRepresentation": {
+        "schema": {
+          "uniqueItems": "true",
+          "format": "tabs-top",
+          "type": "array",
+          "title": "TCA Policy JSON",
+          "items": {
+            "type": "object",
+            "title": "TCA Policy JSON",
+            "required": [
+              "domain",
+              "metricsPerEventName"
+            ],
+            "properties": {
+              "domain": {
+                "propertyOrder": 1001,
+                "default": "measurementsForVfScaling",
+                "title": "Domain name to which TCA needs to be applied",
+                "type": "string"
+              },
+              "metricsPerEventName": {
+                "propertyOrder": 1002,
+                "uniqueItems": "true",
+                "format": "tabs-top",
+                "title": "Contains eventName and threshold details that need to be applied to given eventName",
+                "type": "array",
+                "items": {
+                  "type": "object",
+                  "required": [
+                    "controlLoopSchemaType",
+                    "eventName",
+                    "policyName",
+                    "policyScope",
+                    "policyVersion",
+                    "thresholds"
+                  ],
+                  "properties": {
+                    "policyVersion": {
+                      "propertyOrder": 1007,
+                      "title": "TCA Policy Scope Version",
+                      "type": "string"
+                    },
+                    "thresholds": {
+                      "propertyOrder": 1008,
+                      "uniqueItems": "true",
+                      "format": "tabs-top",
+                      "title": "Thresholds associated with eventName",
+                      "type": "array",
+                      "items": {
+                        "type": "object",
+                        "required": [
+                          "closedLoopControlName",
+                          "closedLoopEventStatus",
+                          "direction",
+                          "fieldPath",
+                          "severity",
+                          "thresholdValue",
+                          "version"
+                        ],
+                        "properties": {
+                          "severity": {
+                            "propertyOrder": 1013,
+                            "title": "Threshold Event Severity",
+                            "type": "string",
+                            "enum": [
+                              "CRITICAL",
+                              "MAJOR",
+                              "MINOR",
+                              "WARNING",
+                              "NORMAL"
+                            ]
+                          },
+                          "fieldPath": {
+                            "propertyOrder": 1012,
+                            "title": "Json field Path as per CEF message which needs to be analyzed for TCA",
+                            "type": "string",
+                            "enum": [
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated",
+                              "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated",
+                              "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle",
+                              "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt",
+                              "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice",
+                              "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq",
+                              "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal",
+                              "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem",
+                              "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait",
+                              "$.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage",
+                              "$.event.measurementsForVfScalingFields.meanRequestLatency",
+                              "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered",
+                              "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached",
+                              "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured",
+                              "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree",
+                              "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed",
+                              "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value"
+                            ]
+                          },
+                          "thresholdValue": {
+                            "propertyOrder": 1014,
+                            "title": "Threshold value for the field Path inside CEF message",
+                            "type": "integer"
+                          },
+                          "closedLoopEventStatus": {
+                            "propertyOrder": 1010,
+                            "title": "Closed Loop Event Status of the threshold",
+                            "type": "string",
+                            "enum": [
+                              "ONSET",
+                              "ABATED"
+                            ]
+                          },
+                          "closedLoopControlName": {
+                            "propertyOrder": 1009,
+                            "title": "Closed Loop Control Name associated with the threshold",
+                            "type": "string"
+                          },
+                          "version": {
+                            "propertyOrder": 1015,
+                            "title": "Version number associated with the threshold",
+                            "type": "string"
+                          },
+                          "direction": {
+                            "propertyOrder": 1011,
+                            "title": "Direction of the threshold",
+                            "type": "string",
+                            "enum": [
+                              "LESS",
+                              "LESS_OR_EQUAL",
+                              "GREATER",
+                              "GREATER_OR_EQUAL",
+                              "EQUAL"
+                            ]
+                          }
+                        }
+                      }
+                    },
+                    "policyName": {
+                      "propertyOrder": 1005,
+                      "title": "TCA Policy Scope Name",
+                      "type": "string"
+                    },
+                    "controlLoopSchemaType": {
+                      "propertyOrder": 1003,
+                      "title": "Specifies Control Loop Schema Type for the event Name e.g. VNF, VM",
+                      "type": "string",
+                      "enum": [
+                        "VM",
+                        "VNF"
+                      ]
+                    },
+                    "policyScope": {
+                      "propertyOrder": 1006,
+                      "title": "TCA Policy Scope",
+                      "type": "string"
+                    },
+                    "eventName": {
+                      "propertyOrder": 1004,
+                      "title": "Event name to which thresholds need to be applied",
+                      "type": "string"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  ],
+  "loopLogs": [
+    {
+      "id": 2,
+      "logType": "INFO",
+      "logComponent": "CLAMP",
+      "message": "Micro Service policies UPDATED",
+      "logInstant": "2019-07-08T09:44:53Z"
+    },
+    {
+      "id": 1,
+      "logType": "INFO",
+      "logComponent": "CLAMP",
+      "message": "Operational and Guard policies UPDATED",
+      "logInstant": "2019-07-08T09:44:37Z"
+    }
+  ]
+}
