diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..dd2946a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,64 @@
+*.py[cod]
+
+# C extensions
+*.so
+
+# Packages
+*.egg*
+*.egg-info
+dist
+build
+eggs
+parts
+bin
+var
+sdist
+develop-eggs
+.installed.cfg
+lib
+lib64
+
+# Installer logs
+pip-log.txt
+
+# Unit test / coverage reports
+cover/
+.coverage*
+!.coveragerc
+.tox
+nosetests.xml
+.testrepository
+.venv
+
+# Translations
+*.mo
+
+# Mr Developer
+.mr.developer.cfg
+.project
+.pydevproject
+
+# Complexity
+output/*.html
+output/*/index.html
+
+# Sphinx
+doc/build
+doc/source/_static/patrole.conf.sample
+
+# pbr generates these
+AUTHORS
+ChangeLog
+
+# Editors
+*~
+.*.swp
+.*sw?
+*.idea
+
+# Files created by releasenotes build
+releasenotes/build
+
+# Misc
+.stestr
+
diff --git a/requirements.txt b/requirements.txt
index 84d7047..f45ae7a 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,6 +2,4 @@
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
 
-Patrole>=0.2.0
-pylint
-
+Patrole
diff --git a/test-requirements.txt b/test-requirements.txt
index 2757893..0f4012e 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -1,8 +1,5 @@
 # The order of packages is significant, because pip processes them in the order
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
-hacking>=0.12.0,<0.13 # Apache-2.0
-
-sphinx>=1.6.2 # BSD
-openstackdocstheme>=1.17.0 # Apache-2.0
-
+hacking>=1.1.0,<1.2.0 # Apache-2.0
+pylint
diff --git a/tox.ini b/tox.ini
index 17529a8..1bf13ec 100644
--- a/tox.ini
+++ b/tox.ini
@@ -18,12 +18,14 @@
        -r{toxinidir}/test-requirements.txt
 commands =
     find . -type f -name "*.pyc" -delete
-    stestr --test-path ./tungsten_tempest_plugin/tests/unit run {posargs}
 
 [testenv:pep8]
 basepython = python3
-commands = flake8 {posargs}
-           check-uuid --package tungsten_tempest_plugin.tests.api
+deps =
+    -r{toxinidir}/test-requirements.txt
+commands =
+    flake8
+    check-uuid --package tungsten_tempest_plugin.tests.api
 
 [testenv:uuidgen]
 basepython = python3
@@ -86,14 +88,14 @@
 # [H205] Use assert(Greater|Less)(Equal) for comparison.
 # [H210] Require 'autospec', 'spec', or 'spec_set' in mock.patch/mock.patch.object calls
 # [H904] Delay string interpolations at logging calls.
-enable-extensions = H106,H203,H204,H205,H210,H904
+enable-extensions = H106,H203,H204,H205,H210,H904,H306
 show-source = True
 # E123, E125 skipped as they are invalid PEP-8.
 #
 # H405 is another one that is good as a guideline, but sometimes
 # multiline doc strings just don't have a natural summary
 # line. Rejecting code for this reason is wrong.
-ignore = E123,E125,H405
+ignore = E123,E125,H405,H404,E303,E124,H306
 builtins = _
 exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build
 
diff --git a/tungsten_tempest_plugin/hacking/__init__.py b/tungsten_tempest_plugin/hacking/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tungsten_tempest_plugin/hacking/__init__.py
diff --git a/tungsten_tempest_plugin/hacking/checks.py b/tungsten_tempest_plugin/hacking/checks.py
new file mode 100644
index 0000000..51d3cfb
--- /dev/null
+++ b/tungsten_tempest_plugin/hacking/checks.py
@@ -0,0 +1,224 @@
+# Copyright 2013 IBM Corp.
+# Copyright 2017 AT&T Corporation.
+# 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.
+
+import os
+import re
+
+import pycodestyle
+
+
+PYTHON_CLIENTS = ['contrail']
+
+PYTHON_CLIENT_RE = re.compile('import (%s)client' % '|'.join(PYTHON_CLIENTS))
+TEST_DEFINITION = re.compile(r'^\s*def test.*')
+SETUP_TEARDOWN_CLASS_DEFINITION = re.compile(r'^\s+def (setUp|tearDown)Class')
+SCENARIO_DECORATOR = re.compile(r'\s*@.*services\((.*)\)')
+VI_HEADER_RE = re.compile(r"^#\s+vim?:.+")
+RAND_NAME_HYPHEN_RE = re.compile(r".*rand_name\(.+[\-\_][\"\']\)")
+MUTABLE_DEFAULT_ARGS = re.compile(r"^\s*def .+\((.+=\{\}|.+=\[\])")
+TESTTOOLS_SKIP_DECORATOR = re.compile(r'\s*@testtools\.skip\((.*)\)')
+CLASS = re.compile(r"^class .+")
+RBAC_CLASS_NAME_RE = re.compile(r'class .+RbacTest')
+RULE_VALIDATION_DECORATOR = re.compile(
+    r'\s*@rbac_rule_validation.action\(.*')
+IDEMPOTENT_ID_DECORATOR = re.compile(r'\s*@decorators\.idempotent_id\((.*)\)')
+
+have_rbac_decorator = False
+
+
+def import_no_clients_in_api_tests(physical_line, filename):
+    """Check for client imports from tungsten_tempest_plugin/tests/api
+
+    T102: Cannot import python clients
+    """
+    if "tugnsten_tempest_plugin/tests/api" in filename:
+        res = PYTHON_CLIENT_RE.match(physical_line)
+        if res:
+            return (physical_line.find(res.group(1)),
+                    ("T102: python clients import not allowed "
+                     "in tungsten_tempest_plugin/tests/api/* or "
+                     "tugnsten_tempest_plugin/tests/scenario/* tests"))
+
+
+def no_setup_teardown_class_for_tests(physical_line, filename):
+    """Check that tests do not use setUpClass/tearDownClass
+
+    T105: Tests cannot use setUpClass/tearDownClass
+    """
+    if pycodestyle.noqa(physical_line):
+        return
+
+    if SETUP_TEARDOWN_CLASS_DEFINITION.match(physical_line):
+        return (physical_line.find('def'),
+                "T105: (setUp|tearDown)Class can not be used in tests")
+
+
+def no_vi_headers(physical_line, line_number, lines):
+    """Check for vi editor configuration in source files.
+
+    By default vi modelines can only appear in the first or
+    last 5 lines of a source file.
+
+    T106
+    """
+    # NOTE(gilliard): line_number is 1-indexed
+    if line_number <= 5 or line_number > len(lines) - 5:
+        if VI_HEADER_RE.match(physical_line):
+            return 0, "T106: Don't put vi configuration in source files"
+
+
+def service_tags_not_in_module_path(physical_line, filename):
+    """Check that a service tag isn't in the module path
+
+    A service tag should only be added if the service name isn't already in
+    the module path.
+
+    T107
+    """
+    matches = SCENARIO_DECORATOR.match(physical_line)
+    if matches:
+        services = matches.group(1).split(',')
+        for service in services:
+            service_name = service.strip().strip("'")
+            modulepath = os.path.split(filename)[0]
+            if service_name in modulepath:
+                return (physical_line.find(service_name),
+                        "T107: service tag should not be in path")
+
+
+def no_hyphen_at_end_of_rand_name(logical_line, filename):
+    """Check no hyphen at the end of rand_name() argument
+
+    T108
+    """
+    msg = "T108: hyphen should not be specified at the end of rand_name()"
+    if RAND_NAME_HYPHEN_RE.match(logical_line):
+        return 0, msg
+
+
+def no_mutable_default_args(logical_line):
+    """Check that mutable object isn't used as default argument
+
+    N322: Method's default argument shouldn't be mutable
+    """
+    msg = "N322: Method's default argument shouldn't be mutable!"
+    if MUTABLE_DEFAULT_ARGS.match(logical_line):
+        yield (0, msg)
+
+
+def no_testtools_skip_decorator(logical_line):
+    """Check that methods do not have the testtools.skip decorator
+
+    T109
+    """
+    if TESTTOOLS_SKIP_DECORATOR.match(logical_line):
+        yield (0, "T109: Cannot use testtools.skip decorator; instead use "
+               "decorators.skip_because from tempest.lib")
+
+
+def use_rand_uuid_instead_of_uuid4(logical_line, filename):
+    """Check that tests use data_utils.rand_uuid() instead of uuid.uuid4()
+
+    T113
+    """
+    if 'uuid.uuid4()' not in logical_line:
+        return
+
+    msg = ("T113: Tests should use data_utils.rand_uuid()/rand_uuid_hex() "
+           "instead of uuid.uuid4()/uuid.uuid4().hex")
+    yield (0, msg)
+
+
+def no_rbac_rule_validation_decorator(physical_line, filename):
+    """Check that each test has the ``rbac_rule_validation.action`` decorator.
+
+    Checks whether the test function has "@rbac_rule_validation.action"
+    above it; otherwise checks that it has "@decorators.idempotent_id" above
+    it and "@rbac_rule_validation.action" above that.
+
+    Assumes that ``rbac_rule_validation.action`` decorator is either the first
+    or second decorator above the test function; otherwise this check fails.
+
+    P100
+    """
+    global have_rbac_decorator
+
+    if ("tungsten_tempest_plugin/tests/api" in filename or
+            "tungsten_tempest_plugin/tests/scenario" in filename):
+
+        if RULE_VALIDATION_DECORATOR.match(physical_line):
+            have_rbac_decorator = True
+            return
+
+        if TEST_DEFINITION.match(physical_line):
+            if not have_rbac_decorator:
+                return (0, "Must use rbac_rule_validation.action "
+                           "decorator for API and scenario tests")
+
+            have_rbac_decorator = False
+
+
+def no_rbac_suffix_in_test_filename(filename):
+    """Check that RBAC filenames end with "_rbac" suffix.
+
+    P101
+    """
+    if "tungsten_tempest_plugin/tests/api" in filename:
+
+        if filename.endswith('rbac_base.py'):
+            return
+
+        if not filename.endswith('_rbac.py'):
+            return 0, "RBAC test filenames must end in _rbac suffix"
+
+
+def no_rbac_test_suffix_in_test_class_name(physical_line, filename):
+    """Check that RBAC class names end with "RbacTest"
+
+    P102
+    """
+    if "tunsgten_tempest_plugin/tests/api" in filename:
+
+        if filename.endswith('rbac_base.py'):
+            return
+
+        if CLASS.match(physical_line):
+            if not RBAC_CLASS_NAME_RE.match(physical_line):
+                return 0, "RBAC test class names must end in 'RbacTest'"
+
+
+def no_client_alias_in_test_cases(logical_line, filename):
+    """Check that test cases don't use "self.client" to define a client.
+
+    P103
+    """
+    if "tungsten_tempest_plugin/tests/api" in filename:
+        if "self.client" in logical_line or "cls.client" in logical_line:
+            return 0, "Do not use 'self.client' as a service client alias"
+
+
+def factory(register):
+    register(import_no_clients_in_api_tests)
+    register(no_setup_teardown_class_for_tests)
+    register(no_vi_headers)
+    register(no_hyphen_at_end_of_rand_name)
+    register(no_mutable_default_args)
+    register(no_testtools_skip_decorator)
+    register(use_rand_uuid_instead_of_uuid4)
+    register(service_tags_not_in_module_path)
+    register(no_rbac_rule_validation_decorator)
+    register(no_rbac_suffix_in_test_filename)
+    register(no_rbac_test_suffix_in_test_class_name)
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_access_control.py b/tungsten_tempest_plugin/tests/api/contrail/test_access_control.py
index 4425cea..935a773 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_access_control.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_access_control.py
@@ -22,6 +22,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -77,8 +78,9 @@
                         new_ctrl_list['uuid'])
         return new_ctrl_list
 
+    @decorators.idempotent_id('3fe225d4-0b50-476b-a809-caf3e485ddda')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_api_access_lists")
+                                 rules="list_api_access_lists")
     @idempotent_id('2bfde8fd-36fe-4e69-ba59-6f2db8941e7d')
     def test_list_api_access_lists(self):
         """
@@ -87,8 +89,9 @@
         with self.rbac_utils.override_role(self):
             self.access_control_client.list_api_access_lists()
 
+    @decorators.idempotent_id('e114fcdc-019e-4d94-8d25-30191fba4348')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_api_access_lists")
+                                 rules="create_api_access_lists")
     @idempotent_id('b2b5f50c-07d8-4d79-b9a4-78187ad97353')
     def test_create_api_access_lists(self):
         """
@@ -97,8 +100,9 @@
         with self.rbac_utils.override_role(self):
             self._create_api_access_lists()
 
+    @decorators.idempotent_id('4589f75d-b4fc-4ed5-a1ce-efe41a8ad879')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_api_access_list")
+                                 rules="show_api_access_list")
     @idempotent_id('b82e8e6b-83b5-424d-9652-ef6a34067f4f')
     def test_show_api_access_list(self):
         """
@@ -109,8 +113,9 @@
             self.access_control_client.show_api_access_list(
                 new_api_list['uuid'])
 
+    @decorators.idempotent_id('54f8ceb5-183e-40c8-ba38-6c7c9298cf2f')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_api_access_list")
+                                 rules="update_api_access_list")
     @idempotent_id('edc88825-1e2e-47ff-b7b4-f68d6310fbad')
     def test_update_api_access_list(self):
         """
@@ -123,8 +128,9 @@
                 new_api_list['uuid'],
                 display_name=update_name)
 
+    @decorators.idempotent_id('1e715cbb-1250-4b4e-97c5-b4f0f5c61d60')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_api_access_list")
+                                 rules="delete_api_access_list")
     @idempotent_id('f27d9044-95f2-4733-81ed-df9340dbd421')
     def test_delete_api_access_list(self):
         """
@@ -135,8 +141,9 @@
             self.access_control_client.delete_api_access_list(
                 new_api_list['uuid'])
 
+    @decorators.idempotent_id('e87c5239-f62a-4791-a550-ba0c7cf354f9')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_access_control_lists")
+                                 rules="list_access_control_lists")
     @idempotent_id('c56a1338-a9d1-4286-8aeb-3a0d60d93037')
     def test_list_access_control_lists(self):
         """
@@ -145,8 +152,9 @@
         with self.rbac_utils.override_role(self):
             self.access_control_client.list_access_control_lists()
 
+    @decorators.idempotent_id('c33b8b75-f03c-44e5-9986-052819134771')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_access_control_lists")
+                                 rules="create_access_control_lists")
     @idempotent_id('9f225d2b-5376-42f5-97aa-cf63be47fa19')
     def test_create_access_control(self):
         """
@@ -157,8 +165,9 @@
         with self.rbac_utils.override_role(self):
             self._create_access_control_lists(sec_group['name'])
 
+    @decorators.idempotent_id('ab268b09-629c-4eec-b138-887be03c65b4')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_access_control_list")
+                                 rules="show_access_control_list")
     @idempotent_id('f0ed882b-f3de-48b7-884a-637ee0b7d6b6')
     def test_show_access_control_list(self):
         """
@@ -172,8 +181,9 @@
             self.access_control_client.show_access_control_list(
                 new_ctrl_list['uuid'])
 
+    @decorators.idempotent_id('2811c098-198d-4a73-a635-816f4957057f')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_access_control_list")
+                                 rules="update_access_control_list")
     @idempotent_id('9a4b3133-dd07-4a1a-b282-f7770c372fb8')
     def test_update_access_control_list(self):
         """
@@ -188,8 +198,9 @@
                 new_ctrl_list['uuid'],
                 display_name=update_name)
 
+    @decorators.idempotent_id('bb6a5a21-d8d1-489f-8002-e9eb07dfe873')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_access_control_list")
+                                 rules="delete_access_control_list")
     @idempotent_id('36a8ace1-71ca-4c7c-8667-d8387d6f964a')
     def test_delete_access_control_list(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_alarm.py b/tungsten_tempest_plugin/tests/api/contrail/test_alarm.py
index 3996b9f..79e4f63 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_alarm.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_alarm.py
@@ -25,6 +25,7 @@
 
 from tempest import config
 
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -88,8 +89,9 @@
         }
         self.alarm_client.update_alarm(alarm_uuid, **put_body)
 
+    @decorators.idempotent_id('fdfc89f9-e919-4a81-966e-0aadaff4ce1c')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_alarms")
+                                 rules="list_alarms")
     @idempotent_id('dc7d19dd-dd5e-4ec8-bf0c-c6d9d83a60a8')
     def test_list_alarms(self):
         """
@@ -98,8 +100,9 @@
         with self.rbac_utils.override_role(self):
             self.alarm_client.list_alarms()
 
+    @decorators.idempotent_id('0e844c89-c7a3-4667-b996-e176d5ea460e')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_alarms")
+                                 rules="create_alarms")
     @idempotent_id('7fe55d0c-e54a-4bb7-95a6-9c53f9e9c4bf')
     def test_create_alarms(self):
         """
@@ -110,8 +113,9 @@
         with self.rbac_utils.override_role(self):
             self._create_alarm(global_system_config)
 
+    @decorators.idempotent_id('e787e656-44ad-4aa6-8644-4ab9a2f40b83')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_alarm")
+                                 rules="show_alarm")
     @idempotent_id('ab0ccbe4-7bfe-4176-890a-d438ee04290d')
     def test_show_alarm(self):
         """
@@ -123,8 +127,9 @@
         with self.rbac_utils.override_role(self):
             self.alarm_client.show_alarm(alarm_uuid)
 
+    @decorators.idempotent_id('c3160759-4a68-4272-90e7-a69aa0e711f6')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_alarm")
+                                 rules="update_alarm")
     @idempotent_id('ab331cca-ee53-4106-9b30-7319bfb1bea7')
     def test_update_alarm(self):
         """
@@ -136,8 +141,9 @@
         with self.rbac_utils.override_role(self):
             self._update_alarm(alarm_uuid)
 
+    @decorators.idempotent_id('11f2d137-4ad3-4c99-b0f9-9bde637722a2')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_alarm")
+                                 rules="delete_alarm")
     @idempotent_id('84fadb14-77c0-4f21-b5b2-1da7a2fd27e6')
     def test_delete_alarm(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_alias_ip.py b/tungsten_tempest_plugin/tests/api/contrail/test_alias_ip.py
index 6db7ad9..3847402 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_alias_ip.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_alias_ip.py
@@ -22,6 +22,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -114,8 +115,9 @@
                         new_alias_ip['uuid'])
         return new_alias_ip
 
+    @decorators.idempotent_id('ad82cd15-1d18-4ee9-9f4e-8653b27ff68d')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_alias_ips")
+                                 rules="list_alias_ips")
     @idempotent_id('899d6824-0755-41ef-adef-03eb1858bcb0')
     def test_list_alias_ips(self):
         """
@@ -124,8 +126,9 @@
         with self.rbac_utils.override_role(self):
             self.alias_ip_client.list_alias_ips()
 
+    @decorators.idempotent_id('aae9af3b-ebb8-426e-afde-59a655352dfa')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_alias_ips")
+                                 rules="create_alias_ips")
     @idempotent_id('bc9aae29-22a8-4eed-a31f-c0ded300e3a3')
     def test_create_alias_ips(self):
         """
@@ -135,8 +138,9 @@
         with self.rbac_utils.override_role(self):
             self._create_alias_ips(new_alias_ip_pool, '2.2.3.1')
 
+    @decorators.idempotent_id('0d7785ab-63d6-4695-b2e1-d43706f166ed')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_alias_ip")
+                                 rules="show_alias_ip")
     @idempotent_id('d20318b1-c204-44e7-a44c-66f6a1fbe7a0')
     def test_show_alias_ip(self):
         """
@@ -148,8 +152,9 @@
             self.alias_ip_client.show_alias_ip(
                 new_alias_ip['uuid'])
 
+    @decorators.idempotent_id('12577013-4194-439b-b598-f83aedbc4f0f')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_alias_ip")
+                                 rules="update_alias_ip")
     @idempotent_id('c237b18f-d899-4b80-8e9b-068244a24612')
     def test_update_alias_ip(self):
         """
@@ -163,8 +168,9 @@
                 new_alias_ip['uuid'],
                 display_name=update_name)
 
+    @decorators.idempotent_id('31ed2a1b-48e1-44d0-bf21-304d7fb4a0ac')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_alias_ip")
+                                 rules="delete_alias_ip")
     @idempotent_id('456c641c-9066-4125-8dec-d1529ad8f1ba')
     def test_delete_alias_ip(self):
         """
@@ -176,8 +182,9 @@
             self.alias_ip_client.delete_alias_ip(
                 new_alias_ip['uuid'])
 
+    @decorators.idempotent_id('a46c088a-9b3b-4a88-9df6-d0cc41d32bf4')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_alias_ip_pools")
+                                 rules="list_alias_ip_pools")
     @idempotent_id('ffe85f35-589a-4b90-a1d3-6aed92a85954')
     def test_list_alias_ip_pools(self):
         """
@@ -186,8 +193,9 @@
         with self.rbac_utils.override_role(self):
             self.alias_ip_client.list_alias_ip_pools()
 
+    @decorators.idempotent_id('5ac92620-24af-4948-bc9f-5c43f0e65e9d')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_alias_ip_pools")
+                                 rules="create_alias_ip_pools")
     @idempotent_id('83abd2c0-d46a-4337-87d0-31cdb86e4226')
     def test_create_alias_ip_pools(self):
         """
@@ -196,8 +204,9 @@
         with self.rbac_utils.override_role(self):
             self._create_alias_ip_pools()
 
+    @decorators.idempotent_id('1e8f4d95-bf80-4383-bce7-e9460214264a')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_alias_ip_pool")
+                                 rules="show_alias_ip_pool")
     @idempotent_id('a1cbe111-ccba-4fa4-ba59-7d1ee08a15db')
     def test_show_alias_ip_pool(self):
         """
@@ -208,8 +217,9 @@
             self.alias_ip_client.show_alias_ip_pool(
                 new_alias_ip_pool['uuid'])
 
+    @decorators.idempotent_id('ece84364-c139-42f1-b2ab-8adad9fe11a4')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_alias_ip_pool")
+                                 rules="update_alias_ip_pool")
     @idempotent_id('7f3448d7-22f1-4808-b3eb-15eeb3f079aa')
     def test_update_alias_ip_pool(self):
         """
@@ -222,8 +232,9 @@
                 new_alias_ip_pool['uuid'],
                 display_name=update_name)
 
+    @decorators.idempotent_id('aabbbff0-e8f8-4dc9-9e77-5c3cc390cc14')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_alias_ip_pool")
+                                 rules="delete_alias_ip_pool")
     @idempotent_id('f59ea4fb-d10f-40c8-a8fa-dcd948ca89c8')
     def test_delete_alias_ip_pool(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_analytics_node.py b/tungsten_tempest_plugin/tests/api/contrail/test_analytics_node.py
index 96090ff..2824ca2 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_analytics_node.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_analytics_node.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -65,8 +66,9 @@
                         new_node['uuid'])
         return new_node
 
+    @decorators.idempotent_id('6dbda64e-f575-4bb8-8600-b8a510e4ae96')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_analytics_nodes")
+                                 rules="list_analytics_nodes")
     @idempotent_id('d3002e37-4b42-446d-b144-1b53f0dadfd3')
     def test_list_analytics_nodes(self):
         """
@@ -75,8 +77,9 @@
         with self.rbac_utils.override_role(self):
             self.analytics_node_client.list_analytics_nodes()
 
+    @decorators.idempotent_id('0852bb86-6a95-476d-a964-79e73b08b839')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_analytics_node")
+                                 rules="show_analytics_node")
     @idempotent_id('b51043fd-77ba-4312-b96f-569ed5153338')
     def test_show_analytics_node(self):
         """
@@ -88,8 +91,9 @@
         with self.rbac_utils.override_role(self):
             self.analytics_node_client.show_analytics_node(new_node['uuid'])
 
+    @decorators.idempotent_id('a1a09763-b56b-4caf-b9d5-6d95d416dfc4')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_analytics_nodes")
+                                 rules="create_analytics_nodes")
     @idempotent_id('c57482c9-fcb4-4f41-95b0-7f0ffeee3dc3')
     def test_create_analytics_nodes(self):
         """
@@ -100,8 +104,9 @@
         with self.rbac_utils.override_role(self):
             self._create_analytics_node(global_system_config)
 
+    @decorators.idempotent_id('67437d99-c5b1-4d42-8a91-251c4055d4c1')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_analytics_node")
+                                 rules="update_analytics_node")
     @idempotent_id('ff50a2df-6283-409e-ab03-c13b63acc8a0')
     def test_update_analytics_node(self):
         """
@@ -115,8 +120,9 @@
             self.analytics_node_client.update_analytics_node(
                 new_node['uuid'], display_name=update_name)
 
+    @decorators.idempotent_id('7d62d6cc-dcd9-49e0-85e6-6115e8228ac0')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_analytics_node")
+                                 rules="delete_analytics_node")
     @idempotent_id('972f997a-c89f-4227-8ae9-5a2335ec0b0a')
     def test_delete_analytics_node(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_attachments_client.py b/tungsten_tempest_plugin/tests/api/contrail/test_attachments_client.py
index ef10c00..d9a924a 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_attachments_client.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_attachments_client.py
@@ -23,6 +23,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -61,8 +62,9 @@
                         new_customer['uuid'])
         return new_customer
 
+    @decorators.idempotent_id('67cdef12-9f9d-43ab-a9c1-332295e09036')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_provider_attachments")
+                                 rules="list_provider_attachments")
     @idempotent_id('961dbf54-ae4f-42e8-9d27-69fa7df39013')
     def test_list_provider_attachments(self):
         """
@@ -71,8 +73,9 @@
         with self.rbac_utils.override_role(self):
             self.attachments_client.list_provider_attachments()
 
+    @decorators.idempotent_id('821222e5-eea5-4980-8495-30ba3c7bdcf8')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_provider_attachments")
+                                 rules="create_provider_attachments")
     @idempotent_id('73ad032e-3e81-4dcc-be55-1987484207cd')
     def test_create_providerattach(self):
         """
@@ -81,8 +84,9 @@
         with self.rbac_utils.override_role(self):
             self._create_provider_attachments()
 
+    @decorators.idempotent_id('e47d427d-c77a-49e5-9cb2-c0cc7b616d6a')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_provider_attachment")
+                                 rules="show_provider_attachment")
     @idempotent_id('7b5278bc-dd79-495a-9f74-448c04f52bd2')
     def test_show_provider_attachment(self):
         """
@@ -93,8 +97,9 @@
             self.attachments_client.show_provider_attachment(
                 new_provider['uuid'])
 
+    @decorators.idempotent_id('d2d4aad4-08f8-4781-aec9-ede9aea6312a')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_provider_attachment")
+                                 rules="update_provider_attachment")
     @idempotent_id('3516ff99-eddf-4932-afa4-433a43a0e5ac')
     def test_update_provider_attachment(self):
         """
@@ -107,8 +112,9 @@
                 new_provider['uuid'],
                 display_name=update_name)
 
+    @decorators.idempotent_id('65b5f6ca-9eaa-451d-b20a-a0f7fbbd1622')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_provider_attachment")
+                                 rules="delete_provider_attachment")
     @idempotent_id('234d5505-2abf-418b-b43b-ea6f5a724fd3')
     def test_delete_provider_attachment(self):
         """
@@ -119,8 +125,9 @@
             self.attachments_client.delete_provider_attachment(
                 new_provider['uuid'])
 
+    @decorators.idempotent_id('26f459c0-942c-4152-b0eb-16cfec2ee764')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_customer_attachments")
+                                 rules="list_customer_attachments")
     @idempotent_id('3eca8fd8-ec3c-4a0e-8f62-b15d28796b7f')
     def test_list_customer_attachments(self):
         """
@@ -129,8 +136,9 @@
         with self.rbac_utils.override_role(self):
             self.attachments_client.list_customer_attachments()
 
+    @decorators.idempotent_id('67faa58a-fc42-4ba8-b67e-39213f9a372f')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_customer_attachments")
+                                 rules="create_customer_attachments")
     @idempotent_id('53f93053-554c-4202-b763-0230d9a0553a')
     def test_create_customerattachments(self):
         """
@@ -139,8 +147,9 @@
         with self.rbac_utils.override_role(self):
             self._create_customer_attachments()
 
+    @decorators.idempotent_id('b8badd01-5197-4b3e-93ed-b68c19eb890e')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_customer_attachment")
+                                 rules="show_customer_attachment")
     @idempotent_id('c6671540-695c-4cba-bcee-4a5d1cddd412')
     def test_show_customer_attachment(self):
         """
@@ -151,8 +160,9 @@
             self.attachments_client.show_customer_attachment(
                 new_customer['uuid'])
 
+    @decorators.idempotent_id('6d6aeb09-9589-4ec4-811e-66cf1920bde5')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_customer_attachment")
+                                 rules="update_customer_attachment")
     @idempotent_id('50419cca-dd03-4d02-9c06-88446647fcba')
     def test_update_customer_attachment(self):
         """
@@ -165,8 +175,9 @@
                 new_customer['uuid'],
                 display_name=update_name)
 
+    @decorators.idempotent_id('5126eff2-e9e8-424f-b842-f923c704e069')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_customer_attachment")
+                                 rules="delete_customer_attachment")
     @idempotent_id('5385c275-8e86-4739-9cb6-d1e0ed522807')
     def test_delete_customer_attachment(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_bgp_as_a_service.py b/tungsten_tempest_plugin/tests/api/contrail/test_bgp_as_a_service.py
index 723dce8..87bcc40 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_bgp_as_a_service.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_bgp_as_a_service.py
@@ -22,6 +22,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -45,8 +46,9 @@
                         new_bgp['uuid'])
         return new_bgp
 
+    @decorators.idempotent_id('3bb7313a-c925-4254-9716-5e37d8afa074')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_bgp_as_a_services")
+                                 rules="list_bgp_as_a_services")
     @idempotent_id('d3153cd0-379e-4e62-9780-ef237e567fc5')
     def test_list_bgp_as_a_services(self):
         """
@@ -55,8 +57,9 @@
         with self.rbac_utils.override_role(self):
             self.bgp_as_a_service_client.list_bgp_as_a_services()
 
+    @decorators.idempotent_id('1bcd51bd-1558-49ce-ba71-acb5df1e593a')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_bgp_as_a_services")
+                                 rules="create_bgp_as_a_services")
     @idempotent_id('a039f0c4-b53a-492b-a5c5-fbdf046afcf4')
     def test_create_bgp_as_a_services(self):
         """
@@ -65,8 +68,9 @@
         with self.rbac_utils.override_role(self):
             self._create_bgp_as_a_services()
 
+    @decorators.idempotent_id('36cc0159-7754-4cdf-b996-6c48bbb3c89c')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_bgp_as_a_service")
+                                 rules="show_bgp_as_a_service")
     @idempotent_id('c2fae8b4-929c-4d2f-914d-76a7414a56dc')
     def test_show_bgp_as_a_service(self):
         """
@@ -77,8 +81,9 @@
             self.bgp_as_a_service_client.show_bgp_as_a_service(
                 new_bgp['uuid'])
 
+    @decorators.idempotent_id('9d7d365b-4036-472b-8e46-6de4c0fac770')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_bgp_as_a_service")
+                                 rules="delete_bgp_as_a_service")
     @idempotent_id('78c8389a-7bb5-4027-bae1-923af3d6e77c')
     def test_delete_bgp_as_a_service(self):
         """
@@ -89,8 +94,9 @@
             self.bgp_as_a_service_client.delete_bgp_as_a_service(
                 new_bgp['uuid'])
 
+    @decorators.idempotent_id('5df56265-22be-4303-a5ce-246fc20a969f')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_bgp_as_a_service")
+                                 rules="update_bgp_as_a_service")
     @idempotent_id('38ba2ecb-71e2-4a2f-be43-e82491dffa05')
     def test_update_bgp_as_a_service(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_config_client.py b/tungsten_tempest_plugin/tests/api/contrail/test_config_client.py
index ea39ef2..ee9f0b7 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_config_client.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_config_client.py
@@ -26,6 +26,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -59,8 +60,9 @@
                             config_node_id)
         return config_node
 
+    @decorators.idempotent_id('fc18b48d-33f0-4262-b9e6-25be8ed0a1c8')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_config_nodes")
+                                 rules="list_config_nodes")
     @idempotent_id('b560e060-e4f0-45b0-93e2-55f0cb201e06')
     def test_list_config_nodes(self):
         """
@@ -69,8 +71,9 @@
         with self.rbac_utils.override_role(self):
             self.config_client.list_config_nodes()
 
+    @decorators.idempotent_id('b1cf9b76-2014-4e1c-a4de-3279935f1804')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_config_nodes")
+                                 rules="create_config_nodes")
     @idempotent_id('a8d20d0d-dc5a-4cae-87c5-7f6914c3701e')
     def test_create_config_nodes(self):
         """
@@ -79,8 +82,9 @@
         with self.rbac_utils.override_role(self):
             self._create_config_node()
 
+    @decorators.idempotent_id('5cb27969-7cd3-4797-8379-f92e83c589b7')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_config_node")
+                                 rules="delete_config_node")
     @idempotent_id('16573a85-57ab-418c-bb23-5dd936e7be90')
     def test_delete_config_node(self):
         """
@@ -92,8 +96,9 @@
             self.config_client.delete_config_node(
                 config_node_uuid)
 
+    @decorators.idempotent_id('1b21427f-4869-44a3-b617-0a272ca1268b')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_config_node")
+                                 rules="show_config_node")
     @idempotent_id('a5b17108-4fa3-4d09-b861-e2857aab8f80')
     def test_show_config_node(self):
         """
@@ -104,8 +109,9 @@
         with self.rbac_utils.override_role(self):
             self.config_client.show_config_node(config_node_uuid)
 
+    @decorators.idempotent_id('e3fce15b-4a56-4bff-b4c9-484e375cf9b0')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_config_node")
+                                 rules="update_config_node")
     @idempotent_id('8f70d2c0-594b-4a94-ab15-88bd8a2e62e5')
     def test_update_config_node(self):
         """
@@ -137,8 +143,9 @@
                             config_root_uuid)
         return config_root
 
+    @decorators.idempotent_id('f4f12780-0f1e-4609-ac9a-f8f165f4c6ce')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_config_roots")
+                                 rules="create_config_roots")
     @idempotent_id('291b28ea-d0d8-47cd-ac76-1f980047cb76')
     def test_create_config_roots(self):
         """
@@ -147,8 +154,9 @@
         with self.rbac_utils.override_role(self):
             self._create_config_root()
 
+    @decorators.idempotent_id('969dc640-7ae4-4ee2-adb0-d1be8a12591a')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_config_root")
+                                 rules="delete_config_root")
     @idempotent_id('bd04c0fb-3deb-4904-ad2c-1a10933c30dd')
     def test_delete_config_root(self):
         """
@@ -160,8 +168,9 @@
             self.config_client.delete_config_root(
                 config_root_uuid)
 
+    @decorators.idempotent_id('457d314c-5a79-428f-bea9-c280cfa56d4a')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_config_root")
+                                 rules="show_config_root")
     @idempotent_id('fba2c419-9a83-4d88-9a26-84770544bb3f')
     def test_show_config_root(self):
         """
@@ -172,8 +181,9 @@
         with self.rbac_utils.override_role(self):
             self.config_client.show_config_root(config_root_uuid)
 
+    @decorators.idempotent_id('6b362490-4475-4530-bdde-e46364b99838')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_config_root")
+                                 rules="update_config_root")
     @idempotent_id('bfcc074f-5e1c-4b45-8a2a-857239f8acb0')
     def test_update_config_root(self):
         """
@@ -186,8 +196,9 @@
             self.config_client.update_config_root(
                 config_root_uuid, display_name=updated_name)
 
+    @decorators.idempotent_id('4234d8dd-5bbf-4d3d-8e2f-0c2a1a3f0e03')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_config_roots")
+                                 rules="list_config_roots")
     @idempotent_id('316e7425-8fb0-41b4-9080-a76697abbafa')
     def test_list_config_roots(self):
         """
@@ -218,8 +229,9 @@
                         new_config['uuid'])
         return new_config
 
+    @decorators.idempotent_id('774a814a-973e-44b6-8653-ceff86c90a45')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_global_system_configs")
+                                 rules="list_global_system_configs")
     @idempotent_id('d1d189a7-14c1-49c5-b180-cd42ed2ca123')
     def test_list_global_system_configs(self):
         """
@@ -228,8 +240,9 @@
         with self.rbac_utils.override_role(self):
             self.config_client.list_global_system_configs()
 
+    @decorators.idempotent_id('177b82c4-7884-4a27-a134-4b45fb3cf237')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_global_system_configs")
+                                 rules="create_global_system_configs")
     @idempotent_id('e0ba6a20-3e28-47ac-bf95-9a848fcee49a')
     def test_create_global_sys_configs(self):
         """
@@ -238,8 +251,9 @@
         with self.rbac_utils.override_role(self):
             self._create_global_system_config()
 
+    @decorators.idempotent_id('ff9637ca-e4e8-4381-a62e-b799716ec845')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_global_system_config")
+                                 rules="show_global_system_config")
     @idempotent_id('4b9f9131-cb34-4b7d-9d06-c6aca85cce3a')
     def test_show_global_system_config(self):
         """
@@ -250,8 +264,9 @@
             self.config_client.show_global_system_config(
                 new_config['uuid'])
 
+    @decorators.idempotent_id('cec2ca37-ff71-4311-a8aa-6459b46dba7c')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_global_system_config")
+                                 rules="update_global_system_config")
     @idempotent_id('4f90dc83-da59-45a4-8ab6-b387bd6c2df4')
     def test_update_global_sys_config(self):
         """
@@ -264,8 +279,9 @@
                 new_config['uuid'],
                 display_name=update_name)
 
+    @decorators.idempotent_id('3019ef0e-601c-4c7b-b709-a634a6ad0702')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_global_system_config")
+                                 rules="delete_global_system_config")
     @idempotent_id('fce1653c-e657-4a1e-8ced-7e02d297d6c9')
     def test_delete_global_sys_config(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_database.py b/tungsten_tempest_plugin/tests/api/contrail/test_database.py
index e9c6b93..e5469e5 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_database.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_database.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -71,8 +72,9 @@
                         db_node['uuid'])
         return db_node
 
+    @decorators.idempotent_id('fbf74117-4fdb-4b95-9469-a71b708afd47')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_database_nodes")
+                                 rules="list_database_nodes")
     @idempotent_id('5ae6f965-6161-443f-b19e-dfa7b364c533')
     def test_list_database_nodes(self):
         """
@@ -84,8 +86,9 @@
         with self.rbac_utils.override_role(self):
             self.db_client.list_database_nodes()
 
+    @decorators.idempotent_id('6749a9db-54ff-448d-a590-5050a4db7946')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_database_node")
+                                 rules="show_database_node")
     @idempotent_id('4a07d9a8-7b99-43bd-b628-06c023993aab')
     def test_show_database_node(self):
         """
@@ -98,8 +101,9 @@
         with self.rbac_utils.override_role(self):
             self.db_client.show_database_node(db_node_id)
 
+    @decorators.idempotent_id('672bb09f-e31b-4492-9858-a190d701949f')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_database_nodes")
+                                 rules="create_database_nodes")
     @idempotent_id('b9aa9c6b-9381-44f0-94fb-e4523bf2a87e')
     def test_create_database_nodes(self):
         """
@@ -110,8 +114,9 @@
         with self.rbac_utils.override_role(self):
             self._create_database_node(global_system_config)
 
+    @decorators.idempotent_id('f959251d-e925-4f98-a297-3bcde77fbf0d')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_database_node")
+                                 rules="update_database_node")
     @idempotent_id('6e59f393-0e55-4327-871e-7f0ad53f2e17')
     def test_update_database_node(self):
         """
@@ -127,8 +132,9 @@
                 db_node_id=db_node_id,
                 display_name=display_name)
 
+    @decorators.idempotent_id('d6981e37-3b04-4883-8411-12fc69d2aa98')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_database_node")
+                                 rules="delete_database_node")
     @idempotent_id('0cbc5a52-d7e7-4a1c-a85d-6bf44012d99b')
     def test_delete_database_node(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_discovery_service_assignment.py b/tungsten_tempest_plugin/tests/api/contrail/test_discovery_service_assignment.py
index cd1fc85..e578c1d 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_discovery_service_assignment.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_discovery_service_assignment.py
@@ -22,6 +22,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -44,8 +45,9 @@
                         new_dsa['uuid'])
         return new_dsa
 
+    @decorators.idempotent_id('2a97b185-3c1a-4fe8-b073-9f8f9018c540')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_discovery_service_assignments")
+                                 rules="list_discovery_service_assignments")
     @idempotent_id('9ac1e4ca-8983-403f-b644-7758935f2f36')
     def test_list_discovery_service(self):
         """
@@ -54,8 +56,9 @@
         with self.rbac_utils.override_role(self):
             self.dsa_client.list_ds_assignments()
 
+    @decorators.idempotent_id('f6c90c82-6731-4580-af3b-aaeb6f8cc2b7')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_discovery_service_assignments")
+                                 rules="create_discovery_service_assignments")
     @idempotent_id('40ad1208-a039-4809-8516-41b4dfcbd00c')
     def test_create_discovery_service(self):
         """
@@ -64,8 +67,9 @@
         with self.rbac_utils.override_role(self):
             self._create_discovery_service_assignments()
 
+    @decorators.idempotent_id('0612ad3e-40a6-41bd-a2be-64e5f4d134a7')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_discovery_service_assignment")
+                                 rules="show_discovery_service_assignment")
     @idempotent_id('63660fe9-22b8-456c-a757-a7da1abfbce8')
     def test_show_discovery_service(self):
         """
@@ -75,8 +79,9 @@
         with self.rbac_utils.override_role(self):
             self.dsa_client.show_ds_assignment(new_dsa['uuid'])
 
+    @decorators.idempotent_id('3b9193ad-fe66-4b16-8398-539da153aa72')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_discovery_service_assignment")
+                                 rules="update_discovery_service_assignment")
     @idempotent_id('71ce1404-965b-4670-abb7-5b6fea3b24b7')
     def test_update_discovery_service(self):
         """
@@ -90,8 +95,9 @@
                 fq_name=new_dsa['fq_name'],
                 display_name=update_name)
 
+    @decorators.idempotent_id('ecd4b3f7-21bf-4222-bb29-6c8202ba953f')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_discovery_service_assignment")
+                                 rules="delete_discovery_service_assignment")
     @idempotent_id('e7ff845d-2140-4eb0-9720-26370459723b')
     def test_delete_discovery_service(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_domain.py b/tungsten_tempest_plugin/tests/api/contrail/test_domain.py
index d77ba98..452734a 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_domain.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_domain.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -56,8 +57,9 @@
         }
         self.domain_client.update_domain(domain_uuid, **put_body)
 
+    @decorators.idempotent_id('d9db33f3-b326-47d9-972e-9f6ca33d94cb')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_domains")
+                                 rules="list_domains")
     @idempotent_id('fa02e27b-f661-4186-a522-69e8fcb6abf9')
     def test_list_domains(self):
         """
@@ -66,8 +68,9 @@
         with self.rbac_utils.override_role(self):
             self.domain_client.list_domains()
 
+    @decorators.idempotent_id('32a12708-7209-4d8a-8096-96867acff917')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_domains")
+                                 rules="create_domains")
     @idempotent_id('3f18be91-c37b-4e17-bf5e-b704d993f738')
     def test_create_domains(self):
         """
@@ -76,8 +79,9 @@
         with self.rbac_utils.override_role(self):
             self._create_domains()
 
+    @decorators.idempotent_id('8eb9d91b-21b0-443c-af70-88dda1c21c03')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_domain")
+                                 rules="show_domain")
     @idempotent_id('e79f8581-ba9f-420a-aa26-f1cb51cf4bbf')
     def test_show_domain(self):
         """
@@ -87,8 +91,9 @@
         with self.rbac_utils.override_role(self):
             self.domain_client.show_domain(domain_uuid)
 
+    @decorators.idempotent_id('7f0f1fac-2685-4405-9c83-6dee210dfab0')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_domain")
+                                 rules="update_domain")
     @idempotent_id('fdf72539-20b5-4bdb-b22b-70c86fbb52a4')
     def test_update_domain(self):
         """
@@ -98,8 +103,9 @@
         with self.rbac_utils.override_role(self):
             self._update_domain(domain_uuid)
 
+    @decorators.idempotent_id('2439c2fa-5102-4e63-9c4d-834743643fd6')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_domain")
+                                 rules="delete_domain")
     @idempotent_id('abaad2b0-6bde-40b8-b257-20ca805c1dca')
     def test_delete_domain(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_dsa_rule.py b/tungsten_tempest_plugin/tests/api/contrail/test_dsa_rule.py
index c234e94..4df9e9a 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_dsa_rule.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_dsa_rule.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -60,8 +61,9 @@
                         new_rule['uuid'])
         return new_rule
 
+    @decorators.idempotent_id('e17800a7-1d1c-461d-a616-cdab43bcca5d')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_dsa_rules")
+                                 rules="list_dsa_rules")
     @idempotent_id('3227673b-96fc-4d26-ab0b-109347e9e9c2')
     def test_list_dsa_rules(self):
         """
@@ -70,8 +72,9 @@
         with self.rbac_utils.override_role(self):
             self.dsa_rule_client.list_dsa_rules()
 
+    @decorators.idempotent_id('9350f6d8-71c5-4989-a58b-98fdfb4d4a73')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_dsa_rule")
+                                 rules="show_dsa_rule")
     @idempotent_id('0f90ea4f-c050-4c31-93a7-1e0c58df914e')
     def test_show_dsa_rule(self):
         """
@@ -84,8 +87,9 @@
         with self.rbac_utils.override_role(self):
             self.dsa_rule_client.show_dsa_rule(new_rule['uuid'])
 
+    @decorators.idempotent_id('f8bc91ba-a47a-45b0-8cdd-f770fe914974')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_dsa_rules")
+                                 rules="create_dsa_rules")
     @idempotent_id('c3774ca3-45d0-4ca8-a6b3-f895441b1d0e')
     def test_create_dsa_rules(self):
         """
@@ -97,8 +101,9 @@
         with self.rbac_utils.override_role(self):
             self._create_dsa_rules(discovery_service_assignment)
 
+    @decorators.idempotent_id('c6c60729-d515-4eca-b44e-f80021de0120')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_dsa_rule")
+                                 rules="update_dsa_rule")
     @idempotent_id('5cfe7e8e-d91c-4183-8e6c-733e826707be')
     def test_update_dsa_rule(self):
         """
@@ -113,8 +118,9 @@
             self.dsa_rule_client.update_dsa_rule(
                 new_rule['uuid'], display_name=update_name)
 
+    @decorators.idempotent_id('d966d142-4f0d-49c1-93f9-d19f2d298d0d')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_dsa_rule")
+                                 rules="delete_dsa_rule")
     @idempotent_id('d3b869db-fa49-48f0-861a-08efd9879b15')
     def test_delete_dsa_rule(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_floating_ip.py b/tungsten_tempest_plugin/tests/api/contrail/test_floating_ip.py
index 16813a0..f523882 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_floating_ip.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_floating_ip.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -113,8 +114,9 @@
 
         return fip_pool
 
+    @decorators.idempotent_id('ec00f8f2-e86c-414d-ae11-9c0daedf2993')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_floating_ip_pools")
+                                 rules="create_floating_ip_pools")
     @idempotent_id('a83ca5e8-be4b-4161-869c-f981a724cf82')
     def test_create_floating_ip_pools(self):
         """
@@ -123,8 +125,9 @@
         with self.rbac_utils.override_role(self):
             self._create_floating_ip_pool()
 
+    @decorators.idempotent_id('56dede50-6f7e-4469-ab76-e875d26500c2')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_floating_ip_pools")
+                                 rules="list_floating_ip_pools")
     @idempotent_id('9d20e78d-0463-4a0e-b30c-40770bee35bc')
     def test_list_floating_ip_pools(self):
         """
@@ -134,8 +137,9 @@
         with self.rbac_utils.override_role(self):
             self.fip_client.list_floating_ip_pools()
 
+    @decorators.idempotent_id('a6dbcfc8-3b02-42f0-9854-4dfc7d1d254b')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_floating_ip_pool")
+                                 rules="show_floating_ip_pool")
     @idempotent_id('1ec3124c-c15c-4ee6-b2de-2feed9599e38')
     def test_show_floating_ip_pool(self):
         """
@@ -145,8 +149,9 @@
         with self.rbac_utils.override_role(self):
             self.fip_client.show_floating_ip_pool(uuid)
 
+    @decorators.idempotent_id('b60a411d-2b9a-4a72-a1fb-f1157fff6f8d')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_floating_ip_pool")
+                                 rules="update_floating_ip_pool")
     @idempotent_id('6563f2e7-ae6b-483b-8c07-0111efc86817')
     def test_update_floating_ip_pool(self):
         """
@@ -158,8 +163,9 @@
                 uuid,
                 display_name='rbac-fip-pool-new-name')
 
+    @decorators.idempotent_id('9ed5a91c-afb5-45df-a0f0-526356891386')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_floating_ip_pool")
+                                 rules="delete_floating_ip_pool")
     @idempotent_id('c4b449ae-2f12-49cf-9dec-2b21c143aff6')
     def test_delete_floating_ip_pool(self):
         """
@@ -209,8 +215,9 @@
                         fip['uuid'])
         return fip
 
+    @decorators.idempotent_id('b342f573-20a4-4ac7-9642-b0fbf0a56bd9')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_floating_ips")
+                                 rules="create_floating_ips")
     @idempotent_id('ff05f70f-9db9-43cb-a5ce-38cbbef2c430')
     def test_create_floating_ips(self):
         """
@@ -219,8 +226,9 @@
         with self.rbac_utils.override_role(self):
             self._create_floating_ip()
 
+    @decorators.idempotent_id('4c64ee6a-9183-43ac-88d5-0b8200e49f90')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_floating_ips")
+                                 rules="list_floating_ips")
     @idempotent_id('e56046f9-32f9-41ce-9c1b-b982997ac347')
     def test_list_floating_ips(self):
         """
@@ -230,8 +238,9 @@
         with self.rbac_utils.override_role(self):
             self.fip_client.list_floating_ips()
 
+    @decorators.idempotent_id('724b1bdd-aabf-4780-93f4-cb4a90fa59fa')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_floating_ip")
+                                 rules="show_floating_ip")
     @idempotent_id('293f2c26-4101-4a2f-86d4-feb2878bd511')
     def test_show_floating_ip(self):
         """
@@ -241,8 +250,9 @@
         with self.rbac_utils.override_role(self):
             self.fip_client.show_floating_ip(uuid)
 
+    @decorators.idempotent_id('19224c90-7339-4382-b4e9-8f4dc013598f')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_floating_ip")
+                                 rules="update_floating_ip")
     @idempotent_id('a09283c9-73d3-42f7-876d-f33040686d6d')
     def test_update_floating_ip(self):
         """
@@ -254,8 +264,9 @@
                 uuid,
                 display_name='rbac-fip-new-name')
 
+    @decorators.idempotent_id('13d7e846-2080-4de4-a3ca-90ae25af6e9d')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_floating_ip")
+                                 rules="delete_floating_ip")
     @idempotent_id('a26f162f-da56-4153-aed6-bffccba92bc7')
     def test_delete_floating_ip(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_forwarding_class.py b/tungsten_tempest_plugin/tests/api/contrail/test_forwarding_class.py
index ba805d0..ed0f00d 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_forwarding_class.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_forwarding_class.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -85,8 +86,9 @@
                         new_fclass['uuid'])
         return new_fclass
 
+    @decorators.idempotent_id('88d84616-ce8d-46df-915f-90b560f88a4a')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_forwarding_classs")
+                                 rules="list_forwarding_classs")
     @idempotent_id('807a66fd-d4a4-472c-a13d-7ba590509e6e')
     def test_list_forwarding_classs(self):
         """
@@ -95,8 +97,9 @@
         with self.rbac_utils.override_role(self):
             self.forwarding_class_client.list_forwarding_classs()
 
+    @decorators.idempotent_id('73b015a3-e57b-4c48-9f05-8c2453f06092')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_forwarding_class")
+                                 rules="show_forwarding_class")
     @idempotent_id('8ef21f71-72a4-4de9-af93-6e759aa463c0')
     def test_show_forwarding_class(self):
         """
@@ -113,8 +116,9 @@
             self.forwarding_class_client.show_forwarding_class(
                 new_fclass['uuid'])
 
+    @decorators.idempotent_id('8b1b3121-1f98-463c-8d39-7b750ef64254')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_forwarding_classs")
+                                 rules="create_forwarding_classs")
     @idempotent_id('d098859c-ad36-4385-8fb0-c00934a99b6f')
     def test_create_forwarding_classs(self):
         """
@@ -129,8 +133,9 @@
             self._create_forwarding_class(global_system_config,
                                           global_qos_config)
 
+    @decorators.idempotent_id('9c6d7400-d5dd-42b2-8e85-b056fd9f7596')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_forwarding_class")
+                                 rules="update_forwarding_class")
     @idempotent_id('589dc03d-a25d-48be-9d9c-d3f92ff2cfc6')
     def test_update_forwarding_class(self):
         """
@@ -148,8 +153,9 @@
             self.forwarding_class_client.update_forwarding_class(
                 new_fclass['uuid'], display_name=update_name)
 
+    @decorators.idempotent_id('c5349bc1-4d7a-44e4-8248-754a38865b19')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_forwarding_class")
+                                 rules="delete_forwarding_class")
     @idempotent_id('a0348ffc-68c5-4d94-ba03-d08483503ced')
     def test_delete_forwarding_class(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_fqname_id.py b/tungsten_tempest_plugin/tests/api/contrail/test_fqname_id.py
index f2d91c0..d550837 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_fqname_id.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_fqname_id.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -54,8 +55,9 @@
                                  cls.network['uuid'])
         super(FqnameIdTest, cls).resource_cleanup()
 
+    @decorators.idempotent_id('c3864ec4-f6c6-43ac-9fe5-e22f7afaf427')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="fqname_to_id")
+                                 rules="fqname_to_id")
     @idempotent_id('1fc1350b-3146-49bc-9af5-a61a98b55541')
     def test_fqname_to_id(self):
         """
@@ -65,8 +67,9 @@
             self.fq_client.fqname_to_id(fq_name=self.network['fq_name'],
                                         type=self.type)
 
+    @decorators.idempotent_id('408c13ea-852c-4349-a683-c44fe1ba4192')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="id_to_fqname")
+                                 rules="id_to_fqname")
     @idempotent_id('ecdd77d7-8508-4639-86cd-b97907b363ff')
     def test_id_to_fqname(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_instance_ip.py b/tungsten_tempest_plugin/tests/api/contrail/test_instance_ip.py
index c5d6b48..9736c3f 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_instance_ip.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_instance_ip.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -105,8 +106,9 @@
                         iip['uuid'])
         return iip
 
+    @decorators.idempotent_id('14194425-cc47-4c30-8743-bfa5f2dcde82')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_instance_ips")
+                                 rules="list_instance_ips")
     @idempotent_id('31db3b3f-c40b-4f7f-bb8b-0a110f099553')
     def test_list_instance_ips(self):
         """
@@ -116,8 +118,9 @@
         with self.rbac_utils.override_role(self):
             self.iip_client.list_instance_ips()
 
+    @decorators.idempotent_id('8b902827-ba95-438e-9787-9a63fe5cb38b')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_instance_ips")
+                                 rules="create_instance_ips")
     @idempotent_id('78f5cd4d-345d-4d87-8b8b-4d5d3fec4a12')
     def test_create_instance_ips(self):
         """
@@ -126,8 +129,9 @@
         with self.rbac_utils.override_role(self):
             self._create_instance_ip()
 
+    @decorators.idempotent_id('43d12039-e5b2-4214-9036-d6f1d02bfc94')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_instance_ip")
+                                 rules="show_instance_ip")
     @idempotent_id('276f3838-d9cb-4432-bbb4-db31c4c1db5c')
     def test_show_instance_ip(self):
         """
@@ -137,8 +141,9 @@
         with self.rbac_utils.override_role(self):
             self.iip_client.show_instance_ip(uuid)
 
+    @decorators.idempotent_id('f10caa56-f4a1-4680-bc27-ee549bedf8ba')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_instance_ip")
+                                 rules="update_instance_ip")
     @idempotent_id('b85975a5-176f-44b1-a615-b6f0a39a7708')
     def test_update_instance_ip(self):
         """
@@ -150,8 +155,9 @@
                 uuid,
                 display_name='rbac-iip-new-name')
 
+    @decorators.idempotent_id('19d96037-2ba0-44cd-8fa8-b3168672db66')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_instance_ip")
+                                 rules="delete_instance_ip")
     @idempotent_id('d9c1d400-1dfb-4adb-8d97-0e8b498226b7')
     def test_delete_instance_ip(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_interfaces.py b/tungsten_tempest_plugin/tests/api/contrail/test_interfaces.py
index 32a9703..06bfe66 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_interfaces.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_interfaces.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -93,8 +94,9 @@
                         logical_if['uuid'])
         return logical_if
 
+    @decorators.idempotent_id('d18774ca-34aa-4bde-b080-924be0e0ce20')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_physical_interfaces")
+                                 rules="list_physical_interfaces")
     @idempotent_id('c496a2b4-51b2-4674-a60e-483a315baccb')
     def test_list_physical_interfaces(self):
         """
@@ -103,8 +105,9 @@
         with self.rbac_utils.override_role(self):
             self.interface_client.list_physical_interfaces()
 
+    @decorators.idempotent_id('f0f1ce4c-88b0-4508-badd-d01b8568f243')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_physical_interfaces")
+                                 rules="create_physical_interfaces")
     @idempotent_id('066f53d8-3d2a-4ad6-983f-243de7c12962')
     def test_create_physical_interfaces(self):
         """
@@ -115,8 +118,9 @@
         with self.rbac_utils.override_role(self):
             self._create_physical_interface()
 
+    @decorators.idempotent_id('b86ab6be-5fe4-436d-9047-1315945d61cf')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_physical_interface")
+                                 rules="update_physical_interface")
     @idempotent_id('91c4fc90-ed0f-42ec-87c6-ff6c2a9ab8de')
     def test_update_physical_interface(self):
         """
@@ -135,8 +139,9 @@
             self.interface_client.update_physical_interface(
                 uuid, **body)
 
+    @decorators.idempotent_id('18459fe9-0244-4dc8-8b0d-21be7a1229b6')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_physical_interface")
+                                 rules="delete_physical_interface")
     @idempotent_id('5d77ea76-be8c-49cc-8f08-72fbdaf9028f')
     def test_delete_physical_interface(self):
         """
@@ -148,8 +153,9 @@
         with self.rbac_utils.override_role(self):
             self.interface_client.delete_physical_interface(uuid)
 
+    @decorators.idempotent_id('4785625c-7380-4bea-8a9c-51ee89ee31e3')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_physical_interface")
+                                 rules="show_physical_interface")
     @idempotent_id('2c75c7e7-ef34-4e24-9c2f-5a2182db33a6')
     def test_show_physical_interface(self):
         """
@@ -160,8 +166,9 @@
         with self.rbac_utils.override_role(self):
             self.interface_client.show_physical_interface(uuid)
 
+    @decorators.idempotent_id('fd503921-6048-454d-9b7c-9f91e39181b6')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_logical_interfaces")
+                                 rules="list_logical_interfaces")
     @idempotent_id('43ac3727-4a43-42d7-b52f-df75018915b9')
     def test_list_logical_interfaces(self):
         """
@@ -170,8 +177,9 @@
         with self.rbac_utils.override_role(self):
             self.interface_client.list_logical_interfaces()
 
+    @decorators.idempotent_id('2710832a-7524-4540-9b8c-c8922fd829f9')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_logical_interfaces")
+                                 rules="create_logical_interfaces")
     @idempotent_id('503facf2-0752-47e4-a0a4-7a3103133a61')
     def test_create_logical_interfaces(self):
         """
@@ -182,8 +190,9 @@
         with self.rbac_utils.override_role(self):
             self._create_logical_interface()
 
+    @decorators.idempotent_id('14e04feb-c685-446f-ab18-837326e4b564')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_logical_interface")
+                                 rules="update_logical_interface")
     @idempotent_id('63c991f4-6aba-454c-9c49-522dc77b3f5c')
     def test_update_logical_interface(self):
         """
@@ -203,8 +212,9 @@
             self.interface_client.update_logical_interface(
                 uuid, **body)
 
+    @decorators.idempotent_id('4630b04c-2516-4d66-8572-897eefa699cb')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_logical_interface")
+                                 rules="delete_logical_interface")
     @idempotent_id('a36743d1-3ea1-4cf5-89d8-9c0b885fa625')
     def test_delete_logical_interface(self):
         """
@@ -216,8 +226,9 @@
         with self.rbac_utils.override_role(self):
             self.interface_client.delete_logical_interface(uuid)
 
+    @decorators.idempotent_id('fe0dc372-3673-472e-a283-eba1b6c0b0b2')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_logical_interface")
+                                 rules="show_logical_interface")
     @idempotent_id('f0f7fab7-eeb9-4d29-8415-31a50180fb44')
     def test_show_logical_interface(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_load_balancer.py b/tungsten_tempest_plugin/tests/api/contrail/test_load_balancer.py
index f19c4ce..de9699d 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_load_balancer.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_load_balancer.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -172,8 +173,9 @@
     Test class to test load balancer objects using RBAC roles
     """
 
+    @decorators.idempotent_id('37276fa2-e26f-46ef-942a-17593912dd5a')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_load_balancers")
+                                 rules="list_load_balancers")
     @idempotent_id('5d840b6b-3974-4945-916f-dd53ba27e42f')
     def test_list_load_balancers(self):
         """
@@ -182,8 +184,9 @@
         with self.rbac_utils.override_role(self):
             self.load_balancer_client.list_load_balancers()
 
+    @decorators.idempotent_id('768be46d-7ac4-4fc1-9238-0f89a6c5695d')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_load_balancers")
+                                 rules="create_load_balancers")
     @idempotent_id('6a18d506-0794-4eb9-a945-165bf146005d')
     def test_create_load_balancers(self):
         """
@@ -192,8 +195,9 @@
         with self.rbac_utils.override_role(self):
             self._create_load_balancer()
 
+    @decorators.idempotent_id('60c072f5-f281-417c-a4bb-49511f68c41c')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_load_balancer")
+                                 rules="show_load_balancer")
     @idempotent_id('428012aa-cd0e-4702-89d2-459046d4bd5f')
     def test_show_load_balancer(self):
         """
@@ -203,8 +207,9 @@
         with self.rbac_utils.override_role(self):
             self.load_balancer_client.show_load_balancer(lb_uuid)
 
+    @decorators.idempotent_id('a083240b-3859-457b-8493-2923ea43db17')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_load_balancer")
+                                 rules="update_load_balancer")
     @idempotent_id('7cd3d7b2-b149-40c1-a801-a6a8a660bd24')
     def test_update_load_balancer(self):
         """
@@ -214,8 +219,9 @@
         with self.rbac_utils.override_role(self):
             self._update_load_balancer(lb_uuid)
 
+    @decorators.idempotent_id('414c845f-1496-46eb-b3ac-ce78105bc0e7')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_load_balancer")
+                                 rules="delete_load_balancer")
     @idempotent_id('b28c6b11-d1b0-45d0-8942-638b6b590702')
     def test_delete_load_balancer(self):
         """
@@ -232,8 +238,9 @@
     Test class to test load balancer Health Monitor objects using RBAC roles
     """
 
+    @decorators.idempotent_id('087a7e04-dc89-4221-8c4a-bda7dd497896')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_load_balancer_health_monitors")
+                                 rules="list_load_balancer_health_monitors")
     @idempotent_id('3e3d8bdc-3621-4c5e-8130-1187f445a4e6')
     def test_list_lb_health_monitors(self):
         """
@@ -242,8 +249,9 @@
         with self.rbac_utils.override_role(self):
             self.load_balancer_client.list_lb_healthmonitors()
 
+    @decorators.idempotent_id('52dc7c8c-111e-485d-b5bc-c4dc92ec8d70')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_load_balancer_health_monitors")
+                                 rules="create_load_balancer_health_monitors")
     @idempotent_id('bddb93ad-d331-4bbc-bac6-2763cae4eb2c')
     def test_create_lb_health_monitors(self):
         """
@@ -252,8 +260,9 @@
         with self.rbac_utils.override_role(self):
             self._create_load_balancer_health_monitor()
 
+    @decorators.idempotent_id('cc7089b3-5182-428f-a5c1-300707004358')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_load_balancer_health_monitor")
+                                 rules="show_load_balancer_health_monitor")
     @idempotent_id('30d23994-1e3a-4a76-8f18-e00d0854412a')
     def test_show_lb_health_monitor(self):
         """
@@ -264,8 +273,9 @@
             self.load_balancer_client.show_lb_healthmonitor(
                 lb_hm_uuid)
 
+    @decorators.idempotent_id('33a3f664-87aa-45f4-b9ee-44d9adfa2f14')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_load_balancer_health_monitor")
+                                 rules="update_load_balancer_health_monitor")
     @idempotent_id('c32ba92c-3a69-4255-867a-1423c93faa6f')
     def test_update_lb_health_monitor(self):
         """
@@ -275,8 +285,9 @@
         with self.rbac_utils.override_role(self):
             self._update_load_balancer_health_monitor(lb_hm_uuid)
 
+    @decorators.idempotent_id('76bfe080-ed9f-44a7-ba76-37ce99db08aa')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_load_balancer_health_monitor")
+                                 rules="delete_load_balancer_health_monitor")
     @idempotent_id('b4d7ea9d-fd8c-433b-96fc-c24866b3f6a7')
     def test_delete_lb_health_monitor(self):
         """
@@ -294,8 +305,9 @@
     Base class to test load balancer Listener objects using RBAC roles
     """
 
+    @decorators.idempotent_id('672d244d-a415-4186-abef-8069e1fe1780')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_load_balancer_listeners")
+                                 rules="list_load_balancer_listeners")
     @idempotent_id('7e02882f-0eab-41c2-b48a-bf71e083b912')
     def test_list_lb_listeners(self):
         """
@@ -304,8 +316,9 @@
         with self.rbac_utils.override_role(self):
             self.load_balancer_client.list_load_balancer_listeners()
 
+    @decorators.idempotent_id('d6159b8e-63e4-4fd1-a08e-37b7938e2ae3')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_load_balancer_listeners")
+                                 rules="create_load_balancer_listeners")
     @idempotent_id('0551de87-fa4c-463f-8968-ec6f2a6098d0')
     def test_create_lb_listeners(self):
         """
@@ -314,8 +327,9 @@
         with self.rbac_utils.override_role(self):
             self._create_load_balancer_listener()
 
+    @decorators.idempotent_id('fd4e0452-87b7-4623-a584-c85d7d5019d8')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_load_balancer_listener")
+                                 rules="show_load_balancer_listener")
     @idempotent_id('ade38959-9506-4262-8d3c-5ba5eb63d85f')
     def test_show_lb_listener(self):
         """
@@ -326,8 +340,9 @@
             self.load_balancer_client.show_load_balancer_listener(
                 lb_listener_uuid)
 
+    @decorators.idempotent_id('4f114d13-0f9e-4bca-8701-bc79a3b51e02')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_load_balancer_listener")
+                                 rules="update_load_balancer_listener")
     @idempotent_id('e529e538-da31-4159-91c2-6c0a828282a4')
     def test_update_lb_listener(self):
         """
@@ -337,8 +352,9 @@
         with self.rbac_utils.override_role(self):
             self._update_load_balancer_listener(lb_listener_uuid)
 
+    @decorators.idempotent_id('1e580b6c-dc7c-4d00-ad28-faa6bcd7e01e')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_load_balancer_listener")
+                                 rules="delete_load_balancer_listener")
     @idempotent_id('feaf3e9a-ffd1-4327-ad7a-35f9e9e4989b')
     def test_delete_lb_listener(self):
         """
@@ -356,8 +372,9 @@
     Base class to test load balancer Pool objects using RBAC roles
     """
 
+    @decorators.idempotent_id('241c5a1a-b77e-4aba-920d-f42ed5757148')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_load_balancer_pools")
+                                 rules="list_load_balancer_pools")
     @idempotent_id('3d177a9e-7067-4e9e-b4e8-0acc5887dff0')
     def test_list_load_balancer_pools(self):
         """
@@ -366,8 +383,9 @@
         with self.rbac_utils.override_role(self):
             self.load_balancer_client.list_load_balancer_pools()
 
+    @decorators.idempotent_id('6800c907-a27e-4b27-9533-a5a1a68df8eb')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_load_balancer_pools")
+                                 rules="create_load_balancer_pools")
     @idempotent_id('a52c6ec7-a996-4191-9a70-7879a211a711')
     def test_create_load_balancer_pools(self):
         """
@@ -376,8 +394,9 @@
         with self.rbac_utils.override_role(self):
             self._create_load_balancer_pool()
 
+    @decorators.idempotent_id('2cfbc6ce-53ed-418f-8219-6f239fcf543e')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_load_balancer_pool")
+                                 rules="show_load_balancer_pool")
     @idempotent_id('7923da4e-53b1-4024-9a40-5bc91cee8e2d')
     def test_show_load_balancer_pool(self):
         """
@@ -387,8 +406,9 @@
         with self.rbac_utils.override_role(self):
             self.load_balancer_client.show_load_balancer_pool(lb_pool_uuid)
 
+    @decorators.idempotent_id('bf6ab193-5479-40d6-972c-188c901a62b5')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_load_balancer_pool")
+                                 rules="update_load_balancer_pool")
     @idempotent_id('391c0c5e-c218-4c98-9b58-6d2724ec4c20')
     def test_update_load_balancer_pool(self):
         """
@@ -398,8 +418,9 @@
         with self.rbac_utils.override_role(self):
             self._update_load_balancer_pool(lb_pool_uuid)
 
+    @decorators.idempotent_id('79182a4e-7ea8-46b4-ae12-351ddd10998d')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_load_balancer_pool")
+                                 rules="delete_load_balancer_pool")
     @idempotent_id('8b3617c0-4064-48f8-96b8-e2f996fce5c3')
     def test_delete_load_balancer_pool(self):
         """
@@ -416,8 +437,9 @@
     Base class to test load balancer Member using RBAC roles
     """
 
+    @decorators.idempotent_id('759ae73b-5c2d-474e-87f6-8de2a21b890e')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_load_balancer_members")
+                                 rules="list_load_balancer_members")
     @idempotent_id('b3c51463-8166-486a-a26e-0f7aeaa41e0f')
     def test_list_load_balancer_members(self):
         """
@@ -426,8 +448,9 @@
         with self.rbac_utils.override_role(self):
             self.load_balancer_client.list_load_balancer_members()
 
+    @decorators.idempotent_id('ae17a662-bb09-4c6e-8b80-9f0cc94507c6')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_load_balancer_members")
+                                 rules="create_load_balancer_members")
     @idempotent_id('ad60688f-7a20-4dd5-8229-4076d85b9d55')
     def test_create_lb_members(self):
         """
@@ -436,8 +459,9 @@
         with self.rbac_utils.override_role(self):
             self._create_load_balancer_member()
 
+    @decorators.idempotent_id('2992004c-a8f5-4f3d-a160-614ab46f3982')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_load_balancer_member")
+                                 rules="show_load_balancer_member")
     @idempotent_id('917602ff-24d5-4a07-a6a6-5e5b9539bbf1')
     def test_show_load_balancer_member(self):
         """
@@ -447,8 +471,9 @@
         with self.rbac_utils.override_role(self):
             self.load_balancer_client.show_load_balancer_member(lb_member_uuid)
 
+    @decorators.idempotent_id('a04a8d05-1a4d-4cdb-a319-5c7a96a599f7')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_load_balancer_member")
+                                 rules="update_load_balancer_member")
     @idempotent_id('b1611005-5c77-4ac0-8fcc-4a035dfbaa84')
     def test_update_lb_member(self):
         """
@@ -458,8 +483,9 @@
         with self.rbac_utils.override_role(self):
             self._update_load_balancer_member(lb_member_uuid)
 
+    @decorators.idempotent_id('a61faa9a-4c5c-4d3b-8324-b6c1ce481bd8')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_load_balancer_member")
+                                 rules="delete_load_balancer_member")
     @idempotent_id('dc21883a-a822-4d39-b815-4dfd6b505b0b')
     def test_delete_lb_member(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_namespace.py b/tungsten_tempest_plugin/tests/api/contrail/test_namespace.py
index fcab56e..910de07 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_namespace.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_namespace.py
@@ -25,6 +25,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -57,8 +58,9 @@
         }
         self.namespace_client.update_namespace(namespace_uuid, **put_body)
 
+    @decorators.idempotent_id('e4bd5d1e-0a97-4001-aba2-9142c1a8f164')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_namespaces")
+                                 rules="list_namespaces")
     @idempotent_id('e436390d-d669-4047-9838-421ea93e94be')
     def test_list_namespaces(self):
         """
@@ -67,8 +69,9 @@
         with self.rbac_utils.override_role(self):
             self.namespace_client.list_namespaces()
 
+    @decorators.idempotent_id('f16c8781-850c-4f36-b317-cb19c2c47627')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_namespaces")
+                                 rules="create_namespaces")
     @idempotent_id('503ae445-7e67-4db6-989a-af0b7f9a7e95')
     def test_create_namespaces(self):
         """
@@ -77,8 +80,9 @@
         with self.rbac_utils.override_role(self):
             self._create_namespace()
 
+    @decorators.idempotent_id('fba2066e-0d2b-4ecd-98c6-8dd8afa765af')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_namespace")
+                                 rules="show_namespace")
     @idempotent_id('f916971a-7c07-4386-b887-8b78d8a1e528')
     def test_show_namespace(self):
         """
@@ -88,8 +92,9 @@
         with self.rbac_utils.override_role(self):
             self.namespace_client.show_namespace(namespace_uuid)
 
+    @decorators.idempotent_id('ffc17714-e0c2-4f4f-b1e1-330f5d5ada30')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_namespace")
+                                 rules="update_namespace")
     @idempotent_id('3649f65a-922a-4b8a-9b8b-520c333e192e')
     def test_update_namespace(self):
         """
@@ -99,8 +104,9 @@
         with self.rbac_utils.override_role(self):
             self._update_namespace(namespace_uuid)
 
+    @decorators.idempotent_id('c5230a1b-ea22-43b3-ab6c-51227aec2e53')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_namespace")
+                                 rules="delete_namespace")
     @idempotent_id('80e736bf-fc7d-4274-8173-a50c883776a9')
     def test_delete_namespace(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_network_ipams.py b/tungsten_tempest_plugin/tests/api/contrail/test_network_ipams.py
index 9abddc6..6ee68e5 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_network_ipams.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_network_ipams.py
@@ -22,6 +22,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -45,8 +46,9 @@
                         new_ipam['uuid'])
         return new_ipam
 
+    @decorators.idempotent_id('53a9505e-6201-48c3-b457-762d360977fd')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_network_ipams")
+                                 rules="list_network_ipams")
     @idempotent_id('9ee2c4d8-3209-4ef8-86e1-0ecea2d4c5f2')
     def test_list_network_ipams(self):
         """
@@ -55,8 +57,9 @@
         with self.rbac_utils.override_role(self):
             self.network_ipams_client.list_network_ipams()
 
+    @decorators.idempotent_id('05790aae-b95e-4e19-9c40-daee94ce869c')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_network_ipams")
+                                 rules="create_network_ipams")
     @idempotent_id('ef2415ea-0810-413a-85a0-4508c9d7af91')
     def test_create_network_ipams(self):
         """
@@ -65,8 +68,9 @@
         with self.rbac_utils.override_role(self):
             self._create_network_ipams()
 
+    @decorators.idempotent_id('b91ad50e-98c1-4103-9532-54128cacd0a3')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_network_ipam")
+                                 rules="show_network_ipam")
     @idempotent_id('527b19e5-068a-44e3-b175-b504eafeec6e')
     def test_show_network_ipam(self):
         """
@@ -76,8 +80,9 @@
         with self.rbac_utils.override_role(self):
             self.network_ipams_client.show_network_ipam(new_ipam['uuid'])
 
+    @decorators.idempotent_id('7c062754-212c-4585-ab4a-81539130e4fb')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_network_ipam")
+                                 rules="delete_network_ipam")
     @idempotent_id('118c1620-efb6-4cc6-8eb5-71bf8631d365')
     def test_delete_network_ipam(self):
         """
@@ -87,8 +92,9 @@
         with self.rbac_utils.override_role(self):
             self.network_ipams_client.delete_network_ipam(new_ipam['uuid'])
 
+    @decorators.idempotent_id('fd9264de-6c91-4a4e-8f91-12798ebd4fe7')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_network_ipam")
+                                 rules="update_network_ipam")
     @idempotent_id('44cbe2d9-583d-4215-964a-1c321f5e8d92')
     def test_update_network_ipam(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_network_policy.py b/tungsten_tempest_plugin/tests/api/contrail/test_network_policy.py
index 10abc2a..1266ad9 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_network_policy.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_network_policy.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -58,8 +59,9 @@
         self.network_policy_client.update_network_policy(network_policy_uuid,
                                                          **put_body)
 
+    @decorators.idempotent_id('8f7cac43-758f-4e7f-99dc-c71d6b38c75a')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_network_policys")
+                                 rules="list_network_policys")
     @idempotent_id('fa2a28f3-a8bb-4908-95b9-1e11cf58b16f')
     def test_list_policys(self):
         """
@@ -68,8 +70,9 @@
         with self.rbac_utils.override_role(self):
             self.network_policy_client.list_network_policys()
 
+    @decorators.idempotent_id('7981c0be-ca0b-4d1f-9f92-c33aaa1d93c7')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_network_policys")
+                                 rules="create_network_policys")
     @idempotent_id('a30be228-afba-40c9-8678-ae020db68d79')
     def test_create_network_policys(self):
         """
@@ -78,8 +81,9 @@
         with self.rbac_utils.override_role(self):
             self._create_policy()
 
+    @decorators.idempotent_id('5f028687-0599-409f-a785-97b6d131f48b')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_network_policy")
+                                 rules="show_network_policy")
     @idempotent_id('6cefe92e-8936-49a6-bce0-12da3396e7ab')
     def test_show_network_policy(self):
         """
@@ -89,8 +93,9 @@
         with self.rbac_utils.override_role(self):
             self.network_policy_client.show_network_policy(policy_uuid)
 
+    @decorators.idempotent_id('9a58b489-7600-4369-9b11-696ae46d8457')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_network_policy")
+                                 rules="update_network_policy")
     @idempotent_id('1d470505-3ad4-4870-87d7-3f0b0f9fc635')
     def test_update_network_policy(self):
         """
@@ -100,8 +105,9 @@
         with self.rbac_utils.override_role(self):
             self._update_policy(policy_uuid)
 
+    @decorators.idempotent_id('acabbe91-6823-446f-9590-508655a57316')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_network_policy")
+                                 rules="delete_network_policy")
     @idempotent_id('aae9018f-e7a2-4a75-a68e-afd6c380640e')
     def test_delete_network_policy(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_port_tuple.py b/tungsten_tempest_plugin/tests/api/contrail/test_port_tuple.py
index 34ee131..26122e9 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_port_tuple.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_port_tuple.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -74,8 +75,9 @@
                         new_tuple['uuid'])
         return new_tuple
 
+    @decorators.idempotent_id('a799ae22-d6e3-4fec-b1df-f972fe5a003d')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_port_tuples")
+                                 rules="list_port_tuples")
     @idempotent_id('3789eef8-0e80-4057-b7b0-926655144beb')
     def test_list_port_tuples(self):
         """
@@ -84,8 +86,9 @@
         with self.rbac_utils.override_role(self):
             self.port_tuple_client.list_port_tuples()
 
+    @decorators.idempotent_id('52a4ee6a-346e-4cc0-a33d-345ec3055224')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_port_tuple")
+                                 rules="show_port_tuple")
     @idempotent_id('ae5a90ed-5771-4680-be6b-c7626caa3a52')
     def test_show_port_tuple(self):
         """
@@ -95,8 +98,9 @@
         with self.rbac_utils.override_role(self):
             self.port_tuple_client.show_port_tuple(new_tuple['uuid'])
 
+    @decorators.idempotent_id('b4f70918-bea8-40e4-9b1b-5bcc5b40e298')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_port_tuples")
+                                 rules="create_port_tuples")
     @idempotent_id('0e2283da-fe25-4204-b5b3-fef3c200d0c8')
     def test_create_port_tuples(self):
         """
@@ -105,8 +109,9 @@
         with self.rbac_utils.override_role(self):
             self._create_port_tuple()
 
+    @decorators.idempotent_id('1483a357-d83a-48c7-b9ed-6eb45d47e129')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_port_tuple")
+                                 rules="update_port_tuple")
     @idempotent_id('b16f19e2-ec8e-4107-961d-561890183dd0')
     def test_update_port_tuple(self):
         """
@@ -118,8 +123,9 @@
             self.port_tuple_client.update_port_tuple(
                 new_tuple['uuid'], display_name=update_name)
 
+    @decorators.idempotent_id('96b5a8ed-7057-4630-bb99-5b7a77ecafbc')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_port_tuple")
+                                 rules="delete_port_tuple")
     @idempotent_id('3f28e8b8-f9de-437f-a398-0a11c7fcd652')
     def test_delete_port_tuple(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_project.py b/tungsten_tempest_plugin/tests/api/contrail/test_project.py
index 30312c5..4b5b50a 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_project.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_project.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -57,8 +58,9 @@
         }
         self.project_client.update_project(project_uuid, **put_body)
 
+    @decorators.idempotent_id('b1afccc4-6947-444f-9dca-1422f22ad6a9')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_projects")
+                                 rules="list_projects")
     @idempotent_id('7db819fd-ceee-4a6b-9ad7-2e837c055bdd')
     def test_list_projects(self):
         """
@@ -67,8 +69,9 @@
         with self.rbac_utils.override_role(self):
             self.project_client.list_projects()
 
+    @decorators.idempotent_id('f29f5705-9bd6-4d50-b8c4-f3450cac24d9')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_projects")
+                                 rules="create_projects")
     @idempotent_id('38b9b7a8-1568-417d-b0a3-e7adee88e4b9')
     def test_create_projects(self):
         """
@@ -77,8 +80,9 @@
         with self.rbac_utils.override_role(self):
             self._create_project()
 
+    @decorators.idempotent_id('5f71a9be-4e4e-4eff-82ee-bd15b1fb0525')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_project")
+                                 rules="show_project")
     @idempotent_id('c47e57c4-34b0-46c2-a678-83b1fe9afd25')
     def test_show_project(self):
         """
@@ -88,8 +92,9 @@
         with self.rbac_utils.override_role(self):
             self.project_client.show_project(project_uuid)
 
+    @decorators.idempotent_id('89f5c981-67e3-4388-a724-6debd7b759e7')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_project")
+                                 rules="update_project")
     @idempotent_id('3d4bd416-16cc-437c-9e95-f9ceda424f8b')
     def test_update_project(self):
         """
@@ -99,8 +104,9 @@
         with self.rbac_utils.override_role(self):
             self._update_project(project_uuid)
 
+    @decorators.idempotent_id('8e0329c1-5316-4e94-a8e4-16ed329480b8')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_project")
+                                 rules="delete_project")
     @idempotent_id('787ebe8b-b88d-4488-b157-f70554bdd783')
     def test_delete_project(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_qos_config.py b/tungsten_tempest_plugin/tests/api/contrail/test_qos_config.py
index ab6d783..6dab789 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_qos_config.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_qos_config.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -52,8 +53,9 @@
                         qos_config['uuid'])
         return qos_config
 
+    @decorators.idempotent_id('53533827-08f1-4dbf-83c1-9e74b44d7103')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_qos_configs")
+                                 rules="list_qos_configs")
     @idempotent_id('6bc44b34-14d4-4e0e-b45d-fe3df047879f')
     def test_list_qos_configs(self):
         """
@@ -63,8 +65,9 @@
         with self.rbac_utils.override_role(self):
             self.qos_client.list_qos_configs()
 
+    @decorators.idempotent_id('6ea49847-17eb-4cd7-8bb0-0eb9210593fe')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_qos_configs")
+                                 rules="create_qos_configs")
     @idempotent_id('031b4a27-22cd-4d93-938d-ba6d0f3163ba')
     def test_create_qos_configs(self):
         """
@@ -73,8 +76,9 @@
         with self.rbac_utils.override_role(self):
             self._create_qos_configs()
 
+    @decorators.idempotent_id('2d2ebdbc-ccf4-44e9-8257-0dc2cb35632a')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_qos_config")
+                                 rules="show_qos_config")
     @idempotent_id('a9d82b49-3492-4667-b252-ef30b0ee6eb3')
     def test_show_qos_config(self):
         """
@@ -84,8 +88,9 @@
         with self.rbac_utils.override_role(self):
             self.qos_client.show_qos_config(qos_config['uuid'])
 
+    @decorators.idempotent_id('c1638a68-a758-4284-a763-a3b81bc1f6a8')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_qos_config")
+                                 rules="delete_qos_config")
     @idempotent_id('d324a5e6-cc86-4444-91a2-74592283a7ec')
     def test_delete_qos_config(self):
         """
@@ -95,8 +100,9 @@
         with self.rbac_utils.override_role(self):
             self.qos_client.delete_qos_config(qos_config['uuid'])
 
+    @decorators.idempotent_id('53649c15-c159-4763-9b55-1dfa2029a8d2')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_qos_config")
+                                 rules="update_qos_config")
     @idempotent_id('7f1901a5-0cf0-40bd-98a5-f8a930b11cfe')
     def test_update_qos_config(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_qos_global_config.py b/tungsten_tempest_plugin/tests/api/contrail/test_qos_global_config.py
index a6e8f82..5b9bf43 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_qos_global_config.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_qos_global_config.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -72,8 +73,9 @@
                         qos_global_config['uuid'])
         return qos_global_config
 
+    @decorators.idempotent_id('aad1e7b0-cbe0-48d9-baf5-e4ca6db48a0b')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_global_qos_configs")
+                                 rules="list_global_qos_configs")
     @idempotent_id('74e5a7b7-f538-4be3-90a5-6862b07fb118')
     def test_list_global_qos_configs(self):
         """
@@ -85,8 +87,9 @@
         with self.rbac_utils.override_role(self):
             self.qos_client.list_global_qos_configs()
 
+    @decorators.idempotent_id('c315d22e-7f9c-47cc-986b-b3245df39f7d')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_global_qos_configs")
+                                 rules="create_global_qos_configs")
     @idempotent_id('d7da1ca0-7bf7-4d1b-982c-820cd37fe9fa')
     def test_create_global_qos_configs(self):
         """
@@ -97,8 +100,9 @@
         with self.rbac_utils.override_role(self):
             self._create_qos_global_configs(global_system_config)
 
+    @decorators.idempotent_id('4dc7e8d1-4447-455e-ac7e-7d5bde6d8de0')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_global_qos_config")
+                                 rules="show_global_qos_config")
     @idempotent_id('e3bd44e0-19a9-46e7-83d3-268dcc537ad9')
     def test_show_global_qos_config(self):
         """
@@ -110,8 +114,9 @@
         with self.rbac_utils.override_role(self):
             self.qos_client.show_global_qos_config(instance_id=test['uuid'])
 
+    @decorators.idempotent_id('1783445a-a962-46b8-a5a9-d58c04d1d7e5')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_global_qos_config")
+                                 rules="update_global_qos_config")
     @idempotent_id('f834c4d7-bc81-4c59-bada-c4d752219a6e')
     def test_update_global_qos_config(self):
         """
@@ -126,8 +131,9 @@
                 instance_id=qos['uuid'],
                 display_name=display_name)
 
+    @decorators.idempotent_id('a26f0e42-06e1-4fce-b4cb-654aa341e3d6')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_global_qos_config")
+                                 rules="delete_global_qos_config")
     @idempotent_id('78b9a3da-4eb1-4f4b-8a23-a8a2e733b515')
     def test_delete_global_qos_config(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_qos_queue.py b/tungsten_tempest_plugin/tests/api/contrail/test_qos_queue.py
index 753a9ba..231470d 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_qos_queue.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_qos_queue.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -50,8 +51,9 @@
                         qos_queue['uuid'])
         return qos_queue
 
+    @decorators.idempotent_id('80ef7a1e-b700-4988-a287-ad05f6f91560')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_qos_queues")
+                                 rules="list_qos_queues")
     @idempotent_id('3d3a4397-2afe-4bbd-be59-56a1bcc2e49d')
     def test_list_qos_queues(self):
         """
@@ -61,8 +63,9 @@
         with self.rbac_utils.override_role(self):
             self.qos_client.list_qos_queues()
 
+    @decorators.idempotent_id('55777be0-e120-467d-8647-e6eaf3529c85')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_qos_queues")
+                                 rules="create_qos_queues")
     @idempotent_id('d89c45f4-c83c-47b3-8720-7feffab4519c')
     def test_create_qos_queues(self):
         """
@@ -71,8 +74,9 @@
         with self.rbac_utils.override_role(self):
             self._create_qos_queues()
 
+    @decorators.idempotent_id('0e36617e-9e21-4c78-bac3-65c18b9c2553')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_qos_queue")
+                                 rules="show_qos_queue")
     @idempotent_id('d2773d5c-9858-4938-8a77-62cafd5034da')
     def test_show_qos_queue(self):
         """
@@ -82,8 +86,9 @@
         with self.rbac_utils.override_role(self):
             self.qos_client.show_qos_queue(qos_queue['uuid'])
 
+    @decorators.idempotent_id('06ec1c06-abb7-4107-9987-d9184cc0f9c1')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_qos_queue")
+                                 rules="delete_qos_queue")
     @idempotent_id('64c828d0-6594-472b-a504-40915067c7bd')
     def test_delete_qos_queue(self):
         """
@@ -93,8 +98,9 @@
         with self.rbac_utils.override_role(self):
             self.qos_client.delete_qos_queue(qos_queue['uuid'])
 
+    @decorators.idempotent_id('ec51c48a-e97d-48fb-8c96-342b6f5299a5')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_qos_queue")
+                                 rules="update_qos_queue")
     @idempotent_id('0733ab1a-f5aa-4e70-a011-174aa203dc33')
     def test_update_qos_queue(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_route.py b/tungsten_tempest_plugin/tests/api/contrail/test_route.py
index db1b53f..cabd9c4 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_route.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_route.py
@@ -26,6 +26,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -54,8 +55,9 @@
                         route_table['uuid'])
         return route_table
 
+    @decorators.idempotent_id('600d0839-6c13-4349-9143-90f09bab41d3')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_route_tables")
+                                 rules="list_route_tables")
     @idempotent_id('ca5a5d42-6e49-40e4-a5ac-de07b397b775')
     def test_list_route_tables(self):
         """
@@ -65,8 +67,9 @@
         with self.rbac_utils.override_role(self):
             self.route_client.list_route_tables()
 
+    @decorators.idempotent_id('fa119fbf-9078-4607-9c85-344db9e2cf25')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_route_table")
+                                 rules="show_route_table")
     @idempotent_id('084a2759-991a-4ae2-bde4-8f9915966f6e')
     def test_show_route_table(self):
         """
@@ -76,8 +79,9 @@
         with self.rbac_utils.override_role(self):
             self.route_client.show_route_table(route_table['uuid'])
 
+    @decorators.idempotent_id('6f8a79fd-593f-4558-9a43-ddd4781e8e4f')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_route_tables")
+                                 rules="create_route_tables")
     @idempotent_id('3fab8105-c0be-4c9e-be5f-d2dce4deb921')
     def test_create_route_tables(self):
         """
@@ -86,8 +90,9 @@
         with self.rbac_utils.override_role(self):
             self._create_route_tables()
 
+    @decorators.idempotent_id('16c9ff63-26ba-4f4d-aa10-552555753cb5')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_route_table")
+                                 rules="update_route_table")
     @idempotent_id('2acee7ad-843e-40b0-b8f8-a6d90a51c6c8')
     def test_update_route_table(self):
         """
@@ -100,8 +105,9 @@
                 route_id=route_table['uuid'],
                 display_name=display_name)
 
+    @decorators.idempotent_id('cedccde1-4509-4fe2-a7fb-5e6fcf32c10d')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_route_table")
+                                 rules="delete_route_table")
     @idempotent_id('20a5086c-ec9a-43e0-ae2c-4161c0f4b280')
     def test_delete_route_table(self):
         """
@@ -135,8 +141,9 @@
                         interface_route_table['uuid'])
         return interface_route_table
 
+    @decorators.idempotent_id('6d34cf27-8a37-4d96-8420-f5d6013c0d84')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_interface_route_tables")
+                                 rules="list_interface_route_tables")
     @idempotent_id('b1f8f0a6-6074-4615-a439-19869a48bc49')
     def test_list_interface_route(self):
         """
@@ -146,8 +153,9 @@
         with self.rbac_utils.override_role(self):
             self.route_client.list_interface_route_tables()
 
+    @decorators.idempotent_id('f1c4cbd9-06e7-4ab2-a5d8-0cd4d50b03ea')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_interface_route_table")
+                                 rules="show_interface_route_table")
     @idempotent_id('94703a28-5e33-4003-b95b-6a3cc5752fd4')
     def test_show_interface_route(self):
         """
@@ -158,8 +166,9 @@
             self.route_client.show_interface_route_table(
                 interface_rte_table['uuid'])
 
+    @decorators.idempotent_id('e2f673d0-d631-4829-957e-d3f68653e948')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_interface_route_tables")
+                                 rules="create_interface_route_tables")
     @idempotent_id('b89ef437-4759-4c04-948b-d2ff9675ab07')
     def test_create_interface_route(self):
         """
@@ -168,8 +177,9 @@
         with self.rbac_utils.override_role(self):
             self._create_interface_route_tables()
 
+    @decorators.idempotent_id('29893eed-ecd5-489c-bc6f-0540aaea5188')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_interface_route_table")
+                                 rules="update_interface_route_table")
     @idempotent_id('e9346d4f-7a07-41bc-8e88-e8ae9fa309ea')
     def test_update_interface_route(self):
         """
@@ -182,8 +192,9 @@
                 interface_route_id=interface_rte_table['uuid'],
                 display_name=display_name)
 
+    @decorators.idempotent_id('e50fec3c-4232-4df3-8965-e1cabd28f1ff')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_interface_route_table")
+                                 rules="delete_interface_route_table")
     @idempotent_id('b00444a5-cb4c-45bc-b393-503e9e333e98')
     def test_delete_interface_route(self):
         """
@@ -218,8 +229,9 @@
                         route_target['uuid'])
         return route_target
 
+    @decorators.idempotent_id('7929fdbc-f12d-43e0-9804-70f3f5e94aed')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_route_targets")
+                                 rules="list_route_targets")
     @idempotent_id('757efd07-8027-4a16-887a-1e42f16b4140')
     def test_list_route_targets(self):
         """
@@ -229,8 +241,9 @@
         with self.rbac_utils.override_role(self):
             self.route_client.list_route_targets()
 
+    @decorators.idempotent_id('b4414a4e-f782-498d-842a-bd55bbdc52d0')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_route_target")
+                                 rules="show_route_target")
     @idempotent_id('76c60d98-dd5e-453a-bf0e-7854f78a1a5e')
     def test_show_route_target(self):
         """
@@ -240,8 +253,9 @@
         with self.rbac_utils.override_role(self):
             self.route_client.show_route_target(target['uuid'])
 
+    @decorators.idempotent_id('64af449d-3fd9-4157-91f5-633cf1faeaa2')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_route_targets")
+                                 rules="create_route_targets")
     @idempotent_id('fcdb4ebc-b92d-49f2-88e9-68c93aec94be')
     def test_create_route_targets(self):
         """
@@ -250,8 +264,9 @@
         with self.rbac_utils.override_role(self):
             self._create_route_targets()
 
+    @decorators.idempotent_id('c4c0b64e-f6d1-4704-8db7-a584c43e4199')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_route_target")
+                                 rules="update_route_target")
     @idempotent_id('dd830a77-4bfe-4a8c-b4e9-08b6ef2af3be')
     def test_update_route_target(self):
         """
@@ -264,8 +279,9 @@
                 route_target_id=target['uuid'],
                 display_name=display_name)
 
+    @decorators.idempotent_id('9ea8843c-11d8-4ab1-a7c8-3488d06dcc5c')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_route_target")
+                                 rules="delete_route_target")
     @idempotent_id('dfaa58f9-ec29-4d51-a475-870fac08908d')
     def test_delete_route_target(self):
         """
@@ -298,8 +314,9 @@
                         route_aggr['uuid'])
         return route_aggr
 
+    @decorators.idempotent_id('457b2f2d-a614-42be-8d07-595d684cdd6e')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_route_aggregates")
+                                 rules="list_route_aggregates")
     @idempotent_id('15f2c30c-4404-4228-94a0-86c5ec5cf62e')
     def test_list_route_aggregates(self):
         """
@@ -309,8 +326,9 @@
         with self.rbac_utils.override_role(self):
             self.route_client.list_route_aggregates()
 
+    @decorators.idempotent_id('eb0990e2-ffca-4d19-947c-9a4476c9a3bc')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_route_aggregate")
+                                 rules="show_route_aggregate")
     @idempotent_id('c8edee30-81c4-44e2-8485-055bed853384')
     def test_show_route_aggregate(self):
         """
@@ -321,8 +339,9 @@
             self.route_client.show_route_aggregate(
                 route_aggr['uuid'])
 
+    @decorators.idempotent_id('c496716c-6674-41c0-a18a-a8eb8decd86b')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_route_aggregates")
+                                 rules="create_route_aggregates")
     @idempotent_id('7553a54f-e41c-4555-b745-a858c5a70690')
     def test_create_route_aggregates(self):
         """
@@ -331,8 +350,9 @@
         with self.rbac_utils.override_role(self):
             self._create_route_aggregates()
 
+    @decorators.idempotent_id('2dc40190-1d1b-4ee3-ad1c-5930d532481f')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_route_aggregate")
+                                 rules="update_route_aggregate")
     @idempotent_id('de1e6102-0bc6-4f9b-a354-48eb051ab5e4')
     def test_update_route_aggregate(self):
         """
@@ -345,8 +365,9 @@
                 route_aggr_id=route_aggr['uuid'],
                 display_name=display_name)
 
+    @decorators.idempotent_id('ee17d0db-7388-4428-9212-bbc4f4af07f9')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_route_aggregate")
+                                 rules="delete_route_aggregate")
     @idempotent_id('e16dbdc6-d7cf-43c7-af9d-bd76cc220200')
     def test_delete_route_aggregate(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_routers.py b/tungsten_tempest_plugin/tests/api/contrail/test_routers.py
index fb1daf3..7b4256f 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_routers.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_routers.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -141,8 +142,9 @@
                         router['uuid'])
         return router
 
+    @decorators.idempotent_id('7cbbf934-91e4-4243-a0d8-09798b92e1a2')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_physical_routers")
+                                 rules="list_physical_routers")
     @idempotent_id('349ac042-b922-4727-9e1b-8f363ee343f3')
     def test_list_physical_routers(self):
         """
@@ -151,8 +153,9 @@
         with self.rbac_utils.override_role(self):
             self.router_client.list_physical_routers()
 
+    @decorators.idempotent_id('7f24af6e-b577-440e-87be-23809260bcc8')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_physical_routers")
+                                 rules="create_physical_routers")
     @idempotent_id('d0b7449e-9037-4f9f-8c7e-9f364c95f18a')
     def test_create_physical_routers(self):
         """
@@ -163,8 +166,9 @@
         with self.rbac_utils.override_role(self):
             self._create_physical_router(global_system_config)
 
+    @decorators.idempotent_id('ba07818c-c572-459a-a3c8-2bbc1fbe485e')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_physical_router")
+                                 rules="show_physical_router")
     @idempotent_id('6dfc53f4-a884-46d5-b303-22ba59c116f4')
     def test_show_physical_router(self):
         """
@@ -177,8 +181,9 @@
         with self.rbac_utils.override_role(self):
             self.router_client.show_physical_router(physical_router_uuid)
 
+    @decorators.idempotent_id('0dbc0f15-1d61-4aa4-a9bd-4e060335b960')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_physical_router")
+                                 rules="update_physical_router")
     @idempotent_id('c270f369-8cd7-4ee3-8ab1-4580c3138a5c')
     def test_update_physical_router(self):
         """
@@ -194,8 +199,9 @@
                 physical_router_uuid,
                 display_name=updated_fq_name)
 
+    @decorators.idempotent_id('7e92cc5c-1b2f-48cf-8b4d-499244866dff')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_physical_router")
+                                 rules="delete_physical_router")
     @idempotent_id('eeded742-6a8d-4e88-bfa8-fe32db463c53')
     def test_delete_physical_router(self):
         """
@@ -208,8 +214,9 @@
         with self.rbac_utils.override_role(self):
             self.router_client.delete_physical_router(physical_router_uuid)
 
+    @decorators.idempotent_id('964f0f98-5447-4eb7-b6ca-e1be9c57732e')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_bgp_routers")
+                                 rules="list_bgp_routers")
     @idempotent_id('49bfb461-f99e-4585-b051-e20a3c937589')
     def test_list_bgp_routers(self):
         """
@@ -218,8 +225,9 @@
         with self.rbac_utils.override_role(self):
             self.router_client.list_bgp_routers()
 
+    @decorators.idempotent_id('f44e0191-997e-410e-84e6-fc99c1b93598')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_bgp_routers")
+                                 rules="create_bgp_routers")
     @idempotent_id('7567974c-040e-4edd-b3a1-c633aa9651cb')
     def test_create_bgp_routers(self):
         """
@@ -230,8 +238,9 @@
         with self.rbac_utils.override_role(self):
             self._create_bgp_router(routing_instance)
 
+    @decorators.idempotent_id('a0eb42de-1a3d-47aa-a0d3-37ebb6614b41')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_bgp_router")
+                                 rules="show_bgp_router")
     @idempotent_id('0d3ad424-18c9-4d96-8708-fa1ebd45594b')
     def test_show_bgp_router(self):
         """
@@ -243,8 +252,9 @@
         with self.rbac_utils.override_role(self):
             self.router_client.show_bgp_router(bgp_router_uuid)
 
+    @decorators.idempotent_id('e28f5741-bce5-48d8-9933-d0e38b6a122e')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_bgp_router")
+                                 rules="update_bgp_router")
     @idempotent_id('dc50e7c5-7614-4281-8a66-282c52f3c769')
     def test_update_bgp_router(self):
         """
@@ -259,8 +269,9 @@
                 bgp_router_uuid,
                 display_name=updated_fq_name)
 
+    @decorators.idempotent_id('862b2de5-2660-4a2a-9732-d6ea3ab88eff')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_bgp_router")
+                                 rules="delete_bgp_router")
     @idempotent_id('f14aee72-cad4-4c3e-8eea-7886a81abb24')
     def test_delete_bgp_router(self):
         """
@@ -272,8 +283,9 @@
         with self.rbac_utils.override_role(self):
             self.router_client.delete_bgp_router(bgp_router_uuid)
 
+    @decorators.idempotent_id('73001d40-3127-4a99-a7d0-eb59f76fd35b')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_global_vrouter_configs")
+                                 rules="list_global_vrouter_configs")
     @idempotent_id('4af768d1-3cbe-4aff-bcbc-0e045cac3277')
     def test_list_global_vrouter(self):
         """
@@ -282,8 +294,9 @@
         with self.rbac_utils.override_role(self):
             self.router_client.list_global_vrouter_configs()
 
+    @decorators.idempotent_id('d37d7324-fc8a-43e0-825e-ed979341be3c')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_global_vrouter_configs")
+                                 rules="create_global_vrouter_configs")
     @idempotent_id('e13d800f-9304-4a06-9bf1-ad08345a13a8')
     def test_create_global_vrouter(self):
         """
@@ -294,8 +307,9 @@
         with self.rbac_utils.override_role(self):
             self._create_global_vrouter_config(global_system_config)
 
+    @decorators.idempotent_id('620294a4-a597-4881-836a-3cc08eb3c464')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_global_vrouter_config")
+                                 rules="show_global_vrouter_config")
     @idempotent_id('3bb6f4e1-fd3f-4338-8392-f7f80974a80e')
     def test_show_global_vrouter_config(self):
         """
@@ -309,8 +323,9 @@
             self.router_client.show_global_vrouter_config(
                 global_vrouter_config_uuid)
 
+    @decorators.idempotent_id('92fae487-86ab-492d-86fd-c06963ce5ea6')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_global_vrouter_config")
+                                 rules="update_global_vrouter_config")
     @idempotent_id('36fcdd51-c42b-4e67-8c26-73d4cde47507')
     def test_update_global_vrouter(self):
         """
@@ -327,8 +342,9 @@
                 global_vrouter_config_uuid,
                 display_name=updated_fq_name)
 
+    @decorators.idempotent_id('945f1ddd-d787-4d93-b156-ec86267a2aca')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_global_vrouter_config")
+                                 rules="delete_global_vrouter_config")
     @idempotent_id('4f3d59e8-3dac-4346-9d13-5ebe5ad8f6cf')
     def test_delete_global_vrouter(self):
         """
@@ -342,8 +358,9 @@
             self.router_client.delete_global_vrouter_config(
                 global_vrouter_config_uuid)
 
+    @decorators.idempotent_id('279dca60-f6e4-4dc2-8568-03d186e64086')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_logical_routers")
+                                 rules="list_logical_routers")
     @idempotent_id('674bf3de-a9e5-45c2-921b-b89db73a2abe')
     def test_list_logical_routers(self):
         """
@@ -352,8 +369,9 @@
         with self.rbac_utils.override_role(self):
             self.router_client.list_logical_routers()
 
+    @decorators.idempotent_id('e2a3bd03-4573-4676-90f6-9e66dd05dad6')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_logical_routers")
+                                 rules="create_logical_routers")
     @idempotent_id('610f051b-8eba-4d3a-ba43-91386bfc0e52')
     def test_create_logical_routers(self):
         """
@@ -362,8 +380,9 @@
         with self.rbac_utils.override_role(self):
             self._create_logical_router()
 
+    @decorators.idempotent_id('1c4274ce-31d7-45c7-94ab-7026d4c456d2')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_logical_router")
+                                 rules="show_logical_router")
     @idempotent_id('992841d4-0d5d-4d85-b513-049b33e2a2e2')
     def test_show_logical_router(self):
         """
@@ -373,8 +392,9 @@
         with self.rbac_utils.override_role(self):
             self.router_client.show_logical_router(logical_router_uuid)
 
+    @decorators.idempotent_id('6faeb2a2-e833-4d39-9db1-0e06b0507f0b')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_logical_router")
+                                 rules="update_logical_router")
     @idempotent_id('518197bf-5233-4059-9021-5d7ecc74718e')
     def test_update_logical_router(self):
         """
@@ -387,8 +407,9 @@
                 logical_router_uuid,
                 display_name=updated_fq_name)
 
+    @decorators.idempotent_id('4ff3591c-f57f-4842-b74a-c0a2b8171c3f')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_logical_router")
+                                 rules="delete_logical_router")
     @idempotent_id('70448b9c-4444-45e0-b307-7bff4dc075b1')
     def test_delete_logical_router(self):
         """
@@ -398,8 +419,9 @@
         with self.rbac_utils.override_role(self):
             self.router_client.delete_logical_router(logical_router_uuid)
 
+    @decorators.idempotent_id('5662ac7f-5a18-476d-a3c9-cc7c784f9dfa')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_virtual_routers")
+                                 rules="list_virtual_routers")
     @idempotent_id('604dc476-732e-4890-8665-a497360f5475')
     def test_list_virtual_routers(self):
         """
@@ -408,8 +430,9 @@
         with self.rbac_utils.override_role(self):
             self.router_client.list_virtual_routers()
 
+    @decorators.idempotent_id('6d2b364c-cdb8-4de1-bc15-5f7d0b1533d2')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_virtual_routers")
+                                 rules="create_virtual_routers")
     @idempotent_id('114beb14-45c0-4714-a407-d160bb102022')
     def test_create_virtual_routers(self):
         """
@@ -420,8 +443,9 @@
         with self.rbac_utils.override_role(self):
             self._create_virtual_router(global_system_config)
 
+    @decorators.idempotent_id('d9319e7f-8811-43e5-93ce-734ac7fb4f79')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_virtual_router")
+                                 rules="show_virtual_router")
     @idempotent_id('258fe4e0-3e39-460f-aafa-e3b53c96e534')
     def test_show_virtual_router(self):
         """
@@ -434,8 +458,9 @@
         with self.rbac_utils.override_role(self):
             self.router_client.show_virtual_router(virtual_router_uuid)
 
+    @decorators.idempotent_id('4baa6195-bacd-4211-ab93-abd6ebbfe5d6')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_virtual_router")
+                                 rules="update_virtual_router")
     @idempotent_id('d1c72191-2068-4552-a78f-038cdd4c9c1d')
     def test_update_virtual_router(self):
         """
@@ -451,8 +476,9 @@
                 virtual_router_uuid,
                 display_name=updated_fq_name)
 
+    @decorators.idempotent_id('bb7e4a21-1c8a-4a38-997c-612de0a4ee53')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_virtual_router")
+                                 rules="delete_virtual_router")
     @idempotent_id('efbe25d6-8763-42d4-baf6-9f342e710144')
     def test_delete_virtual_router(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_routing.py b/tungsten_tempest_plugin/tests/api/contrail/test_routing.py
index 37d61e0..ef7f60f 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_routing.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_routing.py
@@ -22,6 +22,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -61,8 +62,9 @@
                         new_instance['uuid'])
         return new_instance
 
+    @decorators.idempotent_id('cf5756c7-8ae5-407f-bb71-7b8b764abbc9')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_routing_instances")
+                                 rules="list_routing_instances")
     @idempotent_id('054c56ba-76b2-4161-a702-40301d8de085')
     def test_list_routing_instances(self):
         """
@@ -71,8 +73,9 @@
         with self.rbac_utils.override_role(self):
             self.routing_client.list_routing_instances()
 
+    @decorators.idempotent_id('7a600d00-90da-4cc9-899b-74d00b190555')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_routing_instances")
+                                 rules="create_routing_instances")
     @idempotent_id('3d44a46b-5436-43a8-b2f7-8581f0f04dbc')
     def test_create_routing_instances(self):
         """
@@ -81,8 +84,9 @@
         with self.rbac_utils.override_role(self):
             self._create_routing_instances()
 
+    @decorators.idempotent_id('540e94a6-7207-47aa-b91b-5783a72641b7')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_routing_instance")
+                                 rules="show_routing_instance")
     @idempotent_id('161abb37-6037-422b-b453-108a5d10caca')
     def test_show_routing_instance(self):
         """
@@ -92,8 +96,9 @@
         with self.rbac_utils.override_role(self):
             self.routing_client.show_routing_instance(new_instance['uuid'])
 
+    @decorators.idempotent_id('7fc442a3-94b9-4fe9-8d12-165abaa98c88')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_routing_instance")
+                                 rules="delete_routing_instance")
     @idempotent_id('1d3af01e-01bf-4347-a9bc-633732339e0e')
     def test_delete_routing_instance(self):
         """
@@ -103,8 +108,9 @@
         with self.rbac_utils.override_role(self):
             self.routing_client.delete_routing_instance(new_instance['uuid'])
 
+    @decorators.idempotent_id('244815c9-409e-41fa-af70-64f6889b9219')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_routing_instance")
+                                 rules="update_routing_instance")
     @idempotent_id('ebcfd442-2a26-4954-968b-e17e414ed0d1')
     def test_update_routing_instance(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_routing_policy.py b/tungsten_tempest_plugin/tests/api/contrail/test_routing_policy.py
index d1dd443..425eb90 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_routing_policy.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_routing_policy.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -58,8 +59,9 @@
         self.routing_policy_client.update_routing_policy(routing_policy_uuid,
                                                          **put_body)
 
+    @decorators.idempotent_id('a430e541-59a4-4c9a-8fe2-1a82701b6377')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_routing_policys")
+                                 rules="list_routing_policys")
     @idempotent_id('fe25a306-bc4f-42b3-91ca-38df01e35345')
     def test_list_routing_policys(self):
         """
@@ -68,8 +70,9 @@
         with self.rbac_utils.override_role(self):
             self.routing_policy_client.list_routing_policys()
 
+    @decorators.idempotent_id('47b668c8-f2d3-4713-be33-5345ca22c2e8')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_routing_policys")
+                                 rules="create_routing_policys")
     @idempotent_id('f8ca5e30-8bb3-410f-8618-8fdca70bda06')
     def test_create_routing_policys(self):
         """
@@ -78,8 +81,9 @@
         with self.rbac_utils.override_role(self):
             self._create_routing_policy()
 
+    @decorators.idempotent_id('66b8679d-66f9-4ccf-b54b-4c1d2de32615')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_routing_policy")
+                                 rules="show_routing_policy")
     @idempotent_id('3421e84e-3e2a-452a-9a26-b2caf00b1cbc')
     def test_show_routing_policy(self):
         """
@@ -89,8 +93,9 @@
         with self.rbac_utils.override_role(self):
             self.routing_policy_client.show_routing_policy(policy_uuid)
 
+    @decorators.idempotent_id('99490df1-10ea-4b2c-89c2-fef6406d0156')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_routing_policy")
+                                 rules="update_routing_policy")
     @idempotent_id('9fc1f44f-c8e2-4f5a-8239-e9b783f55d94')
     def test_update_routing_policy(self):
         """
@@ -100,8 +105,9 @@
         with self.rbac_utils.override_role(self):
             self._update_routing_policy(policy_uuid)
 
+    @decorators.idempotent_id('092d54ea-1954-4111-b4aa-61d534e8f1f1')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_routing_policy")
+                                 rules="delete_routing_policy")
     @idempotent_id('24f1cd7a-2917-4b81-a0a3-a40ed2d40c7d')
     def test_delete_routing_policy(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_security_group.py b/tungsten_tempest_plugin/tests/api/contrail/test_security_group.py
index f0973d2..357d071 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_security_group.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_security_group.py
@@ -23,6 +23,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -54,8 +55,9 @@
                         sec_grp['uuid'])
         return sec_grp
 
+    @decorators.idempotent_id('d0dd9b3c-c303-443a-a07e-072242b2952d')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_security_groups")
+                                 rules="list_security_groups")
     @idempotent_id('a13cc1d5-f562-4b68-b732-980deb3cddf4')
     def test_list_security_groups(self):
         """
@@ -65,8 +67,9 @@
         with self.rbac_utils.override_role(self):
             self.security_group_client.list_security_groups()
 
+    @decorators.idempotent_id('d7bc3044-83dd-4d8b-9010-028a95b45385')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_security_group")
+                                 rules="show_security_group")
     @idempotent_id('c7ca1781-08ae-4fa2-bd6d-1f369950c4c4')
     def test_show_security_group(self):
         """
@@ -77,8 +80,9 @@
         with self.rbac_utils.override_role(self):
             self.security_group_client.show_security_group(grp_id)
 
+    @decorators.idempotent_id('19da2264-a5c0-46b5-92d8-5a1c6ab88d14')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_security_group")
+                                 rules="delete_security_group")
     @idempotent_id('e682d7b4-deb8-4b5c-9c9b-1e1ada827b40')
     def test_delete_security_group(self):
         """
@@ -89,8 +93,9 @@
         with self.rbac_utils.override_role(self):
             self._delete_security_group(grp_id)
 
+    @decorators.idempotent_id('8f461d8b-298a-4f89-be5c-272aec14fb95')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_security_groups")
+                                 rules="create_security_groups")
     @idempotent_id('63a2ff14-7869-40a2-962a-d65752de5651')
     def test_create_security_groups(self):
         """
@@ -99,8 +104,9 @@
         with self.rbac_utils.override_role(self):
             self._create_security_groups()
 
+    @decorators.idempotent_id('056b5529-41e0-4d77-9c67-6ffc6e6bc2cb')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_security_group")
+                                 rules="update_security_group")
     @idempotent_id('cf9aafe2-fffb-4028-8fd7-4d6634e144e7')
     def test_update_security_group(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_service_appliances.py b/tungsten_tempest_plugin/tests/api/contrail/test_service_appliances.py
index 46dc15c..5ae7210 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_service_appliances.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_service_appliances.py
@@ -22,6 +22,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -75,8 +76,9 @@
                         new_appliance['uuid'])
         return new_appliance
 
+    @decorators.idempotent_id('6376afa3-7917-4396-8aff-d821592b4f2c')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_service_appliances")
+                                 rules="list_service_appliances")
     @idempotent_id('6b5fc17c-34e6-4d21-a53e-a0dfe69afd31')
     def test_list_service_appliances(self):
         """
@@ -85,8 +87,9 @@
         with self.rbac_utils.override_role(self):
             self.service_appliances_client.list_service_appliances()
 
+    @decorators.idempotent_id('a9f1ccc9-b1fd-4ace-96ae-43c3912f0cfc')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_service_appliances")
+                                 rules="create_service_appliances")
     @idempotent_id('0563c0c8-b986-466e-8540-aa8ad7a10367')
     def test_create_service_appliances(self):
         """
@@ -99,8 +102,9 @@
         with self.rbac_utils.override_role(self):
             self._create_service_appliances(new_set)
 
+    @decorators.idempotent_id('247d0ed3-3cdc-4878-b637-80b8f65eb3a1')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_service_appliance")
+                                 rules="show_service_appliance")
     @idempotent_id('ea30dcfe-8657-4a7d-9cf1-3176d334bf27')
     def test_show_service_appliance(self):
         """
@@ -116,8 +120,9 @@
             self.service_appliances_client.show_service_appliance(
                 new_appliance['uuid'])
 
+    @decorators.idempotent_id('142fd7b3-f79c-46a8-b60f-51a3380a9f3b')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_service_appliance")
+                                 rules="update_service_appliance")
     @idempotent_id('a54ca33a-8590-4844-96d7-b96882b59e86')
     def test_update_service_appliance(self):
         """
@@ -134,8 +139,9 @@
                 new_appliance['uuid'],
                 display_name=update_name)
 
+    @decorators.idempotent_id('2e9d6bb8-e616-445b-b87b-1e7e7f5387b7')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_service_appliance")
+                                 rules="delete_service_appliance")
     @idempotent_id('362deff5-7b72-4929-ba81-972cfcfa1309')
     def test_delete_service_appliance(self):
         """
@@ -150,8 +156,9 @@
             self.service_appliances_client.delete_service_appliance(
                 new_appliance['uuid'])
 
+    @decorators.idempotent_id('4fec3bd7-1c7b-46ba-8b29-228a6dc35592')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_service_appliance_sets")
+                                 rules="list_service_appliance_sets")
     @idempotent_id('c1e74da9-00b6-4c88-adda-2ce49094e570')
     def test_list_service_appl_sets(self):
         """
@@ -160,8 +167,9 @@
         with self.rbac_utils.override_role(self):
             self.service_appliances_client.list_service_appliance_sets()
 
+    @decorators.idempotent_id('c0647738-11fd-4c73-846b-1d54aff2eef8')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_service_appliance_sets")
+                                 rules="create_service_appliance_sets")
     @idempotent_id('eb00d6cf-590f-41bf-8ee4-5be625d9cb93')
     def test_create_service_appl_sets(self):
         """
@@ -172,8 +180,9 @@
         with self.rbac_utils.override_role(self):
             self._create_service_appliance_sets(global_system_config)
 
+    @decorators.idempotent_id('f27d4f96-9db6-4a97-8dbf-75ba14c08ae3')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_service_appliance_set")
+                                 rules="show_service_appliance_set")
     @idempotent_id('dd35dd04-e7d9-46bb-8f36-26835f122572')
     def test_show_service_appl_set(self):
         """
@@ -187,8 +196,9 @@
             self.service_appliances_client.show_service_appliance_set(
                 new_set['uuid'])
 
+    @decorators.idempotent_id('64ad1226-bbd5-4322-8534-e3eb98413e6c')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_service_appliance_set")
+                                 rules="update_service_appliance_set")
     @idempotent_id('952f063b-bc71-4f62-83b1-719bce5ad4ed')
     def test_update_service_appl_set(self):
         """
@@ -204,8 +214,9 @@
                 new_set['uuid'],
                 display_name=update_name)
 
+    @decorators.idempotent_id('6bbd4831-76cf-492e-9908-7405f694889b')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_service_appliance_set")
+                                 rules="delete_service_appliance_set")
     @idempotent_id('7b56ce24-da1d-4565-bd22-c58dc57d7045')
     def test_delete_service_appl_set(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_service_clients.py b/tungsten_tempest_plugin/tests/api/contrail/test_service_clients.py
index 8d65159..083db8a 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_service_clients.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_service_clients.py
@@ -22,6 +22,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -86,8 +87,9 @@
                         new_instance['uuid'])
         return new_instance
 
+    @decorators.idempotent_id('eb4240b1-f23d-4392-a1c1-9930f1f73a75')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_service_templates")
+                                 rules="list_service_templates")
     @idempotent_id('841b1d32-4308-4fb6-852a-41bdd8c56c37')
     def test_list_service_templates(self):
         """
@@ -96,8 +98,9 @@
         with self.rbac_utils.override_role(self):
             self.service_client.list_service_templates()
 
+    @decorators.idempotent_id('82f66ebb-d7cd-43b0-ae43-6e86286257ad')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_service_templates")
+                                 rules="create_service_templates")
     @idempotent_id('3f02d14a-31e2-4476-821f-87d0cc42d9fb')
     def test_create_service_templates(self):
         """
@@ -106,8 +109,9 @@
         with self.rbac_utils.override_role(self):
             self._create_service_template()
 
+    @decorators.idempotent_id('8e71e3b9-add0-4424-95d8-4337676150f2')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_service_template")
+                                 rules="show_service_template")
     @idempotent_id('1f15d734-2cc6-4ded-916e-134286c6b87b')
     def test_show_service_template(self):
         """
@@ -118,8 +122,9 @@
             self.service_client.show_service_template(
                 new_template['uuid'])
 
+    @decorators.idempotent_id('25a069fd-f606-435c-90c2-8b7ad0251edb')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_service_template")
+                                 rules="update_service_template")
     @idempotent_id('3549debd-4c7a-4574-8d11-4190c8530a23')
     def test_update_service_template(self):
         """
@@ -132,8 +137,9 @@
                 new_template['uuid'],
                 display_name=update_name)
 
+    @decorators.idempotent_id('1fba953d-4d45-43a5-8a49-2413da11ab01')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_service_template")
+                                 rules="delete_service_template")
     @idempotent_id('e86cabd2-5b7e-4ee8-86ec-db52619b852b')
     def test_delete_service_template(self):
         """
@@ -144,8 +150,9 @@
             self.service_client.delete_service_template(
                 new_template['uuid'])
 
+    @decorators.idempotent_id('60c7ea73-c6c3-4d3a-805e-d05a33f73900')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_service_health_checks")
+                                 rules="list_service_health_checks")
     @idempotent_id('5210d6ca-9a38-4b6b-b5b7-f836c3846079')
     def test_list_service_health_checks(self):
         """
@@ -154,8 +161,9 @@
         with self.rbac_utils.override_role(self):
             self.service_client.list_service_health_checks()
 
+    @decorators.idempotent_id('2ddf84ab-9fff-41d6-a05b-7fb37b4bb089')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_service_health_checks")
+                                 rules="create_service_health_checks")
     @idempotent_id('77716feb-0d05-4cfd-8a17-79cf0b19ed3c')
     def test_create_service_health(self):
         """
@@ -164,8 +172,9 @@
         with self.rbac_utils.override_role(self):
             self._create_service_health_check()
 
+    @decorators.idempotent_id('413495a3-862d-462a-a104-357adf79ce23')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_service_health_check")
+                                 rules="show_service_health_check")
     @idempotent_id('80db4445-8d6c-4c8f-aa25-d4ea53d32d2c')
     def test_show_service_health(self):
         """
@@ -176,8 +185,9 @@
             self.service_client.show_service_health_check(
                 new_health_check['uuid'])
 
+    @decorators.idempotent_id('2ddd130c-c82c-4151-b9b8-3cee47c57f6e')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_service_health_check")
+                                 rules="update_service_health_check")
     @idempotent_id('68fb1510-4b76-40cc-8979-e56e537229d2')
     def test_update_service_health(self):
         """
@@ -190,8 +200,9 @@
                 new_health_check['uuid'],
                 display_name=update_name)
 
+    @decorators.idempotent_id('59f465da-ae3b-4e5f-af59-ca9dc344a719')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_service_health_check")
+                                 rules="delete_service_health_check")
     @idempotent_id('2dce3942-402a-48a4-b682-fdc425d3d935')
     def test_delete_service_health(self):
         """
@@ -202,8 +213,9 @@
             self.service_client.delete_service_health_check(
                 new_health_check['uuid'])
 
+    @decorators.idempotent_id('191bb3bd-d2ae-4119-bf43-55e791eb7290')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_service_instances")
+                                 rules="create_service_instances")
     @idempotent_id('1469c71e-f6f5-419f-9672-c3c67f879704')
     def test_create_service_instances(self):
         """
@@ -212,8 +224,9 @@
         with self.rbac_utils.override_role(self):
             self._create_service_instance()
 
+    @decorators.idempotent_id('7e51b554-4e63-450a-aee7-315a554d3834')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_service_instance")
+                                 rules="show_service_instance")
     @idempotent_id('ea5b716d-5de8-4c71-becd-f1501c22f0df')
     def test_show_service_instance(self):
         """
@@ -224,8 +237,9 @@
             self.service_client.show_service_instance(
                 new_instance['uuid'])
 
+    @decorators.idempotent_id('b0e3783a-eb2e-4769-ad3b-0b9aa4b78579')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_service_instance")
+                                 rules="delete_service_instance")
     @idempotent_id('74934833-29cd-416b-a5a6-273f733d058a')
     def test_delete_service_instance(self):
         """
@@ -236,8 +250,9 @@
             self.service_client.delete_service_instance(
                 new_instance['uuid'])
 
+    @decorators.idempotent_id('88d2ea08-96c6-4d76-baca-4b53ae969844')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_service_instances")
+                                 rules="list_service_instances")
     @idempotent_id('da6016a3-a2a8-42a8-b064-c124c22fef6f')
     def test_list_service_instances(self):
         """
@@ -246,8 +261,9 @@
         with self.rbac_utils.override_role(self):
             self.service_client.list_service_instances()
 
+    @decorators.idempotent_id('7f4a6eca-81ab-4e05-aa7c-148c78b6b811')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_service_instance")
+                                 rules="update_service_instance")
     @idempotent_id('a6237b99-336b-42db-a8eb-9604a1b08fc6')
     def test_update_service_instance(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_subnet.py b/tungsten_tempest_plugin/tests/api/contrail/test_subnet.py
index 211aaf6..1dc74c7 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_subnet.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_subnet.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -55,8 +56,9 @@
         }
         self.subnet_client.update_subnet(subnet_uuid, **put_body)
 
+    @decorators.idempotent_id('8f33c6bf-dbe5-4d05-9509-2b90b3041c88')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_subnets")
+                                 rules="list_subnets")
     @idempotent_id('ddd1d9ae-cf2f-4a74-98ba-b0f481f27977')
     def test_list_subnets(self):
         """
@@ -65,8 +67,9 @@
         with self.rbac_utils.override_role(self):
             self.subnet_client.list_subnets()
 
+    @decorators.idempotent_id('c6e33c0b-96c5-4140-a18b-93d53f3f5f96')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_subnets")
+                                 rules="create_subnets")
     @idempotent_id('ee0cb904-d162-44a4-b7b0-a7451f667ed5')
     def test_create_subnets(self):
         """
@@ -75,8 +78,9 @@
         with self.rbac_utils.override_role(self):
             self._create_subnet()
 
+    @decorators.idempotent_id('7535dc07-e9a8-4d41-afb3-da3ff0c5a99d')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_subnet")
+                                 rules="show_subnet")
     @idempotent_id('994618f2-5b40-460c-a6a8-6479bc15bf80')
     def test_show_subnet(self):
         """
@@ -86,8 +90,9 @@
         with self.rbac_utils.override_role(self):
             self.subnet_client.show_subnet(subnet_uuid)
 
+    @decorators.idempotent_id('08f6c060-fce1-410c-818b-7bb34a4c0ffb')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_subnet")
+                                 rules="update_subnet")
     @idempotent_id('565e44c9-eb9b-4ae6-9ebb-db422a9751ee')
     def test_update_subnet(self):
         """
@@ -97,8 +102,9 @@
         with self.rbac_utils.override_role(self):
             self._update_subnet(subnet_uuid)
 
+    @decorators.idempotent_id('03d994c2-dddb-4597-b931-9cb04a145622')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_subnet")
+                                 rules="delete_subnet")
     @idempotent_id('a733b913-7a88-45d9-ac0a-d858fa3dc662')
     def test_delete_subnet(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_dns.py b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_dns.py
index 5974c8c..6124e38 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_dns.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_dns.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -76,8 +77,9 @@
                         dns_record['virtual-DNS-record']['uuid'])
         return dns_record
 
+    @decorators.idempotent_id('0efa3a9e-42da-4cfe-ae7f-c216220cc3a8')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_virtual_DNSs")
+                                 rules="list_virtual_DNSs")
     @idempotent_id('8401d690-afdf-4b6e-ad60-b9363a8cfb1d')
     def test_list_virtual_dns(self):
         """
@@ -86,8 +88,9 @@
         with self.rbac_utils.override_role(self):
             self.virtual_dns_client.list_virtual_dns()
 
+    @decorators.idempotent_id('92221008-5ccf-4f04-ac9a-64082bf6d545')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_virtual_DNSs")
+                                 rules="create_virtual_DNSs")
     @idempotent_id('a7dd2c9e-e1eb-4dc4-ac70-4d48a291a3bf')
     def test_create_virtual_dns(self):
         """
@@ -96,8 +99,9 @@
         with self.rbac_utils.override_role(self):
             self._create_virtual_dns()
 
+    @decorators.idempotent_id('3581ee83-498c-4d57-b0b4-079a6e197b00')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_virtual_DNS")
+                                 rules="show_virtual_DNS")
     @idempotent_id('ffc0fc82-3bff-48ab-b65a-3d90b4a3154d')
     def test_show_virtual_dns(self):
         """
@@ -108,8 +112,9 @@
             self.virtual_dns_client.show_virtual_dns(
                 dns['virtual-DNS']['uuid'])
 
+    @decorators.idempotent_id('e96aa8ba-4ece-4aed-b644-9dd120bfebba')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_virtual_DNS")
+                                 rules="delete_virtual_DNS")
     @idempotent_id('4793caa1-7707-4123-b1b4-c3feae91312f')
     def test_delete_virtual_dns(self):
         """
@@ -120,8 +125,9 @@
             self.virtual_dns_client.delete_virtual_dns(
                 dns['virtual-DNS']['uuid'])
 
+    @decorators.idempotent_id('30abbf69-f415-42a7-b48e-05dd04d86054')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_virtual_DNS")
+                                 rules="update_virtual_DNS")
     @idempotent_id('2bc43935-57c1-4bf6-9868-78ccfce164bb')
     def test_update_virtual_dns(self):
         """
@@ -138,8 +144,9 @@
                 virtual_DNS_data=virtual_dns_data,
                 display_name=display_name)
 
+    @decorators.idempotent_id('dc10131d-d432-4251-bc95-dae08f0fd865')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_virtual_DNS_records")
+                                 rules="list_virtual_DNS_records")
     @idempotent_id('e9103999-2f02-4f04-a8a0-906ca4fb394d')
     def test_list_virtual_dns_records(self):
         """
@@ -148,8 +155,9 @@
         with self.rbac_utils.override_role(self):
             self.virtual_dns_client.list_virtual_dns_records()
 
+    @decorators.idempotent_id('60923321-d8d7-442e-8a8f-97a0669a9440')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_virtual_DNS_records")
+                                 rules="create_virtual_DNS_records")
     @idempotent_id('bd9f3992-0ce4-4477-97a0-1271bc8ad9ef')
     def test_create_virtual_dns_records(self):
         """
@@ -160,8 +168,9 @@
         with self.rbac_utils.override_role(self):
             self._create_virtual_dns_record(dns)
 
+    @decorators.idempotent_id('53b57fa1-6834-42ae-8e5d-b4059bfdc533')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_virtual_DNS_record")
+                                 rules="show_virtual_DNS_record")
     @idempotent_id('fa3d1a2b-d788-4623-89a4-3a9ed1db7a7d')
     def test_show_virtual_dns_record(self):
         """
@@ -174,8 +183,9 @@
             self.virtual_dns_client.show_virtual_dns_record(
                 dns_record['virtual-DNS-record']['uuid'])
 
+    @decorators.idempotent_id('51946356-0d9e-47a7-a6c2-748160ccd09a')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_virtual_DNS_record")
+                                 rules="delete_virtual_DNS_record")
     @idempotent_id('de31e867-c997-4b4c-a095-43c647f5c192')
     def test_delete_virtual_dns_record(self):
         """
@@ -188,8 +198,9 @@
             self.virtual_dns_client.delete_virtual_dns_record(
                 dns_record['virtual-DNS-record']['uuid'])
 
+    @decorators.idempotent_id('0b5e0c65-b494-4cd0-9c6b-31871afd0459')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_virtual_DNS_record")
+                                 rules="update_virtual_DNS_record")
     @idempotent_id('65acef26-646f-4b36-923c-8a1d07e90c5c')
     def test_update_virtual_dns_record(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_ip.py b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_ip.py
index 0f229a6..f3805d9 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_ip.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_ip.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -56,8 +57,9 @@
         }
         self.virtual_ip_client.update_virtual_ip(virtual_ip_uuid, **put_body)
 
+    @decorators.idempotent_id('727c2b91-5a46-45ab-8c17-9c57db3c2ec0')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_virtual_ips")
+                                 rules="list_virtual_ips")
     @idempotent_id('92303eee-bd96-48bc-a02c-39950bd19a21')
     def test_list_virtual_ips(self):
         """
@@ -66,8 +68,9 @@
         with self.rbac_utils.override_role(self):
             self.virtual_ip_client.list_virtual_ips()
 
+    @decorators.idempotent_id('f49281de-9b72-4309-bb27-f39a35d0c089')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_virtual_ips")
+                                 rules="create_virtual_ips")
     @idempotent_id('e0070888-995d-46ab-91fc-db1412eba2f7')
     def test_create_virtual_ips(self):
         """
@@ -76,8 +79,9 @@
         with self.rbac_utils.override_role(self):
             self._create_virtual_ip()
 
+    @decorators.idempotent_id('55eca817-1a06-47f9-8a74-c25059ce577a')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_virtual_ip")
+                                 rules="show_virtual_ip")
     @idempotent_id('2a4b3abd-c6f7-4d82-aa31-02e53d2a8fb9')
     def test_show_virtual_ip(self):
         """
@@ -87,8 +91,9 @@
         with self.rbac_utils.override_role(self):
             self.virtual_ip_client.show_virtual_ip(virtual_ip_uuid)
 
+    @decorators.idempotent_id('d3c15795-efbf-4f7c-912b-565ca0b922aa')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_virtual_ip")
+                                 rules="update_virtual_ip")
     @idempotent_id('0e975c92-62dc-4e6e-82cc-8cf37da3c5b2')
     def test_update_virtual_ip(self):
         """
@@ -98,8 +103,9 @@
         with self.rbac_utils.override_role(self):
             self._update_virtual_ip(virtual_ip_uuid)
 
+    @decorators.idempotent_id('c6a801f0-229e-4b34-a5fe-8643896af7ad')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_virtual_ip")
+                                 rules="delete_virtual_ip")
     @idempotent_id('fd0b2635-36bd-4345-97b7-9c0a57372eba')
     def test_delete_virtual_ip(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_machines.py b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_machines.py
index ae54c78..1a28c0b 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_machines.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_machines.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -103,8 +104,9 @@
                                  cls.ipam['uuid'])
         super(VMContrailTest, cls).resource_cleanup()
 
+    @decorators.idempotent_id('7ec8a994-ffd5-487f-a60c-c2c485ed2034')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_virtual_machine_interfaces")
+                                 rules="list_virtual_machine_interfaces")
     @idempotent_id('e27d1fae-7324-4ef3-87b1-e7f519b1e2a7')
     def test_list_vm_interfaces(self):
         """
@@ -114,8 +116,9 @@
         with self.rbac_utils.override_role(self):
             self.vm_client.list_virtual_machine_interfaces()
 
+    @decorators.idempotent_id('122de483-2186-4548-bdec-6288360b2ff1')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_virtual_machine_interfaces")
+                                 rules="create_virtual_machine_interfaces")
     @idempotent_id('d8a3a524-d61b-4bcb-8146-c5d4f308df8e')
     def test_add_vm_interfaces(self):
         """
@@ -124,8 +127,9 @@
         with self.rbac_utils.override_role(self):
             self._create_virual_machine_interface()
 
+    @decorators.idempotent_id('f71b4312-36ac-4cc0-8c15-2693432f3b1e')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_virtual_machine_interface")
+                                 rules="show_virtual_machine_interface")
     @idempotent_id('3f17125a-9060-4c4a-a23f-0fe2aba2ccef')
     def test_show_vm_interface(self):
         """
@@ -135,8 +139,9 @@
         with self.rbac_utils.override_role(self):
             self.vm_client.show_virtual_machine_interface(test['uuid'])
 
+    @decorators.idempotent_id('1fc77746-c77c-4182-bfb3-a37b9220c43c')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_virtual_machine_interface")
+                                 rules="delete_virtual_machine_interface")
     @idempotent_id('ce7f9471-ba1b-40d2-94f1-bdd0c610e22f')
     def test_delete_vm_interface(self):
         """
@@ -146,8 +151,9 @@
         with self.rbac_utils.override_role(self):
             self.vm_client.delete_vm_interface(body['uuid'])
 
+    @decorators.idempotent_id('bad1b37b-0020-406b-9eeb-77c909c4d1ea')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_virtual_machine_interface")
+                                 rules="update_virtual_machine_interface")
     @idempotent_id('7ca3046a-6245-4c15-914b-5a8ecdbeee11')
     def test_update_vm_interface(self):
         """
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_networks.py b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_networks.py
index 9e91164..5f416b2 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_networks.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_networks.py
@@ -24,6 +24,7 @@
 from patrole_tempest_plugin import rbac_rule_validation
 
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib.common.utils import data_utils
 from tempest.lib.decorators import idempotent_id
 
@@ -70,8 +71,9 @@
                         network['uuid'])
         return network
 
+    @decorators.idempotent_id('fac38c07-b603-4b20-af66-3288a52cb5ea')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="list_virtual_networks")
+                                 rules="list_virtual_networks")
     @idempotent_id('375ebc8d-dc52-4d9c-877b-85aba35b1539')
     def test_list_virtual_networks(self):
         """
@@ -80,8 +82,9 @@
         with self.rbac_utils.override_role(self):
             self.vn_client.list_virtual_networks()
 
+    @decorators.idempotent_id('d0f3035d-5761-4b99-accc-a56a62682fca')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="create_virtual_networks")
+                                 rules="create_virtual_networks")
     @idempotent_id('375ebc8d-dc52-4d9c-877b-96aba35b2530')
     def test_create_virtual_networks(self):
         """
@@ -90,8 +93,9 @@
         with self.rbac_utils.override_role(self):
             self._create_virtual_network()
 
+    @decorators.idempotent_id('abd79717-9b8e-4047-9412-53b1ee7673e7')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="update_virtual_network")
+                                 rules="update_virtual_network")
     @idempotent_id('375ebc8d-dc52-4d9c-566b-150a025c1237')
     def test_update_virtual_network(self):
         """
@@ -103,8 +107,9 @@
             self.vn_client.update_virtual_network(
                 uuid, router_external=False)
 
+    @decorators.idempotent_id('7df9df6a-2840-44e7-abca-41770d141992')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="delete_virtual_network")
+                                 rules="delete_virtual_network")
     @idempotent_id('375ebc8d-dc52-4d9c-877b-17bcb53c3641')
     def test_delete_virtual_network(self):
         """
@@ -114,8 +119,9 @@
         with self.rbac_utils.override_role(self):
             self.vn_client.delete_virtual_network(uuid)
 
+    @decorators.idempotent_id('39c1bea6-9f2f-4920-850b-be01cd0a4014')
     @rbac_rule_validation.action(service="Contrail",
-                                 rule="show_virtual_network")
+                                 rules="show_virtual_network")
     @idempotent_id('375ebc8d-dc52-4d9c-877b-27c1a1242a81')
     def test_show_virtual_network(self):
         """
