diff --git a/tcp_tests/managers/drivetrain_manager.py b/tcp_tests/managers/drivetrain_manager.py
index f65892e..dbc5096 100644
--- a/tcp_tests/managers/drivetrain_manager.py
+++ b/tcp_tests/managers/drivetrain_manager.py
@@ -11,11 +11,11 @@
 #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 #    License for the specific language governing permissions and limitations
 #    under the License.
-
 from tcp_tests.managers.execute_commands import ExecuteCommandsMixin
 from tcp_tests.utils import run_jenkins_job
 from tcp_tests.utils import get_jenkins_job_stages
 from tcp_tests import logger
+from tcp_tests.managers.jenkins import client
 
 LOG = logger.logger
 
@@ -62,6 +62,11 @@
         jenkins_url, jenkins_user, jenkins_pass = self.get_jenkins_creds(
             tgt=jenkins_tgt)
 
+        jenkins = client.JenkinsClient(host=jenkins_url,
+                                       username=jenkins_user,
+                                       password=jenkins_pass)
+        build_number = jenkins.job_info(job_name)['nextBuildNumber']
+
         job_result = run_jenkins_job.run_job(
             host=jenkins_url,
             username=jenkins_user,
@@ -83,6 +88,11 @@
             .format(description=description,
                     stages='\n'.join(stages))
 
+        job_log = jenkins.get_build_output(job_name, build_number)
+
+        with open('tmp/' + job_name + str(build_number) + '.log', 'wb') as f:
+            f.write(job_log)
+
         if job_result != 'SUCCESS':
             LOG.warning("{0}\n{1}".format(description, '\n'.join(stages)))
         return job_result, job_description
diff --git a/tcp_tests/tests/system/test_backup_restore_galera.py b/tcp_tests/tests/system/test_backup_restore_galera.py
index 573756a..ce782b2 100644
--- a/tcp_tests/tests/system/test_backup_restore_galera.py
+++ b/tcp_tests/tests/system/test_backup_restore_galera.py
@@ -82,7 +82,6 @@
 
         """
         dt = drivetrain_actions
-
         show_step(1)
         ctl_node = underlay_actions.get_target_node_names(target='ctl')[0]
         print(ctl_node)
diff --git a/tcp_tests/tests/system/test_cvp_pipelines.py b/tcp_tests/tests/system/test_cvp_pipelines.py
index 41c95fe..c7c919c 100644
--- a/tcp_tests/tests/system/test_cvp_pipelines.py
+++ b/tcp_tests/tests/system/test_cvp_pipelines.py
@@ -207,6 +207,9 @@
             ntp_skipped_nodes = ''
 
         job_name = 'cvp-sanity'
+        server = jenkins.Jenkins(jenkins_url, jenkins_user, jenkins_pass)
+        build_number = server.get_job_info(job_name)['nextBuildNumber']
+
         skipped_packages = ("python-setuptools,"
                             "python-pkg-resources,xunitmerge,"
                             "python-gnocchiclient, "
@@ -250,7 +253,8 @@
         # Download XML report
         show_step(4)
         destination_name = os.path.join(settings.LOGS_DIR,
-                                        "cvp_sanity_results.xml")
+                                        "tmp/" + job_name + "_"
+                                        + str(build_number) + "_results.xml")
         # Do not fail the test case when the job is failed, but
         # artifact with the XML report is present in the job.
         try:
@@ -259,8 +263,26 @@
                 username=jenkins_user,
                 password=jenkins_pass,
                 job_name=job_name,
-                build_number='lastBuild',
-                artifact_path='validation_artifacts/cvp-sanity_report.xml',
+                build_number=build_number,
+                artifact_path='validation_artifacts/' + job_name
+                              + '_report.xml',
+                destination_name=destination_name)
+        except jenkins.NotFoundException:
+            raise jenkins.NotFoundException("{0}\n{1}".format(
+                description, '\n'.join(stages)))
+
+        destination_name = os.path.join(settings.LOGS_DIR,
+                                        "tmp/" + job_name + "_"
+                                        + str(build_number) + "_full.log")
+
+        try:
+            get_jenkins_job_artifact.download_artifact(
+                host=jenkins_url,
+                username=jenkins_user,
+                password=jenkins_pass,
+                job_name=job_name,
+                build_number=build_number,
+                artifact_path='validation_artifacts/full.log',
                 destination_name=destination_name)
         except jenkins.NotFoundException:
             raise jenkins.NotFoundException("{0}\n{1}".format(
@@ -370,6 +392,9 @@
         jenkins_build_timeout = 50 * 60
 
         job_name = 'cvp-stacklight'
+        server = jenkins.Jenkins(jenkins_url, jenkins_user, jenkins_pass)
+        build_number = server.get_job_info(job_name)['nextBuildNumber']
+
         job_parameters = {
             "EXTRA_PARAMS": """
             envs:
@@ -406,7 +431,8 @@
         # Download XML report
         show_step(4)
         destination_name = os.path.join(settings.LOGS_DIR,
-                                        "stacklight_report.xml")
+                                        "tmp/" + job_name + "_"
+                                        + str(build_number) + "_results.xml")
         # Do not fail the test case when the job is failed, but
         # artifact with the XML report is present in the job.
         try:
