diff --git a/src/com/mirantis/system_qa/SharedPipeline.groovy b/src/com/mirantis/system_qa/SharedPipeline.groovy
index bbf8415..0e0fdda 100644
--- a/src/com/mirantis/system_qa/SharedPipeline.groovy
+++ b/src/com/mirantis/system_qa/SharedPipeline.groovy
@@ -190,7 +190,7 @@
         run_cmd("""\
             if [ -n "$TCP_QA_REFS" ]; then
                 set -e
-                git fetch https://review.gerrithub.io/Mirantis/tcp-qa $TCP_QA_REFS && git checkout FETCH_HEAD || exit \$?
+                git reset --hard && git fetch https://review.gerrithub.io/Mirantis/tcp-qa $TCP_QA_REFS && git checkout FETCH_HEAD || exit \$?
             fi""")
         if (updateRequirements) {
             run_cmd("""\
diff --git a/tcp_tests/templates/_heat_environments/fragments/Networks.yaml b/tcp_tests/templates/_heat_environments/fragments/Networks.yaml
index 5840d80..11cc4a5 100644
--- a/tcp_tests/templates/_heat_environments/fragments/Networks.yaml
+++ b/tcp_tests/templates/_heat_environments/fragments/Networks.yaml
@@ -11,16 +11,19 @@
 
 resources:
   control_net:
+    depends_on: tenant_net
     type: OS::Neutron::Net
     properties:
       port_security_enabled: false
       name: { list_join: ['-', [ 'control_net', { get_param: env_name } ]] }
   tenant_net:
+    depends_on: management_net
     type: OS::Neutron::Net
     properties:
       port_security_enabled: false
       name: { list_join: ['-', [ 'tenant_net', { get_param: env_name } ]] }
   management_net:
+    depends_on: external_net
     type: OS::Neutron::Net
     properties:
       port_security_enabled: false
diff --git a/tcp_tests/templates/bm-cicd-queens-ovs-maas/salt-context-cookiecutter-openstack_ovs.yaml b/tcp_tests/templates/bm-cicd-queens-ovs-maas/salt-context-cookiecutter-openstack_ovs.yaml
index 2e368b9..ec9fc66 100644
--- a/tcp_tests/templates/bm-cicd-queens-ovs-maas/salt-context-cookiecutter-openstack_ovs.yaml
+++ b/tcp_tests/templates/bm-cicd-queens-ovs-maas/salt-context-cookiecutter-openstack_ovs.yaml
@@ -1,4 +1,12 @@
 default_context:
+  ironic_enabled: True
+  openstack_baremetal_hostname: bmt
+  openstack_baremetal_address_baremetal: 10.167.11.20
+  openstack_baremetal_node01_baremetal_address: 10.167.11.21
+  openstack_baremetal_node02_baremetal_address: 10.167.11.22
+  openstack_baremetal_node03_baremetal_address: 10.167.11.23
+  openstack_baremetal_interface: ens7
+  openstack_baremetal_vip_interface: phy-baremetal
   jenkins_cfg_admin_password: r00tme
   bmk_enabled: 'False'
   cicd_control_node01_address: 10.167.11.91
diff --git a/tcp_tests/templates/bm-cicd-queens-ovs-maas/salt-context-vcp-environment.yaml b/tcp_tests/templates/bm-cicd-queens-ovs-maas/salt-context-vcp-environment.yaml
index e73344e..32f567a 100644
--- a/tcp_tests/templates/bm-cicd-queens-ovs-maas/salt-context-vcp-environment.yaml
+++ b/tcp_tests/templates/bm-cicd-queens-ovs-maas/salt-context-vcp-environment.yaml
@@ -405,3 +405,37 @@
           role: single_dhcp
         ens3:
           role: single_ctl
+
+    bmt01.bm-cicd-queens-ovs-maas.local:
+      reclass_storage_name: openstack_baremetal_node01
+      roles:
+      - openstack_baremetal
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    bmt02.bm-cicd-queens-ovs-maas.local:
+      reclass_storage_name: openstack_baremetal_node02
+      roles:
+      - openstack_baremetal
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
+    bmt03.bm-cicd-queens-ovs-maas.local:
+      reclass_storage_name: openstack_baremetal_node03
+      roles:
+      - openstack_baremetal
+      - linux_system_codename_xenial
+      interfaces:
+        ens2:
+          role: single_dhcp
+        ens3:
+          role: single_ctl
+
diff --git a/tcp_tests/templates/heat-bm-cicd-pike-contrail-sl/underlay.hot b/tcp_tests/templates/heat-bm-cicd-pike-contrail-sl/underlay.hot
index 0afbd66..cffb044 100644
--- a/tcp_tests/templates/heat-bm-cicd-pike-contrail-sl/underlay.hot
+++ b/tcp_tests/templates/heat-bm-cicd-pike-contrail-sl/underlay.hot
@@ -1,6 +1,6 @@
 ---
 
-heat_template_version: pike
+heat_template_version: queens
 
 description: MCP environment for heat-bm-cicd-pike-contrail-sl
 
diff --git a/tcp_tests/tests/system/test_backup_restore_galera.py b/tcp_tests/tests/system/test_backup_restore_galera.py
new file mode 100644
index 0000000..9309466
--- /dev/null
+++ b/tcp_tests/tests/system/test_backup_restore_galera.py
@@ -0,0 +1,222 @@
+import pytest
+
+from tcp_tests import logger
+from tcp_tests import settings
+from tcp_tests.utils import run_jenkins_job
+from tcp_tests.utils import get_jenkins_job_stages
+
+LOG = logger.logger
+
+
+class TestBackupRestoreGalera(object):
+    """
+    Created by https://mirantis.jira.com/browse/PROD-32674
+    """
+
+    @pytest.mark.grab_versions
+    @pytest.mark.parametrize("_", [settings.ENV_NAME])
+    @pytest.mark.run_galera_backup_restore
+    def test_backup_restore_galera(self, salt_actions, show_step, _):
+        """Execute backup/restore for galera
+
+        Scenario:
+            1. Get CICD Jenkins access credentials from salt
+            2. Run job galera_backup_database
+            3. Run tests with cvp-sanity job
+            4. Run tests with cvp-tempest job
+            5. Run job galera_verify_restore
+            6. If jobs are passed then start tests with cvp-sanity job
+            7. Run tests with cvp-tempest job
+        """
+        salt = salt_actions
+        jenkins_creds = salt.get_cluster_jenkins_creds()
+
+        # ################### Login Jenkins on cid01 node ###################
+        show_step(1)
+
+        jenkins_url = jenkins_creds.get('url')
+        jenkins_user = jenkins_creds.get('user')
+        jenkins_pass = jenkins_creds.get('pass')
+        jenkins_start_timeout = 60
+        jenkins_build_timeout = 1800
+
+        # ################## Run backup job #########################
+        show_step(2)
+        job_name = 'galera_backup_database'
+        job_parameters = {
+            'ASK_CONFIRMATION': False
+        }
+        backup_galera_pipeline = run_jenkins_job.run_job(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            start_timeout=jenkins_start_timeout,
+            build_timeout=jenkins_build_timeout,
+            verbose=False,
+            job_name=job_name,
+            job_parameters=job_parameters)
+
+        (description, stages) = get_jenkins_job_stages.get_deployment_result(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            job_name=job_name,
+            build_number='lastBuild')
+
+        LOG.info(description)
+        LOG.info('\n'.join(stages))
+
+        assert backup_galera_pipeline == 'SUCCESS', "{0}\n{1}".format(
+            description, '\n'.join(stages))
+        # ######################## Run CPV ###########################
+        show_step(3)
+        job_name = 'cvp-sanity'
+        job_cvp_sanity_parameters = {
+            'EXTRA_PARAMS': '''
+
+                envs:
+                  - skipped_packages='{},{},{},{},{},{}'
+                  - skipped_modules='xunitmerge,setuptools'
+                  - skipped_services='docker,containerd'
+                  - ntp_skipped_nodes=''
+                  - tests_set=-k "not {} and not {} and not {}"
+            '''.format('python-setuptools', 'python-pkg-resources',
+                       'xunitmerge', 'python-gnocchiclient',
+                       'python-ujson', 'python-octaviaclient',
+                       'test_ceph_status', 'test_prometheus_alert_count',
+                       'test_uncommited_changes')
+        }
+        job_parameters = job_cvp_sanity_parameters
+        run_cvp_sanity = run_jenkins_job.run_job(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            start_timeout=jenkins_start_timeout,
+            build_timeout=jenkins_build_timeout,
+            verbose=False,
+            job_name=job_name,
+            job_parameters=job_parameters)
+
+        (description, stages) = get_jenkins_job_stages.get_deployment_result(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            job_name=job_name,
+            build_number='lastBuild')
+
+        LOG.info(description)
+        LOG.info('\n'.join(stages))
+
+        assert run_cvp_sanity == 'SUCCESS', "{0}\n{1}".format(
+            description, '\n'.join(stages))
+        # ######################## Run Tempest ###########################
+        show_step(4)
+        job_name = 'cvp-tempest'
+        job_parameters = {
+             'TEMPEST_ENDPOINT_TYPE': 'internalURL'
+        }
+        run_cvp_tempest = run_jenkins_job.run_job(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            start_timeout=jenkins_start_timeout,
+            build_timeout=jenkins_build_timeout,
+            verbose=False,
+            job_name=job_name,
+            job_parameters=job_parameters)
+
+        (description, stages) = get_jenkins_job_stages.get_deployment_result(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            job_name=job_name,
+            build_number='lastBuild')
+
+        LOG.info(description)
+        LOG.info('\n'.join(stages))
+
+        assert run_cvp_tempest == 'SUCCESS', "{0}\n{1}".format(
+            description, '\n'.join(stages))
+        # ######################## Run Restore ###########################
+        show_step(5)
+        job_name = 'galera_verify_restore'
+        job_parameters = {
+             'RESTORE_TYPE': 'ONLY_RESTORE',
+             'ASK_CONFIRMATION': False
+        }
+        run_galera_verify_restore = run_jenkins_job.run_job(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            start_timeout=jenkins_start_timeout,
+            build_timeout=jenkins_build_timeout,
+            verbose=False,
+            job_name=job_name,
+            job_parameters=job_parameters)
+
+        (description, stages) = get_jenkins_job_stages.get_deployment_result(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            job_name=job_name,
+            build_number='lastBuild')
+
+        LOG.info(description)
+        LOG.info('\n'.join(stages))
+
+        assert run_galera_verify_restore == 'SUCCESS', "{0}\n{1}".format(
+            description, '\n'.join(stages))
+        # ######################## Run CPV ###########################
+        show_step(6)
+        job_name = 'cvp-sanity'
+        job_parameters = job_cvp_sanity_parameters
+        run_cvp_sanity = run_jenkins_job.run_job(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            start_timeout=jenkins_start_timeout,
+            build_timeout=jenkins_build_timeout,
+            verbose=False,
+            job_name=job_name,
+            job_parameters=job_parameters)
+
+        (description, stages) = get_jenkins_job_stages.get_deployment_result(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            job_name=job_name,
+            build_number='lastBuild')
+
+        LOG.info(description)
+        LOG.info('\n'.join(stages))
+
+        assert run_cvp_sanity == 'SUCCESS', "{0}\n{1}".format(
+            description, '\n'.join(stages))
+        # ######################## Run Tempest ###########################
+        show_step(7)
+        job_name = 'cvp-tempest'
+        job_parameters = {
+             'TEMPEST_ENDPOINT_TYPE': 'internalURL'
+        }
+        run_cvp_tempest = run_jenkins_job.run_job(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            start_timeout=jenkins_start_timeout,
+            build_timeout=jenkins_build_timeout,
+            verbose=False,
+            job_name=job_name,
+            job_parameters=job_parameters)
+
+        (description, stages) = get_jenkins_job_stages.get_deployment_result(
+            host=jenkins_url,
+            username=jenkins_user,
+            password=jenkins_pass,
+            job_name=job_name,
+            build_number='lastBuild')
+
+        LOG.info(description)
+        LOG.info('\n'.join(stages))
+
+        assert run_cvp_tempest == 'SUCCESS', "{0}\n{1}".format(
+            description, '\n'.join(stages))
