diff --git a/.zuul.yaml b/.zuul.yaml
index f71e374..d1c2785 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -7,10 +7,9 @@
       jobs:
         - barbican-tempest-plugin-simple-crypto
         - barbican-tempest-plugin-simple-crypto-secure-rbac
+        - barbican-tempest-plugin-simple-crypto-yoga
         - barbican-tempest-plugin-simple-crypto-xena
         - barbican-tempest-plugin-simple-crypto-wallaby
-        - barbican-tempest-plugin-simple-crypto-victoria
-        - barbican-tempest-plugin-simple-crypto-ussuri
         - barbican-tempest-plugin-simple-crypto-ipv6-only
         - barbican-tempest-plugin-simple-crypto-castellan-src
         - barbican-tempest-plugin-simple-crypto-cursive
@@ -70,6 +69,11 @@
               enforce_scope: True
 
 - job:
+    name: barbican-tempest-plugin-simple-crypto-yoga
+    parent: barbican-tempest-plugin-simple-crypto
+    override-checkout: stable/yoga
+
+- job:
     name: barbican-tempest-plugin-simple-crypto-xena
     parent: barbican-tempest-plugin-simple-crypto
     override-checkout: stable/xena
@@ -80,18 +84,6 @@
     override-checkout: stable/wallaby
 
 - job:
-    name: barbican-tempest-plugin-simple-crypto-victoria
-    parent: barbican-tempest-plugin-simple-crypto
-    nodeset: openstack-single-node-bionic
-    override-checkout: stable/victoria
-
-- job:
-    name: barbican-tempest-plugin-simple-crypto-ussuri
-    parent: barbican-tempest-plugin-simple-crypto
-    nodeset: openstack-single-node-bionic
-    override-checkout: stable/ussuri
-
-- job:
     name: barbican-tempest-plugin-simple-crypto-ipv6-only
     parent: devstack-tempest-ipv6
     required-projects: *barbican-tempest-reqs
diff --git a/barbican_tempest_plugin/tests/scenario/manager.py b/barbican_tempest_plugin/tests/scenario/manager.py
index 8daf090..e9476f2 100644
--- a/barbican_tempest_plugin/tests/scenario/manager.py
+++ b/barbican_tempest_plugin/tests/scenario/manager.py
@@ -82,31 +82,6 @@
     #
     # The create_[resource] functions only return body and discard the
     # resp part which is not used in scenario tests
-
-    def _create_port(self, network_id, client=None, namestart='port-quotatest',
-                     **kwargs):
-        if not client:
-            client = self.ports_client
-        name = data_utils.rand_name(namestart)
-        result = client.create_port(
-            name=name,
-            network_id=network_id,
-            **kwargs)
-        self.assertIsNotNone(result, 'Unable to allocate port')
-        port = result['port']
-        self.addCleanup(test_utils.call_and_ignore_notfound_exc,
-                        client.delete_port, port['id'])
-        return port
-
-    def create_keypair(self, client=None):
-        if not client:
-            client = self.keypairs_client
-        name = data_utils.rand_name(self.__class__.__name__)
-        # We don't need to create a keypair by pubkey in scenario
-        body = client.create_keypair(name=name)
-        self.addCleanup(client.delete_keypair, name)
-        return body['keypair']
-
     def create_server(self, name=None, image_id=None, flavor=None,
                       validatable=False, wait_until='ACTIVE',
                       clients=None, **kwargs):
@@ -179,9 +154,9 @@
             for net in networks:
                 net_id = net.get('uuid', net.get('id'))
                 if 'port' not in net:
-                    port = self._create_port(network_id=net_id,
-                                             client=clients.ports_client,
-                                             **create_port_body)
+                    port = self.create_port(network_id=net_id,
+                                            client=clients.ports_client,
+                                            **create_port_body)
                     ports.append({'port': port['id']})
                 else:
                     ports.append({'port': net['port']})
@@ -295,7 +270,7 @@
             available_stores = []
             try:
                 available_stores = self.image_client.info_stores()['stores']
-            except exceptions.NotFound:
+            except lib_exc.NotFound:
                 pass
             available_import_methods = self.image_client.info_import()[
                 'import-methods']['value']
