diff --git a/ansible/roles/trove/handlers/main.yml b/ansible/roles/trove/handlers/main.yml
index 30a7768b07871030dcb9892f5caefbdb5581f5a8..b7d927e12e3192c3ff3a9822c8c644d27a0c4dab 100644
--- a/ansible/roles/trove/handlers/main.yml
+++ b/ansible/roles/trove/handlers/main.yml
@@ -5,6 +5,7 @@
     service: "{{ trove_services[service_name] }}"
     config_json: "{{ trove_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
     trove_conf: "{{ trove_confs.results|selectattr('item.key', 'equalto', service_name)|first }}"
+    policy_overwriting: "{{ trove_policy_overwriting.results|selectattr('item.key', 'equalto', service_name)|first }}"
     trove_api_container: "{{ check_trove_containers.results|selectattr('item.key', 'equalto', service_name)|first }}"
   become: true
   kolla_docker:
@@ -20,6 +21,7 @@
     - service.enabled | bool
     - config_json.changed | bool
       or trove_conf.changed | bool
+      or policy_overwriting.changed | bool
       or trove_api_container.changed | bool
 
 - name: Restart trove-conductor container
@@ -28,6 +30,7 @@
     service: "{{ trove_services[service_name] }}"
     config_json: "{{ trove_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
     trove_conf: "{{ trove_confs.results|selectattr('item.key', 'equalto', service_name)|first }}"
+    policy_overwriting: "{{ trove_policy_overwriting.results|selectattr('item.key', 'equalto', service_name)|first }}"
     trove_conductor_container: "{{ check_trove_containers.results|selectattr('item.key', 'equalto', service_name)|first }}"
   become: true
   kolla_docker:
@@ -43,6 +46,7 @@
     - service.enabled | bool
     - config_json.changed | bool
       or trove_conf.changed | bool
+      or policy_overwriting.changed | bool
       or trove_conductor_container.changed | bool
 
 - name: Restart trove-taskmanager container
@@ -51,6 +55,7 @@
     service: "{{ trove_services[service_name] }}"
     config_json: "{{ trove_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
     trove_conf: "{{ trove_confs.results|selectattr('item.key', 'equalto', service_name)|first }}"
+    policy_overwriting: "{{ trove_policy_overwriting.results|selectattr('item.key', 'equalto', service_name)|first }}"
     trove_taskmanager_container: "{{ check_trove_containers.results|selectattr('item.key', 'equalto', service_name)|first }}"
   become: true
   kolla_docker:
@@ -66,4 +71,5 @@
     - service.enabled | bool
     - config_json.changed | bool
       or trove_conf.changed | bool
+      or policy_overwriting.changed | bool
       or trove_taskmanager_container.changed | bool
diff --git a/ansible/roles/trove/tasks/config.yml b/ansible/roles/trove/tasks/config.yml
index 61160b6226eb2e4d4dbba89d28a6daec337d15e0..99b845b78b6b725717012d34b07a417b19d61553 100644
--- a/ansible/roles/trove/tasks/config.yml
+++ b/ansible/roles/trove/tasks/config.yml
@@ -12,6 +12,23 @@
     - item.value.enabled | bool
   with_dict: "{{ trove_services }}"
 
+- name: Check if policies shall be overwritten
+  local_action: stat path="{{ item }}"
+  run_once: True
+  register: trove_policy
+  with_first_found:
+    - files: "{{ supported_policy_format_list }}"
+      paths:
+        - "{{ node_custom_config }}/trove/"
+      skip: true
+
+- name: Set trove policy file
+  set_fact:
+    trove_policy_file: "{{ trove_policy.results.0.stat.path | basename }}"
+    trove_policy_file_path: "{{ trove_policy.results.0.stat.path }}"
+  when:
+    - trove_policy.results
+
 - name: Copying over config.json files for services
   template:
     src: "{{ item.key }}.json.j2"
@@ -71,6 +88,20 @@
   notify:
     - "Restart {{ item.key }} container"
 
+- name: Copying over existing policy file
+  template:
+    src: "{{ trove_policy_file_path }}"
+    dest: "{{ node_config_directory }}/{{ item.key }}/{{ trove_policy_file }}"
+  register: trove_policy_overwriting
+  when:
+    - trove_policy_file is defined
+    - inventory_hostname in groups[item.value.group]
+  with_dict: "{{ trove_services }}"
+  notify:
+    - Restart trove-api container
+    - Restart trove-conductor container
+    - Restart trove-taskmanager container
+
 - name: Check trove containers
   become: true
   kolla_docker:
diff --git a/ansible/roles/trove/templates/trove-api.json.j2 b/ansible/roles/trove/templates/trove-api.json.j2
index 01831afbccf3c945007acaa9a1d75b7829f06422..be2acebeae3992d9f128b249d28435e697f5f737 100644
--- a/ansible/roles/trove/templates/trove-api.json.j2
+++ b/ansible/roles/trove/templates/trove-api.json.j2
@@ -6,7 +6,13 @@
             "dest": "/etc/trove/trove.conf",
             "owner": "trove",
             "perm": "0600"
-        }
+    }{% if trove_policy_file is defined %},
+        {
+            "source": "{{ container_config_directory }}/{{ trove_policy_file }}",
+            "dest": "/etc/trove/{{ trove_policy_file }}",
+            "owner": "trove",
+            "perm": "0600"
+        }{% endif %}
     ],
     "permissions": [
         {
diff --git a/ansible/roles/trove/templates/trove-conductor.json.j2 b/ansible/roles/trove/templates/trove-conductor.json.j2
index 1d5b0601b522e5c13f426ec24360067b92d3cc1a..e6ae59c0dac83226488a2f3f3706fdde9a6da4a2 100644
--- a/ansible/roles/trove/templates/trove-conductor.json.j2
+++ b/ansible/roles/trove/templates/trove-conductor.json.j2
@@ -6,7 +6,13 @@
             "dest": "/etc/trove/trove-conductor.conf",
             "owner": "trove",
             "perm": "0600"
-        }
+    }{% if trove_policy_file is defined %},
+        {
+            "source": "{{ container_config_directory }}/{{ trove_policy_file }}",
+            "dest": "/etc/trove/{{ trove_policy_file }}",
+            "owner": "trove",
+            "perm": "0600"
+        }{% endif %}
     ],
     "permissions": [
         {
diff --git a/ansible/roles/trove/templates/trove-taskmanager.json.j2 b/ansible/roles/trove/templates/trove-taskmanager.json.j2
index 41c4321e3ed5646b9c2b82c3f35fd173e16599cc..30288ee748beb7583b7b3cad4a22535105e37637 100644
--- a/ansible/roles/trove/templates/trove-taskmanager.json.j2
+++ b/ansible/roles/trove/templates/trove-taskmanager.json.j2
@@ -6,7 +6,13 @@
             "dest": "/etc/trove/trove-taskmanager.conf",
             "owner": "trove",
             "perm": "0600"
-        }
+    }{% if trove_policy_file is defined %},
+        {
+            "source": "{{ container_config_directory }}/{{ trove_policy_file }}",
+            "dest": "/etc/trove/{{ trove_policy_file }}",
+            "owner": "trove",
+            "perm": "0600"
+        }{% endif %}
     ],
     "permissions": [
         {
diff --git a/ansible/roles/trove/templates/trove.conf.j2 b/ansible/roles/trove/templates/trove.conf.j2
index 76ad8d747d7387cb72e0826bc7932c92bc06f1c9..6dc71f38fea68b325b958dc78997bcda70b83652 100644
--- a/ansible/roles/trove/templates/trove.conf.j2
+++ b/ansible/roles/trove/templates/trove.conf.j2
@@ -56,3 +56,8 @@ trace_sqlalchemy = true
 hmac_keys = {{ osprofiler_secret }}
 connection_string = {{ osprofiler_backend_connection_string }}
 {% endif %}
+
+{% if trove_policy_file is defined %}
+[oslo_policy]
+policy_file = {{ trove_policy_file }}
+{% endif %}