diff --git a/jobs/pipelines/swarm-testrail-report.groovy b/jobs/pipelines/swarm-testrail-report.groovy
index 6ff52e6..dc9ed1f 100644
--- a/jobs/pipelines/swarm-testrail-report.groovy
+++ b/jobs/pipelines/swarm-testrail-report.groovy
@@ -105,7 +105,7 @@
             if (tcpqa_report_name) {
                 stage("tcp-qa cases report") {
                     testSuiteName = "[MCP_X] integration cases"
-                    methodname = "{methodname}"
+                    methodname = "{classname}.{methodname}"
                     testrail_name_template = "{title}"
                     reporter_extra_options = [
                       "--testrail-add-missing-cases",
diff --git a/jobs/templates/test-scenarios.yml b/jobs/templates/test-scenarios.yml
index cffbe58..e6a8f06 100644
--- a/jobs/templates/test-scenarios.yml
+++ b/jobs/templates/test-scenarios.yml
@@ -84,10 +84,9 @@
 
       - backup-zookeeper-queens-sl:
           run-test-opts: '-k TestBackupRestoreZooKeeper'
-          deployment: heat-cicd-queens-dvr-sl
+          deployment: heat-cicd-queens-contrail41-sl
           display-name: Backup/restore Zookeeper
 
-
     jobs:
       - '{test_scenario}'
 
@@ -170,7 +169,7 @@
       - ceph-update-luminous-to-nautilus:
           deployment: heat-cicd-pike-dvr-sl
           disabled: true
-          run-test-opts: '-k TestCephUpdate'
+          run-test-opts: '-k TestCephLuminousUpgrade'
           display-name: Update Ceph Luminous -> Nautilus
 
     jobs:
diff --git a/tcp_tests/tests/system/test_backup_restore.py b/tcp_tests/tests/system/test_backup_restore.py
index c47f8aa..7d29e4f 100644
--- a/tcp_tests/tests/system/test_backup_restore.py
+++ b/tcp_tests/tests/system/test_backup_restore.py
@@ -165,15 +165,17 @@
         :param reclass: ReclassManager, tcp-qa Reclass-tools manager
         :param path: str, path to YAML file to update
         """
-        reclass.add_bool_key("parameters.backupninja.enabled", "True", path)
-        reclass.add_key(
-            "parameters.backupninja.client.backup_times.hour",
-            "\"'*'\"",
-            path)
-        reclass.add_key(
-            "parameters.backupninja.client.backup_times.minute",
-            "\"'*/10'\"",
-            path)
+        backup_params = """
+        parameters:
+          backupninja:
+            enabled: True
+            client:
+              backup_times:
+                hour: *
+                minute: 10
+        """
+
+        reclass.merge_context(backup_params, path)
 
     def _precreate_test_files(self, salt, ssh, base_dirs, test_files):
         """Prepare test files for scenarios
diff --git a/tcp_tests/tests/system/test_ceph_luminous_upgrade.py b/tcp_tests/tests/system/test_ceph_luminous_upgrade.py
index 8e06888..bf7346c 100644
--- a/tcp_tests/tests/system/test_ceph_luminous_upgrade.py
+++ b/tcp_tests/tests/system/test_ceph_luminous_upgrade.py
@@ -19,9 +19,9 @@
         Scenario:
             1. Chenge parameters in reclass
             2. Run Pipeline Ceph - upgrade
-        https://docs.mirantis.com/mcp/master/mcp-operations-guide/
-            update-upgrade/major-upgrade/ceph-upgrade/upgrade-ceph.html
-        """
+        https://docs.mirantis.com/mcp/master/mcp-operations-guide/ update-upgrade/major-upgrade/ceph-upgrade/upgrade-ceph.html
+        """  # noqa: E501
+
         salt = salt_actions
         reclass = reclass_actions
         dt = drivetrain_actions
@@ -60,7 +60,8 @@
             "WAIT_FOR_HEALTHY": True,
             "ASK_CONFIRMATION": False
         }
-        upgrade_ceph = dt.start_job_on_jenkins(
+        job_result, job_description = dt.start_job_on_jenkins(
             job_name='ceph-upgrade',
             job_parameters=job_parameters)
-        assert upgrade_ceph == 'SUCCESS'
+
+        assert job_result == 'SUCCESS', job_description
diff --git a/tcp_tests/tests/system/test_failover_ceph.py b/tcp_tests/tests/system/test_failover_ceph.py
index 44658ea..a89d711 100644
--- a/tcp_tests/tests/system/test_failover_ceph.py
+++ b/tcp_tests/tests/system/test_failover_ceph.py
@@ -126,31 +126,31 @@
 
         # Run Tempest smoke test suite
         show_step(5)
-        status = dt.start_job_on_jenkins(
+        job_result, job_description = dt.start_job_on_jenkins(
             job_name=self.TEMPEST_JOB_NAME,
             job_parameters=self.TEMPEST_JOB_PARAMETERS,
             start_timeout=self.JENKINS_START_TIMEOUT,
             build_timeout=self.JENKINS_BUILD_TIMEOUT
         )
 
-        assert status == 'SUCCESS', (
+        assert job_result == 'SUCCESS', (
             "'{0}' job run status is {1} after executing Tempest smoke "
             "tests".format(
-                self.TEMPEST_JOB_NAME, status)
+                self.TEMPEST_JOB_NAME, job_description)
         )
 
         # Run Sanity test
         show_step(6)
-        status = dt.start_job_on_jenkins(
+        job_result, job_description = dt.start_job_on_jenkins(
             job_name=self.SANITY_JOB_NAME,
             job_parameters=self.SANITY_JOB_PARAMETERS,
             start_timeout=self.JENKINS_START_TIMEOUT,
             build_timeout=self.JENKINS_BUILD_TIMEOUT
         )
-        assert status == 'SUCCESS', (
+        assert job_result == 'SUCCESS', (
             "'{0}' job run status is {1} after executing selected sanity "
             "tests".format(
-                self.SANITY_JOB_NAME, status)
+                self.SANITY_JOB_NAME, job_description)
         )
 
     @pytest.mark.grab_versions
@@ -222,31 +222,31 @@
 
         # Run Tempest smoke test suite
         show_step(5)
-        status = dt.start_job_on_jenkins(
+        job_result, job_description = dt.start_job_on_jenkins(
             job_name=self.TEMPEST_JOB_NAME,
             job_parameters=self.TEMPEST_JOB_PARAMETERS,
             start_timeout=self.JENKINS_START_TIMEOUT,
             build_timeout=self.JENKINS_BUILD_TIMEOUT
         )
 
-        assert status == 'SUCCESS', (
+        assert job_result == 'SUCCESS', (
             "'{0}' job run status is {1} after executing Tempest smoke "
             "tests".format(
-                self.TEMPEST_JOB_NAME, status)
+                self.TEMPEST_JOB_NAME, job_description)
         )
 
         # Run Sanity test
         show_step(6)
-        status = dt.start_job_on_jenkins(
+        job_result, job_description = dt.start_job_on_jenkins(
             job_name=self.SANITY_JOB_NAME,
             job_parameters=self.SANITY_JOB_PARAMETERS,
             start_timeout=self.JENKINS_START_TIMEOUT,
             build_timeout=self.JENKINS_BUILD_TIMEOUT
         )
-        assert status == 'SUCCESS', (
+        assert job_result == 'SUCCESS', (
             "'{0}' job run status is {1} after executing selected sanity "
             "tests".format(
-                self.SANITY_JOB_NAME, status)
+                self.SANITY_JOB_NAME, job_description)
         )
 
     @pytest.mark.grab_versions
@@ -317,31 +317,31 @@
 
         # Run Tempest smoke test suite
         show_step(5)
-        status = dt.start_job_on_jenkins(
+        job_result, job_description = dt.start_job_on_jenkins(
             job_name=self.TEMPEST_JOB_NAME,
             job_parameters=self.TEMPEST_JOB_PARAMETERS,
             start_timeout=self.JENKINS_START_TIMEOUT,
             build_timeout=self.JENKINS_BUILD_TIMEOUT
         )
 
-        assert status == 'SUCCESS', (
+        assert job_result == 'SUCCESS', (
             "'{0}' job run status is {1} after executing Tempest smoke "
             "tests".format(
-                self.TEMPEST_JOB_NAME, status)
+                self.TEMPEST_JOB_NAME, job_description)
         )
 
         # Run Sanity test
         show_step(6)
-        status = dt.start_job_on_jenkins(
+        job_result, job_description = dt.start_job_on_jenkins(
             job_name=self.SANITY_JOB_NAME,
             job_parameters=self.SANITY_JOB_PARAMETERS,
             start_timeout=self.JENKINS_START_TIMEOUT,
             build_timeout=self.JENKINS_BUILD_TIMEOUT
         )
-        assert status == 'SUCCESS', (
+        assert job_result == 'SUCCESS', (
             "'{0}' job run status is {1} after executing selected sanity "
             "tests".format(
-                self.SANITY_JOB_NAME, status)
+                self.SANITY_JOB_NAME, job_description)
         )
 
     # #######################################################################
