diff --git a/.gitreview b/.gitreview
new file mode 100644
index 0000000..e4aaefb
--- /dev/null
+++ b/.gitreview
@@ -0,0 +1,4 @@
+[gerrit]
+host=gerrit.mcp.mirantis.com
+port=29418
+project=contrail/tungsten-tempest
diff --git a/tungsten_tempest_plugin/config.py b/tungsten_tempest_plugin/config.py
index 4fd1bb7..620c36a 100644
--- a/tungsten_tempest_plugin/config.py
+++ b/tungsten_tempest_plugin/config.py
@@ -27,6 +27,9 @@
                          title='SDN service options')
 
 SDNGroup = [
+    cfg.StrOpt('service_name',
+               default='Contrail',
+               help="Name of contrail service in keystone catalog"),
     cfg.StrOpt('endpoint_type',
                default='publicURL',
                choices=['public', 'admin', 'internal',
diff --git a/tungsten_tempest_plugin/tests/api/contrail/rbac_base.py b/tungsten_tempest_plugin/tests/api/contrail/rbac_base.py
index 527eb97..5a1fbd8 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/rbac_base.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/rbac_base.py
@@ -121,16 +121,18 @@
         super(BaseContrailTest, cls).skip_checks()
         if not CONF.service_available.contrail:
             raise cls.skipException("Contrail support is required")
-        if not CONF.patrole.enable_rbac:
-            raise cls.skipException(
-                "%s skipped as RBAC Flag not enabled" % cls.__name__)
-        if CONF.auth.tempest_roles != ['admin']:
+        if "admin" not in CONF.auth.tempest_roles:
             raise cls.skipException(
                 "%s skipped because tempest roles is not admin" % cls.__name__)
         if cls.required_contrail_version:
             cls.skip_if_contrail_version_less(cls.required_contrail_version)
 
     @classmethod
+    def get_auth_providers(cls):
+        auth_provider = getattr(cls, 'auth_provider', None)
+        return [auth_provider] if auth_provider is not None else []
+
+    @classmethod
     def setup_clients(cls):
         super(BaseContrailTest, cls).setup_clients()
         cls.auth_provider = cls.os_primary.auth_provider
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 6a2c817..c95c349 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_access_control.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_access_control.py
@@ -73,7 +73,7 @@
                         new_ctrl_list['uuid'])
         return new_ctrl_list
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_api_access_lists"])
     @decorators.idempotent_id('2bfde8fd-36fe-4e69-ba59-6f2db8941e7d')
     def test_list_api_access_lists(self):
@@ -81,7 +81,7 @@
         with self.rbac_utils.override_role(self):
             self.access_control_client.list_api_access_lists()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_api_access_lists"])
     @decorators.idempotent_id('b2b5f50c-07d8-4d79-b9a4-78187ad97353')
     def test_create_api_access_lists(self):
@@ -89,7 +89,7 @@
         with self.rbac_utils.override_role(self):
             self._create_api_access_lists()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_api_access_list"])
     @decorators.idempotent_id('b82e8e6b-83b5-424d-9652-ef6a34067f4f')
     def test_show_api_access_list(self):
@@ -99,7 +99,7 @@
             self.access_control_client.show_api_access_list(
                 new_api_list['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_api_access_list"])
     @decorators.idempotent_id('edc88825-1e2e-47ff-b7b4-f68d6310fbad')
     def test_update_api_access_list(self):
@@ -111,7 +111,7 @@
                 new_api_list['uuid'],
                 display_name=update_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_api_access_list"])
     @decorators.idempotent_id('f27d9044-95f2-4733-81ed-df9340dbd421')
     def test_delete_api_access_list(self):
@@ -121,7 +121,7 @@
             self.access_control_client.delete_api_access_list(
                 new_api_list['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_access_control_lists"])
     @decorators.idempotent_id('c56a1338-a9d1-4286-8aeb-3a0d60d93037')
     def test_list_access_control_lists(self):
@@ -129,7 +129,7 @@
         with self.rbac_utils.override_role(self):
             self.access_control_client.list_access_control_lists()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_access_control_lists"])
     @decorators.idempotent_id('9f225d2b-5376-42f5-97aa-cf63be47fa19')
     def test_create_access_control(self):
@@ -139,7 +139,7 @@
         with self.rbac_utils.override_role(self):
             self._create_access_control_lists(sec_group['name'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_access_control_list"])
     @decorators.idempotent_id('f0ed882b-f3de-48b7-884a-637ee0b7d6b6')
     def test_show_access_control_list(self):
@@ -152,7 +152,7 @@
             self.access_control_client.show_access_control_list(
                 new_ctrl_list['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_access_control_list"])
     @decorators.idempotent_id('9a4b3133-dd07-4a1a-b282-f7770c372fb8')
     def test_update_access_control_list(self):
@@ -166,7 +166,7 @@
                 new_ctrl_list['uuid'],
                 display_name=update_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_access_control_list"])
     @decorators.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 d293f4d..b1cff9a 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_alarm.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_alarm.py
@@ -69,7 +69,7 @@
         }
         self.alarm_client.update_alarm(alarm_uuid, **put_body)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_alarms"])
     @decorators.idempotent_id('dc7d19dd-dd5e-4ec8-bf0c-c6d9d83a60a8')
     def test_list_alarms(self):
@@ -77,7 +77,7 @@
         with self.rbac_utils.override_role(self):
             self.alarm_client.list_alarms()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_alarms"])
     @decorators.idempotent_id('7fe55d0c-e54a-4bb7-95a6-9c53f9e9c4bf')
     def test_create_alarms(self):
@@ -85,7 +85,7 @@
         with self.rbac_utils.override_role(self):
             self._create_alarm()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_alarm"])
     @decorators.idempotent_id('ab0ccbe4-7bfe-4176-890a-d438ee04290d')
     def test_show_alarm(self):
@@ -94,7 +94,7 @@
         with self.rbac_utils.override_role(self):
             self.alarm_client.show_alarm(alarm_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_alarm"])
     @decorators.idempotent_id('ab331cca-ee53-4106-9b30-7319bfb1bea7')
     def test_update_alarm(self):
@@ -103,7 +103,7 @@
         with self.rbac_utils.override_role(self):
             self._update_alarm(alarm_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_alarm"])
     @decorators.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 1a67669..a6cdcdb 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_alias_ip.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_alias_ip.py
@@ -111,7 +111,7 @@
                         new_alias_ip['uuid'])
         return new_alias_ip
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_alias_ips"])
     @decorators.idempotent_id('899d6824-0755-41ef-adef-03eb1858bcb0')
     def test_list_alias_ips(self):
@@ -119,7 +119,7 @@
         with self.rbac_utils.override_role(self):
             self.alias_ip_client.list_alias_ips()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_alias_ips"])
     @decorators.idempotent_id('bc9aae29-22a8-4eed-a31f-c0ded300e3a3')
     def test_create_alias_ips(self):
@@ -128,7 +128,7 @@
         with self.rbac_utils.override_role(self):
             self._create_alias_ips(new_alias_ip_pool, '2.2.3.1')
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_alias_ip"])
     @decorators.idempotent_id('d20318b1-c204-44e7-a44c-66f6a1fbe7a0')
     def test_show_alias_ip(self):
@@ -139,7 +139,7 @@
             self.alias_ip_client.show_alias_ip(
                 new_alias_ip['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_alias_ip"])
     @decorators.idempotent_id('c237b18f-d899-4b80-8e9b-068244a24612')
     def test_update_alias_ip(self):
@@ -152,7 +152,7 @@
                 new_alias_ip['uuid'],
                 display_name=update_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_alias_ip"])
     @decorators.idempotent_id('456c641c-9066-4125-8dec-d1529ad8f1ba')
     def test_delete_alias_ip(self):
@@ -163,7 +163,7 @@
             self.alias_ip_client.delete_alias_ip(
                 new_alias_ip['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_alias_ip_pools"])
     @decorators.idempotent_id('ffe85f35-589a-4b90-a1d3-6aed92a85954')
     def test_list_alias_ip_pools(self):
@@ -171,7 +171,7 @@
         with self.rbac_utils.override_role(self):
             self.alias_ip_client.list_alias_ip_pools()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_alias_ip_pools"])
     @decorators.idempotent_id('83abd2c0-d46a-4337-87d0-31cdb86e4226')
     def test_create_alias_ip_pools(self):
@@ -179,7 +179,7 @@
         with self.rbac_utils.override_role(self):
             self._create_alias_ip_pools()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_alias_ip_pool"])
     @decorators.idempotent_id('a1cbe111-ccba-4fa4-ba59-7d1ee08a15db')
     def test_show_alias_ip_pool(self):
@@ -189,7 +189,7 @@
             self.alias_ip_client.show_alias_ip_pool(
                 new_alias_ip_pool['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_alias_ip_pool"])
     @decorators.idempotent_id('7f3448d7-22f1-4808-b3eb-15eeb3f079aa')
     def test_update_alias_ip_pool(self):
@@ -201,7 +201,7 @@
                 new_alias_ip_pool['uuid'],
                 display_name=update_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_alias_ip_pool"])
     @decorators.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 9a15ab4..36996c4 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_analytics_node.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_analytics_node.py
@@ -45,7 +45,7 @@
                         new_node['uuid'])
         return new_node
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_analytics_nodes"])
     @decorators.idempotent_id('d3002e37-4b42-446d-b144-1b53f0dadfd3')
     def test_list_analytics_nodes(self):
@@ -53,7 +53,7 @@
         with self.rbac_utils.override_role(self):
             self.analytics_node_client.list_analytics_nodes()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_analytics_node"])
     @decorators.idempotent_id('b51043fd-77ba-4312-b96f-569ed5153338')
     def test_show_analytics_node(self):
@@ -62,7 +62,7 @@
         with self.rbac_utils.override_role(self):
             self.analytics_node_client.show_analytics_node(new_node['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_analytics_nodes"])
     @decorators.idempotent_id('c57482c9-fcb4-4f41-95b0-7f0ffeee3dc3')
     def test_create_analytics_nodes(self):
@@ -70,7 +70,7 @@
         with self.rbac_utils.override_role(self):
             self._create_analytics_node()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_analytics_node"])
     @decorators.idempotent_id('ff50a2df-6283-409e-ab03-c13b63acc8a0')
     def test_update_analytics_node(self):
@@ -81,7 +81,7 @@
             self.analytics_node_client.update_analytics_node(
                 new_node['uuid'], display_name=update_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_analytics_node"])
     @decorators.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 0aaf63f..0281352 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_attachments_client.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_attachments_client.py
@@ -56,7 +56,7 @@
                         new_customer['uuid'])
         return new_customer
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_provider_attachments"])
     @decorators.idempotent_id('961dbf54-ae4f-42e8-9d27-69fa7df39013')
     def test_list_provider_attachments(self):
@@ -64,7 +64,7 @@
         with self.rbac_utils.override_role(self):
             self.attachments_client.list_provider_attachments()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_provider_attachments"])
     @decorators.idempotent_id('73ad032e-3e81-4dcc-be55-1987484207cd')
     def test_create_providerattach(self):
@@ -72,7 +72,7 @@
         with self.rbac_utils.override_role(self):
             self._create_provider_attachments()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_provider_attachment"])
     @decorators.idempotent_id('7b5278bc-dd79-495a-9f74-448c04f52bd2')
     def test_show_provider_attachment(self):
@@ -82,7 +82,7 @@
             self.attachments_client.show_provider_attachment(
                 new_provider['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_provider_attachment"])
     @decorators.idempotent_id('3516ff99-eddf-4932-afa4-433a43a0e5ac')
     def test_update_provider_attachment(self):
@@ -94,7 +94,7 @@
                 new_provider['uuid'],
                 display_name=update_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_provider_attachment"])
     @decorators.idempotent_id('234d5505-2abf-418b-b43b-ea6f5a724fd3')
     def test_delete_provider_attachment(self):
@@ -104,7 +104,7 @@
             self.attachments_client.delete_provider_attachment(
                 new_provider['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_customer_attachments"])
     @decorators.idempotent_id('3eca8fd8-ec3c-4a0e-8f62-b15d28796b7f')
     def test_list_customer_attachments(self):
@@ -112,7 +112,7 @@
         with self.rbac_utils.override_role(self):
             self.attachments_client.list_customer_attachments()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_customer_attachments"])
     @decorators.idempotent_id('53f93053-554c-4202-b763-0230d9a0553a')
     def test_create_customerattachments(self):
@@ -120,7 +120,7 @@
         with self.rbac_utils.override_role(self):
             self._create_customer_attachments()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_customer_attachment"])
     @decorators.idempotent_id('c6671540-695c-4cba-bcee-4a5d1cddd412')
     def test_show_customer_attachment(self):
@@ -130,7 +130,7 @@
             self.attachments_client.show_customer_attachment(
                 new_customer['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_customer_attachment"])
     @decorators.idempotent_id('50419cca-dd03-4d02-9c06-88446647fcba')
     def test_update_customer_attachment(self):
@@ -142,7 +142,7 @@
                 new_customer['uuid'],
                 display_name=update_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_customer_attachment"])
     @decorators.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 330483f..f9345b8 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
@@ -41,7 +41,7 @@
                         new_bgp['uuid'])
         return new_bgp
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_bgp_as_a_services"])
     @decorators.idempotent_id('d3153cd0-379e-4e62-9780-ef237e567fc5')
     def test_list_bgp_as_a_services(self):
@@ -49,7 +49,7 @@
         with self.rbac_utils.override_role(self):
             self.bgp_as_a_service_client.list_bgp_as_a_services()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_bgp_as_a_services"])
     @decorators.idempotent_id('a039f0c4-b53a-492b-a5c5-fbdf046afcf4')
     def test_create_bgp_as_a_services(self):
@@ -57,7 +57,7 @@
         with self.rbac_utils.override_role(self):
             self._create_bgp_as_a_services()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_bgp_as_a_service"])
     @decorators.idempotent_id('c2fae8b4-929c-4d2f-914d-76a7414a56dc')
     def test_show_bgp_as_a_service(self):
@@ -67,7 +67,7 @@
             self.bgp_as_a_service_client.show_bgp_as_a_service(
                 new_bgp['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_bgp_as_a_service"])
     @decorators.idempotent_id('78c8389a-7bb5-4027-bae1-923af3d6e77c')
     def test_delete_bgp_as_a_service(self):
@@ -77,7 +77,7 @@
             self.bgp_as_a_service_client.delete_bgp_as_a_service(
                 new_bgp['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_bgp_as_a_service"])
     @decorators.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 3469064..26aea25 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_config_client.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_config_client.py
@@ -45,7 +45,7 @@
     def _create_config_node(self):
         config_node_ip_address = self._random_ip_generator()
         display_name = data_utils.rand_name('config_node')
-        if rbac_base.get_contail_version() < 5:
+        if rbac_base.get_contail_version() < 3.2:
             fq_name = [display_name]
         else:
             fq_name = ['default-global-system-config', display_name]
@@ -59,7 +59,7 @@
                             config_node_id)
         return config_node
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_config_nodes"])
     @decorators.idempotent_id('b560e060-e4f0-45b0-93e2-55f0cb201e06')
     def test_list_config_nodes(self):
@@ -67,7 +67,7 @@
         with self.rbac_utils.override_role(self):
             self.config_client.list_config_nodes()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_config_nodes"])
     @decorators.idempotent_id('a8d20d0d-dc5a-4cae-87c5-7f6914c3701e')
     def test_create_config_nodes(self):
@@ -75,7 +75,7 @@
         with self.rbac_utils.override_role(self):
             self._create_config_node()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_config_node"])
     @decorators.idempotent_id('16573a85-57ab-418c-bb23-5dd936e7be90')
     def test_delete_config_node(self):
@@ -86,7 +86,7 @@
             self.config_client.delete_config_node(
                 config_node_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_config_node"])
     @decorators.idempotent_id('a5b17108-4fa3-4d09-b861-e2857aab8f80')
     def test_show_config_node(self):
@@ -96,7 +96,7 @@
         with self.rbac_utils.override_role(self):
             self.config_client.show_config_node(config_node_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_config_node"])
     @decorators.idempotent_id('8f70d2c0-594b-4a94-ab15-88bd8a2e62e5')
     def test_update_config_node(self):
@@ -124,7 +124,7 @@
                             config_root_uuid)
         return config_root
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_config_roots"])
     @decorators.idempotent_id('291b28ea-d0d8-47cd-ac76-1f980047cb76')
     def test_create_config_roots(self):
@@ -132,7 +132,7 @@
         with self.rbac_utils.override_role(self):
             self._create_config_root()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_config_root"])
     @decorators.idempotent_id('bd04c0fb-3deb-4904-ad2c-1a10933c30dd')
     def test_delete_config_root(self):
@@ -143,7 +143,7 @@
             self.config_client.delete_config_root(
                 config_root_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_config_root"])
     @decorators.idempotent_id('fba2c419-9a83-4d88-9a26-84770544bb3f')
     def test_show_config_root(self):
@@ -153,7 +153,7 @@
         with self.rbac_utils.override_role(self):
             self.config_client.show_config_root(config_root_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_config_root"])
     @decorators.idempotent_id('bfcc074f-5e1c-4b45-8a2a-857239f8acb0')
     def test_update_config_root(self):
@@ -165,7 +165,7 @@
             self.config_client.update_config_root(
                 config_root_uuid, display_name=updated_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_config_roots"])
     @decorators.idempotent_id('316e7425-8fb0-41b4-9080-a76697abbafa')
     def test_list_config_roots(self):
@@ -192,7 +192,7 @@
                         new_config['uuid'])
         return new_config
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_global_system_configs"])
     @decorators.idempotent_id('d1d189a7-14c1-49c5-b180-cd42ed2ca123')
     def test_list_global_system_configs(self):
@@ -202,7 +202,7 @@
 
     @testtools.skipUnless(rbac_base.get_contail_version() < 5,
                           'Not supported in OpenContrail versions >= 5')
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_global_system_configs"])
     @decorators.idempotent_id('e0ba6a20-3e28-47ac-bf95-9a848fcee49a')
     def test_create_global_system_configs(self):
@@ -210,7 +210,7 @@
         with self.rbac_utils.override_role(self):
             self._create_global_system_config()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_global_system_config"])
     @decorators.idempotent_id('4b9f9131-cb34-4b7d-9d06-c6aca85cce3a')
     def test_show_global_system_config(self):
@@ -238,7 +238,7 @@
 
     @testtools.skipUnless(rbac_base.get_contail_version() < 5,
                           'Not supported in OpenContrail versions >= 5')
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_global_system_config"])
     @decorators.idempotent_id('4f90dc83-da59-45a4-8ab6-b387bd6c2df4')
     def test_update_global_system_config(self):
@@ -252,7 +252,7 @@
 
     @testtools.skipUnless(rbac_base.get_contail_version() < 5,
                           'Not supported in OpenContrail versions >= 5')
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_global_system_config"])
     @decorators.idempotent_id('fce1653c-e657-4a1e-8ced-7e02d297d6c9')
     def test_delete_global_system_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 7caa76e..020d595 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_database.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_database.py
@@ -51,7 +51,7 @@
                         db_node['uuid'])
         return db_node
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_database_nodes"])
     @decorators.idempotent_id('5ae6f965-6161-443f-b19e-dfa7b364c533')
     def test_list_database_nodes(self):
@@ -60,7 +60,7 @@
         with self.rbac_utils.override_role(self):
             self.db_client.list_database_nodes()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_database_node"])
     @decorators.idempotent_id('4a07d9a8-7b99-43bd-b628-06c023993aab')
     def test_show_database_node(self):
@@ -69,7 +69,7 @@
         with self.rbac_utils.override_role(self):
             self.db_client.show_database_node(db_node['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_database_nodes"])
     @decorators.idempotent_id('b9aa9c6b-9381-44f0-94fb-e4523bf2a87e')
     def test_create_database_nodes(self):
@@ -77,7 +77,7 @@
         with self.rbac_utils.override_role(self):
             self._create_database_node()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_database_node"])
     @decorators.idempotent_id('6e59f393-0e55-4327-871e-7f0ad53f2e17')
     def test_update_database_node(self):
@@ -90,7 +90,7 @@
                 db_node_id=db_node_id,
                 display_name=display_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_database_node"])
     @decorators.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 f630d70..0731440 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
@@ -42,7 +42,7 @@
                         new_dsa['uuid'])
         return new_dsa
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_discovery_service_assignments"])
     @decorators.idempotent_id('9ac1e4ca-8983-403f-b644-7758935f2f36')
     def test_list_discovery_service(self):
@@ -50,7 +50,7 @@
         with self.rbac_utils.override_role(self):
             self.dsa_client.list_ds_assignments()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_discovery_service_assignments"]
                                  )
     @decorators.idempotent_id('40ad1208-a039-4809-8516-41b4dfcbd00c')
@@ -59,7 +59,7 @@
         with self.rbac_utils.override_role(self):
             self._create_discovery_service_assignments()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_discovery_service_assignment"])
     @decorators.idempotent_id('63660fe9-22b8-456c-a757-a7da1abfbce8')
     def test_show_discovery_service(self):
@@ -68,7 +68,7 @@
         with self.rbac_utils.override_role(self):
             self.dsa_client.show_ds_assignment(new_dsa['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_discovery_service_assignment"])
     @decorators.idempotent_id('71ce1404-965b-4670-abb7-5b6fea3b24b7')
     def test_update_discovery_service(self):
@@ -81,7 +81,7 @@
                 fq_name=new_dsa['fq_name'],
                 display_name=update_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_discovery_service_assignment"])
     @decorators.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 7547cad..baa50fb 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_domain.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_domain.py
@@ -51,7 +51,7 @@
         }
         self.domain_client.update_domain(domain_uuid, **put_body)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_domains"])
     @decorators.idempotent_id('fa02e27b-f661-4186-a522-69e8fcb6abf9')
     def test_list_domains(self):
@@ -59,7 +59,7 @@
         with self.rbac_utils.override_role(self):
             self.domain_client.list_domains()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_domains"])
     @decorators.idempotent_id('3f18be91-c37b-4e17-bf5e-b704d993f738')
     def test_create_domains(self):
@@ -67,7 +67,7 @@
         with self.rbac_utils.override_role(self):
             self._create_domains()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_domain"])
     @decorators.idempotent_id('e79f8581-ba9f-420a-aa26-f1cb51cf4bbf')
     def test_show_domain(self):
@@ -76,7 +76,7 @@
         with self.rbac_utils.override_role(self):
             self.domain_client.show_domain(domain_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_domain"])
     @decorators.idempotent_id('fdf72539-20b5-4bdb-b22b-70c86fbb52a4')
     def test_update_domain(self):
@@ -85,7 +85,7 @@
         with self.rbac_utils.override_role(self):
             self._update_domain(domain_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_domain"])
     @decorators.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 ff028f4..5d537f2 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_dsa_rule.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_dsa_rule.py
@@ -55,7 +55,7 @@
                         new_rule['uuid'])
         return new_rule
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_dsa_rules"])
     @decorators.idempotent_id('3227673b-96fc-4d26-ab0b-109347e9e9c2')
     def test_list_dsa_rules(self):
@@ -63,7 +63,7 @@
         with self.rbac_utils.override_role(self):
             self.dsa_rule_client.list_dsa_rules()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_dsa_rule"])
     @decorators.idempotent_id('0f90ea4f-c050-4c31-93a7-1e0c58df914e')
     def test_show_dsa_rule(self):
@@ -75,7 +75,7 @@
         with self.rbac_utils.override_role(self):
             self.dsa_rule_client.show_dsa_rule(new_rule['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_dsa_rules"])
     @decorators.idempotent_id('c3774ca3-45d0-4ca8-a6b3-f895441b1d0e')
     def test_create_dsa_rules(self):
@@ -86,7 +86,7 @@
         with self.rbac_utils.override_role(self):
             self._create_dsa_rules(discovery_service_assignment)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_dsa_rule"])
     @decorators.idempotent_id('5cfe7e8e-d91c-4183-8e6c-733e826707be')
     def test_update_dsa_rule(self):
@@ -100,7 +100,7 @@
             self.dsa_rule_client.update_dsa_rule(
                 new_rule['uuid'], display_name=update_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_dsa_rule"])
     @decorators.idempotent_id('d3b869db-fa49-48f0-861a-08efd9879b15')
     def test_delete_dsa_rule(self):
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_fabric.py b/tungsten_tempest_plugin/tests/api/contrail/test_fabric.py
index 74f22d8..1c9e380 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_fabric.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_fabric.py
@@ -43,7 +43,7 @@
                                     fabric["fabric"]["uuid"])
         return fabric["fabric"]["uuid"]
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_fabrics"])
     @decorators.idempotent_id('9005d1d6-3bd2-4378-b145-0fda130ce1d1')
     def test_list_fabric_s(self):
@@ -54,7 +54,7 @@
         with self.rbac_utils.override_role(self):
             self.contrail_client.list_fabrics()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_fabric"])
     @decorators.idempotent_id('9b216ca5-b332-41ca-9072-6c3ee325ea91')
     def test_create_fabric(self):
@@ -65,7 +65,7 @@
         with self.rbac_utils.override_role(self):
             self._create_fabric()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_fabric"])
     @decorators.idempotent_id('244c3530-70e0-4efe-98be-4c2d1ffa0376')
     def test_show_fabric(self):
@@ -76,7 +76,7 @@
         with self.rbac_utils.override_role(self):
             self.contrail_client.show_fabric(self.fabric_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_fabric"])
     @decorators.idempotent_id('75edc6b9-c66a-46fc-a271-4c54e4cc77b1')
     def test_delete_fabric(self):
@@ -88,7 +88,7 @@
         with self.rbac_utils.override_role(self):
             self.contrail_client.delete_fabric(fab_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_fabric"])
     @decorators.idempotent_id('f22c4c26-3843-4fc6-a8ff-7890d5ad1c39')
     def test_update_fabric(self):
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_fabric_namespaces.py b/tungsten_tempest_plugin/tests/api/contrail/test_fabric_namespaces.py
index 7b173c8..fe1ef6b 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_fabric_namespaces.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_fabric_namespaces.py
@@ -65,7 +65,7 @@
 
         return resp_body['fabric-namespace']['uuid']
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_fabric_namespaces"])
     @decorators.idempotent_id('f9935e2a-c4b6-4694-8698-6148faf93e1a')
     def test_list_fabric_namespaces(self):
@@ -76,7 +76,7 @@
         with self.rbac_utils.override_role(self):
             self.contrail_client.list_fabric_namespaces()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_fabric_namespace"])
     @decorators.idempotent_id('5bb85072-130d-4f36-a787-12b65bdd4c03')
     def test_create_fabric_namespace(self):
@@ -87,7 +87,7 @@
         with self.rbac_utils.override_role(self):
             self._create_fabric_namespace()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_fabric_namespace"])
     @decorators.idempotent_id('5ab5bc8f-7209-427a-9868-4fbc7a7e0d85')
     def test_show_fabric_namespace(self):
@@ -99,7 +99,7 @@
             self.contrail_client.show_fabric_namespace(
                 self.fabric_namespace_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_fabric_namespace"])
     @decorators.idempotent_id('ff20e4bb-6110-476e-80b4-d6114981e8bf')
     def test_delete_fabric_namespace(self):
@@ -111,7 +111,7 @@
         with self.rbac_utils.override_role(self):
             self.contrail_client.delete_fabric_namespace(ns_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_fabric_namespace"])
     @decorators.idempotent_id('78514d86-fcdc-4bc6-99b9-11b5e91b5296')
     def test_update_fabric_namespace(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 80cd938..e20b601 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_floating_ip.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_floating_ip.py
@@ -105,7 +105,7 @@
 
         return fip_pool
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_floating_ip_pools"])
     @decorators.idempotent_id('a83ca5e8-be4b-4161-869c-f981a724cf82')
     def test_create_floating_ip_pools(self):
@@ -113,7 +113,7 @@
         with self.rbac_utils.override_role(self):
             self._create_floating_ip_pool()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_floating_ip_pools"])
     @decorators.idempotent_id('9d20e78d-0463-4a0e-b30c-40770bee35bc')
     def test_list_floating_ip_pools(self):
@@ -122,7 +122,7 @@
         with self.rbac_utils.override_role(self):
             self.fip_client.list_floating_ip_pools()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_floating_ip_pool"])
     @decorators.idempotent_id('1ec3124c-c15c-4ee6-b2de-2feed9599e38')
     def test_show_floating_ip_pool(self):
@@ -131,7 +131,7 @@
         with self.rbac_utils.override_role(self):
             self.fip_client.show_floating_ip_pool(uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_floating_ip_pool"])
     @decorators.idempotent_id('6563f2e7-ae6b-483b-8c07-0111efc86817')
     def test_update_floating_ip_pool(self):
@@ -142,7 +142,7 @@
                 uuid,
                 display_name='rbac-fip-pool-new-name')
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_floating_ip_pool"])
     @decorators.idempotent_id('c4b449ae-2f12-49cf-9dec-2b21c143aff6')
     def test_delete_floating_ip_pool(self):
@@ -188,7 +188,7 @@
                         fip['uuid'])
         return fip
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_floating_ips"])
     @decorators.idempotent_id('ff05f70f-9db9-43cb-a5ce-38cbbef2c430')
     def test_create_floating_ips(self):
@@ -196,7 +196,7 @@
         with self.rbac_utils.override_role(self):
             self._create_floating_ip()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_floating_ips"])
     @decorators.idempotent_id('e56046f9-32f9-41ce-9c1b-b982997ac347')
     def test_list_floating_ips(self):
@@ -205,7 +205,7 @@
         with self.rbac_utils.override_role(self):
             self.fip_client.list_floating_ips()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_floating_ip"])
     @decorators.idempotent_id('293f2c26-4101-4a2f-86d4-feb2878bd511')
     def test_show_floating_ip(self):
@@ -214,7 +214,7 @@
         with self.rbac_utils.override_role(self):
             self.fip_client.show_floating_ip(uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_floating_ip"])
     @decorators.idempotent_id('a09283c9-73d3-42f7-876d-f33040686d6d')
     def test_update_floating_ip(self):
@@ -225,7 +225,7 @@
                 uuid,
                 display_name='rbac-fip-new-name')
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_floating_ip"])
     @decorators.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 edf8733..d2b8979 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_forwarding_class.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_forwarding_class.py
@@ -64,7 +64,7 @@
                         new_fclass['uuid'])
         return new_fclass
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_forwarding_classs"])
     @decorators.idempotent_id('807a66fd-d4a4-472c-a13d-7ba590509e6e')
     def test_list_forwarding_classs(self):
@@ -72,7 +72,7 @@
         with self.rbac_utils.override_role(self):
             self.forwarding_class_client.list_forwarding_classs()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_forwarding_class"])
     @decorators.idempotent_id('8ef21f71-72a4-4de9-af93-6e759aa463c0')
     def test_show_forwarding_class(self):
@@ -85,7 +85,7 @@
             self.forwarding_class_client.show_forwarding_class(
                 new_fclass['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_forwarding_classs"])
     @decorators.idempotent_id('d098859c-ad36-4385-8fb0-c00934a99b6f')
     def test_create_forwarding_class(self):
@@ -96,7 +96,7 @@
         with self.rbac_utils.override_role(self):
             self._create_forwarding_class(self.global_qos_config)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_forwarding_class"])
     @decorators.idempotent_id('589dc03d-a25d-48be-9d9c-d3f92ff2cfc6')
     def test_update_forwarding_class(self):
@@ -110,7 +110,7 @@
             self.forwarding_class_client.update_forwarding_class(
                 new_fclass['uuid'], display_name=update_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_forwarding_class"])
     @decorators.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 286ccb8..a798ed8 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_fqname_id.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_fqname_id.py
@@ -49,7 +49,7 @@
                                  cls.network['uuid'])
         super(FqnameIdTest, cls).resource_cleanup()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["fqname_to_id"])
     @decorators.idempotent_id('1fc1350b-3146-49bc-9af5-a61a98b55541')
     def test_fqname_to_id(self):
@@ -58,7 +58,7 @@
             self.fq_client.fqname_to_id(fq_name=self.network['fq_name'],
                                         type=self.type)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["id_to_fqname"])
     @decorators.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 a5d4e06..92ff740 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_instance_ip.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_instance_ip.py
@@ -100,7 +100,7 @@
                         iip['uuid'])
         return iip
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_instance_ips"])
     @decorators.idempotent_id('31db3b3f-c40b-4f7f-bb8b-0a110f099553')
     def test_list_instance_ips(self):
@@ -109,7 +109,7 @@
         with self.rbac_utils.override_role(self):
             self.iip_client.list_instance_ips()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_instance_ips"])
     @decorators.idempotent_id('78f5cd4d-345d-4d87-8b8b-4d5d3fec4a12')
     def test_create_instance_ips(self):
@@ -117,7 +117,7 @@
         with self.rbac_utils.override_role(self):
             self._create_instance_ip()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_instance_ip"])
     @decorators.idempotent_id('276f3838-d9cb-4432-bbb4-db31c4c1db5c')
     def test_show_instance_ip(self):
@@ -126,7 +126,7 @@
         with self.rbac_utils.override_role(self):
             self.iip_client.show_instance_ip(uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_instance_ip"])
     @decorators.idempotent_id('b85975a5-176f-44b1-a615-b6f0a39a7708')
     def test_update_instance_ip(self):
@@ -137,7 +137,7 @@
                 uuid,
                 display_name='rbac-iip-new-name')
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_instance_ip"])
     @decorators.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 450c158..b313d1d 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_interfaces.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_interfaces.py
@@ -74,7 +74,7 @@
                         logical_if['uuid'])
         return logical_if
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_physical_interfaces"])
     @decorators.idempotent_id('c496a2b4-51b2-4674-a60e-483a315baccb')
     def test_list_physical_interfaces(self):
@@ -82,7 +82,7 @@
         with self.rbac_utils.override_role(self):
             self.interface_client.list_physical_interfaces()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_physical_interfaces"])
     @decorators.idempotent_id('066f53d8-3d2a-4ad6-983f-243de7c12962')
     def test_create_physical_interfaces(self):
@@ -91,7 +91,7 @@
         with self.rbac_utils.override_role(self):
             self._create_physical_interface()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_physical_interface"])
     @decorators.idempotent_id('91c4fc90-ed0f-42ec-87c6-ff6c2a9ab8de')
     def test_update_physical_interface(self):
@@ -109,7 +109,7 @@
             self.interface_client.update_physical_interface(
                 uuid, **body)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_physical_interface"])
     @decorators.idempotent_id('5d77ea76-be8c-49cc-8f08-72fbdaf9028f')
     def test_delete_physical_interface(self):
@@ -119,7 +119,7 @@
         with self.rbac_utils.override_role(self):
             self.interface_client.delete_physical_interface(uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_physical_interface"])
     @decorators.idempotent_id('2c75c7e7-ef34-4e24-9c2f-5a2182db33a6')
     def test_show_physical_interface(self):
@@ -129,7 +129,7 @@
         with self.rbac_utils.override_role(self):
             self.interface_client.show_physical_interface(uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_logical_interfaces"])
     @decorators.idempotent_id('43ac3727-4a43-42d7-b52f-df75018915b9')
     def test_list_logical_interfaces(self):
@@ -137,7 +137,7 @@
         with self.rbac_utils.override_role(self):
             self.interface_client.list_logical_interfaces()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_logical_interfaces"])
     @decorators.idempotent_id('503facf2-0752-47e4-a0a4-7a3103133a61')
     def test_create_logical_interfaces(self):
@@ -147,7 +147,7 @@
         with self.rbac_utils.override_role(self):
             self._create_logical_interface()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_logical_interface"])
     @decorators.idempotent_id('63c991f4-6aba-454c-9c49-522dc77b3f5c')
     def test_update_logical_interface(self):
@@ -166,7 +166,7 @@
             self.interface_client.update_logical_interface(
                 uuid, **body)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_logical_interface"])
     @decorators.idempotent_id('a36743d1-3ea1-4cf5-89d8-9c0b885fa625')
     def test_delete_logical_interface(self):
@@ -177,7 +177,7 @@
         with self.rbac_utils.override_role(self):
             self.interface_client.delete_logical_interface(uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_logical_interface"])
     @decorators.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 d7e25c4..4c220ce 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_load_balancer.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_load_balancer.py
@@ -36,7 +36,8 @@
     @classmethod
     def skip_checks(cls):
         super(BaseLoadBalancerTest, cls).skip_checks()
-        if not test.is_extension_enabled('lbaas', 'network'):
+        if not test.is_extension_enabled('lbaas', 'network') and \
+                not test.is_extension_enabled('lbaasv2', 'network'):
             raise cls.skipException(
                 '%s skipped - lbaas extension not enabled' % cls.__name__)
 
@@ -172,7 +173,7 @@
 class LoadBalancerContrailTest(BaseLoadBalancerTest):
     """Test class to test load balancer objects using RBAC roles"""
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_load_balancers"])
     @decorators.idempotent_id('5d840b6b-3974-4945-916f-dd53ba27e42f')
     def test_list_load_balancers(self):
@@ -180,7 +181,7 @@
         with self.rbac_utils.override_role(self):
             self.load_balancer_client.list_load_balancers()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_load_balancers"])
     @decorators.idempotent_id('6a18d506-0794-4eb9-a945-165bf146005d')
     def test_create_load_balancers(self):
@@ -188,7 +189,7 @@
         with self.rbac_utils.override_role(self):
             self._create_load_balancer()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_load_balancer"])
     @decorators.idempotent_id('428012aa-cd0e-4702-89d2-459046d4bd5f')
     def test_show_load_balancer(self):
@@ -197,7 +198,7 @@
         with self.rbac_utils.override_role(self):
             self.load_balancer_client.show_load_balancer(lb_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_load_balancer"])
     @decorators.idempotent_id('7cd3d7b2-b149-40c1-a801-a6a8a660bd24')
     def test_update_load_balancer(self):
@@ -206,7 +207,7 @@
         with self.rbac_utils.override_role(self):
             self._update_load_balancer(lb_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_load_balancer"])
     @decorators.idempotent_id('b28c6b11-d1b0-45d0-8942-638b6b590702')
     def test_delete_load_balancer(self):
@@ -221,7 +222,7 @@
 
     """
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_load_balancer_health_monitors"])
     @decorators.idempotent_id('3e3d8bdc-3621-4c5e-8130-1187f445a4e6')
     def test_list_lb_health_monitors(self):
@@ -229,7 +230,7 @@
         with self.rbac_utils.override_role(self):
             self.load_balancer_client.list_lb_healthmonitors()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_load_balancer_health_monitors"]
                                  )
     @decorators.idempotent_id('bddb93ad-d331-4bbc-bac6-2763cae4eb2c')
@@ -238,7 +239,7 @@
         with self.rbac_utils.override_role(self):
             self._create_load_balancer_health_monitor()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_load_balancer_health_monitor"])
     @decorators.idempotent_id('30d23994-1e3a-4a76-8f18-e00d0854412a')
     def test_show_lb_health_monitor(self):
@@ -248,7 +249,7 @@
             self.load_balancer_client.show_lb_healthmonitor(
                 lb_hm_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_load_balancer_health_monitor"])
     @decorators.idempotent_id('c32ba92c-3a69-4255-867a-1423c93faa6f')
     def test_update_lb_health_monitor(self):
@@ -257,7 +258,7 @@
         with self.rbac_utils.override_role(self):
             self._update_load_balancer_health_monitor(lb_hm_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_load_balancer_health_monitor"])
     @decorators.idempotent_id('b4d7ea9d-fd8c-433b-96fc-c24866b3f6a7')
     def test_delete_lb_health_monitor(self):
@@ -271,7 +272,7 @@
 class LoadBalancerListenerContrailTest(BaseLoadBalancerTest):
     """Base class to test load balancer Listener objects using RBAC roles"""
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_load_balancer_listeners"])
     @decorators.idempotent_id('7e02882f-0eab-41c2-b48a-bf71e083b912')
     def test_list_lb_listeners(self):
@@ -279,7 +280,7 @@
         with self.rbac_utils.override_role(self):
             self.load_balancer_client.list_load_balancer_listeners()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_load_balancer_listeners"])
     @decorators.idempotent_id('0551de87-fa4c-463f-8968-ec6f2a6098d0')
     def test_create_lb_listeners(self):
@@ -287,7 +288,7 @@
         with self.rbac_utils.override_role(self):
             self._create_load_balancer_listener()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_load_balancer_listener"])
     @decorators.idempotent_id('ade38959-9506-4262-8d3c-5ba5eb63d85f')
     def test_show_lb_listener(self):
@@ -297,7 +298,7 @@
             self.load_balancer_client.show_load_balancer_listener(
                 lb_listener_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_load_balancer_listener"])
     @decorators.idempotent_id('e529e538-da31-4159-91c2-6c0a828282a4')
     def test_update_lb_listener(self):
@@ -306,7 +307,7 @@
         with self.rbac_utils.override_role(self):
             self._update_load_balancer_listener(lb_listener_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_load_balancer_listener"])
     @decorators.idempotent_id('feaf3e9a-ffd1-4327-ad7a-35f9e9e4989b')
     def test_delete_lb_listener(self):
@@ -320,7 +321,7 @@
 class LoadBalancerPoolContrailTest(BaseLoadBalancerTest):
     """Base class to test load balancer Pool objects using RBAC roles"""
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_load_balancer_pools"])
     @decorators.idempotent_id('3d177a9e-7067-4e9e-b4e8-0acc5887dff0')
     def test_list_load_balancer_pools(self):
@@ -328,7 +329,7 @@
         with self.rbac_utils.override_role(self):
             self.load_balancer_client.list_load_balancer_pools()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_load_balancer_pools"])
     @decorators.idempotent_id('a52c6ec7-a996-4191-9a70-7879a211a711')
     def test_create_load_balancer_pools(self):
@@ -336,7 +337,7 @@
         with self.rbac_utils.override_role(self):
             self._create_load_balancer_pool()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_load_balancer_pool"])
     @decorators.idempotent_id('7923da4e-53b1-4024-9a40-5bc91cee8e2d')
     def test_show_load_balancer_pool(self):
@@ -345,7 +346,7 @@
         with self.rbac_utils.override_role(self):
             self.load_balancer_client.show_load_balancer_pool(lb_pool_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_load_balancer_pool"])
     @decorators.idempotent_id('391c0c5e-c218-4c98-9b58-6d2724ec4c20')
     def test_update_load_balancer_pool(self):
@@ -354,7 +355,7 @@
         with self.rbac_utils.override_role(self):
             self._update_load_balancer_pool(lb_pool_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_load_balancer_pool"])
     @decorators.idempotent_id('8b3617c0-4064-48f8-96b8-e2f996fce5c3')
     def test_delete_load_balancer_pool(self):
@@ -367,7 +368,7 @@
 class LoadBalancerMemberContrailTest(BaseLoadBalancerTest):
     """Base class to test load balancer Member using RBAC roles"""
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_load_balancer_members"])
     @decorators.idempotent_id('b3c51463-8166-486a-a26e-0f7aeaa41e0f')
     def test_list_load_balancer_members(self):
@@ -375,7 +376,7 @@
         with self.rbac_utils.override_role(self):
             self.load_balancer_client.list_load_balancer_members()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_load_balancer_members"])
     @decorators.idempotent_id('ad60688f-7a20-4dd5-8229-4076d85b9d55')
     def test_create_lb_members(self):
@@ -383,7 +384,7 @@
         with self.rbac_utils.override_role(self):
             self._create_load_balancer_member()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_load_balancer_member"])
     @decorators.idempotent_id('917602ff-24d5-4a07-a6a6-5e5b9539bbf1')
     def test_show_load_balancer_member(self):
@@ -392,7 +393,7 @@
         with self.rbac_utils.override_role(self):
             self.load_balancer_client.show_load_balancer_member(lb_member_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_load_balancer_member"])
     @decorators.idempotent_id('b1611005-5c77-4ac0-8fcc-4a035dfbaa84')
     def test_update_lb_member(self):
@@ -401,7 +402,7 @@
         with self.rbac_utils.override_role(self):
             self._update_load_balancer_member(lb_member_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_load_balancer_member"])
     @decorators.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 1a62d31..ab1dd9c 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_namespace.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_namespace.py
@@ -51,7 +51,7 @@
         }
         self.namespace_client.update_namespace(namespace_uuid, **put_body)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_namespaces"])
     @decorators.idempotent_id('e436390d-d669-4047-9838-421ea93e94be')
     def test_list_namespaces(self):
@@ -59,7 +59,7 @@
         with self.rbac_utils.override_role(self):
             self.namespace_client.list_namespaces()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_namespaces"])
     @decorators.idempotent_id('503ae445-7e67-4db6-989a-af0b7f9a7e95')
     def test_create_namespaces(self):
@@ -67,7 +67,7 @@
         with self.rbac_utils.override_role(self):
             self._create_namespace()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_namespace"])
     @decorators.idempotent_id('f916971a-7c07-4386-b887-8b78d8a1e528')
     def test_show_namespace(self):
@@ -76,7 +76,7 @@
         with self.rbac_utils.override_role(self):
             self.namespace_client.show_namespace(namespace_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_namespace"])
     @decorators.idempotent_id('3649f65a-922a-4b8a-9b8b-520c333e192e')
     def test_update_namespace(self):
@@ -85,7 +85,7 @@
         with self.rbac_utils.override_role(self):
             self._update_namespace(namespace_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_namespace"])
     @decorators.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 7465969..755f7fe 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_network_ipams.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_network_ipams.py
@@ -41,7 +41,7 @@
                         new_ipam['uuid'])
         return new_ipam
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_network_ipams"])
     @decorators.idempotent_id('9ee2c4d8-3209-4ef8-86e1-0ecea2d4c5f2')
     def test_list_network_ipams(self):
@@ -49,7 +49,7 @@
         with self.rbac_utils.override_role(self):
             self.network_ipams_client.list_network_ipams()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_network_ipams"])
     @decorators.idempotent_id('ef2415ea-0810-413a-85a0-4508c9d7af91')
     def test_create_network_ipams(self):
@@ -57,7 +57,7 @@
         with self.rbac_utils.override_role(self):
             self._create_network_ipams()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_network_ipam"])
     @decorators.idempotent_id('527b19e5-068a-44e3-b175-b504eafeec6e')
     def test_show_network_ipam(self):
@@ -66,7 +66,7 @@
         with self.rbac_utils.override_role(self):
             self.network_ipams_client.show_network_ipam(new_ipam['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_network_ipam"])
     @decorators.idempotent_id('118c1620-efb6-4cc6-8eb5-71bf8631d365')
     def test_delete_network_ipam(self):
@@ -75,7 +75,7 @@
         with self.rbac_utils.override_role(self):
             self.network_ipams_client.delete_network_ipam(new_ipam['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_network_ipam"])
     @decorators.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 c71ccbd..b3ca053 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_network_policy.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_network_policy.py
@@ -53,7 +53,7 @@
         self.network_policy_client.update_network_policy(network_policy_uuid,
                                                          **put_body)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_network_policys"])
     @decorators.idempotent_id('fa2a28f3-a8bb-4908-95b9-1e11cf58b16f')
     def test_list_policys(self):
@@ -61,7 +61,7 @@
         with self.rbac_utils.override_role(self):
             self.network_policy_client.list_network_policys()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_network_policys"])
     @decorators.idempotent_id('a30be228-afba-40c9-8678-ae020db68d79')
     def test_create_network_policys(self):
@@ -69,7 +69,7 @@
         with self.rbac_utils.override_role(self):
             self._create_policy()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_network_policy"])
     @decorators.idempotent_id('6cefe92e-8936-49a6-bce0-12da3396e7ab')
     def test_show_network_policy(self):
@@ -78,7 +78,7 @@
         with self.rbac_utils.override_role(self):
             self.network_policy_client.show_network_policy(policy_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_network_policy"])
     @decorators.idempotent_id('1d470505-3ad4-4870-87d7-3f0b0f9fc635')
     def test_update_network_policy(self):
@@ -87,7 +87,7 @@
         with self.rbac_utils.override_role(self):
             self._update_policy(policy_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_network_policy"])
     @decorators.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 d9d1b27..27fe4e8 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_port_tuple.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_port_tuple.py
@@ -69,7 +69,7 @@
                         new_tuple['uuid'])
         return new_tuple
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_port_tuples"])
     @decorators.idempotent_id('3789eef8-0e80-4057-b7b0-926655144beb')
     def test_list_port_tuples(self):
@@ -77,7 +77,7 @@
         with self.rbac_utils.override_role(self):
             self.port_tuple_client.list_port_tuples()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_port_tuple"])
     @decorators.idempotent_id('ae5a90ed-5771-4680-be6b-c7626caa3a52')
     def test_show_port_tuple(self):
@@ -86,7 +86,7 @@
         with self.rbac_utils.override_role(self):
             self.port_tuple_client.show_port_tuple(new_tuple['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_port_tuples"])
     @decorators.idempotent_id('0e2283da-fe25-4204-b5b3-fef3c200d0c8')
     def test_create_port_tuples(self):
@@ -94,7 +94,7 @@
         with self.rbac_utils.override_role(self):
             self._create_port_tuple()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_port_tuple"])
     @decorators.idempotent_id('b16f19e2-ec8e-4107-961d-561890183dd0')
     def test_update_port_tuple(self):
@@ -105,7 +105,7 @@
             self.port_tuple_client.update_port_tuple(
                 new_tuple['uuid'], display_name=update_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_port_tuple"])
     @decorators.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 d14174f..d4faaf6 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_project.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_project.py
@@ -52,7 +52,7 @@
         }
         self.project_client.update_project(project_uuid, **put_body)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_projects"])
     @decorators.idempotent_id('7db819fd-ceee-4a6b-9ad7-2e837c055bdd')
     def test_list_projects(self):
@@ -60,7 +60,7 @@
         with self.rbac_utils.override_role(self):
             self.project_client.list_projects()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_projects"])
     @decorators.idempotent_id('38b9b7a8-1568-417d-b0a3-e7adee88e4b9')
     def test_create_projects(self):
@@ -68,7 +68,7 @@
         with self.rbac_utils.override_role(self):
             self._create_project()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_project"])
     @decorators.idempotent_id('c47e57c4-34b0-46c2-a678-83b1fe9afd25')
     def test_show_project(self):
@@ -77,7 +77,7 @@
         with self.rbac_utils.override_role(self):
             self.project_client.show_project(project_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_project"])
     @decorators.idempotent_id('3d4bd416-16cc-437c-9e95-f9ceda424f8b')
     def test_update_project(self):
@@ -86,7 +86,7 @@
         with self.rbac_utils.override_role(self):
             self._update_project(project_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_project"])
     @decorators.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 5407278..91b7bbb 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_qos_config.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_qos_config.py
@@ -47,7 +47,7 @@
                         qos_config['uuid'])
         return qos_config
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_qos_configs"])
     @decorators.idempotent_id('6bc44b34-14d4-4e0e-b45d-fe3df047879f')
     def test_list_qos_configs(self):
@@ -56,7 +56,7 @@
         with self.rbac_utils.override_role(self):
             self.qos_client.list_qos_configs()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_qos_configs"])
     @decorators.idempotent_id('031b4a27-22cd-4d93-938d-ba6d0f3163ba')
     def test_create_qos_configs(self):
@@ -64,7 +64,7 @@
         with self.rbac_utils.override_role(self):
             self._create_qos_configs()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_qos_config"])
     @decorators.idempotent_id('a9d82b49-3492-4667-b252-ef30b0ee6eb3')
     def test_show_qos_config(self):
@@ -73,7 +73,7 @@
         with self.rbac_utils.override_role(self):
             self.qos_client.show_qos_config(qos_config['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_qos_config"])
     @decorators.idempotent_id('d324a5e6-cc86-4444-91a2-74592283a7ec')
     def test_delete_qos_config(self):
@@ -82,7 +82,7 @@
         with self.rbac_utils.override_role(self):
             self.qos_client.delete_qos_config(qos_config['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_qos_config"])
     @decorators.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 77a4a28..5389c8d 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
@@ -52,7 +52,7 @@
                         qos_global_config['uuid'])
         return qos_global_config
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_global_qos_configs"])
     @decorators.idempotent_id('74e5a7b7-f538-4be3-90a5-6862b07fb118')
     def test_list_global_qos_configs(self):
@@ -61,7 +61,7 @@
         with self.rbac_utils.override_role(self):
             self.qos_client.list_global_qos_configs()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_global_qos_configs"])
     @decorators.idempotent_id('d7da1ca0-7bf7-4d1b-982c-820cd37fe9fa')
     def test_create_global_qos_configs(self):
@@ -69,7 +69,7 @@
         with self.rbac_utils.override_role(self):
             self._create_qos_global_configs()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_global_qos_config"])
     @decorators.idempotent_id('e3bd44e0-19a9-46e7-83d3-268dcc537ad9')
     def test_show_global_qos_config(self):
@@ -78,7 +78,7 @@
         with self.rbac_utils.override_role(self):
             self.qos_client.show_global_qos_config(instance_id=test['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_global_qos_config"])
     @decorators.idempotent_id('f834c4d7-bc81-4c59-bada-c4d752219a6e')
     def test_update_global_qos_config(self):
@@ -90,7 +90,7 @@
                 instance_id=qos['uuid'],
                 display_name=display_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_global_qos_config"])
     @decorators.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 3224208..49c822e 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_qos_queue.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_qos_queue.py
@@ -37,7 +37,7 @@
 
     def _create_qos_queues(self):
         name = data_utils.rand_name('test-rbac-qos-queue')
-        if rbac_base.get_contail_version() < 5:
+        if rbac_base.get_contail_version() < 3.2:
             fq_name = [name]
         else:
             fq_name = ['default-global-system-config',
@@ -49,7 +49,7 @@
                         qos_queue['uuid'])
         return qos_queue
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_qos_queues"])
     @decorators.idempotent_id('3d3a4397-2afe-4bbd-be59-56a1bcc2e49d')
     def test_list_qos_queues(self):
@@ -58,7 +58,7 @@
         with self.rbac_utils.override_role(self):
             self.qos_client.list_qos_queues()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_qos_queues"])
     @decorators.idempotent_id('d89c45f4-c83c-47b3-8720-7feffab4519c')
     def test_create_qos_queues(self):
@@ -66,7 +66,7 @@
         with self.rbac_utils.override_role(self):
             self._create_qos_queues()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_qos_queue"])
     @decorators.idempotent_id('d2773d5c-9858-4938-8a77-62cafd5034da')
     def test_show_qos_queue(self):
@@ -75,7 +75,7 @@
         with self.rbac_utils.override_role(self):
             self.qos_client.show_qos_queue(qos_queue['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_qos_queue"])
     @decorators.idempotent_id('64c828d0-6594-472b-a504-40915067c7bd')
     def test_delete_qos_queue(self):
@@ -84,7 +84,7 @@
         with self.rbac_utils.override_role(self):
             self.qos_client.delete_qos_queue(qos_queue['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_qos_queue"])
     @decorators.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 7a34b33..70488fa 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_route.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_route.py
@@ -49,7 +49,7 @@
                         route_table['uuid'])
         return route_table
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_route_tables"])
     @decorators.idempotent_id('ca5a5d42-6e49-40e4-a5ac-de07b397b775')
     def test_list_route_tables(self):
@@ -58,7 +58,7 @@
         with self.rbac_utils.override_role(self):
             self.route_client.list_route_tables()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_route_table"])
     @decorators.idempotent_id('084a2759-991a-4ae2-bde4-8f9915966f6e')
     def test_show_route_table(self):
@@ -67,7 +67,7 @@
         with self.rbac_utils.override_role(self):
             self.route_client.show_route_table(route_table['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_route_tables"])
     @decorators.idempotent_id('3fab8105-c0be-4c9e-be5f-d2dce4deb921')
     def test_create_route_tables(self):
@@ -75,7 +75,7 @@
         with self.rbac_utils.override_role(self):
             self._create_route_tables()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_route_table"])
     @decorators.idempotent_id('2acee7ad-843e-40b0-b8f8-a6d90a51c6c8')
     def test_update_route_table(self):
@@ -87,7 +87,7 @@
                 route_id=route_table['uuid'],
                 display_name=display_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_route_table"])
     @decorators.idempotent_id('20a5086c-ec9a-43e0-ae2c-4161c0f4b280')
     def test_delete_route_table(self):
@@ -117,7 +117,7 @@
                         interface_route_table['uuid'])
         return interface_route_table
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_interface_route_tables"])
     @decorators.idempotent_id('b1f8f0a6-6074-4615-a439-19869a48bc49')
     def test_list_interface_route(self):
@@ -126,7 +126,7 @@
         with self.rbac_utils.override_role(self):
             self.route_client.list_interface_route_tables()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_interface_route_table"])
     @decorators.idempotent_id('94703a28-5e33-4003-b95b-6a3cc5752fd4')
     def test_show_interface_route(self):
@@ -136,7 +136,7 @@
             self.route_client.show_interface_route_table(
                 interface_rte_table['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_interface_route_tables"])
     @decorators.idempotent_id('b89ef437-4759-4c04-948b-d2ff9675ab07')
     def test_create_interface_route(self):
@@ -144,7 +144,7 @@
         with self.rbac_utils.override_role(self):
             self._create_interface_route_tables()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_interface_route_table"])
     @decorators.idempotent_id('e9346d4f-7a07-41bc-8e88-e8ae9fa309ea')
     def test_update_interface_route(self):
@@ -156,7 +156,7 @@
                 interface_route_id=interface_rte_table['uuid'],
                 display_name=display_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_interface_route_table"])
     @decorators.idempotent_id('b00444a5-cb4c-45bc-b393-503e9e333e98')
     def test_delete_interface_route(self):
@@ -187,7 +187,7 @@
                         route_target['uuid'])
         return route_target
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_route_targets"])
     @decorators.idempotent_id('757efd07-8027-4a16-887a-1e42f16b4140')
     def test_list_route_targets(self):
@@ -196,7 +196,7 @@
         with self.rbac_utils.override_role(self):
             self.route_client.list_route_targets()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_route_target"])
     @decorators.idempotent_id('76c60d98-dd5e-453a-bf0e-7854f78a1a5e')
     def test_show_route_target(self):
@@ -205,7 +205,7 @@
         with self.rbac_utils.override_role(self):
             self.route_client.show_route_target(target['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_route_targets"])
     @decorators.idempotent_id('fcdb4ebc-b92d-49f2-88e9-68c93aec94be')
     def test_create_route_targets(self):
@@ -213,7 +213,7 @@
         with self.rbac_utils.override_role(self):
             self._create_route_targets()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_route_target"])
     @decorators.idempotent_id('dd830a77-4bfe-4a8c-b4e9-08b6ef2af3be')
     def test_update_route_target(self):
@@ -225,7 +225,7 @@
                 route_target_id=target['uuid'],
                 display_name=display_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_route_target"])
     @decorators.idempotent_id('dfaa58f9-ec29-4d51-a475-870fac08908d')
     def test_delete_route_target(self):
@@ -254,7 +254,7 @@
                         route_aggr['uuid'])
         return route_aggr
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_route_aggregates"])
     @decorators.idempotent_id('15f2c30c-4404-4228-94a0-86c5ec5cf62e')
     def test_list_route_aggregates(self):
@@ -263,7 +263,7 @@
         with self.rbac_utils.override_role(self):
             self.route_client.list_route_aggregates()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_route_aggregate"])
     @decorators.idempotent_id('c8edee30-81c4-44e2-8485-055bed853384')
     def test_show_route_aggregate(self):
@@ -273,7 +273,7 @@
             self.route_client.show_route_aggregate(
                 route_aggr['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_route_aggregates"])
     @decorators.idempotent_id('7553a54f-e41c-4555-b745-a858c5a70690')
     def test_create_route_aggregates(self):
@@ -281,7 +281,7 @@
         with self.rbac_utils.override_role(self):
             self._create_route_aggregates()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_route_aggregate"])
     @decorators.idempotent_id('de1e6102-0bc6-4f9b-a354-48eb051ab5e4')
     def test_update_route_aggregate(self):
@@ -293,7 +293,7 @@
                 route_aggr_id=route_aggr['uuid'],
                 display_name=display_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_route_aggregate"])
     @decorators.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 8a0cdfc..c07ca42 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_routers.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_routers.py
@@ -121,7 +121,7 @@
                         router['uuid'])
         return router
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_physical_routers"])
     @decorators.idempotent_id('349ac042-b922-4727-9e1b-8f363ee343f3')
     def test_list_physical_routers(self):
@@ -129,7 +129,7 @@
         with self.rbac_utils.override_role(self):
             self.router_client.list_physical_routers()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_physical_routers"])
     @decorators.idempotent_id('d0b7449e-9037-4f9f-8c7e-9f364c95f18a')
     def test_create_physical_routers(self):
@@ -137,7 +137,7 @@
         with self.rbac_utils.override_role(self):
             self._create_physical_router()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_physical_router"])
     @decorators.idempotent_id('6dfc53f4-a884-46d5-b303-22ba59c116f4')
     def test_show_physical_router(self):
@@ -146,7 +146,7 @@
         with self.rbac_utils.override_role(self):
             self.router_client.show_physical_router(physical_router_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_physical_router"])
     @decorators.idempotent_id('c270f369-8cd7-4ee3-8ab1-4580c3138a5c')
     def test_update_physical_router(self):
@@ -158,7 +158,7 @@
                 physical_router_uuid,
                 display_name=updated_fq_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_physical_router"])
     @decorators.idempotent_id('eeded742-6a8d-4e88-bfa8-fe32db463c53')
     def test_delete_physical_router(self):
@@ -167,7 +167,7 @@
         with self.rbac_utils.override_role(self):
             self.router_client.delete_physical_router(physical_router_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_bgp_routers"])
     @decorators.idempotent_id('49bfb461-f99e-4585-b051-e20a3c937589')
     def test_list_bgp_routers(self):
@@ -175,7 +175,7 @@
         with self.rbac_utils.override_role(self):
             self.router_client.list_bgp_routers()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_bgp_routers"])
     @decorators.idempotent_id('7567974c-040e-4edd-b3a1-c633aa9651cb')
     def test_create_bgp_routers(self):
@@ -185,7 +185,7 @@
         with self.rbac_utils.override_role(self):
             self._create_bgp_router(routing_instance)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_bgp_router"])
     @decorators.idempotent_id('0d3ad424-18c9-4d96-8708-fa1ebd45594b')
     def test_show_bgp_router(self):
@@ -196,7 +196,7 @@
         with self.rbac_utils.override_role(self):
             self.router_client.show_bgp_router(bgp_router_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_bgp_router"])
     @decorators.idempotent_id('dc50e7c5-7614-4281-8a66-282c52f3c769')
     def test_update_bgp_router(self):
@@ -210,7 +210,7 @@
                 bgp_router_uuid,
                 display_name=updated_fq_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_bgp_router"])
     @decorators.idempotent_id('f14aee72-cad4-4c3e-8eea-7886a81abb24')
     def test_delete_bgp_router(self):
@@ -221,7 +221,7 @@
         with self.rbac_utils.override_role(self):
             self.router_client.delete_bgp_router(bgp_router_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_global_vrouter_configs"])
     @decorators.idempotent_id('4af768d1-3cbe-4aff-bcbc-0e045cac3277')
     def test_list_global_vrouter_configs(self):
@@ -229,8 +229,7 @@
         with self.rbac_utils.override_role(self):
             self.router_client.list_global_vrouter_configs()
 
-    @decorators.skip_because(bug="1792446")
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_global_vrouter_configs"])
     @decorators.idempotent_id('e13d800f-9304-4a06-9bf1-ad08345a13a8')
     def test_create_global_vrouter_configs(self):
@@ -246,8 +245,7 @@
         with self.rbac_utils.override_role(self):
             self._create_global_vrouter_config()
 
-    @decorators.skip_because(bug="1792446")
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_global_vrouter_config"])
     @decorators.idempotent_id('3bb6f4e1-fd3f-4338-8392-f7f80974a80e')
     def test_show_global_vrouter_config(self):
@@ -266,8 +264,7 @@
             self.router_client.show_global_vrouter_config(
                 global_vrouter_config_uuid)
 
-    @decorators.skip_because(bug="1792446")
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_global_vrouter_config"])
     @decorators.idempotent_id('36fcdd51-c42b-4e67-8c26-73d4cde47507')
     def test_update_global_vrouter_config(self):
@@ -289,24 +286,18 @@
                 global_vrouter_config_uuid,
                 display_name=updated_fq_name)
 
-    @decorators.skip_because(bug="1792446")
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_global_vrouter_config"])
     @decorators.idempotent_id('4f3d59e8-3dac-4346-9d13-5ebe5ad8f6cf')
     def test_delete_global_vrouter_config(self):
         """test method for delete global vrouter config objects"""
-        if CONF.sdn.test_vrouter_global_config:
-            raise self.skipException('Vrouter global config tests are '
-                                     'disabled. Enabling may make your '
-                                     'environment unstable.')
-
         global_vrouter_config_uuid = \
             self._create_global_vrouter_config()['uuid']
         with self.rbac_utils.override_role(self):
             self.router_client.delete_global_vrouter_config(
                 global_vrouter_config_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_logical_routers"])
     @decorators.idempotent_id('674bf3de-a9e5-45c2-921b-b89db73a2abe')
     def test_list_logical_routers(self):
@@ -314,7 +305,7 @@
         with self.rbac_utils.override_role(self):
             self.router_client.list_logical_routers()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_logical_routers"])
     @decorators.idempotent_id('610f051b-8eba-4d3a-ba43-91386bfc0e52')
     def test_create_logical_routers(self):
@@ -322,7 +313,7 @@
         with self.rbac_utils.override_role(self):
             self._create_logical_router()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_logical_router"])
     @decorators.idempotent_id('992841d4-0d5d-4d85-b513-049b33e2a2e2')
     def test_show_logical_router(self):
@@ -331,7 +322,7 @@
         with self.rbac_utils.override_role(self):
             self.router_client.show_logical_router(logical_router_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_logical_router"])
     @decorators.idempotent_id('518197bf-5233-4059-9021-5d7ecc74718e')
     def test_update_logical_router(self):
@@ -343,7 +334,7 @@
                 logical_router_uuid,
                 display_name=updated_fq_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_logical_router"])
     @decorators.idempotent_id('70448b9c-4444-45e0-b307-7bff4dc075b1')
     def test_delete_logical_router(self):
@@ -352,7 +343,7 @@
         with self.rbac_utils.override_role(self):
             self.router_client.delete_logical_router(logical_router_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_virtual_routers"])
     @decorators.idempotent_id('604dc476-732e-4890-8665-a497360f5475')
     def test_list_virtual_routers(self):
@@ -360,7 +351,7 @@
         with self.rbac_utils.override_role(self):
             self.router_client.list_virtual_routers()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_virtual_routers"])
     @decorators.idempotent_id('114beb14-45c0-4714-a407-d160bb102022')
     def test_create_virtual_routers(self):
@@ -368,7 +359,7 @@
         with self.rbac_utils.override_role(self):
             self._create_virtual_router()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_virtual_router"])
     @decorators.idempotent_id('258fe4e0-3e39-460f-aafa-e3b53c96e534')
     def test_show_virtual_router(self):
@@ -377,7 +368,7 @@
         with self.rbac_utils.override_role(self):
             self.router_client.show_virtual_router(virtual_router_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_virtual_router"])
     @decorators.idempotent_id('d1c72191-2068-4552-a78f-038cdd4c9c1d')
     def test_update_virtual_router(self):
@@ -389,7 +380,7 @@
                 virtual_router_uuid,
                 display_name=updated_fq_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_virtual_router"])
     @decorators.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 e2182fd..850f767 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_routing.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_routing.py
@@ -57,7 +57,7 @@
                         new_instance['uuid'])
         return new_instance
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_routing_instances"])
     @decorators.idempotent_id('054c56ba-76b2-4161-a702-40301d8de085')
     def test_list_routing_instances(self):
@@ -65,7 +65,7 @@
         with self.rbac_utils.override_role(self):
             self.routing_client.list_routing_instances()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_routing_instances"])
     @decorators.idempotent_id('3d44a46b-5436-43a8-b2f7-8581f0f04dbc')
     def test_create_routing_instances(self):
@@ -73,7 +73,7 @@
         with self.rbac_utils.override_role(self):
             self._create_routing_instances()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_routing_instance"])
     @decorators.idempotent_id('161abb37-6037-422b-b453-108a5d10caca')
     def test_show_routing_instance(self):
@@ -82,7 +82,7 @@
         with self.rbac_utils.override_role(self):
             self.routing_client.show_routing_instance(new_instance['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_routing_instance"])
     @decorators.idempotent_id('1d3af01e-01bf-4347-a9bc-633732339e0e')
     def test_delete_routing_instance(self):
@@ -91,7 +91,7 @@
         with self.rbac_utils.override_role(self):
             self.routing_client.delete_routing_instance(new_instance['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_routing_instance"])
     @decorators.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 9892d91..dc0b619 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_routing_policy.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_routing_policy.py
@@ -53,7 +53,7 @@
         self.routing_policy_client.update_routing_policy(routing_policy_uuid,
                                                          **put_body)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_routing_policys"])
     @decorators.idempotent_id('fe25a306-bc4f-42b3-91ca-38df01e35345')
     def test_list_routing_policys(self):
@@ -61,7 +61,7 @@
         with self.rbac_utils.override_role(self):
             self.routing_policy_client.list_routing_policys()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_routing_policys"])
     @decorators.idempotent_id('f8ca5e30-8bb3-410f-8618-8fdca70bda06')
     def test_create_routing_policys(self):
@@ -69,7 +69,7 @@
         with self.rbac_utils.override_role(self):
             self._create_routing_policy()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_routing_policy"])
     @decorators.idempotent_id('3421e84e-3e2a-452a-9a26-b2caf00b1cbc')
     def test_show_routing_policy(self):
@@ -78,7 +78,7 @@
         with self.rbac_utils.override_role(self):
             self.routing_policy_client.show_routing_policy(policy_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_routing_policy"])
     @decorators.idempotent_id('9fc1f44f-c8e2-4f5a-8239-e9b783f55d94')
     def test_update_routing_policy(self):
@@ -87,7 +87,7 @@
         with self.rbac_utils.override_role(self):
             self._update_routing_policy(policy_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_routing_policy"])
     @decorators.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 6154f5e..e537f62 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_security_group.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_security_group.py
@@ -49,7 +49,7 @@
                         sec_grp['uuid'])
         return sec_grp
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_security_groups"])
     @decorators.idempotent_id('a13cc1d5-f562-4b68-b732-980deb3cddf4')
     def test_list_security_groups(self):
@@ -58,7 +58,7 @@
         with self.rbac_utils.override_role(self):
             self.security_group_client.list_security_groups()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_security_group"])
     @decorators.idempotent_id('c7ca1781-08ae-4fa2-bd6d-1f369950c4c4')
     def test_show_security_group(self):
@@ -68,7 +68,7 @@
         with self.rbac_utils.override_role(self):
             self.security_group_client.show_security_group(grp_id)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_security_group"])
     @decorators.idempotent_id('e682d7b4-deb8-4b5c-9c9b-1e1ada827b40')
     def test_delete_security_group(self):
@@ -78,7 +78,7 @@
         with self.rbac_utils.override_role(self):
             self._delete_security_group(grp_id)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_security_groups"])
     @decorators.idempotent_id('63a2ff14-7869-40a2-962a-d65752de5651')
     def test_create_security_groups(self):
@@ -86,7 +86,7 @@
         with self.rbac_utils.override_role(self):
             self._create_security_groups()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_security_group"])
     @decorators.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 e16eab4..7cf5e24 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_service_appliances.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_service_appliances.py
@@ -56,7 +56,7 @@
                         new_appliance['uuid'])
         return new_appliance
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_service_appliances"])
     @decorators.idempotent_id('6b5fc17c-34e6-4d21-a53e-a0dfe69afd31')
     def test_list_service_appliances(self):
@@ -64,7 +64,7 @@
         with self.rbac_utils.override_role(self):
             self.service_appliances_client.list_service_appliances()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_service_appliances"])
     @decorators.idempotent_id('0563c0c8-b986-466e-8540-aa8ad7a10367')
     def test_create_service_appliances(self):
@@ -73,7 +73,7 @@
         with self.rbac_utils.override_role(self):
             self._create_service_appliances(new_set)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_service_appliance"])
     @decorators.idempotent_id('ea30dcfe-8657-4a7d-9cf1-3176d334bf27')
     def test_show_service_appliance(self):
@@ -84,7 +84,7 @@
             self.service_appliances_client.show_service_appliance(
                 new_appliance['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_service_appliance"])
     @decorators.idempotent_id('a54ca33a-8590-4844-96d7-b96882b59e86')
     def test_update_service_appliance(self):
@@ -97,7 +97,7 @@
                 new_appliance['uuid'],
                 display_name=update_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_service_appliance"])
     @decorators.idempotent_id('362deff5-7b72-4929-ba81-972cfcfa1309')
     def test_delete_service_appliance(self):
@@ -108,7 +108,7 @@
             self.service_appliances_client.delete_service_appliance(
                 new_appliance['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_service_appliance_sets"])
     @decorators.idempotent_id('c1e74da9-00b6-4c88-adda-2ce49094e570')
     def test_list_service_appl_sets(self):
@@ -116,7 +116,7 @@
         with self.rbac_utils.override_role(self):
             self.service_appliances_client.list_service_appliance_sets()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_service_appliance_sets"])
     @decorators.idempotent_id('eb00d6cf-590f-41bf-8ee4-5be625d9cb93')
     def test_create_service_appl_sets(self):
@@ -124,7 +124,7 @@
         with self.rbac_utils.override_role(self):
             self._create_service_appliance_sets()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_service_appliance_set"])
     @decorators.idempotent_id('dd35dd04-e7d9-46bb-8f36-26835f122572')
     def test_show_service_appl_set(self):
@@ -134,7 +134,7 @@
             self.service_appliances_client.show_service_appliance_set(
                 new_set['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_service_appliance_set"])
     @decorators.idempotent_id('952f063b-bc71-4f62-83b1-719bce5ad4ed')
     def test_update_service_appl_set(self):
@@ -146,7 +146,7 @@
                 new_set['uuid'],
                 display_name=update_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_service_appliance_set"])
     @decorators.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 95fd2dd..98283bb 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_service_clients.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_service_clients.py
@@ -82,7 +82,7 @@
                         new_instance['uuid'])
         return new_instance
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_service_templates"])
     @decorators.idempotent_id('841b1d32-4308-4fb6-852a-41bdd8c56c37')
     def test_list_service_templates(self):
@@ -90,7 +90,7 @@
         with self.rbac_utils.override_role(self):
             self.service_client.list_service_templates()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_service_templates"])
     @decorators.idempotent_id('3f02d14a-31e2-4476-821f-87d0cc42d9fb')
     def test_create_service_templates(self):
@@ -98,7 +98,7 @@
         with self.rbac_utils.override_role(self):
             self._create_service_template()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_service_template"])
     @decorators.idempotent_id('1f15d734-2cc6-4ded-916e-134286c6b87b')
     def test_show_service_template(self):
@@ -108,7 +108,7 @@
             self.service_client.show_service_template(
                 new_template['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_service_template"])
     @decorators.idempotent_id('3549debd-4c7a-4574-8d11-4190c8530a23')
     def test_update_service_template(self):
@@ -120,7 +120,7 @@
                 new_template['uuid'],
                 display_name=update_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_service_template"])
     @decorators.idempotent_id('e86cabd2-5b7e-4ee8-86ec-db52619b852b')
     def test_delete_service_template(self):
@@ -130,7 +130,7 @@
             self.service_client.delete_service_template(
                 new_template['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_service_health_checks"])
     @decorators.idempotent_id('5210d6ca-9a38-4b6b-b5b7-f836c3846079')
     def test_list_service_health_checks(self):
@@ -138,7 +138,7 @@
         with self.rbac_utils.override_role(self):
             self.service_client.list_service_health_checks()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_service_health_checks"])
     @decorators.idempotent_id('77716feb-0d05-4cfd-8a17-79cf0b19ed3c')
     def test_create_service_health(self):
@@ -146,7 +146,7 @@
         with self.rbac_utils.override_role(self):
             self._create_service_health_check()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_service_health_check"])
     @decorators.idempotent_id('80db4445-8d6c-4c8f-aa25-d4ea53d32d2c')
     def test_show_service_health(self):
@@ -156,7 +156,7 @@
             self.service_client.show_service_health_check(
                 new_health_check['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_service_health_check"])
     @decorators.idempotent_id('68fb1510-4b76-40cc-8979-e56e537229d2')
     def test_update_service_health(self):
@@ -168,7 +168,7 @@
                 new_health_check['uuid'],
                 display_name=update_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_service_health_check"])
     @decorators.idempotent_id('2dce3942-402a-48a4-b682-fdc425d3d935')
     def test_delete_service_health(self):
@@ -178,7 +178,7 @@
             self.service_client.delete_service_health_check(
                 new_health_check['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_service_instances"])
     @decorators.idempotent_id('1469c71e-f6f5-419f-9672-c3c67f879704')
     def test_create_service_instances(self):
@@ -186,7 +186,7 @@
         with self.rbac_utils.override_role(self):
             self._create_service_instance()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_service_instance"])
     @decorators.idempotent_id('ea5b716d-5de8-4c71-becd-f1501c22f0df')
     def test_show_service_instance(self):
@@ -196,7 +196,7 @@
             self.service_client.show_service_instance(
                 new_instance['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_service_instance"])
     @decorators.idempotent_id('74934833-29cd-416b-a5a6-273f733d058a')
     def test_delete_service_instance(self):
@@ -206,7 +206,7 @@
             self.service_client.delete_service_instance(
                 new_instance['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_service_instances"])
     @decorators.idempotent_id('da6016a3-a2a8-42a8-b064-c124c22fef6f')
     def test_list_service_instances(self):
@@ -214,7 +214,7 @@
         with self.rbac_utils.override_role(self):
             self.service_client.list_service_instances()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_service_instance"])
     @decorators.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 02916af..3fa1304 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_subnet.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_subnet.py
@@ -50,7 +50,7 @@
         }
         self.subnet_client.update_subnet(subnet_uuid, **put_body)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_subnets"])
     @decorators.idempotent_id('ddd1d9ae-cf2f-4a74-98ba-b0f481f27977')
     def test_list_subnets(self):
@@ -58,7 +58,7 @@
         with self.rbac_utils.override_role(self):
             self.subnet_client.list_subnets()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_subnets"])
     @decorators.idempotent_id('ee0cb904-d162-44a4-b7b0-a7451f667ed5')
     def test_create_subnets(self):
@@ -66,7 +66,7 @@
         with self.rbac_utils.override_role(self):
             self._create_subnet()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_subnet"])
     @decorators.idempotent_id('994618f2-5b40-460c-a6a8-6479bc15bf80')
     def test_show_subnet(self):
@@ -75,7 +75,7 @@
         with self.rbac_utils.override_role(self):
             self.subnet_client.show_subnet(subnet_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_subnet"])
     @decorators.idempotent_id('565e44c9-eb9b-4ae6-9ebb-db422a9751ee')
     def test_update_subnet(self):
@@ -84,7 +84,7 @@
         with self.rbac_utils.override_role(self):
             self._update_subnet(subnet_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_subnet"])
     @decorators.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 8f48e34..9bfd3ad 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_dns.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_dns.py
@@ -71,7 +71,7 @@
                         dns_record['virtual-DNS-record']['uuid'])
         return dns_record
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_virtual_DNSs"])
     @decorators.idempotent_id('8401d690-afdf-4b6e-ad60-b9363a8cfb1d')
     def test_list_virtual_dns(self):
@@ -79,7 +79,7 @@
         with self.rbac_utils.override_role(self):
             self.virtual_dns_client.list_virtual_dns()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_virtual_DNSs"])
     @decorators.idempotent_id('a7dd2c9e-e1eb-4dc4-ac70-4d48a291a3bf')
     def test_create_virtual_dns(self):
@@ -87,7 +87,7 @@
         with self.rbac_utils.override_role(self):
             self._create_virtual_dns()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_virtual_DNS"])
     @decorators.idempotent_id('ffc0fc82-3bff-48ab-b65a-3d90b4a3154d')
     def test_show_virtual_dns(self):
@@ -97,7 +97,7 @@
             self.virtual_dns_client.show_virtual_dns(
                 dns['virtual-DNS']['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_virtual_DNS"])
     @decorators.idempotent_id('4793caa1-7707-4123-b1b4-c3feae91312f')
     def test_delete_virtual_dns(self):
@@ -107,7 +107,7 @@
             self.virtual_dns_client.delete_virtual_dns(
                 dns['virtual-DNS']['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_virtual_DNS"])
     @decorators.idempotent_id('2bc43935-57c1-4bf6-9868-78ccfce164bb')
     def test_update_virtual_dns(self):
@@ -123,7 +123,7 @@
                 virtual_DNS_data=virtual_dns_data,
                 display_name=display_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_virtual_DNS_records"])
     @decorators.idempotent_id('e9103999-2f02-4f04-a8a0-906ca4fb394d')
     def test_list_virtual_dns_records(self):
@@ -131,7 +131,7 @@
         with self.rbac_utils.override_role(self):
             self.virtual_dns_client.list_virtual_dns_records()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_virtual_DNS_records"])
     @decorators.idempotent_id('bd9f3992-0ce4-4477-97a0-1271bc8ad9ef')
     def test_create_virtual_dns_records(self):
@@ -141,7 +141,7 @@
         with self.rbac_utils.override_role(self):
             self._create_virtual_dns_record(dns)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_virtual_DNS_record"])
     @decorators.idempotent_id('fa3d1a2b-d788-4623-89a4-3a9ed1db7a7d')
     def test_show_virtual_dns_record(self):
@@ -153,7 +153,7 @@
             self.virtual_dns_client.show_virtual_dns_record(
                 dns_record['virtual-DNS-record']['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_virtual_DNS_record"])
     @decorators.idempotent_id('de31e867-c997-4b4c-a095-43c647f5c192')
     def test_delete_virtual_dns_record(self):
@@ -165,7 +165,7 @@
             self.virtual_dns_client.delete_virtual_dns_record(
                 dns_record['virtual-DNS-record']['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_virtual_DNS_record"])
     @decorators.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 06444e5..27f6775 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_ip.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_ip.py
@@ -51,7 +51,7 @@
         }
         self.virtual_ip_client.update_virtual_ip(virtual_ip_uuid, **put_body)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_virtual_ips"])
     @decorators.idempotent_id('92303eee-bd96-48bc-a02c-39950bd19a21')
     def test_list_virtual_ips(self):
@@ -59,7 +59,7 @@
         with self.rbac_utils.override_role(self):
             self.virtual_ip_client.list_virtual_ips()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_virtual_ips"])
     @decorators.idempotent_id('e0070888-995d-46ab-91fc-db1412eba2f7')
     def test_create_virtual_ips(self):
@@ -67,7 +67,7 @@
         with self.rbac_utils.override_role(self):
             self._create_virtual_ip()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_virtual_ip"])
     @decorators.idempotent_id('2a4b3abd-c6f7-4d82-aa31-02e53d2a8fb9')
     def test_show_virtual_ip(self):
@@ -76,7 +76,7 @@
         with self.rbac_utils.override_role(self):
             self.virtual_ip_client.show_virtual_ip(virtual_ip_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_virtual_ip"])
     @decorators.idempotent_id('0e975c92-62dc-4e6e-82cc-8cf37da3c5b2')
     def test_update_virtual_ip(self):
@@ -85,7 +85,7 @@
         with self.rbac_utils.override_role(self):
             self._update_virtual_ip(virtual_ip_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_virtual_ip"])
     @decorators.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 f4ba706..94abb45 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_machines.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_machines.py
@@ -98,7 +98,7 @@
                                  cls.ipam['uuid'])
         super(VMContrailTest, cls).resource_cleanup()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_virtual_machine_interfaces"])
     @decorators.idempotent_id('e27d1fae-7324-4ef3-87b1-e7f519b1e2a7')
     def test_list_vm_interfaces(self):
@@ -107,7 +107,7 @@
         with self.rbac_utils.override_role(self):
             self.vm_client.list_virtual_machine_interfaces()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_virtual_machine_interfaces"])
     @decorators.idempotent_id('d8a3a524-d61b-4bcb-8146-c5d4f308df8e')
     def test_add_vm_interfaces(self):
@@ -115,7 +115,7 @@
         with self.rbac_utils.override_role(self):
             self._create_virual_machine_interface()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_virtual_machine_interface"])
     @decorators.idempotent_id('3f17125a-9060-4c4a-a23f-0fe2aba2ccef')
     def test_show_vm_interface(self):
@@ -124,7 +124,7 @@
         with self.rbac_utils.override_role(self):
             self.vm_client.show_virtual_machine_interface(test['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_virtual_machine_interface"])
     @decorators.idempotent_id('ce7f9471-ba1b-40d2-94f1-bdd0c610e22f')
     def test_delete_vm_interface(self):
@@ -133,7 +133,7 @@
         with self.rbac_utils.override_role(self):
             self.vm_client.delete_vm_interface(body['uuid'])
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_virtual_machine_interface"])
     @decorators.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 b1d54f5..64130dc 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_virtual_networks.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_virtual_networks.py
@@ -65,7 +65,7 @@
                         network['uuid'])
         return network
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_virtual_networks"])
     @decorators.idempotent_id('375ebc8d-dc52-4d9c-877b-85aba35b1539')
     def test_list_virtual_networks(self):
@@ -73,7 +73,7 @@
         with self.rbac_utils.override_role(self):
             self.vn_client.list_virtual_networks()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_virtual_networks"])
     @decorators.idempotent_id('375ebc8d-dc52-4d9c-877b-96aba35b2530')
     def test_create_virtual_networks(self):
@@ -81,7 +81,7 @@
         with self.rbac_utils.override_role(self):
             self._create_virtual_network()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_virtual_network"])
     @decorators.idempotent_id('375ebc8d-dc52-4d9c-566b-150a025c1237')
     def test_update_virtual_network(self):
@@ -92,7 +92,7 @@
             self.vn_client.update_virtual_network(
                 uuid, router_external=False)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_virtual_network"])
     @decorators.idempotent_id('375ebc8d-dc52-4d9c-877b-17bcb53c3641')
     def test_delete_virtual_network(self):
@@ -101,7 +101,7 @@
         with self.rbac_utils.override_role(self):
             self.vn_client.delete_virtual_network(uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_virtual_network"])
     @decorators.idempotent_id('375ebc8d-dc52-4d9c-877b-27c1a1242a81')
     def test_show_virtual_network(self):
