diff --git a/.zuul.yaml b/.zuul.yaml
index 7541e014..6c37f8c1 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -1,3 +1,29 @@
+- job:
+    name: swiftclient-swift-functional
+    parent: swift-dsvm-functional
+    description: |
+      Run swift's functional tests with python-swiftclient
+      installed from source instead as package from PyPI.
+    # Ensure that we install python-swiftclient from git and
+    # do not install from pypi. This is needed since the parent
+    # job sets zuul_work_dir to the swift directory and uses tox
+    # for installation.
+    required-projects:
+      - git.openstack.org/openstack/python-swiftclient
+
+- job:
+    name: swiftclient-functional
+    parent: swift-dsvm-functional
+    description: |
+      Run functional tests of python-swiftclient with
+      python-swiftclient installed from source instead as package from
+      PyPI.
+    required-projects:
+      - git.openstack.org/openstack/python-swiftclient
+    vars:
+      # Override value from parent job to use swiftclient tests
+      zuul_work_dir: "{{ zuul.projects['git.openstack.org/openstack/python-swiftclient'].src_dir }}"
+
 - project:
     templates:
       - openstack-python-jobs
@@ -10,18 +36,14 @@
       - release-notes-jobs-python3
     check:
       jobs:
+        - swiftclient-swift-functional
+        - swiftclient-functional
         - openstack-tox-lower-constraints
-        - legacy-swift-dsvm-functional
-        - legacy-swift-dsvm-functional-identity-v3-only:
-            voting: false
-        - legacy-swiftclient-dsvm-functional
-        - legacy-swiftclient-dsvm-functional-identity-v3-only:
-            voting: false
     gate:
       jobs:
+        - swiftclient-swift-functional
+        - swiftclient-functional
         - openstack-tox-lower-constraints
-        - legacy-swift-dsvm-functional
-        - legacy-swiftclient-dsvm-functional
     post:
       jobs:
         - openstack-tox-cover