diff --git a/onap-dcae-dcaepolicy-lib/onap_dcae_dcaepolicy_lib/dcae_policy.py b/onap-dcae-dcaepolicy-lib/onap_dcae_dcaepolicy_lib/dcae_policy.py
index 5a3a0b2..65c2614 100644
--- a/onap-dcae-dcaepolicy-lib/onap_dcae_dcaepolicy_lib/dcae_policy.py
+++ b/onap-dcae-dcaepolicy-lib/onap_dcae_dcaepolicy_lib/dcae_policy.py
@@ -48,6 +48,8 @@
 ACTION_GATHERED = "gathered"
 ACTION_UPDATED = "updated"
 
+CONFIG_ATTRIBUTES = "configAttributes"
+
 class Policies(object):
     """static class for policy operations"""
     _updated_policies = {}
@@ -99,6 +101,23 @@
         return True
 
     @staticmethod
+    def _fix_policy_filter(policy_filter):
+        if CONFIG_ATTRIBUTES in policy_filter:
+            config_attributes = policy_filter.get(CONFIG_ATTRIBUTES)
+            if isinstance(config_attributes, dict):
+                return
+            try:
+                config_attributes = json.loads(config_attributes)
+                if config_attributes and isinstance(config_attributes, dict):
+                    policy_filter[CONFIG_ATTRIBUTES] = config_attributes
+                    return
+            except (ValueError, TypeError):
+                pass
+            if config_attributes:
+                ctx.logger.warn("unexpected %s: %s", CONFIG_ATTRIBUTES, config_attributes)
+            del policy_filter[CONFIG_ATTRIBUTES]
+
+    @staticmethod
     def _gather_policies(target, policies, policy_filters):
         """adds the policies and policy-filter from dcae.nodes.policies node to policies"""
         if DCAE_POLICIES_TYPE not in target.node.type_hierarchy:
@@ -106,14 +125,16 @@
 
         property_policy_filter = target.node.properties.get(POLICY_FILTER)
         if property_policy_filter:
-            policy_filter = dict(
+            policy_filter = deepcopy(dict(
                 (k, v) for (k, v) in dict(property_policy_filter).iteritems()
                 if v or isinstance(v, (int, float))
-            )
+            ))
+            Policies._fix_policy_filter(policy_filter)
+
             if policy_filter:
                 policy_filters[target.instance.id] = {
                     POLICY_FILTER_ID : target.instance.id,
-                    POLICY_FILTER : deepcopy(policy_filter)
+                    POLICY_FILTER : policy_filter
                 }
 
         filtered_policies = target.instance.runtime_properties.get(POLICIES_FILTERED)
diff --git a/onap-dcae-dcaepolicy-lib/pom.xml b/onap-dcae-dcaepolicy-lib/pom.xml
index a60d848..8fce077 100644
--- a/onap-dcae-dcaepolicy-lib/pom.xml
+++ b/onap-dcae-dcaepolicy-lib/pom.xml
@@ -28,7 +28,7 @@
   <groupId>org.onap.dcaegen2.utils</groupId>
   <artifactId>onap-dcae-dcaepolicy-lib</artifactId>
   <name>dcaegen2-utils-onap-dcae-dcaepolicy-lib</name>
-  <version>2.2.0-SNAPSHOT</version>
+  <version>2.3.0-SNAPSHOT</version>
   <url>http://maven.apache.org</url>
 
   <properties>
diff --git a/onap-dcae-dcaepolicy-lib/setup.py b/onap-dcae-dcaepolicy-lib/setup.py
index eed69f0..55dbaf3 100644
--- a/onap-dcae-dcaepolicy-lib/setup.py
+++ b/onap-dcae-dcaepolicy-lib/setup.py
@@ -23,7 +23,7 @@
 setup(
     name='onap-dcae-dcaepolicy-lib',
     description='lib of policy decorators to be used by cloudify plugins of dcae controller',
-    version="2.2.0",
+    version="2.3.0",
     author='Alex Shatov',
     author_email="alexs@att.com",
     license='Apache 2',
diff --git a/onap-dcae-dcaepolicy-lib/tests/test_dcae_policy.py b/onap-dcae-dcaepolicy-lib/tests/test_dcae_policy.py
index 81958f0..37ab9f6 100644
--- a/onap-dcae-dcaepolicy-lib/tests/test_dcae_policy.py
+++ b/onap-dcae-dcaepolicy-lib/tests/test_dcae_policy.py
@@ -40,6 +40,7 @@
 POLICY_NAME = "policyName"
 POLICY_BODY = 'policy_body'
 POLICY_CONFIG = 'config'
+CONFIG_NAME = "ConfigName"
 
 MONKEYED_POLICY_ID = 'monkeyed.Config_peach'
 MONKEYED_POLICY_ID_2 = 'monkeyed.Config_peach_2'
@@ -90,7 +91,7 @@
 
         matching_conditions = {
             "ONAPName": "DCAE",
-            "ConfigName": "alex_config_name"
+            CONFIG_NAME: "alex_config_name"
         }
         if priority is not None:
             matching_conditions["priority"] = priority
@@ -183,12 +184,6 @@
 
 @CtxLogger.log_ctx(pre_log=True, after_log=True, exe_task='exe_task')
 @Policies.gather_policies_to_node()
-def node_configure_default_order(**kwargs):
-    """default policy sorting because no param of policy_apply_order_path"""
-    operation_node_configure(**kwargs)
-
-@CtxLogger.log_ctx(pre_log=True, after_log=True, exe_task='exe_task')
-@Policies.gather_policies_to_node()
 def node_configure(**kwargs):
     """decorate with @Policies.gather_policies_to_node on policy consumer node to
     bring all policies to runtime_properties["policies"]
@@ -333,7 +328,12 @@
                 'dcae_policies_node_id',
                 'dcae_policies_node_name',
                 dcae_policy.DCAE_POLICIES_TYPE,
-                {dcae_policy.POLICY_FILTER: {POLICY_NAME: MONKEYED_POLICY_ID_M + ".*"}},
+                {dcae_policy.POLICY_FILTER: {
+                    POLICY_NAME: MONKEYED_POLICY_ID_M + ".*",
+                    dcae_policy.CONFIG_ATTRIBUTES: json.dumps({
+                        CONFIG_NAME: "alex_config_name"
+                    })
+                }},
                 None,
                 {dcae_policy.POLICIES_FILTERED: {
                     MONKEYED_POLICY_ID_M:
@@ -471,31 +471,7 @@
 @cfy_ctx(include_bad=True)
 def test_gather_policies_to_node():
     """test gather_policies_to_node"""
-    node_configure_default_order()
-
-    runtime_properties = ctx.instance.runtime_properties
-    ctx.logger.info("runtime_properties: {0}".format(json.dumps(runtime_properties)))
-
-    assert dcae_policy.POLICIES in runtime_properties
-    policies = runtime_properties[dcae_policy.POLICIES]
-    ctx.logger.info("policies: {0}".format(json.dumps(policies)))
-
-@cfy_ctx(include_bad=True)
-def test_policies_wrong_order():
-    """test gather_policies_to_node"""
-    node_configure_wrong_order_path()
-
-    runtime_properties = ctx.instance.runtime_properties
-    ctx.logger.info("runtime_properties: {0}".format(json.dumps(runtime_properties)))
-
-    assert dcae_policy.POLICIES in runtime_properties
-    policies = runtime_properties[dcae_policy.POLICIES]
-    ctx.logger.info("policies: {0}".format(json.dumps(policies)))
-
-@cfy_ctx(include_bad=True)
-def test_policies_empty_order():
-    """test gather_policies_to_node"""
-    node_configure_empty_order_path()
+    node_configure()
 
     runtime_properties = ctx.instance.runtime_properties
     ctx.logger.info("runtime_properties: {0}".format(json.dumps(runtime_properties)))
