diff --git a/designate_tempest_plugin/tests/api/v2/test_ptrs.py b/designate_tempest_plugin/tests/api/v2/test_ptrs.py
index a72b61a..a9ee5a8 100644
--- a/designate_tempest_plugin/tests/api/v2/test_ptrs.py
+++ b/designate_tempest_plugin/tests/api/v2/test_ptrs.py
@@ -42,20 +42,6 @@
         else:
             cls.admin_tld_client = cls.os_admin.dns_v2.TldClient()
 
-    @classmethod
-    def resource_setup(cls):
-        super(BasePtrTest, cls).resource_setup()
-
-        # Make sure we have an allowed TLD available
-        tld_name = dns_data_utils.rand_zone_name(name='BasePtrTest')
-        cls.tld_name = tld_name[:-1]
-        cls.class_tld = cls.admin_tld_client.create_tld(tld_name=tld_name[:-1])
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.admin_tld_client.delete_tld(cls.class_tld[1]['id'])
-        super(BasePtrTest, cls).resource_cleanup()
-
 
 class DesignatePtrRecord(BasePtrTest, tempest.test.BaseTestCase):
 
@@ -77,24 +63,15 @@
         cls.primary_ptr_client = cls.os_primary.dns_v2.PtrClient()
         cls.primary_floating_ip_client = cls.os_primary.floating_ips_client
 
-    @classmethod
-    def resource_setup(cls):
-        super(DesignatePtrRecord, cls).resource_setup()
-
-        # The 'arpa' TLD is a special case as the negative test class also
-        # needs to use this space. To stop test class concurrency conflicts,
-        # let each class manage different TLDs for the reverse namespace.
-        cls.arpa_tld = cls.admin_tld_client.create_tld(tld_name='arpa')
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.admin_tld_client.delete_tld(cls.arpa_tld[1]['id'])
-        super(DesignatePtrRecord, cls).resource_cleanup()
+    # This test class uses 'arpa' TLD
+    # The 'arpa' TLD is a special case as the negative test class also
+    # needs to use this space. To stop test class concurrency conflicts,
+    # let each class manage different TLDs for the reverse namespace.
 
     def _set_ptr(self, ptr_name=None, ttl=None, description=None,
                  headers=None, tld=None, fip_id=None):
         if not tld:
-            tld = self.tld_name
+            tld = self.tld_suffix
         if not fip_id:
             fip = self.primary_floating_ip_client.create_floatingip(
                 floating_network_id=CONF.network.public_network_id)[
@@ -200,25 +177,10 @@
         cls.primary_floating_ip_client = cls.os_primary.floating_ips_client
         cls.admin_ptr_client = cls.os_admin.dns_v2.PtrClient()
 
-    @classmethod
-    def resource_setup(cls):
-        super(DesignatePtrRecordNegative, cls).resource_setup()
-
-        # The 'arpa' TLD is a special case as the positive test class also
-        # needs to use this space. To stop test class concurrency conflicts,
-        # let each class manage different TLDs for the reverse namespace.
-        cls.in_addr_arpa_tld = cls.admin_tld_client.create_tld(
-            tld_name='in-addr.arpa')
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.admin_tld_client.delete_tld(cls.in_addr_arpa_tld[1]['id'])
-        super(DesignatePtrRecordNegative, cls).resource_cleanup()
-
     def _set_ptr(self, ptr_name=None, ttl=None, description=None,
                  headers=None, tld=None, fip_id=None):
         if not tld:
-            tld = self.tld_name
+            tld = self.tld_suffix
         if not fip_id:
             fip = self.primary_floating_ip_client.create_floatingip(
                 floating_network_id=CONF.network.public_network_id)[
diff --git a/designate_tempest_plugin/tests/api/v2/test_recordset.py b/designate_tempest_plugin/tests/api/v2/test_recordset.py
index 1526ccf..5aa888f 100644
--- a/designate_tempest_plugin/tests/api/v2/test_recordset.py
+++ b/designate_tempest_plugin/tests/api/v2/test_recordset.py
@@ -44,11 +44,6 @@
     def resource_setup(cls):
         super(BaseRecordsetsTest, cls).resource_setup()
 
-        # Make sure we have an allowed TLD available
-        tld_name = dns_data_utils.rand_zone_name(name="BaseRecordsetsTest")
-        cls.tld_name = f".{tld_name}"
-        cls.class_tld = cls.admin_tld_client.create_tld(tld_name=tld_name[:-1])
-
         # All the recordset tests need a zone, create one to share
         zone_name = dns_data_utils.rand_zone_name(name="TestZone",
                                               suffix=cls.tld_name)
@@ -59,7 +54,6 @@
     def resource_cleanup(cls):
         cls.zones_client.delete_zone(
             cls.zone['id'], ignore_errors=lib_exc.NotFound)
-        cls.admin_tld_client.delete_tld(cls.class_tld[1]['id'])
         super(BaseRecordsetsTest, cls).resource_cleanup()
 
 
diff --git a/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py b/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py
index 534e107..7993a6c 100644
--- a/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py
+++ b/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py
@@ -65,14 +65,8 @@
     @property
     def zone(self):
         if self._zone is None:
-            tld_name = dns_data_utils.rand_zone_name(
-                name="recordsetvalidation")
-            self.class_tld = self.admin_tld_client.create_tld(
-                tld_name=tld_name[:-1])
-            self.addCleanup(
-                self.admin_tld_client.delete_tld, self.class_tld[1]['id'])
             zone_name = dns_data_utils.rand_zone_name(name="TestZone",
-                                                  suffix=f'.{tld_name}')
+                                                    suffix=self.tld_name)
             zone_data = dns_data_utils.rand_zone_data(name=zone_name)
             resp, body = self.zones_client.create_zone(**zone_data)
             self._zone = body
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 7cc9f11..a92195a 100644
--- a/designate_tempest_plugin/tests/api/v2/test_transfer_accepts.py
+++ b/designate_tempest_plugin/tests/api/v2/test_transfer_accepts.py
@@ -37,20 +37,6 @@
         else:
             cls.admin_tld_client = cls.os_admin.dns_v2.TldClient()
 
-    @classmethod
-    def resource_setup(cls):
-        super(BaseTransferAcceptTest, cls).resource_setup()
-
-        # Make sure we have an allowed TLD available
-        tld_name = dns_data_utils.rand_zone_name(name="BaseTransferAcceptTest")
-        cls.tld_name = f".{tld_name}"
-        cls.class_tld = cls.admin_tld_client.create_tld(tld_name=tld_name[:-1])
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.admin_tld_client.delete_tld(cls.class_tld[1]['id'])
-        super(BaseTransferAcceptTest, cls).resource_cleanup()
-
 
 class TransferAcceptTest(BaseTransferAcceptTest):
     credentials = ["primary", "alt", "admin", "system_admin", "system_reader",
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 c646c2b..e60fdb3 100644
--- a/designate_tempest_plugin/tests/api/v2/test_transfer_request.py
+++ b/designate_tempest_plugin/tests/api/v2/test_transfer_request.py
@@ -36,21 +36,6 @@
         else:
             cls.admin_tld_client = cls.os_admin.dns_v2.TldClient()
 
-    @classmethod
-    def resource_setup(cls):
-        super(BaseTransferRequestTest, cls).resource_setup()
-
-        # Make sure we have an allowed TLD available
-        tld_name = dns_data_utils.rand_zone_name(
-            name="BaseTransferRequestTest")
-        cls.tld_name = f".{tld_name}"
-        cls.class_tld = cls.admin_tld_client.create_tld(tld_name=tld_name[:-1])
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.admin_tld_client.delete_tld(cls.class_tld[1]['id'])
-        super(BaseTransferRequestTest, cls).resource_cleanup()
-
 
 class TransferRequestTest(BaseTransferRequestTest):
     credentials = ["primary", "alt", "admin", "system_admin", "system_reader",
diff --git a/designate_tempest_plugin/tests/api/v2/test_tsigkey.py b/designate_tempest_plugin/tests/api/v2/test_tsigkey.py
index 6ceeaca..d5158b8 100644
--- a/designate_tempest_plugin/tests/api/v2/test_tsigkey.py
+++ b/designate_tempest_plugin/tests/api/v2/test_tsigkey.py
@@ -37,20 +37,6 @@
         else:
             cls.admin_tld_client = cls.os_admin.dns_v2.TldClient()
 
-    @classmethod
-    def resource_setup(cls):
-        super(BaseTsigkeyTest, cls).resource_setup()
-
-        # Make sure we have an allowed TLD available
-        tld_name = dns_data_utils.rand_zone_name(name="BaseTsigkeyTest")
-        cls.tld_name = f".{tld_name}"
-        cls.class_tld = cls.admin_tld_client.create_tld(tld_name=tld_name[:-1])
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.admin_tld_client.delete_tld(cls.class_tld[1]['id'])
-        super(BaseTsigkeyTest, cls).resource_cleanup()
-
 
 class TsigkeyAdminTest(BaseTsigkeyTest):
     credentials = ["primary", "admin", "system_admin", "system_reader",
diff --git a/designate_tempest_plugin/tests/api/v2/test_zone_tasks.py b/designate_tempest_plugin/tests/api/v2/test_zone_tasks.py
index 4523c53..faff363 100644
--- a/designate_tempest_plugin/tests/api/v2/test_zone_tasks.py
+++ b/designate_tempest_plugin/tests/api/v2/test_zone_tasks.py
@@ -44,20 +44,6 @@
         else:
             cls.admin_tld_client = cls.os_admin.dns_v2.TldClient()
 
-    @classmethod
-    def resource_setup(cls):
-        super(BaseZonesTest, cls).resource_setup()
-
-        # Make sure we have an allowed TLD available
-        tld_name = dns_data_utils.rand_zone_name(name="BaseZonesTest")
-        cls.tld_name = f".{tld_name}"
-        cls.class_tld = cls.admin_tld_client.create_tld(tld_name=tld_name[:-1])
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.admin_tld_client.delete_tld(cls.class_tld[1]['id'])
-        super(BaseZonesTest, cls).resource_cleanup()
-
 
 class ZoneTasks(BaseZonesTest):
     credentials = ["primary", "alt", "admin", "system_admin", "system_reader",
diff --git a/designate_tempest_plugin/tests/api/v2/test_zones.py b/designate_tempest_plugin/tests/api/v2/test_zones.py
index fbf7c35..7fc3136 100644
--- a/designate_tempest_plugin/tests/api/v2/test_zones.py
+++ b/designate_tempest_plugin/tests/api/v2/test_zones.py
@@ -41,20 +41,6 @@
         else:
             cls.admin_tld_client = cls.os_admin.dns_v2.TldClient()
 
-    @classmethod
-    def resource_setup(cls):
-        super(BaseZonesTest, cls).resource_setup()
-
-        # Make sure we have an allowed TLD available
-        tld_name = dns_data_utils.rand_zone_name(name="BaseZonesTest")
-        cls.tld_name = f".{tld_name}"
-        cls.class_tld = cls.admin_tld_client.create_tld(tld_name=tld_name[:-1])
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.admin_tld_client.delete_tld(cls.class_tld[1]['id'])
-        super(BaseZonesTest, cls).resource_cleanup()
-
 
 class ZonesTest(BaseZonesTest):
 
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 0e6d54b..57346e6 100644
--- a/designate_tempest_plugin/tests/api/v2/test_zones_exports.py
+++ b/designate_tempest_plugin/tests/api/v2/test_zones_exports.py
@@ -40,20 +40,6 @@
         else:
             cls.admin_tld_client = cls.os_admin.dns_v2.TldClient()
 
-    @classmethod
-    def resource_setup(cls):
-        super(BaseZoneExportsTest, cls).resource_setup()
-
-        # Make sure we have an allowed TLD available
-        tld_name = dns_data_utils.rand_zone_name(name="BaseZoneExportsTest")
-        cls.tld_name = f".{tld_name}"
-        cls.class_tld = cls.admin_tld_client.create_tld(tld_name=tld_name[:-1])
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.admin_tld_client.delete_tld(cls.class_tld[1]['id'])
-        super(BaseZoneExportsTest, cls).resource_cleanup()
-
 
 class ZonesExportTest(BaseZoneExportsTest):
     credentials = ["primary", "admin", "system_admin", "system_reader", "alt",
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 d9ef8e9..8a6a241 100644
--- a/designate_tempest_plugin/tests/api/v2/test_zones_imports.py
+++ b/designate_tempest_plugin/tests/api/v2/test_zones_imports.py
@@ -39,20 +39,6 @@
         else:
             cls.admin_tld_client = cls.os_admin.dns_v2.TldClient()
 
-    @classmethod
-    def resource_setup(cls):
-        super(BaseZonesImportTest, cls).resource_setup()
-
-        # Make sure we have an allowed TLD available
-        tld_name = dns_data_utils.rand_zone_name(name="BaseZonesImportTest")
-        cls.tld_name = f".{tld_name}"
-        cls.class_tld = cls.admin_tld_client.create_tld(tld_name=tld_name[:-1])
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.admin_tld_client.delete_tld(cls.class_tld[1]['id'])
-        super(BaseZonesImportTest, cls).resource_cleanup()
-
 
 class ZonesImportTest(BaseZonesImportTest):
     credentials = ["primary", "admin", "system_admin", "system_reader", "alt",
diff --git a/designate_tempest_plugin/tests/base.py b/designate_tempest_plugin/tests/base.py
index 26f1f03..2e1751f 100644
--- a/designate_tempest_plugin/tests/base.py
+++ b/designate_tempest_plugin/tests/base.py
@@ -189,6 +189,8 @@
 
     all_projects_header = {'X-Auth-All-Projects': True}
     managed_records = {'x-designate-edit-managed-records': True}
+    tld_suffix = CONF.dns.tld_suffix
+    tld_name = '.{}.'.format(tld_suffix)
 
     @classmethod
     def skip_checks(cls):
diff --git a/designate_tempest_plugin/tests/scenario/v2/test_blacklists.py b/designate_tempest_plugin/tests/scenario/v2/test_blacklists.py
index 85d5d5a..78435c2 100644
--- a/designate_tempest_plugin/tests/scenario/v2/test_blacklists.py
+++ b/designate_tempest_plugin/tests/scenario/v2/test_blacklists.py
@@ -36,20 +36,6 @@
         else:
             cls.admin_tld_client = cls.os_admin.dns_v2.TldClient()
 
-    @classmethod
-    def resource_setup(cls):
-        super(BaseBlacklistsTest, cls).resource_setup()
-
-        # Make sure we have an allowed TLD available
-        tld_name = dns_data_utils.rand_zone_name(name="BaseBlacklistsTest")
-        cls.tld_name = f".{tld_name}"
-        cls.class_tld = cls.admin_tld_client.create_tld(tld_name=tld_name[:-1])
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.admin_tld_client.delete_tld(cls.class_tld[1]['id'])
-        super(BaseBlacklistsTest, cls).resource_cleanup()
-
 
 class BlacklistE2E(BaseBlacklistsTest):
 
diff --git a/designate_tempest_plugin/tests/scenario/v2/test_quotas.py b/designate_tempest_plugin/tests/scenario/v2/test_quotas.py
index bc6a8cd..7eee4f6 100644
--- a/designate_tempest_plugin/tests/scenario/v2/test_quotas.py
+++ b/designate_tempest_plugin/tests/scenario/v2/test_quotas.py
@@ -66,20 +66,6 @@
         cls.alt_zone_client = cls.os_alt.dns_v2.ZonesClient()
         cls.recordset_client = cls.os_primary.dns_v2.RecordsetClient()
 
-    @classmethod
-    def resource_setup(cls):
-        super(QuotasV2Test, cls).resource_setup()
-
-        # Make sure we have an allowed TLD available
-        tld_name = dns_data_utils.rand_zone_name(name="QuotasV2Test")
-        cls.tld_name = f".{tld_name}"
-        cls.class_tld = cls.admin_tld_client.create_tld(tld_name=tld_name[:-1])
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.admin_tld_client.delete_tld(cls.class_tld[1]['id'])
-        super(QuotasV2Test, cls).resource_cleanup()
-
     def _set_quota_for_project(self, project_id, quotas):
         http_header = {'x-auth-sudo-project-id': project_id}
         self.admin_client.set_quotas(
diff --git a/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py b/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py
index a84077b..150133a 100644
--- a/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py
+++ b/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py
@@ -56,11 +56,6 @@
             LOG.info('Retrieve info from a zone')
             zone = cls.zones_client.show_zone(zone_id)[1]
         else:
-            # Make sure we have an allowed TLD available
-            tld_name = dns_data_utils.rand_zone_name(name="RecordsetsTest")
-            cls.tld_name = f".{tld_name}"
-            cls.class_tld = cls.admin_tld_client.create_tld(
-                tld_name=tld_name[:-1])
             LOG.info('Create a new zone')
             zone_name = dns_data_utils.rand_zone_name(
                 name="recordsets_test_setup", suffix=cls.tld_name)
@@ -76,7 +71,6 @@
 
     @classmethod
     def resource_cleanup(cls):
-        cls.admin_tld_client.delete_tld(cls.class_tld[1]['id'])
         super(RecordsetsTest, cls).resource_cleanup()
 
     @decorators.attr(type='slow')
diff --git a/designate_tempest_plugin/tests/scenario/v2/test_tld.py b/designate_tempest_plugin/tests/scenario/v2/test_tld.py
index bc90c90..27614e0 100644
--- a/designate_tempest_plugin/tests/scenario/v2/test_tld.py
+++ b/designate_tempest_plugin/tests/scenario/v2/test_tld.py
@@ -27,7 +27,6 @@
 
 class TldZoneTest(base.BaseDnsV2Test):
     credentials = ["admin", "system_admin", "primary"]
-    tld_suffix = '.'.join(["TldZoneTest", CONF.dns.tld_suffix])
 
     @classmethod
     def setup_credentials(cls):
@@ -44,24 +43,13 @@
             cls.admin_tld_client = cls.os_admin.dns_v2.TldClient()
         cls.primary_tld_client = cls.os_primary.dns_v2.TldClient()
 
-    @classmethod
-    def resource_setup(cls):
-        super(TldZoneTest, cls).resource_setup()
-        cls.class_tld = cls.admin_tld_client.create_tld(
-            tld_name=cls.tld_suffix)
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.admin_tld_client.delete_tld(cls.class_tld[1]['id'])
-        super(TldZoneTest, cls).resource_cleanup()
-
     @decorators.idempotent_id('68b3e7cc-bf0e-11ec-b803-201e8823901f')
     def test_create_zone_using_existing_tld(self):
         LOG.info('Creates a zone using existing TLD:"{}"'.format(
-            self.tld_suffix))
+            self.tld_name))
         zone_name = dns_data_utils.rand_zone_name(
             name='existing_tld_zone', prefix='rand',
-            suffix='.{}.'.format(self.tld_suffix))
+            suffix=self.tld_name)
         zone = self.zones_client.create_zone(
             name=zone_name, wait_until=const.ACTIVE)[1]
         self.addCleanup(
@@ -70,10 +58,10 @@
     @decorators.idempotent_id('06deced8-d4de-11eb-b8ee-74e5f9e2a801')
     def test_create_zone_using_not_existing_tld(self):
         LOG.info('Try to create a Zone using not existing TLD:"{}"'.format(
-            self.tld_suffix[::-1]))
+            self.tld_name[::-1]))
         zone_name = dns_data_utils.rand_zone_name(
             name='not_existing_tld_zone', prefix='rand',
-            suffix='.{}.'.format(self.tld_suffix)[::-1])
+            suffix=self.tld_name[::-1])
         self.assertRaises(
             lib_exc.BadRequest, self.zones_client.create_zone,
             name=zone_name)
diff --git a/designate_tempest_plugin/tests/scenario/v2/test_zones.py b/designate_tempest_plugin/tests/scenario/v2/test_zones.py
index 98b2f9c..a747b92 100644
--- a/designate_tempest_plugin/tests/scenario/v2/test_zones.py
+++ b/designate_tempest_plugin/tests/scenario/v2/test_zones.py
@@ -48,19 +48,6 @@
             cls.rec_client = cls.os_admin.dns_v2.RecordsetClient()
         cls.primary_client = cls.os_primary.dns_v2.BlacklistsClient()
 
-    @classmethod
-    def resource_setup(cls):
-        super(ZonesTest, cls).resource_setup()
-        # Make sure we have an allowed TLD available
-        tld_name = dns_data_utils.rand_zone_name(name="ZonesTest")
-        cls.tld_name = f".{tld_name}"
-        cls.class_tld = cls.admin_tld_client.create_tld(tld_name=tld_name[:-1])
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.admin_tld_client.delete_tld(cls.class_tld[1]['id'])
-        super(ZonesTest, cls).resource_cleanup()
-
     @decorators.attr(type='smoke')
     @decorators.attr(type='slow')
     @decorators.idempotent_id('d0648f53-4114-45bd-8792-462a82f69d32')
diff --git a/designate_tempest_plugin/tests/scenario/v2/test_zones_transfer.py b/designate_tempest_plugin/tests/scenario/v2/test_zones_transfer.py
index 8527e46..db5d3e7 100644
--- a/designate_tempest_plugin/tests/scenario/v2/test_zones_transfer.py
+++ b/designate_tempest_plugin/tests/scenario/v2/test_zones_transfer.py
@@ -46,20 +46,6 @@
         cls.accept_client = cls.os_primary.dns_v2.TransferAcceptClient()
         cls.alt_accept_client = cls.os_alt.dns_v2.TransferAcceptClient()
 
-    @classmethod
-    def resource_setup(cls):
-        super(ZonesTransferTest, cls).resource_setup()
-
-        # Make sure we have an allowed TLD available
-        tld_name = dns_data_utils.rand_zone_name(name="ZonesTransferTest")
-        cls.tld_name = f".{tld_name}"
-        cls.class_tld = cls.admin_tld_client.create_tld(tld_name=tld_name[:-1])
-
-    @classmethod
-    def resource_cleanup(cls):
-        cls.admin_tld_client.delete_tld(cls.class_tld[1]['id'])
-        super(ZonesTransferTest, cls).resource_cleanup()
-
     @decorators.idempotent_id('60bd80ac-c979-4686-9a03-f2f775f272ab')
     def test_zone_transfer(self):
         LOG.info('Create a zone as primary tenant')
