diff --git a/neutron_tempest_plugin/scenario/base.py b/neutron_tempest_plugin/scenario/base.py
index 43c24a4..078a515 100644
--- a/neutron_tempest_plugin/scenario/base.py
+++ b/neutron_tempest_plugin/scenario/base.py
@@ -651,7 +651,7 @@
         if not client:
             client = self.client
         if not tenant_id:
-            tenant_id = client.tenant_id
+            tenant_id = client.project_id
         router_id = CONF.network.public_router_id
         network_id = CONF.network.public_network_id
         if router_id:
diff --git a/neutron_tempest_plugin/scenario/test_connectivity.py b/neutron_tempest_plugin/scenario/test_connectivity.py
index ca7d755..5608dae 100644
--- a/neutron_tempest_plugin/scenario/test_connectivity.py
+++ b/neutron_tempest_plugin/scenario/test_connectivity.py
@@ -211,7 +211,7 @@
             network, cidr=str(subnet_cidr), gateway=str(gw_ip))
 
         non_dvr_router = self.create_router_by_client(
-            tenant_id=self.client.tenant_id,
+            tenant_id=self.client.project_id,
             is_admin=True,
             router_name=data_utils.rand_name("nondvr-2-routers-same-network"),
             admin_state_up=True,
@@ -219,7 +219,7 @@
         self.create_router_interface(non_dvr_router['id'], subnet['id'])
 
         dvr_router = self.create_router_by_client(
-            tenant_id=self.client.tenant_id,
+            tenant_id=self.client.project_id,
             is_admin=True,
             router_name=data_utils.rand_name("dvr-2-rotuers-same-network"),
             admin_state_up=True,
diff --git a/neutron_tempest_plugin/scenario/test_dns_integration.py b/neutron_tempest_plugin/scenario/test_dns_integration.py
index 6f2756c..5ebade1 100644
--- a/neutron_tempest_plugin/scenario/test_dns_integration.py
+++ b/neutron_tempest_plugin/scenario/test_dns_integration.py
@@ -218,7 +218,7 @@
 
         name = data_utils.rand_name('test-domain')
         zone_name = "%s.%s.%s.zone." % (cls.client.user_id,
-                                        cls.client.tenant_id,
+                                        cls.client.project_id,
                                         name)
         dns_domain_template = "<user_id>.<project_id>.%s.zone." % name
 
diff --git a/neutron_tempest_plugin/scenario/test_dvr.py b/neutron_tempest_plugin/scenario/test_dvr.py
index fa2e9d4..a37abf4 100644
--- a/neutron_tempest_plugin/scenario/test_dvr.py
+++ b/neutron_tempest_plugin/scenario/test_dvr.py
@@ -64,7 +64,7 @@
         The test is done by putting the SNAT port down on controller node.
         """
         router = self.create_router_by_client(
-            distributed=True, tenant_id=self.client.tenant_id, is_admin=True,
+            distributed=True, tenant_id=self.client.project_id, is_admin=True,
             ha=False)
         self.setup_network_and_server(router=router)
         self._check_snat_port_connectivity()
diff --git a/neutron_tempest_plugin/scenario/test_migration.py b/neutron_tempest_plugin/scenario/test_migration.py
index 410c64e..3c0d384 100644
--- a/neutron_tempest_plugin/scenario/test_migration.py
+++ b/neutron_tempest_plugin/scenario/test_migration.py
@@ -125,7 +125,7 @@
     def _test_migration(self, before_dvr, before_ha, after_dvr, after_ha):
         router = self.create_router_by_client(
             distributed=before_dvr, ha=before_ha,
-            tenant_id=self.client.tenant_id, is_admin=True)
+            tenant_id=self.client.project_id, is_admin=True)
 
         self.setup_network_and_server(router=router)
         self._wait_until_router_ports_ready(
diff --git a/neutron_tempest_plugin/scenario/test_mtu.py b/neutron_tempest_plugin/scenario/test_mtu.py
index 31319ec..ea62fcf 100644
--- a/neutron_tempest_plugin/scenario/test_mtu.py
+++ b/neutron_tempest_plugin/scenario/test_mtu.py
@@ -101,7 +101,7 @@
 
     def _create_setup(self):
         self.admin_client = self.os_admin.network_client
-        net_kwargs = {'tenant_id': self.client.tenant_id}
+        net_kwargs = {'tenant_id': self.client.project_id}
         for net_type in ['vxlan', 'gre']:
             net_kwargs['name'] = '-'.join([net_type, 'net'])
             net_kwargs['provider:network_type'] = net_type
@@ -186,7 +186,7 @@
     def _create_setup(self):
         self.admin_client = self.os_admin.network_client
         for test_net in self._get_network_params():
-            test_net['tenant_id'] = self.client.tenant_id
+            test_net['tenant_id'] = self.client.project_id
             test_net['name'] = data_utils.rand_name('net')
             cidr = None if 'cidr' not in test_net else test_net.pop('cidr')
             network = self.admin_client.create_network(**test_net)[
