diff --git a/src/com/mirantis/mcp/Common.groovy b/src/com/mirantis/mcp/Common.groovy
index df3ef30..b83a714 100644
--- a/src/com/mirantis/mcp/Common.groovy
+++ b/src/com/mirantis/mcp/Common.groovy
@@ -1,10 +1,12 @@
 package com.mirantis.mcp
 
+import static org.yaml.snakeyaml.DumperOptions.FlowStyle.BLOCK
 import java.util.zip.GZIPInputStream
 import java.util.zip.GZIPOutputStream
 
 @Grab(group='org.yaml', module='snakeyaml', version='1.17')
 import org.yaml.snakeyaml.Yaml
+import org.yaml.snakeyaml.DumperOptions
 
 /**
  * https://issues.jenkins-ci.org/browse/JENKINS-26481
@@ -53,7 +55,10 @@
  */
 @NonCPS
 def dumpYAML(Map map) {
-  def yaml = new Yaml()
+  DumperOptions options = new DumperOptions()
+  options.setPrettyFlow(true)
+  options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK)
+  def yaml = new Yaml(options)
   return yaml.dump(map)
 }
 
diff --git a/src/com/mirantis/mcp/Validate.groovy b/src/com/mirantis/mcp/Validate.groovy
index a1079ca..d67cd96 100644
--- a/src/com/mirantis/mcp/Validate.groovy
+++ b/src/com/mirantis/mcp/Validate.groovy
@@ -475,10 +475,9 @@
  *
  */
 def runRallyTests(
-        platform, scenarios = '',
-        sl_scenarios = '', tasks_args_file = '',
-        db_connection_str = '', tags = [],
-        trends = false, skip_list = ''
+        platform, scenarios = '', sl_scenarios = '',
+        tasks_args_file = '', db_connection_str = '', tags = [],
+        trends = false, skip_list = '', generateReport = true
     ) {
 
     def dest_folder = '/home/rally'
@@ -509,20 +508,25 @@
     def cmd_rally_start
     def cmd_rally_stacklight
     def cmd_rally_task_args = tasks_args_file ?: 'job-params-light.yaml'
-    def cmd_rally_report = 'rally task export ' +
-        '--uuid $(rally task list --uuids-only --status finished) ' +
-        "--type junit-xml --to ${resultsDir}/report-rally.xml; " +
-        'rally task report --uuid $(rally task list --uuids-only --status finished) ' +
-        "--out ${resultsDir}/report-rally.html"
+    def cmd_rally_report = ''
     def cmd_filter_tags = ''
     def trends_limit = 20
 
+    // generate html report if required
+    if (generateReport) {
+        cmd_rally_report = 'rally task export ' +
+            '--uuid $(rally task list --uuids-only --status finished) ' +
+            "--type junit-xml --to ${resultsDir}/report-rally.xml; " +
+            'rally task report --uuid $(rally task list --uuids-only --status finished) ' +
+            "--out ${resultsDir}/report-rally.html; "
+    }
+
     // build rally trends if required
     if (trends && db_connection_str) {
         if (tags) {
             cmd_filter_tags = "--tag " + tags.join(' ')
         }
-        cmd_rally_report += '; rally task trends --tasks ' +
+        cmd_rally_report += 'rally task trends --tasks ' +
             '$(rally task list ' + cmd_filter_tags +
             ' --all-deployments --uuids-only --status finished ' +
             "| head -${trends_limit} ) " +
@@ -611,7 +615,7 @@
         '002_init_rally': cmd_rally_init,
         '003_start_rally': cmd_rally_start ?: "echo no tasks to run",
         '004_start_rally_stacklight': cmd_rally_stacklight ?: "echo no tasks to run",
-        '005_rally_report': cmd_rally_report,
+        '005_rally_report': cmd_rally_report ?: "echo no tasks to run",
     ]
 
     return full_cmd
diff --git a/src/com/mirantis/mk/Debian.groovy b/src/com/mirantis/mk/Debian.groovy
index d6c82db..6bb1f50 100644
--- a/src/com/mirantis/mk/Debian.groovy
+++ b/src/com/mirantis/mk/Debian.groovy
@@ -265,8 +265,8 @@
   common.infoMsg("Running upgrade on ${target}")
 
   salt.runSaltProcessStep(env, target, 'pkg.refresh_db', [], null, true)
-  def cmd = 'export DEBIAN_FRONTEND=noninteractive; apt-get -y -q --allow-downgrades -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\" upgrade;'
-  salt.runSaltProcessStep(env, target, 'cmd.run', [cmd])
+  def cmd = 'export DEBIAN_FRONTEND=noninteractive; apt-get -y -q --allow-downgrades -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\" upgrade'
+  salt.cmdRun(env, target, cmd)
 }
 
 /**
@@ -281,8 +281,8 @@
 
   common.infoMsg("Running dist-upgrade on ${target}")
   salt.runSaltProcessStep(env, target, 'pkg.refresh_db', [], null, true)
-  def cmd = 'export DEBIAN_FRONTEND=noninteractive; apt-get -y -q --allow-downgrades -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\" dist-upgrade;'
-  salt.runSaltProcessStep(env, target, 'cmd.run', [cmd])
+  def cmd = 'export DEBIAN_FRONTEND=noninteractive; apt-get -y -q --allow-downgrades -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\" dist-upgrade'
+  salt.cmdRun(env, target, cmd)
 }
 
 /**
diff --git a/src/com/mirantis/mk/Orchestrate.groovy b/src/com/mirantis/mk/Orchestrate.groovy
index 15de301..2795248 100644
--- a/src/com/mirantis/mk/Orchestrate.groovy
+++ b/src/com/mirantis/mk/Orchestrate.groovy
@@ -876,26 +876,29 @@
     salt.enforceStateWithTest([saltId: master, target: "I@kibana:server:enabled:true ${extra_tgt}", state: 'kibana.server'])
 
     // Check ES health cluster status
-    def pillar = salt.getPillar(master, "I@elasticsearch:client ${extra_tgt}", 'elasticsearch:client:server:host')
+    def pillar = salt.getReturnValues(salt.getPillar(master, "I@elasticsearch:client ${extra_tgt}", 'elasticsearch:client:server:host'))
     def elasticsearch_vip
-    if(!pillar['return'].isEmpty()) {
-        elasticsearch_vip = pillar['return'][0].values()[0]
+    if(pillar) {
+        elasticsearch_vip = pillar
     } else {
         common.errorMsg('[ERROR] Elasticsearch VIP address could not be retrieved')
     }
-    pillar = salt.getPillar(master, "I@elasticsearch:client ${extra_tgt}", 'elasticsearch:client:server:port')
+
+    pillar = salt.getReturnValues(salt.getPillar(master, "I@elasticsearch:client ${extra_tgt}", 'elasticsearch:client:server:port'))
     def elasticsearch_port
-    if(!pillar['return'].isEmpty()) {
-        elasticsearch_port = pillar['return'][0].values()[0]
+    if(pillar) {
+        elasticsearch_port = pillar
     } else {
         common.errorMsg('[ERROR] Elasticsearch VIP port could not be retrieved')
     }
-    pillar = salt.getPillar(master, "I@elasticsearch:client ${extra_tgt}", 'elasticsearch:client:server:scheme')
+
+    pillar = salt.getReturnValues(salt.getPillar(master, "I@elasticsearch:client ${extra_tgt}", 'elasticsearch:client:server:scheme'))
     def elasticsearch_scheme
-    if(!pillar['return'].isEmpty()) {
-        elasticsearch_scheme = pillar['return'][0].values()[0]
+    if(pillar) {
+        elasticsearch_scheme = pillar
+        common.infoMsg("[INFO] Using elasticsearch scheme: ${elasticsearch_scheme}")
     } else {
-        common.infoMsg('No pillar with Elasticsearch server scheme, using http')
+        common.infoMsg('[INFO] No pillar with Elasticsearch server scheme, using scheme: http')
         elasticsearch_scheme = "http"
     }
 
@@ -948,7 +951,7 @@
     salt.enforceState([saltId: master, target: "I@docker:swarm and I@prometheus:server ${extra_tgt}", state: 'prometheus'])
 
     //Configure Remote Collector in Docker Swarm for Openstack deployments
-    if (!common.checkContains('STACK_INSTALL', 'k8s')) {
+    if (salt.testTarget(master, "I@heka:remote_collector ${extra_tgt}")) {
         salt.enforceState([saltId: master, target: "I@docker:swarm and I@prometheus:server ${extra_tgt}", state: 'heka.remote_collector', failOnError: false])
     }
 
diff --git a/src/com/mirantis/mk/Test.groovy b/src/com/mirantis/mk/Test.groovy
index aadeb8a..404c6f8 100644
--- a/src/com/mirantis/mk/Test.groovy
+++ b/src/com/mirantis/mk/Test.groovy
@@ -133,6 +133,7 @@
     def target = config.get('target', 'I@kubernetes:master and ctl01*')
     def status = config.get('status')
     def ctl_target = config.get('ctl_target', 'I@kubernetes:master')
+    def k8s_pool_target = config.get('k8s_pool_target', 'I@kubernetes:pool')
     def results_dir = config.get('results_dir', '/tmp/conformance')
     def artifacts_dir = config.get('artifacts_dir', '_artifacts/')
     def output_file = config.get('output_file', 'conformance.tar')
@@ -142,7 +143,7 @@
     def short_node = locateConformancePod(master, target)
     print("Pod located on $short_node")
 
-    minions = salt.getMinionsSorted(master, ctl_target)
+    minions = salt.getMinionsSorted(master, k8s_pool_target)
     conformance_target = minions.find {it =~ short_node}
 
     if (status == 'NOTEXECUTED') {
@@ -183,12 +184,13 @@
     // Listing defaults
     def master = config.get('master', 'pepperVenv')
     def target = config.get('target', 'I@kubernetes:master and ctl01*')
+    def ctl_target = config.get('ctl_target', 'I@kubernetes:master and ctl01*')
     def pod_path = config.get('pod_path', '/srv/kubernetes/conformance.yml')
     def results_dir = config.get('results_dir', '/tmp/conformance')
     def output_file = config.get('output_file', )
     // End listing defaults
 
-    salt.cmdRun(master, target, "kubectl delete -f ${pod_path}")
+    salt.cmdRun(master, ctl_target, "kubectl delete -f ${pod_path}")
     salt.cmdRun(master, target, "rm -rf ${results_dir}", false)
     salt.cmdRun(master, target, "rm -f ${output_file}", false)
 }
