Draft of op policy

First draft of the Operational policy based on JsonEditor, it's a wip
code

Issue-ID: CLAMP-430
Change-Id: I2c7970e94488f4020377fd9d4d00691a3590b13e
Signed-off-by: sebdet <sebastien.determe@intl.att.com>
diff --git a/src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java b/src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java
index 8972e51..728b61c 100644
--- a/src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java
+++ b/src/test/java/org/onap/clamp/policy/microservice/OperationalPolicyPayloadTest.java
@@ -42,29 +42,29 @@
     @Test
     public void testOperationalPolicyPayloadConstruction() throws IOException {
         JsonObject jsonConfig = new GsonBuilder().create().fromJson(
-            ResourceFileUtil.getResourceAsString("tosca/operational-policy-properties.json"), JsonObject.class);
+                ResourceFileUtil.getResourceAsString("tosca/operational-policy-properties.json"), JsonObject.class);
         OperationalPolicy policy = new OperationalPolicy("testPolicy", null, jsonConfig);
 
         assertThat(policy.createPolicyPayloadYaml())
-            .isEqualTo(ResourceFileUtil.getResourceAsString("tosca/operational-policy-payload.yaml"));
+                .isEqualTo(ResourceFileUtil.getResourceAsString("tosca/operational-policy-payload.yaml"));
 
         assertThat(policy.createPolicyPayload())
-            .isEqualTo(ResourceFileUtil.getResourceAsString("tosca/operational-policy-payload.json"));
+                .isEqualTo(ResourceFileUtil.getResourceAsString("tosca/operational-policy-payload.json"));
     }
 
     @Test
     public void testLegacyOperationalPolicyPayloadConstruction() throws IOException {
         JsonObject jsonConfig = new GsonBuilder().create().fromJson(
-            ResourceFileUtil.getResourceAsString("tosca/operational-policy-properties.json"), JsonObject.class);
+                ResourceFileUtil.getResourceAsString("tosca/operational-policy-properties.json"), JsonObject.class);
         assertThat(LegacyOperationalPolicy.createPolicyPayloadYamlLegacy(jsonConfig.get("operational_policy")))
-            .isEqualTo(ResourceFileUtil.getResourceAsString("tosca/operational-policy-payload-legacy.yaml"));
+                .isEqualTo(ResourceFileUtil.getResourceAsString("tosca/operational-policy-payload-legacy.yaml"));
     }
 
     @Test
     public void testGuardPolicyEmptyPayloadConstruction() throws IOException {
         JsonObject jsonConfig = new GsonBuilder().create().fromJson(
-            ResourceFileUtil.getResourceAsString("tosca/operational-policy-no-guard-properties.json"),
-            JsonObject.class);
+                ResourceFileUtil.getResourceAsString("tosca/operational-policy-no-guard-properties.json"),
+                JsonObject.class);
         OperationalPolicy policy = new OperationalPolicy("testPolicy", null, jsonConfig);
         Map<String, String> guardsMap = policy.createGuardPolicyPayloads();
         assertThat(guardsMap).isEmpty();
@@ -74,15 +74,15 @@
     @Test
     public void testGuardPolicyPayloadConstruction() throws IOException {
         JsonObject jsonConfig = new GsonBuilder().create().fromJson(
-            ResourceFileUtil.getResourceAsString("tosca/operational-policy-properties.json"), JsonObject.class);
+                ResourceFileUtil.getResourceAsString("tosca/operational-policy-properties.json"), JsonObject.class);
         OperationalPolicy policy = new OperationalPolicy("testPolicy", null, jsonConfig);
 
         Map<String, String> guardsMap = policy.createGuardPolicyPayloads();
 
         JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/guard1-policy-payload.json"),
-            guardsMap.get("guard1"), false);
+                guardsMap.get("guard.minmax.new"), false);
 
         JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/guard2-policy-payload.json"),
-            guardsMap.get("guard2"), false);
+                guardsMap.get("guard.frequency.new"), false);
     }
 }
diff --git a/src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java b/src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java
new file mode 100644
index 0000000..904525b
--- /dev/null
+++ b/src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java
@@ -0,0 +1,52 @@
+/*-
+ * ============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============================================
+ * ===================================================================
+ *
+ */
+
+package org.onap.clamp.policy.operational;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonObject;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.skyscreamer.jsonassert.JSONAssert;
+
+public class OperationalPolicyRepresentationBuilderTest {
+
+    @Test
+    public void testOperationalPolicyPayloadConstruction() throws IOException {
+        JsonObject jsonModel = new GsonBuilder().create()
+                .fromJson(ResourceFileUtil.getResourceAsString("tosca/model-properties.json"), JsonObject.class);
+
+        JsonObject jsonSchema = OperationalPolicyRepresentationBuilder.generateOperationalPolicySchema(jsonModel);
+
+        assertThat(jsonSchema).isNotNull();
+
+        JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/operational-policy-json-schema.json"),
+                new GsonBuilder().create().toJson(jsonSchema), false);
+    }
+
+}
diff --git a/src/test/resources/clds/OperationalPolicyRepresentationBuilderTest.java b/src/test/resources/clds/OperationalPolicyRepresentationBuilderTest.java
new file mode 100644
index 0000000..904525b
--- /dev/null
+++ b/src/test/resources/clds/OperationalPolicyRepresentationBuilderTest.java
@@ -0,0 +1,52 @@
+/*-
+ * ============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============================================
+ * ===================================================================
+ *
+ */
+
+package org.onap.clamp.policy.operational;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonObject;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.skyscreamer.jsonassert.JSONAssert;
+
+public class OperationalPolicyRepresentationBuilderTest {
+
+    @Test
+    public void testOperationalPolicyPayloadConstruction() throws IOException {
+        JsonObject jsonModel = new GsonBuilder().create()
+                .fromJson(ResourceFileUtil.getResourceAsString("tosca/model-properties.json"), JsonObject.class);
+
+        JsonObject jsonSchema = OperationalPolicyRepresentationBuilder.generateOperationalPolicySchema(jsonModel);
+
+        assertThat(jsonSchema).isNotNull();
+
+        JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/operational-policy-json-schema.json"),
+                new GsonBuilder().create().toJson(jsonSchema), false);
+    }
+
+}
diff --git a/src/test/resources/tosca/guard1-policy-payload.json b/src/test/resources/tosca/guard1-policy-payload.json
index b4e0809..1c03df3 100644
--- a/src/test/resources/tosca/guard1-policy-payload.json
+++ b/src/test/resources/tosca/guard1-policy-payload.json
@@ -1,16 +1,13 @@
 {
-	"policy-id": "guard1",
+	"policy-id": "guard.minmax.new",
 	"content": {
-		"recipe": "Rebuild",
-		"actor": "SO",
-		"clname": "testloop",
+		"actor": "APPC",
+		"recipe": "Restart",
 		"targets": ".*",
-		"min": "3",
-		"max": "7",
-		"limit": "",
-		"timeUnits": "",
-		"timeWindow": "",
-		"guardActiveStart": "00:00:01-05:00",
-		"guardActiveEnd": "23:59:01-05:00"
+		"clname": "LOOP_ASJOy_v1_0_ResourceInstanceName1_tca",
+		"guardActiveStart": "00:00:00Z",
+		"guardActiveEnd": "10:00:00Z",
+		"min": "0",
+		"max": "1"
 	}
 }
\ No newline at end of file
diff --git a/src/test/resources/tosca/guard2-policy-payload.json b/src/test/resources/tosca/guard2-policy-payload.json
index 29beb6b..559a568 100644
--- a/src/test/resources/tosca/guard2-policy-payload.json
+++ b/src/test/resources/tosca/guard2-policy-payload.json
@@ -1,16 +1,14 @@
 {
-	"policy-id": "guard2",
+	"policy-id": "guard.frequency.new",
 	"content": {
-		"recipe": "Migrate",
-		"actor": "SO",
-		"clname": "testloop",
+		"actor": "APPC",
+		"recipe": "Rebuild",
 		"targets": ".*",
-		"min": "1",
-		"max": "2",
-		"limit": "",
-		"timeUnits": "",
-		"timeWindow": "",
-		"guardActiveStart": "00:00:01-05:00",
-		"guardActiveEnd": "23:59:01-05:00"
+		"clname": "LOOP_ASJOy_v1_0_ResourceInstanceName1_tca",
+		"guardActiveStart": "00:00:00Z",
+		"guardActiveEnd": "10:00:00Z",
+		"limit": "1",
+		"timeWindow": "2",
+		"timeUnits": "minute"
 	}
 }
\ No newline at end of file
diff --git a/src/test/resources/tosca/operational-policy-json-schema.json b/src/test/resources/tosca/operational-policy-json-schema.json
new file mode 100644
index 0000000..d6870dc
--- /dev/null
+++ b/src/test/resources/tosca/operational-policy-json-schema.json
@@ -0,0 +1,574 @@
+{
+	"schema": {
+		"uniqueItems": "true",
+		"format": "tabs",
+		"type": "array",
+		"minItems": 1,
+		"maxItems": 1,
+		"title": "Operational policies",
+		"items": {
+			"type": "object",
+			"title": "Operational Policy Item",
+			"id": "operational_policy_item",
+			"headerTemplate": "{{self.name}}",
+			"required": [
+				"name",
+				"configurationsJson"
+			],
+			"properties": {
+				"name": {
+					"type": "string",
+					"title": "Operational policy name",
+					"readOnly": "True"
+				},
+				"configurationsJson": {
+					"type": "object",
+					"title": "Configuration",
+					"required": [
+						"operational_policy",
+						"guard_policies"
+					],
+					"properties": {
+						"operational_policy": {
+							"type": "object",
+							"title": "Related Parameters",
+							"required": [
+								"controlLoop",
+								"policies"
+							],
+							"properties": {
+								"controlLoop": {
+									"type": "object",
+									"title": "Control Loop details",
+									"required": [
+										"timeout",
+										"abatement",
+										"trigger_policy",
+										"controlLoopName"
+									],
+									"properties": {
+										"timeout": {
+											"type": "string",
+											"title": "Overall Time Limit",
+											"default": "0",
+											"format": "number"
+										},
+										"abatement": {
+											"type": "string",
+											"title": "Abatement",
+											"enum": [
+												"True",
+												"False"
+											]
+										},
+										"trigger_policy": {
+											"type": "string",
+											"title": "Policy Decision Entry"
+										},
+										"controlLoopName": {
+											"type": "string",
+											"title": "Control loop name",
+											"readOnly": "True"
+										}
+									}
+								},
+								"policies": {
+									"uniqueItems": "true",
+									"id": "policies_array",
+									"type": "array",
+									"title": "Policy Decision Tree",
+									"format": "tabs-top",
+									"items": {
+										"title": "Policy Decision",
+										"type": "object",
+										"id": "policy_item",
+										"headerTemplate": "{{self.id}} - {{self.recipe}}",
+										"format": "categories",
+										"basicCategoryTitle": "recipe",
+										"required": [
+											"id",
+											"recipe",
+											"retry",
+											"timeout",
+											"actor",
+											"success",
+											"failure",
+											"failure_timeout",
+											"failure_retries",
+											"failure_exception",
+											"failure_guard",
+											"target"
+										],
+										"properties": {
+											"id": {
+												"default": "Policy 1",
+												"title": "Policy ID",
+												"type": "string"
+											},
+											"recipe": {
+												"title": "Recipe",
+												"type": "string",
+												"enum": [
+													"Restart",
+													"Rebuild",
+													"Migrate",
+													"Health-Check",
+													"ModifyConfig",
+													"VF Module Create",
+													"VF Module Delete",
+													"Reroute"
+												]
+											},
+											"retry": {
+												"default": "0",
+												"title": "Number of Retry",
+												"type": "string",
+												"format": "number"
+											},
+											"timeout": {
+												"default": "0",
+												"title": "Timeout",
+												"type": "string",
+												"format": "number"
+											},
+											"actor": {
+												"title": "Actor",
+												"type": "string",
+												"enum": [
+													"APPC",
+													"SO",
+													"VFC",
+													"SDNC",
+													"SDNR"
+												]
+											},
+											"payload": {
+												"title": "Payload (YAML)",
+												"type": "string",
+												"format": "textarea"
+											},
+											"success": {
+												"default": "final_success",
+												"title": "When Success",
+												"type": "string"
+											},
+											"failure": {
+												"default": "final_failure",
+												"title": "When Failure",
+												"type": "string"
+											},
+											"failure_timeout": {
+												"default": "final_failure_timeout",
+												"title": "When Failure Timeout",
+												"type": "string"
+											},
+											"failure_retries": {
+												"default": "final_failure_retries",
+												"title": "When Failure Retries",
+												"type": "string"
+											},
+											"failure_exception": {
+												"default": "final_failure_exception",
+												"title": "When Failure Exception",
+												"type": "string"
+											},
+											"failure_guard": {
+												"default": "final_failure_guard",
+												"title": "When Failure Guard",
+												"type": "string"
+											},
+											"target": {
+												"type": "object",
+												"required": [
+													"type",
+													"resourceID"
+												],
+												"anyOf": [
+													{
+														"title": "User Defined",
+														"additionalProperties": "True",
+														"properties": {
+															"type": {
+																"title": "Target type",
+																"type": "string",
+																"default": "",
+																"enum": [
+																	"VNF",
+																	"VFMODULE",
+																	"VM"
+																]
+															},
+															"resourceID": {
+																"title": "Target type",
+																"type": "string",
+																"default": ""
+															}
+														}
+													},
+													{
+														"title": "VNF-vLoadBalancerMS 0",
+														"properties": {
+															"type": {
+																"title": "Type",
+																"type": "string",
+																"default": "VNF",
+																"readOnly": "True"
+															},
+															"resourceID": {
+																"title": "Resource ID",
+																"type": "string",
+																"default": "vLoadBalancerMS",
+																"readOnly": "True"
+															}
+														}
+													},
+													{
+														"title": "VFMODULE-Vloadbalancerms..vpkg..module-1",
+														"properties": {
+															"type": {
+																"title": "Type",
+																"type": "string",
+																"default": "VFMODULE",
+																"readOnly": "True"
+															},
+															"resourceID": {
+																"title": "Resource ID",
+																"type": "string",
+																"default": "Vloadbalancerms..vpkg..module-1",
+																"readOnly": "True"
+															},
+															"modelInvariantId": {
+																"title": "Model Invariant Id (ModelInvariantUUID)",
+																"type": "string",
+																"default": "ca052563-eb92-4b5b-ad41-9111768ce043",
+																"readOnly": "True"
+															},
+															"modelVersionId": {
+																"title": "Model Version Id (ModelUUID)",
+																"type": "string",
+																"default": "1e725ccc-b823-4f67-82b9-4f4367070dbc",
+																"readOnly": "True"
+															},
+															"modelName": {
+																"title": "Model Name",
+																"type": "string",
+																"default": "Vloadbalancerms..vpkg..module-1",
+																"readOnly": "True"
+															},
+															"modelVersion": {
+																"title": "Model Version",
+																"type": "string",
+																"default": "1",
+																"readOnly": "True"
+															},
+															"modelCustomizationId": {
+																"title": "Customization ID",
+																"type": "string",
+																"default": "1bffdc31-a37d-4dee-b65c-dde623a76e52",
+																"readOnly": "True"
+															}
+														}
+													},
+													{
+														"title": "VFMODULE-Vloadbalancerms..vdns..module-3",
+														"properties": {
+															"type": {
+																"title": "Type",
+																"type": "string",
+																"default": "VFMODULE",
+																"readOnly": "True"
+															},
+															"resourceID": {
+																"title": "Resource ID",
+																"type": "string",
+																"default": "Vloadbalancerms..vdns..module-3",
+																"readOnly": "True"
+															},
+															"modelInvariantId": {
+																"title": "Model Invariant Id (ModelInvariantUUID)",
+																"type": "string",
+																"default": "4c10ba9b-f88f-415e-9de3-5d33336047fa",
+																"readOnly": "True"
+															},
+															"modelVersionId": {
+																"title": "Model Version Id (ModelUUID)",
+																"type": "string",
+																"default": "4fa73b49-8a6c-493e-816b-eb401567b720",
+																"readOnly": "True"
+															},
+															"modelName": {
+																"title": "Model Name",
+																"type": "string",
+																"default": "Vloadbalancerms..vdns..module-3",
+																"readOnly": "True"
+															},
+															"modelVersion": {
+																"title": "Model Version",
+																"type": "string",
+																"default": "1",
+																"readOnly": "True"
+															},
+															"modelCustomizationId": {
+																"title": "Customization ID",
+																"type": "string",
+																"default": "bafcdab0-801d-4d81-9ead-f464640a38b1",
+																"readOnly": "True"
+															}
+														}
+													},
+													{
+														"title": "VFMODULE-Vloadbalancerms..base_template..module-0",
+														"properties": {
+															"type": {
+																"title": "Type",
+																"type": "string",
+																"default": "VFMODULE",
+																"readOnly": "True"
+															},
+															"resourceID": {
+																"title": "Resource ID",
+																"type": "string",
+																"default": "Vloadbalancerms..base_template..module-0",
+																"readOnly": "True"
+															},
+															"modelInvariantId": {
+																"title": "Model Invariant Id (ModelInvariantUUID)",
+																"type": "string",
+																"default": "921f7c96-ebdd-42e6-81b9-1cfc0c9796f3",
+																"readOnly": "True"
+															},
+															"modelVersionId": {
+																"title": "Model Version Id (ModelUUID)",
+																"type": "string",
+																"default": "63734409-f745-4e4d-a38b-131638a0edce",
+																"readOnly": "True"
+															},
+															"modelName": {
+																"title": "Model Name",
+																"type": "string",
+																"default": "Vloadbalancerms..base_template..module-0",
+																"readOnly": "True"
+															},
+															"modelVersion": {
+																"title": "Model Version",
+																"type": "string",
+																"default": "1",
+																"readOnly": "True"
+															},
+															"modelCustomizationId": {
+																"title": "Customization ID",
+																"type": "string",
+																"default": "86baddea-c730-4fb8-9410-cd2e17fd7f27",
+																"readOnly": "True"
+															}
+														}
+													},
+													{
+														"title": "VFMODULE-Vloadbalancerms..vlb..module-2",
+														"properties": {
+															"type": {
+																"title": "Type",
+																"type": "string",
+																"default": "VFMODULE",
+																"readOnly": "True"
+															},
+															"resourceID": {
+																"title": "Resource ID",
+																"type": "string",
+																"default": "Vloadbalancerms..vlb..module-2",
+																"readOnly": "True"
+															},
+															"modelInvariantId": {
+																"title": "Model Invariant Id (ModelInvariantUUID)",
+																"type": "string",
+																"default": "a772a1f4-0064-412c-833d-4749b15828dd",
+																"readOnly": "True"
+															},
+															"modelVersionId": {
+																"title": "Model Version Id (ModelUUID)",
+																"type": "string",
+																"default": "0f5c3f6a-650a-4303-abb6-fff3e573a07a",
+																"readOnly": "True"
+															},
+															"modelName": {
+																"title": "Model Name",
+																"type": "string",
+																"default": "Vloadbalancerms..vlb..module-2",
+																"readOnly": "True"
+															},
+															"modelVersion": {
+																"title": "Model Version",
+																"type": "string",
+																"default": "1",
+																"readOnly": "True"
+															},
+															"modelCustomizationId": {
+																"title": "Customization ID",
+																"type": "string",
+																"default": "96a78aad-4ffb-4ef0-9c4f-deb03bf1d806",
+																"readOnly": "True"
+															}
+														}
+													}
+												]
+											}
+										}
+									}
+								}
+							}
+						},
+						"guard_policies": {
+							"type": "array",
+							"format": "tabs-top",
+							"title": "Associated Guard policies",
+							"items": {
+								"headerTemplate": "{{self.policy-id}} - {{self.content.recipe}}",
+								"anyOf": [
+									{
+										"title": "Guard MinMax",
+										"type": "object",
+										"properties": {
+											"policy-id": {
+												"type": "string",
+												"default": "guard.minmax.new",
+												"pattern": "^(guard.minmax\\..*)$"
+											},
+											"content": {
+												"properties": {
+													"actor": {
+														"type": "string",
+														"enum": [
+															"APPC",
+															"SO",
+															"VFC",
+															"SDNC",
+															"SDNR"
+														]
+													},
+													"recipe": {
+														"type": "string",
+														"enum": [
+															"Restart",
+															"Rebuild",
+															"Migrate",
+															"Health-Check",
+															"ModifyConfig",
+															"VF Module Create",
+															"VF Module Delete",
+															"Reroute"
+														]
+													},
+													"targets": {
+														"type": "string",
+														"default": ".*"
+													},
+													"clname": {
+														"type": "string",
+														"template": "{{loopName}}",
+														"watch": {
+															"loopName": "operational_policy_item.configurationsJson.operational_policy.controlLoop.controlLoopName"
+														}
+													},
+													"guardActiveStart": {
+														"type": "string",
+														"default": "00:00:00Z"
+													},
+													"guardActiveEnd": {
+														"type": "string",
+														"default": "10:00:00Z"
+													},
+													"min": {
+														"type": "string",
+														"default": "0"
+													},
+													"max": {
+														"type": "string",
+														"default": "1"
+													}
+												}
+											}
+										}
+									},
+									{
+										"title": "Guard Frequency",
+										"type": "object",
+										"properties": {
+											"policy-id": {
+												"type": "string",
+												"default": "guard.frequency.new",
+												"pattern": "^(guard.frequency\\..*)$"
+											},
+											"content": {
+												"properties": {
+													"actor": {
+														"type": "string",
+														"enum": [
+															"APPC",
+															"SO",
+															"VFC",
+															"SDNC",
+															"SDNR"
+														]
+													},
+													"recipe": {
+														"type": "string",
+														"enum": [
+															"Restart",
+															"Rebuild",
+															"Migrate",
+															"Health-Check",
+															"ModifyConfig",
+															"VF Module Create",
+															"VF Module Delete",
+															"Reroute"
+														]
+													},
+													"targets": {
+														"type": "string",
+														"default": ".*"
+													},
+													"clname": {
+														"type": "string",
+														"template": "{{loopName}}",
+														"watch": {
+															"loopName": "operational_policy_item.configurationsJson.operational_policy.controlLoop.controlLoopName"
+														}
+													},
+													"guardActiveStart": {
+														"type": "string",
+														"default": "00:00:00Z"
+													},
+													"guardActiveEnd": {
+														"type": "string",
+														"default": "10:00:00Z"
+													},
+													"limit": {
+														"type": "string"
+													},
+													"timeWindow": {
+														"type": "string"
+													},
+													"timeUnits": {
+														"type": "string",
+														"enum": [
+															"minute",
+															"hour",
+															"day",
+															"week",
+															"month",
+															"year"
+														]
+													}
+												}
+											}
+										}
+									}
+								]
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/src/test/resources/tosca/operational-policy-payload-legacy.yaml b/src/test/resources/tosca/operational-policy-payload-legacy.yaml
index 41184c9..4d2b9f3 100644
--- a/src/test/resources/tosca/operational-policy-payload-legacy.yaml
+++ b/src/test/resources/tosca/operational-policy-payload-legacy.yaml
@@ -1,39 +1,43 @@
 controlLoop:
   abatement: true
-  controlLoopName: control loop
-  timeout: 30
-  trigger_policy: new1
-  version: 2.0.0
+  controlLoopName: LOOP_ASJOy_v1_0_ResourceInstanceName1_tca
+  timeout: 0
+  trigger_policy: policy1
 policies:
-- actor: SO
-  failure: new2
-  failure_exception: new2
-  failure_guard: new2
-  failure_retries: new2
-  failure_timeout: new2
-  id: new1
+- actor: APPC
+  failure: policy2
+  failure_exception: final_failure_exception
+  failure_guard: final_failure_guard
+  failure_retries: final_failure_retries
+  failure_timeout: final_failure_timeout
+  id: policy1
   payload:
     configurationParameters: '[{"ip-addr":"$.vf-module-topology.vf-module-parameters.param[10].value","oam-ip-addr":"$.vf-module-topology.vf-module-parameters.param[15].value","enabled":"$.vf-module-topology.vf-module-parameters.param[22].value"}]'
     requestParameters: '{"usePreload":true,"userParams":[]}'
-  recipe: Rebuild
-  retry: 10
-  success: new2
+  recipe: Restart
+  retry: 0
+  success: final_success
   target:
-    resourceTargetId: test
-    type: VFC
-  timeout: 20
-- actor: SDNC
+    resourceID: vLoadBalancerMS
+    type: VNF
+  timeout: 0
+- actor: SO
   failure: final_failure
   failure_exception: final_failure_exception
   failure_guard: final_failure_guard
   failure_retries: final_failure_retries
   failure_timeout: final_failure_timeout
-  id: new2
+  id: policy2
   payload: ''
-  recipe: Migrate
-  retry: 30
+  recipe: VF Module Create
+  retry: 0
   success: final_success
   target:
-    resourceTargetId: test
-    type: VFC
-  timeout: 40
+    modelCustomizationId: 1bffdc31-a37d-4dee-b65c-dde623a76e52
+    modelInvariantId: ca052563-eb92-4b5b-ad41-9111768ce043
+    modelName: Vloadbalancerms..vpkg..module-1
+    modelVersion: 1
+    modelVersionId: 1e725ccc-b823-4f67-82b9-4f4367070dbc
+    resourceID: Vloadbalancerms..vpkg..module-1
+    type: VFMODULE
+  timeout: 0
diff --git a/src/test/resources/tosca/operational-policy-payload.json b/src/test/resources/tosca/operational-policy-payload.json
index 5097654..ed01976 100644
--- a/src/test/resources/tosca/operational-policy-payload.json
+++ b/src/test/resources/tosca/operational-policy-payload.json
@@ -1,4 +1,4 @@
 {
   "policy-id": "testPolicy",
-  "content": "controlLoop%3A%0A++abatement%3A+true%0A++controlLoopName%3A+control+loop%0A++timeout%3A+30%0A++trigger_policy%3A+new1%0A++version%3A+2.0.0%0Apolicies%3A%0A-+actor%3A+SO%0A++failure%3A+new2%0A++failure_exception%3A+new2%0A++failure_guard%3A+new2%0A++failure_retries%3A+new2%0A++failure_timeout%3A+new2%0A++id%3A+new1%0A++payload%3A%0A++++configurationParameters%3A+%27%5B%7B%22ip-addr%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B10%5D.value%22%2C%22oam-ip-addr%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B15%5D.value%22%2C%22enabled%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B22%5D.value%22%7D%5D%27%0A++++requestParameters%3A+%27%7B%22usePreload%22%3Atrue%2C%22userParams%22%3A%5B%5D%7D%27%0A++recipe%3A+Rebuild%0A++retry%3A+10%0A++success%3A+new2%0A++target%3A%0A++++resourceTargetId%3A+test%0A++++type%3A+VFC%0A++timeout%3A+20%0A-+actor%3A+SDNC%0A++failure%3A+final_failure%0A++failure_exception%3A+final_failure_exception%0A++failure_guard%3A+final_failure_guard%0A++failure_retries%3A+final_failure_retries%0A++failure_timeout%3A+final_failure_timeout%0A++id%3A+new2%0A++payload%3A+%27%27%0A++recipe%3A+Migrate%0A++retry%3A+30%0A++success%3A+final_success%0A++target%3A%0A++++resourceTargetId%3A+test%0A++++type%3A+VFC%0A++timeout%3A+40%0A"
+  "content": "controlLoop%3A%0A++abatement%3A+true%0A++controlLoopName%3A+LOOP_ASJOy_v1_0_ResourceInstanceName1_tca%0A++timeout%3A+0%0A++trigger_policy%3A+policy1%0Apolicies%3A%0A-+actor%3A+APPC%0A++failure%3A+policy2%0A++failure_exception%3A+final_failure_exception%0A++failure_guard%3A+final_failure_guard%0A++failure_retries%3A+final_failure_retries%0A++failure_timeout%3A+final_failure_timeout%0A++id%3A+policy1%0A++payload%3A%0A++++configurationParameters%3A+%27%5B%7B%22ip-addr%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B10%5D.value%22%2C%22oam-ip-addr%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B15%5D.value%22%2C%22enabled%22%3A%22%24.vf-module-topology.vf-module-parameters.param%5B22%5D.value%22%7D%5D%27%0A++++requestParameters%3A+%27%7B%22usePreload%22%3Atrue%2C%22userParams%22%3A%5B%5D%7D%27%0A++recipe%3A+Restart%0A++retry%3A+0%0A++success%3A+final_success%0A++target%3A%0A++++resourceID%3A+vLoadBalancerMS%0A++++type%3A+VNF%0A++timeout%3A+0%0A-+actor%3A+SO%0A++failure%3A+final_failure%0A++failure_exception%3A+final_failure_exception%0A++failure_guard%3A+final_failure_guard%0A++failure_retries%3A+final_failure_retries%0A++failure_timeout%3A+final_failure_timeout%0A++id%3A+policy2%0A++payload%3A+%27%27%0A++recipe%3A+VF+Module+Create%0A++retry%3A+0%0A++success%3A+final_success%0A++target%3A%0A++++modelCustomizationId%3A+1bffdc31-a37d-4dee-b65c-dde623a76e52%0A++++modelInvariantId%3A+ca052563-eb92-4b5b-ad41-9111768ce043%0A++++modelName%3A+Vloadbalancerms..vpkg..module-1%0A++++modelVersion%3A+1%0A++++modelVersionId%3A+1e725ccc-b823-4f67-82b9-4f4367070dbc%0A++++resourceID%3A+Vloadbalancerms..vpkg..module-1%0A++++type%3A+VFMODULE%0A++timeout%3A+0%0A"
 }
\ No newline at end of file
diff --git a/src/test/resources/tosca/operational-policy-payload.yaml b/src/test/resources/tosca/operational-policy-payload.yaml
index c3a6b5c..ed03842 100644
--- a/src/test/resources/tosca/operational-policy-payload.yaml
+++ b/src/test/resources/tosca/operational-policy-payload.yaml
@@ -8,35 +8,45 @@
         policy-id: testPolicy
       properties:
         controlLoop:
-          controlLoopName: control loop
-          version: 2.0.0
-          trigger_policy: new1
-          timeout: '30'
-          abatement: 'true'
+          timeout: '0'
+          abatement: 'True'
+          trigger_policy: policy1
+          controlLoopName: LOOP_ASJOy_v1_0_ResourceInstanceName1_tca
         policies:
-        - id: new1
-          recipe: Rebuild
-          retry: '10'
-          timeout: '20'
-          actor: SO
+        - id: policy1
+          recipe: Restart
+          retry: '0'
+          timeout: '0'
+          actor: APPC
           payload:
             requestParameters: '{"usePreload":true,"userParams":[]}'
             configurationParameters: '[{"ip-addr":"$.vf-module-topology.vf-module-parameters.param[10].value","oam-ip-addr":"$.vf-module-topology.vf-module-parameters.param[15].value","enabled":"$.vf-module-topology.vf-module-parameters.param[22].value"}]'
-          success: new2
-          failure: new2
-          failure_timeout: new2
-          failure_retries: new2
-          failure_exception: new2
-          failure_guard: new2
+          success: final_success
+          failure: policy2
+          failure_timeout: final_failure_timeout
+          failure_retries: final_failure_retries
+          failure_exception: final_failure_exception
+          failure_guard: final_failure_guard
           target:
-            type: VFC
-            resourceTargetId: test
-        - id: new2
-          recipe: Migrate
-          retry: '30'
-          timeout: '40'
-          actor: SDNC
+            type: VNF
+            resourceID: vLoadBalancerMS
+        - id: policy2
+          recipe: VF Module Create
+          retry: '0'
+          timeout: '0'
+          actor: SO
           payload: ''
+          success: final_success
+          failure: final_failure
+          failure_timeout: final_failure_timeout
+          failure_retries: final_failure_retries
+          failure_exception: final_failure_exception
+          failure_guard: final_failure_guard
           target:
-            type: VFC
-            resourceTargetId: test
+            type: VFMODULE
+            resourceID: Vloadbalancerms..vpkg..module-1
+            modelInvariantId: ca052563-eb92-4b5b-ad41-9111768ce043
+            modelVersionId: 1e725ccc-b823-4f67-82b9-4f4367070dbc
+            modelName: Vloadbalancerms..vpkg..module-1
+            modelVersion: '1'
+            modelCustomizationId: 1bffdc31-a37d-4dee-b65c-dde623a76e52
diff --git a/src/test/resources/tosca/operational-policy-properties.json b/src/test/resources/tosca/operational-policy-properties.json
index bfce6b3..ac1314e 100644
--- a/src/test/resources/tosca/operational-policy-properties.json
+++ b/src/test/resources/tosca/operational-policy-properties.json
@@ -1,71 +1,82 @@
 {
-	"guard_policies": {
-		"guard1":{
-			"recipe": "Rebuild",
-			"actor": "SO",
-			"clname": "testloop",
-			"targets": ".*",
-			"min": "3",
-			"max": "7",
-			"limit": "",
-			"timeUnits": "",
-			"timeWindow": "",
-			"guardActiveStart": "00:00:01-05:00",
-			"guardActiveEnd": "23:59:01-05:00"
-		},
-		"guard2":{
-			"recipe": "Migrate",
-			"actor": "SO",
-			"clname": "testloop",
-			"targets": ".*",
-			"min": "1",
-			"max": "2",
-			"limit": "",
-			"timeUnits": "",
-			"timeWindow": "",
-			"guardActiveStart": "00:00:01-05:00",
-			"guardActiveEnd": "23:59:01-05:00"
-		}
-	},
-	"operational_policy": {
-		"controlLoop": {
-			"controlLoopName": "control loop",
-			"version": "2.0.0",
-			"trigger_policy": "new1",
-			"timeout": "30",
-			"abatement": "true"
-		},
-		"policies": [
-			{
-				"id": "new1",
-				"recipe": "Rebuild",
-				"retry": "10",
-				"timeout": "20",
-				"actor": "SO",
-				"payload": "requestParameters: '{\"usePreload\":true,\"userParams\":[]}'\r\nconfigurationParameters: '[{\"ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[10].value\",\"oam-ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[15].value\",\"enabled\":\"$.vf-module-topology.vf-module-parameters.param[22].value\"}]'",
-				"success": "new2",
-				"failure": "new2",
-				"failure_timeout": "new2",
-				"failure_retries": "new2",
-				"failure_exception": "new2",
-				"failure_guard": "new2",
-				"target": {
-					"type": "VFC",
-					"resourceTargetId": "test"
-				}
-			},
-			{
-				"id": "new2",
-				"recipe": "Migrate",
-				"retry": "30",
-				"timeout": "40",
-				"actor": "SDNC",
-				"payload": "",
-				"target": {
-					"type": "VFC",
-					"resourceTargetId": "test"
-				}
-			}
-		]
-	}
+  "operational_policy": {
+    "controlLoop": {
+      "timeout": "0",
+      "abatement": "True",
+      "trigger_policy": "policy1",
+      "controlLoopName": "LOOP_ASJOy_v1_0_ResourceInstanceName1_tca"
+    },
+    "policies": [
+      {
+        "id": "policy1",
+        "recipe": "Restart",
+        "retry": "0",
+        "timeout": "0",
+        "actor": "APPC",
+        "payload": "requestParameters: '{\"usePreload\":true,\"userParams\":[]}'\r\nconfigurationParameters: '[{\"ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[10].value\",\"oam-ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[15].value\",\"enabled\":\"$.vf-module-topology.vf-module-parameters.param[22].value\"}]'",
+        "success": "final_success",
+        "failure": "policy2",
+        "failure_timeout": "final_failure_timeout",
+        "failure_retries": "final_failure_retries",
+        "failure_exception": "final_failure_exception",
+        "failure_guard": "final_failure_guard",
+        "target": {
+          "type": "VNF",
+          "resourceID": "vLoadBalancerMS"
+        }
+      },
+    {
+        "id": "policy2",
+        "recipe": "VF Module Create",
+        "retry": "0",
+        "timeout": "0",
+        "actor": "SO",
+        "payload": "",
+        "success": "final_success",
+        "failure": "final_failure",
+        "failure_timeout": "final_failure_timeout",
+        "failure_retries": "final_failure_retries",
+        "failure_exception": "final_failure_exception",
+        "failure_guard": "final_failure_guard",
+        "target": {
+          "type": "VFMODULE",
+          "resourceID": "Vloadbalancerms..vpkg..module-1",
+          "modelInvariantId": "ca052563-eb92-4b5b-ad41-9111768ce043",
+          "modelVersionId": "1e725ccc-b823-4f67-82b9-4f4367070dbc",
+          "modelName": "Vloadbalancerms..vpkg..module-1",
+          "modelVersion": "1",
+          "modelCustomizationId": "1bffdc31-a37d-4dee-b65c-dde623a76e52"
+        }
+      }
+    ]
+  },
+  "guard_policies": [
+    {
+      "policy-id": "guard.minmax.new",
+      "content": {
+        "actor": "APPC",
+        "recipe": "Restart",
+        "targets": ".*",
+        "clname": "LOOP_ASJOy_v1_0_ResourceInstanceName1_tca",
+        "guardActiveStart": "00:00:00Z",
+        "guardActiveEnd": "10:00:00Z",
+        "min": "0",
+        "max": "1"
+      }
+    },
+    {
+      "policy-id": "guard.frequency.new",
+      "content": {
+        "actor": "APPC",
+        "recipe": "Rebuild",
+        "targets": ".*",
+        "clname": "LOOP_ASJOy_v1_0_ResourceInstanceName1_tca",
+        "guardActiveStart": "00:00:00Z",
+        "guardActiveEnd": "10:00:00Z",
+        "limit": "1",
+        "timeWindow": "2",
+        "timeUnits": "minute"
+      }
+    }
+  ]
 }
diff --git a/src/test/resources/tosca/pdp-group-policy-payload.json b/src/test/resources/tosca/pdp-group-policy-payload.json
index bf941e5..ad3a5b4 100644
--- a/src/test/resources/tosca/pdp-group-policy-payload.json
+++ b/src/test/resources/tosca/pdp-group-policy-payload.json
@@ -4,10 +4,10 @@
       "policy-id": "GuardOpPolicyTest"
     },
     {
-      "policy-id": "guard2"
+      "policy-id": "guard.minmax.new"
     },
     {
-      "policy-id": "guard1"
+      "policy-id": "guard.frequency.new"
     },
     {
       "policy-id": "configPolicyTest"