diff --git a/jobs/templates/test-scenarios.yml b/jobs/templates/test-scenarios.yml
index 70a384a..9543e36 100644
--- a/jobs/templates/test-scenarios.yml
+++ b/jobs/templates/test-scenarios.yml
@@ -63,12 +63,16 @@
     test_scenario:
 
       - backup-saltmaster:
-          run-test-opts: '--maxfail=1 -k TestBackupRestoreMaster and not maas'
+          run-test-opts: |-
+            tcp_tests/tests/system/test_backup_restore.py::TestBackupRestoreMaster::test_salt_master_manual_backup_restore_pipeline \
+            tcp_tests/tests/system/test_backup_restore.py::TestBackupRestoreMaster::test_salt_master_manual_backup_restore
           deployment: heat-cicd-queens-dvr-sl
           display-name: Backup/Restore SaltMaster
 
       - backup-saltmaster-with-maas:
-         run-test-opts: '--maxfail=1 -k TestBackupRestoreMaster and maas'
+         run-test-opts: |-
+           tcp_tests/tests/system/test_backup_restore.py::TestBackupRestoreMaster::test_maas_manual_backup_restore_pipeline \
+           tcp_tests/tests/system/test_backup_restore.py::TestBackupRestoreMaster::test_maas_backup_restore_manual
          deployment: bm-cicd-queens-ovs-maas
          display-name: Backup/Restore SaltMaster (with MAAS)
 
@@ -111,6 +115,10 @@
           run-test-opts: '--maxfail=1 -k TestCephRgw'
           deployment: heat-cicd-queens-dvr-sl
           display-name: Add/Remove RGW node
+      - ceph_failover:
+          run-test-opts: '--maxfail=1 -k TestFailoverCeph'
+          deployment: heat-cicd-queens-dvr-sl
+          display-name: Failover tests for Ceph nodes
     jobs:
       - '{test_scenario}'
     logrotate:
diff --git a/tcp_tests/managers/underlay_ssh_manager.py b/tcp_tests/managers/underlay_ssh_manager.py
index c2e82d4..105c34d 100644
--- a/tcp_tests/managers/underlay_ssh_manager.py
+++ b/tcp_tests/managers/underlay_ssh_manager.py
@@ -286,6 +286,7 @@
         :rtype: list stdout
         :raises: devops.error.DevopsCalledProcessError
         """
+        LOG.info("Executing {} on {}".format(cmd, node_name))
         remote = self.remote(node_name=node_name, host=host,
                              address_pool=address_pool)
         return remote.check_call(
diff --git a/tcp_tests/tests/system/test_ceph_operations.py b/tcp_tests/tests/system/test_ceph_operations.py
index b2f98b0..55791ca 100644
--- a/tcp_tests/tests/system/test_ceph_operations.py
+++ b/tcp_tests/tests/system/test_ceph_operations.py
@@ -1,3 +1,5 @@
+import time
+
 import pytest
 
 from tcp_tests import logger
@@ -27,10 +29,11 @@
             node_name=cfg_node,
             raise_on_err=False)
     # Need to restart salt-minion service after accepting it in Salt Master
-    # underlay_actions.check_call(
-    #     "systemctl restart salt-minion",
-    #     node_name=xtra_node,
-    #     raise_on_err=False)
+    underlay_actions.check_call(
+        "systemctl restart salt-minion",
+        node_name=xtra_node,
+        raise_on_err=False)
+    time.sleep(15)
     # salt_actions.enforce_state("xtra*", "linux")
     # salt_actions.enforce_state("xtra*", "openssh")
 
@@ -469,6 +472,7 @@
                 #OSDSETTINGS
                 #MONSETTINGS
                 #RGWSETTINGS
+                #MGRSETTINGS
                 linux_network_interfaces:
                   br_ctl:
                     address: ${_param:ceph_#NODE_node04_address}
@@ -499,6 +503,7 @@
         'OSDSETTINGS': '',
         'MONSETTINGS': '',
         'RGWSETTINGS': '',
+        'MGRSETTINGS': '',
 
     }
     # # ------------------OSD specific settings ----------
@@ -521,6 +526,10 @@
                 keepalived_vip_priority: 104
                 """  # noqa: E501
 
+    # # ------------------MGR specific settings -----------
+    if node == 'mgr':
+        data['MGRSETTINGS'] = ""
+
     yaml_config = template.substitute(data)
 
     return yaml_config
diff --git a/tcp_tests/tests/system/test_failover_ceph.py b/tcp_tests/tests/system/test_failover_ceph.py
index a89d711..02d7d28 100644
--- a/tcp_tests/tests/system/test_failover_ceph.py
+++ b/tcp_tests/tests/system/test_failover_ceph.py
@@ -13,6 +13,7 @@
 #    under the License.
 import pytest
 
+import time
 from devops.helpers import helpers
 from tcp_tests import logger
 
@@ -33,13 +34,14 @@
         'EXTRA_PARAMS': {
             'envs': [
                 "tests_set=-k "
-                "'not test_ceph_health and not test_prometheus_alert_count'"
+                "'not salt_master and not test_ceph_health and not "
+                "test_prometheus_alert_count'"
             ]
         }
     }
 
     JENKINS_START_TIMEOUT = 60
-    JENKINS_BUILD_TIMEOUT = 60 * 15
+    JENKINS_BUILD_TIMEOUT = 60 * 25
 
     def get_ceph_health(self, ssh, node_names):
         """Get Ceph health status on specified nodes
@@ -51,12 +53,36 @@
         """
         return {
             node_name: ssh.check_call(
-                "ceph -s",
+                "ceph health",
                 node_name=node_name,
                 raise_on_err=False)['stdout_str']
             for node_name in node_names
         }
 
+    def wait_healthy_ceph(self,
+                          ssh,
+                          node_names=None,
+                          time_sec=30):
+        ceph_health = ""
+        status = False
+
+        start_time = time.time()
+        while time.time() - start_time < time_sec and not status:
+            ceph_health = self.get_ceph_health(ssh, node_names)
+            status = all(["HEALTH_OK"
+                          in status
+                          for node, status
+                          in ceph_health.items()])
+            if status:
+                break
+            LOG.info("Retry getting ceph health because Ceph is unhealthy: {}"
+                     .format(ceph_health))
+            time.sleep(10)
+
+        error = "" if status \
+            else "Ceph health is not OK: {0}".format(ceph_health)
+        return status, error
+
     @pytest.mark.grab_versions
     @pytest.mark.restart_osd_node
     def test_restart_osd_node(
@@ -69,11 +95,9 @@
 
         Scenario:
         1. Find Ceph OSD nodes
-        2. Check Ceph cluster health before node restart (skipped until
-            PROD-31374 is fixed)
+        2. Check Ceph cluster health before node restart
         3. Restart 1 Ceph OSD node
-        4. Check Ceph cluster health after node restart (skipped until
-            PROD-31374 is fixed)
+        4. Check Ceph cluster health after node restart
         5. Run Tempest smoke test suite
         6. Run test_ceph_status.py::test_ceph_osd and
             test_services.py::test_check_services[osd] sanity tests
@@ -93,11 +117,9 @@
 
         # Check Ceph cluster health before node restart
         show_step(2)
-        ceph_health = self.get_ceph_health(ssh, osd_hosts)
-        # FIXME: uncomment the check once PROD-31374 is fixed
-        # status = all(
-        #     ["OK" in status for node, status in ceph_health.items()])
-        # assert status, "Ceph health is not OK: {0}".format(ceph_health)
+        result, error = self.wait_healthy_ceph(ssh=ssh,
+                                               node_names=osd_hosts)
+        assert result, error
 
         # Restart a Ceph OSD node
         show_step(3)
@@ -118,11 +140,10 @@
 
         # Check Ceph cluster health after node restart
         show_step(4)
-        ceph_health = self.get_ceph_health(ssh, osd_hosts)  # noqa
-        # FIXME: uncomment the check once PROD-31374 is fixed
-        # status = all(
-        #     ["OK" in status for node, status in ceph_health.items()])
-        # assert status, "Ceph health is not OK: {0}".format(ceph_health)
+        result, error = self.wait_healthy_ceph(ssh=ssh,
+                                               node_names=osd_hosts,
+                                               time_sec=120)
+        assert result, error
 
         # Run Tempest smoke test suite
         show_step(5)
@@ -165,11 +186,9 @@
 
         Scenario:
         1. Find Ceph CMN nodes
-        2. Check Ceph cluster health before node restart (skipped until
-            PROD-31374 is fixed)
+        2. Check Ceph cluster health before node restart
         3. Restart 1 Ceph CMN node
-        4. Check Ceph cluster health after node restart (skipped until
-            PROD-31374 is fixed)
+        4. Check Ceph cluster health after node restart
         5. Run Tempest smoke test suite
         6. Run test_ceph_status.py::test_ceph_replicas and
             test_services.py::test_check_services[cmn] sanity tests
@@ -189,11 +208,9 @@
 
         # Check Ceph cluster health before node restart
         show_step(2)
-        ceph_health = self.get_ceph_health(ssh, cmn_hosts)
-        # FIXME: uncomment the check once PROD-31374 is fixed
-        # status = all(
-        #     ["OK" in status for node, status in ceph_health.items()])
-        # assert status, "Ceph health is not OK: {0}".format(ceph_health)
+        result, error = self.wait_healthy_ceph(ssh=ssh,
+                                               node_names=cmn_hosts)
+        assert result, error
 
         # Restart a Ceph CMN node
         show_step(3)
@@ -214,11 +231,10 @@
 
         # Check Ceph cluster health after node restart
         show_step(4)
-        ceph_health = self.get_ceph_health(ssh, cmn_hosts) # noqa
-        # FIXME: uncomment the check once PROD-31374 is fixed
-        # status = all(
-        #     ["OK" in status for node, status in ceph_health.items()])
-        # assert status, "Ceph health is not OK: {0}".format(ceph_health)
+        result, error = self.wait_healthy_ceph(ssh=ssh,
+                                               node_names=cmn_hosts,
+                                               time_sec=120)
+        assert result, error
 
         # Run Tempest smoke test suite
         show_step(5)
@@ -261,11 +277,9 @@
 
         Scenario:
         1. Find Ceph RGW nodes
-        2. Check Ceph cluster health before node restart (skipped until
-            PROD-31374 is fixed)
+        2. Check Ceph cluster health before node restart
         3. Restart 1 Ceph RGW node
-        4. Check Ceph cluster health after node restart (skipped until
-            PROD-31374 is fixed)
+        4. Check Ceph cluster health after node restart
         5. Run Tempest smoke test suite
         6. Run test_services.py::test_check_services[rgw] sanity test
 
@@ -284,11 +298,9 @@
 
         # Check Ceph cluster health before node restart
         show_step(2)
-        ceph_health = self.get_ceph_health(ssh, rgw_hosts)
-        # FIXME: uncomment the check once PROD-31374 is fixed
-        # status = all(
-        #     ["OK" in status for node, status in ceph_health.items()])
-        # assert status, "Ceph health is not OK: {0}".format(ceph_health)
+        result, error = self.wait_healthy_ceph(ssh=ssh,
+                                               node_names=rgw_hosts)
+        assert result, error
 
         # Restart a Ceph RGW node
         show_step(3)
@@ -309,11 +321,11 @@
 
         # Check Ceph cluster health after node restart
         show_step(4)
-        ceph_health = self.get_ceph_health(ssh, rgw_hosts) # noqa
-        # FIXME: uncomment the check once PROD-31374 is fixed
-        # status = all(
-        #     ["OK" in status for node, status in ceph_health.items()])
-        # assert status, "Ceph health is not OK: {0}".format(ceph_health)
+        result, error = self.wait_healthy_ceph(ssh=ssh,
+                                               node_names=rgw_hosts,
+                                               time_sec=120)
+
+        assert result, error
 
         # Run Tempest smoke test suite
         show_step(5)
@@ -384,9 +396,9 @@
         # STEP #2
         show_step(2)
         # Get the ceph health output before restart
-        health_before = self.get_ceph_health(underlay, osd_node_names)
-        assert all(["OK" in p for n, p in health_before.items()]), (
-            "'Ceph health is not ok from node: {0}".format(health_before))
+        result, error = self.wait_healthy_ceph(ssh=underlay,
+                                               node_names=osd_node_names)
+        assert result, error
 
         # STEP #3
         show_step(3)
@@ -399,9 +411,10 @@
         # STEP #4
         show_step(4)
         # Get the ceph health output after restart
-        health_after = self.get_ceph_health(underlay, osd_node_names)
-        assert all(["OK" in p for n, p in health_before.items()]), (
-            "'Ceph health is not ok from node: {0}".format(health_after))
+        result, error = self.wait_healthy_ceph(ssh=underlay,
+                                               node_names=osd_node_names)
+
+        assert result, error
 
         rally.run_container()
 
@@ -451,9 +464,10 @@
         # STEP #2
         show_step(2)
         # Get the ceph health output before restart
-        health_before = self.get_ceph_health(underlay, cmn_node_names)
-        assert all(["OK" in p for n, p in health_before.items()]), (
-            "'Ceph health is not ok from node: {0}".format(health_before))
+        result, error = self.wait_healthy_ceph(ssh=underlay,
+                                               node_names=cmn_node_names)
+
+        assert result, error
 
         # STEP #3
         show_step(3)
@@ -466,9 +480,11 @@
         # STEP #4
         show_step(4)
         # Get the ceph health output after restart
-        health_after = self.get_ceph_health(underlay, cmn_node_names)
-        assert all(["OK" in p for n, p in health_before.items()]), (
-            "'Ceph health is not ok from node: {0}".format(health_after))
+        result, error = self.wait_healthy_ceph(ssh=underlay,
+                                               node_names=cmn_node_names,
+                                               time_sec=120)
+
+        assert result, error
 
         rally.run_container()
 
@@ -521,9 +537,9 @@
         # STEP #2
         show_step(2)
         # Get the ceph health output before restart
-        health_before = self.get_ceph_health(underlay, rgw_node_names)
-        assert all(["OK" in p for n, p in health_before.items()]), (
-            "'Ceph health is not ok from node: {0}".format(health_before))
+        result, error = self.wait_healthy_ceph(ssh=underlay,
+                                               node_names=rgw_node_names)
+        assert result, error
 
         # STEP #3
         show_step(3)
@@ -536,9 +552,10 @@
         # STEP #4
         show_step(4)
         # Get the ceph health output after restart
-        health_after = self.get_ceph_health(underlay, rgw_node_names)
-        assert all(["OK" in p for n, p in health_before.items()]), (
-            "'Ceph health is not ok from node: {0}".format(health_after))
+        result, error = self.wait_healthy_ceph(ssh=underlay,
+                                               node_names=rgw_node_names,
+                                               time_sec=120)
+        assert result, error
 
         rally.run_container()
 
