Payload attributes are not displayed in operational policy

Handled list type in response

Change-Id: If4b5b45c5f23f377add1be84306a31e78d47c52b
Issue-ID: CLAMP-823
Signed-off-by: Vidyashree-Huawei <vidyashree.rama@huawei.com>
diff --git a/src/main/java/org/onap/clamp/clds/client/CdsServices.java b/src/main/java/org/onap/clamp/clds/client/CdsServices.java
index f25e8b8..b8eb419 100644
--- a/src/main/java/org/onap/clamp/clds/client/CdsServices.java
+++ b/src/main/java/org/onap/clamp/clds/client/CdsServices.java
@@ -34,6 +34,7 @@
 import org.apache.camel.CamelContext;

 import org.apache.camel.Exchange;

 import org.apache.camel.builder.ExchangeBuilder;

+import org.onap.clamp.clds.exception.cds.CdsParametersException;

 import org.onap.clamp.clds.model.cds.CdsBpWorkFlowListResponse;

 import org.onap.clamp.clds.util.JsonUtils;

 import org.onap.clamp.clds.util.LoggingUtils;

@@ -117,7 +118,7 @@
         return null;

     }

 

-    private JsonObject parseCdsResponse(String response) {

+    protected JsonObject parseCdsResponse(String response) {

         JsonObject root = JsonParser.parseString(response).getAsJsonObject();

         JsonObject inputs = root.getAsJsonObject("workFlowData").getAsJsonObject("inputs");

         JsonObject dataTypes = root.getAsJsonObject("dataTypes");

@@ -135,6 +136,9 @@
             String type = inputProperty.get("type").getAsString();

             if (isComplexType(type, dataTypes)) {

                 inputObject.add(key, handleComplexType(type, dataTypes));

+            } else if (type.equalsIgnoreCase("list")) {

+                inputObject.add(key, handleListType(key, inputProperty,

+                                                    dataTypes));

             } else {

                 inputObject.add(key, entry.getValue());

             }

@@ -142,6 +146,24 @@
         return inputObject;

     }

 

+    private JsonObject handleListType(String propertyName,

+                                      JsonObject inputProperty,

+                                      JsonObject dataTypes) {

+        if (inputProperty.get("entry_schema") != null) {

+            String type = inputProperty.get("entry_schema").getAsJsonObject().get(

+                            "type").getAsString();

+            if (dataTypes.get(type) != null) {

+                JsonObject jsonObject = new JsonObject();

+                jsonObject.addProperty("type", "list");

+                jsonObject.add("properties", handleComplexType(type, dataTypes));

+                return jsonObject;

+            } else {

+                return inputProperty;

+            }

+        }

+        throw new CdsParametersException("Entry schema is null for " + propertyName);

+    }

+

     private JsonObject handleComplexType(String key, JsonObject dataTypes) {

         JsonObject properties = dataTypes.get(key).getAsJsonObject().get("properties").getAsJsonObject();

         return getInputProperties(properties, dataTypes);

diff --git a/src/main/java/org/onap/clamp/clds/exception/cds/CdsParametersException.java b/src/main/java/org/onap/clamp/clds/exception/cds/CdsParametersException.java
new file mode 100644
index 0000000..73ce31f
--- /dev/null
+++ b/src/main/java/org/onap/clamp/clds/exception/cds/CdsParametersException.java
@@ -0,0 +1,53 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd.
+ * ================================================================================
+ * 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.clds.exception.cds;
+
+/**
+ * Exception while parsing CDS response.
+ */
+public class CdsParametersException extends RuntimeException {
+
+    /**
+     * serialization id.
+     */
+    private static final long serialVersionUID = 8425657297510362736L;
+
+    /**
+     * This constructor can be used to create a new CdsParametersException.
+     *
+     * @param message The message to dump
+     */
+    public CdsParametersException(final String message) {
+        super(message);
+    }
+
+    /**
+     * This constructor can be used to create a new CdsParametersException.
+     *
+     * @param message The message to dump
+     * @param cause The Throwable cause object
+     */
+    public CdsParametersException(final String message, final Throwable cause) {
+        super(message, cause);
+    }
+}
diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/execution/cds/ToscaMetadataCdsProcess.java b/src/main/java/org/onap/clamp/clds/tosca/update/execution/cds/ToscaMetadataCdsProcess.java
index ce1f946..c156414 100644
--- a/src/main/java/org/onap/clamp/clds/tosca/update/execution/cds/ToscaMetadataCdsProcess.java
+++ b/src/main/java/org/onap/clamp/clds/tosca/update/execution/cds/ToscaMetadataCdsProcess.java
@@ -23,6 +23,10 @@
 
 package org.onap.clamp.clds.tosca.update.execution.cds;
 
+import static org.onap.clamp.clds.tosca.ToscaSchemaConstants.PROPERTIES;
+import static org.onap.clamp.clds.tosca.ToscaSchemaConstants.TYPE;
+import static org.onap.clamp.clds.tosca.ToscaSchemaConstants.TYPE_LIST;
+
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
@@ -173,7 +177,7 @@
         jsonObject.add("artifact_version", createAnyOfJsonProperty(
                 "artifact version", artifactVersion));
         jsonObject.add("mode", createCdsInputProperty(
-                "mode", "string", "async"));
+                "mode", "string", "async", null));
         jsonObject.add("data", createDataProperty(inputs));
 
         return jsonObject;
@@ -182,7 +186,7 @@
     private static JsonObject createDataProperty(JsonObject inputs) {
         JsonObject data = new JsonObject();
         data.addProperty("title", "data");
-        data.add("properties", addDataFields(inputs));
+        data.add(PROPERTIES, addDataFields(inputs));
         return data;
     }
 
@@ -192,7 +196,7 @@
         for (Map.Entry<String, JsonElement> entry : entrySet) {
             String key = entry.getKey();
             JsonObject inputProperty = inputs.getAsJsonObject(key);
-            if (inputProperty.get("type") == null) {
+            if (inputProperty.get(TYPE) == null) {
                 jsonObject.add(entry.getKey(),
                                createAnyOfJsonObject(key,
                                                      addDataFields(entry.getValue().getAsJsonObject())));
@@ -200,7 +204,8 @@
                 jsonObject.add(entry.getKey(),
                                createCdsInputProperty(key,
                                                       inputProperty.get("type").getAsString(),
-                                                      null));
+                                                      null,
+                                                      entry.getValue().getAsJsonObject()));
             }
         }
         return jsonObject;
@@ -208,14 +213,26 @@
 
     private static JsonObject createCdsInputProperty(String title,
                                                      String type,
-                                                     String defaultValue) {
+                                                     String defaultValue,
+                                                     JsonObject cdsProperty) {
         JsonObject property = new JsonObject();
         property.addProperty("title", title);
-        property.addProperty("type", type);
+
+        if (TYPE_LIST.equalsIgnoreCase(type)) {
+            property.addProperty(TYPE, "array");
+            if (cdsProperty.get(PROPERTIES) != null) {
+                JsonObject listProperties = new JsonObject();
+                listProperties.add(PROPERTIES,
+                                   addDataFields(cdsProperty.get(PROPERTIES).getAsJsonObject()));
+                property.add("items", listProperties);
+            }
+        } else {
+            property.addProperty(TYPE, type);
+        }
+
         if (defaultValue != null) {
             property.addProperty("default", defaultValue);
         }
-        property.addProperty("format", "textarea");
         return property;
     }
 }
diff --git a/src/test/java/org/onap/clamp/clds/client/CdsServicesTest.java b/src/test/java/org/onap/clamp/clds/client/CdsServicesTest.java
new file mode 100644
index 0000000..ec39fc3
--- /dev/null
+++ b/src/test/java/org/onap/clamp/clds/client/CdsServicesTest.java
@@ -0,0 +1,58 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd.
+ * ================================================================================
+ * 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.clds.client;
+
+import com.google.gson.JsonObject;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.onap.clamp.clds.util.JsonUtils;
+import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.skyscreamer.jsonassert.JSONAssert;
+
+public class CdsServicesTest {
+
+    @Test
+    public void testParseCdsListTypeProperties() throws IOException {
+        String cdsResponse = ResourceFileUtil
+                .getResourceAsString("example/cds-response/vFW-CDS-resource-assignment-workflow.json");
+        CdsServices services = new CdsServices();
+        JsonObject output = services.parseCdsResponse(cdsResponse);
+        JSONAssert.assertEquals(ResourceFileUtil
+                .getResourceAsString("example/cds-response/vFW-CDS-resource-assignment-wf-expected-result.json"),
+                        JsonUtils.GSON.toJson(output), true);
+    }
+
+    @Test
+    public void testParseCdsResponse() throws IOException {
+        String cdsResponse = ResourceFileUtil
+                .getResourceAsString("example/cds-response/vFW-CDS-modify-config-workflow.json");
+        CdsServices services = new CdsServices();
+        JsonObject output = services.parseCdsResponse(cdsResponse);
+        JSONAssert.assertEquals(ResourceFileUtil
+                .getResourceAsString("example/cds-response/vFW-CDS-modify-config-wf-expected-result.json"),
+                        JsonUtils.GSON.toJson(output), true);
+    }
+
+}
\ No newline at end of file
diff --git a/src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java b/src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java
index 4e9b562..a6a4968 100644
--- a/src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java
+++ b/src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java
@@ -50,4 +50,17 @@
                 new GsonBuilder().create().toJson(jsonSchema), false);
     }
 
+    @Test
+    public void testOperationalPolicyPayloadConstructionForCds() throws IOException {
+        JsonObject jsonModel = new GsonBuilder().create()
+                .fromJson(ResourceFileUtil.getResourceAsString("tosca/model-properties-cds.json"), JsonObject.class);
+        Service service = new Service(jsonModel.get("serviceDetails").getAsJsonObject(),
+                                      jsonModel.get("resourceDetails").getAsJsonObject(),
+                                      "1.0");
+
+        JsonObject jsonSchema = OperationalPolicyRepresentationBuilder.generateOperationalPolicySchema(service);
+        assertThat(jsonSchema).isNotNull();
+        JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/operational-policy-cds-payload-with-list.json"),
+                                new GsonBuilder().create().toJson(jsonSchema), false);
+    }
 }
diff --git a/src/test/resources/example/cds-response/vFW-CDS-modify-config-wf-expected-result.json b/src/test/resources/example/cds-response/vFW-CDS-modify-config-wf-expected-result.json
new file mode 100644
index 0000000..7e78bb0
--- /dev/null
+++ b/src/test/resources/example/cds-response/vFW-CDS-modify-config-wf-expected-result.json
@@ -0,0 +1,58 @@
+{
+  "inputs": {
+    "resolution-key": {
+      "required": true,
+      "type": "string"
+    },
+    "modify-config-properties": {
+      "vpg_onap_private_ip_0": {
+        "description": "",
+        "required": false,
+        "type": "string",
+        "status": "",
+        "constraints": [
+          {}
+        ],
+        "entry_schema": {
+          "type": ""
+        }
+      },
+      "service-instance.service-instance-id": {
+        "type": "string"
+      },
+      "vnf-id": {
+        "type": "string"
+      },
+      "data": {
+        "description": "",
+        "required": false,
+        "type": "string",
+        "status": "",
+        "constraints": [
+          {}
+        ],
+        "entry_schema": {
+          "type": "dt-data"
+        }
+      },
+      "service-instance-id": {
+        "type": "string"
+      },
+      "update-active-streams": {
+        "description": "",
+        "required": false,
+        "type": "string",
+        "status": "",
+        "constraints": [
+          {}
+        ],
+        "entry_schema": {
+          "type": "dt-data"
+        }
+      },
+      "generic-vnf.vnf-id": {
+        "type": "string"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/example/cds-response/vFW-CDS-modify-config-workflow.json b/src/test/resources/example/cds-response/vFW-CDS-modify-config-workflow.json
new file mode 100644
index 0000000..e46da67
--- /dev/null
+++ b/src/test/resources/example/cds-response/vFW-CDS-modify-config-workflow.json
@@ -0,0 +1,75 @@
+{
+  "blueprintName": "vFW-CDS",
+  "version": "1.0.0",
+  "workFlowData": {
+    "workFlowName": "modify-config",
+    "inputs": {
+      "resolution-key": {
+        "required": true,
+        "type": "string"
+      },
+      "modify-config-properties": {
+        "description": "Dynamic PropertyDefinition for workflow(modify-config).",
+        "required": true,
+        "type": "dt-modify-config-properties"
+      }
+    }
+  },
+  "dataTypes": {
+    "dt-modify-config-properties": {
+      "description": "Dynamic DataType definition for workflow(modify-config).",
+      "version": "1.0.0",
+      "properties": {
+        "vpg_onap_private_ip_0": {
+          "description": "",
+          "required": false,
+          "type": "string",
+          "status": "",
+          "constraints": [
+            {}
+          ],
+          "entry_schema": {
+            "type": ""
+          }
+        },
+        "service-instance.service-instance-id": {
+          "type": "string"
+        },
+        "vnf-id": {
+          "type": "string"
+        },
+        "data": {
+          "description": "",
+          "required": false,
+          "type": "string",
+          "status": "",
+          "constraints": [
+            {}
+          ],
+          "entry_schema": {
+            "type": "dt-data"
+          }
+        },
+        "service-instance-id": {
+          "type": "string"
+        },
+        "update-active-streams": {
+          "description": "",
+          "required": false,
+          "type": "string",
+          "status": "",
+          "constraints": [
+            {}
+          ],
+          "entry_schema": {
+            "type": "dt-data"
+          }
+        },
+        "generic-vnf.vnf-id": {
+          "type": "string"
+        }
+      },
+      "derived_from": "tosca.datatypes.Dynamic"
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/example/cds-response/vFW-CDS-resource-assignment-wf-expected-result.json b/src/test/resources/example/cds-response/vFW-CDS-resource-assignment-wf-expected-result.json
new file mode 100644
index 0000000..5b373a4
--- /dev/null
+++ b/src/test/resources/example/cds-response/vFW-CDS-resource-assignment-wf-expected-result.json
@@ -0,0 +1,42 @@
+{
+  "inputs": {
+    "template-prefix": {
+      "required": true,
+      "type": "list",
+      "entry_schema": {
+        "type": "string"
+      }
+    },
+    "template-prefix-with-complex-type": {
+      "type": "list",
+      "properties": {
+        "prefix-id": {
+          "description": "",
+          "required": false,
+          "type": "string",
+          "status": "",
+          "constraints": [
+            {}
+          ],
+          "entry_schema": {
+            "type": ""
+          }
+        }
+      }
+    },
+    "resource-assignment-properties": {
+      "private1-prefix-id": {
+        "description": "",
+        "required": false,
+        "type": "string",
+        "status": "",
+        "constraints": [
+          {}
+        ],
+        "entry_schema": {
+          "type": ""
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/example/cds-response/vFW-CDS-resource-assignment-workflow.json b/src/test/resources/example/cds-response/vFW-CDS-resource-assignment-workflow.json
new file mode 100644
index 0000000..d0f78cf
--- /dev/null
+++ b/src/test/resources/example/cds-response/vFW-CDS-resource-assignment-workflow.json
@@ -0,0 +1,78 @@
+{
+  "blueprintName": "vFW-CDS",
+  "version": "1.0.0",
+  "workFlowData": {
+    "workFlowName": "resource-assignment",
+    "inputs": {
+      "template-prefix": {
+        "required": true,
+        "type": "list",
+        "entry_schema": {
+          "type": "string"
+        }
+      },
+      "template-prefix-with-complex-type": {
+        "required": true,
+        "type": "list",
+        "entry_schema": {
+          "type": "dt-template-prefix-properties"
+        }
+      },
+      "resource-assignment-properties": {
+        "description": "Dynamic PropertyDefinition for workflow(resource-assignment).",
+        "required": true,
+        "type": "dt-resource-assignment-properties"
+      }
+    },
+    "outputs": {
+      "meshed-template": {
+        "type": "json",
+        "value": {
+          "get_attribute": [
+            "resource-assignment",
+            "assignment-params"
+          ]
+        }
+      }
+    }
+  },
+  "dataTypes": {
+    "dt-resource-assignment-properties": {
+      "description": "Dynamic DataType definition for workflow(resource-assignment).",
+      "version": "1.0.0",
+      "properties": {
+        "private1-prefix-id": {
+          "description": "",
+          "required": false,
+          "type": "string",
+          "status": "",
+          "constraints": [
+            {}
+          ],
+          "entry_schema": {
+            "type": ""
+          }
+        }
+      },
+      "derived_from": "tosca.datatypes.Dynamic"
+    },
+    "dt-template-prefix-properties": {
+      "description": "Dynamic DataType definition for workflow(template-prefix).",
+      "version": "1.0.0",
+      "properties": {
+        "prefix-id": {
+          "description": "",
+          "required": false,
+          "type": "string",
+          "status": "",
+          "constraints": [
+            {}
+          ],
+          "entry_schema": {
+            "type": ""
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/tosca/model-properties-cds.json b/src/test/resources/tosca/model-properties-cds.json
new file mode 100644
index 0000000..591840b
--- /dev/null
+++ b/src/test/resources/tosca/model-properties-cds.json
@@ -0,0 +1,151 @@
+{
+	"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",
+				"controllerProperties": {
+					"sdnc_model_name": "baseconfiguration",
+					"sdnc_model_version": "1.0.0",
+					"workflows": {
+						"resource-assignment": {
+							"inputs": {
+								"template-prefix": {
+									"required": true,
+									"type": "list",
+									"entry_schema": {
+										"type": "string"
+									}
+								},
+								"template-prefix-with-complex-type": {
+									"type": "list",
+									"properties": {
+										"prefix-id": {
+											"description": "",
+											"required": false,
+											"type": "string",
+											"status": "",
+											"constraints": [
+												{}
+											],
+											"entry_schema": {
+												"type": ""
+											}
+										}
+									}
+								},
+								"resource-assignment-properties": {
+									"private1-prefix-id": {
+										"description": "",
+										"required": false,
+										"type": "string",
+										"status": "",
+										"constraints": [
+											{}
+										],
+										"entry_schema": {
+											"type": ""
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+		},
+		"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
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/src/test/resources/tosca/new-converter/tosca_apex_with_metadata.json b/src/test/resources/tosca/new-converter/tosca_apex_with_metadata.json
index 12edd77..793ba5e 100644
--- a/src/test/resources/tosca/new-converter/tosca_apex_with_metadata.json
+++ b/src/test/resources/tosca/new-converter/tosca_apex_with_metadata.json
@@ -87,8 +87,7 @@
                       "mode": {
                         "title": "mode",
                         "type": "string",
-                        "default": "async",
-                        "format": "textarea"
+                        "default": "async"
                       },
                       "data": {
                         "title": "data",
@@ -99,38 +98,31 @@
                             "properties": {
                               "request-id": {
                                 "title": "request-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "service-instance-id": {
                                 "title": "service-instance-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf-id": {
                                 "title": "vnf-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "action-name": {
                                 "title": "action-name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "scope-type": {
                                 "title": "scope-type",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "hostname": {
                                 "title": "hostname",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf_name": {
                                 "title": "vnf_name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               }
                             }
                           }
@@ -156,8 +148,7 @@
                       "mode": {
                         "title": "mode",
                         "type": "string",
-                        "default": "async",
-                        "format": "textarea"
+                        "default": "async"
                       },
                       "data": {
                         "title": "data",
@@ -168,38 +159,31 @@
                             "properties": {
                               "request-id": {
                                 "title": "request-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "service-instance-id": {
                                 "title": "service-instance-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf-id": {
                                 "title": "vnf-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "action-name": {
                                 "title": "action-name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "scope-type": {
                                 "title": "scope-type",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "hostname": {
                                 "title": "hostname",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf_name": {
                                 "title": "vnf_name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               }
                             }
                           }
@@ -225,8 +209,7 @@
                       "mode": {
                         "title": "mode",
                         "type": "string",
-                        "default": "async",
-                        "format": "textarea"
+                        "default": "async"
                       },
                       "data": {
                         "title": "data",
@@ -237,38 +220,31 @@
                             "properties": {
                               "request-id": {
                                 "title": "request-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "service-instance-id": {
                                 "title": "service-instance-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf-id": {
                                 "title": "vnf-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "action-name": {
                                 "title": "action-name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "scope-type": {
                                 "title": "scope-type",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "hostname": {
                                 "title": "hostname",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf_name": {
                                 "title": "vnf_name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               }
                             }
                           }
@@ -294,8 +270,7 @@
                       "mode": {
                         "title": "mode",
                         "type": "string",
-                        "default": "async",
-                        "format": "textarea"
+                        "default": "async"
                       },
                       "data": {
                         "title": "data",
@@ -306,38 +281,31 @@
                             "properties": {
                               "request-id": {
                                 "title": "request-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "service-instance-id": {
                                 "title": "service-instance-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf-id": {
                                 "title": "vnf-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "action-name": {
                                 "title": "action-name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "scope-type": {
                                 "title": "scope-type",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "hostname": {
                                 "title": "hostname",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf_name": {
                                 "title": "vnf_name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               }
                             }
                           }
@@ -363,8 +331,7 @@
                       "mode": {
                         "title": "mode",
                         "type": "string",
-                        "default": "async",
-                        "format": "textarea"
+                        "default": "async"
                       },
                       "data": {
                         "title": "data",
@@ -375,38 +342,31 @@
                             "properties": {
                               "request-id": {
                                 "title": "request-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "service-instance-id": {
                                 "title": "service-instance-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf-id": {
                                 "title": "vnf-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "action-name": {
                                 "title": "action-name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "scope-type": {
                                 "title": "scope-type",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "hostname": {
                                 "title": "hostname",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf_name": {
                                 "title": "vnf_name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               }
                             }
                           }
@@ -432,8 +392,7 @@
                       "mode": {
                         "title": "mode",
                         "type": "string",
-                        "default": "async",
-                        "format": "textarea"
+                        "default": "async"
                       },
                       "data": {
                         "title": "data",
@@ -444,38 +403,31 @@
                             "properties": {
                               "request-id": {
                                 "title": "request-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "service-instance-id": {
                                 "title": "service-instance-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf-id": {
                                 "title": "vnf-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "action-name": {
                                 "title": "action-name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "scope-type": {
                                 "title": "scope-type",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "hostname": {
                                 "title": "hostname",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf_name": {
                                 "title": "vnf_name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               }
                             }
                           }
diff --git a/src/test/resources/tosca/operational-policy-cds-payload-with-list.json b/src/test/resources/tosca/operational-policy-cds-payload-with-list.json
new file mode 100644
index 0000000..24269ec
--- /dev/null
+++ b/src/test/resources/tosca/operational-policy-cds-payload-with-list.json
@@ -0,0 +1,742 @@
+{
+  "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",
+              "retry",
+              "timeout",
+              "actor",
+              "success",
+              "failure",
+              "failure_timeout",
+              "failure_retries",
+              "failure_exception",
+              "failure_guard",
+              "target"
+            ],
+            "properties": {
+              "id": {
+                "default": "Policy 1",
+                "title": "Policy ID",
+                "type": "string"
+              },
+              "retry": {
+                "default": "0",
+                "title": "Number of Retry",
+                "type": "string",
+                "format": "number"
+              },
+              "timeout": {
+                "default": "0",
+                "title": "Timeout",
+                "type": "string",
+                "format": "number"
+              },
+              "actor": {
+                "type": "object",
+                "title": "Actor",
+                "anyOf": [
+                  {
+                    "title": "APPC",
+                    "type": "object",
+                    "properties": {
+                      "actor": {
+                        "title": "actor",
+                        "type": "string",
+                        "default": "APPC",
+                        "options": {
+                          "hidden": true
+                        }
+                      },
+                      "recipe": {
+                        "title": "recipe",
+                        "type": "string",
+                        "default": "",
+                        "enum": [
+                          "Restart",
+                          "Rebuild",
+                          "Migrate",
+                          "Health-Check",
+                          "ModifyConfig"
+                        ]
+                      },
+                      "payload": {
+                        "title": "Payload (YAML)",
+                        "type": "string",
+                        "format": "textarea"
+                      }
+                    }
+                  },
+                  {
+                    "title": "SO",
+                    "type": "object",
+                    "properties": {
+                      "actor": {
+                        "title": "actor",
+                        "type": "string",
+                        "default": "SO",
+                        "options": {
+                          "hidden": true
+                        }
+                      },
+                      "recipe": {
+                        "title": "recipe",
+                        "type": "string",
+                        "default": "",
+                        "enum": [
+                          "VF Module Create",
+                          "VF Module Delete"
+                        ]
+                      },
+                      "payload": {
+                        "title": "Payload (YAML)",
+                        "type": "string",
+                        "format": "textarea"
+                      }
+                    }
+                  },
+                  {
+                    "title": "SDNC",
+                    "type": "object",
+                    "properties": {
+                      "actor": {
+                        "title": "actor",
+                        "type": "string",
+                        "default": "SDNC",
+                        "options": {
+                          "hidden": true
+                        }
+                      },
+                      "recipe": {
+                        "title": "recipe",
+                        "type": "string",
+                        "default": "",
+                        "enum": [
+                          "Reroute",
+                          "BandwidthOnDemand"
+                        ]
+                      },
+                      "payload": {
+                        "title": "Payload (YAML)",
+                        "type": "string",
+                        "format": "textarea"
+                      }
+                    }
+                  },
+                  {
+                    "title": "VFC",
+                    "type": "object",
+                    "properties": {
+                      "actor": {
+                        "title": "actor",
+                        "type": "string",
+                        "default": "VFC",
+                        "options": {
+                          "hidden": true
+                        }
+                      },
+                      "recipe": {
+                        "title": "recipe",
+                        "type": "string",
+                        "default": "",
+                        "enum": [
+                          "ModifyConfig"
+                        ]
+                      },
+                      "payload": {
+                        "title": "Payload (YAML)",
+                        "type": "string",
+                        "format": "textarea"
+                      }
+                    }
+                  },
+                  {
+                    "title": "CDS",
+                    "type": "object",
+                    "properties": {
+                      "actor": {
+                        "title": "actor",
+                        "type": "string",
+                        "default": "CDS",
+                        "options": {
+                          "hidden": true
+                        }
+                      },
+                      "recipe": {
+                        "title": "recipe",
+                        "type": "object",
+                        "anyOf": [
+                          {
+                            "title": "user-defined",
+                            "type": "object",
+                            "properties": {
+                              "recipe": {
+                                "title": "recipe",
+                                "type": "string",
+                                "default": "user-defined",
+                                "format": "textarea"
+                              },
+                              "payload": {
+                                "title": "Payload (YAML)",
+                                "type": "string",
+                                "default": "",
+                                "format": "textarea"
+                              }
+                            }
+                          },
+                          {
+                            "title": "resource-assignment",
+                            "type": "object",
+                            "properties": {
+                              "recipe": {
+                                "title": "recipe",
+                                "type": "string",
+                                "default": "resource-assignment",
+                                "options": {
+                                  "hidden": true
+                                }
+                              },
+                              "payload": {
+                                "title": "Payload (YAML)",
+                                "type": "object",
+                                "properties": {
+                                  "artifact_name": {
+                                    "title": "artifact name",
+                                    "type": "string",
+                                    "default": "baseconfiguration",
+                                    "readOnly": "True"
+                                  },
+                                  "artifact_version": {
+                                    "title": "artifact version",
+                                    "type": "string",
+                                    "default": "1.0.0",
+                                    "readOnly": "True"
+                                  },
+                                  "mode": {
+                                    "title": "mode",
+                                    "type": "string",
+                                    "default": "async"
+                                  },
+                                  "data": {
+                                    "title": "data",
+                                    "properties": {
+                                      "template-prefix": {
+                                        "title": "template-prefix",
+                                        "type": "array"
+                                      },
+                                      "template-prefix-with-complex-type": {
+                                        "title": "template-prefix-with-complex-type",
+                                        "type": "array",
+                                        "items": {
+                                          "properties": {
+                                            "prefix-id": {
+                                              "title": "prefix-id",
+                                              "type": "string"
+                                            }
+                                          }
+                                        }
+                                      },
+                                      "resource-assignment-properties": {
+                                        "title": "resource-assignment-properties",
+                                        "type": "object",
+                                        "properties": {
+                                          "private1-prefix-id": {
+                                            "title": "private1-prefix-id",
+                                            "type": "string"
+                                          }
+                                        }
+                                      }
+                                    }
+                                  }
+                                }
+                              }
+                            }
+                          }
+                        ]
+                      }
+                    }
+                  }
+                ]
+              },
+              "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.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.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-json-schema.json b/src/test/resources/tosca/operational-policy-json-schema.json
index ffa88ec..87457f1 100644
--- a/src/test/resources/tosca/operational-policy-json-schema.json
+++ b/src/test/resources/tosca/operational-policy-json-schema.json
@@ -276,8 +276,7 @@
                                   "mode": {
                                     "title": "mode",
                                     "type": "string",
-                                    "default": "async",
-                                    "format": "textarea"
+                                    "default": "async"
                                   },
                                   "data": {
                                     "title": "data",
@@ -288,38 +287,31 @@
                                         "properties": {
                                           "request-id": {
                                             "title": "request-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "service-instance-id": {
                                             "title": "service-instance-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf-id": {
                                             "title": "vnf-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "action-name": {
                                             "title": "action-name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "scope-type": {
                                             "title": "scope-type",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "hostname": {
                                             "title": "hostname",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf_name": {
                                             "title": "vnf_name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           }
                                         }
                                       }
@@ -360,8 +352,7 @@
                                   "mode": {
                                     "title": "mode",
                                     "type": "string",
-                                    "default": "async",
-                                    "format": "textarea"
+                                    "default": "async"
                                   },
                                   "data": {
                                     "title": "data",
@@ -372,38 +363,31 @@
                                         "properties": {
                                           "request-id": {
                                             "title": "request-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "service-instance-id": {
                                             "title": "service-instance-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf-id": {
                                             "title": "vnf-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "action-name": {
                                             "title": "action-name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "scope-type": {
                                             "title": "scope-type",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "hostname": {
                                             "title": "hostname",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf_name": {
                                             "title": "vnf_name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           }
                                         }
                                       }
@@ -444,8 +428,7 @@
                                   "mode": {
                                     "title": "mode",
                                     "type": "string",
-                                    "default": "async",
-                                    "format": "textarea"
+                                    "default": "async"
                                   },
                                   "data": {
                                     "title": "data",
@@ -456,38 +439,31 @@
                                         "properties": {
                                           "request-id": {
                                             "title": "request-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "service-instance-id": {
                                             "title": "service-instance-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf-id": {
                                             "title": "vnf-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "action-name": {
                                             "title": "action-name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "scope-type": {
                                             "title": "scope-type",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "hostname": {
                                             "title": "hostname",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf_name": {
                                             "title": "vnf_name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           }
                                         }
                                       }
@@ -528,8 +504,7 @@
                                   "mode": {
                                     "title": "mode",
                                     "type": "string",
-                                    "default": "async",
-                                    "format": "textarea"
+                                    "default": "async"
                                   },
                                   "data": {
                                     "title": "data",
@@ -540,38 +515,31 @@
                                         "properties": {
                                           "request-id": {
                                             "title": "request-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "service-instance-id": {
                                             "title": "service-instance-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf-id": {
                                             "title": "vnf-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "action-name": {
                                             "title": "action-name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "scope-type": {
                                             "title": "scope-type",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "hostname": {
                                             "title": "hostname",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf_name": {
                                             "title": "vnf_name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           }
                                         }
                                       }
@@ -612,8 +580,7 @@
                                   "mode": {
                                     "title": "mode",
                                     "type": "string",
-                                    "default": "async",
-                                    "format": "textarea"
+                                    "default": "async"
                                   },
                                   "data": {
                                     "title": "data",
@@ -624,38 +591,31 @@
                                         "properties": {
                                           "request-id": {
                                             "title": "request-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "service-instance-id": {
                                             "title": "service-instance-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf-id": {
                                             "title": "vnf-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "action-name": {
                                             "title": "action-name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "scope-type": {
                                             "title": "scope-type",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "hostname": {
                                             "title": "hostname",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf_name": {
                                             "title": "vnf_name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           }
                                         }
                                       }
@@ -696,8 +656,7 @@
                                   "mode": {
                                     "title": "mode",
                                     "type": "string",
-                                    "default": "async",
-                                    "format": "textarea"
+                                    "default": "async"
                                   },
                                   "data": {
                                     "title": "data",
@@ -708,38 +667,31 @@
                                         "properties": {
                                           "request-id": {
                                             "title": "request-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "service-instance-id": {
                                             "title": "service-instance-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf-id": {
                                             "title": "vnf-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "action-name": {
                                             "title": "action-name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "scope-type": {
                                             "title": "scope-type",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "hostname": {
                                             "title": "hostname",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf_name": {
                                             "title": "vnf_name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           }
                                         }
                                       }