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 39b74ef..6b8f6bf 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/rbac_base.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/rbac_base.py
@@ -128,6 +128,11 @@
             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 a884cca..9759525 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 b9fac97..bc79813 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 007ae2b..1d861d9 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 05ee7f2..c4ac315 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.override_role():
             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.override_role():
             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.override_role():
             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 7c23118..9ed0472 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 00b4e9f..f672850 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.override_role():
             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.override_role():
             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_bgpvpn.py b/tungsten_tempest_plugin/tests/api/contrail/test_bgpvpn.py
index dfa0518..ef2c424 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_bgpvpn.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_bgpvpn.py
@@ -55,7 +55,7 @@
             bgpvpn_uuid)
         return bgpvpn_uuid
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_bgpvpns"])
     @decorators.idempotent_id('65afb5d5-52cb-484c-9e8e-42509be7dd77')
     def test_list_bgpvpns(self):
@@ -63,7 +63,7 @@
         with self.override_role():
             self.contrail_client.list_bgpvpns()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_bgpvpns"])
     @decorators.idempotent_id('c3a7510c-c8d6-4736-9962-5c1aa032bf79')
     def test_create_bgpvpns(self):
@@ -71,7 +71,7 @@
         with self.override_role():
             self._create_bgpvpn()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_bgpvpn"])
     @decorators.idempotent_id('2fd05ca2-97d8-477c-aead-a881a2ba5e7e')
     def test_show_bgpvpn(self):
@@ -80,7 +80,7 @@
             self.contrail_client.show_bgpvpn(
                 self.bgpvpn_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_bgpvpn"])
     @decorators.idempotent_id('919aa2bb-1556-4dcf-bbef-0a31f9c6464b')
     def test_delete_bgpvpn(self):
@@ -90,7 +90,7 @@
             self.contrail_client.delete_bgpvpn(
                 new_bgpvpn_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_bgpvpn"])
     @decorators.idempotent_id('ae734791-eaeb-4ca9-908a-59d0eac1a3c0')
     def test_update_bgpvpn(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 770368f..f24fa70 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 d3c519d..04a445c 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.override_role():
             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.override_role():
             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.override_role():
             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 b43b8e6..382941f 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.override_role():
             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.override_role():
             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.override_role():
             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 0695063..3b24f74 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 a9996c8..f68daa8 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.override_role():
             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.override_role():
             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.override_role():
             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 c56abb6..172eba9 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 bf4ca80..2a24200 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.override_role():
             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.override_role():
             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.override_role():
             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 da61765..d3a9de3 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 87b9f6a..db69c3c 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.override_role():
             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.override_role():
             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 b5e4e84..251e990 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 48823c2..101ac90 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.override_role():
             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.override_role():
             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.override_role():
             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 fec579e..77589ea 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 9f6e43f..51420c0 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 20a4935..63f5f6e 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 917f7b7..dccef61 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 1383038..84d83ac 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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_policy_management.py b/tungsten_tempest_plugin/tests/api/contrail/test_policy_management.py
index 1c217d6..f7ee9cc 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_policy_management.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_policy_management.py
@@ -58,7 +58,7 @@
             policy_management_uuid)
         return policy_management_uuid
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_policy_management"])
     @decorators.idempotent_id('8fc56caa-fe8c-487f-8da6-579ae56dc831')
     def test_create_policy_management(self):
@@ -69,7 +69,7 @@
         with self.override_role():
             self._create_policy_management()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_policy_management"])
     @decorators.idempotent_id('5bfb007b-70d3-48f2-91ce-dc2ff471fe34')
     def test_list_policy_managements(self):
@@ -80,7 +80,7 @@
         with self.override_role():
             self.contrail_client.list_policy_managements()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_policy_management"])
     @decorators.idempotent_id('a62737ec-dae9-4c26-8474-c4352c578607')
     def test_show_policy_management(self):
@@ -92,7 +92,7 @@
             self.contrail_client.\
                 show_policy_management(self.policy_management_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_policy_management"])
     @decorators.idempotent_id('1a3515ce-ce89-42e0-a4aa-a6c80eed4a7e')
     def test_delete_policy_management(self):
@@ -105,7 +105,7 @@
             self.contrail_client.\
                 delete_policy_management(obj_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_policy_management"])
     @decorators.idempotent_id('833de029-cd09-4929-a40e-ddf521381474')
     def test_update_policy_management(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 7c347ae..39e8c2c 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.override_role():
             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.override_role():
             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.override_role():
             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 7ce4b6d..6750d1c 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 55a2be3..42ec69a 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 1281e65..02bc953 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.override_role():
             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.override_role():
             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.override_role():
             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 f1f7182..286433a 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 d046d3a..9d7ea47 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 ba760ae..1cbc218 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 fb97929..297b9a5 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 db9191b..b0f2f84 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 b999d7c..7986dd1 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 48ff305..abd8ab2 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 3eec879..f2d060c 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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_service_object.py b/tungsten_tempest_plugin/tests/api/contrail/test_service_object.py
index 16b184b..2b126fe 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_service_object.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_service_object.py
@@ -55,7 +55,7 @@
             service_object_uuid)
         return service_object_uuid
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_service_objects"])
     @decorators.idempotent_id('05458fa1-ba09-4772-91aa-ca06243b5f5e')
     def test_list_service_objects(self):
@@ -66,7 +66,7 @@
         with self.override_role():
             self.contrail_client.list_service_objects()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_service_object"])
     @decorators.idempotent_id('8be0e381-3abb-4256-858d-5930db4ceafb')
     def test_create_service_object(self):
@@ -77,7 +77,7 @@
         with self.override_role():
             self._create_service_object()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_service_object"])
     @decorators.idempotent_id('bb570ddd-c5fa-4691-899e-00a64568f736')
     def test_show_service_object(self):
@@ -88,7 +88,7 @@
         with self.override_role():
             self.contrail_client.show_service_object(self.service_object_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_service_object"])
     @decorators.idempotent_id('15a4d6dc-f16b-11e8-8e54-080027758b73')
     def test_delete_service_object(self):
@@ -100,7 +100,7 @@
         with self.override_role():
             self.contrail_client.delete_service_object(obj_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_service_object"])
     @decorators.idempotent_id('a6eaee65-9ead-4df5-9aa0-5329ee9a26f2')
     def test_update_service_object(self):
diff --git a/tungsten_tempest_plugin/tests/api/contrail/test_subnet.py b/tungsten_tempest_plugin/tests/api/contrail/test_subnet.py
index 1c79f67..b3ac630 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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_tag_type.py b/tungsten_tempest_plugin/tests/api/contrail/test_tag_type.py
index ab71f12..a4bb34f 100644
--- a/tungsten_tempest_plugin/tests/api/contrail/test_tag_type.py
+++ b/tungsten_tempest_plugin/tests/api/contrail/test_tag_type.py
@@ -56,7 +56,7 @@
             tag_type_uuid)
         return tag_type_uuid
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["list_tag_types"])
     @decorators.idempotent_id('53c34f3a-f426-11e8-8eb2-f2801f1b9fd1')
     def test_list_tag_types(self):
@@ -67,7 +67,7 @@
         with self.override_role():
             self.contrail_client.list_tag_types()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["show_tag_type"])
     @decorators.idempotent_id('64cf8892-f427-11e8-8eb2-f2801f1b9fd1')
     def test_show_tag_type(self):
@@ -78,7 +78,7 @@
         with self.override_role():
             self.contrail_client.show_tag_type(self.tag_type_uuid)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["create_tag_types"])
     @decorators.idempotent_id('7e602032-f427-11e8-8eb2-f2801f1b9fd1')
     def test_create_tag_types(self):
@@ -89,7 +89,7 @@
         with self.override_role():
             self._create_tag_type()
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["update_tag_type"])
     @decorators.idempotent_id('98f6beba-f427-11e8-8eb2-f2801f1b9fd1')
     def test_update_tag_type(self):
@@ -102,7 +102,7 @@
             self.contrail_client.update_tag_type(
                 self.tag_type_uuid, name=update_name)
 
-    @rbac_rule_validation.action(service="Contrail",
+    @rbac_rule_validation.action(service=CONF.sdn.service_name,
                                  rules=["delete_tag_type"])
     @decorators.idempotent_id('b0f81fae-f427-11e8-8eb2-f2801f1b9fd1')
     def test_delete_tag_type(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 ce92ec0..d06f0d1 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 e9ad951..393c85c 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 d6785db..8bb2bb6 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.override_role():
             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.override_role():
             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.override_role():
             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.override_role():
             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 0358944..10cc31d 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.override_role():
             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.override_role():
             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.override_role():
             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):
