diff --git a/designate_tempest_plugin/tests/api/admin/test_quotas.py b/designate_tempest_plugin/tests/api/admin/test_quotas.py
index ba77711..9016d96 100644
--- a/designate_tempest_plugin/tests/api/admin/test_quotas.py
+++ b/designate_tempest_plugin/tests/api/admin/test_quotas.py
@@ -13,6 +13,7 @@
 # under the License.
 from oslo_log import log as logging
 from tempest import test
+from tempest.lib import decorators
 
 from designate_tempest_plugin.tests import base
 from designate_tempest_plugin import data_utils as dns_data_utils
@@ -36,7 +37,7 @@
         cls.admin_client = cls.os_adm.quotas_client
 
     @test.attr(type='smoke')
-    @test.idempotent_id('ed42f367-e5ba-40d7-a08d-366ad787d21c')
+    @decorators.idempotent_id('ed42f367-e5ba-40d7-a08d-366ad787d21c')
     def test_show_quotas(self):
         LOG.info("Updating quotas")
         quotas = dns_data_utils.rand_quotas()
@@ -50,7 +51,7 @@
         self.assertExpected(quotas['quota'], body['quota'], self.excluded_keys)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('33e0affb-5d66-4216-881c-f101a779851a')
+    @decorators.idempotent_id('33e0affb-5d66-4216-881c-f101a779851a')
     def test_delete_quotas(self):
         LOG.info("Deleting quotas")
         _, body = self.admin_client.delete_quotas()
@@ -59,7 +60,7 @@
         self.assertEqual(body.strip(), "")
 
     @test.attr(type='smoke')
-    @test.idempotent_id('4f2b65b7-c4e1-489c-9047-755e42ba0985')
+    @decorators.idempotent_id('4f2b65b7-c4e1-489c-9047-755e42ba0985')
     def test_update_quotas(self):
         LOG.info("Updating quotas")
         quotas = dns_data_utils.rand_quotas()
diff --git a/designate_tempest_plugin/tests/api/v1/test_domains.py b/designate_tempest_plugin/tests/api/v1/test_domains.py
index 132df39..eae4086 100644
--- a/designate_tempest_plugin/tests/api/v1/test_domains.py
+++ b/designate_tempest_plugin/tests/api/v1/test_domains.py
@@ -18,6 +18,7 @@
 from tempest.common.utils import data_utils
 from tempest.lib import exceptions as lib_exc
 from tempest import test
+from tempest.lib import decorators
 
 from designate_tempest_plugin.tests import base
 
@@ -51,7 +52,7 @@
                           self.client.get_domain, domain_id)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('a78a4a6a-77a6-4dab-a61a-17df9731bca8')
+    @decorators.idempotent_id('a78a4a6a-77a6-4dab-a61a-17df9731bca8')
     def test_list_domains(self):
         # Get a list of domains
         _, domains = self.client.list_domains()
@@ -61,7 +62,7 @@
                           six.moves.map(lambda x: x['id'], domains))
 
     @test.attr(type='smoke')
-    @test.idempotent_id('29f76dd4-2456-4e42-b0ca-bbffcc6bbf59')
+    @decorators.idempotent_id('29f76dd4-2456-4e42-b0ca-bbffcc6bbf59')
     def test_create_update_get_domain(self):
         # Create Domain
         d_name = data_utils.rand_name('domain') + '.com.'
diff --git a/designate_tempest_plugin/tests/api/v1/test_records.py b/designate_tempest_plugin/tests/api/v1/test_records.py
index 65cc6f7..473e9c2 100644
--- a/designate_tempest_plugin/tests/api/v1/test_records.py
+++ b/designate_tempest_plugin/tests/api/v1/test_records.py
@@ -17,6 +17,7 @@
 import six
 from tempest.common.utils import data_utils
 from tempest import test
+from tempest.lib import decorators
 
 from designate_tempest_plugin.tests import base
 
@@ -65,7 +66,7 @@
         #                   self.client.get_record, domain_id, record_id)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('4c7bee47-68a4-4668-81f9-fa973ddfa1f1')
+    @decorators.idempotent_id('4c7bee47-68a4-4668-81f9-fa973ddfa1f1')
     def test_list_records_for_domain(self):
         # Get a list of records for a domain
         _, records = self.client.list_records(self.domain['id'])
@@ -75,7 +76,7 @@
                           six.moves.map(lambda x: x['id'], records))
 
     @test.attr(type='smoke')
-    @test.idempotent_id('1714fe3a-8a29-420e-a7dc-8209c7c174de')
+    @decorators.idempotent_id('1714fe3a-8a29-420e-a7dc-8209c7c174de')
     def test_create_update_get_delete_record(self):
         # Create Domain
         name = data_utils.rand_name('domain') + '.com.'
diff --git a/designate_tempest_plugin/tests/api/v1/test_servers.py b/designate_tempest_plugin/tests/api/v1/test_servers.py
index a2ac54c..45f0ca4 100644
--- a/designate_tempest_plugin/tests/api/v1/test_servers.py
+++ b/designate_tempest_plugin/tests/api/v1/test_servers.py
@@ -18,6 +18,7 @@
 from tempest.lib import exceptions as lib_exc
 from tempest import test
 from tempest import config
+from tempest.lib import decorators
 
 from designate_tempest_plugin.tests import base
 
@@ -69,7 +70,7 @@
                           self.client.get_server, server_id)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('0296fb0c-f400-4b52-9be4-a24f37646e3f')
+    @decorators.idempotent_id('0296fb0c-f400-4b52-9be4-a24f37646e3f')
     def test_list_servers(self):
         # Get a list of servers
         _, servers = self.client.list_servers()
@@ -79,7 +80,7 @@
                           six.moves.map(lambda x: x['id'], servers))
 
     @test.attr(type='smoke')
-    @test.idempotent_id('7d18fdfc-3959-4c3f-9855-0bf2f8c9ade2')
+    @decorators.idempotent_id('7d18fdfc-3959-4c3f-9855-0bf2f8c9ade2')
     def test_create_update_get_delete_server(self):
         # Create Dns Server
         s_name1 = data_utils.rand_name('dns-server') + '.com.'
diff --git a/designate_tempest_plugin/tests/api/v2/test_blacklists.py b/designate_tempest_plugin/tests/api/v2/test_blacklists.py
index 81178cf..271c65d 100644
--- a/designate_tempest_plugin/tests/api/v2/test_blacklists.py
+++ b/designate_tempest_plugin/tests/api/v2/test_blacklists.py
@@ -13,6 +13,7 @@
 # under the License.
 from oslo_log import log as logging
 from tempest import test
+from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 from tempest.lib.common.utils import data_utils
 
@@ -36,7 +37,7 @@
         cls.admin_client = cls.os_adm.blacklists_client
 
     @test.attr(type='smoke')
-    @test.idempotent_id('3a7f7564-6bdd-446e-addc-a3475b4c3f71')
+    @decorators.idempotent_id('3a7f7564-6bdd-446e-addc-a3475b4c3f71')
     def test_create_blacklist(self):
         LOG.info('Create a blacklist')
         blacklist = {
@@ -49,7 +50,7 @@
         self.assertExpected(blacklist, body, self.excluded_keys)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('5bc02942-6225-4619-8f49-2105581a8dd6')
+    @decorators.idempotent_id('5bc02942-6225-4619-8f49-2105581a8dd6')
     def test_show_blacklist(self):
         LOG.info('Create a blacklist')
         _, blacklist = self.admin_client.create_blacklist()
@@ -62,7 +63,7 @@
         self.assertExpected(blacklist, body, self.excluded_keys)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('dcea40d9-8d36-43cb-8440-4a842faaef0d')
+    @decorators.idempotent_id('dcea40d9-8d36-43cb-8440-4a842faaef0d')
     def test_delete_blacklist(self):
         LOG.info('Create a blacklist')
         _, blacklist = self.admin_client.create_blacklist()
@@ -76,7 +77,7 @@
         self.assertEqual(body.strip(), "")
 
     @test.attr(type='smoke')
-    @test.idempotent_id('3a2a1e6c-8176-428c-b5dd-d85217c0209d')
+    @decorators.idempotent_id('3a2a1e6c-8176-428c-b5dd-d85217c0209d')
     def test_list_blacklists(self):
         LOG.info('Create a blacklist')
         _, blacklist = self.admin_client.create_blacklist()
@@ -89,7 +90,7 @@
         self.assertGreater(len(body['blacklists']), 0)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('0063d6ad-9557-49c7-b521-e64a14d4d0d0')
+    @decorators.idempotent_id('0063d6ad-9557-49c7-b521-e64a14d4d0d0')
     def test_update_blacklist(self):
         LOG.info('Create a blacklist')
         _, blacklist = self.admin_client.create_blacklist()
diff --git a/designate_tempest_plugin/tests/api/v2/test_pool.py b/designate_tempest_plugin/tests/api/v2/test_pool.py
index a5c6e66..8411f6e 100644
--- a/designate_tempest_plugin/tests/api/v2/test_pool.py
+++ b/designate_tempest_plugin/tests/api/v2/test_pool.py
@@ -16,6 +16,7 @@
 
 from oslo_log import log as logging
 from tempest import test
+from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
 from designate_tempest_plugin.tests import base
@@ -42,7 +43,7 @@
         cls.admin_client = cls.os_adm.pool_client
 
     @test.attr(type='smoke')
-    @test.idempotent_id('69257f7c-b3d5-4e1b-998e-0677ad12f125')
+    @decorators.idempotent_id('69257f7c-b3d5-4e1b-998e-0677ad12f125')
     def test_create_pool(self):
         pool_data = {
                       "name": "Example Pool",
@@ -60,7 +61,7 @@
         self.assertExpected(pool_data, pool, self.excluded_keys)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('e80eb70a-8ee5-40eb-b06e-599597a8ab7e')
+    @decorators.idempotent_id('e80eb70a-8ee5-40eb-b06e-599597a8ab7e')
     def test_show_pool(self):
         LOG.info('Create a pool')
         _, pool = self.admin_client.create_pool()
@@ -75,7 +76,7 @@
                                 expected_key="priority")
 
     @test.attr(type='smoke')
-    @test.idempotent_id('d8c4c377-5d88-452d-a4d2-c004d72e1abe')
+    @decorators.idempotent_id('d8c4c377-5d88-452d-a4d2-c004d72e1abe')
     def test_delete_pool(self):
         LOG.info('Create a pool')
         _, pool = self.admin_client.create_pool()
@@ -89,7 +90,7 @@
            lambda: self.admin_client.show_pool(pool['id']))
 
     @test.attr(type='smoke')
-    @test.idempotent_id('77c85b40-83b2-4c17-9fbf-e6d516cfce90')
+    @decorators.idempotent_id('77c85b40-83b2-4c17-9fbf-e6d516cfce90')
     def test_list_pools(self):
         LOG.info('Create a pool')
         _, pool = self.admin_client.create_pool()
@@ -101,7 +102,7 @@
         self.assertGreater(len(body['pools']), 0)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('fdcc84ce-af65-4af6-a5fc-6c50acbea0f0')
+    @decorators.idempotent_id('fdcc84ce-af65-4af6-a5fc-6c50acbea0f0')
     def test_update_pool(self):
         LOG.info('Create a pool')
         _, pool = self.admin_client.create_pool()
@@ -114,7 +115,7 @@
         self.assertEqual("foo", patch_pool["name"])
 
     @test.attr(type='smoke')
-    @test.idempotent_id('41ad6a84-00ce-4a04-9fd5-b7c15c31e2db')
+    @decorators.idempotent_id('41ad6a84-00ce-4a04-9fd5-b7c15c31e2db')
     def test_list_pools_dot_json_fails(self):
         uri = self.admin_client.get_uri('pools.json')
 
diff --git a/designate_tempest_plugin/tests/api/v2/test_recordset.py b/designate_tempest_plugin/tests/api/v2/test_recordset.py
index 5d45f01..ab1cba8 100644
--- a/designate_tempest_plugin/tests/api/v2/test_recordset.py
+++ b/designate_tempest_plugin/tests/api/v2/test_recordset.py
@@ -14,6 +14,7 @@
 from oslo_log import log as logging
 from tempest import config
 from tempest import test
+from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 import ddt
 
@@ -40,7 +41,7 @@
         cls.zone_client = cls.os.zones_client
 
     @test.attr(type='smoke')
-    @test.idempotent_id('631d74fd-6909-4684-a61b-5c4d2f92c3e7')
+    @decorators.idempotent_id('631d74fd-6909-4684-a61b-5c4d2f92c3e7')
     def test_create_recordset(self):
         LOG.info('Create a zone')
         _, zone = self.zone_client.create_zone()
@@ -56,7 +57,7 @@
         self.assertEqual('PENDING', body['status'])
 
     @test.attr(type='smoke')
-    @test.idempotent_id('5964f730-5546-46e6-9105-5030e9c492b2')
+    @decorators.idempotent_id('5964f730-5546-46e6-9105-5030e9c492b2')
     def test_list_recordsets(self):
         LOG.info('Create a zone')
         _, zone = self.zone_client.create_zone()
@@ -74,7 +75,7 @@
         self.assertGreater(len(body), 0)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('84c13cb2-9020-4c1e-aeb0-c348d9a70caa')
+    @decorators.idempotent_id('84c13cb2-9020-4c1e-aeb0-c348d9a70caa')
     def test_show_recordsets(self):
         LOG.info('Create a zone')
         _, zone = self.zone_client.create_zone()
@@ -93,7 +94,7 @@
         self.assertExpected(body, record, self.excluded_keys)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('855399c1-8806-4ae5-aa31-cb8a6f35e218')
+    @decorators.idempotent_id('855399c1-8806-4ae5-aa31-cb8a6f35e218')
     def test_delete_recordset(self):
         LOG.info('Create a zone')
         _, zone = self.zone_client.create_zone()
@@ -113,7 +114,7 @@
             lambda: self.client.show_recordset(zone['id'], record['id']))
 
     @test.attr(type='smoke')
-    @test.idempotent_id('8d41c85f-09f9-48be-a202-92d1bdf5c796')
+    @decorators.idempotent_id('8d41c85f-09f9-48be-a202-92d1bdf5c796')
     def test_update_recordset(self):
         LOG.info('Create a zone')
         _, zone = self.zone_client.create_zone()
@@ -146,7 +147,7 @@
         cls.zone_client = cls.os.zones_client
 
     @test.attr(type='smoke')
-    @test.idempotent_id('631d74fd-6909-4684-a61b-5c4d2f92c3e7')
+    @decorators.idempotent_id('631d74fd-6909-4684-a61b-5c4d2f92c3e7')
     @ddt.file_data("recordset_data_invalid.json")
     def test_create_recordset_invalid(self, name, type, records):
         LOG.info('Create a zone')
@@ -189,7 +190,7 @@
             raise cls.skipException(skip_msg)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('48a081b9-4474-4da0-9b1a-6359a80456ce')
+    @decorators.idempotent_id('48a081b9-4474-4da0-9b1a-6359a80456ce')
     def test_list_zones_recordsets(self):
         LOG.info('Create a zone')
         _, zone1 = self.zone_client.create_zone()
@@ -205,7 +206,7 @@
         self.assertGreater(len(body['recordsets']), 0)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('a8e41020-65be-453b-a8c1-2497d539c345')
+    @decorators.idempotent_id('a8e41020-65be-453b-a8c1-2497d539c345')
     def test_list_filter_zones_recordsets(self):
         LOG.info('Create a zone')
         _, zone1 = self.zone_client.create_zone()
diff --git a/designate_tempest_plugin/tests/api/v2/test_tld.py b/designate_tempest_plugin/tests/api/v2/test_tld.py
index 5df68cb..e4d82f7 100644
--- a/designate_tempest_plugin/tests/api/v2/test_tld.py
+++ b/designate_tempest_plugin/tests/api/v2/test_tld.py
@@ -14,6 +14,7 @@
 
 from oslo_log import log as logging
 from tempest import test
+from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
 from designate_tempest_plugin.tests import base
@@ -40,7 +41,7 @@
                       ignore_errors=lib_exc.Conflict)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('52a4bb4b-4eff-4591-9dd3-ad98316806c3')
+    @decorators.idempotent_id('52a4bb4b-4eff-4591-9dd3-ad98316806c3')
     def test_create_tld(self):
         tld_data = {
                      "name": "org",
@@ -54,7 +55,7 @@
         self.assertEqual(tld_data["name"], tld['name'])
 
     @test.attr(type='smoke')
-    @test.idempotent_id('271af08c-2603-4f61-8eb1-05887b74e25a')
+    @decorators.idempotent_id('271af08c-2603-4f61-8eb1-05887b74e25a')
     def test_show_tld(self):
         tld_data = {
                      "name": "org",
@@ -72,7 +73,7 @@
         self.assertExpected(tld, body, self.excluded_keys)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('26708cb8-7126-48a7-9424-1c225e56e609')
+    @decorators.idempotent_id('26708cb8-7126-48a7-9424-1c225e56e609')
     def test_delete_tld(self):
         LOG.info('Create a tld')
         _, tld = self.admin_client.create_tld()
@@ -86,7 +87,7 @@
            lambda: self.admin_client.show_tld(tld['id']))
 
     @test.attr(type='smoke')
-    @test.idempotent_id('95b13759-c85c-4791-829b-9591ca15779d')
+    @decorators.idempotent_id('95b13759-c85c-4791-829b-9591ca15779d')
     def test_list_tlds(self):
         LOG.info('List tlds')
         _, body = self.admin_client.list_tlds()
@@ -94,7 +95,7 @@
         self.assertGreater(len(body['tlds']), 0)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('1a233812-48d9-4d15-af5e-9961744286ff')
+    @decorators.idempotent_id('1a233812-48d9-4d15-af5e-9961744286ff')
     def test_update_tld(self):
         _, tld = self.admin_client.create_tld()
         self.addCleanup(self.admin_client.delete_tld, tld['id'])
@@ -112,7 +113,7 @@
         self.assertEqual(tld_data["description"], patch_tld["description"])
 
     @test.attr(type='smoke')
-    @test.idempotent_id('8116dcf5-a329-47d1-90be-5ff32f299c53')
+    @decorators.idempotent_id('8116dcf5-a329-47d1-90be-5ff32f299c53')
     def test_list_tlds_dot_json_fails(self):
         uri = self.admin_client.get_uri('tlds.json')
 
diff --git a/designate_tempest_plugin/tests/api/v2/test_transfer_accepts.py b/designate_tempest_plugin/tests/api/v2/test_transfer_accepts.py
index cdf9388..ce4f538 100644
--- a/designate_tempest_plugin/tests/api/v2/test_transfer_accepts.py
+++ b/designate_tempest_plugin/tests/api/v2/test_transfer_accepts.py
@@ -13,6 +13,7 @@
 #    under the License.
 from oslo_log import log as logging
 from tempest import test
+from tempest.lib import decorators
 
 from designate_tempest_plugin.tests import base
 
@@ -34,7 +35,7 @@
         cls.client = cls.os.transfer_accept_client
 
     @test.attr(type='smoke')
-    @test.idempotent_id('1c6baf97-a83e-4d2e-a5d8-9d37fb7808f3')
+    @decorators.idempotent_id('1c6baf97-a83e-4d2e-a5d8-9d37fb7808f3')
     def test_create_transfer_accept(self):
         LOG.info('Create a zone')
         _, zone = self.zone_client.create_zone()
@@ -57,7 +58,7 @@
         self.assertEqual('COMPLETE', transfer_accept['status'])
 
     @test.attr(type='smoke')
-    @test.idempotent_id('37c6afbb-3ea3-4fd8-94ea-a426244f019a')
+    @decorators.idempotent_id('37c6afbb-3ea3-4fd8-94ea-a426244f019a')
     def test_show_transfer_accept(self):
         LOG.info('Create a zone')
         _, zone = self.zone_client.create_zone()
diff --git a/designate_tempest_plugin/tests/api/v2/test_transfer_request.py b/designate_tempest_plugin/tests/api/v2/test_transfer_request.py
index e7badd9..c91db1d 100644
--- a/designate_tempest_plugin/tests/api/v2/test_transfer_request.py
+++ b/designate_tempest_plugin/tests/api/v2/test_transfer_request.py
@@ -13,6 +13,7 @@
 #    under the License.
 from oslo_log import log as logging
 from tempest import test
+from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
 from designate_tempest_plugin.tests import base
@@ -34,7 +35,7 @@
         cls.client = cls.os.transfer_request_client
 
     @test.attr(type='smoke')
-    @test.idempotent_id('2381d489-ad84-403d-b0a2-8b77e4e966bf')
+    @decorators.idempotent_id('2381d489-ad84-403d-b0a2-8b77e4e966bf')
     def test_create_transfer_request(self):
         LOG.info('Create a zone')
         _, zone = self.zone_client.create_zone()
@@ -49,7 +50,7 @@
         self.assertEqual('ACTIVE', transfer_request['status'])
 
     @test.attr(type='smoke')
-    @test.idempotent_id('64a7be9f-8371-4ce1-a242-c1190de7c985')
+    @decorators.idempotent_id('64a7be9f-8371-4ce1-a242-c1190de7c985')
     def test_show_transfer_request(self):
         LOG.info('Create a zone')
         _, zone = self.zone_client.create_zone()
@@ -68,7 +69,7 @@
         self.assertExpected(transfer_request, body, self.excluded_keys)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('7d81c487-aa15-44c4-b3e5-424ab9e6a3e5')
+    @decorators.idempotent_id('7d81c487-aa15-44c4-b3e5-424ab9e6a3e5')
     def test_delete_transfer_request(self):
         LOG.info('Create a zone')
         _, zone = self.zone_client.create_zone()
@@ -86,7 +87,7 @@
             lambda: self.client.show_transfer_request(transfer_request['id']))
 
     @test.attr(type='smoke')
-    @test.idempotent_id('ddd42a19-1768-428c-846e-32f9d6493011')
+    @decorators.idempotent_id('ddd42a19-1768-428c-846e-32f9d6493011')
     def test_list_transfer_requests(self):
         LOG.info('Create a zone')
         _, zone = self.zone_client.create_zone()
@@ -103,7 +104,7 @@
         self.assertGreater(len(body['transfer_requests']), 0)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('de5e9d32-c723-4518-84e5-58da9722cc13')
+    @decorators.idempotent_id('de5e9d32-c723-4518-84e5-58da9722cc13')
     def test_update_transfer_request(self):
         LOG.info('Create a zone')
         _, zone = self.zone_client.create_zone()
@@ -125,7 +126,7 @@
                          transfer_request_patch['description'])
 
     @test.attr(type='smoke')
-    @test.idempotent_id('73b754a9-e856-4fd6-80ba-e8d1b80f5dfa')
+    @decorators.idempotent_id('73b754a9-e856-4fd6-80ba-e8d1b80f5dfa')
     def test_list_transfer_requests_dot_json_fails(self):
         uri = self.client.get_uri('transfer_requests.json')
 
diff --git a/designate_tempest_plugin/tests/api/v2/test_zones.py b/designate_tempest_plugin/tests/api/v2/test_zones.py
index 015010c..37c0d4e 100644
--- a/designate_tempest_plugin/tests/api/v2/test_zones.py
+++ b/designate_tempest_plugin/tests/api/v2/test_zones.py
@@ -13,6 +13,7 @@
 # under the License.
 from oslo_log import log as logging
 from tempest import test
+from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 from tempest.lib.common.utils import data_utils
 
@@ -35,7 +36,7 @@
         cls.client = cls.os.zones_client
 
     @test.attr(type='smoke')
-    @test.idempotent_id('9d2e20fc-e56f-4a62-9c61-9752a9ec615c')
+    @decorators.idempotent_id('9d2e20fc-e56f-4a62-9c61-9752a9ec615c')
     def test_create_zone(self):
         LOG.info('Create a zone')
         _, zone = self.client.create_zone()
@@ -46,7 +47,7 @@
         self.assertEqual('PENDING', zone['status'])
 
     @test.attr(type='smoke')
-    @test.idempotent_id('02ca5d6a-86ce-4f02-9d94-9e5db55c3055')
+    @decorators.idempotent_id('02ca5d6a-86ce-4f02-9d94-9e5db55c3055')
     def test_show_zone(self):
         LOG.info('Create a zone')
         _, zone = self.client.create_zone()
@@ -59,7 +60,7 @@
         self.assertExpected(zone, body, self.excluded_keys)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('a4791906-6cd6-4d27-9f15-32273db8bb3d')
+    @decorators.idempotent_id('a4791906-6cd6-4d27-9f15-32273db8bb3d')
     def test_delete_zone(self):
         LOG.info('Create a zone')
         _, zone = self.client.create_zone()
@@ -74,7 +75,7 @@
         self.assertEqual('PENDING', body['status'])
 
     @test.attr(type='smoke')
-    @test.idempotent_id('5bfa3cfe-5bc8-443b-bf48-cfba44cbb247')
+    @decorators.idempotent_id('5bfa3cfe-5bc8-443b-bf48-cfba44cbb247')
     def test_list_zones(self):
         LOG.info('Create a zone')
         _, zone = self.client.create_zone()
@@ -88,7 +89,7 @@
         self.assertGreater(len(body['zones']), 0)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('123f51cb-19d5-48a9-aacc-476742c02141')
+    @decorators.idempotent_id('123f51cb-19d5-48a9-aacc-476742c02141')
     def test_update_zone(self):
         LOG.info('Create a zone')
         _, zone = self.client.create_zone()
@@ -109,7 +110,7 @@
         self.assertEqual(description, zone['description'])
 
     @test.attr(type='smoke')
-    @test.idempotent_id('925192f2-0ed8-4591-8fe7-a9fa028f90a0')
+    @decorators.idempotent_id('925192f2-0ed8-4591-8fe7-a9fa028f90a0')
     def test_list_zones_dot_json_fails(self):
         uri = self.client.get_uri('zones.json')
 
@@ -127,7 +128,7 @@
         cls.client = cls.os.zones_client
         cls.admin_client = cls.os_adm.zones_client
 
-    @test.idempotent_id('6477f92d-70ba-46eb-bd6c-fc50c405e222')
+    @decorators.idempotent_id('6477f92d-70ba-46eb-bd6c-fc50c405e222')
     def test_get_other_tenant_zone(self):
         LOG.info('Create a zone as a user')
         _, zone = self.client.create_zone()
@@ -152,7 +153,7 @@
         cls.alt_client = cls.os_alt.zones_client
 
     @test.attr(type='smoke')
-    @test.idempotent_id('5d28580a-a012-4b57-b211-e077b1a01340')
+    @decorators.idempotent_id('5d28580a-a012-4b57-b211-e077b1a01340')
     def test_no_create_duplicate_domain(self):
         LOG.info('Create a zone as a default user')
         _, zone = self.client.create_zone()
@@ -167,7 +168,7 @@
             self.alt_client.create_zone, name=zone['name'])
 
     @test.attr(type='smoke')
-    @test.idempotent_id('a48776fd-b1aa-4a25-9f09-d1d34cfbb175')
+    @decorators.idempotent_id('a48776fd-b1aa-4a25-9f09-d1d34cfbb175')
     def test_no_create_subdomain_by_alt_user(self):
         LOG.info('Create a zone as a default user')
         _, zone = self.client.create_zone()
@@ -180,7 +181,7 @@
             self.alt_client.create_zone, name='sub.sub.' + zone['name'])
 
     @test.attr(type='smoke')
-    @test.idempotent_id('f1723d48-c082-43cd-94bf-ebeb5b8c9458')
+    @decorators.idempotent_id('f1723d48-c082-43cd-94bf-ebeb5b8c9458')
     def test_no_create_superdomain_by_alt_user(self):
         zone_name = dns_data_utils.rand_zone_name()
 
diff --git a/designate_tempest_plugin/tests/api/v2/test_zones_exports.py b/designate_tempest_plugin/tests/api/v2/test_zones_exports.py
index 3723aca..0a3469d 100644
--- a/designate_tempest_plugin/tests/api/v2/test_zones_exports.py
+++ b/designate_tempest_plugin/tests/api/v2/test_zones_exports.py
@@ -14,6 +14,7 @@
 
 from oslo_log import log as logging
 from tempest import test
+from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
 from designate_tempest_plugin.tests import base
@@ -35,7 +36,7 @@
         cls.client = cls.os.zone_exports_client
 
     @test.attr(type='smoke')
-    @test.idempotent_id('2dd8a9a0-98a2-4bf6-bb51-286583b30f40')
+    @decorators.idempotent_id('2dd8a9a0-98a2-4bf6-bb51-286583b30f40')
     def test_create_zone_export(self):
         LOG.info('Create a zone')
         _, zone = self.zone_client.create_zone()
@@ -48,7 +49,7 @@
         self.assertEqual('PENDING', zone_export['status'])
 
     @test.attr(type='smoke')
-    @test.idempotent_id('2d29a2a9-1941-4b7e-9d8a-ad6c2140ea68')
+    @decorators.idempotent_id('2d29a2a9-1941-4b7e-9d8a-ad6c2140ea68')
     def test_show_zone_export(self):
         LOG.info('Create a zone')
         _, zone = self.zone_client.create_zone()
@@ -64,7 +65,7 @@
         self.assertExpected(zone_export, body, self.excluded_keys)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('97234f00-8bcb-43f8-84dd-874f8bc4a80e')
+    @decorators.idempotent_id('97234f00-8bcb-43f8-84dd-874f8bc4a80e')
     def test_delete_zone_export(self):
         LOG.info('Create a zone')
         _, zone = self.zone_client.create_zone()
@@ -82,7 +83,7 @@
             lambda: self.client.show_zone_export(zone_export['id']))
 
     @test.attr(type='smoke')
-    @test.idempotent_id('476bfdfe-58c8-46e2-b376-8403c0fff440')
+    @decorators.idempotent_id('476bfdfe-58c8-46e2-b376-8403c0fff440')
     def test_list_zone_exports(self):
         LOG.info('Create a zone')
         _, zone = self.zone_client.create_zone()
diff --git a/designate_tempest_plugin/tests/api/v2/test_zones_imports.py b/designate_tempest_plugin/tests/api/v2/test_zones_imports.py
index 574d8b5..6aaa8e2 100644
--- a/designate_tempest_plugin/tests/api/v2/test_zones_imports.py
+++ b/designate_tempest_plugin/tests/api/v2/test_zones_imports.py
@@ -14,6 +14,7 @@
 
 from oslo_log import log as logging
 from tempest import test
+from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
 from designate_tempest_plugin.tests import base
@@ -33,7 +34,7 @@
         cls.client = cls.os.zone_imports_client
 
     @test.attr(type='smoke')
-    @test.idempotent_id('2e2d907d-0609-405b-9c96-3cb2b87e3dce')
+    @decorators.idempotent_id('2e2d907d-0609-405b-9c96-3cb2b87e3dce')
     def test_create_zone_import(self):
         LOG.info('Create a zone import')
         _, zone_import = self.client.create_zone_import()
@@ -43,7 +44,7 @@
         self.assertEqual('PENDING', zone_import['status'])
 
     @test.attr(type='smoke')
-    @test.idempotent_id('c8909558-0dc6-478a-9e91-eb97b52e59e0')
+    @decorators.idempotent_id('c8909558-0dc6-478a-9e91-eb97b52e59e0')
     def test_show_zone_import(self):
         LOG.info('Create a zone import')
         _, zone_import = self.client.create_zone_import()
@@ -56,7 +57,7 @@
         self.assertExpected(zone_import, body, self.excluded_keys)
 
     @test.attr(type='smoke')
-    @test.idempotent_id('56a16e68-b241-4e41-bc5c-c40747fa68e3')
+    @decorators.idempotent_id('56a16e68-b241-4e41-bc5c-c40747fa68e3')
     def test_delete_zone_import(self):
         LOG.info('Create a zone import')
         _, zone_import = self.client.create_zone_import()
@@ -69,7 +70,7 @@
             lambda: self.client.show_zone_import(zone_import['id']))
 
     @test.attr(type='smoke')
-    @test.idempotent_id('9eab76af-1995-485f-a2ef-8290c1863aba')
+    @decorators.idempotent_id('9eab76af-1995-485f-a2ef-8290c1863aba')
     def test_list_zones_imports(self):
         LOG.info('Create a zone import')
         _, zone = self.client.create_zone_import()
diff --git a/designate_tempest_plugin/tests/scenario/v2/test_zones.py b/designate_tempest_plugin/tests/scenario/v2/test_zones.py
index 6c5bf0e..117a5fb 100644
--- a/designate_tempest_plugin/tests/scenario/v2/test_zones.py
+++ b/designate_tempest_plugin/tests/scenario/v2/test_zones.py
@@ -14,6 +14,7 @@
 from oslo_log import log as logging
 from tempest import test
 from tempest import config
+from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
 from designate_tempest_plugin.tests import base
@@ -32,7 +33,7 @@
         cls.query_client = cls.os.query_client
 
     @test.attr(type='slow')
-    @test.idempotent_id('d0648f53-4114-45bd-8792-462a82f69d32')
+    @decorators.idempotent_id('d0648f53-4114-45bd-8792-462a82f69d32')
     def test_create_and_delete_zone(self):
         LOG.info('Create a zone')
         _, zone = self.client.create_zone()
@@ -63,7 +64,7 @@
         waiters.wait_for_zone_404(self.client, zone['id'])
 
     @test.attr(type='slow')
-    @test.idempotent_id('c9838adf-14dc-4097-9130-e5cea3727abb')
+    @decorators.idempotent_id('c9838adf-14dc-4097-9130-e5cea3727abb')
     def test_delete_zone_pending_create(self):
         LOG.info('Create a zone')
         _, zone = self.client.create_zone()
@@ -85,7 +86,7 @@
         waiters.wait_for_zone_404(self.client, zone['id'])
 
     @test.attr(type='slow')
-    @test.idempotent_id('ad8d1f5b-da66-46a0-bbee-14dc84a5d791')
+    @decorators.idempotent_id('ad8d1f5b-da66-46a0-bbee-14dc84a5d791')
     @config.skip_unless_config('dns', 'nameservers')
     def test_zone_create_propagates_to_nameservers(self):
         LOG.info('Create a zone')
@@ -96,7 +97,7 @@
         waiters.wait_for_query(self.query_client, zone['name'], "SOA")
 
     @test.attr(type='slow')
-    @test.idempotent_id('d13d3095-c78f-4aae-8fe3-a74ccc335c84')
+    @decorators.idempotent_id('d13d3095-c78f-4aae-8fe3-a74ccc335c84')
     @config.skip_unless_config('dns', 'nameservers')
     def test_zone_delete_propagates_to_nameservers(self):
         LOG.info('Create a zone')
diff --git a/designate_tempest_plugin/tests/scenario/v2/test_zones_export.py b/designate_tempest_plugin/tests/scenario/v2/test_zones_export.py
index b5a1214..be718ae 100644
--- a/designate_tempest_plugin/tests/scenario/v2/test_zones_export.py
+++ b/designate_tempest_plugin/tests/scenario/v2/test_zones_export.py
@@ -14,6 +14,7 @@
 
 from oslo_log import log as logging
 from tempest import test
+from tempest.lib import decorators
 
 from designate_tempest_plugin.common import waiters
 from designate_tempest_plugin.tests.api.v2.test_zones_exports import \
@@ -32,7 +33,7 @@
         cls.client = cls.os.zone_exports_client
 
     @test.attr(type='slow')
-    @test.idempotent_id('0484c3c4-df57-458e-a6e5-6eb63e0475e0')
+    @decorators.idempotent_id('0484c3c4-df57-458e-a6e5-6eb63e0475e0')
     def test_create_zone_export_and_show_exported_zonefile(self):
         LOG.info('Create a zone to be exported')
         _, zone = self.zones_client.create_zone()
diff --git a/designate_tempest_plugin/tests/scenario/v2/test_zones_import.py b/designate_tempest_plugin/tests/scenario/v2/test_zones_import.py
index 86af3d2..a6ef21e 100644
--- a/designate_tempest_plugin/tests/scenario/v2/test_zones_import.py
+++ b/designate_tempest_plugin/tests/scenario/v2/test_zones_import.py
@@ -13,6 +13,7 @@
 # under the License.
 from oslo_log import log as logging
 from tempest import test
+from tempest.lib import decorators
 
 from designate_tempest_plugin.common import waiters
 from designate_tempest_plugin import data_utils as dns_data_utils
@@ -31,7 +32,7 @@
         cls.zones_client = cls.os.zones_client
 
     @test.attr(type='slow')
-    @test.idempotent_id('679f38d0-2f2f-49c5-934e-8fe0c452f56e')
+    @decorators.idempotent_id('679f38d0-2f2f-49c5-934e-8fe0c452f56e')
     def test_create_zone_import_and_wait_for_zone(self):
         name = dns_data_utils.rand_zone_name('testimport')
         zonefile = dns_data_utils.rand_zonefile_data(name=name)
