diff --git a/.gitreview b/.gitreview
index 2959281..b940c88 100644
--- a/.gitreview
+++ b/.gitreview
@@ -1,4 +1,5 @@
 [gerrit]
-host=review.openstack.org
+host=gerrit.mcp.mirantis.com
 port=29418
-project=openstack/designate-tempest-plugin.git
+project=packaging/sources/designate-tempest-plugin.git
+defaultbranch=mcp/stein
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 36c68ff..551719c 100644
--- a/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py
+++ b/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py
@@ -14,6 +14,8 @@
 limitations under the License.
 """
 import ddt
+from tempest import config
+from tempest.lib.common.utils import test_utils as utils
 from tempest.lib import exceptions
 from tempest.lib import decorators
 
@@ -33,6 +35,8 @@
     'TXT',
 ]
 
+CONF = config.CONF
+
 
 @ddt.ddt
 class RecordsetValidationTest(base.BaseDnsV2Test):
@@ -41,6 +45,15 @@
         super(RecordsetValidationTest, self).setUp()
         self._zone = None
 
+    def tearDown(self):
+        if self._zone:
+            self.zones_client.delete_zone(self._zone['id'])
+            utils.call_until_true(self._check_zone_deleted,
+                                  CONF.dns.build_timeout,
+                                  CONF.dns.build_interval,
+                                  self._zone['id'])
+        super(RecordsetValidationTest, self).tearDown()
+
     @classmethod
     def setup_credentials(cls):
         # Do not create network resources for these test.
@@ -71,6 +84,10 @@
 
         return body
 
+    def _check_zone_deleted(self, zone_id):
+        return utils.call_and_ignore_notfound_exc(self.zones_client.show_zone,
+                                                  zone_id) is None
+
     @decorators.idempotent_id('c5ef87e2-cb79-4758-b968-18eef2c251df')
     @ddt.data(*RECORDSETS_DATASET)
     def test_create_invalid(self, rtype):
diff --git a/designate_tempest_plugin/tests/api/v2/test_tld.py b/designate_tempest_plugin/tests/api/v2/test_tld.py
index 380d224..36e7b72 100644
--- a/designate_tempest_plugin/tests/api/v2/test_tld.py
+++ b/designate_tempest_plugin/tests/api/v2/test_tld.py
@@ -40,12 +40,6 @@
         super(TldAdminTest, cls).setup_clients()
         cls.admin_client = cls.os_admin.tld_client
 
-    @classmethod
-    def resource_setup(cls):
-        super(TldAdminTest, cls).resource_setup()
-        cls.tld = cls.admin_client.create_tld(tld_name='com',
-                      ignore_errors=lib_exc.Conflict)
-
     @decorators.idempotent_id('52a4bb4b-4eff-4591-9dd3-ad98316806c3')
     def test_create_tld(self):
         tld_data = {
@@ -91,10 +85,20 @@
 
     @decorators.idempotent_id('95b13759-c85c-4791-829b-9591ca15779d')
     def test_list_tlds(self):
+        tld_data = {
+            "name": "org",
+            "description": "sample tld"}
+
+        LOG.info('Create a tld')
+        _, tld = self.admin_client.create_tld(tld_data['name'],
+                                              tld_data['description'])
+        self.addCleanup(self.admin_client.delete_tld, tld['id'])
+
         LOG.info('List tlds')
         _, body = self.admin_client.list_tlds()
 
         self.assertGreater(len(body['tlds']), 0)
+        self.assertIn(tld['id'], [item['id'] for item in body['tlds']])
 
     @decorators.idempotent_id('1a233812-48d9-4d15-af5e-9961744286ff')
     def test_update_tld(self):
