#  Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
 #  Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
 #  Modification Copyright 2021-2024 Nordix Foundation.
-#  Modifications Copyright 2024 Deutsche Telekom
+#  Modifications Copyright 2024-2025 Deutsche Telekom
 # ============================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
        - ./config/opa-pdp/config.json:/app/config/config.json:ro
        - ./config/opa-pdp/policy-opa-pdp.sh:/app/policy-opa-pdp.sh:ro
        - ./wait_for_port.sh:/app/wait_for_port.sh
-       - type: bind
-         source: ./config/opa-pdp/policies
-         target: /opt/policies
-       - type: bind
-         source: ./config/opa-pdp/data
-         target: /opt/data
       env_file: "./config/opa-pdp/opa-pdp.env"
       entrypoint: sh wait_for_port.sh
       command: [
 
   "logging": {
     "level": "debug"
   },
-  "services": [
-    {
-      "name": "opa-bundle-server",
-      "url": "http://localhost:8282/opa/bundles"
-    }
-  ],
-  "bundles": {
-    "opabundle": {
-      "service": "opa-bundle-server",
-      "resource": "bundle.tar.gz",
-      "polling": {
-        "min_delay_seconds": 60,
-        "max_delay_seconds": 120
-      }
-    }
-  },
   "decision_logs": {
     "console": true
   }
 
     ${policyadmin}=   Create list   policyadmin    zb!XztG34
     RETURN  ${policyadmin}
 
+PerformPatchRequest
+    [Arguments]  ${domain}  ${url}  ${expectedstatus}  ${patchjson}  ${params}  ${auth}
+    Log  Creating session http://${domain}
+    ${session}=  Create Session  policy  http://${domain}  auth=${auth}
+    ${headers}=  Create Dictionary  Accept=application/json  Content-Type=application/json
+    ${resp}=  PATCH On Session  policy  ${url}  data=${patchjson}  params=${params}  headers=${headers}  expected_status=${expectedstatus}
+    Log  Received response from policy ${resp.text}
+    RETURN  ${resp}
+
 PerformPostRequest
     [Arguments]  ${domain}  ${url}  ${expectedstatus}  ${postjson}  ${params}  ${auth}
     Log  Creating session http://${domain}
     Log  Received response from policy ${resp.text}
     RETURN  ${resp}
 
+PerformPostRequestWithYaml
+    [Arguments]  ${domain}  ${url}  ${expectedstatus}  ${postyaml}  ${params}  ${auth}
+    Log  Creating session http://${domain}
+    ${session}=  Create Session  policy  http://${domain}  auth=${auth}
+    ${headers}=  Create Dictionary  Accept=application/yaml  Content-Type=application/yaml
+    ${resp}=  POST On Session  policy  ${url}  data=${postyaml}  params=${params}  headers=${headers}  expected_status=${expectedstatus}
+    Log  Received response from policy ${resp.text}
+    RETURN  ${resp}
+
 PerformPutRequest
     [Arguments]  ${domain}  ${url}  ${expectedstatus}  ${params}  ${auth}
     Log  Creating session http://${domain}
     ${policyadmin}=  PolicyAdminAuth
     ${resp}=  PerformPostRequest  ${POLICY_API_IP}  ${url}  ${expectedstatus}  ${postjson}  null  ${policyadmin}
 
+CreatePolicyWithYaml
+    [Arguments]  ${url}  ${expectedstatus}  ${postyaml}
+    [Documentation]  Create the specific policy
+    ${policyadmin}=  PolicyAdminAuth
+    ${resp}=  PerformPostRequestWithYaml  ${POLICY_API_IP}  ${url}  ${expectedstatus}  ${postyaml}  null  ${policyadmin}
+
+CreateFailurePolicyWithYaml
+    [Arguments]  ${url}  ${expectedstatus}  ${postyaml}  ${keyword}
+    [Documentation]  Trying to create policy with Invalid Data
+    ${policyadmin}=  PolicyAdminAuth
+    ${resp}=  PerformPostRequestWithYaml  ${POLICY_API_IP}  ${url}  ${expectedstatus}  ${postyaml}  null  ${policyadmin}
+    Should Contain    ${resp.text}    ${keyword}
+
+
 CreatePolicySuccessfully
     [Arguments]  ${url}  ${postjson}  ${policyname}  ${policyversion}
     [Documentation]  Create the specific policy
     ${resp}=  QueryPrometheus  ${url}
     ${rawNumber}=  Evaluate  ${resp['data']['result'][0]['value'][1]}
     ${actualTime}=   Set Variable  ${rawNumber * ${1000}}
-    Should Be True   ${actualTime} <= ${executionTime}
\ No newline at end of file
+    Should Be True   ${actualTime} <= ${executionTime}
 
--- /dev/null
+{
+  "data": {
+    "system": {
+      "version": {
+        "build_commit": "",
+        "build_hostname": "",
+        "build_timestamp": "",
+        "version": "1.1.0"
+      }
+    }
+  }
+}
 
+++ /dev/null
-{
-  "output": {
-    "allow": true,
-    "role_grants": {
-      "billing": [
-        {
-          "action": "read",
-          "type": "finance"
-        },
-        {
-          "action": "update",
-          "type": "finance"
-        }
-      ],
-      "customer": [
-        {
-          "action": "read",
-          "type": "dog"
-        },
-        {
-          "action": "read",
-          "type": "cat"
-        },
-        {
-          "action": "adopt",
-          "type": "dog"
-        },
-        {
-          "action": "adopt",
-          "type": "cat"
-        }
-      ],
-      "employee": [
-        {
-          "action": "read",
-          "type": "dog"
-        },
-        {
-          "action": "read",
-          "type": "cat"
-        },
-        {
-          "action": "update",
-          "type": "dog"
-        },
-        {
-          "action": "update",
-          "type": "cat"
-        }
-      ]
-    },
-    "user_is_admin": true,
-    "user_is_granted": [],
-    "user_roles": {
-      "alice": ["admin"],
-      "bob": ["employee", "billing"],
-      "eve": ["customer"]
-    }
-  },
-  "policyName": "role"
-}
 
+++ /dev/null
-{
-  "output": {
-    "role_grants": {
-      "billing": [
-        {"action": "read", "type": "finance"},
-        {"action": "update", "type": "finance"}
-      ],
-      "customer": [
-        {"action": "read", "type": "dog"},
-        {"action": "read", "type": "cat"},
-        {"action": "adopt", "type": "dog"},
-        {"action": "adopt", "type": "cat"}
-      ],
-      "employee": [
-        {"action": "read", "type": "dog"},
-        {"action": "read", "type": "cat"},
-        {"action": "update", "type": "dog"},
-        {"action": "update", "type": "cat"}
-      ]
-    }
-  },
-  "policyName": "role"
-}
 
+++ /dev/null
-{"onapName":"CDS","onapComponent":"CDS","onapInstance":"CDS","currentDate": "2024-11-22", "currentTime": "2024-11-22T11:34:56Z", "timeZone": "UTC",  "timeOffset": "+05:30", "currentDateTime": "2024-11-22T12:08:00Z", "policyName":"role","input":{"user":"alice","action":"write","object":"id123","type":"dog"}}
 
+++ /dev/null
-{
-  "errorMessage": "Policy Filter is nil.",
-  "policyName": "",
-  "responseCode": "bad_request"
-}
 
+++ /dev/null
-{"onapName":"CDS","onapComponent":"CDS","onapInstance":"CDS","currentDate": "2024-11-22", "currentTime": "2024-11-22T11:34:56Z", "timeZone": "UTC",  "timeOffset": "+05:30", "currentDateTime": "2024-11-22T12:08:00Z", "policyName":"role","policyFilter": ["role_grants"],"input":{"user":"alice","action":"write","object":"id123","type":"dog"}}
 
+++ /dev/null
-{"onapName":"CDS","onapComponent":"CDS","onapInstance":"CDS","currentDate": "2024-11-22", "currentTime": "2024-11-22T11:34:56Z", "timeZone": "UTC",  "timeOffset": "+05:30", "currentDateTime": "2024-11-22T12:08:00Z", "policyName":"role","policyFilter": [""],"input":{"user":"alice","action":"write","object":"id123","type":"dog"}}
 
--- /dev/null
+{
+  "onapName": "CDS",
+  "onapComponent": "CDS",
+  "onapInstance": "CDS",
+  "currentDate": "2024-11-22",
+  "policyName": "zoneB",
+  "policyFilter": ["has_ze_access"],
+  "input": {
+    "actions": ["view"],
+    "log_id": "log1",
+    "datatypes": ["access", "user"],
+    "time_period": {
+      "from": "2024-11-01T09:00:00Z",
+      "to": "2024-11-01T10:00:00Z"
+    },
+    "zone_id": "zoneA"
+  }
+}
+
 
--- /dev/null
+{
+  "onapName": "CDS",
+  "onapComponent": "CDS",
+  "onapInstance": "CDS",
+  "currentDate": "2024-11-22",
+  "policyName": "zoeB",
+  "policyFilter": ["has_zone_access"],
+  "input": {
+    "actions": ["view"],
+    "log_id": "log1",
+    "datatypes": ["access", "user"],
+    "time_period": {
+      "from": "2024-11-01T09:00:00Z",
+      "to": "2024-11-01T10:00:00Z"
+    },
+    "zone_id": "zoneA"
+  }
+}
+
 
--- /dev/null
+{
+  "output": {
+    "has_zone_access": [
+      {
+        "access": "granted",
+        "user": "user1"
+      }
+    ]
+  },
+  "policyName": "zoneB",
+  "statusMessage": "OPA Allowed"
+}
 
--- /dev/null
+{
+  "data": {
+    "round": "trail",
+    "vehicles": [
+      {
+        "owner": "user1",
+        "status": "available",
+        "type": "car",
+        "vehicle_id": "v1"
+      },
+      {
+        "owner": "user2",
+        "status": "in use",
+        "type": "bike",
+        "vehicle_id": "v2"
+      }
+    ]
+  }
+}
 
--- /dev/null
+{"onapName": "CDS","onapComponent": "CDS","onapInstance": "CDS","currentDateTime": "2025-01-17T08:26:41.857Z","currentDate": "2025-01-17","currentTime": "08:26:41.857Z","timeZone": "UTC","timeOffset": "+08:45","policyName": "vehicle","data": [{"op": "add","path": "/round","value": "trail"}]}
 
--- /dev/null
+{
+  "onapName": "CDS",
+  "onapComponent": "CDS",
+  "onapInstance": "CDS",
+  "currentDateTime": "2025-01-17T08:26:41.857Z",
+  "currentDate": "2025-01-17",
+  "currentTime": "08:26:41.857Z",
+  "timeZone": "UTC",
+  "timeOffset": "+08:45",
+  "policyName": "vehicle",
+  "data": [
+    {
+      "op": "remove",
+      "path": "/round"
+    }
+  ]
+}
 
--- /dev/null
+{
+  "data": {
+    "round": 578,
+    "vehicles": [
+      {
+        "owner": "user1",
+        "status": "available",
+        "type": "car",
+        "vehicle_id": "v1"
+      },
+      {
+        "owner": "user2",
+        "status": "in use",
+        "type": "bike",
+        "vehicle_id": "v2"
+      }
+    ]
+  }
+}
 
--- /dev/null
+{
+  "onapName": "CDS",
+  "onapComponent": "CDS",
+  "onapInstance": "CDS",
+  "currentDateTime": "2025-01-17T08:26:41.857Z",
+  "currentDate": "2025-01-17",
+  "currentTime": "08:26:41.857Z",
+  "timeZone": "UTC",
+  "timeOffset": "+08:45",
+  "policyName": "vehicle",
+  "data": [
+    {
+      "op": "replace",
+      "path": "/round",
+      "value": 578
+    }
+  ]
+}
 
--- /dev/null
+tosca_definitions_version: tosca_simple_yaml_1_1_0
+topology_template:
+  policies:
+    - abac:
+        type: onap.policies.native.opa
+        type_version: 1.0.0
+        properties:
+          data:
+            node.abac: ewogICAgInNlbnNvcl9kYXRhIjogWwogICAgICAgIHsKICAgICAgICAgICAgImlkIjogIjAwMDEiLAogICAgICAgICAgICAibG9jYXRpb24iOiAiU3JpIExhbmthIiwKICAgICAgICAgICAgInRlbXBlcmF0dXJlIjogIjI4IEMiLAogICAgICAgICAgICAicHJlY2lwaXRhdGlvbiI6ICIxMDAwIG1tIiwKICAgICAgICAgICAgIndpbmRzcGVlZCI6ICI1LjUgbS9zIiwKICAgICAgICAgICAgImh1bWlkaXR5IjogIjQwJSIsCiAgICAgICAgICAgICJwYXJ0aWNsZV9kZW5zaXR5IjogIjEuMyBnL2wiLAogICAgICAgICAgICAidGltZXN0YW1wIjogIjIwMjQtMDItMjYiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJpZCI6ICIwMDAyIiwKICAgICAgICAgICAgImxvY2F0aW9uIjogIkNvbG9tYm8iLAogICAgICAgICAgICAidGVtcGVyYXR1cmUiOiAiMzAgQyIsCiAgICAgICAgICAgICJwcmVjaXBpdGF0aW9uIjogIjEyMDAgbW0iLAogICAgICAgICAgICAid2luZHNwZWVkIjogIjYuMCBtL3MiLAogICAgICAgICAgICAiaHVtaWRpdHkiOiAiNDUlIiwKICAgICAgICAgICAgInBhcnRpY2xlX2RlbnNpdHkiOiAiMS41IGcvbCIsCiAgICAgICAgICAgICJ0aW1lc3RhbXAiOiAiMjAyNC0wMi0yNiIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgImlkIjogIjAwMDMiLAogICAgICAgICAgICAibG9jYXRpb24iOiAiS2FuZHkiLAogICAgICAgICAgICAidGVtcGVyYXR1cmUiOiAiMjUgQyIsCiAgICAgICAgICAgICJwcmVjaXBpdGF0aW9uIjogIjgwMCBtbSIsCiAgICAgICAgICAgICJ3aW5kc3BlZWQiOiAiNC41IG0vcyIsCiAgICAgICAgICAgICJodW1pZGl0eSI6ICI2MCUiLAogICAgICAgICAgICAicGFydGljbGVfZGVuc2l0eSI6ICIxLjEgZy9sIiwKICAgICAgICAgICAgInRpbWVzdGFtcCI6ICIyMDI0LTAyLTI2IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAiaWQiOiAiMDAwNCIsCiAgICAgICAgICAgICJsb2NhdGlvbiI6ICJHYWxsZSIsCiAgICAgICAgICAgICJ0ZW1wZXJhdHVyZSI6ICIzNSBDIiwKICAgICAgICAgICAgInByZWNpcGl0YXRpb24iOiAiNTAwIG1tIiwKICAgICAgICAgICAgIndpbmRzcGVlZCI6ICI3LjIgbS9zIiwKICAgICAgICAgICAgImh1bWlkaXR5IjogIjMwJSIsCiAgICAgICAgICAgICJwYXJ0aWNsZV9kZW5zaXR5IjogIjEuOCBnL2wiLAogICAgICAgICAgICAidGltZXN0YW1wIjogIjIwMjQtMDItMjciCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJpZCI6ICIwMDA1IiwKICAgICAgICAgICAgImxvY2F0aW9uIjogIkphZmZuYSIsCiAgICAgICAgICAgICJ0ZW1wZXJhdHVyZSI6ICItNSBDIiwKICAgICAgICAgICAgInByZWNpcGl0YXRpb24iOiAiMzAwIG1tIiwKICAgICAgICAgICAgIndpbmRzcGVlZCI6ICIzLjggbS9zIiwKICAgICAgICAgICAgImh1bWlkaXR5IjogIjIwJSIsCiAgICAgICAgICAgICJwYXJ0aWNsZV9kZW5zaXR5IjogIjAuOSBnL2wiLAogICAgICAgICAgICAidGltZXN0YW1wIjogIjIwMjQtMDItMjciCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJpZCI6ICIwMDA2IiwKICAgICAgICAgICAgImxvY2F0aW9uIjogIlRyaW5jb21hbGVlIiwKICAgICAgICAgICAgInRlbXBlcmF0dXJlIjogIjIwIEMiLAogICAgICAgICAgICAicHJlY2lwaXRhdGlvbiI6ICIxMDAwIG1tIiwKICAgICAgICAgICAgIndpbmRzcGVlZCI6ICI1LjAgbS9zIiwKICAgICAgICAgICAgImh1bWlkaXR5IjogIjU1JSIsCiAgICAgICAgICAgICJwYXJ0aWNsZV9kZW5zaXR5IjogIjEuMiBnL2wiLAogICAgICAgICAgICAidGltZXN0YW1wIjogIjIwMjQtMDItMjgiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJpZCI6ICIwMDA3IiwKICAgICAgICAgICAgImxvY2F0aW9uIjogIk51d2FyYSBFbGl5YSIsCiAgICAgICAgICAgICJ0ZW1wZXJhdHVyZSI6ICIyNSBDIiwKICAgICAgICAgICAgInByZWNpcGl0YXRpb24iOiAiNjAwIG1tIiwKICAgICAgICAgICAgIndpbmRzcGVlZCI6ICI0LjAgbS9zIiwKICAgICAgICAgICAgImh1bWlkaXR5IjogIjUwJSIsCiAgICAgICAgICAgICJwYXJ0aWNsZV9kZW5zaXR5IjogIjEuMyBnL2wiLAogICAgICAgICAgICAidGltZXN0YW1wIjogIjIwMjQtMDItMjgiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJpZCI6ICIwMDA4IiwKICAgICAgICAgICAgImxvY2F0aW9uIjogIkFudXJhZGhhcHVyYSIsCiAgICAgICAgICAgICJ0ZW1wZXJhdHVyZSI6ICIyOCBDIiwKICAgICAgICAgICAgInByZWNpcGl0YXRpb24iOiAiNzAwIG1tIiwKICAgICAgICAgICAgIndpbmRzcGVlZCI6ICI1LjggbS9zIiwKICAgICAgICAgICAgImh1bWlkaXR5IjogIjQwJSIsCiAgICAgICAgICAgICJwYXJ0aWNsZV9kZW5zaXR5IjogIjEuNCBnL2wiLAogICAgICAgICAgICAidGltZXN0YW1wIjogIjIwMjQtMDItMjkiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJpZCI6ICIwMDA5IiwKICAgICAgICAgICAgImxvY2F0aW9uIjogIk1hdGFyYSIsCiAgICAgICAgICAgICJ0ZW1wZXJhdHVyZSI6ICIzMiBDIiwKICAgICAgICAgICAgInByZWNpcGl0YXRpb24iOiAiOTAwIG1tIiwKICAgICAgICAgICAgIndpbmRzcGVlZCI6ICI2LjUgbS9zIiwKICAgICAgICAgICAgImh1bWlkaXR5IjogIjY1JSIsCiAgICAgICAgICAgICJwYXJ0aWNsZV9kZW5zaXR5IjogIjEuNiBnL2wiLAogICAgICAgICAgICAidGltZXN0YW1wIjogIjIwMjQtMDItMjkiCiAgICAgICAgfQogICAgXQp9
+          policy:
+            abac: cGFja2FnZSBhYmFjCgppbXBvcnQgcmVnby52MQoKZGVmYXVsdCBhbGxvdyA6PSBmYWxzZQoKYWxsb3cgaWYgewogdmlld2FibGVfc2Vuc29yX2RhdGEKIGFjdGlvbl9pc19yZWFkCn0KCmFjdGlvbl9pc19yZWFkIGlmICJyZWFkIiBpbiBpbnB1dC5hY3Rpb25zCgp2aWV3YWJsZV9zZW5zb3JfZGF0YSBjb250YWlucyB2aWV3X2RhdGEgaWYgewogc29tZSBzZW5zb3JfZGF0YSBpbiBkYXRhLm5vZGUuYWJhYy5zZW5zb3JfZGF0YQogc2Vuc29yX2RhdGEudGltZXN0YW1wID49IGlucHV0LnRpbWVfcGVyaW9kLmZyb20KIHNlbnNvcl9kYXRhLnRpbWVzdGFtcCA8IGlucHV0LnRpbWVfcGVyaW9kLnRvCgogdmlld19kYXRhIDo9IHtkYXRhdHlwZTogc2Vuc29yX2RhdGFbZGF0YXR5cGVdIHwgZGF0YXR5cGUgaW4gaW5wdXQuZGF0YXR5cGVzfQp9
+        name: abac
+        version: 1.0.7
+        metadata:
+          policy-id: abac
+          policy-version: 1.0.7
 
--- /dev/null
+{
+   "policies": [
+           {
+                   "policy-id": "abac",
+                   "policy-version": "1.0.7"
+           }
+   ]
+}
+
 
--- /dev/null
+tosca_definitions_version: tosca_simple_yaml_1_1_0
+topology_template:
+  policies:
+    - abac:
+        type: onap.policies.native.opa
+        type_version: 1.0.0
+        properties:
+          data:
+            node.abac: cGFja2FnZSBvcmdfYWNjZXNzX2NvbnRyb2wucG9saWN5CmltcG9ydCByZWdvLnYxCmltcG9ydCBkYXRhLm9yZ19hY2Nlc3NfY29udHJvbC5yb2xlcwppbXBvcnQgZGF0YS5vcmdfYWNjZXNzX2NvbnRyb2wudXNlcnMKaW1wb3J0IGRhdGEub3JnX2FjY2Vzc19jb250cm9sLmdyb3VwcwppbXBvcnQgZGF0YS5vcmdfYWNjZXNzX2NvbnRyb2wuZG9jdW1lbnRzCmRlZmF1bHQgYWxsb3cgPSBmYWxzZQojIEFsbG93IGFjY2VzcyBpZiB0aGUgdXNlciBoYXMgdGhlIHJlcXVpcmVkIHBlcm1pc3Npb24KYWxsb3cgaWZ7CiAgICBpbnB1dC51c2VyID0gdXNlcgogICAgaW5wdXQuYWN0aW9uID0gYWN0aW9uCiAgICB1c2VyX2hhc19wZXJtaXNzaW9uKHVzZXIsIGFjdGlvbikKfQojIENoZWNrIGlmIHRoZSB1c2VyIGhhcyBwZXJtaXNzaW9uIGJhc2VkIG9uIHRoZWlyIHJvbGUKdXNlcl9oYXNfcGVybWlzc2lvbih1c2VyLCBhY3Rpb24pIGlmewogICAgcm9sZSA6PSB1c2Vyc1t1c2VyXS5yb2xlIAogICAgYWN0aW9uIGluIHJvbGVzW3JvbGVdCn0KIyBBbGxvdyBhY2Nlc3MgZm9yIGEgZ3JvdXAgaWYgYW55IHVzZXIgaW4gdGhlIGdyb3VwIGhhcyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbgphbGxvd19ncm91cCBpZnsKICAgIGlucHV0Lmdyb3VwID0gZ3JvdXAKICAgIGlucHV0LmFjdGlvbiA9IGFjdGlvbgogICAgdXNlcl9pbl9ncm91cCA6PSBncm91cHNbZ3JvdXBdCiAgICB1c2VyX2hhc19wZXJtaXNzaW9uKHVzZXJfaW5fZ3JvdXAsIGFjdGlvbikgCn0KIyBBbGxvdyBhY2Nlc3MgdG8gZG9jdW1lbnRzIGJhc2VkIG9uIHRoZSB1c2VyJ3MgZG9jdW1lbnQgb3duZXJzaGlwCmFsbG93X2RvY3VtZW50X2FjY2VzcyBpZnsKICAgIGlucHV0LnVzZXIgPSB1c2VyCiAgICBpbnB1dC5kb2N1bWVudF9pZCA9IGRvY3VtZW50X2lkCiAgICBkb2N1bWVudF9vd25lciA6PSBkb2N1bWVudHNbZG9jdW1lbnRfaWRdLm93bmVyCiAgICB1c2VyID09IGRvY3VtZW50X293bmVyCn0=
+          policy:
+            abac: cGFja2FnZSBhYmFjCgppbXBvcnQgcmVnby52MQoKZGVmYXVsdCBhbGxvdyA6PSBmYWxzZQoKYWxsb3cgaWYgewogdmlld2FibGVfc2Vuc29yX2RhdGEKIGFjdGlvbl9pc19yZWFkCn0KCmFjdGlvbl9pc19yZWFkIGlmICJyZWFkIiBpbiBpbnB1dC5hY3Rpb25zCgp2aWV3YWJsZV9zZW5zb3JfZGF0YSBjb250YWlucyB2aWV3X2RhdGEgaWYgewogc29tZSBzZW5zb3JfZGF0YSBpbiBkYXRhLmFiYWMuc2Vuc29yX2RhdGEKIHNlbnNvcl9kYXRhLnRpbWVzdGFtcCA+PSBpbnB1dC50aW1lX3BlcmlvZC5mcm9tCiBzZW5zb3JfZGF0YS50aW1lc3RhbXAgPCBpbnB1dC50aW1lX3BlcmlvZC50bwoKIHZpZXdfZGF0YSA6PSB7ZGF0YXR5cGU6IHNlbnNvcl9kYXRhW2RhdGF0eXBlXSB8IGRhdGF0eXBlIGluIGlucHV0LmRhdGF0eXBlc30KfQ==
+        name: abac
+        version: 1.0.7
+        metadata:
+          policy-id: abac
+          policy-version: 1.0.7
 
--- /dev/null
+{
+  "data": {
+    "sensor_data": [
+      {
+        "humidity": "40%",
+        "id": "0001",
+        "location": "Sri Lanka",
+        "particle_density": "1.3 g/l",
+        "precipitation": "1000 mm",
+        "temperature": "28 C",
+        "timestamp": "2024-02-26",
+        "windspeed": "5.5 m/s"
+      },
+      {
+        "humidity": "45%",
+        "id": "0002",
+        "location": "Colombo",
+        "particle_density": "1.5 g/l",
+        "precipitation": "1200 mm",
+        "temperature": "30 C",
+        "timestamp": "2024-02-26",
+        "windspeed": "6.0 m/s"
+      },
+      {
+        "humidity": "60%",
+        "id": "0003",
+        "location": "Kandy",
+        "particle_density": "1.1 g/l",
+        "precipitation": "800 mm",
+        "temperature": "25 C",
+        "timestamp": "2024-02-26",
+        "windspeed": "4.5 m/s"
+      },
+      {
+        "humidity": "30%",
+        "id": "0004",
+        "location": "Galle",
+        "particle_density": "1.8 g/l",
+        "precipitation": "500 mm",
+        "temperature": "35 C",
+        "timestamp": "2024-02-27",
+        "windspeed": "7.2 m/s"
+      },
+      {
+        "humidity": "20%",
+        "id": "0005",
+        "location": "Jaffna",
+        "particle_density": "0.9 g/l",
+        "precipitation": "300 mm",
+        "temperature": "-5 C",
+        "timestamp": "2024-02-27",
+        "windspeed": "3.8 m/s"
+      },
+      {
+        "humidity": "55%",
+        "id": "0006",
+        "location": "Trincomalee",
+        "particle_density": "1.2 g/l",
+        "precipitation": "1000 mm",
+        "temperature": "20 C",
+        "timestamp": "2024-02-28",
+        "windspeed": "5.0 m/s"
+      },
+      {
+        "humidity": "50%",
+        "id": "0007",
+        "location": "Nuwara Eliya",
+        "particle_density": "1.3 g/l",
+        "precipitation": "600 mm",
+        "temperature": "25 C",
+        "timestamp": "2024-02-28",
+        "windspeed": "4.0 m/s"
+      },
+      {
+        "humidity": "40%",
+        "id": "0008",
+        "location": "Anuradhapura",
+        "particle_density": "1.4 g/l",
+        "precipitation": "700 mm",
+        "temperature": "28 C",
+        "timestamp": "2024-02-29",
+        "windspeed": "5.8 m/s"
+      },
+      {
+        "humidity": "65%",
+        "id": "0009",
+        "location": "Matara",
+        "particle_density": "1.6 g/l",
+        "precipitation": "900 mm",
+        "temperature": "32 C",
+        "timestamp": "2024-02-29",
+        "windspeed": "6.5 m/s"
+      }
+    ]
+  }
+}
 
--- /dev/null
+{
+  "errorMessage": "Error in getting data - storage_not_found_error: /node/vehicle: document does not exist",
+  "policyName": "",
+  "responseCode": "resource_not_found"
+}
 
--- /dev/null
+tosca_definitions_version: tosca_simple_yaml_1_1_0
+topology_template:
+  policies:
+    - vehicle:
+        type: onap.policies.native.opa
+        type_version: 1.0.0
+        properties:
+          data:
+            node.vehicle: ewogICJ2ZWhpY2xlcyI6IFsKICAgIHsgInZlaGljbGVfaWQiOiAidjEiLCAib3duZXIiOiAidXNlcjEiLCAidHlwZSI6ICJjYXIiLCAic3RhdHVzIjogImF2YWlsYWJsZSIgfSwKICAgIHsgInZlaGljbGVfaWQiOiAidjIiLCAib3duZXIiOiAidXNlcjIiLCAidHlwZSI6ICJiaWtlIiwgInN0YXR1cyI6ICJpbiB1c2UiIH0KICBdCn0K
+          policy:
+            vehicle: cGFja2FnZSB2ZWhpY2xlCgppbXBvcnQgIHJlZ28udjEKCmRlZmF1bHQgYWxsb3cgOj0gZmFsc2UKCmFsbG93IGlmIHsKICAgIHVzZXJfaGFzX3ZlaGljbGVfYWNjZXNzCiAgICBhY3Rpb25faXNfZ3JhbnRlZAp9CgphY3Rpb25faXNfZ3JhbnRlZCBpZiB7CiAgICAidXNlIiBpbiBpbnB1dC5hY3Rpb25zCn0KCnVzZXJfaGFzX3ZlaGljbGVfYWNjZXNzIGNvbnRhaW5zIHZlaGljbGVfZGF0YSBpZiB7CiAgICBzb21lIHZlaGljbGUgaW4gZGF0YS5ub2RlLnZlaGljbGUudmVoaWNsZXMKICAgIHZlaGljbGUudmVoaWNsZV9pZCA9PSBpbnB1dC52ZWhpY2xlX2lkCiAgICB2ZWhpY2xlLm93bmVyID09IGlucHV0LnVzZXIKICAgIHZlaGljbGVfZGF0YSA6PSB7aW5mbzogdmVoaWNsZVtpbmZvXSB8IGluZm8gaW4gaW5wdXQuYXR0cmlidXRlc30KfQo=
+        name: vehicle
+        version: 1.0.6
+        metadata:
+          policy-id: vehicle
+          policy-version: 1.0.6
+
 
--- /dev/null
+{
+   "policies": [
+           {
+                   "policy-id": "vehicle",
+                   "policy-version": "1.0.6"
+           }
+   ]
+}
+
 
--- /dev/null
+{
+  "data": {
+    "vehicles": [
+      {
+        "owner": "user1",
+        "status": "available",
+        "type": "car",
+        "vehicle_id": "v1"
+      },
+      {
+        "owner": "user2",
+        "status": "in use",
+        "type": "bike",
+        "vehicle_id": "v2"
+      }
+    ]
+  }
+}
 
--- /dev/null
+tosca_definitions_version: tosca_simple_yaml_1_1_0
+topology_template:
+  policies:
+    - zoneB:
+        type: onap.policies.native.opa
+        type_version: 1.0.0
+        properties:
+          data:
+            node.zoneB: ewogICJ6b25lIjogewogICAgInpvbmVfYWNjZXNzX2xvZ3MiOiBbCiAgICAgIHsgImxvZ19pZCI6ICJsb2cxIiwgInRpbWVzdGFtcCI6ICIyMDI0LTExLTAxVDA5OjAwOjAwWiIsICJ6b25lX2lkIjogInpvbmVBIiwgImFjY2VzcyI6ICJncmFudGVkIiwgInVzZXIiOiAidXNlcjEiIH0sCiAgICAgIHsgImxvZ19pZCI6ICJsb2cyIiwgInRpbWVzdGFtcCI6ICIyMDI0LTExLTAxVDEwOjMwOjAwWiIsICJ6b25lX2lkIjogInpvbmVBIiwgImFjY2VzcyI6ICJkZW5pZWQiLCAidXNlciI6ICJ1c2VyMiIgfSwKICAgICAgeyAibG9nX2lkIjogImxvZzMiLCAidGltZXN0YW1wIjogIjIwMjQtMTEtMDFUMTE6MDA6MDBaIiwgInpvbmVfaWQiOiAiem9uZUIiLCAiYWNjZXNzIjogImdyYW50ZWQiLCAidXNlciI6ICJ1c2VyMyIgfQogICAgXQogIH0KfQ==
+          policy:
+            zoneB: cGFja2FnZSB6b25lQgogCmltcG9ydCByZWdvLnYxCiAKZGVmYXVsdCBhbGxvdyA6PSBmYWxzZQogCmFsbG93IGlmIHsKICAgIGhhc196b25lX2FjY2VzcwogICAgYWN0aW9uX2lzX2xvZ192aWV3Cn0KIAphY3Rpb25faXNfbG9nX3ZpZXcgaWYgewogICAgInZpZXciIGluIGlucHV0LmFjdGlvbnMKfQogCmhhc196b25lX2FjY2VzcyBjb250YWlucyBhY2Nlc3NfZGF0YSBpZiB7CiAgICBzb21lIHpvbmVfZGF0YSBpbiBkYXRhLm5vZGUuem9uZUIuem9uZS56b25lX2FjY2Vzc19sb2dzCiAgICB6b25lX2RhdGEudGltZXN0YW1wID49IGlucHV0LnRpbWVfcGVyaW9kLmZyb20KICAgIHpvbmVfZGF0YS50aW1lc3RhbXAgPCBpbnB1dC50aW1lX3BlcmlvZC50bwogICAgem9uZV9kYXRhLnpvbmVfaWQgPT0gaW5wdXQuem9uZV9pZAogICAgYWNjZXNzX2RhdGEgOj0ge2RhdGF0eXBlOiB6b25lX2RhdGFbZGF0YXR5cGVdIHwgZGF0YXR5cGUgaW4gaW5wdXQuZGF0YXR5cGVzfQp9
+        name: zoneB
+        version: 1.0.6
+        metadata:
+          policy-id: zoneB
+          policy-version: 1.0.6
+
 
--- /dev/null
+{
+   "policies": [
+           {
+                   "policy-id": "zoneB",
+                   "policy-version": "1.0.6"
+           }
+   ]
+}
 
--- /dev/null
+{
+   "data":{
+      "zone_access_logs":[
+         {
+            "access":"granted",
+            "log_id":"log1",
+            "timestamp":"2024-11-01T09:00:00Z",
+            "user":"user1",
+            "zone_id":"zoneA"
+         },
+         {
+            "access":"denied",
+            "log_id":"log2",
+            "timestamp":"2024-11-01T10:30:00Z",
+            "user":"user2",
+            "zone_id":"zoneA"
+         },
+         {
+            "access":"granted",
+            "log_id":"log3",
+            "timestamp":"2024-11-01T11:00:00Z",
+            "user":"user3",
+            "zone_id":"zoneB"
+         }
+      ]
+   }
+}
 
--- /dev/null
+{
+  "onapName": "CDS",
+  "onapComponent": "CDS",
+  "onapInstance": "CDS",
+  "currentDate": "2024-11-22",
+  "policyName": "abac",
+  "policyFilter": ["viewable_sesor_data"],
+  "input": {
+    "actions": ["read"],
+    "datatypes": ["location", "temperature", "precipitation", "windspeed"],
+    "time_period": {
+      "from": "2024-02-27",
+      "to": "2024-02-29"
+    }
+  }
+}
 
--- /dev/null
+{
+  "onapName": "CDS",
+  "onapComponent": "CDS",
+  "onapInstance": "CDS",
+  "currentDate": "2024-11-22",
+  "policyName": "abc",
+  "policyFilter": ["viewable_sensor_data"],
+  "input": {
+    "actions": ["read"],
+    "datatypes": ["location", "temperature", "precipitation", "windspeed"],
+    "time_period": {
+      "from": "2024-02-27",
+      "to": "2024-02-29"
+    }
+  }
+}
 
--- /dev/null
+{
+  "output": {
+    "viewable_sensor_data": [
+      {
+        "location": "Galle",
+        "precipitation": "500 mm",
+        "temperature": "35 C",
+        "windspeed": "7.2 m/s"
+      },
+      {
+        "location": "Jaffna",
+        "precipitation": "300 mm",
+        "temperature": "-5 C",
+        "windspeed": "3.8 m/s"
+      },
+      {
+        "location": "Nuwara Eliya",
+        "precipitation": "600 mm",
+        "temperature": "25 C",
+        "windspeed": "4.0 m/s"
+      },
+      {
+        "location": "Trincomalee",
+        "precipitation": "1000 mm",
+        "temperature": "20 C",
+        "windspeed": "5.0 m/s"
+      }
+    ]
+  },
+  "policyName": "abac",
+  "statusMessage": "OPA Allowed"
+}
 
--- /dev/null
+{
+    "onapName": "CDS",
+    "onapComponent": "CDS",
+    "onapInstance": "CDS",
+    "currentDate": "2024-11-22",
+    "policyName": "abac",
+    "policyFilter": ["viewable_sensor_data"],
+    "input": {
+        "actions": ["read"],
+        "datatypes": ["location", "temperature", "precipitation", "windspeed"],
+        "time_period": {
+            "from": "2024-02-27",
+            "to": "2024-02-29"
+        }
+    }
+}
 
--- /dev/null
+{
+  "onapName": "CDS",
+  "onapComponent": "CDS",
+  "onapInstance": "CDS",
+  "currentDate": "2024-11-22",
+  "policyName": "vehicle",
+  "policyFilter": ["user_has_vecle_access"],
+  "input": {
+    "actions": ["use"],
+    "user": "user1",
+    "vehicle_id": "v1",
+    "attributes": ["type", "status"]
+  }
+}
+
 
--- /dev/null
+{
+  "onapName": "CDS",
+  "onapComponent": "CDS",
+  "onapInstance": "CDS",
+  "currentDate": "2024-11-22",
+  "policyName": "vehile",
+  "policyFilter": ["user_has_vehicle_access"],
+  "input": {
+    "actions": ["use"],
+    "user": "user1",
+    "vehicle_id": "v1",
+    "attributes": ["type", "status"]
+  }
+}
+
 
--- /dev/null
+{
+  "onapName": "CDS",
+  "onapComponent": "CDS",
+  "onapInstance": "CDS",
+  "currentDate": "2024-11-22",
+  "policyName": "vehicle",
+  "policyFilter": ["user_has_vehicle_access"],
+  "input": {
+    "actions": ["use"],
+    "user": "user1",
+    "vehicle_id": "v1",
+    "attributes": ["type", "status"]
+  }
+}
 
--- /dev/null
+{
+  "output": {
+    "user_has_vehicle_access": [
+        {
+          "status": "available",
+          "type": "car"
+        }
+    ]
+  },
+  "policyName": "vehicle",
+  "statusMessage": "OPA Allowed"
+}
 
--- /dev/null
+{
+  "onapName": "CDS",
+  "onapComponent": "CDS",
+  "onapInstance": "CDS",
+  "currentDate": "2024-11-22",
+  "policyName": "zoneB",
+  "policyFilter": ["has_zone_access"],
+  "input": {
+    "actions": ["view"],
+    "log_id": "log1",
+    "datatypes": ["access", "user"],
+    "time_period": {
+      "from": "2024-11-01T09:00:00Z",
+      "to": "2024-11-01T10:00:00Z"
+    },
+    "zone_id": "zoneA"
+  }
+}
 
--- /dev/null
+*** Settings ***
+
+*** Keywords ***
+
+Is Variable Dictionary
+    [Arguments]  ${variable}
+    ${is_dict}=  Set Variable    False
+    ${status}    ${result}=    Run Keyword And Ignore Error    Should Contain    ${variable}    data
+    Run Keyword If   '${status}'
+    ...    Set Variable    ${is_dict}=    True  # It means it's a dictionary.
+    RETURN    ${is_dict}
 
 Library    Process
 Library     json
 Resource   common-library.robot
-
+Resource   opa-pdp-common.robot
 *** Variables ***
 ${OPA_PDP_HOST}    /policy/pdpo/v1/healthcheck
 ${url}    /policy/pdpo/v1/decision
+${DATA_URL}    /policy/pdpo/v1/data/
 
 *** Test Cases ***
 Healthcheck
     [Documentation]    Verify OPA PDP health check
     PdpxGetReq  ${OPA_PDP_HOST}  <Response [200]>
 
-ValidatingPolicyWithoutPolicyFilter
-   [Documentation]    Validating the policy without giving policy filter
-   ValidatePolicyResponseWithoutFilter  onap.policy.opa.pdp.decision.request.json  400  onap.policy.opa.pdp.decision.request.output.json
+ValidateDataBeforePolicyDeployment
+    ValidateGetDynamicData  ${DATA_URL}  200  onap.policy.opa.pdp.data-empty.json  data
+
+ValidatesZonePolicy
+    CreateOpaPolicy  onap.policy.opa.pdp.policy-zone-create.yaml  zoneB  1.0.3  201
+    DeployOpaPolicy  onap.policy.opa.pdp.policy-zone-deploy.json  zoneB
+    ${URL_CONTEXT}=    Set Variable    node/zoneB/zone
+    ${DYNAMIC_URL}=    Set Variable    ${DATA_URL}${URL_CONTEXT}
+    ValidateGetDynamicData  ${DYNAMIC_URL}  200  onap.policy.opa.pdp.policy-zone-output.json  data
+    ValidatePolicyResponse  onap.policy.policy.opa.pdp.decision.zone-policy-input.json  200  onap.policy.opa.pdp.decision.zone-policy-output.json
+    ValidateIncorrectPolicyNameResponse  onap.policy.opa.pdp.decision.zone-incorrect-policyname.json  400
+    ValidateIncorrectPolicyFilterResponse  onap.policy.opa.pdp.decision.zone-incorrect-policyfilter.json  200
+    UndeployOpaPolicy  /policy/pap/v1/pdps/policies/zoneB  202
+    UndeployOpaPolicy  /policy/pap/v1/pdps/policies/zoneB  400
 
-ValidatingPolicyWithPolicyFilter
-   [Documentation]    Validating the policy with policy filter
-   ValidatePolicyResponse  onap.policy.opa.pdp.decision.request_filter.json  200  onap.policy.opa.pdp.decision.filter_response.json
+ValidatesVehiclePolicy
+    CreateOpaPolicy  onap.policy.opa.pdp.policy-vehicle-create.yaml  vehicle  1.0.3  201
+    DeployOpaPolicy  onap.policy.opa.pdp.policy-vehicle-deploy.json  vehicle
+    ${URL_CONTEXT}=    Set Variable    node/vehicle
+    ${DYNAMIC_URL}=    Set Variable    ${DATA_URL}${URL_CONTEXT}
+    ValidateGetDynamicData  ${DYNAMIC_URL}  200  onap.policy.opa.pdp.policy-vehicle-output.json  data
+    ValidatePatchDynamicData  ${DYNAMIC_URL}  onap.policy.opa.pdp.dyn-data-add.json  204
+    ValidateGetDynamicData  ${DYNAMIC_URL}  200  onap.policy.opa.pdp.dyn-data-add-output.json  data
+    ValidatePatchDynamicData  ${DYNAMIC_URL}  onap.policy.opa.pdp.dyn-data-replace.json  204
+    ValidateGetDynamicData  ${DYNAMIC_URL}  200  onap.policy.opa.pdp.dyn-data-replace-output.json  data
+    ValidatePatchDynamicData  ${DYNAMIC_URL}  onap.policy.opa.pdp.dyn-data-remove.json  204
+    ValidateGetDynamicData  ${DYNAMIC_URL}  200  onap.policy.opa.pdp.policy-vehicle-output.json  data
+    ValidatePolicyResponse  onap.policy.policy.opa.pdp.decision.vehicle_input.json  200  onap.policy.policy.opa.pdp.decision.vehicle_output.json
+    ValidateIncorrectPolicyNameResponse  onap.policy.policy.opa.pdp.decision.vehicle-incorect-policyname.json  400
+    ValidateIncorrectPolicyFilterResponse  onap.policy.policy.opa.pdp.decision.vehicle-incorect-policyfilter.json  200
+    UndeployOpaPolicy  /policy/pap/v1/pdps/policies/vehicle  202
+    UndeployOpaPolicy  /policy/pap/v1/pdps/policies/vehicle  400
+    ValidateGetDynamicData  ${DYNAMIC_URL}  404  onap.policy.opa.pdp.policy-resource-not-found.json  responseCode 
+    ValidatePatchDynamicData  ${DYNAMIC_URL}  onap.policy.opa.pdp.dyn-data-remove.json  400
 
-ValidatingPolicyWithEmptyPolicyFilter
-   [Documentation]    Validating the policy with empty policy filter
-   ValidatePolicyResponse  onap.policy.opa.pdp.decision.request_filter_empty.json  200  onap.policy.opa.pdp.decision.empty_filter_response.json
+ValidatesAbacPolicy
+    CreateOpaPolicy  onap.policy.opa.pdp.policy-abac-create.yaml  abac  1.0.2  201
+    DeployOpaPolicy  onap.policy.opa.pdp.policy-abac-deploy.json  abac
+    ${URL_CONTEXT}=    Set Variable    node/abac
+    ${DYNAMIC_URL}=    Set Variable    ${DATA_URL}${URL_CONTEXT}
+    ValidateGetDynamicData  ${DYNAMIC_URL}  200  onap.policy.opa.pdp.policy-abac-output.json  data
+    ValidatePolicyResponse  onap.policy.policy.opa.pdp.decision.abac-pemit-policy.json  200  onap.policy.policy.opa.pdp.decision.abac-output.json
+    ValidateIncorrectPolicyNameResponse  onap.policy.policy.opa.pdp.decision.abac-incorrect-policyname.json  400
+    ValidateIncorrectPolicyFilterResponse  onap.policy.policy.opa.pdp.decision.abac-incorrect-policyfilter.json  200
+    CreatePolicyDeployFailure  onap.policy.opa.pdp.policy-abac-duplicate-create.yaml  406  NOT_ACCEPTABLE
+    UndeployOpaPolicy  /policy/pap/v1/pdps/policies/abac  202
+    UndeployOpaPolicy  /policy/pap/v1/pdps/policies/abac  400
 
 *** Keywords ***
 PdpxGetReq
     ${resp}=    PerformGetRequest  ${POLICY_OPA_IP}  ${url}  200  null  ${hcauth}
     Should Be Equal As Strings    ${resp}   ${status}
 
+CreateOpaPolicy
+    [Documentation]  Create a opa policy
+    [Arguments]  ${jsonfile}  ${policy_name}  ${policy_version}  ${expected_status}
+    ${postjson}=  Get file  ${CURDIR}/data/${jsonfile}
+    CreatePolicyWithYaml  /policy/api/v1/policytypes/onap.policies.native.opa/versions/1.0.0/policies  ${expected_status}  ${postjson}
+
+CreatePolicyDeployFailure
+    [Documentation]  Create a Failure opa policy
+    [Arguments]  ${jsonfile}  ${expected_status}  ${keyword}
+    ${postjson}=  Get file  ${CURDIR}/data/onap.policy.opa.pdp.policy-abac-duplicate-create.yaml
+    CreateFailurePolicyWithYaml  /policy/api/v1/policytypes/onap.policies.native.opa/versions/1.0.0/policies  ${expected_status}  ${postjson}  ${keyword}
+
+DeployOpaPolicy
+    [Documentation]   Runs Policy PAP to deploy a policy
+    [Arguments]  ${jsonfile}  ${policy_name}
+    ${postjson}=  Get file  ${CURDIR}/data/${jsonfile}
+    ${policyadmin}=  PolicyAdminAuth
+    PerformPostRequest  ${POLICY_PAP_IP}  /policy/pap/v1/pdps/policies  202  ${postjson}  null  ${policyadmin}
+    Sleep  20sec
+    ${result}=     CheckKafkaTopic    policy-notification     ${policy_name}
+    Should Contain    ${result}    deployed-policies
+
+UndeployOpaPolicy
+    [Documentation]    Runs Policy PAP to undeploy a policy
+    [Arguments]  ${url}  ${expected_status}
+    ${policyadmin}=  PolicyAdminAuth
+    PerformDeleteRequest  ${POLICY_PAP_IP}  ${url}  ${expected_status}  ${policyadmin}
+
 ValidatePolicyResponse
     [Documentation]    Validating the output for the policy
     [Arguments]  ${jsonfile}  ${status}  ${jsonfile1}
     ${expected_output}=    Get From Dictionary    ${expected_value}    output
     Dictionaries Should Be Equal    ${response_data}  ${expected_output}
 
+ValidateGetDynamicData
+    [Documentation]    Validating the output for the policy
+    [Arguments]  ${dyn_url}  ${status}  ${jsonfile1}  ${json_key_name}
+    ${expectedStatus}=    Set Variable    ${status}
+    ${expected_data}=  Get file  ${CURDIR}/data/${jsonfile1}
+    ${hcauth}=  PolicyAdminAuth
+    ${resp}=    PerformGetRequest   ${POLICY_OPA_IP}  ${dyn_url}  ${expectedStatus}  abbrev=true  ${hcauth}
+    ${response_data}=    Get From Dictionary    ${resp.json()}    ${json_key_name}
+    ${expected_value}=    Evaluate    json.loads('''${expected_data}''')    json
+    ${expected_output}=    Get From Dictionary    ${expected_value}    ${json_key_name}
+    ${is_dict}=    Is Variable Dictionary   ${response_data}
+    Run Keyword If    ${is_dict}
+    ...    Should Be Equal    ${response_data}    ${expected_output}
+    Run Keyword If    not ${is_dict}
+    ...    Should Be Equal As Strings    ${response_data}    ${expected_output}
+
+ValidatePatchDynamicData
+    [Documentation]    Validating the output for the policy
+    [Arguments]  ${dyn_url}  ${jsonfile}  ${status}
+    ${expectedStatus}=    Set Variable    ${status}
+    ${patchjson}=  Get file  ${CURDIR}/data/${jsonfile}
+    ${hcauth}=  PolicyAdminAuth
+    ${resp}=    PerformPatchRequest   ${POLICY_OPA_IP}  ${dyn_url}  ${expectedStatus}  ${patchjson}  abbrev=true  ${hcauth}
+    Should Be Equal As Integers    ${resp.status_code}    ${expectedStatus}
+
 ValidatePolicyResponseWithoutFilter
     [Documentation]    Validating the output for the policy
     [Arguments]  ${jsonfile}  ${status}  ${jsonfile1}
     ${expected_output}=    Get From Dictionary    ${expected_value}    responseCode
     Should Be Equal As Strings   ${response_data}  ${expected_output}
 
+ValidateIncorrectPolicyNameResponse
+    [Documentation]    Validating the incorrect name output for the policy
+    [Arguments]  ${jsonfile}  ${status}
+    ${expectedStatus}=    Set Variable    ${status}
+    ${postjson}=  Get file  ${CURDIR}/data/${jsonfile}
+    ${hcauth}=  PolicyAdminAuth
+    ${resp}=    PerformPostRequest   ${POLICY_OPA_IP}  ${url}  ${expectedStatus}  ${postjson}  abbrev=true  ${hcauth}
+    ${response_data}=    Get From Dictionary    ${resp.json()}    responseCode
+    Should Be Equal As Strings    ${response_data}  bad_request
 
+ValidateIncorrectPolicyFilterResponse
+    [Documentation]    Validating the incorrect filter output for the policy
+    [Arguments]  ${jsonfile}  ${status}
+    ${expectedStatus}=    Set Variable    ${status}
+    ${postjson}=  Get file  ${CURDIR}/data/${jsonfile}
+    ${hcauth}=  PolicyAdminAuth
+    ${resp}=    PerformPostRequest   ${POLICY_OPA_IP}  ${url}  ${expectedStatus}  ${postjson}  abbrev=true  ${hcauth}
+    ${response_data}=    Get From Dictionary    ${resp.json()}    output
+    Should Be Equal As Strings   ${response_data}  None
 
 # Modification Copyright 2019 © Samsung Electronics Co., Ltd.
 # Modification Copyright 2021 © AT&T Intellectual Property.
 # Modification Copyright 2021-2025 Nordix Foundation.
-# Modifications Copyright 2024 Deutsche Telekom
+# Modifications Copyright 2024-2025 Deutsche Telekom
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
     export PROJECT="opa-pdp"
     source ${DOCKER_COMPOSE_DIR}/start-compose.sh opa-pdp
     echo "Waiting 3 minutes for OPA-PDP to start..."
-    sleep 180
+    sleep 145
     check_rest_endpoint "${OPA_PDP_PORT}"
 }