diff --git a/manila_tempest_tests/tests/api/admin/test_share_manage_negative.py b/manila_tempest_tests/tests/api/admin/test_share_manage_negative.py
index d5cc09f..06d429b 100644
--- a/manila_tempest_tests/tests/api/admin/test_share_manage_negative.py
+++ b/manila_tempest_tests/tests/api/admin/test_share_manage_negative.py
@@ -258,7 +258,9 @@
 
         # forge bad param to have a share in manage_error state
         invalid_params = valid_params.copy()
-        invalid_params.update({'export_path': 'invalid'})
+        invalid_params.update(
+            {'export_path': 'invalid-%s-share' % self.protocol}
+        )
         invalid_share = self.shares_v2_client.manage_share(**invalid_params)
 
         waiters.wait_for_share_status(
diff --git a/manila_tempest_tests/tests/api/admin/test_share_networks.py b/manila_tempest_tests/tests/api/admin/test_share_networks.py
index 2ff9533..4bb71a2 100644
--- a/manila_tempest_tests/tests/api/admin/test_share_networks.py
+++ b/manila_tempest_tests/tests/api/admin/test_share_networks.py
@@ -43,6 +43,7 @@
         }
         cls.sn_with_ldap_ss = cls.create_share_network(
             cleanup_in_class=True,
+            add_security_services=False,
             **cls.data_sn_with_ldap_ss)
 
         cls.shares_client.add_sec_service_to_share_network(
@@ -68,7 +69,9 @@
 
         cls.sn_with_kerberos_ss = (
             cls.alt_shares_v2_client.create_share_network(
-                cleanup_in_class=True, **cls.data_sn_with_kerberos_ss)
+                cleanup_in_class=True,
+                add_security_services=False,
+                **cls.data_sn_with_kerberos_ss)
         )
 
         cls.alt_shares_v2_client.add_sec_service_to_share_network(
diff --git a/manila_tempest_tests/tests/api/base.py b/manila_tempest_tests/tests/api/base.py
index 0ee3611..2310591 100755
--- a/manila_tempest_tests/tests/api/base.py
+++ b/manila_tempest_tests/tests/api/base.py
@@ -1110,11 +1110,6 @@
         return rule
 
 
-class BaseSharesAltTest(BaseSharesTest):
-    """Base test case class for all Shares Alt API tests."""
-    credentials = ('alt', )
-
-
 class BaseSharesAdminTest(BaseSharesTest):
     """Base test case class for all Shares Admin API tests."""
     credentials = ('admin', )
diff --git a/manila_tempest_tests/tests/api/test_security_services.py b/manila_tempest_tests/tests/api/test_security_services.py
index 81645b5..3281248 100644
--- a/manila_tempest_tests/tests/api/test_security_services.py
+++ b/manila_tempest_tests/tests/api/test_security_services.py
@@ -225,6 +225,7 @@
         sn = self.shares_client.get_share_network(
             self.shares_client.share_network_id)
         fresh_sn = self.create_share_network(
+            add_security_services=False,
             neutron_net_id=sn["neutron_net_id"],
             neutron_subnet_id=sn["neutron_subnet_id"])
 
diff --git a/manila_tempest_tests/tests/api/test_security_services_mapping_negative.py b/manila_tempest_tests/tests/api/test_security_services_mapping_negative.py
index f504e5c..32323fc 100644
--- a/manila_tempest_tests/tests/api/test_security_services_mapping_negative.py
+++ b/manila_tempest_tests/tests/api/test_security_services_mapping_negative.py
@@ -33,7 +33,8 @@
     @classmethod
     def resource_setup(cls):
         super(SecServicesMappingNegativeTest, cls).resource_setup()
-        cls.sn = cls.create_share_network(cleanup_in_class=True)
+        cls.sn = cls.create_share_network(cleanup_in_class=True,
+                                          add_security_services=False)
         cls.share_net_info = (
             utils.share_network_get_default_subnet(cls.sn)
             if utils.share_network_subnets_are_supported() else cls.sn)
@@ -115,6 +116,7 @@
         sn = self.shares_client.get_share_network(
             self.shares_client.share_network_id)
         fresh_sn = self.create_share_network(
+            add_security_services=False,
             neutron_net_id=sn["neutron_net_id"],
             neutron_subnet_id=sn["neutron_subnet_id"])
 
@@ -147,7 +149,8 @@
         # create share network
         data = self.generate_share_network_data()
 
-        sn = self.create_share_network(client=self.cl, **data)
+        sn = self.create_share_network(client=self.cl,
+                                       add_security_services=False, **data)
         self.assertDictContainsSubset(data, sn)
 
         # create security services with same type
@@ -173,7 +176,8 @@
         # create share network
         data = self.generate_share_network_data()
 
-        sn = self.create_share_network(client=self.cl, **data)
+        sn = self.create_share_network(client=self.cl,
+                                       add_security_services=False, **data)
         self.assertDictContainsSubset(data, sn)
 
         # create security service
diff --git a/manila_tempest_tests/tests/api/test_security_services_negative.py b/manila_tempest_tests/tests/api/test_security_services_negative.py
index 3539634..917860d 100644
--- a/manila_tempest_tests/tests/api/test_security_services_negative.py
+++ b/manila_tempest_tests/tests/api/test_security_services_negative.py
@@ -100,6 +100,7 @@
         sn = self.shares_client.get_share_network(
             self.shares_client.share_network_id)
         fresh_sn = self.create_share_network(
+            add_security_services=False,
             neutron_net_id=sn["neutron_net_id"],
             neutron_subnet_id=sn["neutron_subnet_id"])
 
diff --git a/manila_tempest_tests/tests/api/test_share_networks.py b/manila_tempest_tests/tests/api/test_share_networks.py
index db07591..d2f8399 100644
--- a/manila_tempest_tests/tests/api/test_share_networks.py
+++ b/manila_tempest_tests/tests/api/test_share_networks.py
@@ -181,6 +181,7 @@
         }
         cls.sn_with_ldap_ss = cls.create_share_network(
             cleanup_in_class=True,
+            add_security_services=False,
             **cls.data_sn_with_ldap_ss)
 
         cls.shares_client.add_sec_service_to_share_network(
@@ -206,6 +207,7 @@
 
         cls.sn_with_kerberos_ss = cls.create_share_network(
             cleanup_in_class=True,
+            add_security_services=False,
             **cls.data_sn_with_kerberos_ss)
 
         cls.shares_client.add_sec_service_to_share_network(
diff --git a/manila_tempest_tests/tests/api/test_shares_actions_negative.py b/manila_tempest_tests/tests/api/test_shares_actions_negative.py
index 5195d14..8152130 100644
--- a/manila_tempest_tests/tests/api/test_shares_actions_negative.py
+++ b/manila_tempest_tests/tests/api/test_shares_actions_negative.py
@@ -268,3 +268,11 @@
             params=filters)
 
         self.assertEqual(0, len(shares))
+
+    @decorators.skip_because(bug='1914363')
+    @decorators.idempotent_id('e8f857f1-ec32-4f81-9e09-26065891dc93')
+    @tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
+    def test_get_share_from_other_project(self):
+        self.assertRaises(lib_exc.NotFound,
+                          self.alt_shares_v2_client.get_share,
+                          self.share['id'])
