diff --git a/src/com/mirantis/system_qa/SharedPipeline.groovy b/src/com/mirantis/system_qa/SharedPipeline.groovy
index c937fbe..8390c1b 100644
--- a/src/com/mirantis/system_qa/SharedPipeline.groovy
+++ b/src/com/mirantis/system_qa/SharedPipeline.groovy
@@ -686,42 +686,8 @@
     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"
@@ -747,6 +713,8 @@
   ] + reporter_extra_options
 
   def script = """
+    . ${venvPath}/bin/activate
+    set -ex
     report ${reporterOptions.join(' ')} ${report_name}
   """
 
@@ -758,26 +726,17 @@
              passwordVariable: 'TESTRAIL_PASSWORD',
              usernameVariable: 'TESTRAIL_USER']
   ]) {
-
-        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
-      }
+    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
+  }
 }
 
 
@@ -791,13 +750,16 @@
 }
 
 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 = """
-    export TESTRAIL_URL=${testrailURL};
+    . ${venvPath}/bin/activate
+    set -ex
+    export TESTRAIL_URL=${testrailURL}
     testrail-reporter analyze -p "${testrailProject}" -t "${testPlanName}" -r "${testRunName}" checklist.yaml
     """
 
@@ -807,17 +769,13 @@
              [$class          : 'UsernamePasswordMultiBinding',
              credentialsId   : testrail_cred_id,
              passwordVariable: 'TESTRAIL_PASSWORD',
-             usernameVariable: 'TESTRAIL_USER'
+             usernameVariable: 'TESTRAIL_USER']
   ]) {
     def ret = [:]
     ret.stdout = ''
     ret.exception = ''
     try {
-        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)
+        ret.stdout = run_cmd_stdout(script)
     } catch (Exception ex) {
         ret.exception = ("""\
 ##### Report to '${testRunName}' failed: #####\n""" + ex.message + "\n\n")
@@ -825,7 +783,6 @@
     return ret
   }
 }
-
 def reboot_hardware_nodes(creds_name) {
     bm_ips_file = readFile("tcp_tests/templates/${creds_name}")
     bm_ips = bm_ips_file.split("\n")
