diff --git a/manila_tempest_tests/tests/api/admin/test_replication.py b/manila_tempest_tests/tests/api/admin/test_replication.py
index 2837dad..a0c0d84 100644
--- a/manila_tempest_tests/tests/api/admin/test_replication.py
+++ b/manila_tempest_tests/tests/api/admin/test_replication.py
@@ -41,14 +41,16 @@
             raise share_exceptions.ShareReplicationTypeException(
                 replication_type=cls.replication_type
             )
-        cls.zones = cls.get_availability_zones(client=cls.admin_client)
-        cls.share_zone = cls.zones[0]
-        cls.replica_zone = cls.zones[-1]
 
         extra_specs = {"replication_type": cls.replication_type}
         cls.share_type = cls._create_share_type(extra_specs)
         cls.share_type_id = cls.share_type['id']
 
+        cls.zones = cls.get_availability_zones_matching_share_type(
+            cls.share_type, client=cls.admin_client)
+        cls.share_zone = cls.zones[0]
+        cls.replica_zone = cls.zones[-1]
+
         # Create share with above share_type
         cls.share = cls.create_share(share_type_id=cls.share_type_id,
                                      availability_zone=cls.share_zone,
@@ -71,7 +73,8 @@
             raise self.skipException(
                 msg % ','.join(constants.REPLICATION_PROMOTION_CHOICES))
         share = self.create_share(
-            share_type_id=self.share_type_id, client=self.admin_client)
+            share_type_id=self.share_type_id, client=self.admin_client,
+            availability_zone=self.share_zone)
         original_replica = self.admin_client.list_share_replicas(
             share_id=share['id'])[0]
 
diff --git a/manila_tempest_tests/tests/api/admin/test_replication_actions.py b/manila_tempest_tests/tests/api/admin/test_replication_actions.py
index 069f400..a278751 100644
--- a/manila_tempest_tests/tests/api/admin/test_replication_actions.py
+++ b/manila_tempest_tests/tests/api/admin/test_replication_actions.py
@@ -42,14 +42,17 @@
             raise share_exceptions.ShareReplicationTypeException(
                 replication_type=cls.replication_type
             )
-        cls.zones = cls.get_availability_zones(client=cls.admin_client)
-        cls.share_zone = cls.zones[0]
-        cls.replica_zone = cls.zones[-1]
 
         # create share type
         extra_specs = {"replication_type": cls.replication_type}
         cls.share_type = cls._create_share_type(extra_specs)
         cls.share_type_id = cls.share_type['id']
+
+        cls.zones = cls.get_availability_zones_matching_share_type(
+            cls.share_type, client=cls.admin_client)
+        cls.share_zone = cls.zones[0]
+        cls.replica_zone = cls.zones[-1]
+
         # create share
         cls.share = cls.create_share(size=CONF.share.share_size + 1,
                                      share_type_id=cls.share_type_id,
diff --git a/manila_tempest_tests/tests/api/base.py b/manila_tempest_tests/tests/api/base.py
index a4892a8..fefdc81 100644
--- a/manila_tempest_tests/tests/api/base.py
+++ b/manila_tempest_tests/tests/api/base.py
@@ -687,18 +687,56 @@
         return sg_snapshot
 
     @classmethod
-    def get_availability_zones(cls, client=None):
+    def get_availability_zones(cls, client=None, backends=None):
         """List the availability zones for "manila-share" services
 
          that are currently in "up" state.
          """
-        client = client or cls.shares_v2_client
+        client = client or cls.admin_shares_v2_client
+        backends = (
+            '|'.join(['^%s$' % backend for backend in backends])
+            if backends else '.*'
+        )
         cls.services = client.list_services()
         zones = [service['zone'] for service in cls.services if
-                 service['binary'] == "manila-share" and
-                 service['state'] == 'up']
+                 service['binary'] == 'manila-share' and
+                 service['state'] == 'up' and
+                 re.search(backends, service['host'])]
         return zones
 
+    @classmethod
+    def get_pools_matching_share_type(cls, share_type, client=None):
+        client = client or cls.admin_shares_v2_client
+        if utils.is_microversion_supported('2.23'):
+            return client.list_pools(
+                search_opts={'share_type': share_type['id']})['pools']
+
+        pools = client.list_pools(detail=True)['pools']
+        share_type = client.get_share_type(share_type['id'])['share_type']
+        extra_specs = {}
+        for k, v in share_type['extra_specs'].items():
+            extra_specs[k] = (
+                True if six.text_type(v).lower() == 'true'
+                else False if six.text_type(v).lower() == 'false' else v
+            )
+        return [
+            pool for pool in pools if all(y in pool['capabilities'].items()
+                                          for y in extra_specs.items())
+        ]
+
+    @classmethod
+    def get_availability_zones_matching_share_type(cls, share_type,
+                                                   client=None):
+
+        client = client or cls.admin_shares_v2_client
+        pools_matching_share_type = cls.get_pools_matching_share_type(
+            share_type, client=client)
+        backends_matching_share_type = set(
+            [pool['name'].split("#")[0] for pool in pools_matching_share_type]
+        )
+        azs = cls.get_availability_zones(backends=backends_matching_share_type)
+        return azs
+
     def get_pools_for_replication_domain(self):
         # Get the list of pools for the replication domain
         pools = self.admin_client.list_pools(detail=True)['pools']
diff --git a/manila_tempest_tests/tests/api/test_replication.py b/manila_tempest_tests/tests/api/test_replication.py
index 589f47c..41ad287 100644
--- a/manila_tempest_tests/tests/api/test_replication.py
+++ b/manila_tempest_tests/tests/api/test_replication.py
@@ -46,10 +46,6 @@
             raise share_exceptions.ShareReplicationTypeException(
                 replication_type=cls.replication_type
             )
-        cls.zones = cls.get_availability_zones(client=cls.admin_client)
-        cls.share_zone = cls.zones[0]
-        cls.replica_zone = cls.zones[-1]
-
         cls.extra_specs = cls.add_extra_specs_to_dict(
             {"replication_type": cls.replication_type})
         share_type = cls.create_share_type(
@@ -57,6 +53,12 @@
             extra_specs=cls.extra_specs,
             client=cls.admin_client)
         cls.share_type = share_type["share_type"]
+
+        cls.zones = cls.get_availability_zones_matching_share_type(
+            cls.share_type, client=cls.admin_client)
+        cls.share_zone = cls.zones[0]
+        cls.replica_zone = cls.zones[-1]
+
         # Create share with above share_type
         cls.creation_data = {'kwargs': {
             'share_type_id': cls.share_type['id'],
@@ -309,10 +311,6 @@
             raise share_exceptions.ShareReplicationTypeException(
                 replication_type=cls.replication_type
             )
-        cls.zones = cls.get_availability_zones(client=cls.admin_client)
-        cls.share_zone = cls.zones[0]
-        cls.replica_zone = cls.zones[-1]
-
         cls.extra_specs = cls.add_extra_specs_to_dict(
             {"replication_type": cls.replication_type})
         share_type = cls.create_share_type(
@@ -320,6 +318,12 @@
             extra_specs=cls.extra_specs,
             client=cls.admin_client)
         cls.share_type = share_type["share_type"]
+
+        cls.zones = cls.get_availability_zones_matching_share_type(
+            cls.share_type, client=cls.admin_client)
+        cls.share_zone = cls.zones[0]
+        cls.replica_zone = cls.zones[-1]
+
         # Create share with above share_type
         cls.creation_data = {'kwargs': {
             'share_type_id': cls.share_type['id'],
diff --git a/manila_tempest_tests/tests/api/test_replication_negative.py b/manila_tempest_tests/tests/api/test_replication_negative.py
index 7b596fb..30feeb6 100644
--- a/manila_tempest_tests/tests/api/test_replication_negative.py
+++ b/manila_tempest_tests/tests/api/test_replication_negative.py
@@ -42,15 +42,17 @@
             raise share_exceptions.ShareReplicationTypeException(
                 replication_type=cls.replication_type
             )
-        cls.zones = cls.get_availability_zones(client=cls.admin_client)
-        cls.share_zone = cls.zones[0]
-        cls.replica_zone = cls.zones[-1]
 
         # create share type
         extra_specs = {"replication_type": cls.replication_type}
         cls.share_type = cls._create_share_type(extra_specs)
         cls.share_type_id = cls.share_type['id']
 
+        cls.zones = cls.get_availability_zones_matching_share_type(
+            cls.share_type, client=cls.admin_client)
+        cls.share_zone = cls.zones[0]
+        cls.replica_zone = cls.zones[-1]
+
         # create share with above share_type
         cls.share1, cls.instance_id1 = cls._create_share_get_instance()
 
diff --git a/manila_tempest_tests/tests/api/test_replication_snapshots.py b/manila_tempest_tests/tests/api/test_replication_snapshots.py
index 773f74a..e1902f7 100644
--- a/manila_tempest_tests/tests/api/test_replication_snapshots.py
+++ b/manila_tempest_tests/tests/api/test_replication_snapshots.py
@@ -42,19 +42,16 @@
             raise share_exceptions.ShareReplicationTypeException(
                 replication_type=cls.replication_type
             )
-        cls.zones = cls.get_availability_zones(client=cls.admin_client)
-        cls.share_zone = cls.zones[0]
-        cls.replica_zone = cls.zones[-1]
 
         # create share type
         extra_specs = {"replication_type": cls.replication_type}
         cls.share_type = cls._create_share_type(extra_specs)
         cls.share_type_id = cls.share_type['id']
-        # Create share with above share_type
-        cls.creation_data = {'kwargs': {
-            'share_type_id': cls.share_type_id,
-            'availability_zone': cls.share_zone,
-        }}
+
+        cls.zones = cls.get_availability_zones_matching_share_type(
+            cls.share_type, client=cls.admin_client)
+        cls.share_zone = cls.zones[0]
+        cls.replica_zone = cls.zones[-1]
 
     @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)
     def test_snapshot_after_share_replica(self):
diff --git a/manila_tempest_tests/tests/api/test_revert_to_snapshot.py b/manila_tempest_tests/tests/api/test_revert_to_snapshot.py
index 156a396..c4b72a0 100644
--- a/manila_tempest_tests/tests/api/test_revert_to_snapshot.py
+++ b/manila_tempest_tests/tests/api/test_revert_to_snapshot.py
@@ -78,10 +78,6 @@
                 raise share_exceptions.ShareReplicationTypeException(
                     replication_type=cls.replication_type
                 )
-            cls.zones = cls.get_availability_zones(client=cls.admin_client)
-            cls.share_zone = cls.zones[0]
-            cls.replica_zone = cls.zones[-1]
-
             extra_specs = cls.add_extra_specs_to_dict({
                 "replication_type": cls.replication_type,
                 constants.REVERT_TO_SNAPSHOT_SUPPORT: True,
@@ -91,6 +87,10 @@
                 extra_specs=extra_specs,
                 client=cls.admin_client)
             cls.replicated_share_type = share_type["share_type"]
+            cls.zones = cls.get_availability_zones_matching_share_type(
+                cls.replicated_share_type, client=cls.admin_client)
+            cls.share_zone = cls.zones[0]
+            cls.replica_zone = cls.zones[-1]
 
     @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)
     @ddt.data(
diff --git a/manila_tempest_tests/tests/api/test_share_groups.py b/manila_tempest_tests/tests/api/test_share_groups.py
index f438732..4e8499f 100644
--- a/manila_tempest_tests/tests/api/test_share_groups.py
+++ b/manila_tempest_tests/tests/api/test_share_groups.py
@@ -195,7 +195,8 @@
     def test_create_sg_and_share_specifying_az(self, where_specify_az):
         # Get list of existing availability zones, at least one always
         # should exist
-        azs = self.shares_v2_client.list_availability_zones()
+        azs = self.get_availability_zones_matching_share_type(
+            self.share_type)
 
         sg_kwargs = {
             'share_group_type_id': self.share_group_type_id,
@@ -204,7 +205,7 @@
             'cleanup_in_class': False,
         }
         if where_specify_az in ('sg', 'sg_and_share'):
-            sg_kwargs['availability_zone'] = azs[0]['name']
+            sg_kwargs['availability_zone'] = azs[0]
 
         # Create share group
         share_group = self.create_share_group(**sg_kwargs)
@@ -215,10 +216,9 @@
 
         self.assertIn('availability_zone', share_group)
         if where_specify_az in ('sg', 'sg_and_share'):
-            self.assertEqual(azs[0]['name'], share_group['availability_zone'])
+            self.assertEqual(azs[0], share_group['availability_zone'])
         else:
-            self.assertIn(
-                share_group['availability_zone'], [az['name'] for az in azs])
+            self.assertIn(share_group['availability_zone'], azs)
 
         # Test 'consistent_snapshot_support' as part of 2.33 API change
         self.assertIn('consistent_snapshot_support', share_group)
@@ -233,7 +233,7 @@
             'experimental': True,
         }
         if where_specify_az == 'sg_and_share':
-            s_kwargs['availability_zone'] = azs[0]['name']
+            s_kwargs['availability_zone'] = azs[0]
 
         # Create share in share group
         share = self.create_share(**s_kwargs)
