diff --git a/LICENSE.txt b/LICENSE.txt
index c6c6e24..80a0d71 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,7 +1,7 @@
 /*
 * ============LICENSE_START==========================================
 * ===================================================================
-* Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
+* Copyright (c) 2017-2020 AT&T Intellectual Property. All rights reserved.
 * ===================================================================
 *
 * Unless otherwise specified, all software contained herein is licensed
diff --git a/README.md b/README.md
index 3266b2f..4427324 100644
--- a/README.md
+++ b/README.md
@@ -143,9 +143,9 @@
 }
 ```
 
-#### point the discovarable config of the policy-handler to point to the **new PDP API**
+#### the discovarable config of the policy-handler to point to the **new PDP API**
 
-In short: keep the consul-kv record for he policy-handler as before R4 Dublin.
+In short: keep the consul-kv record for the policy-handler as before R4 Dublin.
 
 Here is a sample config from consul-kv.  Please replace the {{ ... }} with real setup values
 
@@ -201,6 +201,19 @@
       "tls_ca_mode": "cert_directory",
       "timeout_in_secs": 60
     },
+    "dmaap_mr" : {
+        "url" : "http://{{ YOUR_DMAAP_MR_URL }}/events/{{ POLICY_UPDATE_TOPICNAME }}/{{ POLICY_UPDATE_CONSUMEGROUP }}/{{ POLICY_UPDATE_CONSUMERID }}",
+        "query": {
+          "timeout": 15000
+        },
+        "headers" : {
+            "Content-Type" : "application/json",
+            "Authorization": "Basic {{ YOUR_DMAAP_MR_SUBSCRIBER_AUTHORIZATION }}"
+        },
+        "target_entity" : "dmaap_mr",
+        "tls_ca_mode" : "cert_directory",
+        "timeout_in_secs": 60
+    },
     "deploy_handler": {
       "target_entity": "deployment_handler",
       "url": "http://deployment_handler:8188",
@@ -272,9 +285,16 @@
         Accept : "application/json"
         "Content-Type" : "application/json"
         ClientAuth : "Basic {{ YOUR_POLICY_ENGINE_CLIENT_AUTH }}"
+
+        # to override the Authorization value,
+        #    set the environment vars $PDP_USER and $PDP_PWD in policy-handler
         Authorization : "Basic {{ YOUR_POLICY_ENGINE_AUTHORIZATION }}"
+
         Environment : "{{ YOUR_POLICY_ENGINE_ENVIRONMENT }}"
+
+      # target_entity name that is used for logging
       target_entity : "policy_engine"
+
       # optional tls_ca_mode specifies where to find the cacert.pem for tls
       #   can be one of these:
       #       "cert_directory" - use the cacert.pem stored locally in cert_directory.
@@ -288,6 +308,43 @@
       # optional timeout_in_secs specifies the timeout for the http requests
       timeout_in_secs: 60
 
+
+    # DMaaP MR subscriber config
+    # These are the url of and the auth for the external system, namely the policy-engine (PDP).
+    # We obtain that info manually from PDP and DMaaP folks at the moment.
+    dmaap_mr :
+      url: "http://{{ YOUR_DMAAP_MR_URL }}/events/{{ POLICY_UPDATE_TOPICNAME }}/{{ POLICY_UPDATE_CONSUMEGROUP }}/{{ POLICY_UPDATE_CONSUMERID }}"
+
+      query:
+        # The number of milliseconds for DMaaP MR to wait for messages if none are immediately available.
+        # This should normally be used, and set at 15000 or higher.
+        # This is referred to as long-polling timeout
+        # ?timeout=15000 passed to DMaaP MR in the query
+        timeout: 15000
+
+      headers:
+        "Content-Type": "application/json"
+        # provide Authorization for the subscriber if using https and user-password authentication
+        # to override the Authorization value,
+        #    set the environment vars $DMAAP_MR_USER and $DMAAP_MR_PWD in policy-handler
+        Authorization: "Basic {{ YOUR_DMAAP_MR_SUBSCRIBER_AUTHORIZATION }}"
+
+      # target_entity name that is used for logging
+      target_entity: "dmaap_mr"
+      # optional tls_ca_mode specifies where to find the cacert.pem for tls
+      #   can be one of these:
+      #       "cert_directory" - use the cacert.pem stored locally in cert_directory.
+      #                          this is the default if cacert.pem file is found
+      #
+      #       "os_ca_bundle"     - use the public ca_bundle provided by linux system.
+      #                          this is the default if cacert.pem file not found
+      #
+      #       "do_not_verify"  - special hack to turn off the verification by cacert and hostname
+      tls_ca_mode: "cert_directory"
+      # optional timeout_in_secs specifies the timeout for the http requests
+      timeout_in_secs: 60
+
+
     # deploy_handler config
     #    changed from string "deployment_handler" in 2.3.1 to structure in 2.4.0
     deploy_handler :
diff --git a/README_pdp_api_v0.md b/README_pdp_api_v0.md
index 9fd822a..a909ca9 100644
--- a/README_pdp_api_v0.md
+++ b/README_pdp_api_v0.md
@@ -182,6 +182,8 @@
         Accept : "application/json"
         "Content-Type" : "application/json"
         ClientAuth : "Basic {{ YOUR_POLICY_ENGINE_CLIENT_AUTH }}"
+        # to override the Authorization value,
+        #    set the environment vars $PDP_USER and $PDP_PWD in policy-handler
         Authorization : "Basic {{ YOUR_POLICY_ENGINE_AUTHORIZATION }}"
         Environment : "{{ YOUR_POLICY_ENGINE_ENVIRONMENT }}"
       target_entity : "policy_engine"
diff --git a/policyhandler/config.py b/policyhandler/config.py
index f8c425a..25ae3a5 100644
--- a/policyhandler/config.py
+++ b/policyhandler/config.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2017-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,6 +17,7 @@
 
 """read and use the config"""
 
+import base64
 import copy
 import json
 import logging
@@ -137,6 +138,7 @@
     FIELD_WSERVICE_PORT = "wservice_port"
     FIELD_TLS = "tls"
     FIELD_POLICY_ENGINE = "policy_engine"
+    DMAAP_MR = "dmaap_mr"
     POOL_CONNECTIONS = "pool_connections"
     DEPLOY_HANDLER = "deploy_handler"
     THREAD_POOL_SIZE = "thread_pool_size"
@@ -155,6 +157,11 @@
     SERVICE_ACTIVATOR = "service_activator"
     MODE_OF_OPERATION = "mode_of_operation"
     PDP_API_VERSION = "PDP_API_VERSION"
+    QUERY_TIMEOUT = "timeout"
+    PDP_USER = "PDP_USER"
+    PDP_PWD = "PDP_PWD"
+    DMAAP_MR_USER = "DMAAP_MR_USER"
+    DMAAP_MR_PWD = "DMAAP_MR_PWD"
 
     system_name = SERVICE_NAME_POLICY_HANDLER
     wservice_port = 25577
@@ -165,6 +172,8 @@
     tls_server_cert_file = None
     tls_private_key_file = None
     tls_server_ca_chain_file = None
+    _pdp_authorization = None
+    _dmaap_mr_authorization = None
 
     _local_config = Settings()
     discovered_config = Settings()
@@ -254,6 +263,18 @@
         Config._pdp_api_version = os.environ.get(
             Config.PDP_API_VERSION, loaded_config.get(Config.PDP_API_VERSION.lower()))
 
+        pdp_user = os.environ.get(Config.PDP_USER)
+        pdp_pwd = os.environ.get(Config.PDP_PWD)
+        if pdp_user and pdp_pwd:
+            Config._pdp_authorization = "Basic {}".format(base64.b64encode(
+                ("{}:{}".format(pdp_user, pdp_pwd)).encode()).decode("utf-8"))
+
+        dmaap_mr_user = os.environ.get(Config.DMAAP_MR_USER)
+        dmaap_mr_pwd = os.environ.get(Config.DMAAP_MR_PWD)
+        if dmaap_mr_user and dmaap_mr_pwd:
+            Config._dmaap_mr_authorization = "Basic {}".format(base64.b64encode(
+                ("{}:{}".format(dmaap_mr_user, dmaap_mr_pwd)).encode()).decode("utf-8"))
+
         local_config = loaded_config.get(Config.SERVICE_NAME_POLICY_HANDLER, {})
         Config.system_name = local_config.get(Config.FIELD_SYSTEM, Config.system_name)
 
@@ -262,6 +283,26 @@
         Config._local_config.set_config(local_config, auto_commit=True)
 
     @staticmethod
+    def _overwrite_discovered_config(audit, discovered_config):
+        """replace the secrets in discovered_config with data from environment"""
+        changes = []
+        if Config._pdp_authorization:
+            pdp_cfg = discovered_config.get("policy_engine", {})
+            if pdp_cfg.get("url", "").lower().startswith("https:"):
+                pdp_cfg.get("headers", {})["Authorization"] = Config._pdp_authorization
+                changes.append("pdp_authorization")
+
+        if Config._dmaap_mr_authorization:
+            dmaap_mr_cfg = discovered_config.get("dmaap_mr", {})
+            if dmaap_mr_cfg.get("url", "").lower().startswith("https:"):
+                dmaap_mr_cfg.get("headers", {})["Authorization"] = Config._dmaap_mr_authorization
+                changes.append("dmaap_mr_authorization")
+
+        if changes:
+            _LOGGER.info(audit.info("overwritten discovered config: {}".format(", ".join(changes))))
+
+
+    @staticmethod
     def discover(audit):
         """bring the config settings from the discovery service"""
         discovery_key = Config.system_name
@@ -269,14 +310,17 @@
         new_config = DiscoveryClient.get_value(audit, discovery_key)
 
         if not new_config or not isinstance(new_config, dict):
-            _LOGGER.warning("unexpected config from discovery: %s", new_config)
+            _LOGGER.warning(audit.warn("unexpected config from discovery: {}".format(new_config)))
             return
 
-        _LOGGER.debug("loaded config from discovery(%s): %s",
-                      discovery_key, Audit.json_dumps(new_config))
+        _LOGGER.debug(audit.debug("loaded config from discovery({}): {}".format(
+            discovery_key, Audit.json_dumps(new_config))))
+        discovered_config = new_config.get(Config.SERVICE_NAME_POLICY_HANDLER)
 
-        Config.discovered_config.set_config(new_config.get(Config.SERVICE_NAME_POLICY_HANDLER))
-        _LOGGER.info("config from discovery: %s", Config.discovered_config)
+        Config._overwrite_discovered_config(audit, discovered_config)
+
+        Config.discovered_config.set_config(discovered_config)
+        _LOGGER.info(audit.info("config from discovery: {}".format(Config.discovered_config)))
 
 
     @staticmethod
diff --git a/policyhandler/deploy_handler.py b/policyhandler/deploy_handler.py
index a127e54..997ec3e 100644
--- a/policyhandler/deploy_handler.py
+++ b/policyhandler/deploy_handler.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2017-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -25,8 +25,7 @@
 
 from .config import Config, Settings
 from .discovery import DiscoveryClient
-from .onap.audit import (REQUEST_X_ECOMP_REQUESTID, AuditHttpCode,
-                         AuditResponseCode, Metrics)
+from .onap.audit import AuditHttpCode, AuditResponseCode, Metrics
 from .policy_consts import (CATCH_UP, LATEST_POLICIES, POLICIES,
                             POLICY_FILTER_MATCHES, POLICY_FILTERS,
                             REMOVED_POLICIES, TARGET_ENTITY)
@@ -172,10 +171,10 @@
         changed, pool_size = DeployHandler._settings.get_by_key(Config.POOL_CONNECTIONS, 10)
         if changed:
             DeployHandler._requests_session.mount(
-                'https://', requests.adapters.HTTPAdapter(pool_connections=pool_size,
+                'https://', requests.adapters.HTTPAdapter(pool_connections=1,
                                                           pool_maxsize=pool_size))
             DeployHandler._requests_session.mount(
-                'http://', requests.adapters.HTTPAdapter(pool_connections=pool_size,
+                'http://', requests.adapters.HTTPAdapter(pool_connections=1,
                                                          pool_maxsize=pool_size))
 
         _, config_dh = DeployHandler._settings.get_by_key(Config.DEPLOY_HANDLER)
@@ -301,7 +300,8 @@
 
         metrics = Metrics(aud_parent=audit, targetEntity="{} policy_update".format(target_entity),
                           targetServiceName=url)
-        headers = {REQUEST_X_ECOMP_REQUESTID : metrics.request_id}
+
+        headers = metrics.put_request_id_into_headers()
 
         log_action = "put to {} at {}".format(target_entity, url)
         log_data = "msg={} headers={}, params={}, timeout_in_secs={}, custom_kwargs({})".format(
@@ -330,7 +330,7 @@
                           else AuditHttpCode.SERVER_INTERNAL_ERROR.value)
             error_msg = "failed to {} {}: {} {}".format(
                 log_action, type(ex).__name__, str(ex), log_data)
-            _LOGGER.exception(error_msg)
+            _LOGGER.exception(metrics.fatal(error_msg))
             metrics.set_http_status_code(error_code)
             audit.set_http_status_code(error_code)
             metrics.metrics(error_msg)
@@ -371,7 +371,7 @@
         metrics = Metrics(aud_parent=audit,
                           targetEntity="{} get_deployed_policies".format(target_entity),
                           targetServiceName=url)
-        headers = {REQUEST_X_ECOMP_REQUESTID : metrics.request_id}
+        headers = metrics.put_request_id_into_headers()
 
         log_action = "get from {} at {}".format(target_entity, url)
         log_data = "headers={}, params={}, timeout_in_secs={}, custom_kwargs({})".format(
@@ -387,7 +387,7 @@
             metrics.set_http_status_code(AuditHttpCode.SERVICE_UNAVAILABLE_ERROR.value)
             audit.set_http_status_code(AuditHttpCode.SERVICE_UNAVAILABLE_ERROR.value)
             metrics.metrics(error_msg)
-            return None, None
+            return {"error": "failed to retrieve policies from deployment-handler"}, None, None
 
         res = None
         try:
@@ -399,11 +399,11 @@
                           else AuditHttpCode.SERVER_INTERNAL_ERROR.value)
             error_msg = "failed to {} {}: {} {}".format(
                 log_action, type(ex).__name__, str(ex), log_data)
-            _LOGGER.exception(error_msg)
+            _LOGGER.exception(metrics.fatal(error_msg))
             metrics.set_http_status_code(error_code)
             audit.set_http_status_code(error_code)
             metrics.metrics(error_msg)
-            return None, None
+            return {"error": "failed to retrieve policies from deployment-handler"}, None, None
 
         metrics.set_http_status_code(res.status_code)
         audit.set_http_status_code(res.status_code)
@@ -414,7 +414,7 @@
 
         if res.status_code != requests.codes.ok:
             _LOGGER.error(log_line)
-            return None, None
+            return {"error": "failed to retrieve policies from deployment-handler"}, None, None
 
         result = res.json() or {}
         DeployHandler._server_instance_changed(result, metrics)
@@ -426,10 +426,10 @@
             _LOGGER.warning(audit.warn(
                 "found no deployed policies or policy-filters: {}".format(log_line),
                 error_code=AuditResponseCode.DATA_ERROR))
-            return policies, policy_filters
+            return {"warning": "got no deployed policies"}, None, None
 
         _LOGGER.info(log_line)
-        return policies, policy_filters
+        return None, policies, policy_filters
 
     @staticmethod
     def _server_instance_changed(result, metrics):
diff --git a/policyhandler/discovery.py b/policyhandler/discovery.py
index 83f54ac..b6b6bbd 100644
--- a/policyhandler/discovery.py
+++ b/policyhandler/discovery.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2017-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -85,7 +85,7 @@
                           else AuditHttpCode.SERVER_INTERNAL_ERROR.value)
             error_msg = ("failed {}/{} to {} {}: {}".format(status_code, error_code, log_line,
                                                             type(ex).__name__, str(ex)))
-            _LOGGER.exception(error_msg)
+            _LOGGER.exception(metrics.fatal(error_msg))
             metrics.set_http_status_code(error_code)
             audit.set_http_status_code(error_code)
             metrics.metrics(error_msg)
@@ -136,7 +136,7 @@
                           else AuditHttpCode.SERVER_INTERNAL_ERROR.value)
             error_msg = ("failed {}/{} to {} {}: {}".format(status_code, error_code, log_line,
                                                             type(ex).__name__, str(ex)))
-            _LOGGER.exception(error_msg)
+            _LOGGER.exception(metrics.fatal(error_msg))
             metrics.set_http_status_code(error_code)
             audit.set_http_status_code(error_code)
             metrics.metrics(error_msg)
diff --git a/policyhandler/onap/audit.py b/policyhandler/onap/audit.py
index 3c09c16..269dfd8 100644
--- a/policyhandler/onap/audit.py
+++ b/policyhandler/onap/audit.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2017-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -25,6 +25,7 @@
 """
 
 import copy
+import hashlib
 import json
 import os
 import re
@@ -41,6 +42,7 @@
 from .process_info import ProcessInfo
 
 REQUEST_X_ECOMP_REQUESTID = "X-ECOMP-RequestID"
+REQUEST_X_ONAP_REQUESTID = "X-ONAP-RequestID"
 REQUEST_REMOTE_ADDR = "Remote-Addr"
 REQUEST_HOST = "Host"
 HOSTNAME = "HOSTNAME"
@@ -118,7 +120,7 @@
 class _Audit(object):
     """put the audit object on stack per each initiating request in the system
 
-    :request_id: is the X-ECOMP-RequestID for tracing
+    :request_id: is the X-ONAP-RequestID or X-ECOMP-RequestID for tracing
 
     :req_message: is the request message string for logging
 
@@ -172,7 +174,7 @@
         """create audit object per each request in the system
 
         :job_name: is the name of the audit job for health stats
-        :request_id: is the X-ECOMP-RequestID for tracing
+        :request_id: is the X-ONAP-RequestID or X-ECOMP-RequestID for tracing
         :req_message: is the request message string for logging
         :kwargs: - put any request related params into kwargs
         """
@@ -184,6 +186,12 @@
         self.max_http_status_code = 0
         self._lock = threading.Lock()
 
+    def put_request_id_into_headers(self, headers=None):
+        """when sending message out - put the request_id into headers"""
+        headers = headers or {}
+        headers[REQUEST_X_ONAP_REQUESTID]  = self.request_id
+        headers[REQUEST_X_ECOMP_REQUESTID] = self.request_id
+        return headers
 
     @staticmethod
     def register_item_health(health_name, health_getter=None):
@@ -241,6 +249,8 @@
 
     def set_http_status_code(self, http_status_code):
         """accumulate the highest(worst) http status code"""
+        if http_status_code is None:
+            http_status_code = AuditHttpCode.SERVER_INTERNAL_ERROR.value
         with self._lock:
             if self.max_http_status_code < AuditHttpCode.SERVER_INTERNAL_ERROR.value:
                 self.max_http_status_code = max(http_status_code, self.max_http_status_code)
@@ -308,9 +318,7 @@
         """debug+error - the warn level of logging"""
         all_kwargs = self.merge_all_kwargs(**kwargs)
 
-        if error_code and isinstance(error_code, AuditResponseCode):
-            all_kwargs[ERROR_CODE] = error_code.value
-            all_kwargs[ERROR_DESCRIPTION] = AuditResponseCode.get_human_text(error_code)
+        self._set_error_code_in_kwargs(error_code, all_kwargs)
 
         _Audit._logger_debug.warn(log_line, **all_kwargs)
         _Audit._logger_error.warn(log_line, **all_kwargs)
@@ -320,9 +328,7 @@
         """debug+error - the error level of logging"""
         all_kwargs = self.merge_all_kwargs(**kwargs)
 
-        if error_code and isinstance(error_code, AuditResponseCode):
-            all_kwargs[ERROR_CODE] = error_code.value
-            all_kwargs[ERROR_DESCRIPTION] = AuditResponseCode.get_human_text(error_code)
+        self._set_error_code_in_kwargs(error_code, all_kwargs)
 
         _Audit._logger_debug.error(log_line, **all_kwargs)
         _Audit._logger_error.error(log_line, **all_kwargs)
@@ -332,25 +338,32 @@
         """debug+error - the fatal level of logging"""
         all_kwargs = self.merge_all_kwargs(**kwargs)
 
-        if error_code and isinstance(error_code, AuditResponseCode):
-            all_kwargs[ERROR_CODE] = error_code.value
-            all_kwargs[ERROR_DESCRIPTION] = AuditResponseCode.get_human_text(error_code)
+        self._set_error_code_in_kwargs(error_code, all_kwargs)
 
         _Audit._logger_debug.fatal(log_line, **all_kwargs)
         _Audit._logger_error.fatal(log_line, **all_kwargs)
         return log_line
 
+    def _set_error_code_in_kwargs(self, error_code, all_kwargs):
+        """set the error code and description in kwargs for logging"""
+        if not error_code or not isinstance(error_code, AuditResponseCode):
+            error_code = AuditResponseCode.UNKNOWN_ERROR
+        all_kwargs[ERROR_CODE] = error_code.value
+        all_kwargs[ERROR_DESCRIPTION] = AuditResponseCode.get_human_text(error_code)
+
     @staticmethod
     def hide_secrets(obj):
         """hides the known secret field values of the dictionary"""
         if not isinstance(obj, dict):
             return obj
 
-        for key in obj:
+        for key, val in obj.items():
             if key.lower() in [HEADER_CLIENTAUTH, HEADER_AUTHORIZATION]:
-                obj[key] = "*"
-            elif isinstance(obj[key], dict):
-                obj[key] = _Audit.hide_secrets(obj[key])
+                hval = hashlib.sha256()
+                hval.update(val.encode())
+                obj[key] = "***({})***".format(hval.hexdigest())
+            elif isinstance(val, dict):
+                obj[key] = _Audit.hide_secrets(val)
 
         return obj
 
@@ -375,7 +388,7 @@
         """create audit object per each request in the system
 
         :job_name: is the name of the audit job for health stats
-        :request_id: is the X-ECOMP-RequestID for tracing
+        :request_id: is the X-ONAP-RequestID or X-ECOMP-RequestID for tracing
         :req_message: is the request message string for logging
         :aud_parent: is the parent Audit - used for sub-query metrics to other systems
         :kwargs: - put any request related params into kwargs
@@ -388,7 +401,9 @@
         headers = self.kwargs.get("headers", {})
         if headers:
             if not self.request_id:
-                self.request_id = headers.get(REQUEST_X_ECOMP_REQUESTID)
+                self.request_id = headers.get(REQUEST_X_ONAP_REQUESTID,
+                                              headers.get(REQUEST_X_ECOMP_REQUESTID))
+
             self.kwargs.setdefault(AUDIT_IPADDRESS, headers.get(REQUEST_REMOTE_ADDR))
             self.kwargs.setdefault(AUDIT_SERVER, headers.get(REQUEST_HOST))
 
diff --git a/policyhandler/pdp_api/dmaap_mr.py b/policyhandler/pdp_api/dmaap_mr.py
new file mode 100644
index 0000000..2d4d468
--- /dev/null
+++ b/policyhandler/pdp_api/dmaap_mr.py
@@ -0,0 +1,202 @@
+# ================================================================================
+# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+#
+
+"""policy-client communicates with policy-engine thru REST API"""
+
+import copy
+import json
+from threading import Lock
+
+import requests
+
+from ..config import Config, Settings
+from ..onap.audit import AuditHttpCode, AuditResponseCode, Metrics
+from ..utils import Utils
+
+_LOGGER = Utils.get_logger(__file__)
+
+class DmaapMr(object):
+    """using the http API to policy-engine"""
+    _lazy_inited = False
+    DEFAULT_TIMEOUT_IN_SECS = 60
+
+    _lock = Lock()
+    _settings = Settings(Config.DMAAP_MR)
+
+    _requests_session = None
+    _long_polling = False
+    _target_entity = None
+    _url = None
+    _query = {}
+    _headers = None
+    _custom_kwargs = {}
+    _timeout_in_secs = DEFAULT_TIMEOUT_IN_SECS
+
+    @staticmethod
+    def _init(audit):
+        """init static config"""
+        DmaapMr._custom_kwargs = {}
+        tls_ca_mode = None
+
+        if not DmaapMr._requests_session:
+            DmaapMr._requests_session = requests.Session()
+            DmaapMr._requests_session.mount(
+                'https://', requests.adapters.HTTPAdapter(pool_connections=1, pool_maxsize=1,
+                                                          pool_block=True))
+            DmaapMr._requests_session.mount(
+                'http://', requests.adapters.HTTPAdapter(pool_connections=1, pool_maxsize=1,
+                                                         pool_block=True))
+
+
+        _, config = DmaapMr._settings.get_by_key(Config.DMAAP_MR)
+        if config:
+            DmaapMr._url = config.get("url")
+            DmaapMr._headers = config.get("headers", {})
+            DmaapMr._query = copy.deepcopy(config.get("query", {}))
+            if DmaapMr._query.get(Config.QUERY_TIMEOUT, 0) < 1000:
+                DmaapMr._query[Config.QUERY_TIMEOUT] = 15000
+
+            DmaapMr._target_entity = config.get("target_entity", Config.DMAAP_MR)
+
+            tls_ca_mode = config.get(Config.TLS_CA_MODE)
+            DmaapMr._custom_kwargs = Config.get_requests_kwargs(tls_ca_mode)
+            DmaapMr._timeout_in_secs = config.get(Config.TIMEOUT_IN_SECS)
+            if not DmaapMr._timeout_in_secs or DmaapMr._timeout_in_secs < 1:
+                DmaapMr._timeout_in_secs = DmaapMr.DEFAULT_TIMEOUT_IN_SECS
+
+        _LOGGER.info(
+            audit.info(("config DMaaP MR({}) url({}) query({}) headers({}) "
+                        "tls_ca_mode({}) custom_kwargs({}) timeout_in_secs({}): {}").format(
+                            DmaapMr._target_entity, DmaapMr._url,
+                            Metrics.json_dumps(DmaapMr._query),
+                            Metrics.json_dumps(DmaapMr._headers), tls_ca_mode,
+                            json.dumps(DmaapMr._custom_kwargs), DmaapMr._timeout_in_secs,
+                            DmaapMr._settings)))
+
+        DmaapMr._settings.commit_change()
+        DmaapMr._lazy_inited = True
+
+    @staticmethod
+    def reconfigure(audit):
+        """reconfigure"""
+        with DmaapMr._lock:
+            DmaapMr._settings.set_config(Config.discovered_config)
+            if not DmaapMr._settings.is_changed():
+                DmaapMr._settings.commit_change()
+                return False
+
+            DmaapMr._lazy_inited = False
+            DmaapMr._long_polling = False
+            DmaapMr._init(audit)
+        return True
+
+    @staticmethod
+    def _lazy_init(audit):
+        """init static config"""
+        if DmaapMr._lazy_inited:
+            return
+
+        with DmaapMr._lock:
+            if DmaapMr._lazy_inited:
+                return
+
+            DmaapMr._settings.set_config(Config.discovered_config)
+            DmaapMr._long_polling = False
+            DmaapMr._init(audit)
+
+    @staticmethod
+    def get_policy_updates(audit):
+        """
+        get from DMaaP MR - returns json list of stringified messages
+
+        example [
+            "{\"deployed-policies\":[
+                {\"policy-type\":\"onap.policies.monitoring.cdap.tca.hi.lo.app\",
+                 \"policy-type-version\":\"1.0.0\",
+                 \"policy-id\":\"onap.scaleout.tca\",
+                 \"policy-version\":\"2.2.2\",
+                 \"success-count\":3,
+                 \"failure-count\":0
+            }],
+             \"undeployed-policies\":[
+                {\"policy-type\":\"onap.policies.monitoring.cdap.tca.hi.lo.app\",
+                 \"policy-type-version\":\"1.0.0\",
+                 \"policy-id\":\"onap.scaleout.tca\",
+                 \"policy-version\":\"1.0.0\",
+                 \"success-count\":3,
+                 \"failure-count\":0
+            }]}"
+        ]
+        """
+        DmaapMr._lazy_init(audit)
+
+        if not DmaapMr._url:
+            _LOGGER.error(
+                audit.error("no url for DMaaP MR", error_code=AuditResponseCode.AVAILABILITY_ERROR))
+            audit.set_http_status_code(AuditHttpCode.SERVER_INTERNAL_ERROR.value)
+            return None
+
+        with DmaapMr._lock:
+            target_entity = DmaapMr._target_entity
+            url = DmaapMr._url
+            params = copy.deepcopy(DmaapMr._query) if DmaapMr._long_polling else None
+            headers = copy.deepcopy(DmaapMr._headers)
+            timeout_in_secs = DmaapMr._timeout_in_secs
+            custom_kwargs = copy.deepcopy(DmaapMr._custom_kwargs)
+            DmaapMr._long_polling = True
+
+        metrics = Metrics(aud_parent=audit, targetEntity=target_entity, targetServiceName=url)
+
+        headers = metrics.put_request_id_into_headers(headers)
+
+        log_line = (
+            "get from {} at {} with params={}, headers={}, custom_kwargs({}) timeout_in_secs({})"
+            .format(target_entity, url, json.dumps(params), Metrics.json_dumps(headers),
+                    json.dumps(custom_kwargs), timeout_in_secs))
+
+        _LOGGER.info(metrics.metrics_start(log_line))
+
+        res = None
+        try:
+            res = DmaapMr._requests_session.get(url, params=params, headers=headers,
+                                                timeout=timeout_in_secs, **custom_kwargs)
+
+        except Exception as ex:
+            error_code = (AuditHttpCode.SERVICE_UNAVAILABLE_ERROR.value
+                          if isinstance(ex, requests.exceptions.RequestException)
+                          else AuditHttpCode.SERVER_INTERNAL_ERROR.value)
+            error_msg = ("failed {}: {} to {}".format(type(ex).__name__, str(ex), log_line))
+
+            _LOGGER.exception(metrics.fatal(error_msg))
+            metrics.set_http_status_code(error_code)
+            audit.set_http_status_code(error_code)
+            metrics.metrics(error_msg)
+            return None
+
+        log_line = "response {} from {}: text={} headers={}".format(
+            res.status_code, log_line, res.text, Metrics.json_dumps(dict(res.headers.items())))
+        _LOGGER.info(log_line)
+
+        metrics.set_http_status_code(res.status_code)
+        audit.set_http_status_code(res.status_code)
+        metrics.metrics(log_line)
+
+        policy_updates = None
+        if res.status_code == requests.codes.ok:
+            policy_updates = res.json()
+
+        return policy_updates
diff --git a/policyhandler/pdp_api/pdp_consts.py b/policyhandler/pdp_api/pdp_consts.py
index 2337456..32f80f3 100644
--- a/policyhandler/pdp_api/pdp_consts.py
+++ b/policyhandler/pdp_api/pdp_consts.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2019-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -33,3 +33,7 @@
 PDP_REQ_ONAP_COMPONENT = "ONAPComponent"
 PDP_REQ_ONAP_INSTANCE = "ONAPInstance"
 PDP_REQ_RESOURCE = "resource"
+
+# fields from policy-update notification
+DEPLOYED_POLICIES = "deployed-policies"
+UNDEPLOYED_POLICIES = "undeployed-policies"
diff --git a/policyhandler/pdp_api/policy_listener.py b/policyhandler/pdp_api/policy_listener.py
index 9fa4695..0d33785 100644
--- a/policyhandler/pdp_api/policy_listener.py
+++ b/policyhandler/pdp_api/policy_listener.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2019-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,39 +17,173 @@
 
 """
 policy-listener communicates with policy-engine
-to receive push notifications
+to receive push notifications through DMaaP MR
 on updates and removal of policies.
 
-on receiving the policy-notifications, the policy-receiver
+on receiving the policy-notifications, the policy-listener
 passes the notifications to policy-updater
 """
 
+import json
 import os
+from threading import Event, Lock, Thread
 
-from ..utils import ToBeImplementedException, Utils
+from ..onap.audit import Audit, AuditResponseCode
+from ..utils import Utils
+from .dmaap_mr import DmaapMr
+from .pdp_consts import (DEPLOYED_POLICIES, PDP_METADATA, PDP_POLICY_ID,
+                         PDP_POLICY_VERSION, UNDEPLOYED_POLICIES)
 
 _LOGGER = Utils.get_logger(__file__)
 
-class PolicyListener(object):
-    """listener to PolicyEngine"""
+class PolicyListener(Thread):
+    """listener to DMaaP MR"""
     PDP_API_FOLDER = os.path.basename(os.path.dirname(os.path.realpath(__file__)))
+    SLEEP_BEFORE_RESTARTING = 30
 
-    def __init__(self, *_):
+    def __init__(self, audit, policy_updater):
         """listener to receive the policy notifications from PolicyEngine"""
-        _LOGGER.info("to_be_implemented")
-        raise ToBeImplementedException()
+        Thread.__init__(self, name="policy_listener", daemon=True)
 
-    def reconfigure(self, _):
-        """configure and reconfigure the listener"""
-        _LOGGER.info("to_be_implemented")
-        raise ToBeImplementedException()
+        self._policy_updater = policy_updater
+        self._lock = Lock()
+        self._run_event = Event()
+        self._keep_running = True
+        self._first_loop = True
+
+        self._dmaap_mr = None
+        self.reconfigure(audit)
+
+    def reconfigure(self, audit):
+        """configure and reconfigure the DMaaP MR"""
+        reconfigured = DmaapMr.reconfigure(audit)
+        if reconfigured and not self._first_loop:
+            with self._lock:
+                self._first_loop = True
+        return reconfigured
 
     def run(self):
-        """listen on web-socket and pass the policy notifications to policy-updater"""
-        _LOGGER.info("to_be_implemented")
-        raise ToBeImplementedException()
+        """listen on DMaaP MR and pass the policy notifications to policy-updater"""
+        _LOGGER.info("starting policy_listener...")
+        delayed_restarting = False
+        while True:
+            if not self._get_keep_running():
+                break
 
-    def shutdown(self, _):
-        """Shutdown the policy-listener"""
-        _LOGGER.info("to_be_implemented")
-        raise ToBeImplementedException()
+            if delayed_restarting:
+                _LOGGER.info(
+                    "going to sleep for %s secs before restarting policy-notifications",
+                    PolicyListener.SLEEP_BEFORE_RESTARTING)
+
+                self._run_event.clear()
+                self._run_event.wait(PolicyListener.SLEEP_BEFORE_RESTARTING)
+                if not self._get_keep_running():
+                    break
+
+            audit = Audit(job_name="policy_update",
+                          req_message="waiting for policy-notifications...",
+                          retry_get_config=True)
+
+            policy_updates = DmaapMr.get_policy_updates(audit)
+
+            if not self._get_keep_running():
+                audit.audit_done(result="exiting policy_listener")
+                break
+
+            delayed_restarting = not audit.is_success()
+            if self._first_loop:
+                policy_updater = None
+                with self._lock:
+                    if self._first_loop:
+                        self._first_loop = False
+                        policy_updater = self._policy_updater
+                if policy_updater is not None:
+                    audit.req_message = "first catch_up"
+                    _LOGGER.info(audit.info("first catch_up - ignoring policy-updates: {}"
+                                            .format(json.dumps(policy_updates))))
+                    policy_updater.catch_up(audit)
+            elif not policy_updates:
+                _LOGGER.info(audit.info(
+                    "no policy-updates: {}".format(json.dumps(policy_updates))))
+                audit.audit_done(result="no policy-updates")
+            else:
+                self._on_policy_update_message(audit, policy_updates)
+
+        _LOGGER.info("exit policy_listener")
+
+    def _get_keep_running(self):
+        """thread-safe check whether to continue running"""
+        with self._lock:
+            keep_running = self._keep_running
+        return keep_running
+
+    def _on_policy_update_message(self, audit, policy_updates):
+        """received the notification from PDP"""
+        try:
+            _LOGGER.info("Received notification message: %s", json.dumps(policy_updates))
+            if not policy_updates:
+                return
+
+            policies_updated = []
+
+            for idx, pdp_update_msg in enumerate(policy_updates):
+                pdp_update_msg = Utils.safe_json_parse(pdp_update_msg)
+
+                if not pdp_update_msg or not isinstance(pdp_update_msg, dict):
+                    _LOGGER.warning(audit.warn(
+                        "unexpected message from PDP: {}".format(json.dumps(pdp_update_msg)),
+                        error_code=AuditResponseCode.DATA_ERROR))
+                    continue
+
+                _LOGGER.debug("raw policy_update[%s]: %s", idx, json.dumps(pdp_update_msg))
+
+                deployed_policies = [
+                    {PDP_METADATA: {PDP_POLICY_ID: p_deployed.get(PDP_POLICY_ID),
+                                    PDP_POLICY_VERSION: p_deployed.get(PDP_POLICY_VERSION)}}
+                    for p_deployed in pdp_update_msg.get(DEPLOYED_POLICIES, [])
+                    if (p_deployed.get(PDP_POLICY_ID) is not None
+                        and p_deployed.get(PDP_POLICY_VERSION) is not None)]
+
+                undeployed_policies = [
+                    {PDP_METADATA: {PDP_POLICY_ID: p_undeployed.get(PDP_POLICY_ID),
+                                    PDP_POLICY_VERSION: p_undeployed.get(PDP_POLICY_VERSION)}}
+                    for p_undeployed in pdp_update_msg.get(UNDEPLOYED_POLICIES, [])
+                    if (p_undeployed.get(PDP_POLICY_ID) is not None
+                        and p_undeployed.get(PDP_POLICY_VERSION) is not None)]
+
+                if not deployed_policies and not undeployed_policies:
+                    _LOGGER.warning(audit.warn(
+                        "no policy deployed or undeployed: {}".format(json.dumps(pdp_update_msg)),
+                        error_code=AuditResponseCode.DATA_ERROR))
+                    continue
+
+                policy_update = {DEPLOYED_POLICIES: deployed_policies,
+                                 UNDEPLOYED_POLICIES: undeployed_policies}
+                _LOGGER.info(audit.info("policy_update[{}]: {}"
+                                        .format(idx, json.dumps(policy_update))))
+
+                policies_updated.append(policy_update)
+
+            if not policies_updated:
+                _LOGGER.warning(audit.warn(
+                    "erroneous notification from PDP: {}".format(json.dumps(policy_updates)),
+                    error_code=AuditResponseCode.DATA_ERROR))
+                return
+
+            with self._lock:
+                policy_updater = self._policy_updater
+            if policy_updater is not None:
+                policy_updater.policy_update(audit, policies_updated)
+        except Exception as ex:
+            error_msg = "crash {} {} at {}: {}".format(type(ex).__name__, str(ex),
+                                                       "on_policy_update_message",
+                                                       json.dumps(policy_updates))
+            _LOGGER.exception(audit.fatal(error_msg))
+
+    def shutdown(self, audit):
+        """Shutdown the policy_listener"""
+        _LOGGER.info(audit.info("shutdown policy_listener - no waiting..."))
+        with self._lock:
+            self._keep_running = False
+            self._policy_updater = None
+            self._run_event.set()
diff --git a/policyhandler/pdp_api/policy_matcher.py b/policyhandler/pdp_api/policy_matcher.py
index 57258c3..2972fb8 100644
--- a/policyhandler/pdp_api/policy_matcher.py
+++ b/policyhandler/pdp_api/policy_matcher.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2019-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -19,7 +19,98 @@
 
 import os
 
+from ..deploy_handler import DeployHandler, PolicyUpdateMessage
+from ..policy_consts import (ERRORED_POLICIES, LATEST_POLICIES, POLICY_BODY,
+                             POLICY_VERSIONS)
+from ..utils import Utils
+from .pdp_consts import POLICY_VERSION
+from .policy_rest import PolicyRest
+
+_LOGGER = Utils.get_logger(__file__)
 
 class PolicyMatcher(object):
     """policy-matcher - static class"""
+    PENDING_UPDATE = "pending_update"
     PDP_API_FOLDER = os.path.basename(os.path.dirname(os.path.realpath(__file__)))
+
+    @staticmethod
+    def build_catch_up_message(audit, deployed_policies, _=None):
+        """find the latest policies from policy-engine for the deployed policies"""
+
+        if not deployed_policies:
+            error_txt = "no deployed policies"
+            _LOGGER.warning(error_txt)
+            return {"error": error_txt}, None
+
+        pdp_response = PolicyRest.get_latest_policies(audit, policy_ids=list(deployed_policies))
+
+        if not audit.is_success():
+            error_txt = "failed to retrieve policies from policy-engine"
+            _LOGGER.warning(error_txt)
+            return {"error": error_txt}, None
+
+        latest_policies = pdp_response.get(LATEST_POLICIES, {})
+        errored_policies = pdp_response.get(ERRORED_POLICIES, {})
+
+        latest_policies, changed_policies = PolicyMatcher._match_policies(
+            latest_policies, deployed_policies)
+
+        errored_policies = dict((policy_id, policy)
+                                for (policy_id, policy) in errored_policies.items()
+                                if deployed_policies.get(policy_id, {}).get(POLICY_VERSIONS))
+
+        removed_policies = dict(
+            (policy_id, True)
+            for (policy_id, deployed_policy) in deployed_policies.items()
+            if deployed_policy.get(POLICY_VERSIONS)
+            and policy_id not in latest_policies
+            and policy_id not in errored_policies
+        )
+
+        return ({LATEST_POLICIES: latest_policies, ERRORED_POLICIES: errored_policies},
+                PolicyUpdateMessage(changed_policies, removed_policies))
+
+    @staticmethod
+    def match_to_deployed_policies(audit, policies_updated, policies_removed):
+        """match the policies_updated, policies_removed versus deployed policies"""
+        _, deployed_policies, _ = DeployHandler.get_deployed_policies(audit)
+        if not audit.is_success():
+            return {}, {}, {}
+
+        _, changed_policies = PolicyMatcher._match_policies(policies_updated, deployed_policies)
+
+        policies_removed = dict((policy_id, policy)
+                                for (policy_id, policy) in policies_removed.items()
+                                if deployed_policies.get(policy_id, {}).get(POLICY_VERSIONS))
+
+        return changed_policies, policies_removed, {}
+
+
+    @staticmethod
+    def _match_policies(policies, deployed_policies):
+        """
+        Match policies to deployed policies by policy_id.
+
+        Also calculates the policies that changed in comparison to deployed policies
+        """
+        matching_policies = {}
+        changed_policies = {}
+
+        policies = policies or {}
+        deployed_policies = deployed_policies or {}
+
+        for (policy_id, policy) in policies.items():
+            new_version = policy.get(POLICY_BODY, {}).get(POLICY_VERSION)
+            deployed_policy = deployed_policies.get(policy_id)
+
+            if deployed_policy:
+                matching_policies[policy_id] = policy
+
+            policy_changed = (deployed_policy and new_version
+                              and (deployed_policy.get(PolicyMatcher.PENDING_UPDATE)
+                                   or {new_version} ^
+                                   deployed_policy.get(POLICY_VERSIONS, {}).keys()))
+            if policy_changed:
+                changed_policies[policy_id] = policy
+
+        return matching_policies, changed_policies
diff --git a/policyhandler/pdp_api/policy_rest.py b/policyhandler/pdp_api/policy_rest.py
index 14d9296..0b33ccd 100644
--- a/policyhandler/pdp_api/policy_rest.py
+++ b/policyhandler/pdp_api/policy_rest.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2019-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -20,16 +20,19 @@
 import copy
 import json
 import os
+import time
 import urllib.parse
+from multiprocessing.dummy import Pool as ThreadPool
 from threading import Lock
 
 import requests
 
 from ..config import Config, Settings
-from ..onap.audit import (REQUEST_X_ECOMP_REQUESTID, AuditHttpCode,
-                          AuditResponseCode, Metrics)
+from ..onap.audit import AuditHttpCode, AuditResponseCode, Metrics
+from ..policy_consts import (ERRORED_POLICIES, LATEST_POLICIES, POLICY_BODY,
+                             POLICY_ID, POLICY_NAMES)
 from ..utils import Utils
-from .pdp_consts import PDP_POLICIES
+from .pdp_consts import PDP_POLICIES, POLICY_NAME, POLICY_VERSION
 from .policy_utils import PolicyUtils
 
 _LOGGER = Utils.get_logger(__file__)
@@ -37,11 +40,15 @@
 class PolicyRest(object):
     """using the http API to policy-engine"""
     PDP_API_FOLDER = os.path.basename(os.path.dirname(os.path.realpath(__file__)))
-    _lazy_inited = False
+    EXPECTED_VERSIONS = "expected_versions"
+    IGNORE_POLICY_NAMES = "ignore_policy_names"
     DEFAULT_TIMEOUT_IN_SECS = 60
+    _lazy_inited = False
 
     _lock = Lock()
-    _settings = Settings(Config.FIELD_POLICY_ENGINE, Config.POOL_CONNECTIONS)
+    _settings = Settings(Config.FIELD_POLICY_ENGINE, Config.POOL_CONNECTIONS,
+                         Config.THREAD_POOL_SIZE,
+                         Config.POLICY_RETRY_COUNT, Config.POLICY_RETRY_SLEEP)
 
     _target_entity = None
     _requests_session = None
@@ -49,6 +56,9 @@
     _url_pdp_decision = None
     _headers = None
     _custom_kwargs = {}
+    _thread_pool_size = 4
+    _policy_retry_count = 1
+    _policy_retry_sleep = 0
     _timeout_in_secs = DEFAULT_TIMEOUT_IN_SECS
 
     @staticmethod
@@ -63,10 +73,10 @@
         changed, pool_size = PolicyRest._settings.get_by_key(Config.POOL_CONNECTIONS, 20)
         if changed:
             PolicyRest._requests_session.mount(
-                'https://', requests.adapters.HTTPAdapter(pool_connections=pool_size,
+                'https://', requests.adapters.HTTPAdapter(pool_connections=1,
                                                           pool_maxsize=pool_size))
             PolicyRest._requests_session.mount(
-                'http://', requests.adapters.HTTPAdapter(pool_connections=pool_size,
+                'http://', requests.adapters.HTTPAdapter(pool_connections=1,
                                                          pool_maxsize=pool_size))
 
         _, config = PolicyRest._settings.get_by_key(Config.FIELD_POLICY_ENGINE)
@@ -77,6 +87,15 @@
                     PolicyRest._url, config.get("path_decision", "/decision/v1/"))
             PolicyRest._headers = config.get("headers", {})
             PolicyRest._target_entity = config.get("target_entity", Config.FIELD_POLICY_ENGINE)
+            _, PolicyRest._thread_pool_size = PolicyRest._settings.get_by_key(
+                Config.THREAD_POOL_SIZE, 4)
+            if PolicyRest._thread_pool_size < 2:
+                PolicyRest._thread_pool_size = 2
+
+            _, PolicyRest._policy_retry_count = PolicyRest._settings.get_by_key(
+                Config.POLICY_RETRY_COUNT, 1)
+            _, PolicyRest._policy_retry_sleep = PolicyRest._settings.get_by_key(
+                Config.POLICY_RETRY_SLEEP, 0)
 
             tls_ca_mode = config.get(Config.TLS_CA_MODE)
             PolicyRest._custom_kwargs = Config.get_requests_kwargs(tls_ca_mode)
@@ -121,13 +140,13 @@
             PolicyRest._init()
 
     @staticmethod
-    def _pdp_get_decision(audit, pdp_req):
-        """Communication with the policy-engine"""
+    def _pdp_get_decision(audit, policy_ids):
+        """get policies from the policy-engine by policy-ids"""
         if not PolicyRest._url:
             _LOGGER.error(
                 audit.error("no url for PDP", error_code=AuditResponseCode.AVAILABILITY_ERROR))
             audit.set_http_status_code(AuditHttpCode.SERVER_INTERNAL_ERROR.value)
-            return None
+            return None, None
 
         with PolicyRest._lock:
             session = PolicyRest._requests_session
@@ -137,9 +156,11 @@
             headers = copy.deepcopy(PolicyRest._headers)
             custom_kwargs = copy.deepcopy(PolicyRest._custom_kwargs)
 
+        pdp_req = PolicyUtils.gen_req_to_pdp(policy_ids)
+
         metrics = Metrics(aud_parent=audit, targetEntity=target_entity, targetServiceName=url)
 
-        headers[REQUEST_X_ECOMP_REQUESTID] = metrics.request_id
+        headers = metrics.put_request_id_into_headers(headers)
 
         log_action = "post to {} at {}".format(target_entity, url)
         log_data = "msg={} headers={}, custom_kwargs({}) timeout_in_secs({})".format(
@@ -159,11 +180,11 @@
                           else AuditHttpCode.SERVER_INTERNAL_ERROR.value)
             error_msg = ("failed {}: {} to {}".format(type(ex).__name__, str(ex), log_line))
 
-            _LOGGER.exception(error_msg)
+            _LOGGER.exception(metrics.fatal(error_msg))
             metrics.set_http_status_code(error_code)
             audit.set_http_status_code(error_code)
             metrics.metrics(error_msg)
-            return None
+            return (error_code, None)
 
         log_line = "response {} from {}: text={} headers={}".format(
             res.status_code, log_line, res.text,
@@ -174,40 +195,282 @@
         audit.set_http_status_code(res.status_code)
         metrics.metrics(log_line)
 
-        policy_bodies = None
+        latest_policies = None
         if res.status_code == requests.codes.ok:
-            policy_bodies = res.json().get(PDP_POLICIES)
+            policy_bodies = res.json().get(PDP_POLICIES, {})
+            latest_policies = dict((policy_id, PolicyUtils.convert_to_policy(policy))
+                                   for (policy_id, policy) in policy_bodies.items())
 
-        return policy_bodies
+        return res.status_code, latest_policies
+
 
     @staticmethod
     def get_latest_policy(aud_policy_id):
         """safely try retrieving the latest policy for the policy_id from the policy-engine"""
-        audit, policy_id, _, _ = aud_policy_id
+        audit, policy_id, expected_versions, ignore_policy_names = aud_policy_id
+        str_metrics = "policy_id({0}), expected_versions({1}) ignore_policy_names({2})".format(
+            policy_id, json.dumps(expected_versions), json.dumps(ignore_policy_names))
+
+        try:
+            return PolicyRest._get_latest_policy(
+                audit, policy_id, expected_versions, ignore_policy_names, str_metrics)
+
+        except Exception as ex:
+            error_msg = ("{0}: crash {1} {2} at {3}: {4}"
+                         .format(audit.request_id, type(ex).__name__, str(ex),
+                                 "get_latest_policy", str_metrics))
+
+            _LOGGER.exception(error_msg)
+            audit.fatal(error_msg, error_code=AuditResponseCode.BUSINESS_PROCESS_ERROR)
+            audit.set_http_status_code(AuditHttpCode.SERVER_INTERNAL_ERROR.value)
+            return None
+
+
+    @staticmethod
+    def _get_latest_policy(audit, policy_id,
+                           expected_versions, ignore_policy_names, str_metrics):
+        """retry several times getting the latest policy for the policy_id from the policy-engine"""
+        PolicyRest._lazy_init()
+        latest_policy = None
+        status_code = 0
+        retry_get_config = audit.kwargs.get("retry_get_config")
+
+        for retry in range(1, PolicyRest._policy_retry_count + 1):
+            _LOGGER.debug("try(%s) retry_get_config(%s): %s", retry, retry_get_config, str_metrics)
+
+            done, removed, latest_policy, status_code = PolicyRest._get_latest_policy_once(
+                audit, policy_id, expected_versions, ignore_policy_names)
+
+            if removed:
+                audit.set_http_status_code(AuditHttpCode.DATA_NOT_FOUND_OK.value)
+                return None
+
+            if done or not retry_get_config or not PolicyRest._policy_retry_sleep:
+                break
+
+            if retry == PolicyRest._policy_retry_count:
+                _LOGGER.error(
+                    audit.error("gave up retrying after #{} for policy_id({}) from PDP {}"
+                                .format(retry, policy_id, PolicyRest._url_pdp_decision),
+                                error_code=AuditResponseCode.DATA_ERROR))
+                break
+
+            _LOGGER.warning(audit.warn(
+                "will retry({}) for policy_id({}) in {} secs from PDP {}".format(
+                    retry, policy_id, PolicyRest._policy_retry_sleep, PolicyRest._url_pdp_decision),
+                error_code=AuditResponseCode.DATA_ERROR))
+            time.sleep(PolicyRest._policy_retry_sleep)
+
+        audit.set_http_status_code(status_code)
+        if not PolicyUtils.validate_policy(latest_policy):
+            audit.set_http_status_code(AuditHttpCode.DATA_NOT_FOUND_OK.value)
+            _LOGGER.error(audit.error(
+                "received invalid policy from PDP: {}".format(json.dumps(latest_policy)),
+                error_code=AuditResponseCode.DATA_ERROR))
+
+        return latest_policy
+
+    @staticmethod
+    def _get_latest_policy_once(audit, policy_id, expected_versions, ignore_policy_names):
+        """single attempt to get the latest policy for the policy_id from the policy-engine"""
+
+        status_code, latest_policies = PolicyRest._pdp_get_decision(audit, policy_id)
+
+        if (ignore_policy_names and not expected_versions and not latest_policies
+                and AuditHttpCode.HTTP_OK.value == status_code):
+            return True, True, None, status_code
+
+        log_line = "{} looking for policy_id({}) in latest_policies: {}".format(
+            status_code, policy_id, json.dumps(latest_policies))
+        _LOGGER.info(log_line)
+
+        latest_policy = (latest_policies or {}).get(policy_id)
+
+        log_error = ""
+        if latest_policy:
+            policy_body = latest_policy.get(POLICY_BODY, {})
+            policy_version = policy_body.get(POLICY_VERSION)
+            policy_name = policy_body.get(POLICY_NAME)
+            if expected_versions and policy_version not in expected_versions:
+                log_error = ("received unexpected policy version({}) instead of ({})"
+                             " from PDP for policy_id={}: {}"
+                             .format(policy_version, json.dumps(expected_versions),
+                                     policy_id, json.dumps(latest_policy)))
+            elif ignore_policy_names and policy_name in ignore_policy_names:
+                log_error = ("unexpectedly received policy version({}) from PDP"
+                             " for policy_id={}: {}. to ignore-policy-names {}"
+                             .format(policy_version, policy_id,
+                                     json.dumps(latest_policy),
+                                     json.dumps(ignore_policy_names)))
+
+        if not latest_policy or log_error:
+            _LOGGER.error(audit.error(
+                log_error or "received unexpected policy data({}) from PDP for policy_id={}: {}"
+                .format(json.dumps(latest_policy), policy_id, json.dumps(latest_policies)),
+                error_code=AuditResponseCode.DATA_ERROR))
+            latest_policy = None
+
+        done = bool(latest_policy or audit.is_serious_error(status_code))
+        return done, False, latest_policy, status_code
+
+    @staticmethod
+    def get_latest_updated_policies(audit, updated_policies, removed_policies):
+        """safely try retrieving the latest policies for the list of policy_names"""
+        if not updated_policies and not removed_policies:
+            return None, None
+
+        policies_updated = [(policy_id, policy.get(POLICY_BODY, {}).get(POLICY_VERSION))
+                            for policy_id, policy in updated_policies.items()]
+        policies_removed = [(policy_id, policy.get(POLICY_NAMES, {}))
+                            for policy_id, policy in removed_policies.items()]
+
+        if not policies_updated and not policies_removed:
+            return None, None
+
+        str_metrics = "policies_updated[{0}]: {1} policies_removed[{2}]: {3}".format(
+            len(policies_updated), json.dumps(policies_updated),
+            len(policies_removed), json.dumps(policies_removed))
+
+        try:
+            return PolicyRest._get_latest_updated_policies(
+                audit, str_metrics, policies_updated, policies_removed)
+
+        except Exception as ex:
+            error_msg = ("{0}: crash {1} {2} at {3}: {4}"
+                         .format(audit.request_id, type(ex).__name__, str(ex),
+                                 "get_latest_updated_policies", str_metrics))
+
+            _LOGGER.exception(error_msg)
+            audit.fatal(error_msg, error_code=AuditResponseCode.BUSINESS_PROCESS_ERROR)
+            audit.set_http_status_code(AuditHttpCode.SERVER_INTERNAL_ERROR.value)
+            return None, None
+
+    @staticmethod
+    def _get_latest_updated_policies(audit, str_metrics, policies_updated, policies_removed):
+        """Get the latest policies of the list of policy_names from the policy-engine"""
+        PolicyRest._lazy_init()
+        metrics_total = Metrics(
+            aud_parent=audit,
+            targetEntity="{0} total get_latest_updated_policies".format(PolicyRest._target_entity),
+            targetServiceName=PolicyRest._url_pdp_decision)
+
+        metrics_total.metrics_start("get_latest_updated_policies {0}".format(str_metrics))
+        _LOGGER.debug(str_metrics)
+
+        policies_to_find = {}
+        for (policy_id, policy_version) in policies_updated:
+            if not policy_id or policy_version is None:
+                continue
+            policy = policies_to_find.get(policy_id)
+            if not policy:
+                policies_to_find[policy_id] = {
+                    POLICY_ID: policy_id,
+                    PolicyRest.EXPECTED_VERSIONS: {policy_version: True},
+                    PolicyRest.IGNORE_POLICY_NAMES: {}
+                }
+                continue
+            policy[PolicyRest.EXPECTED_VERSIONS][policy_version] = True
+
+        for (policy_id, policy_names) in policies_removed:
+            if not policy_id:
+                continue
+            policy = policies_to_find.get(policy_id)
+            if not policy:
+                policies_to_find[policy_id] = {
+                    POLICY_ID: policy_id,
+                    PolicyRest.IGNORE_POLICY_NAMES: policy_names
+                }
+                continue
+            policy[PolicyRest.IGNORE_POLICY_NAMES].update(policy_names)
+
+        apns = [(audit, policy_id,
+                 policy_to_find.get(PolicyRest.EXPECTED_VERSIONS),
+                 policy_to_find.get(PolicyRest.IGNORE_POLICY_NAMES))
+                for (policy_id, policy_to_find) in policies_to_find.items()]
+
+        policies = None
+        apns_length = len(apns)
+        _LOGGER.debug("apns_length(%s) policies_to_find %s", apns_length,
+                      json.dumps(policies_to_find))
+
+        if apns_length == 1:
+            policies = [PolicyRest.get_latest_policy(apns[0])]
+        else:
+            pool = ThreadPool(min(PolicyRest._thread_pool_size, apns_length))
+            policies = pool.map(PolicyRest.get_latest_policy, apns)
+            pool.close()
+            pool.join()
+
+        metrics_total.metrics("result({}) get_latest_updated_policies {}: {} {}"
+                              .format(apns_length, str_metrics,
+                                      len(policies), json.dumps(policies)))
+
+        updated_policies = dict((policy[POLICY_ID], policy)
+                                for policy in policies
+                                if policy and policy.get(POLICY_ID))
+
+        removed_policies = dict((policy_id, True)
+                                for (policy_id, policy_to_find) in policies_to_find.items()
+                                if not policy_to_find.get(PolicyRest.EXPECTED_VERSIONS)
+                                and policy_to_find.get(PolicyRest.IGNORE_POLICY_NAMES)
+                                and policy_id not in updated_policies)
+
+        errored_policies = dict((policy_id, policy_to_find)
+                                for (policy_id, policy_to_find) in policies_to_find.items()
+                                if policy_id not in updated_policies
+                                and policy_id not in removed_policies)
+
+        _LOGGER.debug(
+            "result(%s) updated_policies %s, removed_policies %s, errored_policies %s",
+            apns_length, json.dumps(updated_policies), json.dumps(removed_policies),
+            json.dumps(errored_policies))
+
+        if errored_policies:
+            audit.set_http_status_code(AuditHttpCode.DATA_ERROR.value)
+            audit.error(
+                "errored_policies in PDP: {}".format(json.dumps(errored_policies)),
+                error_code=AuditResponseCode.DATA_ERROR)
+
+        return updated_policies, removed_policies
+
+
+    @staticmethod
+    def get_latest_policies(audit, policy_ids=None):
+        """Get the latest policies by policy-ids from the policy-engine"""
+        result = {}
+        str_policy_ids = json.dumps(policy_ids or [])
+
         try:
             PolicyRest._lazy_init()
+            if policy_ids:
+                _, latest_policies = PolicyRest._pdp_get_decision(audit, policy_ids)
 
-            pdp_req = PolicyUtils.gen_req_to_pdp(policy_id)
-            policy_bodies = PolicyRest._pdp_get_decision(audit, pdp_req)
+                if not latest_policies:
+                    audit.set_http_status_code(AuditHttpCode.DATA_NOT_FOUND_OK.value)
+                    _LOGGER.warning(audit.warn(
+                        "received no policies from PDP for policy_ids {}"
+                        .format(str_policy_ids), error_code=AuditResponseCode.DATA_ERROR))
+                    return latest_policies
 
-            log_line = "looking for policy_id({}) in policy_bodies: {}".format(
-                policy_id, json.dumps(policy_bodies))
-            _LOGGER.info(log_line)
+                valid_policies = {}
+                errored_policies = {}
+                for (policy_id, policy) in latest_policies.items():
+                    if PolicyUtils.validate_policy(policy):
+                        valid_policies[policy_id] = policy
+                    else:
+                        errored_policies[policy_id] = policy
 
-            latest_policy = None
-            if policy_bodies and policy_id in policy_bodies:
-                latest_policy = PolicyUtils.convert_to_policy(policy_bodies[policy_id])
+                result[LATEST_POLICIES] = valid_policies
+                result[ERRORED_POLICIES] = errored_policies
 
-            if not PolicyUtils.validate_policy(latest_policy):
-                audit.set_http_status_code(AuditHttpCode.DATA_NOT_FOUND_OK.value)
-                _LOGGER.error(audit.error(
-                    "received invalid policy from PDP: {}".format(json.dumps(latest_policy)),
-                    error_code=AuditResponseCode.DATA_ERROR))
+            _LOGGER.debug("got policies for policy_ids: %s. result: %s",
+                          str_policy_ids, json.dumps(result))
+            return result
 
-            return latest_policy
         except Exception as ex:
-            error_msg = ("{}: get_latest_policy({}) crash {}: {}"
-                         .format(audit.request_id, policy_id, type(ex).__name__, str(ex)))
+            error_msg = ("{}: crash {} {} at {}: {}"
+                         .format(audit.request_id, type(ex).__name__, str(ex),
+                                 "get_latest_policies", str_policy_ids))
 
             _LOGGER.exception(error_msg)
             audit.fatal(error_msg, error_code=AuditResponseCode.BUSINESS_PROCESS_ERROR)
diff --git a/policyhandler/pdp_api/policy_updates.py b/policyhandler/pdp_api/policy_updates.py
index eb3c3d1..15f5b0a 100644
--- a/policyhandler/pdp_api/policy_updates.py
+++ b/policyhandler/pdp_api/policy_updates.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2019-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,10 +17,13 @@
 
 """policy-updates accumulates the policy-update notifications from PDP"""
 
+import json
 import os
 
-from ..utils import Utils, ToBeImplementedException
-
+from ..policy_consts import POLICY_BODY, POLICY_ID, POLICY_NAMES
+from ..utils import Utils
+from .pdp_consts import DEPLOYED_POLICIES, POLICY_NAME, UNDEPLOYED_POLICIES
+from .policy_utils import PolicyUtils
 
 _LOGGER = Utils.get_logger(__file__)
 
@@ -30,9 +33,12 @@
 
     def __init__(self):
         """init and reset"""
+        self._audit = None
+        self._policies_updated = {}
+        self._policies_removed = {}
 
     def reset(self):
-        """resets the state"""
+        """resets the state - removes the pending policy-updates"""
         self.__init__()
 
     def pop_policy_updates(self):
@@ -40,10 +46,71 @@
         Returns the consolidated (audit, policies_updated, policies_removed)
         and resets the state
         """
-        _LOGGER.info("to_be_implemented")
-        return None, None, None
+        if not self._audit:
+            return None, None, None
 
-    def push_policy_updates(self, *_):
-        """consolidate the new policies_updated, policies_removed to existing ones"""
-        _LOGGER.info("to_be_implemented")
-        raise ToBeImplementedException()
+        audit = self._audit
+        policies_updated = self._policies_updated
+        policies_removed = self._policies_removed
+
+        self.reset()
+
+        return audit, policies_updated, policies_removed
+
+
+    def push_policy_updates(self, audit, multi_policies_updated):
+        """
+        consolidate the new policies_updated, policies_removed to existing ones
+
+        receives
+        :multi_policies_updated: as [
+            {DEPLOYED_POLICIES: [{PDP_METADATA: {POLICY_ID: <policy_id>,
+                                                 POLICY_VERSION: <policy_version>}}, ...],
+             UNDEPLOYED_POLICIES: [{PDP_METADATA: {POLICY_ID: <policy_id>,
+                                                   POLICY_VERSION: <policy_version>}}, ...]
+            }, ...]
+        """
+        for p_single_updated in multi_policies_updated:
+            for p_undeployed in p_single_updated.get(UNDEPLOYED_POLICIES, []):
+                policy = PolicyUtils.convert_to_policy(p_undeployed)
+                if not policy:
+                    continue
+                policy_id = policy.get(POLICY_ID)
+                policy_name = policy.get(POLICY_BODY, {}).get(POLICY_NAME)
+
+                if policy_id in self._policies_removed:
+                    policy = self._policies_removed[policy_id]
+
+                if POLICY_NAMES not in policy:
+                    policy[POLICY_NAMES] = {}
+                policy[POLICY_NAMES][policy_name] = True
+                self._policies_removed[policy_id] = policy
+
+            for p_deployed in p_single_updated.get(DEPLOYED_POLICIES, []):
+                policy = PolicyUtils.convert_to_policy(p_deployed)
+                if not policy:
+                    continue
+                policy_id = policy.get(POLICY_ID)
+                policy_name = policy.get(POLICY_BODY, {}).get(POLICY_NAME)
+
+                self._policies_updated[policy_id] = policy
+
+                rm_policy_names = self._policies_removed.get(policy_id, {}).get(POLICY_NAMES)
+                if rm_policy_names and policy_name in rm_policy_names:
+                    del rm_policy_names[policy_name]
+
+        req_message = ("policy-update notification - updated[{}], removed[{}]"
+                       .format(len(self._policies_updated),
+                               len(self._policies_removed)))
+
+        if not self._audit:
+            self._audit = audit
+        else:
+            audit.audit_done(result="policy-updates queued to request_id({})"
+                             .format(self._audit.request_id))
+        self._audit.req_message = req_message
+
+        _LOGGER.info(
+            "pending(%s) for %s policies_updated %s policies_removed %s",
+            self._audit.request_id, req_message,
+            json.dumps(self._policies_updated), json.dumps(self._policies_removed))
diff --git a/policyhandler/pdp_api/policy_utils.py b/policyhandler/pdp_api/policy_utils.py
index 1d06d14..f2ed522 100644
--- a/policyhandler/pdp_api/policy_utils.py
+++ b/policyhandler/pdp_api/policy_utils.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2019-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -30,14 +30,19 @@
     """policy-client utils"""
 
     @staticmethod
-    def gen_req_to_pdp(policy_id):
-        """request to get a single policy from pdp by policy_id"""
+    def gen_req_to_pdp(policy_ids):
+        """request to get policies from pdp by policy_id list or a single value"""
+        if not policy_ids:
+            policy_ids = []
+        elif not isinstance(policy_ids, list):
+            policy_ids = [policy_ids]
+
         return {
             PDP_REQ_ONAP_NAME: "DCAE",
             PDP_REQ_ONAP_COMPONENT: Audit.service_name,
             PDP_REQ_ONAP_INSTANCE: Audit.SERVICE_INSTANCE_UUID,
             "action": "configure",
-            PDP_REQ_RESOURCE: {PDP_POLICY_ID: [policy_id]}
+            PDP_REQ_RESOURCE: {PDP_POLICY_ID: policy_ids}
         }
 
     @staticmethod
@@ -52,7 +57,7 @@
             "version": "1.0.0",
             "metadata": {
                 "policy-id": "onap.scaleout.tca",
-                "policy-version": 1,
+                "policy-version": "1.2.3",
                 "description": "The scaleout policy for vDNS"
             },
             "properties": {
@@ -73,13 +78,13 @@
         {
             "policy_id": "onap.scaleout.tca",
             "policy_body": {
-                "policyName": "onap.scaleout.tca.1.xml",
-                "policyVersion": 1,
+                "policyName": "onap.scaleout.tca.1-2-3.xml",
+                "policyVersion": "1.2.3",
                 "type": "onap.policies.monitoring.cdap.tca.hi.lo.app",
                 "version": "1.0.0",
                 "metadata": {
                     "policy-id": "onap.scaleout.tca",
-                    "policy-version": 1,
+                    "policy-version": "1.2.3",
                     "description": "The scaleout policy for vDNS"
                 },
                 "config": {
@@ -97,19 +102,20 @@
             }
         }
         """
-        if not policy_body or not policy_body.get(PDP_PROPERTIES):
+        if not policy_body:
             return None
 
         pdp_metadata = policy_body.get(PDP_METADATA, {})
         policy_id = pdp_metadata.get(PDP_POLICY_ID)
         policy_version = pdp_metadata.get(PDP_POLICY_VERSION)
-        if not policy_id or not policy_version:
+        if not policy_id or policy_version is None:
             return None
 
-        policy_body[POLICY_NAME] = "{}.{}.xml".format(policy_id, policy_version)
+        policy_body[POLICY_NAME] = "{}.{}.xml".format(policy_id, policy_version.replace(".", "-"))
         policy_body[POLICY_VERSION] = str(policy_version)
-        policy_body[POLICY_CONFIG] = policy_body[PDP_PROPERTIES]
-        del policy_body[PDP_PROPERTIES]
+        if PDP_PROPERTIES in policy_body:
+            policy_body[POLICY_CONFIG] = policy_body[PDP_PROPERTIES]
+            del policy_body[PDP_PROPERTIES]
 
         return {POLICY_ID:policy_id, POLICY_BODY:policy_body}
 
diff --git a/policyhandler/pdp_api_v0/policy_listener.py b/policyhandler/pdp_api_v0/policy_listener.py
index 67e4c49..7525e4d 100644
--- a/policyhandler/pdp_api_v0/policy_listener.py
+++ b/policyhandler/pdp_api_v0/policy_listener.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -16,7 +16,7 @@
 #
 
 """
-policy-listener communicates with policy-engine
+policy_listener communicates with policy-engine
 thru web-socket to receive push notifications
 on updates and removal of policies.
 
@@ -298,8 +298,8 @@
 
 
     def shutdown(self, audit):
-        """Shutdown the policy-listener"""
-        _LOGGER.info(audit.info("shutdown policy-listener"))
+        """Shutdown the policy_listener"""
+        _LOGGER.info(audit.info("shutdown policy_listener"))
         with self._lock:
             self._keep_running = False
 
diff --git a/policyhandler/pdp_api_v0/policy_matcher.py b/policyhandler/pdp_api_v0/policy_matcher.py
index 357af49..deb6619 100644
--- a/policyhandler/pdp_api_v0/policy_matcher.py
+++ b/policyhandler/pdp_api_v0/policy_matcher.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -38,24 +38,6 @@
     PDP_API_FOLDER = os.path.basename(os.path.dirname(os.path.realpath(__file__)))
 
     @staticmethod
-    def get_deployed_policies(audit):
-        """get the deployed policies and policy-filters"""
-        deployed_policies, deployed_policy_filters = DeployHandler.get_deployed_policies(audit)
-
-        if audit.is_not_found():
-            warning_txt = "got no deployed policies or policy-filters"
-            _LOGGER.warning(warning_txt)
-            return {"warning": warning_txt}, None, None
-
-        if not audit.is_success() or (not deployed_policies and not deployed_policy_filters):
-            error_txt = "failed to retrieve policies from deployment-handler"
-            _LOGGER.error(error_txt)
-            return {"error": error_txt}, None, None
-
-        return None, deployed_policies, deployed_policy_filters
-
-
-    @staticmethod
     def build_catch_up_message(audit, deployed_policies, deployed_policy_filters):
         """
         find the latest policies from policy-engine for the deployed policies and policy-filters
@@ -135,7 +117,7 @@
     @staticmethod
     def match_to_deployed_policies(audit, policies_updated, policies_removed):
         """match the policies_updated, policies_removed versus deployed policies"""
-        deployed_policies, deployed_policy_filters = DeployHandler.get_deployed_policies(audit)
+        _, deployed_policies, deployed_policy_filters = DeployHandler.get_deployed_policies(audit)
         if not audit.is_success():
             return {}, {}, {}
 
diff --git a/policyhandler/pdp_api_v0/policy_rest.py b/policyhandler/pdp_api_v0/policy_rest.py
index c59625e..30fc043 100644
--- a/policyhandler/pdp_api_v0/policy_rest.py
+++ b/policyhandler/pdp_api_v0/policy_rest.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2017-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -28,8 +28,7 @@
 import requests
 
 from ..config import Config, Settings
-from ..onap.audit import (REQUEST_X_ECOMP_REQUESTID, AuditHttpCode,
-                          AuditResponseCode, Metrics)
+from ..onap.audit import AuditHttpCode, AuditResponseCode, Metrics
 from ..policy_consts import (ERRORED_POLICIES, LATEST_POLICIES, POLICY_BODY,
                              POLICY_FILTER, POLICY_FILTERS, POLICY_ID,
                              POLICY_NAMES)
@@ -84,10 +83,10 @@
         changed, pool_size = PolicyRest._settings.get_by_key(Config.POOL_CONNECTIONS, 20)
         if changed:
             PolicyRest._requests_session.mount(
-                'https://', requests.adapters.HTTPAdapter(pool_connections=pool_size,
+                'https://', requests.adapters.HTTPAdapter(pool_connections=1,
                                                           pool_maxsize=pool_size))
             PolicyRest._requests_session.mount(
-                'http://', requests.adapters.HTTPAdapter(pool_connections=pool_size,
+                'http://', requests.adapters.HTTPAdapter(pool_connections=1,
                                                          pool_maxsize=pool_size))
 
         _, config = PolicyRest._settings.get_by_key(Config.FIELD_POLICY_ENGINE)
@@ -159,7 +158,7 @@
             _LOGGER.error(
                 audit.error("no url for PDP", error_code=AuditResponseCode.AVAILABILITY_ERROR))
             audit.set_http_status_code(AuditHttpCode.SERVER_INTERNAL_ERROR.value)
-            return None
+            return None, None
 
         with PolicyRest._lock:
             session = PolicyRest._requests_session
@@ -171,7 +170,7 @@
 
         metrics = Metrics(aud_parent=audit, targetEntity=target_entity, targetServiceName=url)
 
-        headers[REQUEST_X_ECOMP_REQUESTID] = metrics.request_id
+        headers = metrics.put_request_id_into_headers(headers)
 
         log_action = "post to {} at {}".format(target_entity, url)
         log_data = "msg={} headers={}, custom_kwargs({}) timeout_in_secs({})".format(
@@ -191,7 +190,7 @@
                           else AuditHttpCode.SERVER_INTERNAL_ERROR.value)
             error_msg = ("failed {}: {} to {}".format(type(ex).__name__, str(ex), log_line))
 
-            _LOGGER.exception(error_msg)
+            _LOGGER.exception(metrics.fatal(error_msg))
             metrics.set_http_status_code(error_code)
             audit.set_http_status_code(error_code)
             metrics.metrics(error_msg)
@@ -412,7 +411,7 @@
 
         policies_to_find = {}
         for (policy_id, policy_version) in policies_updated:
-            if not policy_id or not policy_version or not policy_version.isdigit():
+            if not policy_id or policy_version is None or not policy_version.isdigit():
                 continue
             policy = policies_to_find.get(policy_id)
             if not policy:
diff --git a/policyhandler/pdp_api_v0/policy_updates.py b/policyhandler/pdp_api_v0/policy_updates.py
index eafdca2..ac68f4a 100644
--- a/policyhandler/pdp_api_v0/policy_updates.py
+++ b/policyhandler/pdp_api_v0/policy_updates.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -40,7 +40,7 @@
         self._policies_removed = {}
 
     def reset(self):
-        """resets the state"""
+        """resets the state - removes the pending policy-updates"""
         self.__init__()
 
     def pop_policy_updates(self):
@@ -62,25 +62,12 @@
 
     def push_policy_updates(self, policies_updated, policies_removed):
         """consolidate the new policies_updated, policies_removed to existing ones"""
-        for policy_body in policies_updated:
-            policy_name = policy_body.get(POLICY_NAME)
-            policy = PolicyUtils.convert_to_policy(policy_body)
-            if not policy:
-                continue
-            policy_id = policy.get(POLICY_ID)
-
-            self._policies_updated[policy_id] = policy
-
-            rm_policy_names = self._policies_removed.get(policy_id, {}).get(POLICY_NAMES)
-            if rm_policy_names and policy_name in rm_policy_names:
-                del rm_policy_names[policy_name]
-
         for policy_body in policies_removed:
-            policy_name = policy_body.get(POLICY_NAME)
             policy = PolicyUtils.convert_to_policy(policy_body)
             if not policy:
                 continue
             policy_id = policy.get(POLICY_ID)
+            policy_name = policy_body.get(POLICY_NAME)
 
             if policy_id in self._policies_removed:
                 policy = self._policies_removed[policy_id]
@@ -90,16 +77,27 @@
             policy[POLICY_NAMES][policy_name] = True
             self._policies_removed[policy_id] = policy
 
+        for policy_body in policies_updated:
+            policy = PolicyUtils.convert_to_policy(policy_body)
+            if not policy:
+                continue
+            policy_id = policy.get(POLICY_ID)
+            policy_name = policy_body.get(POLICY_NAME)
+
+            self._policies_updated[policy_id] = policy
+
+            rm_policy_names = self._policies_removed.get(policy_id, {}).get(POLICY_NAMES)
+            if rm_policy_names and policy_name in rm_policy_names:
+                del rm_policy_names[policy_name]
+
         req_message = ("policy-update notification - updated[{0}], removed[{1}]"
                        .format(len(self._policies_updated),
                                len(self._policies_removed)))
 
         if not self._audit:
-            self._audit = Audit(job_name="policy_update",
-                                req_message=req_message,
+            self._audit = Audit(job_name="policy_update", req_message=req_message,
                                 retry_get_config=True)
-        else:
-            self._audit.req_message = req_message
+        self._audit.req_message = req_message
 
         _LOGGER.info(
             "pending(%s) for %s policies_updated %s policies_removed %s",
diff --git a/policyhandler/pdp_api_v0/policy_utils.py b/policyhandler/pdp_api_v0/policy_utils.py
index d337665..2cbb22c 100644
--- a/policyhandler/pdp_api_v0/policy_utils.py
+++ b/policyhandler/pdp_api_v0/policy_utils.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -63,7 +63,7 @@
             return None
         policy_name = policy_body.get(POLICY_NAME)
         policy_version = policy_body.get(POLICY_VERSION)
-        if not policy_name or not policy_version:
+        if not policy_name or policy_version is None:
             return None
         policy_id = PolicyUtils.extract_policy_id(policy_name)
         if not policy_id:
@@ -81,7 +81,7 @@
         for policy_body in policy_bodies:
             policy_name = policy_body.get(POLICY_NAME)
             policy_version = policy_body.get(POLICY_VERSION)
-            if not policy_name or not policy_version or not policy_version.isdigit():
+            if not policy_name or policy_version is None or not policy_version.isdigit():
                 continue
             if expected_versions and policy_version not in expected_versions:
                 continue
@@ -108,7 +108,7 @@
                 continue
             policy_id = policy.get(POLICY_ID)
             policy_version = policy.get(POLICY_BODY, {}).get(POLICY_VERSION)
-            if not policy_id or not policy_version or not policy_version.isdigit():
+            if not policy_id or policy_version is None or not policy_version.isdigit():
                 continue
             if (policy_id not in policies
                     or int(policy_version) > int(policies[policy_id][POLICY_BODY][POLICY_VERSION])):
diff --git a/policyhandler/policy_receiver.py b/policyhandler/policy_receiver.py
index d949c4b..091c2c3 100644
--- a/policyhandler/policy_receiver.py
+++ b/policyhandler/policy_receiver.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -24,13 +24,15 @@
 passes the notifications to policy-updater
 """
 
+from .config import Config
 from .service_activator import ServiceActivator
 
+
 class PolicyReceiver(object):
     """
     policy-receiver - static singleton wrapper around two threads
         policy_updater - master thread for all scheduled actions
-        policy_listener - listens to policy-engine through web-socket
+        policy_listener - listens to policy-engine through DMaaP MR or web-socket
     """
     _policy_updater = None
     _policy_listener = None
@@ -47,9 +49,9 @@
     def _close_listener(audit):
         """stop the notification-handler"""
         if PolicyReceiver._policy_listener:
-            policy_receiver = PolicyReceiver._policy_listener
+            policy_listener = PolicyReceiver._policy_listener
             PolicyReceiver._policy_listener = None
-            policy_receiver.shutdown(audit)
+            policy_listener.shutdown(audit)
 
     @staticmethod
     def shutdown(audit):
@@ -98,4 +100,7 @@
 
         PolicyReceiver._policy_updater.start()
 
-        PolicyReceiver.catch_up(audit)
+        if Config.is_pdp_api_default():
+            audit.audit_done(result="will catch_up after draining the policy-update queue")
+        else:
+            PolicyReceiver.catch_up(audit)
diff --git a/policyhandler/policy_updater.py b/policyhandler/policy_updater.py
index 3fcde40..42c5ee6 100644
--- a/policyhandler/policy_updater.py
+++ b/policyhandler/policy_updater.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2017-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -40,7 +40,7 @@
         self._reconfigure_receiver = on_reconfigure_receiver
 
         self._lock = Lock()
-        self._run = Event()
+        self._run_event = Event()
         self._settings = Settings(CATCH_UP, Config.RECONFIGURE)
 
         self._catch_up_timer = None
@@ -74,11 +74,11 @@
         self._settings.commit_change()
         return True
 
-    def policy_update(self, policies_updated, policies_removed):
+    def policy_update(self, *args):
         """enqueue the policy-updates"""
         with self._lock:
-            self._policy_updates.push_policy_updates(policies_updated, policies_removed)
-            self._run.set()
+            self._policy_updates.push_policy_updates(*args)
+            self._run_event.set()
 
     def catch_up(self, audit=None):
         """need to bring the latest policies to DCAE-Controller"""
@@ -89,7 +89,7 @@
                     "catch_up %s request_id %s",
                     self._aud_catch_up.req_message, self._aud_catch_up.request_id
                 )
-            self._run.set()
+            self._run_event.set()
 
     def reconfigure(self, audit=None):
         """job to check for and bring in the updated config for policy-handler"""
@@ -100,7 +100,7 @@
                     "%s request_id %s",
                     self._aud_reconfigure.req_message, self._aud_reconfigure.request_id
                 )
-            self._run.set()
+            self._run_event.set()
 
     def run(self):
         """wait and run the policy-update in thread"""
@@ -108,10 +108,10 @@
         self._run_reconfigure_timer()
         while True:
             _LOGGER.info("waiting for policy-updates...")
-            self._run.wait()
+            self._run_event.wait()
 
             with self._lock:
-                self._run.clear()
+                self._run_event.clear()
 
             if not self._keep_running():
                 break
@@ -126,7 +126,7 @@
 
             self._on_policy_update()
 
-        _LOGGER.info("exit policy-updater")
+        _LOGGER.info("exit policy_updater")
 
     def _keep_running(self):
         """thread-safe check whether to continue running"""
@@ -235,7 +235,7 @@
 
                 if self._reconfigure_receiver(aud_reconfigure):
                     need_to_catch_up = True
-                    changed_configs.append("web-socket")
+                    changed_configs.append("policy-receiver")
 
                 reconfigure_result = " -- config changed on {} changes: {}".format(
                     json.dumps(changed_configs), Config.discovered_config)
@@ -246,7 +246,7 @@
 
             Config.discovered_config.commit_change()
             aud_reconfigure.audit_done(result=reconfigure_result)
-            _LOGGER.info(log_line + reconfigure_result)
+            _LOGGER.info("%s%s", log_line, reconfigure_result)
 
             if need_to_catch_up:
                 self._pause_catch_up_timer()
@@ -300,8 +300,7 @@
             _LOGGER.info(log_line)
             self._pause_catch_up_timer()
 
-            (_, policies,
-             policy_filters) = pdp_client.PolicyMatcher.get_deployed_policies(aud_catch_up)
+            (_, policies, policy_filters) = DeployHandler.get_deployed_policies(aud_catch_up)
 
             catch_up_message = None
             if aud_catch_up.is_not_found():
@@ -422,11 +421,11 @@
 
 
     def shutdown(self, audit):
-        """Shutdown the policy-updater"""
-        _LOGGER.info("shutdown policy-updater")
+        """Shutdown the policy_updater"""
+        _LOGGER.info("shutdown policy_updater")
         with self._lock:
             self._aud_shutdown = audit
-            self._run.set()
+            self._run_event.set()
 
         self._stop_timers()
 
diff --git a/policyhandler/service_activator.py b/policyhandler/service_activator.py
index c1e5b8c..1fab5c6 100644
--- a/policyhandler/service_activator.py
+++ b/policyhandler/service_activator.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2019-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -36,8 +36,7 @@
 
 from .config import Config, Settings
 from .discovery import DiscoveryClient
-from .onap.audit import (REQUEST_X_ECOMP_REQUESTID, Audit, AuditHttpCode,
-                         Metrics)
+from .onap.audit import Audit, AuditHttpCode, Metrics
 from .policy_consts import TARGET_ENTITY
 from .utils import Utils
 
@@ -153,16 +152,11 @@
         mode_of_operation - whether the service is
             active == True or passive == False
             based on the current value of the mode_of_operation
-
-        temporary for R4 Dublin - passive for new PDP API
         """
         active = (ServiceActivator._mode_of_operation is None
                   or ServiceActivator._mode_of_operation
                   == ServiceActivator.MODE_OF_OPERATION_ACTIVE)
 
-        if active and Config.is_pdp_api_default():
-            active = False
-
         if audit:
             _LOGGER.info(audit.info("mode_of_operation = {} active = {}".format(
                 ServiceActivator._mode_of_operation, active)))
@@ -188,7 +182,7 @@
             metrics = Metrics(aud_parent=audit,
                               targetEntity="{} determine_mode_of_operation".format(target_entity),
                               targetServiceName=url)
-            headers = {REQUEST_X_ECOMP_REQUESTID : metrics.request_id}
+            headers = metrics.put_request_id_into_headers()
 
             log_action = "post to {} at {}".format(target_entity, url)
             log_data = "headers={}, json_body={}, timeout_in_secs={}, custom_kwargs({})".format(
@@ -209,7 +203,7 @@
                               else AuditHttpCode.SERVER_INTERNAL_ERROR.value)
                 error_msg = "failed to {} {}: {} {}".format(
                     log_action, type(ex).__name__, str(ex), log_data)
-                _LOGGER.exception(error_msg)
+                _LOGGER.exception(metrics.fatal(error_msg))
                 metrics.set_http_status_code(error_code)
                 audit.set_http_status_code(error_code)
                 metrics.metrics(error_msg)
diff --git a/policyhandler/utils.py b/policyhandler/utils.py
index d728e48..685d7d8 100644
--- a/policyhandler/utils.py
+++ b/policyhandler/utils.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -23,11 +23,6 @@
 from copy import deepcopy
 from typing import Pattern
 
-class ToBeImplementedException(Exception):
-    """exception for to be implemented features of policy-handler"""
-    pass
-
-
 class Utils(object):
     """general purpose utils"""
     _logger = logging.getLogger("policy_handler.utils")
@@ -91,6 +86,14 @@
                 return False
 
             for key, val_1 in body_1.items():
+                val_2 = body_2[key]
+                if isinstance(val_1, str) or isinstance(val_2, str):
+                    if val_1 != val_2:
+                        Utils._logger.debug("key-values %s != %s",
+                                            json_dumps({key: val_1}), json_dumps({key: val_2}))
+                        return False
+                    continue
+
                 if not Utils.are_the_same(val_1, body_2[key], json_dumps):
                     return False
             return True
diff --git a/policyhandler/web_server.py b/policyhandler/web_server.py
index 9c2656e..f52f18e 100644
--- a/policyhandler/web_server.py
+++ b/policyhandler/web_server.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2017-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,15 +18,15 @@
 """web-server for policy_handler"""
 
 import json
-from datetime import datetime
 import os
 import time
+from datetime import datetime
 
 import cherrypy
 
 from . import pdp_client
 from .config import Config
-from .deploy_handler import PolicyUpdateMessage
+from .deploy_handler import DeployHandler, PolicyUpdateMessage
 from .onap.audit import Audit, AuditHttpCode
 from .policy_receiver import PolicyReceiver
 from .utils import Utils
@@ -120,7 +120,7 @@
 
         PolicyWeb.logger.info("%s", req_info)
 
-        result, policies, policy_filters = pdp_client.PolicyMatcher.get_deployed_policies(audit)
+        result, policies, policy_filters = DeployHandler.get_deployed_policies(audit)
         if not result:
             result, policy_update = pdp_client.PolicyMatcher.build_catch_up_message(
                 audit, policies, policy_filters)
@@ -184,12 +184,12 @@
             }
         }
         """
-        if Config.is_pdp_api_default():
-            raise cherrypy.HTTPError(404, "temporarily unsupported due to the new pdp API")
-
         if cherrypy.request.method == "GET":
             return self._get_all_policies_latest()
 
+        if Config.is_pdp_api_default():
+            raise cherrypy.HTTPError(404, "temporarily unsupported due to the new pdp API")
+
         if cherrypy.request.method != "POST":
             raise cherrypy.HTTPError(404, "unexpected method {0}".format(cherrypy.request.method))
 
diff --git a/pom.xml b/pom.xml
index ea01cb0..956e17d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
   <groupId>org.onap.dcaegen2.platform</groupId>
   <artifactId>policy-handler</artifactId>
   <name>dcaegen2-platform-policy-handler</name>
-  <version>5.0.1-SNAPSHOT</version>
+  <version>5.1.0-SNAPSHOT</version>
   <url>http://maven.apache.org</url>
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
diff --git a/setup.py b/setup.py
index 3bfc162..ab0189a 100644
--- a/setup.py
+++ b/setup.py
@@ -1,5 +1,5 @@
 # ================================================================================
-# Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2017-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -22,7 +22,7 @@
 setup(
     name='policyhandler',
     description='DCAE-Controller policy-handler to communicate with policy-engine',
-    version="5.0.1",
+    version="5.1.0",
     author='Alex Shatov',
     packages=['policyhandler'],
     zip_safe=False,
diff --git a/tests/conftest.py b/tests/conftest.py
index c3f4100..cbd6264 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -1,5 +1,5 @@
 # ============LICENSE_START=======================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -15,30 +15,27 @@
 # ============LICENSE_END=========================================================
 #
 """
-startdard pytest file that contains the shared fixtures
+standard pytest file that contains the shared fixtures
 https://docs.pytest.org/en/latest/fixture.html
 """
 import base64
 import copy
 import json
+import os
 
 import pytest
 
 from policyhandler.config import Config
-from policyhandler.deploy_handler import DeployHandler
 from policyhandler.discovery import DiscoveryClient
-from policyhandler.onap.audit import Audit
 from policyhandler.policy_consts import CATCH_UP, TARGET_ENTITY
 from policyhandler.utils import Utils
 
-from .mock_deploy_handler import MockDeploymentHandler
 from .mock_settings import MockSettings
 from .mock_tracker import MockHttpResponse, Tracker
 
 _LOGGER = Utils.get_logger(__file__)
 
-_LOGGER.info("init MockSettings")
-MockSettings.init()
+MockSettings.init_mock_config()
 
 @pytest.fixture(scope="session", autouse=True)
 def _auto_setup__global():
@@ -50,9 +47,19 @@
     _LOGGER.info("teardown _auto_setup__global")
 
 
+@pytest.fixture(autouse=True, scope="module")
+def _auto_module_cycle(request):
+    """log all the test starts and ends"""
+    module_name = request.module.__name__.replace(".", "/")
+
+    _LOGGER.info("start_module: %s %s", module_name, "->"*25)
+    yield _auto_module_cycle
+    _LOGGER.info("end_module: %s %s", module_name, "<-"*25)
+
 @pytest.fixture(autouse=True)
 def _auto_test_cycle(request):
     """log all the test starts and ends"""
+    _LOGGER.info("-"*75)
     module_name = request.module.__name__.replace(".", "/")
     if request.cls:
         test_name = "%s.py::%s::%s" % (module_name, request.cls.__name__,
@@ -61,7 +68,6 @@
         test_name = "%s.py::%s" % (module_name, request.function.__name__)
 
     Tracker.reset(test_name)
-    _LOGGER.info("-"*75)
     _LOGGER.info(">>>>>>> start [%s]: %s", len(Tracker.test_names), test_name)
     yield _auto_test_cycle
     _LOGGER.info(">>>>>>> tracked messages: %s", Tracker.to_string())
@@ -84,35 +90,6 @@
     _LOGGER.info("teardown fix_cherrypy_engine_exit")
 
 
-@pytest.fixture()
-def fix_deploy_handler(monkeypatch):
-    """monkeyed requests to deployment-handler"""
-    def monkeyed_deploy_handler_put(uri, **kwargs):
-        """monkeypatch for policy-update request.put to deploy_handler"""
-        return MockHttpResponse("put", uri, MockDeploymentHandler.default_response(),
-                                **kwargs)
-
-    def monkeyed_deploy_handler_get(uri, **kwargs):
-        """monkeypatch policy-update request.get to deploy_handler"""
-        return MockHttpResponse("get", uri, MockDeploymentHandler.get_deployed_policies(),
-                                **kwargs)
-
-    _LOGGER.info("setup fix_deploy_handler")
-    audit = None
-    if DeployHandler._lazy_inited is False:
-        audit = Audit(req_message="fix_deploy_handler")
-        DeployHandler._lazy_init(audit)
-
-    monkeypatch.setattr('policyhandler.deploy_handler.DeployHandler._requests_session.put',
-                        monkeyed_deploy_handler_put)
-    monkeypatch.setattr('policyhandler.deploy_handler.DeployHandler._requests_session.get',
-                        monkeyed_deploy_handler_get)
-
-    yield fix_deploy_handler
-    if audit:
-        audit.audit_done("teardown")
-    _LOGGER.info("teardown fix_deploy_handler")
-
 
 @pytest.fixture()
 def fix_discovery(monkeypatch):
@@ -134,7 +111,7 @@
                 Config.consul_url, Config.system_name):
             res_json = [{"Value": base64.b64encode(
                 json.dumps(MockSettings.mock_config).encode()).decode("utf-8")}]
-        return MockHttpResponse("get", uri, res_json)
+        return MockHttpResponse("get", uri, res_json=res_json)
 
     _LOGGER.info("setup fix_discovery")
     monkeypatch.setattr('policyhandler.discovery.requests.get', monkeyed_discovery)
@@ -156,65 +133,42 @@
     MockSettings.rediscover_config(prev_config)
     _LOGGER.info("teardown fix_auto_catch_up")
 
+@pytest.fixture(scope="module")
+def fix_pdp_authorization():
+    """set env vars that overwrite the headers.Authorization on pdp and dmaap_mr clients"""
+    _LOGGER.info("setup fix_pdp_authorization %s", json.dumps(MockSettings.mock_config))
+    prev_config = copy.deepcopy(MockSettings.mock_config)
 
-@pytest.fixture()
-def fix_deploy_handler_413(monkeypatch):
-    """monkeyed failed discovery request.get"""
-    def monkeyed_deploy_handler_put(uri, **kwargs):
-        """monkeypatch for deploy_handler"""
-        return MockHttpResponse(
-            "put", uri,
-            {"server_instance_uuid": MockSettings.deploy_handler_instance_uuid},
-            status_code=413, **kwargs
-        )
+    os.environ.update({
+        Config.PDP_USER: "alex-PDP_USER",
+        Config.PDP_PWD: "alex-PDP_PWD",
+        Config.DMAAP_MR_USER: "alex-DMAAP_MR_USER",
+        Config.DMAAP_MR_PWD: "alex-DMAAP_MR_PWD"
+    })
+    Config._local_config._config = None
+    Config._pdp_authorization = None
+    Config._dmaap_mr_authorization = None
+    MockSettings.reinit_mock_config()
+    MockSettings.rediscover_config()
 
-    def monkeyed_deploy_handler_get(uri, **kwargs):
-        """monkeypatch policy-update request.get to deploy_handler"""
-        return MockHttpResponse("get", uri, MockDeploymentHandler.get_deployed_policies(),
-                                **kwargs)
+    _LOGGER.info("fix_pdp_authorization %s, %s: %s:%s %s:%s",
+                 json.dumps(Config._pdp_authorization), json.dumps(Config._dmaap_mr_authorization),
+                 os.environ.get(Config.PDP_USER), os.environ.get(Config.PDP_PWD),
+                 os.environ.get(Config.DMAAP_MR_USER), os.environ.get(Config.DMAAP_MR_PWD))
 
-    _LOGGER.info("setup fix_deploy_handler_413")
-    audit = None
-    if DeployHandler._lazy_inited is False:
-        audit = Audit(req_message="fix_deploy_handler_413")
-        DeployHandler._lazy_init(audit)
+    yield fix_pdp_authorization
 
-    monkeypatch.setattr('policyhandler.deploy_handler.DeployHandler._requests_session.put',
-                        monkeyed_deploy_handler_put)
-    monkeypatch.setattr('policyhandler.deploy_handler.DeployHandler._requests_session.get',
-                        monkeyed_deploy_handler_get)
+    del os.environ[Config.PDP_USER]
+    del os.environ[Config.PDP_PWD]
+    del os.environ[Config.DMAAP_MR_USER]
+    del os.environ[Config.DMAAP_MR_PWD]
 
-    yield fix_deploy_handler_413
-    if audit:
-        audit.audit_done("teardown")
-    _LOGGER.info("teardown fix_deploy_handler_413")
-
-
-@pytest.fixture()
-def fix_deploy_handler_404(monkeypatch):
-    """monkeyed failed discovery request.get"""
-    def monkeyed_deploy_handler_put(uri, **kwargs):
-        """monkeypatch for deploy_handler"""
-        return MockHttpResponse("put", uri, MockDeploymentHandler.default_response(),
-                                **kwargs)
-
-    def monkeyed_deploy_handler_get(uri, **kwargs):
-        """monkeypatch policy-update request.get to deploy_handler"""
-        return MockHttpResponse("get", uri, MockDeploymentHandler.default_response(),
-                                **kwargs)
-
-    _LOGGER.info("setup fix_deploy_handler_404")
-    audit = None
-    if DeployHandler._lazy_inited is False:
-        audit = Audit(req_message="fix_deploy_handler_404")
-        DeployHandler._lazy_init(audit)
-
-    monkeypatch.setattr('policyhandler.deploy_handler.DeployHandler._requests_session.put',
-                        monkeyed_deploy_handler_put)
-    monkeypatch.setattr('policyhandler.deploy_handler.DeployHandler._requests_session.get',
-                        monkeyed_deploy_handler_get)
-
-    yield fix_deploy_handler_404
-    if audit:
-        audit.audit_done("teardown")
-    _LOGGER.info("teardown fix_deploy_handler_404")
+    Config._local_config._config = None
+    Config._pdp_authorization = None
+    Config._dmaap_mr_authorization = None
+    MockSettings.reinit_mock_config()
+    MockSettings.rediscover_config(prev_config)
+    _LOGGER.info("teardown fix_pdp_authorization %s, %s: %s:%s %s:%s",
+                 json.dumps(Config._pdp_authorization), json.dumps(Config._dmaap_mr_authorization),
+                 os.environ.get(Config.PDP_USER), os.environ.get(Config.PDP_PWD),
+                 os.environ.get(Config.DMAAP_MR_USER), os.environ.get(Config.DMAAP_MR_PWD))
diff --git a/tests/etc_config.json b/tests/etc_config.json
index d7715b2..c5df55c 100644
--- a/tests/etc_config.json
+++ b/tests/etc_config.json
@@ -7,7 +7,7 @@
         "system" : "policy_handler",
         "tls" : {
             "cert_directory" : "etc/tls/certs/",
-            "cacert" : "att_internal_root.crt",
+            "cacert" : "cacert.crt",
             "private_key" : "key.pem",
             "server_cert" : "cert.pem",
             "server_ca_chain" : "ca_chain.pem"
diff --git a/tests/main/conftest.py b/tests/main/conftest.py
index c985380..11f5d0b 100644
--- a/tests/main/conftest.py
+++ b/tests/main/conftest.py
@@ -1,5 +1,5 @@
 # ============LICENSE_START=======================================================
-# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2019-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -15,42 +15,87 @@
 # ============LICENSE_END=========================================================
 #
 """
-startdard pytest file that contains the shared fixtures
+standard pytest file that contains the shared fixtures
 https://docs.pytest.org/en/latest/fixture.html
 """
 
-import pytest
+import time
 
+import pytest
 from policyhandler import pdp_client
-from policyhandler.pdp_api.pdp_consts import PDP_POLICY_ID, PDP_REQ_RESOURCE
+from policyhandler.deploy_handler import DeployHandler
+from policyhandler.onap.audit import Audit
+from policyhandler.pdp_api.dmaap_mr import DmaapMr
 from policyhandler.utils import Utils
 
 from ..mock_tracker import MockHttpResponse
-from .mock_policy_engine import MockPolicyEngine
 
 _LOGGER = Utils.get_logger(__file__)
 
-@pytest.fixture(scope="session", autouse=True)
-def _auto_setup_policy_engine():
-    """initialize the mock-policy-engine per the whole test session"""
-    _LOGGER.info("create _auto_setup_policy_engine")
-    MockPolicyEngine.init()
-    yield _auto_setup_policy_engine
-    _LOGGER.info("teardown _auto_setup_policy_engine")
-
 @pytest.fixture()
 def fix_pdp_post(monkeypatch):
     """monkeyed request /decision/v1 to PDP"""
     def monkeyed_policy_rest_post(uri, json=None, **kwargs):
         """monkeypatch for the POST to policy-engine"""
-        policy_ids = json.get(PDP_REQ_RESOURCE, {}).get(PDP_POLICY_ID)
-        policy_id = policy_ids and policy_ids[0]
-        res_json = MockPolicyEngine.get_policy(policy_id)
-        return MockHttpResponse("post", uri, res_json, json=json, **kwargs)
+        return MockHttpResponse("post", uri, json=json, **kwargs)
 
     _LOGGER.info("setup fix_pdp_post")
+    pdp_client.PolicyRest._lazy_inited = False
     pdp_client.PolicyRest._lazy_init()
     monkeypatch.setattr('policyhandler.pdp_client.PolicyRest._requests_session.post',
                         monkeyed_policy_rest_post)
     yield fix_pdp_post
     _LOGGER.info("teardown fix_pdp_post")
+
+@pytest.fixture()
+def fix_deploy_handler(monkeypatch):
+    """monkeyed requests to deployment-handler"""
+    def monkeyed_deploy_handler_put(uri, **kwargs):
+        """monkeypatch for policy-update request.put to deploy_handler"""
+        return MockHttpResponse("put", uri, **kwargs)
+
+    def monkeyed_deploy_handler_get(uri, **kwargs):
+        """monkeypatch policy-update request.get to deploy_handler"""
+        return MockHttpResponse("get", uri, **kwargs)
+
+    _LOGGER.info("setup fix_deploy_handler")
+    audit = None
+    if DeployHandler._lazy_inited is False:
+        audit = Audit(req_message="fix_deploy_handler")
+        DeployHandler._lazy_init(audit)
+
+    monkeypatch.setattr('policyhandler.deploy_handler.DeployHandler._requests_session.put',
+                        monkeyed_deploy_handler_put)
+    monkeypatch.setattr('policyhandler.deploy_handler.DeployHandler._requests_session.get',
+                        monkeyed_deploy_handler_get)
+
+    yield fix_deploy_handler
+    if audit:
+        audit.audit_done("teardown")
+    _LOGGER.info("teardown fix_deploy_handler")
+
+@pytest.fixture()
+def fix_dmaap_mr(monkeypatch):
+    """monkeyed requests to dmaap_mr"""
+    def monkeyed_dmaap_mr_get(uri, **kwargs):
+        """monkeypatch policy-update request.get to dmaap_mr"""
+        if kwargs.get("params"):
+            _LOGGER.info("--- fix_dmaap_mr --- sleeping 3 secs...")
+            time.sleep(3)
+        else:
+            _LOGGER.info("--- fix_dmaap_mr --- sleeping 0.5 secs...")
+            time.sleep(0.5)
+        _LOGGER.info("--- fix_dmaap_mr --- send back the response")
+        return MockHttpResponse("get", uri, **kwargs)
+
+    _LOGGER.info("setup fix_dmaap_mr")
+    audit = Audit(req_message="fix_dmaap_mr")
+    DmaapMr._lazy_inited = False
+    DmaapMr._lazy_init(audit)
+
+    monkeypatch.setattr('policyhandler.pdp_api.dmaap_mr.DmaapMr._requests_session.get',
+                        monkeyed_dmaap_mr_get)
+
+    yield fix_dmaap_mr
+    audit.audit_done("teardown")
+    _LOGGER.info("teardown fix_dmaap_mr")
diff --git a/tests/main/expectations.json b/tests/main/expectations.json
new file mode 100644
index 0000000..4f93930
--- /dev/null
+++ b/tests/main/expectations.json
@@ -0,0 +1,2839 @@
+{
+    "tests/main/test_policyhandler.py::WebServerTest::test_web_all_policies_latest": [
+        {
+            "request": {
+                "headers": {
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_Lorem",
+                        "policy_versions": {
+                            "0": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_amet": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_amet",
+                        "policy_versions": {
+                            "5.5.5": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ametist": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ametist",
+                        "policy_versions": {
+                            "6": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_consectetur": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_consectetur",
+                        "policy_versions": {
+                            "5": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_dolor": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_dolor",
+                        "policy_versions": {
+                            "2": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ipsum": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ipsum",
+                        "policy_versions": {
+                            "1": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_sit": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_sit",
+                        "policy_versions": {
+                            "3": true
+                        }
+                    }
+                },
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Accept": "application/json",
+                    "Authorization": "Basic auth",
+                    "ClientAuth": "Basic user",
+                    "Content-Type": "application/json",
+                    "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": {
+                    "ONAPComponent": "policy_handler",
+                    "ONAPInstance": "*",
+                    "ONAPName": "DCAE",
+                    "action": "configure",
+                    "resource": {
+                        "policy-id": [
+                            "test_scope_prefix.pdp_decision_Lorem",
+                            "test_scope_prefix.pdp_decision_amet",
+                            "test_scope_prefix.pdp_decision_ametist",
+                            "test_scope_prefix.pdp_decision_consectetur",
+                            "test_scope_prefix.pdp_decision_dolor",
+                            "test_scope_prefix.pdp_decision_ipsum",
+                            "test_scope_prefix.pdp_decision_sit"
+                        ]
+                    }
+                },
+                "method": "post",
+                "params": null,
+                "uri": "https://unit-test-pdp-server:8081000/decision/v1/"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_Lorem",
+                            "policy-id": "test_scope_prefix.pdp_decision_Lorem",
+                            "policy-version": "1.1.1"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 0,
+                            "policy_updated_to_ver": 1,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_amet": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_amet",
+                            "policy-id": "test_scope_prefix.pdp_decision_amet",
+                            "policy-version": "5.5.5"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 4,
+                            "policy_updated_to_ver": 5,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_amet"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_ametist": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_ametist",
+                            "policy-id": "test_scope_prefix.pdp_decision_ametist",
+                            "policy-version": "7.7.7"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 6,
+                            "policy_updated_to_ver": 7,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_ametist"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_consectetur": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_consectetur",
+                            "policy-id": "test_scope_prefix.pdp_decision_consectetur",
+                            "policy-version": "6.6.6"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 5,
+                            "policy_updated_to_ver": 6,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_consectetur"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_dolor": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_dolor",
+                            "policy-id": "test_scope_prefix.pdp_decision_dolor",
+                            "policy-version": "3.3.3"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 2,
+                            "policy_updated_to_ver": 3,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_dolor"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_ipsum": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_ipsum",
+                            "policy-id": "test_scope_prefix.pdp_decision_ipsum",
+                            "policy-version": "2.2.2"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 1,
+                            "policy_updated_to_ver": 2,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_ipsum"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_sit": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_sit",
+                            "policy-id": "test_scope_prefix.pdp_decision_sit",
+                            "policy-version": "4.4.4"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 3,
+                            "policy_updated_to_ver": 4,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_sit"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    }
+                }
+            },
+            "status_code": 200
+        }
+    ],
+    "tests/main/test_policyhandler.py::WebServerTest::test_web_policies_latest": [
+        {
+            "request": {
+                "headers": {
+                    "Accept": "application/json",
+                    "Authorization": "Basic auth",
+                    "ClientAuth": "Basic user",
+                    "Content-Type": "application/json",
+                    "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": {
+                    "policyName": "test_scope_prefix.Config_amet.*"
+                },
+                "method": "post",
+                "params": null,
+                "uri": "https://unit-test-pdp-server:8081000/decision/v1/"
+            },
+            "res": "*",
+            "status_code": 200
+        }
+    ],
+    "tests/main/test_policyhandler.py::WebServerTest::test_web_policy_latest": [
+        {
+            "request": {
+                "headers": {
+                    "Accept": "application/json",
+                    "Authorization": "Basic auth",
+                    "ClientAuth": "Basic user",
+                    "Content-Type": "application/json",
+                    "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": {
+                    "ONAPComponent": "policy_handler",
+                    "ONAPInstance": "*",
+                    "ONAPName": "DCAE",
+                    "action": "configure",
+                    "resource": {
+                        "policy-id": [
+                            "test_scope_prefix.pdp_decision_sit"
+                        ]
+                    }
+                },
+                "method": "post",
+                "params": null,
+                "uri": "https://unit-test-pdp-server:8081000/decision/v1/"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_sit": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_sit",
+                            "policy-id": "test_scope_prefix.pdp_decision_sit",
+                            "policy-version": "4.4.4"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 3,
+                            "policy_updated_to_ver": 4,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_sit"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    }
+                }
+            },
+            "status_code": 200
+        }
+    ],
+    "tests/main/test_policyhandler.py::WebServerTest::test_zzzzz_shutdown": [
+        {
+            "request": {
+                "headers": {
+                    "Authorization": "Basic auth",
+                    "Content-Type": "application/json",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": null,
+                "uri": "https://unit-test-dmaap-mr:280800000/events/unit-test-topicname/unit-test-consumegroup/unit-test-consumerid"
+                },
+            "res": ["garbage-to-be-ignored"],
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_Lorem",
+                        "policy_versions": {
+                            "0": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_amet": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_amet",
+                        "policy_versions": {
+                            "5.5.5": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ametist": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ametist",
+                        "policy_versions": {
+                            "6": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_consectetur": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_consectetur",
+                        "policy_versions": {
+                            "5": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_dolor": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_dolor",
+                        "policy_versions": {
+                            "2": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ipsum": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ipsum",
+                        "policy_versions": {
+                            "1": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_sit": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_sit",
+                        "policy_versions": {
+                            "3": true
+                        }
+                    }
+                },
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Accept": "application/json",
+                    "Authorization": "Basic auth",
+                    "ClientAuth": "Basic user",
+                    "Content-Type": "application/json",
+                    "Environment": "TEST",
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "ONAPComponent": "policy_handler",
+                    "ONAPInstance": "*",
+                    "ONAPName": "DCAE",
+                    "action": "configure",
+                    "resource": {
+                        "policy-id": [
+                            "test_scope_prefix.pdp_decision_Lorem",
+                            "test_scope_prefix.pdp_decision_amet",
+                            "test_scope_prefix.pdp_decision_ametist",
+                            "test_scope_prefix.pdp_decision_consectetur",
+                            "test_scope_prefix.pdp_decision_dolor",
+                            "test_scope_prefix.pdp_decision_ipsum",
+                            "test_scope_prefix.pdp_decision_sit"
+                        ]
+                    }
+                },
+                "method": "post",
+                "params": null,
+                "uri": "https://unit-test-pdp-server:8081000/decision/v1/"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_Lorem",
+                            "policy-id": "test_scope_prefix.pdp_decision_Lorem",
+                            "policy-version": "1.1.1"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 0,
+                            "policy_updated_to_ver": 1,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_amet": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_amet",
+                            "policy-id": "test_scope_prefix.pdp_decision_amet",
+                            "policy-version": "5.5.5"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 4,
+                            "policy_updated_to_ver": 5,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_amet"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_ametist": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_ametist",
+                            "policy-id": "test_scope_prefix.pdp_decision_ametist",
+                            "policy-version": "7.7.7"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 6,
+                            "policy_updated_to_ver": 7,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_ametist"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_consectetur": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_consectetur",
+                            "policy-id": "test_scope_prefix.pdp_decision_consectetur",
+                            "policy-version": "6.6.6"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 5,
+                            "policy_updated_to_ver": 6,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_consectetur"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_dolor": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_dolor",
+                            "policy-id": "test_scope_prefix.pdp_decision_dolor",
+                            "policy-version": "3.3.3"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 2,
+                            "policy_updated_to_ver": 3,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_dolor"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_ipsum": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_ipsum",
+                            "policy-id": "test_scope_prefix.pdp_decision_ipsum",
+                            "policy-version": "2.2.2"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 1,
+                            "policy_updated_to_ver": 2,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_ipsum"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_sit": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_sit",
+                            "policy-id": "test_scope_prefix.pdp_decision_sit",
+                            "policy-version": "4.4.4"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 3,
+                            "policy_updated_to_ver": 4,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_sit"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    }
+                }
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "catch_up": true,
+                    "latest_policies": {
+                        "test_scope_prefix.pdp_decision_Lorem": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 0,
+                                    "policy_updated_to_ver": 1,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_Lorem",
+                                    "policy-id": "test_scope_prefix.pdp_decision_Lorem",
+                                    "policy-version": "1.1.1"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_Lorem.1-1-1.xml",
+                                "policyVersion": "1.1.1",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                        },
+                        "test_scope_prefix.pdp_decision_ametist": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 6,
+                                    "policy_updated_to_ver": 7,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_ametist"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_ametist",
+                                    "policy-id": "test_scope_prefix.pdp_decision_ametist",
+                                    "policy-version": "7.7.7"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_ametist.7-7-7.xml",
+                                "policyVersion": "7.7.7",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_ametist"
+                        },
+                        "test_scope_prefix.pdp_decision_consectetur": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 5,
+                                    "policy_updated_to_ver": 6,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_consectetur"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_consectetur",
+                                    "policy-id": "test_scope_prefix.pdp_decision_consectetur",
+                                    "policy-version": "6.6.6"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_consectetur.6-6-6.xml",
+                                "policyVersion": "6.6.6",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_consectetur"
+                        },
+                        "test_scope_prefix.pdp_decision_dolor": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 2,
+                                    "policy_updated_to_ver": 3,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_dolor"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_dolor",
+                                    "policy-id": "test_scope_prefix.pdp_decision_dolor",
+                                    "policy-version": "3.3.3"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_dolor.3-3-3.xml",
+                                "policyVersion": "3.3.3",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_dolor"
+                        },
+                        "test_scope_prefix.pdp_decision_ipsum": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 1,
+                                    "policy_updated_to_ver": 2,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_ipsum"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_ipsum",
+                                    "policy-id": "test_scope_prefix.pdp_decision_ipsum",
+                                    "policy-version": "2.2.2"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_ipsum.2-2-2.xml",
+                                "policyVersion": "2.2.2",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_ipsum"
+                        },
+                        "test_scope_prefix.pdp_decision_sit": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 3,
+                                    "policy_updated_to_ver": 4,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_sit"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_sit",
+                                    "policy-id": "test_scope_prefix.pdp_decision_sit",
+                                    "policy-version": "4.4.4"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_sit.4-4-4.xml",
+                                "policyVersion": "4.4.4",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_sit"
+                        }
+                    },
+                    "policy_filter_matches": {},
+                    "removed_policies": {}
+                },
+                "method": "put",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Authorization": "Basic auth",
+                    "Content-Type": "application/json",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "timeout": 15000
+                },
+                "uri": "https://unit-test-dmaap-mr:280800000/events/unit-test-topicname/unit-test-consumegroup/unit-test-consumerid"
+                },
+            "res": [],
+            "status_code": 200
+        }
+    ],
+    "tests/main/test_policyhandler.py::WebServerTest::test_zzz_policy_updates_and_catch_ups": [
+        {
+            "request": {
+                "headers": {
+                    "Authorization": "Basic auth",
+                    "Content-Type": "application/json",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": null,
+                "uri": "https://unit-test-dmaap-mr:280800000/events/unit-test-topicname/unit-test-consumegroup/unit-test-consumerid"
+                },
+            "res": ["garbage-to-be-ignored"],
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_Lorem",
+                        "policy_versions": {
+                            "0": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_amet": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_amet",
+                        "policy_versions": {
+                            "5.5.5": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ametist": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ametist",
+                        "policy_versions": {
+                            "6": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_consectetur": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_consectetur",
+                        "policy_versions": {
+                            "5": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_dolor": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_dolor",
+                        "policy_versions": {
+                            "2": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ipsum": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ipsum",
+                        "policy_versions": {
+                            "1": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_sit": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_sit",
+                        "policy_versions": {
+                            "3": true
+                        }
+                    }
+                },
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Accept": "application/json",
+                    "Authorization": "Basic auth",
+                    "ClientAuth": "Basic user",
+                    "Content-Type": "application/json",
+                    "Environment": "TEST",
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "ONAPComponent": "policy_handler",
+                    "ONAPInstance": "*",
+                    "ONAPName": "DCAE",
+                    "action": "configure",
+                    "resource": {
+                        "policy-id": [
+                            "test_scope_prefix.pdp_decision_Lorem",
+                            "test_scope_prefix.pdp_decision_amet",
+                            "test_scope_prefix.pdp_decision_ametist",
+                            "test_scope_prefix.pdp_decision_consectetur",
+                            "test_scope_prefix.pdp_decision_dolor",
+                            "test_scope_prefix.pdp_decision_ipsum",
+                            "test_scope_prefix.pdp_decision_sit"
+                        ]
+                    }
+                },
+                "method": "post",
+                "params": null,
+                "uri": "https://unit-test-pdp-server:8081000/decision/v1/"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_Lorem",
+                            "policy-id": "test_scope_prefix.pdp_decision_Lorem",
+                            "policy-version": "1.1.1"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 0,
+                            "policy_updated_to_ver": 1,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_amet": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_amet",
+                            "policy-id": "test_scope_prefix.pdp_decision_amet",
+                            "policy-version": "5.5.5"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 4,
+                            "policy_updated_to_ver": 5,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_amet"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_ametist": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_ametist",
+                            "policy-id": "test_scope_prefix.pdp_decision_ametist",
+                            "policy-version": "7.7.7"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 6,
+                            "policy_updated_to_ver": 7,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_ametist"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_consectetur": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_consectetur",
+                            "policy-id": "test_scope_prefix.pdp_decision_consectetur",
+                            "policy-version": "6.6.6"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 5,
+                            "policy_updated_to_ver": 6,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_consectetur"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_dolor": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_dolor",
+                            "policy-id": "test_scope_prefix.pdp_decision_dolor",
+                            "policy-version": "3.3.3"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 2,
+                            "policy_updated_to_ver": 3,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_dolor"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_ipsum": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_ipsum",
+                            "policy-id": "test_scope_prefix.pdp_decision_ipsum",
+                            "policy-version": "2.2.2"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 1,
+                            "policy_updated_to_ver": 2,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_ipsum"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_sit": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_sit",
+                            "policy-id": "test_scope_prefix.pdp_decision_sit",
+                            "policy-version": "4.4.4"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 3,
+                            "policy_updated_to_ver": 4,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_sit"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    }
+                }
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "catch_up": true,
+                    "latest_policies": {
+                        "test_scope_prefix.pdp_decision_Lorem": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 0,
+                                    "policy_updated_to_ver": 1,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_Lorem",
+                                    "policy-id": "test_scope_prefix.pdp_decision_Lorem",
+                                    "policy-version": "1.1.1"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_Lorem.1-1-1.xml",
+                                "policyVersion": "1.1.1",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                        },
+                        "test_scope_prefix.pdp_decision_ametist": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 6,
+                                    "policy_updated_to_ver": 7,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_ametist"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_ametist",
+                                    "policy-id": "test_scope_prefix.pdp_decision_ametist",
+                                    "policy-version": "7.7.7"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_ametist.7-7-7.xml",
+                                "policyVersion": "7.7.7",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_ametist"
+                        },
+                        "test_scope_prefix.pdp_decision_consectetur": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 5,
+                                    "policy_updated_to_ver": 6,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_consectetur"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_consectetur",
+                                    "policy-id": "test_scope_prefix.pdp_decision_consectetur",
+                                    "policy-version": "6.6.6"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_consectetur.6-6-6.xml",
+                                "policyVersion": "6.6.6",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_consectetur"
+                        },
+                        "test_scope_prefix.pdp_decision_dolor": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 2,
+                                    "policy_updated_to_ver": 3,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_dolor"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_dolor",
+                                    "policy-id": "test_scope_prefix.pdp_decision_dolor",
+                                    "policy-version": "3.3.3"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_dolor.3-3-3.xml",
+                                "policyVersion": "3.3.3",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_dolor"
+                        },
+                        "test_scope_prefix.pdp_decision_ipsum": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 1,
+                                    "policy_updated_to_ver": 2,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_ipsum"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_ipsum",
+                                    "policy-id": "test_scope_prefix.pdp_decision_ipsum",
+                                    "policy-version": "2.2.2"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_ipsum.2-2-2.xml",
+                                "policyVersion": "2.2.2",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_ipsum"
+                        },
+                        "test_scope_prefix.pdp_decision_sit": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 3,
+                                    "policy_updated_to_ver": 4,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_sit"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_sit",
+                                    "policy-id": "test_scope_prefix.pdp_decision_sit",
+                                    "policy-version": "4.4.4"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_sit.4-4-4.xml",
+                                "policyVersion": "4.4.4",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_sit"
+                        }
+                    },
+                    "policy_filter_matches": {},
+                    "removed_policies": {}
+                },
+                "method": "put",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Authorization": "Basic auth",
+                    "Content-Type": "application/json",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "timeout": 15000
+                },
+                "uri": "https://unit-test-dmaap-mr:280800000/events/unit-test-topicname/unit-test-consumegroup/unit-test-consumerid"
+            },
+            "res": [
+                "{\"deployed-policies\":[{\"policy-type\":\"onap.policies.monitoring.cdap.tca.hi.lo.app\",\"policy-type-version\":\"1.0.0\",\"policy-id\":\"test_scope_prefix.pdp_decision_Lorem\",\"policy-version\":\"1.1.1-update1\",\"success-count\":3,\"failure-count\":0}],\"undeployed-policies\":[{\"policy-type\":\"onap.policies.monitoring.cdap.tca.hi.lo.app\",\"policy-type-version\":\"1.0.0\",\"policy-id\":\"test_scope_prefix.pdp_decision_Lorem\",\"policy-version\":\"1.1.1\",\"success-count\":3,\"failure-count\":0}]}"
+            ],
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_Lorem",
+                        "policy_versions": {
+                            "1.1.1": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_amet": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_amet",
+                        "policy_versions": {
+                            "5.5.5": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ametist": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ametist",
+                        "policy_versions": {
+                            "7.7.7": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_consectetur": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_consectetur",
+                        "policy_versions": {
+                            "6.6.6": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_dolor": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_dolor",
+                        "policy_versions": {
+                            "3.3.3": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ipsum": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ipsum",
+                        "policy_versions": {
+                            "2.2.2": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_sit": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_sit",
+                        "policy_versions": {
+                            "4.4.4": true
+                        }
+                    }
+                },
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Accept": "application/json",
+                    "Authorization": "Basic auth",
+                    "ClientAuth": "Basic user",
+                    "Content-Type": "application/json",
+                    "Environment": "TEST",
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "ONAPComponent": "policy_handler",
+                    "ONAPInstance": "*",
+                    "ONAPName": "DCAE",
+                    "action": "configure",
+                    "resource": {
+                        "policy-id": [
+                            "test_scope_prefix.pdp_decision_Lorem"
+                        ]
+                    }
+                },
+                "method": "post",
+                "params": null,
+                "uri": "https://unit-test-pdp-server:8081000/decision/v1/"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_Lorem",
+                            "policy-id": "test_scope_prefix.pdp_decision_Lorem",
+                            "policy-version": "1.1.1"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 0,
+                            "policy_updated_to_ver": 1,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    }
+                }
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Authorization": "Basic auth",
+                    "Content-Type": "application/json",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "timeout": 15000
+                },
+                "uri": "https://unit-test-dmaap-mr:280800000/events/unit-test-topicname/unit-test-consumegroup/unit-test-consumerid"
+                },
+            "res": [],
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Accept": "application/json",
+                    "Authorization": "Basic auth",
+                    "ClientAuth": "Basic user",
+                    "Content-Type": "application/json",
+                    "Environment": "TEST",
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "ONAPComponent": "policy_handler",
+                    "ONAPInstance": "*",
+                    "ONAPName": "DCAE",
+                    "action": "configure",
+                    "resource": {
+                        "policy-id": [
+                            "test_scope_prefix.pdp_decision_Lorem"
+                        ]
+                    }
+                },
+                "method": "post",
+                "params": null,
+                "uri": "https://unit-test-pdp-server:8081000/decision/v1/"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_Lorem",
+                            "policy-id": "test_scope_prefix.pdp_decision_Lorem",
+                            "policy-version": "1.1.1-update1"
+                        },
+                        "properties": {
+                            "policy_hello": "world! - updated 1",
+                            "policy_updated_from_ver": "1.1.1",
+                            "policy_updated_to_ver": "1.1.1-update1",
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    }
+                }
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "catch_up": false,
+                    "latest_policies": {
+                        "test_scope_prefix.pdp_decision_Lorem": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world! - updated 1",
+                                    "policy_updated_from_ver": "1.1.1",
+                                    "policy_updated_to_ver": "1.1.1-update1",
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_Lorem",
+                                    "policy-id": "test_scope_prefix.pdp_decision_Lorem",
+                                    "policy-version": "1.1.1-update1"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_Lorem.1-1-1-update1.xml",
+                                "policyVersion": "1.1.1-update1",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                        }
+                    },
+                    "policy_filter_matches": {},
+                    "removed_policies": {}
+                },
+                "method": "put",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Authorization": "Basic auth",
+                    "Content-Type": "application/json",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "timeout": 15000
+                },
+                "uri": "https://unit-test-dmaap-mr:280800000/events/unit-test-topicname/unit-test-consumegroup/unit-test-consumerid"
+                },
+            "res": [
+                "{\"deployed-policies\":[{\"policy-type\":\"onap.policies.testing\",\"policy-type-version\":\"99.0.0\",\"policy-id\":\"not-dcae.expect-be-ignored-55\",\"policy-version\":\"522.522.522\",\"success-count\":3,\"failure-count\":0}],\"undeployed-policies\":[{\"policy-type\":\"onap.policies.testing\",\"policy-type-version\":\"9.0.0\",\"policy-id\":\"test_scope_prefix.pdp_decision_ipsum\",\"policy-version\":\"2.2.2\",\"success-count\":3,\"failure-count\":0},{\"policy-type\":\"onap.policies.testing\",\"policy-type-version\":\"9.0.0\",\"policy-id\":\"not-dcae.expect-be-ignored\",\"policy-version\":\"22.22.22\",\"success-count\":3,\"failure-count\":0}]}",
+                "{\"deployed-policies\":[{\"policy-type\":\"onap.policies.testing\",\"policy-type-version\":\"99.9.9\",\"policy-id\":\"not-dcae.expect-be-ignored-55\",\"policy-version\":\"5522.5522.522\",\"success-count\":3,\"failure-count\":0}],\"undeployed-policies\":[{\"policy-type\":\"onap.policies.testing\",\"policy-type-version\":\"9.0.0\",\"policy-id\":\"not-dcae.expect-be-ignored\",\"policy-version\":\"22.22.22\",\"success-count\":3,\"failure-count\":0}]}"
+            ],
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_Lorem",
+                        "policy_versions": {
+                            "1.1.1-update1": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_amet": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_amet",
+                        "policy_versions": {
+                            "5.5.5": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ametist": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ametist",
+                        "policy_versions": {
+                            "7.7.7": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_consectetur": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_consectetur",
+                        "policy_versions": {
+                            "6.6.6": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_dolor": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_dolor",
+                        "policy_versions": {
+                            "3.3.3": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ipsum": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ipsum",
+                        "policy_versions": {
+                            "2.2.2": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_sit": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_sit",
+                        "policy_versions": {
+                            "4.4.4": true
+                        }
+                    }
+                },
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Accept": "application/json",
+                    "Authorization": "Basic auth",
+                    "ClientAuth": "Basic user",
+                    "Content-Type": "application/json",
+                    "Environment": "TEST",
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "ONAPComponent": "policy_handler",
+                    "ONAPInstance": "*",
+                    "ONAPName": "DCAE",
+                    "action": "configure",
+                    "resource": {
+                        "policy-id": [
+                            "test_scope_prefix.pdp_decision_ipsum"
+                        ]
+                    }
+                },
+                "method": "post",
+                "params": null,
+                "uri": "https://unit-test-pdp-server:8081000/decision/v1/"
+            },
+            "res": {
+                "policies": {}
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "catch_up": false,
+                    "latest_policies": {},
+                    "policy_filter_matches": {},
+                    "removed_policies": {
+                        "test_scope_prefix.pdp_decision_ipsum": true
+                    }
+                },
+                "method": "put",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Authorization": "Basic auth",
+                    "Content-Type": "application/json",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "timeout": 15000
+                },
+                "uri": "https://unit-test-dmaap-mr:280800000/events/unit-test-topicname/unit-test-consumegroup/unit-test-consumerid"
+                },
+            "res": [
+                "{\"deployed-policies\":[{\"policy-type\":\"onap.policies.monitoring.cdap.tca.hi.lo.app\",\"policy-type-version\":\"1.0.0\",\"policy-id\":\"test_scope_prefix.pdp_decision_Lorem\",\"policy-version\":\"1.1.1-update1\",\"success-count\":3,\"failure-count\":0}],\"undeployed-policies\":[{\"policy-type\":\"onap.policies.monitoring.cdap.tca.hi.lo.app\",\"policy-type-version\":\"1.0.0\",\"policy-id\":\"test_scope_prefix.pdp_decision_Lorem\",\"policy-version\":\"1.1.1\",\"success-count\":3,\"failure-count\":0}]}",
+                "{\"deployed-policies\":[{\"policy-type\":\"onap.policies.monitoring.cdap.tca.hi.lo.app\",\"policy-type-version\":\"1.0.0\",\"policy-id\":\"test_scope_prefix.pdp_decision_Lorem\",\"policy-version\":\"1.1.1-update2\",\"success-count\":3,\"failure-count\":0}],\"undeployed-policies\":[{\"policy-type\":\"onap.policies.monitoring.cdap.tca.hi.lo.app\",\"policy-type-version\":\"1.0.0\",\"policy-id\":\"test_scope_prefix.pdp_decision_Lorem\",\"policy-version\":\"1.1.1-update1\",\"success-count\":3,\"failure-count\":0}]}",
+                "{\"deployed-policies\":[{\"policy-type\":\"onap.policies.monitoring.cdap.tca.hi.lo.app\",\"policy-type-version\":\"1.0.0\",\"policy-id\":\"test_scope_prefix.pdp_decision_Lorem\",\"policy-version\":\"1.1.1-update3\",\"success-count\":3,\"failure-count\":0}],\"undeployed-policies\":[{\"policy-type\":\"onap.policies.monitoring.cdap.tca.hi.lo.app\",\"policy-type-version\":\"1.0.0\",\"policy-id\":\"test_scope_prefix.pdp_decision_Lorem\",\"policy-version\":\"1.1.1-update2\",\"success-count\":3,\"failure-count\":0}]}"
+            ],
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_Lorem",
+                        "policy_versions": {
+                            "1.1.1": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_amet": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_amet",
+                        "policy_versions": {
+                            "5.5.5": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ametist": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ametist",
+                        "policy_versions": {
+                            "7.7.7": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_consectetur": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_consectetur",
+                        "policy_versions": {
+                            "6.6.6": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_dolor": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_dolor",
+                        "policy_versions": {
+                            "3.3.3": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ipsum": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ipsum",
+                        "policy_versions": {
+                            "2.2.2": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_sit": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_sit",
+                        "policy_versions": {
+                            "4.4.4": true
+                        }
+                    }
+                },
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Accept": "application/json",
+                    "Authorization": "Basic auth",
+                    "ClientAuth": "Basic user",
+                    "Content-Type": "application/json",
+                    "Environment": "TEST",
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "ONAPComponent": "policy_handler",
+                    "ONAPInstance": "*",
+                    "ONAPName": "DCAE",
+                    "action": "configure",
+                    "resource": {
+                        "policy-id": [
+                            "test_scope_prefix.pdp_decision_Lorem"
+                        ]
+                    }
+                },
+                "method": "post",
+                "params": null,
+                "uri": "https://unit-test-pdp-server:8081000/decision/v1/"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_Lorem",
+                            "policy-id": "test_scope_prefix.pdp_decision_Lorem",
+                            "policy-version": "1.1.1-update3"
+                        },
+                        "properties": {
+                            "policy_hello": "world! - updated 3",
+                            "policy_updated_from_ver": "1.1.1-update2",
+                            "policy_updated_to_ver": "1.1.1-update3",
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    }
+                }
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "catch_up": false,
+                    "latest_policies": {
+                        "test_scope_prefix.pdp_decision_Lorem": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world! - updated 3",
+                                    "policy_updated_from_ver": "1.1.1-update2",
+                                    "policy_updated_to_ver": "1.1.1-update3",
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_Lorem",
+                                    "policy-id": "test_scope_prefix.pdp_decision_Lorem",
+                                    "policy-version": "1.1.1-update3"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_Lorem.1-1-1-update3.xml",
+                                "policyVersion": "1.1.1-update3",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                        }
+                    },
+                    "policy_filter_matches": {},
+                    "removed_policies": {}
+                },
+                "method": "put",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Authorization": "Basic auth",
+                    "Content-Type": "application/json",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "timeout": 15000
+                },
+                "uri": "https://unit-test-dmaap-mr:280800000/events/unit-test-topicname/unit-test-consumegroup/unit-test-consumerid"
+                },
+            "res": [],
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Authorization": "Basic auth",
+                    "Content-Type": "application/json",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "timeout": 15000
+                },
+                "uri": "https://unit-test-dmaap-mr:280800000/events/unit-test-topicname/unit-test-consumegroup/unit-test-consumerid"
+                },
+            "res": [],
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Authorization": "Basic auth",
+                    "Content-Type": "application/json",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "timeout": 15000
+                },
+                "uri": "https://unit-test-dmaap-mr:280800000/events/unit-test-topicname/unit-test-consumegroup/unit-test-consumerid"
+                },
+            "res": [],
+            "status_code": 200
+        }
+    ],
+    "tests/main/test_pz_catch_up.py::test_catch_up": [
+        {
+            "request": {
+                "headers": {
+                    "Authorization": "Basic YWxleC1ETUFBUF9NUl9VU0VSOmFsZXgtRE1BQVBfTVJfUFdE",
+                    "Content-Type": "application/json",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": null,
+                "uri": "https://unit-test-dmaap-mr:280800000/events/unit-test-topicname/unit-test-consumegroup/unit-test-consumerid"
+                },
+            "res": ["garbage-to-be-ignored"],
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_Lorem",
+                        "policy_versions": {
+                            "0": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_amet": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_amet",
+                        "policy_versions": {
+                            "5.5.5": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ametist": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ametist",
+                        "policy_versions": {
+                            "6": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_consectetur": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_consectetur",
+                        "policy_versions": {
+                            "5": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_dolor": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_dolor",
+                        "policy_versions": {
+                            "2": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ipsum": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ipsum",
+                        "policy_versions": {
+                            "1": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_sit": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_sit",
+                        "policy_versions": {
+                            "3": true
+                        }
+                    }
+                },
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Accept": "application/json",
+                    "Authorization": "Basic YWxleC1QRFBfVVNFUjphbGV4LVBEUF9QV0Q=",
+                    "ClientAuth": "Basic user",
+                    "Content-Type": "application/json",
+                    "Environment": "TEST",
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "ONAPComponent": "policy_handler",
+                    "ONAPInstance": "*",
+                    "ONAPName": "DCAE",
+                    "action": "configure",
+                    "resource": {
+                        "policy-id": [
+                            "test_scope_prefix.pdp_decision_Lorem",
+                            "test_scope_prefix.pdp_decision_amet",
+                            "test_scope_prefix.pdp_decision_ametist",
+                            "test_scope_prefix.pdp_decision_consectetur",
+                            "test_scope_prefix.pdp_decision_dolor",
+                            "test_scope_prefix.pdp_decision_ipsum",
+                            "test_scope_prefix.pdp_decision_sit"
+                        ]
+                    }
+                },
+                "method": "post",
+                "params": null,
+                "uri": "https://unit-test-pdp-server:8081000/decision/v1/"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_Lorem",
+                            "policy-id": "test_scope_prefix.pdp_decision_Lorem",
+                            "policy-version": "1.1.1"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 0,
+                            "policy_updated_to_ver": 1,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_amet": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_amet",
+                            "policy-id": "test_scope_prefix.pdp_decision_amet",
+                            "policy-version": "5.5.5"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 4,
+                            "policy_updated_to_ver": 5,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_amet"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_ametist": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_ametist",
+                            "policy-id": "test_scope_prefix.pdp_decision_ametist",
+                            "policy-version": "7.7.7"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 6,
+                            "policy_updated_to_ver": 7,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_ametist"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_consectetur": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_consectetur",
+                            "policy-id": "test_scope_prefix.pdp_decision_consectetur",
+                            "policy-version": "6.6.6"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 5,
+                            "policy_updated_to_ver": 6,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_consectetur"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_dolor": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_dolor",
+                            "policy-id": "test_scope_prefix.pdp_decision_dolor",
+                            "policy-version": "3.3.3"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 2,
+                            "policy_updated_to_ver": 3,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_dolor"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_ipsum": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_ipsum",
+                            "policy-id": "test_scope_prefix.pdp_decision_ipsum",
+                            "policy-version": "2.2.2"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 1,
+                            "policy_updated_to_ver": 2,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_ipsum"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_sit": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_sit",
+                            "policy-id": "test_scope_prefix.pdp_decision_sit",
+                            "policy-version": "4.4.4"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 3,
+                            "policy_updated_to_ver": 4,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_sit"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    }
+                }
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "catch_up": true,
+                    "latest_policies": {
+                        "test_scope_prefix.pdp_decision_Lorem": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 0,
+                                    "policy_updated_to_ver": 1,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_Lorem",
+                                    "policy-id": "test_scope_prefix.pdp_decision_Lorem",
+                                    "policy-version": "1.1.1"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_Lorem.1-1-1.xml",
+                                "policyVersion": "1.1.1",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                        },
+                        "test_scope_prefix.pdp_decision_ametist": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 6,
+                                    "policy_updated_to_ver": 7,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_ametist"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_ametist",
+                                    "policy-id": "test_scope_prefix.pdp_decision_ametist",
+                                    "policy-version": "7.7.7"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_ametist.7-7-7.xml",
+                                "policyVersion": "7.7.7",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_ametist"
+                        },
+                        "test_scope_prefix.pdp_decision_consectetur": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 5,
+                                    "policy_updated_to_ver": 6,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_consectetur"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_consectetur",
+                                    "policy-id": "test_scope_prefix.pdp_decision_consectetur",
+                                    "policy-version": "6.6.6"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_consectetur.6-6-6.xml",
+                                "policyVersion": "6.6.6",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_consectetur"
+                        },
+                        "test_scope_prefix.pdp_decision_dolor": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 2,
+                                    "policy_updated_to_ver": 3,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_dolor"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_dolor",
+                                    "policy-id": "test_scope_prefix.pdp_decision_dolor",
+                                    "policy-version": "3.3.3"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_dolor.3-3-3.xml",
+                                "policyVersion": "3.3.3",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_dolor"
+                        },
+                        "test_scope_prefix.pdp_decision_ipsum": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 1,
+                                    "policy_updated_to_ver": 2,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_ipsum"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_ipsum",
+                                    "policy-id": "test_scope_prefix.pdp_decision_ipsum",
+                                    "policy-version": "2.2.2"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_ipsum.2-2-2.xml",
+                                "policyVersion": "2.2.2",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_ipsum"
+                        },
+                        "test_scope_prefix.pdp_decision_sit": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 3,
+                                    "policy_updated_to_ver": 4,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_sit"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_sit",
+                                    "policy-id": "test_scope_prefix.pdp_decision_sit",
+                                    "policy-version": "4.4.4"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_sit.4-4-4.xml",
+                                "policyVersion": "4.4.4",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_sit"
+                        }
+                    },
+                    "policy_filter_matches": {},
+                    "removed_policies": {}
+                },
+                "method": "put",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Authorization": "Basic YWxleC1ETUFBUF9NUl9VU0VSOmFsZXgtRE1BQVBfTVJfUFdE",
+                    "Content-Type": "application/json",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "timeout": 15000
+                },
+                "uri": "https://unit-test-dmaap-mr:280800000/events/unit-test-topicname/unit-test-consumegroup/unit-test-consumerid"
+            },
+            "res": [],
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_Lorem",
+                        "policy_versions": {
+                            "0": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_amet": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_amet",
+                        "policy_versions": {
+                            "5.5.5": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ametist": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ametist",
+                        "policy_versions": {
+                            "6": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_consectetur": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_consectetur",
+                        "policy_versions": {
+                            "5": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_dolor": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_dolor",
+                        "policy_versions": {
+                            "2": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ipsum": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ipsum",
+                        "policy_versions": {
+                            "1": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_sit": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_sit",
+                        "policy_versions": {
+                            "3": true
+                        }
+                    }
+                },
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Accept": "application/json",
+                    "Authorization": "Basic YWxleC1QRFBfVVNFUjphbGV4LVBEUF9QV0Q=",
+                    "ClientAuth": "Basic user",
+                    "Content-Type": "application/json",
+                    "Environment": "TEST",
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "ONAPComponent": "policy_handler",
+                    "ONAPInstance": "*",
+                    "ONAPName": "DCAE",
+                    "action": "configure",
+                    "resource": {
+                        "policy-id": [
+                            "test_scope_prefix.pdp_decision_Lorem",
+                            "test_scope_prefix.pdp_decision_amet",
+                            "test_scope_prefix.pdp_decision_ametist",
+                            "test_scope_prefix.pdp_decision_consectetur",
+                            "test_scope_prefix.pdp_decision_dolor",
+                            "test_scope_prefix.pdp_decision_ipsum",
+                            "test_scope_prefix.pdp_decision_sit"
+                        ]
+                    }
+                },
+                "method": "post",
+                "params": null,
+                "uri": "https://unit-test-pdp-server:8081000/decision/v1/"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_Lorem",
+                            "policy-id": "test_scope_prefix.pdp_decision_Lorem",
+                            "policy-version": "1.1.1"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 0,
+                            "policy_updated_to_ver": 1,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_amet": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_amet",
+                            "policy-id": "test_scope_prefix.pdp_decision_amet",
+                            "policy-version": "5.5.5"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 4,
+                            "policy_updated_to_ver": 5,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_amet"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_ametist": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_ametist",
+                            "policy-id": "test_scope_prefix.pdp_decision_ametist",
+                            "policy-version": "7.7.7"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 6,
+                            "policy_updated_to_ver": 7,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_ametist"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_consectetur": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_consectetur",
+                            "policy-id": "test_scope_prefix.pdp_decision_consectetur",
+                            "policy-version": "6.6.6"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 5,
+                            "policy_updated_to_ver": 6,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_consectetur"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_dolor": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_dolor",
+                            "policy-id": "test_scope_prefix.pdp_decision_dolor",
+                            "policy-version": "3.3.3"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 2,
+                            "policy_updated_to_ver": 3,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_dolor"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_ipsum": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_ipsum",
+                            "policy-id": "test_scope_prefix.pdp_decision_ipsum",
+                            "policy-version": "2.2.2"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 1,
+                            "policy_updated_to_ver": 2,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_ipsum"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_sit": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_sit",
+                            "policy-id": "test_scope_prefix.pdp_decision_sit",
+                            "policy-version": "4.4.4"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 3,
+                            "policy_updated_to_ver": 4,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_sit"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    }
+                }
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "catch_up": true,
+                    "latest_policies": {
+                        "test_scope_prefix.pdp_decision_Lorem": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 0,
+                                    "policy_updated_to_ver": 1,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_Lorem",
+                                    "policy-id": "test_scope_prefix.pdp_decision_Lorem",
+                                    "policy-version": "1.1.1"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_Lorem.1-1-1.xml",
+                                "policyVersion": "1.1.1",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                        },
+                        "test_scope_prefix.pdp_decision_ametist": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 6,
+                                    "policy_updated_to_ver": 7,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_ametist"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_ametist",
+                                    "policy-id": "test_scope_prefix.pdp_decision_ametist",
+                                    "policy-version": "7.7.7"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_ametist.7-7-7.xml",
+                                "policyVersion": "7.7.7",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_ametist"
+                        },
+                        "test_scope_prefix.pdp_decision_consectetur": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 5,
+                                    "policy_updated_to_ver": 6,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_consectetur"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_consectetur",
+                                    "policy-id": "test_scope_prefix.pdp_decision_consectetur",
+                                    "policy-version": "6.6.6"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_consectetur.6-6-6.xml",
+                                "policyVersion": "6.6.6",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_consectetur"
+                        },
+                        "test_scope_prefix.pdp_decision_dolor": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 2,
+                                    "policy_updated_to_ver": 3,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_dolor"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_dolor",
+                                    "policy-id": "test_scope_prefix.pdp_decision_dolor",
+                                    "policy-version": "3.3.3"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_dolor.3-3-3.xml",
+                                "policyVersion": "3.3.3",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_dolor"
+                        },
+                        "test_scope_prefix.pdp_decision_ipsum": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 1,
+                                    "policy_updated_to_ver": 2,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_ipsum"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_ipsum",
+                                    "policy-id": "test_scope_prefix.pdp_decision_ipsum",
+                                    "policy-version": "2.2.2"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_ipsum.2-2-2.xml",
+                                "policyVersion": "2.2.2",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_ipsum"
+                        },
+                        "test_scope_prefix.pdp_decision_sit": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 3,
+                                    "policy_updated_to_ver": 4,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_sit"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_sit",
+                                    "policy-id": "test_scope_prefix.pdp_decision_sit",
+                                    "policy-version": "4.4.4"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_sit.4-4-4.xml",
+                                "policyVersion": "4.4.4",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_sit"
+                        }
+                    },
+                    "policy_filter_matches": {},
+                    "removed_policies": {}
+                },
+                "method": "put",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Authorization": "Basic YWxleC1ETUFBUF9NUl9VU0VSOmFsZXgtRE1BQVBfTVJfUFdE",
+                    "Content-Type": "application/json",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "timeout": 15000
+                },
+                "uri": "https://unit-test-dmaap-mr:280800000/events/unit-test-topicname/unit-test-consumegroup/unit-test-consumerid"
+                },
+            "res": ["garbage-to-be-ignored", "garbage-to-be-ignored"],
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Authorization": "Basic YWxleC1ETUFBUF9NUl9VU0VSOmFsZXgtRE1BQVBfTVJfUFdE",
+                    "Content-Type": "application/json",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "timeout": 15000
+                },
+                "uri": "https://unit-test-dmaap-mr:280800000/events/unit-test-topicname/unit-test-consumegroup/unit-test-consumerid"
+                },
+            "res": [],
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_Lorem",
+                        "policy_versions": {
+                            "0": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_amet": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_amet",
+                        "policy_versions": {
+                            "5.5.5": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ametist": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ametist",
+                        "policy_versions": {
+                            "6": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_consectetur": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_consectetur",
+                        "policy_versions": {
+                            "5": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_dolor": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_dolor",
+                        "policy_versions": {
+                            "2": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_ipsum": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_ipsum",
+                        "policy_versions": {
+                            "1": true
+                        }
+                    },
+                    "test_scope_prefix.pdp_decision_sit": {
+                        "pending_update": false,
+                        "policy_id": "test_scope_prefix.pdp_decision_sit",
+                        "policy_versions": {
+                            "3": true
+                        }
+                    }
+                },
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Accept": "application/json",
+                    "Authorization": "Basic YWxleC1QRFBfVVNFUjphbGV4LVBEUF9QV0Q=",
+                    "ClientAuth": "Basic user",
+                    "Content-Type": "application/json",
+                    "Environment": "TEST",
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "ONAPComponent": "policy_handler",
+                    "ONAPInstance": "*",
+                    "ONAPName": "DCAE",
+                    "action": "configure",
+                    "resource": {
+                        "policy-id": [
+                            "test_scope_prefix.pdp_decision_Lorem",
+                            "test_scope_prefix.pdp_decision_amet",
+                            "test_scope_prefix.pdp_decision_ametist",
+                            "test_scope_prefix.pdp_decision_consectetur",
+                            "test_scope_prefix.pdp_decision_dolor",
+                            "test_scope_prefix.pdp_decision_ipsum",
+                            "test_scope_prefix.pdp_decision_sit"
+                        ]
+                    }
+                },
+                "method": "post",
+                "params": null,
+                "uri": "https://unit-test-pdp-server:8081000/decision/v1/"
+            },
+            "res": {
+                "policies": {
+                    "test_scope_prefix.pdp_decision_Lorem": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_Lorem",
+                            "policy-id": "test_scope_prefix.pdp_decision_Lorem",
+                            "policy-version": "1.1.1"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 0,
+                            "policy_updated_to_ver": 1,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_amet": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_amet",
+                            "policy-id": "test_scope_prefix.pdp_decision_amet",
+                            "policy-version": "5.5.5"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 4,
+                            "policy_updated_to_ver": 5,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_amet"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_ametist": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_ametist",
+                            "policy-id": "test_scope_prefix.pdp_decision_ametist",
+                            "policy-version": "7.7.7"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 6,
+                            "policy_updated_to_ver": 7,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_ametist"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_consectetur": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_consectetur",
+                            "policy-id": "test_scope_prefix.pdp_decision_consectetur",
+                            "policy-version": "6.6.6"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 5,
+                            "policy_updated_to_ver": 6,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_consectetur"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_dolor": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_dolor",
+                            "policy-id": "test_scope_prefix.pdp_decision_dolor",
+                            "policy-version": "3.3.3"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 2,
+                            "policy_updated_to_ver": 3,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_dolor"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_ipsum": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_ipsum",
+                            "policy-id": "test_scope_prefix.pdp_decision_ipsum",
+                            "policy-version": "2.2.2"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 1,
+                            "policy_updated_to_ver": 2,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_ipsum"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    },
+                    "test_scope_prefix.pdp_decision_sit": {
+                        "metadata": {
+                            "description": "description for test_scope_prefix.pdp_decision_sit",
+                            "policy-id": "test_scope_prefix.pdp_decision_sit",
+                            "policy-version": "4.4.4"
+                        },
+                        "properties": {
+                            "policy_hello": "world!",
+                            "policy_updated_from_ver": 3,
+                            "policy_updated_to_ver": 4,
+                            "updated_policy_id": "test_scope_prefix.pdp_decision_sit"
+                        },
+                        "type": "unit.test.type.policies",
+                        "version": "1.0.0"
+                    }
+                }
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ECOMP-RequestID": "*",
+                    "X-ONAP-RequestID": "*"
+                },
+                "json": {
+                    "catch_up": true,
+                    "latest_policies": {
+                        "test_scope_prefix.pdp_decision_Lorem": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 0,
+                                    "policy_updated_to_ver": 1,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_Lorem",
+                                    "policy-id": "test_scope_prefix.pdp_decision_Lorem",
+                                    "policy-version": "1.1.1"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_Lorem.1-1-1.xml",
+                                "policyVersion": "1.1.1",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_Lorem"
+                        },
+                        "test_scope_prefix.pdp_decision_ametist": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 6,
+                                    "policy_updated_to_ver": 7,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_ametist"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_ametist",
+                                    "policy-id": "test_scope_prefix.pdp_decision_ametist",
+                                    "policy-version": "7.7.7"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_ametist.7-7-7.xml",
+                                "policyVersion": "7.7.7",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_ametist"
+                        },
+                        "test_scope_prefix.pdp_decision_consectetur": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 5,
+                                    "policy_updated_to_ver": 6,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_consectetur"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_consectetur",
+                                    "policy-id": "test_scope_prefix.pdp_decision_consectetur",
+                                    "policy-version": "6.6.6"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_consectetur.6-6-6.xml",
+                                "policyVersion": "6.6.6",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_consectetur"
+                        },
+                        "test_scope_prefix.pdp_decision_dolor": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 2,
+                                    "policy_updated_to_ver": 3,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_dolor"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_dolor",
+                                    "policy-id": "test_scope_prefix.pdp_decision_dolor",
+                                    "policy-version": "3.3.3"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_dolor.3-3-3.xml",
+                                "policyVersion": "3.3.3",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_dolor"
+                        },
+                        "test_scope_prefix.pdp_decision_ipsum": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 1,
+                                    "policy_updated_to_ver": 2,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_ipsum"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_ipsum",
+                                    "policy-id": "test_scope_prefix.pdp_decision_ipsum",
+                                    "policy-version": "2.2.2"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_ipsum.2-2-2.xml",
+                                "policyVersion": "2.2.2",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_ipsum"
+                        },
+                        "test_scope_prefix.pdp_decision_sit": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": 3,
+                                    "policy_updated_to_ver": 4,
+                                    "updated_policy_id": "test_scope_prefix.pdp_decision_sit"
+                                },
+                                "metadata": {
+                                    "description": "description for test_scope_prefix.pdp_decision_sit",
+                                    "policy-id": "test_scope_prefix.pdp_decision_sit",
+                                    "policy-version": "4.4.4"
+                                },
+                                "policyName": "test_scope_prefix.pdp_decision_sit.4-4-4.xml",
+                                "policyVersion": "4.4.4",
+                                "type": "unit.test.type.policies",
+                                "version": "1.0.0"
+                            },
+                            "policy_id": "test_scope_prefix.pdp_decision_sit"
+                        }
+                    },
+                    "policy_filter_matches": {},
+                    "removed_policies": {}
+                },
+                "method": "put",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": {
+                "server_instance_uuid": "e17fc584-7b06-4777-81c5-5da4337d6d16"
+            },
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Authorization": "Basic YWxleC1ETUFBUF9NUl9VU0VSOmFsZXgtRE1BQVBfTVJfUFdE",
+                    "Content-Type": "application/json",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "timeout": 15000
+                },
+                "uri": "https://unit-test-dmaap-mr:280800000/events/unit-test-topicname/unit-test-consumegroup/unit-test-consumerid"
+                },
+            "res": [],
+            "status_code": 200
+        }
+    ]
+}
\ No newline at end of file
diff --git a/tests/main/mock_expected.py b/tests/main/mock_expected.py
deleted file mode 100644
index 450394c..0000000
--- a/tests/main/mock_expected.py
+++ /dev/null
@@ -1,526 +0,0 @@
-# ============LICENSE_START=======================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
-# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ============LICENSE_END=========================================================
-#
-"""expected message history per test for pdp API 2019 and after"""
-
-
-HISTORY_EXPECTED = {
-    "tests/main/test_policy_rest.py::test_get_policy_latest" : [
-        {
-            "request": {
-                "headers": {
-                    "Accept": "application/json",
-                    "Authorization": "Basic auth",
-                    "ClientAuth": "Basic user",
-                    "Content-Type": "application/json",
-                    "Environment": "TEST",
-                    "X-ECOMP-RequestID": "*"
-                },
-                "json": {
-                    "ONAPComponent": "policy_handler",
-                    "ONAPInstance": "*",
-                    "ONAPName": "DCAE",
-                    "action": "configure",
-                    "resource": {
-                        "policy-id": [
-                            "test_scope_prefix.pdp_desition_sit"
-                        ]
-                    }
-                },
-                "method": "post",
-                "params": None,
-                "uri": "https://unit-test-pdp-server:8081000/decision/v1/"
-            },
-            "res": "*",
-            "status_code": 200
-        }
-    ],
-    "tests/main/test_policyhandler.py::WebServerTest::test_web_all_policies_latest": [
-        {
-            "request": {
-                "headers": {
-                    "X-ECOMP-RequestID": "*"
-                },
-                "json": None,
-                "method": "get",
-                "params": {
-                    "cfy_tenant_name": "default_tenant"
-                },
-                "uri": "http://unit-test-deployment_handler:8188000/policy"
-            },
-            "res": "*",
-            "status_code": 200
-        },
-        {
-            "request": {
-                "headers": {
-                    "Accept": "application/json",
-                    "Authorization": "Basic auth",
-                    "ClientAuth": "Basic user",
-                    "Content-Type": "application/json",
-                    "Environment": "TEST",
-                    "X-ECOMP-RequestID": "*"
-                },
-                "json": {
-                    "policyName": "test_scope_prefix.Config_.*"
-                },
-                "method": "post",
-                "params": None,
-                "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
-            },
-            "res": "*",
-            "status_code": 200
-        }
-    ],
-    "tests/main/test_policyhandler.py::WebServerTest::test_web_policies_latest": [
-        {
-            "request": {
-                "headers": {
-                    "Accept": "application/json",
-                    "Authorization": "Basic auth",
-                    "ClientAuth": "Basic user",
-                    "Content-Type": "application/json",
-                    "Environment": "TEST",
-                    "X-ECOMP-RequestID": "*"
-                },
-                "json": {
-                    "policyName": "test_scope_prefix.Config_amet.*"
-                },
-                "method": "post",
-                "params": None,
-                "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
-            },
-            "res": "*",
-            "status_code": 200
-        }
-    ],
-    "tests/main/test_policyhandler.py::WebServerTest::test_web_policy_latest": [
-        {
-            "request": {
-                "headers": {
-                    "Accept": "application/json",
-                    "Authorization": "Basic auth",
-                    "ClientAuth": "Basic user",
-                    "Content-Type": "application/json",
-                    "Environment": "TEST",
-                    "X-ECOMP-RequestID": "*"
-                },
-                "json": {
-                    "ONAPComponent": "policy_handler",
-                    "ONAPInstance": "*",
-                    "ONAPName": "DCAE",
-                    "action": "configure",
-                    "resource": {
-                        "policy-id": [
-                            "test_scope_prefix.pdp_desition_sit"
-                        ]
-                    }
-                },
-                "method": "post",
-                "params": None,
-                "uri": "https://unit-test-pdp-server:8081000/decision/v1/"
-            },
-            "res": "*",
-            "status_code": 200
-        }
-    ],
-    "tests/main/test_policyhandler.py::WebServerTest::test_zzzzz_shutdown": [
-        {
-            "request": {
-                "headers": {
-                    "X-ECOMP-RequestID": "*"
-                },
-                "json": None,
-                "method": "get",
-                "params": {
-                    "cfy_tenant_name": "default_tenant"
-                },
-                "uri": "http://unit-test-deployment_handler:8188000/policy"
-            },
-            "res": "*",
-            "status_code": 200
-        },
-        {
-            "request": {
-                "headers": {
-                    "Accept": "application/json",
-                    "Authorization": "Basic auth",
-                    "ClientAuth": "Basic user",
-                    "Content-Type": "application/json",
-                    "Environment": "TEST",
-                    "X-ECOMP-RequestID": "*"
-                },
-                "json": {
-                    "policyName": "test_scope_prefix.Config_.*"
-                },
-                "method": "post",
-                "params": None,
-                "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
-            },
-            "res": "*",
-            "status_code": 200
-        },
-        {
-            "request": {
-                "headers": {
-                    "X-ECOMP-RequestID": "*"
-                },
-                "json": {
-                    "catch_up": True,
-                    "latest_policies": {
-                        "test_scope_prefix.Config_Lorem": {
-                            "policy_body": {
-                                "config": {
-                                    "policy_hello": "world!",
-                                    "policy_updated_from_ver": "0",
-                                    "policy_updated_to_ver": "1",
-                                    "updated_policy_id": "test_scope_prefix.Config_Lorem"
-                                },
-                                "matchingConditions": {
-                                    "ConfigName": "alex_config_name",
-                                    "ONAPName": "DCAE"
-                                },
-                                "policyConfigMessage": "Config Retrieved! ",
-                                "policyConfigStatus": "CONFIG_RETRIEVED",
-                                "policyName": "test_scope_prefix.Config_Lorem.1.xml",
-                                "policyVersion": "1",
-                                "property": None,
-                                "responseAttributes": {},
-                                "type": "JSON"
-                            },
-                            "policy_id": "test_scope_prefix.Config_Lorem"
-                        },
-                        "test_scope_prefix.Config_amet": {
-                            "policy_body": {
-                                "config": {
-                                    "policy_hello": "world!",
-                                    "policy_updated_from_ver": "4",
-                                    "policy_updated_to_ver": "5",
-                                    "updated_policy_id": "test_scope_prefix.Config_amet"
-                                },
-                                "matchingConditions": {
-                                    "ConfigName": "alex_config_name",
-                                    "ONAPName": "DCAE"
-                                },
-                                "policyConfigMessage": "Config Retrieved! ",
-                                "policyConfigStatus": "CONFIG_RETRIEVED",
-                                "policyName": "test_scope_prefix.Config_amet.5.xml",
-                                "policyVersion": "5",
-                                "property": None,
-                                "responseAttributes": {},
-                                "type": "JSON"
-                            },
-                            "policy_id": "test_scope_prefix.Config_amet"
-                        },
-                        "test_scope_prefix.Config_ametist": {
-                            "policy_body": {
-                                "config": {
-                                    "policy_hello": "world!",
-                                    "policy_updated_from_ver": "6",
-                                    "policy_updated_to_ver": "7",
-                                    "updated_policy_id": "test_scope_prefix.Config_ametist"
-                                },
-                                "matchingConditions": {
-                                    "ConfigName": "alex_config_name",
-                                    "ONAPName": "DCAE"
-                                },
-                                "policyConfigMessage": "Config Retrieved! ",
-                                "policyConfigStatus": "CONFIG_RETRIEVED",
-                                "policyName": "test_scope_prefix.Config_ametist.7.xml",
-                                "policyVersion": "7",
-                                "property": None,
-                                "responseAttributes": {},
-                                "type": "JSON"
-                            },
-                            "policy_id": "test_scope_prefix.Config_ametist"
-                        },
-                        "test_scope_prefix.Config_consectetur": {
-                            "policy_body": {
-                                "config": {
-                                    "policy_hello": "world!",
-                                    "policy_updated_from_ver": "5",
-                                    "policy_updated_to_ver": "6",
-                                    "updated_policy_id": "test_scope_prefix.Config_consectetur"
-                                },
-                                "matchingConditions": {
-                                    "ConfigName": "alex_config_name",
-                                    "ONAPName": "DCAE"
-                                },
-                                "policyConfigMessage": "Config Retrieved! ",
-                                "policyConfigStatus": "CONFIG_RETRIEVED",
-                                "policyName": "test_scope_prefix.Config_consectetur.6.xml",
-                                "policyVersion": "6",
-                                "property": None,
-                                "responseAttributes": {},
-                                "type": "JSON"
-                            },
-                            "policy_id": "test_scope_prefix.Config_consectetur"
-                        },
-                        "test_scope_prefix.Config_dolor": {
-                            "policy_body": {
-                                "config": {
-                                    "policy_hello": "world!",
-                                    "policy_updated_from_ver": "2",
-                                    "policy_updated_to_ver": "3",
-                                    "updated_policy_id": "test_scope_prefix.Config_dolor"
-                                },
-                                "matchingConditions": {
-                                    "ConfigName": "alex_config_name",
-                                    "ONAPName": "DCAE"
-                                },
-                                "policyConfigMessage": "Config Retrieved! ",
-                                "policyConfigStatus": "CONFIG_RETRIEVED",
-                                "policyName": "test_scope_prefix.Config_dolor.3.xml",
-                                "policyVersion": "3",
-                                "property": None,
-                                "responseAttributes": {},
-                                "type": "JSON"
-                            },
-                            "policy_id": "test_scope_prefix.Config_dolor"
-                        },
-                        "test_scope_prefix.Config_ipsum": {
-                            "policy_body": {
-                                "config": {
-                                    "policy_hello": "world!",
-                                    "policy_updated_from_ver": "1",
-                                    "policy_updated_to_ver": "2",
-                                    "updated_policy_id": "test_scope_prefix.Config_ipsum"
-                                },
-                                "matchingConditions": {
-                                    "ConfigName": "alex_config_name",
-                                    "ONAPName": "DCAE"
-                                },
-                                "policyConfigMessage": "Config Retrieved! ",
-                                "policyConfigStatus": "CONFIG_RETRIEVED",
-                                "policyName": "test_scope_prefix.Config_ipsum.2.xml",
-                                "policyVersion": "2",
-                                "property": None,
-                                "responseAttributes": {},
-                                "type": "JSON"
-                            },
-                            "policy_id": "test_scope_prefix.Config_ipsum"
-                        },
-                        "test_scope_prefix.Config_sit": {
-                            "policy_body": {
-                                "config": {
-                                    "policy_hello": "world!",
-                                    "policy_updated_from_ver": "3",
-                                    "policy_updated_to_ver": "4",
-                                    "updated_policy_id": "test_scope_prefix.Config_sit"
-                                },
-                                "matchingConditions": {
-                                    "ConfigName": "alex_config_name",
-                                    "ONAPName": "DCAE"
-                                },
-                                "policyConfigMessage": "Config Retrieved! ",
-                                "policyConfigStatus": "CONFIG_RETRIEVED",
-                                "policyName": "test_scope_prefix.Config_sit.4.xml",
-                                "policyVersion": "4",
-                                "property": None,
-                                "responseAttributes": {},
-                                "type": "JSON"
-                            },
-                            "policy_id": "test_scope_prefix.Config_sit"
-                        }
-                    },
-                    "policy_filter_matches": {
-                        "test_scope_prefix.Config_Lorem": {},
-                        "test_scope_prefix.Config_amet": {},
-                        "test_scope_prefix.Config_ametist": {},
-                        "test_scope_prefix.Config_consectetur": {},
-                        "test_scope_prefix.Config_dolor": {},
-                        "test_scope_prefix.Config_ipsum": {},
-                        "test_scope_prefix.Config_sit": {}
-                    },
-                    "removed_policies": {}
-                },
-                "method": "put",
-                "params": {
-                    "cfy_tenant_name": "default_tenant"
-                },
-                "uri": "http://unit-test-deployment_handler:8188000/policy"
-            },
-            "res": "*",
-            "status_code": 200
-        },
-        {
-            "request": {
-                "headers": {
-                    "X-ECOMP-RequestID": "*"
-                },
-                "json": None,
-                "method": "get",
-                "params": {
-                    "cfy_tenant_name": "default_tenant"
-                },
-                "uri": "http://unit-test-deployment_handler:8188000/policy"
-            },
-            "res": "*",
-            "status_code": 200
-        },
-        {
-            "request": {
-                "headers": {
-                    "Accept": "application/json",
-                    "Authorization": "Basic auth",
-                    "ClientAuth": "Basic user",
-                    "Content-Type": "application/json",
-                    "Environment": "TEST",
-                    "X-ECOMP-RequestID": "*"
-                },
-                "json": {
-                    "policyName": "test_scope_prefix.Config_ipsum"
-                },
-                "method": "post",
-                "params": None,
-                "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
-            },
-            "res": "*",
-            "status_code": 200
-        },
-        {
-            "request": {
-                "headers": {
-                    "Accept": "application/json",
-                    "Authorization": "Basic auth",
-                    "ClientAuth": "Basic user",
-                    "Content-Type": "application/json",
-                    "Environment": "TEST",
-                    "X-ECOMP-RequestID": "*"
-                },
-                "json": {
-                    "policyName": "test_scope_prefix.Config_sit"
-                },
-                "method": "post",
-                "params": None,
-                "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
-            },
-            "res": "*",
-            "status_code": 200
-        },
-        {
-            "request": {
-                "headers": {
-                    "Accept": "application/json",
-                    "Authorization": "Basic auth",
-                    "ClientAuth": "Basic user",
-                    "Content-Type": "application/json",
-                    "Environment": "TEST",
-                    "X-ECOMP-RequestID": "*"
-                },
-                "json": {
-                    "policyName": "test_scope_prefix.Config_consectetur"
-                },
-                "method": "post",
-                "params": None,
-                "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
-            },
-            "res": "*",
-            "status_code": 200
-        },
-        {
-            "request": {
-                "headers": {
-                    "X-ECOMP-RequestID": "*"
-                },
-                "json": {
-                    "catch_up": False,
-                    "latest_policies": {
-                        "test_scope_prefix.Config_consectetur": {
-                            "policy_body": {
-                                "config": {
-                                    "policy_hello": "world!",
-                                    "policy_updated_from_ver": "5",
-                                    "policy_updated_to_ver": "6",
-                                    "updated_policy_id": "test_scope_prefix.Config_consectetur"
-                                },
-                                "matchingConditions": {
-                                    "ConfigName": "alex_config_name",
-                                    "ONAPName": "DCAE"
-                                },
-                                "policyConfigMessage": "Config Retrieved! ",
-                                "policyConfigStatus": "CONFIG_RETRIEVED",
-                                "policyName": "test_scope_prefix.Config_consectetur.6.xml",
-                                "policyVersion": "6",
-                                "property": None,
-                                "responseAttributes": {},
-                                "type": "JSON"
-                            },
-                            "policy_id": "test_scope_prefix.Config_consectetur"
-                        },
-                        "test_scope_prefix.Config_ipsum": {
-                            "policy_body": {
-                                "config": {
-                                    "policy_hello": "world!",
-                                    "policy_updated_from_ver": "1",
-                                    "policy_updated_to_ver": "2",
-                                    "updated_policy_id": "test_scope_prefix.Config_ipsum"
-                                },
-                                "matchingConditions": {
-                                    "ConfigName": "alex_config_name",
-                                    "ONAPName": "DCAE"
-                                },
-                                "policyConfigMessage": "Config Retrieved! ",
-                                "policyConfigStatus": "CONFIG_RETRIEVED",
-                                "policyName": "test_scope_prefix.Config_ipsum.2.xml",
-                                "policyVersion": "2",
-                                "property": None,
-                                "responseAttributes": {},
-                                "type": "JSON"
-                            },
-                            "policy_id": "test_scope_prefix.Config_ipsum"
-                        },
-                        "test_scope_prefix.Config_sit": {
-                            "policy_body": {
-                                "config": {
-                                    "policy_hello": "world!",
-                                    "policy_updated_from_ver": "3",
-                                    "policy_updated_to_ver": "4",
-                                    "updated_policy_id": "test_scope_prefix.Config_sit"
-                                },
-                                "matchingConditions": {
-                                    "ConfigName": "alex_config_name",
-                                    "ONAPName": "DCAE"
-                                },
-                                "policyConfigMessage": "Config Retrieved! ",
-                                "policyConfigStatus": "CONFIG_RETRIEVED",
-                                "policyName": "test_scope_prefix.Config_sit.4.xml",
-                                "policyVersion": "4",
-                                "property": None,
-                                "responseAttributes": {},
-                                "type": "JSON"
-                            },
-                            "policy_id": "test_scope_prefix.Config_sit"
-                        }
-                    },
-                    "policy_filter_matches": {
-                        "test_scope_prefix.Config_consectetur": {},
-                        "test_scope_prefix.Config_ipsum": {},
-                        "test_scope_prefix.Config_sit": {}
-                    },
-                    "removed_policies": {}
-                },
-                "method": "put",
-                "params": {
-                    "cfy_tenant_name": "default_tenant"
-                },
-                "uri": "http://unit-test-deployment_handler:8188000/policy"
-            },
-            "res": "*",
-            "status_code": 200
-        }
-    ]
-}
diff --git a/tests/main/mock_policy_engine.py b/tests/main/mock_policy_engine.py
deleted file mode 100644
index 1bac045..0000000
--- a/tests/main/mock_policy_engine.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# ============LICENSE_START=======================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
-# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ============LICENSE_END=========================================================
-#
-"""mocking for the policy-engine - shared by many tests"""
-
-import copy
-import json
-
-from policyhandler.pdp_api.pdp_consts import (PDP_METADATA,
-                                              PDP_POLICY_ID,
-                                              PDP_POLICY_VERSION,
-                                              PDP_POLICIES, PDP_PROPERTIES)
-from policyhandler.pdp_api.policy_utils import PolicyUtils
-from policyhandler.utils import Utils
-
-_LOGGER = Utils.get_logger(__file__)
-
-
-class MockPolicyEngine(object):
-    """pretend this is the policy-engine"""
-    scope_prefix = "test_scope_prefix.pdp_desition_"
-    LOREM_IPSUM = """Lorem ipsum dolor sit amet consectetur ametist""".split()
-    LONG_TEXT = "0123456789" * 100
-    _policies = {}
-
-    _inited = False
-
-    @staticmethod
-    def init():
-        """init collection of policies: policy_version = policy_index + 1"""
-        if MockPolicyEngine._inited:
-            return
-        MockPolicyEngine._inited = True
-
-        MockPolicyEngine._policies = dict(
-            (policy_id, MockPolicyEngine._create_policy_body(policy_id, policy_version))
-            for policy_id, policy_version in
-            [(MockPolicyEngine.get_policy_id(policy_index), policy_index + 1)
-             for policy_index in range(1 + len(MockPolicyEngine.LOREM_IPSUM))]
-        )
-        _LOGGER.info("_policies: %s", json.dumps(MockPolicyEngine._policies))
-
-    @staticmethod
-    def get_policy_id(policy_index):
-        """get the policy_id by policy_index"""
-        return (MockPolicyEngine.scope_prefix
-                + MockPolicyEngine.LOREM_IPSUM[
-                    policy_index % len(MockPolicyEngine.LOREM_IPSUM)])
-
-    @staticmethod
-    def get_policy(policy_id):
-        """find policy the way the policy-engine finds"""
-        if policy_id not in MockPolicyEngine._policies:
-            return {}
-        return {PDP_POLICIES: {policy_id: copy.deepcopy(MockPolicyEngine._policies[policy_id])}}
-
-    @staticmethod
-    def gen_policy_latest(policy_index, version_offset=0):
-        """generate the policy response from policy-handler by policy_index = version - 1"""
-        policy_id = MockPolicyEngine.get_policy_id(policy_index)
-        policy = PolicyUtils.convert_to_policy(
-            MockPolicyEngine._create_policy_body(policy_id, policy_index + 1 - version_offset)
-        )
-        return policy_id, policy
-
-    @staticmethod
-    def _create_policy_body(policy_id, policy_version=1):
-        """returns a fake policy-body"""
-        return {
-            "type": "unit.test.type.policies",
-            "version": "1.0.0",
-            PDP_METADATA: {
-                PDP_POLICY_ID: policy_id,
-                PDP_POLICY_VERSION: policy_version,
-                "description": "description for {}".format(policy_id)
-            },
-            PDP_PROPERTIES: {
-                "policy_updated_from_ver": (policy_version - 1),
-                "policy_updated_to_ver": policy_version,
-                "policy_hello": "world!",
-                "updated_policy_id": policy_id
-            }
-        }
diff --git a/tests/main/pdp_policies.json b/tests/main/pdp_policies.json
deleted file mode 100644
index b7d0d9e..0000000
--- a/tests/main/pdp_policies.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-    "policies": {
-        "onap.scaleout.tca": {
-            "type": "onap.policies.monitoring.cdap.tca.hi.lo.app",
-            "version": "1.0.0",
-            "metadata": {
-                "policy-id": "onap.scaleout.tca",
-                "policy-version": 1,
-                "description": "The scaleout policy for vDNS"
-            },
-            "properties": {
-                "tca_policy": {
-                    "domain": "measurementsForVfScaling",
-                    "metricsPerEventName": [
-                        {
-                            "eventName": "vLoadBalancer",
-                            "controlLoopSchemaType": "VNF",
-                            "policyScope": "type=configuration"
-                        }
-                    ]
-                }
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/tests/main/test_policyhandler.py b/tests/main/test_policyhandler.py
index 73ab9ca..c474e29 100644
--- a/tests/main/test_policyhandler.py
+++ b/tests/main/test_policyhandler.py
@@ -1,5 +1,5 @@
 # ============LICENSE_START=======================================================
-# Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2017-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -21,20 +21,17 @@
 import time
 import uuid
 
-import cherrypy
 import pytest
-from cherrypy.test.helper import CPWebCase
+import cherrypy
 
-from policyhandler.config import Config
-from policyhandler.onap.audit import REQUEST_X_ECOMP_REQUESTID, Audit
-from policyhandler.pdp_api.pdp_consts import POLICY_NAME
-from policyhandler.policy_consts import LATEST_POLICIES
+from cherrypy.test.helper import CPWebCase
+from policyhandler.onap.audit import (REQUEST_X_ECOMP_REQUESTID,
+                                      REQUEST_X_ONAP_REQUESTID, Audit)
 from policyhandler.policy_receiver import PolicyReceiver
 from policyhandler.utils import Utils
 from policyhandler.web_server import _PolicyWeb
 
 from ..mock_tracker import Tracker
-from .mock_policy_engine import MockPolicyEngine
 
 _LOGGER = Utils.get_logger(__file__)
 
@@ -59,7 +56,27 @@
 
     def test_web_policy_latest(self):
         """test /policy_latest/<policy-id>"""
-        policy_id, expected_policy = MockPolicyEngine.gen_policy_latest(3)
+        policy_id = "test_scope_prefix.pdp_decision_sit"
+        expected_policy = {
+            "policy_id": "test_scope_prefix.pdp_decision_sit",
+            "policy_body": {
+                "type": "unit.test.type.policies",
+                "version": "1.0.0",
+                "metadata": {
+                    "policy-id": "test_scope_prefix.pdp_decision_sit",
+                    "policy-version": "4.4.4",
+                    "description": "description for test_scope_prefix.pdp_decision_sit"
+                },
+                "policyName": "test_scope_prefix.pdp_decision_sit.4-4-4.xml",
+                "policyVersion": "4.4.4",
+                "config": {
+                    "policy_updated_from_ver": 3,
+                    "policy_updated_to_ver": 4,
+                    "policy_hello": "world!",
+                    "updated_policy_id": "test_scope_prefix.pdp_decision_sit"
+                }
+            }
+        }
 
         self.getPage("/policy_latest/{0}".format(policy_id or ""))
         self.assertStatus('200 OK')
@@ -83,15 +100,17 @@
         _LOGGER.info("result: %s", result)
         _LOGGER.info("body: %s", self.body)
 
-        self.assertStatus('404 Not Found')
+        self.assertStatus('200 OK')
 
     def test_web_policies_latest(self):
         """test POST /policies_latest with policyName"""
         body = json.dumps({"junk": "to-be-developed"})
+        request_id = str(uuid.uuid4())
         result = self.getPage("/policies_latest", method='POST',
                               body=body,
                               headers=[
-                                  (REQUEST_X_ECOMP_REQUESTID, str(uuid.uuid4())),
+                                  (REQUEST_X_ECOMP_REQUESTID, request_id),
+                                  (REQUEST_X_ONAP_REQUESTID, request_id),
                                   ("Content-Type", "application/json"),
                                   ('Content-Length', str(len(body)))
                               ])
@@ -102,17 +121,20 @@
 
     @pytest.mark.usefixtures(
         "fix_deploy_handler",
+        "fix_dmaap_mr",
         "fix_cherrypy_engine_exit")
     def test_zzzzz_shutdown(self):
         """test shutdown"""
-        _LOGGER.info("start shutdown")
+        _LOGGER.info("testing the shutdown")
         assert not PolicyReceiver.is_running()
-        audit = Audit(job_name="test_zzzzz_shutdown", req_message="start shutdown")
+        audit = Audit(job_name="test_zzzzz_shutdown", req_message="testing the shutdown")
         PolicyReceiver.run(audit)
 
         result = self.getPage("/healthcheck")
         _LOGGER.info("healthcheck result: %s", result)
 
+        time.sleep(1)
+
         WebServerTest.do_gc_test = False
         _LOGGER.info("shutdown...")
         audit.audit_done("shutdown")
@@ -120,11 +142,32 @@
         _LOGGER.info("shutdown result: %s", result)
         self.assertStatus('200 OK')
         _LOGGER.info("got shutdown: %s", self.body)
-        time.sleep(1)
+        time.sleep(5)
         assert not PolicyReceiver.is_running()
 
-        if Config.is_pdp_api_default():
-            _LOGGER.info("passive for new PDP API")
-            return
+        Tracker.validate()
+
+    @pytest.mark.usefixtures(
+        "fix_deploy_handler",
+        "fix_dmaap_mr",
+        "fix_cherrypy_engine_exit")
+    def test_zzz_policy_updates_and_catch_ups(self):
+        """test run policy handler with policy updates and catchups"""
+        _LOGGER.info("start policy_updates_and_catch_ups")
+        assert not PolicyReceiver.is_running()
+
+        audit = Audit(job_name="test_zzz_policy_updates_and_catch_ups",
+                      req_message="start policy_updates_and_catch_ups")
+        PolicyReceiver.run(audit)
+
+        _LOGGER.info("sleep 20 before shutdown...")
+        time.sleep(20)
+
+        result = self.getPage("/healthcheck")
+        _LOGGER.info("healthcheck result: %s", result)
+
+        PolicyReceiver.shutdown(audit)
+        time.sleep(5)
+        assert not PolicyReceiver.is_running()
 
         Tracker.validate()
diff --git a/tests/main/test_pz_catch_up.py b/tests/main/test_pz_catch_up.py
new file mode 100644
index 0000000..03f5957
--- /dev/null
+++ b/tests/main/test_pz_catch_up.py
@@ -0,0 +1,63 @@
+# ============LICENSE_START=======================================================
+# Copyright (c) 2020 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+#
+"""test policy catch_up methods directly"""
+
+import json
+import time
+
+import pytest
+
+from policyhandler.onap.audit import Audit
+from policyhandler.policy_receiver import PolicyReceiver
+from policyhandler.utils import Utils
+
+from ..mock_tracker import Tracker
+
+_LOGGER = Utils.get_logger(__file__)
+
+@pytest.mark.usefixtures(
+    "fix_pdp_authorization",
+    "fix_discovery",
+    "fix_pdp_post",
+    "fix_deploy_handler",
+    "fix_dmaap_mr",
+    "fix_auto_catch_up"
+)
+def test_catch_up():
+    """test run policy handler with catchups and failed deployment-handler"""
+    _LOGGER.info("start test_catch_up")
+    assert not PolicyReceiver.is_running()
+    audit = Audit(job_name="test_catch_up", req_message="start test_catch_up")
+    PolicyReceiver.run(audit)
+
+    _LOGGER.info("sleep 12 before shutdown...")
+    time.sleep(12)
+
+    health = audit.health(full=True)
+    audit.audit_done(result=json.dumps(health))
+
+    _LOGGER.info("healthcheck: %s", json.dumps(health))
+    assert bool(health)
+
+    PolicyReceiver.shutdown(audit)
+    time.sleep(5)
+    assert not PolicyReceiver.is_running()
+
+    health = audit.health(full=True)
+    _LOGGER.info("healthcheck: %s", json.dumps(health))
+
+    Tracker.validate()
diff --git a/tests/mock_config.json b/tests/mock_config.json
index 30e3251..50e8862 100644
--- a/tests/mock_config.json
+++ b/tests/mock_config.json
@@ -29,6 +29,19 @@
             "timeout_in_secs": 1,
             "ws_ping_interval_in_secs": 1800
         },
+        "dmaap_mr" : {
+            "url" : "https://unit-test-dmaap-mr:280800000/events/unit-test-topicname/unit-test-consumegroup/unit-test-consumerid",
+            "query": {
+                "timeout": 15000
+            },
+            "headers" : {
+                "Content-Type" : "application/json",
+                "Authorization" : "Basic auth"
+            },
+            "target_entity" : "dmaap_mr",
+            "tls_ca_mode" : "cert_directory",
+            "timeout_in_secs": 60
+        },
         "deploy_handler" : {
             "target_entity" : "deployment_handler",
             "url" : "http://unit-test-deployment_handler:8188000",
diff --git a/tests/mock_settings.py b/tests/mock_settings.py
index 9e99561..dcfebcb 100644
--- a/tests/mock_settings.py
+++ b/tests/mock_settings.py
@@ -1,5 +1,5 @@
 # ============LICENSE_START=======================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -65,14 +65,16 @@
     deploy_handler_instance_uuid = str(uuid.uuid4())
 
     @staticmethod
-    def init():
+    def init_mock_config():
         """init configs"""
         if MockSettings._loaded:
             _LOGGER.info("testing policy_handler with config: %s", Config.discovered_config)
             return
         MockSettings._loaded = True
 
-        Config.init_config("tests/etc_config.json")
+        _LOGGER.info("init MockSettings")
+
+        MockSettings.reinit_mock_config()
 
         with open("tests/mock_config.json", 'r') as config_json:
             MockSettings.mock_config = json.load(config_json)
@@ -118,3 +120,8 @@
 
         importlib.reload(importlib.import_module("policyhandler.pdp_client"))
         _LOGGER.info("done setup_pdp_api %s", Config._pdp_api_version)
+
+    @staticmethod
+    def reinit_mock_config():
+        """reload the init configs"""
+        Config.init_config("tests/etc_config.json")
diff --git a/tests/mock_tracker.py b/tests/mock_tracker.py
index a5fffd5..2b51983 100644
--- a/tests/mock_tracker.py
+++ b/tests/mock_tracker.py
@@ -1,5 +1,5 @@
 # ============LICENSE_START=======================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -20,9 +20,12 @@
 import json
 
 from policyhandler.config import Config
-from policyhandler.onap.audit import REQUEST_X_ECOMP_REQUESTID
+from policyhandler.onap.audit import (REQUEST_X_ECOMP_REQUESTID,
+                                      REQUEST_X_ONAP_REQUESTID)
 from policyhandler.utils import Utils
 
+REQUEST = "request"
+STATUS_CODE = "status_code"
 RESPONSE = "res"
 PEP_INSTANCE = "ONAPInstance"
 _LOGGER = Utils.get_logger(__file__)
@@ -49,15 +52,21 @@
 
 class MockHttpResponse(object):
     """Mock http response based on request"""
-    def __init__(self, method, uri, res_json, **kwargs):
+    def __init__(self, method, uri, res_json=None, **kwargs):
         """create response based on request"""
         self.request = _MockHttpRequestInResponse(method, uri, **kwargs)
+        self.headers = {}
 
-        self.status_code = kwargs.get("status_code", 200)
-        self.res = copy.deepcopy(res_json)
+        self.status_code, self.res = Tracker.get_response(self.request.to_json())
+        if self.status_code is None and res_json:
+            self.status_code = kwargs.get(STATUS_CODE, 200)
+        if res_json:
+            self.res = copy.deepcopy(res_json)
+        if self.status_code is None:
+            self.status_code = 500
         self.text = json.dumps(self.res)
 
-        self._track()
+        _LOGGER.info("MockHttpResponse: %s", self)
 
     def json(self):
         """returns json of response"""
@@ -70,15 +79,11 @@
     def to_json(self):
         """create json of the message"""
         return {
-            "request": self.request.to_json(),
-            "status_code": self.status_code,
+            REQUEST: self.request.to_json(),
+            STATUS_CODE: self.status_code,
             RESPONSE: self.res
         }
 
-    def _track(self):
-        """append the message to tracker's history"""
-        Tracker.track(self.to_json())
-
     def __str__(self):
         """stringify for logging"""
         return json.dumps(self.to_json(), sort_keys=True)
@@ -87,30 +92,88 @@
 class Tracker(object):
     """record all the messages going outside policy-handler during testing"""
     test_name = None
-    messages = []
     test_names = []
+
+    requests = []
+    expected = []
+
     validated_tests = {}
     valid_tests = {}
 
+    main_history = {}
+    pdp_api_v0_history = {}
+
+    @staticmethod
+    def _init():
+        """load expected data from json files"""
+        try:
+            with open("tests/main/expectations.json", 'r') as expectations:
+                Tracker.main_history = json.load(expectations)
+        except Exception:
+            Tracker.main_history = {}
+
+        try:
+            with open("tests/pdp_api_v0/expectations.json", 'r') as expectations:
+                Tracker.pdp_api_v0_history = json.load(expectations)
+        except Exception:
+            Tracker.pdp_api_v0_history = {}
+
     @staticmethod
     def reset(test_name=None):
         """remove all the messages from history"""
+        if not Tracker.test_names:
+            Tracker._init()
+
         Tracker.test_name = test_name
-        Tracker.messages.clear()
+        Tracker.requests.clear()
         Tracker.test_names.append(test_name)
 
+        if Config.is_pdp_api_default():
+            Tracker.expected = Tracker.main_history.get(Tracker.test_name, [])
+        else:
+            Tracker.expected = Tracker.pdp_api_v0_history.get(Tracker.test_name, [])
+
+
     @staticmethod
-    def track(message):
-        """append the tracked message to the history"""
-        message = copy.deepcopy(message)
-        Tracker.messages.append(message)
-        if _LOGGER:
-            _LOGGER.info("tracked_message: %s", json.dumps(message, sort_keys=True))
+    def get_response(request):
+        """
+        track the request to the history of requests
+        and return the response with the status_code from the expected history queue
+        """
+        request_idx = len(Tracker.requests)
+        request = copy.deepcopy(request)
+        Tracker.requests.append(request)
+
+        if request_idx < len(Tracker.expected):
+            expected = Tracker.expected[request_idx] or {}
+            masked_request = Tracker._hide_volatiles(copy.deepcopy(request))
+            expected_request = Tracker._hide_volatiles(copy.deepcopy(expected.get(REQUEST)))
+            if Utils.are_the_same(masked_request, expected_request):
+                _LOGGER.info("as expected[%s]: %s", request_idx,
+                             json.dumps(expected, sort_keys=True))
+                return expected.get(STATUS_CODE), expected.get(RESPONSE)
+
+            unexpected_request = {"unit-test-tracker": {
+                "request_idx": request_idx,
+                "received_request": copy.deepcopy(request),
+                "expected": copy.deepcopy(expected.get(REQUEST))
+            }}
+            _LOGGER.error("unexpected_request[%s]: %s", request_idx,
+                          json.dumps(unexpected_request, sort_keys=True))
+            return None, unexpected_request
+
+        unexpected_request = {"unit-test-tracker":{
+            "request_idx": request_idx, "out-of-range": len(Tracker.expected),
+            "received_request": copy.deepcopy(request)
+        }}
+        _LOGGER.error("unexpected_request[%s]: %s", request_idx,
+                      json.dumps(unexpected_request, sort_keys=True))
+        return None, unexpected_request
 
     @staticmethod
     def to_string():
         """stringify message history for logging"""
-        return json.dumps(Tracker.messages, sort_keys=True)
+        return json.dumps(Tracker.requests, sort_keys=True)
 
     @staticmethod
     def get_status(test_name=None):
@@ -131,15 +194,14 @@
         for idx, test_name in enumerate(Tracker.test_names):
             _LOGGER.info("%s[%s]: %s", Tracker.get_status(test_name), (idx + 1), test_name)
 
-        _LOGGER.info("not tracked test_names listed in main.mock_expected")
-        from .main.mock_expected import HISTORY_EXPECTED as main_history
-        for test_name in main_history:
+        _LOGGER.info("not tracked test_names listed in main.expectations")
+
+        for test_name in Tracker.main_history:
             if test_name not in Tracker.test_names:
                 _LOGGER.info("untracked: %s", test_name)
 
-        _LOGGER.info("not tracked test_names listed in pdp_api_v0.mock_expected")
-        from .pdp_api_v0.mock_expected import HISTORY_EXPECTED as pdp_api_v0_history
-        for test_name in pdp_api_v0_history:
+        _LOGGER.info("not tracked test_names listed in pdp_api_v0.expectations")
+        for test_name in Tracker.pdp_api_v0_history:
             if test_name not in Tracker.test_names:
                 _LOGGER.info("untracked: %s", test_name)
 
@@ -150,7 +212,7 @@
             return obj
 
         for key, value in obj.items():
-            if key in [REQUEST_X_ECOMP_REQUESTID, RESPONSE, PEP_INSTANCE]:
+            if key in [REQUEST_X_ONAP_REQUESTID, REQUEST_X_ECOMP_REQUESTID, RESPONSE, PEP_INSTANCE]:
                 obj[key] = "*"
             elif isinstance(value, dict):
                 obj[key] = Tracker._hide_volatiles(value)
@@ -161,20 +223,15 @@
     def validate():
         """validate that the message history is as expected"""
         _LOGGER.info("Tracker.validate(%s)", Tracker.test_name)
-        messages = [Tracker._hide_volatiles(copy.deepcopy(message))
-                    for message in Tracker.messages]
         Tracker.validated_tests[Tracker.test_name] = True
+        requests = [Tracker._hide_volatiles(copy.deepcopy(request))
+                    for request in Tracker.requests]
+        expected_reqs = [Tracker._hide_volatiles(copy.deepcopy(expected.get(REQUEST)))
+                         for expected in Tracker.expected]
 
-        if Config.is_pdp_api_default():
-            from .main.mock_expected import HISTORY_EXPECTED as main_history
-            expected = main_history.get(Tracker.test_name, [])
-        else:
-            from .pdp_api_v0.mock_expected import HISTORY_EXPECTED as pdp_api_v0_history
-            expected = pdp_api_v0_history.get(Tracker.test_name, [])
-
-        _LOGGER.info("messages: %s", json.dumps(messages, sort_keys=True))
-        _LOGGER.info("expected: %s", json.dumps(expected, sort_keys=True))
-        assert Utils.are_the_same(messages, expected)
+        _LOGGER.info("requests: %s", json.dumps(requests, sort_keys=True))
+        _LOGGER.info("expected: %s", json.dumps(expected_reqs, sort_keys=True))
+        assert Utils.are_the_same(requests, expected_reqs)
 
         _LOGGER.info("history valid for Tracker.validate(%s)", Tracker.test_name)
         Tracker.valid_tests[Tracker.test_name] = True
diff --git a/tests/pdp_api_v0/conftest.py b/tests/pdp_api_v0/conftest.py
index 07e566f..8220778 100644
--- a/tests/pdp_api_v0/conftest.py
+++ b/tests/pdp_api_v0/conftest.py
@@ -1,5 +1,5 @@
 # ============LICENSE_START=======================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -22,11 +22,14 @@
 import pytest
 
 from policyhandler import pdp_client
+from policyhandler.deploy_handler import DeployHandler
+from policyhandler.onap.audit import Audit
 from policyhandler.pdp_api_v0.pdp_consts import POLICY_NAME
 from policyhandler.utils import Utils
 
 from ..mock_settings import MockSettings
 from ..mock_tracker import MockHttpResponse
+from .mock_deploy_handler import MockDeploymentHandler
 from .mock_policy_engine import MockPolicyEngine2018
 from .mock_websocket import MockWebSocket
 
@@ -57,9 +60,10 @@
     def monkeyed_policy_rest_post(uri, json=None, **kwargs):
         """monkeypatch for the POST to policy-engine"""
         res_json = MockPolicyEngine2018.get_config(json.get(POLICY_NAME))
-        return MockHttpResponse("post", uri, res_json, json=json, **kwargs)
+        return MockHttpResponse("post", uri, res_json=res_json, json=json, **kwargs)
 
     _LOGGER.info("setup fix_pdp_post")
+    pdp_client.PolicyRest._lazy_inited = False
     pdp_client.PolicyRest._lazy_init()
     monkeypatch.setattr('policyhandler.pdp_client.PolicyRest._requests_session.post',
                         monkeyed_policy_rest_post)
@@ -72,9 +76,10 @@
     def monkeyed_policy_rest_post(uri, **kwargs):
         """monkeypatch for the POST to policy-engine"""
         res_json = MockPolicyEngine2018.get_configs_all()
-        return MockHttpResponse("post", uri, res_json, **kwargs)
+        return MockHttpResponse("post", uri, res_json=res_json, **kwargs)
 
     _LOGGER.info("setup fix_pdp_post_big")
+    pdp_client.PolicyRest._lazy_inited = False
     pdp_client.PolicyRest._lazy_init()
     monkeypatch.setattr('policyhandler.pdp_client.PolicyRest._requests_session.post',
                         monkeyed_policy_rest_post)
@@ -94,6 +99,7 @@
         raise MockException("fix_pdp_post_boom {}".format(uri))
 
     _LOGGER.info("setup fix_pdp_post_boom")
+    pdp_client.PolicyRest._lazy_inited = False
     pdp_client.PolicyRest._lazy_init()
     monkeypatch.setattr('policyhandler.pdp_client.PolicyRest._requests_session.post',
                         monkeyed_policy_rest_post_boom)
@@ -131,3 +137,96 @@
 
     yield fix_select_latest_policies_boom
     _LOGGER.info("teardown fix_select_latest_policies_boom at %s", policy_utils_path)
+
+@pytest.fixture()
+def fix_deploy_handler(monkeypatch):
+    """monkeyed requests to deployment-handler"""
+    def monkeyed_deploy_handler_put(uri, **kwargs):
+        """monkeypatch for policy-update request.put to deploy_handler"""
+        return MockHttpResponse("put", uri, res_json=MockDeploymentHandler.default_response(),
+                                **kwargs)
+
+    def monkeyed_deploy_handler_get(uri, **kwargs):
+        """monkeypatch policy-update request.get to deploy_handler"""
+        return MockHttpResponse("get", uri,
+                                res_json=MockDeploymentHandler.get_deployed_policies(),
+                                **kwargs)
+
+    _LOGGER.info("setup fix_deploy_handler")
+    audit = None
+    if DeployHandler._lazy_inited is False:
+        audit = Audit(req_message="fix_deploy_handler")
+        DeployHandler._lazy_init(audit)
+
+    monkeypatch.setattr('policyhandler.deploy_handler.DeployHandler._requests_session.put',
+                        monkeyed_deploy_handler_put)
+    monkeypatch.setattr('policyhandler.deploy_handler.DeployHandler._requests_session.get',
+                        monkeyed_deploy_handler_get)
+
+    yield fix_deploy_handler
+    if audit:
+        audit.audit_done("teardown")
+    _LOGGER.info("teardown fix_deploy_handler")
+
+
+@pytest.fixture()
+def fix_deploy_handler_413(monkeypatch):
+    """monkeyed failed discovery request.get"""
+    def monkeyed_deploy_handler_put(uri, **kwargs):
+        """monkeypatch for deploy_handler"""
+        return MockHttpResponse(
+            "put", uri,
+            res_json={"server_instance_uuid": MockSettings.deploy_handler_instance_uuid},
+            status_code=413, **kwargs
+        )
+
+    def monkeyed_deploy_handler_get(uri, **kwargs):
+        """monkeypatch policy-update request.get to deploy_handler"""
+        return MockHttpResponse("get", uri, res_json=MockDeploymentHandler.get_deployed_policies(),
+                                **kwargs)
+
+    _LOGGER.info("setup fix_deploy_handler_413")
+    audit = None
+    if DeployHandler._lazy_inited is False:
+        audit = Audit(req_message="fix_deploy_handler_413")
+        DeployHandler._lazy_init(audit)
+
+    monkeypatch.setattr('policyhandler.deploy_handler.DeployHandler._requests_session.put',
+                        monkeyed_deploy_handler_put)
+    monkeypatch.setattr('policyhandler.deploy_handler.DeployHandler._requests_session.get',
+                        monkeyed_deploy_handler_get)
+
+    yield fix_deploy_handler_413
+    if audit:
+        audit.audit_done("teardown")
+    _LOGGER.info("teardown fix_deploy_handler_413")
+
+
+@pytest.fixture()
+def fix_deploy_handler_404(monkeypatch):
+    """monkeyed failed discovery request.get"""
+    def monkeyed_deploy_handler_put(uri, **kwargs):
+        """monkeypatch for deploy_handler"""
+        return MockHttpResponse("put", uri, res_json=MockDeploymentHandler.default_response(),
+                                **kwargs)
+
+    def monkeyed_deploy_handler_get(uri, **kwargs):
+        """monkeypatch policy-update request.get to deploy_handler"""
+        return MockHttpResponse("get", uri, res_json=MockDeploymentHandler.default_response(),
+                                **kwargs)
+
+    _LOGGER.info("setup fix_deploy_handler_404")
+    audit = None
+    if DeployHandler._lazy_inited is False:
+        audit = Audit(req_message="fix_deploy_handler_404")
+        DeployHandler._lazy_init(audit)
+
+    monkeypatch.setattr('policyhandler.deploy_handler.DeployHandler._requests_session.put',
+                        monkeyed_deploy_handler_put)
+    monkeypatch.setattr('policyhandler.deploy_handler.DeployHandler._requests_session.get',
+                        monkeyed_deploy_handler_get)
+
+    yield fix_deploy_handler_404
+    if audit:
+        audit.audit_done("teardown")
+    _LOGGER.info("teardown fix_deploy_handler_404")
diff --git a/tests/pdp_api_v0/mock_expected.py b/tests/pdp_api_v0/expectations.json
similarity index 87%
rename from tests/pdp_api_v0/mock_expected.py
rename to tests/pdp_api_v0/expectations.json
index 6210e10..9c7a285 100644
--- a/tests/pdp_api_v0/mock_expected.py
+++ b/tests/pdp_api_v0/expectations.json
@@ -1,24 +1,5 @@
-# ============LICENSE_START=======================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
-# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ============LICENSE_END=========================================================
-#
-"""expected message history per test for pdp API 2018 and before"""
-
-
-HISTORY_EXPECTED = {
-    "tests/pdp_api_v0/test_policy_rest.py::test_get_policy_latest" : [
+{
+    "tests/pdp_api_v0/test_policy_rest.py::test_get_policy_latest": [
         {
             "request": {
                 "headers": {
@@ -27,13 +8,37 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_sit"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
+                "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
+            },
+            "res": "*",
+            "status_code": 200
+        }
+    ],
+    "tests/pdp_api_v0/test_policy_rest_auth.py::test_get_policy_latest": [
+        {
+            "request": {
+                "headers": {
+                    "Accept": "application/json",
+                    "Authorization": "Basic YWxleC1QRFBfVVNFUjphbGV4LVBEUF9QV0Q=",
+                    "ClientAuth": "Basic user",
+                    "Content-Type": "application/json",
+                    "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": {
+                    "policyName": "test_scope_prefix.Config_sit"
+                },
+                "method": "post",
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -44,9 +49,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -64,13 +70,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -86,13 +93,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_amet.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -108,13 +116,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_sit"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -125,9 +134,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -145,13 +155,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -160,10 +171,11 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
-                    "catch_up": True,
+                    "catch_up": true,
                     "latest_policies": {
                         "test_scope_prefix.Config_Lorem": {
                             "policy_body": {
@@ -181,7 +193,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_Lorem.1.xml",
                                 "policyVersion": "1",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -203,7 +215,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_amet.5.xml",
                                 "policyVersion": "5",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -225,7 +237,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ametist.7.xml",
                                 "policyVersion": "7",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -247,7 +259,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_consectetur.6.xml",
                                 "policyVersion": "6",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -269,7 +281,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_dolor.3.xml",
                                 "policyVersion": "3",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -291,7 +303,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ipsum.2.xml",
                                 "policyVersion": "2",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -313,7 +325,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_sit.4.xml",
                                 "policyVersion": "4",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -343,9 +355,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -363,13 +376,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -378,10 +392,11 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
-                    "catch_up": True,
+                    "catch_up": true,
                     "latest_policies": {
                         "test_scope_prefix.Config_Lorem": {
                             "policy_body": {
@@ -399,7 +414,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_Lorem.1.xml",
                                 "policyVersion": "1",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -421,7 +436,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_amet.5.xml",
                                 "policyVersion": "5",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -443,7 +458,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ametist.7.xml",
                                 "policyVersion": "7",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -465,7 +480,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_consectetur.6.xml",
                                 "policyVersion": "6",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -487,7 +502,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_dolor.3.xml",
                                 "policyVersion": "3",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -509,7 +524,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ipsum.2.xml",
                                 "policyVersion": "2",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -531,7 +546,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_sit.4.xml",
                                 "policyVersion": "4",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -563,9 +578,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -583,13 +599,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -598,10 +615,11 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
-                    "catch_up": True,
+                    "catch_up": true,
                     "latest_policies": {
                         "test_scope_prefix.Config_Lorem": {
                             "policy_body": {
@@ -619,7 +637,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_Lorem.1.xml",
                                 "policyVersion": "1",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -641,7 +659,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_amet.5.xml",
                                 "policyVersion": "5",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -663,7 +681,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ametist.7.xml",
                                 "policyVersion": "7",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -685,7 +703,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_consectetur.6.xml",
                                 "policyVersion": "6",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -707,7 +725,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_dolor.3.xml",
                                 "policyVersion": "3",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -729,7 +747,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ipsum.2.xml",
                                 "policyVersion": "2",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -751,7 +769,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_sit.4.xml",
                                 "policyVersion": "4",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -781,9 +799,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -801,13 +820,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_ipsum"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -821,13 +841,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_sit"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -841,13 +862,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_consectetur"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -856,10 +878,11 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
-                    "catch_up": False,
+                    "catch_up": false,
                     "latest_policies": {
                         "test_scope_prefix.Config_consectetur": {
                             "policy_body": {
@@ -877,7 +900,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_consectetur.6.xml",
                                 "policyVersion": "6",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -899,7 +922,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ipsum.2.xml",
                                 "policyVersion": "2",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -921,7 +944,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_sit.4.xml",
                                 "policyVersion": "4",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -949,9 +972,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -969,13 +993,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -984,10 +1009,11 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
-                    "catch_up": True,
+                    "catch_up": true,
                     "latest_policies": {
                         "test_scope_prefix.Config_Lorem": {
                             "policy_body": {
@@ -1005,7 +1031,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_Lorem.1.xml",
                                 "policyVersion": "1",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1027,7 +1053,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_amet.5.xml",
                                 "policyVersion": "5",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1049,7 +1075,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ametist.7.xml",
                                 "policyVersion": "7",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1071,7 +1097,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_consectetur.6.xml",
                                 "policyVersion": "6",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1093,7 +1119,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_dolor.3.xml",
                                 "policyVersion": "3",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1115,7 +1141,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ipsum.2.xml",
                                 "policyVersion": "2",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1137,7 +1163,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_sit.4.xml",
                                 "policyVersion": "4",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1167,9 +1193,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -1187,13 +1214,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_ipsum"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -1207,13 +1235,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_sit"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -1227,13 +1256,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_consectetur"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -1242,10 +1272,11 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
-                    "catch_up": False,
+                    "catch_up": false,
                     "latest_policies": {
                         "test_scope_prefix.Config_consectetur": {
                             "policy_body": {
@@ -1263,7 +1294,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_consectetur.6.xml",
                                 "policyVersion": "6",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1285,7 +1316,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ipsum.2.xml",
                                 "policyVersion": "2",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1307,7 +1338,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_sit.4.xml",
                                 "policyVersion": "4",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1335,9 +1366,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -1355,13 +1387,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -1370,10 +1403,11 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
-                    "catch_up": True,
+                    "catch_up": true,
                     "latest_policies": {
                         "test_scope_prefix.Config_Lorem": {
                             "policy_body": {
@@ -1391,7 +1425,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_Lorem.1.xml",
                                 "policyVersion": "1",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1413,7 +1447,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_amet.5.xml",
                                 "policyVersion": "5",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1435,7 +1469,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ametist.7.xml",
                                 "policyVersion": "7",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1457,7 +1491,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_consectetur.6.xml",
                                 "policyVersion": "6",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1479,7 +1513,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_dolor.3.xml",
                                 "policyVersion": "3",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1501,7 +1535,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ipsum.2.xml",
                                 "policyVersion": "2",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1523,7 +1557,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_sit.4.xml",
                                 "policyVersion": "4",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1553,9 +1587,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -1573,13 +1608,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_ipsum"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -1588,10 +1624,11 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
-                    "catch_up": False,
+                    "catch_up": false,
                     "latest_policies": {
                         "test_scope_prefix.Config_ipsum": {
                             "policy_body": {
@@ -1609,7 +1646,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ipsum.2.xml",
                                 "policyVersion": "2",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1633,9 +1670,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -1653,13 +1691,235 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": {
+                    "policyName": "test_scope_prefix.Config_.*"
+                },
+                "method": "post",
+                "params": null,
+                "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
+            },
+            "res": "*",
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": {
+                    "catch_up": true,
+                    "latest_policies": {
+                        "test_scope_prefix.Config_Lorem": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": "0",
+                                    "policy_updated_to_ver": "1",
+                                    "updated_policy_id": "test_scope_prefix.Config_Lorem"
+                                },
+                                "matchingConditions": {
+                                    "ConfigName": "alex_config_name",
+                                    "ONAPName": "DCAE"
+                                },
+                                "policyConfigMessage": "Config Retrieved! ",
+                                "policyConfigStatus": "CONFIG_RETRIEVED",
+                                "policyName": "test_scope_prefix.Config_Lorem.1.xml",
+                                "policyVersion": "1",
+                                "property": null,
+                                "responseAttributes": {},
+                                "type": "JSON"
+                            },
+                            "policy_id": "test_scope_prefix.Config_Lorem"
+                        },
+                        "test_scope_prefix.Config_amet": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": "4",
+                                    "policy_updated_to_ver": "5",
+                                    "updated_policy_id": "test_scope_prefix.Config_amet"
+                                },
+                                "matchingConditions": {
+                                    "ConfigName": "alex_config_name",
+                                    "ONAPName": "DCAE"
+                                },
+                                "policyConfigMessage": "Config Retrieved! ",
+                                "policyConfigStatus": "CONFIG_RETRIEVED",
+                                "policyName": "test_scope_prefix.Config_amet.5.xml",
+                                "policyVersion": "5",
+                                "property": null,
+                                "responseAttributes": {},
+                                "type": "JSON"
+                            },
+                            "policy_id": "test_scope_prefix.Config_amet"
+                        },
+                        "test_scope_prefix.Config_ametist": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": "6",
+                                    "policy_updated_to_ver": "7",
+                                    "updated_policy_id": "test_scope_prefix.Config_ametist"
+                                },
+                                "matchingConditions": {
+                                    "ConfigName": "alex_config_name",
+                                    "ONAPName": "DCAE"
+                                },
+                                "policyConfigMessage": "Config Retrieved! ",
+                                "policyConfigStatus": "CONFIG_RETRIEVED",
+                                "policyName": "test_scope_prefix.Config_ametist.7.xml",
+                                "policyVersion": "7",
+                                "property": null,
+                                "responseAttributes": {},
+                                "type": "JSON"
+                            },
+                            "policy_id": "test_scope_prefix.Config_ametist"
+                        },
+                        "test_scope_prefix.Config_consectetur": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": "5",
+                                    "policy_updated_to_ver": "6",
+                                    "updated_policy_id": "test_scope_prefix.Config_consectetur"
+                                },
+                                "matchingConditions": {
+                                    "ConfigName": "alex_config_name",
+                                    "ONAPName": "DCAE"
+                                },
+                                "policyConfigMessage": "Config Retrieved! ",
+                                "policyConfigStatus": "CONFIG_RETRIEVED",
+                                "policyName": "test_scope_prefix.Config_consectetur.6.xml",
+                                "policyVersion": "6",
+                                "property": null,
+                                "responseAttributes": {},
+                                "type": "JSON"
+                            },
+                            "policy_id": "test_scope_prefix.Config_consectetur"
+                        },
+                        "test_scope_prefix.Config_dolor": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": "2",
+                                    "policy_updated_to_ver": "3",
+                                    "updated_policy_id": "test_scope_prefix.Config_dolor"
+                                },
+                                "matchingConditions": {
+                                    "ConfigName": "alex_config_name",
+                                    "ONAPName": "DCAE"
+                                },
+                                "policyConfigMessage": "Config Retrieved! ",
+                                "policyConfigStatus": "CONFIG_RETRIEVED",
+                                "policyName": "test_scope_prefix.Config_dolor.3.xml",
+                                "policyVersion": "3",
+                                "property": null,
+                                "responseAttributes": {},
+                                "type": "JSON"
+                            },
+                            "policy_id": "test_scope_prefix.Config_dolor"
+                        },
+                        "test_scope_prefix.Config_ipsum": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": "1",
+                                    "policy_updated_to_ver": "2",
+                                    "updated_policy_id": "test_scope_prefix.Config_ipsum"
+                                },
+                                "matchingConditions": {
+                                    "ConfigName": "alex_config_name",
+                                    "ONAPName": "DCAE"
+                                },
+                                "policyConfigMessage": "Config Retrieved! ",
+                                "policyConfigStatus": "CONFIG_RETRIEVED",
+                                "policyName": "test_scope_prefix.Config_ipsum.2.xml",
+                                "policyVersion": "2",
+                                "property": null,
+                                "responseAttributes": {},
+                                "type": "JSON"
+                            },
+                            "policy_id": "test_scope_prefix.Config_ipsum"
+                        },
+                        "test_scope_prefix.Config_sit": {
+                            "policy_body": {
+                                "config": {
+                                    "policy_hello": "world!",
+                                    "policy_updated_from_ver": "3",
+                                    "policy_updated_to_ver": "4",
+                                    "updated_policy_id": "test_scope_prefix.Config_sit"
+                                },
+                                "matchingConditions": {
+                                    "ConfigName": "alex_config_name",
+                                    "ONAPName": "DCAE"
+                                },
+                                "policyConfigMessage": "Config Retrieved! ",
+                                "policyConfigStatus": "CONFIG_RETRIEVED",
+                                "policyName": "test_scope_prefix.Config_sit.4.xml",
+                                "policyVersion": "4",
+                                "property": null,
+                                "responseAttributes": {},
+                                "type": "JSON"
+                            },
+                            "policy_id": "test_scope_prefix.Config_sit"
+                        }
+                    },
+                    "policy_filter_matches": {
+                        "test_scope_prefix.Config_Lorem": {},
+                        "test_scope_prefix.Config_amet": {},
+                        "test_scope_prefix.Config_ametist": {},
+                        "test_scope_prefix.Config_consectetur": {},
+                        "test_scope_prefix.Config_dolor": {},
+                        "test_scope_prefix.Config_ipsum": {},
+                        "test_scope_prefix.Config_sit": {}
+                    },
+                    "removed_policies": {}
+                },
+                "method": "put",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": "*",
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "X-ONAP-RequestID": "*",
+                    "X-ECOMP-RequestID": "*"
+                },
+                "json": null,
+                "method": "get",
+                "params": {
+                    "cfy_tenant_name": "default_tenant"
+                },
+                "uri": "http://unit-test-deployment_handler:8188000/policy"
+            },
+            "res": "*",
+            "status_code": 200
+        },
+        {
+            "request": {
+                "headers": {
+                    "Accept": "application/json",
+                    "Authorization": "Basic auth",
+                    "ClientAuth": "Basic user",
+                    "Content-Type": "application/json",
+                    "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_dolor"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -1673,13 +1933,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_amet"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -1688,10 +1949,11 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
-                    "catch_up": False,
+                    "catch_up": false,
                     "latest_policies": {
                         "test_scope_prefix.Config_amet": {
                             "policy_body": {
@@ -1709,7 +1971,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_amet.5.xml",
                                 "policyVersion": "5",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1731,7 +1993,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_dolor.3.xml",
                                 "policyVersion": "3",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1756,9 +2018,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -1776,13 +2039,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -1791,10 +2055,11 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
-                    "catch_up": True,
+                    "catch_up": true,
                     "latest_policies": {
                         "test_scope_prefix.Config_Lorem": {
                             "policy_body": {
@@ -1812,7 +2077,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_Lorem.1.xml",
                                 "policyVersion": "1",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1834,7 +2099,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_amet.5.xml",
                                 "policyVersion": "5",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1856,7 +2121,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ametist.7.xml",
                                 "policyVersion": "7",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1878,7 +2143,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_consectetur.6.xml",
                                 "policyVersion": "6",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1900,7 +2165,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_dolor.3.xml",
                                 "policyVersion": "3",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1922,7 +2187,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ipsum.2.xml",
                                 "policyVersion": "2",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1944,7 +2209,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_sit.4.xml",
                                 "policyVersion": "4",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -1976,9 +2241,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -1996,13 +2262,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -2011,10 +2278,11 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
-                    "catch_up": True,
+                    "catch_up": true,
                     "latest_policies": {
                         "test_scope_prefix.Config_Lorem": {
                             "policy_body": {
@@ -2027,7 +2295,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_Lorem.1.xml",
                                 "policyVersion": "1",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2044,7 +2312,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_amet.5.xml",
                                 "policyVersion": "5",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2061,7 +2329,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ametist.7.xml",
                                 "policyVersion": "7",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2078,7 +2346,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_consectetur.6.xml",
                                 "policyVersion": "6",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2095,7 +2363,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_dolor.3.xml",
                                 "policyVersion": "3",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2112,7 +2380,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ipsum.2.xml",
                                 "policyVersion": "2",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2129,7 +2397,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_sit.4.xml",
                                 "policyVersion": "4",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2159,9 +2427,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2179,13 +2448,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -2194,10 +2464,11 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
-                    "catch_up": True,
+                    "catch_up": true,
                     "latest_policies": {
                         "test_scope_prefix.Config_Lorem": {
                             "policy_body": {
@@ -2210,7 +2481,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_Lorem.1.xml",
                                 "policyVersion": "1",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2227,7 +2498,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_amet.5.xml",
                                 "policyVersion": "5",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2244,7 +2515,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ametist.7.xml",
                                 "policyVersion": "7",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2261,7 +2532,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_consectetur.6.xml",
                                 "policyVersion": "6",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2278,7 +2549,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_dolor.3.xml",
                                 "policyVersion": "3",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2295,7 +2566,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ipsum.2.xml",
                                 "policyVersion": "2",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2312,7 +2583,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_sit.4.xml",
                                 "policyVersion": "4",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2342,9 +2613,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2362,13 +2634,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -2377,10 +2650,11 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
-                    "catch_up": True,
+                    "catch_up": true,
                     "latest_policies": {
                         "test_scope_prefix.Config_Lorem": {
                             "policy_body": {
@@ -2393,7 +2667,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_Lorem.1.xml",
                                 "policyVersion": "1",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2410,7 +2684,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_amet.5.xml",
                                 "policyVersion": "5",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2427,7 +2701,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ametist.7.xml",
                                 "policyVersion": "7",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2444,7 +2718,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_consectetur.6.xml",
                                 "policyVersion": "6",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2461,7 +2735,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_dolor.3.xml",
                                 "policyVersion": "3",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2478,7 +2752,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_ipsum.2.xml",
                                 "policyVersion": "2",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2495,7 +2769,7 @@
                                 "policyConfigStatus": "CONFIG_RETRIEVED",
                                 "policyName": "test_scope_prefix.Config_sit.4.xml",
                                 "policyVersion": "4",
-                                "property": None,
+                                "property": null,
                                 "responseAttributes": {},
                                 "type": "JSON"
                             },
@@ -2527,9 +2801,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2542,9 +2817,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2557,9 +2833,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2574,9 +2851,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2591,9 +2869,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2606,9 +2885,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2621,9 +2901,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2636,9 +2917,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2653,9 +2935,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2668,9 +2951,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2685,9 +2969,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2700,9 +2985,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2717,9 +3003,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2732,9 +3019,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2749,9 +3037,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2769,13 +3058,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -2791,13 +3081,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_amet.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -2813,13 +3104,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_sit"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -2830,9 +3122,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2850,13 +3143,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -2867,9 +3161,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2887,13 +3182,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -2902,9 +3198,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2922,13 +3219,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -2939,9 +3237,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2959,13 +3258,14 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
@@ -2976,9 +3276,10 @@
         {
             "request": {
                 "headers": {
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
-                "json": None,
+                "json": null,
                 "method": "get",
                 "params": {
                     "cfy_tenant_name": "default_tenant"
@@ -2996,17 +3297,18 @@
                     "ClientAuth": "Basic user",
                     "Content-Type": "application/json",
                     "Environment": "TEST",
+                    "X-ONAP-RequestID": "*",
                     "X-ECOMP-RequestID": "*"
                 },
                 "json": {
                     "policyName": "test_scope_prefix.Config_.*"
                 },
                 "method": "post",
-                "params": None,
+                "params": null,
                 "uri": "https://unit-test-pdp-server:8081000/pdp/api/getConfig"
             },
             "res": "*",
             "status_code": 200
         }
     ]
-}
+}
\ No newline at end of file
diff --git a/tests/mock_deploy_handler.py b/tests/pdp_api_v0/mock_deploy_handler.py
similarity index 78%
rename from tests/mock_deploy_handler.py
rename to tests/pdp_api_v0/mock_deploy_handler.py
index cd8e791..5446070 100644
--- a/tests/mock_deploy_handler.py
+++ b/tests/pdp_api_v0/mock_deploy_handler.py
@@ -1,5 +1,5 @@
 # ============LICENSE_START=======================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -16,12 +16,16 @@
 #
 """mocking for the deployment-handler - shared by many tests"""
 
+import json
+
 from policyhandler.pdp_api_v0.pdp_consts import POLICY_VERSION
 from policyhandler.policy_consts import POLICY_BODY, POLICY_ID, POLICY_VERSIONS
+from policyhandler.utils import Utils
 
-from .mock_settings import MockSettings
-from .pdp_api_v0.mock_policy_engine import MockPolicyEngine2018
+from ..mock_settings import MockSettings
+from .mock_policy_engine import MockPolicyEngine2018
 
+_LOGGER = Utils.get_logger(__file__)
 
 class MockDeploymentHandler(object):
     """pretend this is the deployment-handler"""
@@ -34,14 +38,16 @@
     @staticmethod
     def get_deployed_policies():
         """generate the deployed policies message"""
+        all_policies = MockPolicyEngine2018.gen_all_policies_latest(version_offset=1)
+        _LOGGER.info("all_policies: %s", json.dumps(all_policies))
+
         response = MockDeploymentHandler.default_response()
         policies = dict(
             (policy_id, {
                 POLICY_ID: policy_id,
                 POLICY_VERSIONS: {policy.get(POLICY_BODY, {}).get(POLICY_VERSION, "999"): True},
                 "pending_update": False})
-            for policy_id, policy in (
-                MockPolicyEngine2018.gen_all_policies_latest(version_offset=1).items()))
+            for policy_id, policy in all_policies.items())
         response["policies"] = policies
 
         return response
diff --git a/tests/pdp_api_v0/mock_websocket.py b/tests/pdp_api_v0/mock_websocket.py
index 17f3bbe..3e3e63b 100644
--- a/tests/pdp_api_v0/mock_websocket.py
+++ b/tests/pdp_api_v0/mock_websocket.py
@@ -1,5 +1,5 @@
 # ============LICENSE_START=======================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -21,8 +21,8 @@
 
 from policyhandler.pdp_api_v0.pdp_consts import POLICY_NAME
 from policyhandler.pdp_api_v0.policy_listener import (LOADED_POLICIES,
-                                                        POLICY_VER,
-                                                        REMOVED_POLICIES)
+                                                      POLICY_VER,
+                                                      REMOVED_POLICIES)
 from policyhandler.utils import Utils
 
 from .mock_policy_engine import MockPolicyEngine2018
diff --git a/tests/main/test_policy_rest.py b/tests/pdp_api_v0/test_policy_rest_auth.py
similarity index 84%
rename from tests/main/test_policy_rest.py
rename to tests/pdp_api_v0/test_policy_rest_auth.py
index 964a21d..dd8dc83 100644
--- a/tests/main/test_policy_rest.py
+++ b/tests/pdp_api_v0/test_policy_rest_auth.py
@@ -1,5 +1,5 @@
 # ============LICENSE_START=======================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -25,14 +25,14 @@
 from policyhandler.utils import Utils
 
 from ..mock_tracker import Tracker
-from .mock_policy_engine import MockPolicyEngine
+from .mock_policy_engine import MockPolicyEngine2018
 
 _LOGGER = Utils.get_logger(__file__)
 
-@pytest.mark.usefixtures("fix_pdp_post")
+@pytest.mark.usefixtures("fix_pdp_authorization", "fix_pdp_api_v0", "fix_pdp_post")
 def test_get_policy_latest():
     """test /policy_latest/<policy-id>"""
-    policy_id, expected_policy = MockPolicyEngine.gen_policy_latest(3)
+    policy_id, expected_policy = MockPolicyEngine2018.gen_policy_latest(3)
 
     audit = Audit(job_name="test_get_policy_latest",
                   req_message="get /policy_latest/{}".format(policy_id or ""))
diff --git a/tests/pdp_api_v0/test_policyhandler.py b/tests/pdp_api_v0/test_policyhandler.py
index 2b2629b..06de265 100644
--- a/tests/pdp_api_v0/test_policyhandler.py
+++ b/tests/pdp_api_v0/test_policyhandler.py
@@ -1,5 +1,5 @@
 # ============LICENSE_START=======================================================
-# Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2017-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -21,12 +21,13 @@
 import time
 import uuid
 
-import cherrypy
 import pytest
-from cherrypy.test.helper import CPWebCase
 
+import cherrypy
+from cherrypy.test.helper import CPWebCase
 from policyhandler.config import Config
-from policyhandler.onap.audit import REQUEST_X_ECOMP_REQUESTID, Audit
+from policyhandler.onap.audit import (REQUEST_X_ECOMP_REQUESTID,
+                                      REQUEST_X_ONAP_REQUESTID, Audit)
 from policyhandler.pdp_api_v0.pdp_consts import POLICY_NAME
 from policyhandler.policy_consts import LATEST_POLICIES
 from policyhandler.policy_receiver import PolicyReceiver
@@ -89,10 +90,6 @@
         _LOGGER.info("result: %s", result)
         _LOGGER.info("body: %s", self.body)
 
-        if Config.is_pdp_api_default():
-            self.assertStatus('404 Not Found')
-            return
-
         self.assertStatus('200 OK')
 
         policies_latest = json.loads(self.body)
@@ -114,20 +111,18 @@
         expected_policies = MockPolicyEngine2018.gen_policies_latest(match_to_policy_name)
 
         body = json.dumps({POLICY_NAME: match_to_policy_name})
+        request_id = str(uuid.uuid4())
         result = self.getPage("/policies_latest", method='POST',
                               body=body,
                               headers=[
-                                  (REQUEST_X_ECOMP_REQUESTID, str(uuid.uuid4())),
+                                  (REQUEST_X_ECOMP_REQUESTID, request_id),
+                                  (REQUEST_X_ONAP_REQUESTID, request_id),
                                   ("Content-Type", "application/json"),
                                   ('Content-Length', str(len(body)))
                               ])
         _LOGGER.info("result: %s", result)
         _LOGGER.info("body: %s", self.body)
 
-        if Config.is_pdp_api_default():
-            self.assertStatus('404 Not Found')
-            return
-
         self.assertStatus('200 OK')
 
         policies_latest = json.loads(self.body)[LATEST_POLICIES]
@@ -144,10 +139,6 @@
     @pytest.mark.usefixtures("fix_deploy_handler", "fix_policy_receiver_websocket")
     def test_zzz_policy_updates_and_catch_ups(self):
         """test run policy handler with policy updates and catchups"""
-        if Config.is_pdp_api_default():
-            _LOGGER.info("passive for new PDP API")
-            return
-
         _LOGGER.info("start policy_updates_and_catch_ups")
         assert not PolicyReceiver.is_running()
 
@@ -177,10 +168,6 @@
     @pytest.mark.usefixtures("fix_deploy_handler", "fix_policy_receiver_websocket")
     def test_zzz_catch_up_on_deploy_handler_changed(self):
         """test run policy handler with deployment-handler changed underneath"""
-        if Config.is_pdp_api_default():
-            _LOGGER.info("passive for new PDP API")
-            return
-
         _LOGGER.info("start zzz_catch_up_on_deploy_handler_changed")
         assert not PolicyReceiver.is_running()
         audit = Audit(job_name="test_zzz_catch_up_on_deploy_handler_changed",
@@ -201,8 +188,8 @@
         _LOGGER.info("sleep after send_notification...")
         time.sleep(3)
 
-        _LOGGER.info("sleep 5 before shutdown...")
-        time.sleep(5)
+        _LOGGER.info("sleep 3 before shutdown...")
+        time.sleep(3)
 
         result = self.getPage("/healthcheck")
         _LOGGER.info("healthcheck result: %s", result)
@@ -216,10 +203,6 @@
     @pytest.mark.usefixtures("fix_deploy_handler", "fix_policy_receiver_websocket")
     def test_zzz_get_catch_up(self):
         """test /catch_up"""
-        if Config.is_pdp_api_default():
-            _LOGGER.info("passive for new PDP API")
-            return
-
         _LOGGER.info("start /catch_up")
         assert not PolicyReceiver.is_running()
         audit = Audit(job_name="test_zzz_get_catch_up", req_message="start /catch_up")
@@ -273,8 +256,4 @@
         time.sleep(1)
         assert not PolicyReceiver.is_running()
 
-        if Config.is_pdp_api_default():
-            _LOGGER.info("passive for new PDP API")
-            return
-
         Tracker.validate()
diff --git a/tests/pdp_api_v0/test_pz_catch_up.py b/tests/pdp_api_v0/test_pz_catch_up.py
index 3b37af5..8d461e8 100644
--- a/tests/pdp_api_v0/test_pz_catch_up.py
+++ b/tests/pdp_api_v0/test_pz_catch_up.py
@@ -1,5 +1,5 @@
 # ============LICENSE_START=======================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -21,7 +21,6 @@
 
 import pytest
 
-from policyhandler.config import Config
 from policyhandler.onap.audit import Audit
 from policyhandler.policy_receiver import PolicyReceiver
 from policyhandler.utils import Utils
@@ -40,10 +39,6 @@
 )
 def test_catch_up_failed_dh():
     """test run policy handler with catchups and failed deployment-handler"""
-    if Config.is_pdp_api_default():
-        _LOGGER.info("passive for new PDP API")
-        return
-
     _LOGGER.info("start test_catch_up_failed_dh")
     assert not PolicyReceiver.is_running()
     audit = Audit(job_name="test_catch_up_failed_dh",
@@ -78,10 +73,6 @@
 )
 def test_catch_up_dh_404():
     """test run policy handler with catchups and failed deployment-handler"""
-    if Config.is_pdp_api_default():
-        _LOGGER.info("passive for new PDP API")
-        return
-
     _LOGGER.info("start test_catch_up_dh_404")
     assert not PolicyReceiver.is_running()
     audit = Audit(job_name="test_catch_up_dh_404",
diff --git a/tests/pdp_api_v0/test_pz_pdp_boom.py b/tests/pdp_api_v0/test_pz_pdp_boom.py
index effadc2..8ce42a7 100644
--- a/tests/pdp_api_v0/test_pz_pdp_boom.py
+++ b/tests/pdp_api_v0/test_pz_pdp_boom.py
@@ -1,5 +1,5 @@
 # ============LICENSE_START=======================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -23,9 +23,9 @@
 import cherrypy
 import pytest
 from cherrypy.test.helper import CPWebCase
-
 from policyhandler.config import Config
-from policyhandler.onap.audit import (REQUEST_X_ECOMP_REQUESTID, Audit,
+from policyhandler.onap.audit import (REQUEST_X_ECOMP_REQUESTID,
+                                      REQUEST_X_ONAP_REQUESTID, Audit,
                                       AuditHttpCode)
 from policyhandler.pdp_api_v0.pdp_consts import POLICY_NAME
 from policyhandler.policy_receiver import PolicyReceiver
@@ -80,10 +80,6 @@
         _LOGGER.info("result: %s", result)
         _LOGGER.info("body: %s", self.body)
 
-        if Config.is_pdp_api_default():
-            self.assertStatus('404 Not Found')
-            return
-
         self.assertStatus(AuditHttpCode.SERVER_INTERNAL_ERROR.value)
 
         result = self.getPage("/healthcheck")
@@ -96,20 +92,18 @@
         match_to_policy_name = MockPolicyEngine2018.scope_prefix + "amet.*"
 
         body = json.dumps({POLICY_NAME: match_to_policy_name})
+        request_id = str(uuid.uuid4())
         result = self.getPage("/policies_latest", method='POST',
                               body=body,
                               headers=[
-                                  (REQUEST_X_ECOMP_REQUESTID, str(uuid.uuid4())),
+                                  (REQUEST_X_ECOMP_REQUESTID, request_id),
+                                  (REQUEST_X_ONAP_REQUESTID, request_id),
                                   ("Content-Type", "application/json"),
                                   ('Content-Length', str(len(body)))
                               ])
         _LOGGER.info("result: %s", result)
         _LOGGER.info("body: %s", self.body)
 
-        if Config.is_pdp_api_default():
-            self.assertStatus('404 Not Found')
-            return
-
         self.assertStatus(AuditHttpCode.SERVER_INTERNAL_ERROR.value)
 
         result = self.getPage("/healthcheck")
@@ -120,10 +114,6 @@
     @pytest.mark.usefixtures("fix_deploy_handler", "fix_policy_receiver_websocket")
     def test_zzz_policy_updates_and_catch_ups(self):
         """test run policy handler with policy updates and catchups"""
-        if Config.is_pdp_api_default():
-            _LOGGER.info("passive for new PDP API")
-            return
-
         _LOGGER.info("start policy_updates_and_catch_ups")
         assert not PolicyReceiver.is_running()
         audit = Audit(job_name="test_zzz_policy_updates_and_catch_ups",
@@ -152,10 +142,6 @@
     @pytest.mark.usefixtures("fix_deploy_handler", "fix_policy_receiver_websocket")
     def test_zzz_catch_up_on_deploy_handler_changed(self):
         """test run policy handler with deployment-handler changed underneath"""
-        if Config.is_pdp_api_default():
-            _LOGGER.info("passive for new PDP API")
-            return
-
         _LOGGER.info("start zzz_catch_up_on_deploy_handler_changed")
         assert not PolicyReceiver.is_running()
         audit = Audit(job_name="test_zzz_catch_up_on_deploy_handler_changed",
@@ -191,10 +177,6 @@
     @pytest.mark.usefixtures("fix_deploy_handler", "fix_policy_receiver_websocket")
     def test_zzz_get_catch_up(self):
         """test /catch_up"""
-        if Config.is_pdp_api_default():
-            _LOGGER.info("passive for new PDP API")
-            return
-
         _LOGGER.info("start /catch_up")
         assert not PolicyReceiver.is_running()
         audit = Audit(job_name="test_zzz_get_catch_up", req_message="start /catch_up")
@@ -248,8 +230,4 @@
         time.sleep(1)
         assert not PolicyReceiver.is_running()
 
-        if Config.is_pdp_api_default():
-            _LOGGER.info("passive for new PDP API")
-            return
-
         Tracker.validate()
diff --git a/tests/pdp_api_v0/test_pz_ph_boom.py b/tests/pdp_api_v0/test_pz_ph_boom.py
index 4203110..432450c 100644
--- a/tests/pdp_api_v0/test_pz_ph_boom.py
+++ b/tests/pdp_api_v0/test_pz_ph_boom.py
@@ -1,5 +1,5 @@
 # ============LICENSE_START=======================================================
-# Copyright (c) 2018-2019 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -23,9 +23,9 @@
 import cherrypy
 import pytest
 from cherrypy.test.helper import CPWebCase
-
 from policyhandler.config import Config
-from policyhandler.onap.audit import (REQUEST_X_ECOMP_REQUESTID, Audit,
+from policyhandler.onap.audit import (REQUEST_X_ECOMP_REQUESTID,
+                                      REQUEST_X_ONAP_REQUESTID, Audit,
                                       AuditHttpCode)
 from policyhandler.pdp_api_v0.pdp_consts import POLICY_NAME
 from policyhandler.policy_receiver import PolicyReceiver
@@ -81,10 +81,6 @@
         _LOGGER.info("result: %s", result)
         _LOGGER.info("body: %s", self.body)
 
-        if Config.is_pdp_api_default():
-            self.assertStatus('404 Not Found')
-            return
-
         self.assertStatus(AuditHttpCode.SERVER_INTERNAL_ERROR.value)
 
         result = self.getPage("/healthcheck")
@@ -97,20 +93,18 @@
         match_to_policy_name = MockPolicyEngine2018.scope_prefix + "amet.*"
 
         body = json.dumps({POLICY_NAME: match_to_policy_name})
+        request_id = str(uuid.uuid4())
         result = self.getPage("/policies_latest", method='POST',
                               body=body,
                               headers=[
-                                  (REQUEST_X_ECOMP_REQUESTID, str(uuid.uuid4())),
+                                  (REQUEST_X_ECOMP_REQUESTID, request_id),
+                                  (REQUEST_X_ONAP_REQUESTID, request_id),
                                   ("Content-Type", "application/json"),
                                   ('Content-Length', str(len(body)))
                               ])
         _LOGGER.info("result: %s", result)
         _LOGGER.info("body: %s", self.body)
 
-        if Config.is_pdp_api_default():
-            self.assertStatus('404 Not Found')
-            return
-
         self.assertStatus(AuditHttpCode.SERVER_INTERNAL_ERROR.value)
 
         result = self.getPage("/healthcheck")
@@ -121,10 +115,6 @@
     @pytest.mark.usefixtures("fix_deploy_handler", "fix_policy_receiver_websocket")
     def test_zzz_policy_updates_and_catch_ups(self):
         """test run policy handler with policy updates and catchups"""
-        if Config.is_pdp_api_default():
-            _LOGGER.info("passive for new PDP API")
-            return
-
         _LOGGER.info("start policy_updates_and_catch_ups")
         assert not PolicyReceiver.is_running()
         audit = Audit(job_name="test_zzz_policy_updates_and_catch_ups",
@@ -153,10 +143,6 @@
     @pytest.mark.usefixtures("fix_deploy_handler", "fix_policy_receiver_websocket")
     def test_zzz_catch_up_on_deploy_handler_changed(self):
         """test run policy handler with deployment-handler changed underneath"""
-        if Config.is_pdp_api_default():
-            _LOGGER.info("passive for new PDP API")
-            return
-
         _LOGGER.info("start zzz_catch_up_on_deploy_handler_changed")
         assert not PolicyReceiver.is_running()
         audit = Audit(job_name="test_zzz_catch_up_on_deploy_handler_changed",
@@ -192,10 +178,6 @@
     @pytest.mark.usefixtures("fix_deploy_handler", "fix_policy_receiver_websocket")
     def test_zzz_get_catch_up(self):
         """test /catch_up"""
-        if Config.is_pdp_api_default():
-            _LOGGER.info("passive for new PDP API")
-            return
-
         _LOGGER.info("start /catch_up")
         assert not PolicyReceiver.is_running()
         audit = Audit(job_name="test_zzz_get_catch_up", req_message="start /catch_up")
@@ -249,8 +231,4 @@
         time.sleep(1)
         assert not PolicyReceiver.is_running()
 
-        if Config.is_pdp_api_default():
-            _LOGGER.info("passive for new PDP API")
-            return
-
         Tracker.validate()
diff --git a/version.properties b/version.properties
index d49fe4b..cf34660 100644
--- a/version.properties
+++ b/version.properties
@@ -1,6 +1,6 @@
 major=5
-minor=0
-patch=1
+minor=1
+patch=0
 base_version=${major}.${minor}.${patch}
 release_version=${base_version}
 snapshot_version=${base_version}-SNAPSHOT
