diff --git a/jobs/pipelines/deploy-cicd-and-run-tests.groovy b/jobs/pipelines/deploy-cicd-and-run-tests.groovy
index 769d576..ff8a9f8 100644
--- a/jobs/pipelines/deploy-cicd-and-run-tests.groovy
+++ b/jobs/pipelines/deploy-cicd-and-run-tests.groovy
@@ -143,117 +143,126 @@
 //throttle(['fuel_devops_environment']) {
   node ("${NODE_NAME}") {
     env.slave_workdir = pwd()
-    try {
-        // run deploy stages
-        deploy(shared, common, steps, env_manager, batch_size, dist_upgrade_nodes, upgrade_saltstack)
-        // run test stages
-        test(shared, common, steps, env_manager)
-    } catch (e) {
-        common.printMsg("Job is failed: " + e.message, "purple")
-        throw e
-    } finally {
-        if (make_snapshot_stages) {
-            // shutdown the environment if required
-            if ("${env.SHUTDOWN_ENV_ON_TEARDOWN}" == "true") {
+    def extra_vars = EXTRA_VARS ?: ''
+    if (extra_vars != '') {
+        extra_vars = extra_vars.split('\n').collect{it as String}
+    }
+    else {
+        extra_vars = []
+    }
+    withEnv(extra_vars) {
+        try {
+            // run deploy stages
+            deploy(shared, common, steps, env_manager, batch_size, dist_upgrade_nodes, upgrade_saltstack)
+            // run test stages
+            test(shared, common, steps, env_manager)
+        } catch (e) {
+            common.printMsg("Job is failed: " + e.message, "purple")
+            throw e
+        } finally {
+            if (make_snapshot_stages) {
+                // shutdown the environment if required
+                if ("${env.SHUTDOWN_ENV_ON_TEARDOWN}" == "true") {
+                    shared.run_cmd("""\
+                        dos.py destroy ${ENV_NAME} || true
+                    """)
+                }
+            }
+
+            stage("Archive all xml reports") {
+                dir("${env.slave_workdir }") {
+                    archiveArtifacts artifacts: "**/*.xml,**/*.ini,**/*.log,**/*.tar.gz"
+                    }
+            }
+            // delete directory with artifacts from swarm-run-pytest pipeline
+            // for excluding xml duplicates
+            if (fileExists("tmp")) {
                 shared.run_cmd("""\
-                    dos.py destroy ${ENV_NAME} || true
+                        rm -rf tmp/
                 """)
             }
-        }
 
-        stage("Archive all xml reports") {
-            dir("${env.slave_workdir }") {
-                archiveArtifacts artifacts: "**/*.xml,**/*.ini,**/*.log,**/*.tar.gz"
+            if ("${env.REPORT_TO_TESTRAIL}" != "false") {
+                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.swarm_testrail_report(steps, env.NODE_NAME)
                 }
-        }
-        // delete directory with artifacts from swarm-run-pytest pipeline
-        // for excluding xml duplicates
-        if (fileExists("tmp")) {
-            shared.run_cmd("""\
-                    rm -rf tmp/
-            """)
-        }
-
-        if ("${env.REPORT_TO_TESTRAIL}" != "false") {
-            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.swarm_testrail_report(steps, env.NODE_NAME)
-            }
-            stage("Store TestRail reports to job description") {
-                if (fileExists("description.txt")) {
-                    def String description  = readFile("description.txt")
-                    currentBuild.description += "${description}"
+                stage("Store TestRail reports to job description") {
+                    if (fileExists("description.txt")) {
+                        def String description  = readFile("description.txt")
+                        currentBuild.description += "${description}"
+                    }
                 }
             }
-        }
 
-        if (fileExists("jenkins_agent_description.txt")) {
-            // if there is a separated foundation node on $jenkins_slave_node_name,
-            // then archive artifacts also on that node
-            if (jenkins_slave_node_name != env.NODE_NAME) {
-                node ("${jenkins_slave_node_name}") {
-                    dir("${env.slave_workdir }") {
-                        stage("Archive all xml reports from node ${jenkins_slave_node_name}") {
-                            archiveArtifacts artifacts: "**/*.xml,**/*.ini,**/*.log,**/*.tar.gz,*.xml,*.ini,*.log,*.tar.gz", allowEmptyArchive: true
-                        }
-                        if ("${env.REPORT_TO_TESTRAIL}" != "false") {
-                            stage("report results to testrail") {
-                                common.printMsg("Running on: " + node_with_reports, "blue")
-                                shared.swarm_testrail_report(steps, node_with_reports)
+            if (fileExists("jenkins_agent_description.txt")) {
+                // if there is a separated foundation node on $jenkins_slave_node_name,
+                // then archive artifacts also on that node
+                if (jenkins_slave_node_name != env.NODE_NAME) {
+                    node ("${jenkins_slave_node_name}") {
+                        dir("${env.slave_workdir }") {
+                            stage("Archive all xml reports from node ${jenkins_slave_node_name}") {
+                                archiveArtifacts artifacts: "**/*.xml,**/*.ini,**/*.log,**/*.tar.gz,*.xml,*.ini,*.log,*.tar.gz", allowEmptyArchive: true
                             }
-                            stage("Store TestRail reports to job description from ${jenkins_slave_node_name}") {
-                                if (fileExists("description.txt")) {
-                                    def String description  = readFile("description.txt")
-                                    currentBuild.description += "${description}"
+                            if ("${env.REPORT_TO_TESTRAIL}" != "false") {
+                                stage("report results to testrail") {
+                                    common.printMsg("Running on: " + node_with_reports, "blue")
+                                    shared.swarm_testrail_report(steps, node_with_reports)
+                                }
+                                stage("Store TestRail reports to job description from ${jenkins_slave_node_name}") {
+                                    if (fileExists("description.txt")) {
+                                        def String description  = readFile("description.txt")
+                                        currentBuild.description += "${description}"
+                                    }
                                 }
                             }
-                        }
-                    } //dir
-                } // node
+                        } //dir
+                    } // node
+                }
             }
-        }
-        //run upgrade env to proposed
-        if (env.RUN_UPGRADE_AFTER_JOB == "true" && currentBuild.result == 'SUCCESS') {
-            network_backend = env.PLATFORM_STACK_INSTALL.contains("contrail") ? 'contrail' : 'dvr'
-            upgrade_job = "mcp-update-${env.TEMPEST_IMAGE_VERSION}-${network_backend}-sl"
-            upgrade_to_tag = ''
-            contrail_upgrade_line = ''
-            if(env.UPGRADE_TO_TAG == "true") {
-                upgrade_to_tag = '--update-to-tag ${env.UPGRADE_VERSION_TAG} '
+            //run upgrade env to proposed
+            if (env.RUN_UPGRADE_AFTER_JOB == "true" && currentBuild.result == 'SUCCESS') {
+                network_backend = env.PLATFORM_STACK_INSTALL.contains("contrail") ? 'contrail' : 'dvr'
+                upgrade_job = "mcp-update-${env.TEMPEST_IMAGE_VERSION}-${network_backend}-sl"
+                upgrade_to_tag = ''
+                contrail_upgrade_line = ''
+                if(env.UPGRADE_TO_TAG == "true") {
+                    upgrade_to_tag = '--update-to-tag ${env.UPGRADE_VERSION_TAG} '
+                }
+                if(env.PLATFORM_STACK_INSTALL.contains("contrail")) {
+                    contrail_upgrade_line = "tcp_tests/tests/system/test_upgrade_contrail.py::TestUpdateContrail "
+                }
+                run_test_opts = """--keep-duplicates --maxfail=1 \
+                    tcp_tests/tests/system/test_mcp_update.py::TestUpdateMcpCluster::test_update_drivetrain ${upgrade_to_tag} \
+                    ${contrail_upgrade_line}\
+                    tcp_tests/tests/system/test_mcp_update.py::TestOpenstackUpdate \
+                    tcp_tests/tests/system/test_mcp_update.py::TestUpdateMcpCluster::test_update_galera --update-mysql-version 5.7 \
+                    tcp_tests/tests/system/test_mcp_update.py::TestUpdateMcpCluster::test_update_rabbit \
+                    tcp_tests/tests/system/test_mcp_update.py::TestUpdateMcpCluster::test_update_stacklight \
+                    tcp_tests/tests/system/test_mcp_update.py::TestUpdateMcpCluster::test_update_ceph \
+                    \
+                    tcp_tests/tests/system/test_cvp_pipelines.py::TestCvpPipelines::test_run_cvp_tempest \
+                    tcp_tests/tests/system/test_cvp_pipelines.py::TestCvpPipelines::test_run_cvp_func_sanity \
+                    tcp_tests/tests/system/test_cvp_pipelines.py::TestCvpPipelines::test_run_cvp_stacklight
+                """
+                if (env.IPMI_CREDS) {
+                    upgrade_job = "mcp-update-bm-b300-queens-ovs-maas"
+                }
+                def deploy = build job: "${upgrade_job}",
+                    parameters: [
+                        string(name: 'PARENT_NODE_NAME', value: "openstack_slave_${env.ENV_NAME}"),
+                        string(name: 'TCP_QA_REFS', value: env.TCP_QA_REFS),
+                        string(name: 'PASSED_STEPS', value: steps),
+                        string(name: 'TEMPEST_TEST_SUITE_NAME', value: env.TEMPEST_TEST_SUITE_NAME),
+                        string(name: 'NODE', value: "openstack_slave_${env.ENV_NAME}"),
+                        string(name: 'RUN_TEST_OPTS', value: run_test_opts)
+                    ],
+                    wait: false,
+                    propagate: false
             }
-            if(env.PLATFORM_STACK_INSTALL.contains("contrail")) {
-                contrail_upgrade_line = "tcp_tests/tests/system/test_upgrade_contrail.py::TestUpdateContrail "
-            }
-            run_test_opts = """--keep-duplicates --maxfail=1 \
-                tcp_tests/tests/system/test_mcp_update.py::TestUpdateMcpCluster::test_update_drivetrain ${upgrade_to_tag} \
-                ${contrail_upgrade_line}\
-                tcp_tests/tests/system/test_mcp_update.py::TestOpenstackUpdate \
-                tcp_tests/tests/system/test_mcp_update.py::TestUpdateMcpCluster::test_update_galera --update-mysql-version 5.7 \
-                tcp_tests/tests/system/test_mcp_update.py::TestUpdateMcpCluster::test_update_rabbit \
-                tcp_tests/tests/system/test_mcp_update.py::TestUpdateMcpCluster::test_update_stacklight \
-                tcp_tests/tests/system/test_mcp_update.py::TestUpdateMcpCluster::test_update_ceph \
-                \
-                tcp_tests/tests/system/test_cvp_pipelines.py::TestCvpPipelines::test_run_cvp_tempest \
-                tcp_tests/tests/system/test_cvp_pipelines.py::TestCvpPipelines::test_run_cvp_func_sanity \
-                tcp_tests/tests/system/test_cvp_pipelines.py::TestCvpPipelines::test_run_cvp_stacklight
-            """
-            if (env.IPMI_CREDS) {
-                upgrade_job = "mcp-update-bm-b300-queens-ovs-maas"
-            }
-            def deploy = build job: "${upgrade_job}",
-                parameters: [
-                    string(name: 'PARENT_NODE_NAME', value: "openstack_slave_${env.ENV_NAME}"),
-                    string(name: 'TCP_QA_REFS', value: env.TCP_QA_REFS),
-                    string(name: 'PASSED_STEPS', value: steps),
-                    string(name: 'TEMPEST_TEST_SUITE_NAME', value: env.TEMPEST_TEST_SUITE_NAME),
-                    string(name: 'NODE', value: "openstack_slave_${env.ENV_NAME}"),
-                    string(name: 'RUN_TEST_OPTS', value: run_test_opts)
-                ],
-                wait: false,
-                propagate: false
-        }
-    } // try
+        } // try
+    }
   } // node
 
 
diff --git a/jobs/templates/heat-cicd-pike-contrail-stb-sl.yml b/jobs/templates/heat-cicd-pike-contrail-stb-sl.yml
index ea93203..40c8add 100755
--- a/jobs/templates/heat-cicd-pike-contrail-stb-sl.yml
+++ b/jobs/templates/heat-cicd-pike-contrail-stb-sl.yml
@@ -216,6 +216,12 @@
         default: true
         description: 'Works starting from MCP 2019.2.10 or master. Whether to apply saltstack updates on all nodes in cluster before deployment'
         name: UPGRADE_SALTSTACK
+    - text:
+        default: ''
+        description: |-
+          Add env vars for deploy and testing
+        name: EXTRA_VARS
+        trim: 'false'
     pipeline-scm:
       lightweight-checkout: false
       scm:
diff --git a/jobs/templates/heat-cicd-pike-dvr-sl.yml b/jobs/templates/heat-cicd-pike-dvr-sl.yml
index 2ade702..04a28b7 100644
--- a/jobs/templates/heat-cicd-pike-dvr-sl.yml
+++ b/jobs/templates/heat-cicd-pike-dvr-sl.yml
@@ -210,6 +210,12 @@
         default: true
         description: 'Works starting from MCP 2019.2.10 or master. Whether to apply saltstack updates on all nodes in cluster before deployment'
         name: UPGRADE_SALTSTACK
+    - text:
+        default: ''
+        description: |-
+          Add env vars for deploy and testing
+        name: EXTRA_VARS
+        trim: 'false'
     pipeline-scm:
       lightweight-checkout: false
       scm:
diff --git a/jobs/templates/heat-cicd-queens-contrail41-sl.yml b/jobs/templates/heat-cicd-queens-contrail41-sl.yml
index 2eca95b..ea055de 100644
--- a/jobs/templates/heat-cicd-queens-contrail41-sl.yml
+++ b/jobs/templates/heat-cicd-queens-contrail41-sl.yml
@@ -208,6 +208,12 @@
         default: true
         description: 'Works starting from MCP 2019.2.10 or master. Whether to apply saltstack updates on all nodes in cluster before deployment'
         name: UPGRADE_SALTSTACK
+    - text:
+        default: ''
+        description: |-
+          Add env vars for deploy and testing
+        name: EXTRA_VARS
+        trim: 'false'
     pipeline-scm:
       lightweight-checkout: false
       scm:
diff --git a/jobs/templates/heat-cicd-queens-dvr-sl.yml b/jobs/templates/heat-cicd-queens-dvr-sl.yml
index bcaaa84..053851e 100644
--- a/jobs/templates/heat-cicd-queens-dvr-sl.yml
+++ b/jobs/templates/heat-cicd-queens-dvr-sl.yml
@@ -209,6 +209,12 @@
         default: true
         description: 'Works starting from MCP 2019.2.10 or master. Whether to apply saltstack updates on all nodes in cluster before deployment'
         name: UPGRADE_SALTSTACK
+    - text:
+        default: ''
+        description: |-
+          Add env vars for deploy and testing
+        name: EXTRA_VARS
+        trim: 'false'
     pipeline-scm:
       lightweight-checkout: false
       scm:
