diff --git a/jobs/pipelines/deploy-cicd-and-run-tests.groovy b/jobs/pipelines/deploy-cicd-and-run-tests.groovy
index 8156eed..5106d80 100644
--- a/jobs/pipelines/deploy-cicd-and-run-tests.groovy
+++ b/jobs/pipelines/deploy-cicd-and-run-tests.groovy
@@ -178,12 +178,6 @@
             stage("report results to testrail from jenkins master") {
                 common.printMsg("Running on: " + node_with_reports, "blue")
                 common.printMsg("Running on: " + env.NODE_NAME, "blue")
-                shared.verbose_sh("""\
-                       [ -d /home/jenkins/venv_testrail_reporter ] || virtualenv --python=python3.7 /home/jenkins/venv_testrail_reporter""", true, false, true)
-                sshagent(credentials: ['maintenance-team-ssh']) {
-                    shared.run_cmd("""\
-                            . /home/jenkins/venv_testrail_reporter/bin/activate; pip install git+ssh://maintenance-ci-robot@gerrit.mcp.mirantis.com:29418/mcp/testrail-reporter -U""")
-                }
                 shared.swarm_testrail_report(steps, env.NODE_NAME)
             }
             stage("Store TestRail reports to job description") {
diff --git a/jobs/pipelines/run-test-scenarios.groovy b/jobs/pipelines/run-test-scenarios.groovy
index fc45ad8..b83dcec 100644
--- a/jobs/pipelines/run-test-scenarios.groovy
+++ b/jobs/pipelines/run-test-scenarios.groovy
@@ -65,12 +65,6 @@
                 stage("report results to testrail from jenkins master") {
                     if ("${env.REPORT_TO_TESTRAIL}" != "false") {
                         common.infoMsg("Running on: " + env.PARENT_NODE_NAME, "blue")
-                        shared.verbose_sh("""\
-                               [ -d /home/jenkins/venv_testrail_reporter ] || virtualenv --python=python3.7 /home/jenkins/venv_testrail_reporter""", true, false, true)
-                        sshagent(credentials: ['maintenance-team-ssh']) {
-                            shared.run_cmd("""\
-                                    . /home/jenkins/venv_testrail_reporter/bin/activate; pip install git+ssh://maintenance-ci-robot@gerrit.mcp.mirantis.com:29418/mcp/testrail-reporter -U""")
-                        }
                         shared.swarm_testrail_report(steps, env.PARENT_NODE_NAME)
                     } else {
                         common.infoMsg("REPORT_TO_TESTRAIL is set to FALSE. Skipped this step ")
diff --git a/jobs/pipelines/swarm-testrail-report.groovy b/jobs/pipelines/swarm-testrail-report.groovy
index 1167978..f9820f8 100644
--- a/jobs/pipelines/swarm-testrail-report.groovy
+++ b/jobs/pipelines/swarm-testrail-report.groovy
@@ -78,26 +78,6 @@
             common.printMsg(stacklight_report_name ? "Found stacklight-pytest report: ${stacklight_report_name}" : "stacklight-pytest report not found", stacklight_report_name ? "blue" : "red")
             common.printMsg(cvp_sanity_report_name ? "Found CVP Sanity report: ${cvp_sanity_report_name}" : "CVP Sanity report not found", cvp_sanity_report_name ? "blue" : "red")
 
-            stage("Prepare/update venvs for reporter/analyzer tools"){
-                sshagent(credentials: ['maintenance-team-ssh']) {
-                    shared.run_cmd("""\
-                            . /home/jenkins/venv_testrail_reporter/bin/activate;
-                            pip install git+ssh://maintenance-ci-robot@gerrit.mcp.mirantis.com:29418/mcp/testrail-reporter -U;
-                            pip install --force-reinstall --no-deps git+ssh://maintenance-ci-robot@gerrit.mcp.mirantis.com:29418/mcp/testrail-reporter;""")
-                }
-                shared.run_cmd("""\
-                    if [ -f /home/jenkins/venv_testrail_analyzer/bin/python &&
-                        $(/home/jenkins/venv_testrail_analyzer/bin/python -V | awk -F "." '{print \$2}') -lt 6 ] ; then
-                        rm -rf /home/jenkins/venv_testrail_analyzer ;
-                    fi
-                """)
-                shared.run_cmd("""\
-                    [ -d /home/jenkins/venv_testrail_analyzer ] || virtualenv --python=python3.7 /home/jenkins/venv_testrail_analyzer ;
-                    source /home/jenkins/venv_testrail_analyzer/bin/activate;
-                    pip install git+https://review.gerrithub.io/ibumarskov/testrail-reporter@b9041b241f3364022cd0ad63510f02aab4352a6b
-                """)
-            }
-
             if (deployment_report_name) {
                 stage("Deployment report") {
                     testSuiteName = "[MCP] Integration automation"
diff --git a/src/com/mirantis/system_qa/SharedPipeline.groovy b/src/com/mirantis/system_qa/SharedPipeline.groovy
index 8390c1b..c937fbe 100644
--- a/src/com/mirantis/system_qa/SharedPipeline.groovy
+++ b/src/com/mirantis/system_qa/SharedPipeline.groovy
@@ -686,8 +686,42 @@
     writeFile(file: filename, text: script, encoding: "UTF-8")
 }
 
+
+def withVirtualEnv(name, pythonVersion, installRepo = "", command = "") {
+    /// name - str, name of virtualenv, name of folder which will be located in /home/jenkins
+    /// pythonVersion - str, version of python defined through the ShiningPanda settings in the Jenkins (Jenkins ->
+    //Manage Jenkins -> Global Tool Configuration -> Python Installations)
+    /// installRepo - repo with tool which should be installed in that virtualenv
+    def homeDir = "/home/jenkins"
+    venvPath = "${homeDir}/${name}"
+    // check if venv exists
+
+    withPythonEnv("${pythonVersion}") {
+        if (!fileExists(venvPath)) {
+            sh """
+                set -x;
+                virtualenv ${venvPath};
+                source ${venvPath}/bin/activate;
+                pip install -U ${installRepo};
+            """
+        }
+        sh """
+        set -x;
+        source ${venvPath}/bin/activate;
+        ${command};
+        deactivate;
+
+        """
+    }
+    // if no - create folder, install specific python, install repo
+
+    // if yes - launch command
+
+
+}
+
+
 def upload_results_to_testrail(report_name, testPlanName, testSuiteName, methodname, testrail_name_template, reporter_extra_options=[]) {
-  def venvPath = '/home/jenkins/venv_testrail_reporter'
   def testPlanDesc = env.LAB_CONFIG_NAME
   def testrailURL = "https://mirantis.testrail.com"
   def testrailProject = "Mirantis Cloud Platform"
@@ -713,8 +747,6 @@
   ] + reporter_extra_options
 
   def script = """
-    . ${venvPath}/bin/activate
-    set -ex
     report ${reporterOptions.join(' ')} ${report_name}
   """
 
@@ -726,17 +758,26 @@
              passwordVariable: 'TESTRAIL_PASSWORD',
              usernameVariable: 'TESTRAIL_USER']
   ]) {
-    def ret = [:]
-    ret.stdout = ''
-    ret.exception = ''
-    try {
-        ret.stdout = run_cmd_stdout(script)
-    } catch (Exception ex) {
-        ret.exception = ("""\
-##### Report to '${testSuiteName}' failed: #####\n""" + ex.message + "\n\n")
-    }
-    return ret
-  }
+
+        def ret = [:]
+        ret.stdout = ''
+        ret.exception = ''
+        try {
+            sshagent(credentials: ['maintenance-team-ssh']) {
+                withVirtualEnv(
+                    name: "venv_testrail_reporter",
+                    pythonVersion: "python3.7",
+                    installRepo: "git+ssh://maintenance-ci-robot@gerrit.mcp.mirantis.com:29418/mcp/testrail-reporter",
+                    command: script
+                )}
+//             ret.stdout = run_cmd_stdout(script)
+        } catch (Exception ex) {
+            ret.exception = ("""\
+    ##### Report to '${testSuiteName}' failed: #####\n""" + ex.message + "\n\n")
+        }
+
+        return ret
+      }
 }
 
 
@@ -750,16 +791,13 @@
 }
 
 def mark_test_results(testPlanName, testSuiteName) {
-    def venvPath = '/home/jenkins/venv_testrail_analyzer'
     def testrailURL = "https://mirantis.testrail.com"
     def testrailProject = "Mirantis Cloud Platform"
     def configName = env.LAB_CONFIG_NAME
     def testRunName = "${configName} <${testSuiteName}>"
 
     def script = """
-    . ${venvPath}/bin/activate
-    set -ex
-    export TESTRAIL_URL=${testrailURL}
+    export TESTRAIL_URL=${testrailURL};
     testrail-reporter analyze -p "${testrailProject}" -t "${testPlanName}" -r "${testRunName}" checklist.yaml
     """
 
@@ -769,13 +807,17 @@
              [$class          : 'UsernamePasswordMultiBinding',
              credentialsId   : testrail_cred_id,
              passwordVariable: 'TESTRAIL_PASSWORD',
-             usernameVariable: 'TESTRAIL_USER']
+             usernameVariable: 'TESTRAIL_USER'
   ]) {
     def ret = [:]
     ret.stdout = ''
     ret.exception = ''
     try {
-        ret.stdout = run_cmd_stdout(script)
+        withVirtualEnv( name: "venv_testrail_analyzer",
+                        pythonVersion: "python3.7",
+                        installRepo: "git+https://review.gerrithub.io/ibumarskov/testrail-reporter",
+                        command: script)
+//         ret.stdout = run_cmd_stdout(script)
     } catch (Exception ex) {
         ret.exception = ("""\
 ##### Report to '${testRunName}' failed: #####\n""" + ex.message + "\n\n")
@@ -783,6 +825,7 @@
     return ret
   }
 }
+
 def reboot_hardware_nodes(creds_name) {
     bm_ips_file = readFile("tcp_tests/templates/${creds_name}")
     bm_ips = bm_ips_file.split("\n")
