diff --git a/jenkins/jobs/murano.yaml b/jenkins/jobs/murano.yaml
index 81b92efb90..462f26e9a3 100644
--- a/jenkins/jobs/murano.yaml
+++ b/jenkins/jobs/murano.yaml
@@ -90,3 +90,53 @@
     publishers:
       - devstack-logs
       - console-log
+
+- job-template:
+    name: '{pipeline}-muranoclient-dsvm-functional{branch-designator}'
+    node: '{node}'
+
+    wrappers:
+      - build-timeout:
+          timeout: 65
+      - timestamps
+
+    builders:
+      - link-logs
+      - net-info
+      - devstack-checkout
+      - shell: |
+          #!/bin/bash -xe
+          export PYTHONUNBUFFERED=true
+          export DEVSTACK_GATE_TIMEOUT=60
+          export DEVSTACK_GATE_NEUTRON=1
+          export DEVSTACK_PROJECT_FROM_GIT=python-muranoclient
+          export BRANCH_OVERRIDE={branch-override}
+
+          export ENABLED_SERVICES=murano,murano-api,murano-engine,tempest
+          export PROJECTS="openstack/murano $PROJECTS"
+          export PROJECTS="openstack/murano-dashboard $PROJECTS"
+          export PROJECTS="openstack/python-muranoclient $PROJECTS"
+
+          if [ "$BRANCH_OVERRIDE" != "default" ] ; then
+              export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
+          fi
+
+          function pre_test_hook {{
+              # Install Murano devstack modules
+              cd /opt/stack/new/murano/functionaltests
+              ./pre_test_hook.sh
+          }}
+          export -f pre_test_hook
+
+          function post_test_hook {{
+              # Configure and run functional tests
+              /opt/stack/new/python-muranoclient/muranoclient/tests/functional/hooks/post_test_hook.sh
+          }}
+          export -f post_test_hook
+
+          cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh
+          ./safe-devstack-vm-gate-wrap.sh
+
+    publishers:
+      - test-results
+      - devstack-logs
diff --git a/jenkins/jobs/projects.yaml b/jenkins/jobs/projects.yaml
index 20d006c1ef..b2e9f8910d 100755
--- a/jenkins/jobs/projects.yaml
+++ b/jenkins/jobs/projects.yaml
@@ -5070,6 +5070,11 @@
     jobs:
       - python-jobs
       - pypi-jobs
+      - '{pipeline}-muranoclient-dsvm-functional{branch-designator}':
+          pipeline: check
+          node: 'devstack-precise || devstack-trusty'
+          branch-designator: ''
+          branch-override: default
 
 - project:
     name: python-openstacksdk
diff --git a/zuul/layout.yaml b/zuul/layout.yaml
index 79a341cc1d..ae27b42d89 100755
--- a/zuul/layout.yaml
+++ b/zuul/layout.yaml
@@ -1006,6 +1006,9 @@ jobs:
   - name: gate-python-muranoclient-requirements
     voting: false
 
+  - name: ^(gate|check)-muranoclient-dsvm-functional$
+    voting: false
+
   - name: gate-murano-dashboard-requirements
     voting: false
 
@@ -2430,6 +2433,7 @@ projects:
     check:
       - gate-python-muranoclient-requirements
       - gate-murano-devstack-dsvm
+      - check-muranoclient-dsvm-functional
     gate:
       - gate-murano-devstack-dsvm