diff --git a/src/com/mirantis/mk/KaasUtils.groovy b/src/com/mirantis/mk/KaasUtils.groovy
index 5c74cca..7185d78 100644
--- a/src/com/mirantis/mk/KaasUtils.groovy
+++ b/src/com/mirantis/mk/KaasUtils.groovy
@@ -1,5 +1,7 @@
 package com.mirantis.mk
 
+import static groovy.json.JsonOutput.toJson
+
 /**
  *
  * KaaS Component Testing Utilities
@@ -993,3 +995,44 @@
     }
     return jobParams
 }
+
+/** Getting test scheme from text, which should be
+Imput example:
+text="""
+ DATA
+
+ kaas_bm_test_schemas:
+  KAAS_RELEASES_REFSPEC: ''
+  KEY: VAL
+
+ DATA
+ """
+
+ Call: parseTextForTestSchemas(['text' : text,'keyLine' : 'kaas_bm_test_schemas'])
+
+ Return:
+ ['KAAS_RELEASES_REFSPEC': '', 'KEY' : 'VAL']
+ **/
+def parseTextForTestSchemas(Map opts) {
+    String text = opts.getOrDefault('text', '')
+    String keyLine = opts.getOrDefault('keyLine', '')
+    Map testScheme = [:]
+    if (!text || !keyLine) {
+        return testScheme
+    }
+    if (text =~ /\n$keyLine\n.*/) {
+        def common = new com.mirantis.mk.Common()
+        try {
+            String regExp = '\\n' + keyLine + '\\n'
+            // regexep  block must be followed by empty line
+            testScheme = readYaml text: "${text.split(regExp)[1].split('\n\n')[0]}"
+            common.infoMsg("parseTextForTestSchemas result:\n" + testScheme)
+            common.mergeEnv(env, toJson(testScheme))
+        }
+        catch (Exception e) {
+            common.errorMsg("There is an error occured during parseTextForTestSchemas execution:\n${e}")
+            throw e
+        }
+    }
+    return testScheme
+}
\ No newline at end of file
diff --git a/src/com/mirantis/mk/Workflow.groovy b/src/com/mirantis/mk/Workflow.groovy
index 03a43a6..44203ab 100644
--- a/src/com/mirantis/mk/Workflow.groovy
+++ b/src/com/mirantis/mk/Workflow.groovy
@@ -319,10 +319,12 @@
             try {
                 if (wfPauseStepSlackReportChannel) {
                     def slack = new com.mirantis.mcp.SlackNotification()
-                    slack.jobResultNotification('wf_pause_step_before_run',
-                      wfPauseStepSlackReportChannel,
-                      env.JOB_NAME, null,
-                      env.BUILD_URL, 'slack_webhook_url')
+                    wfPauseStepSlackReportChannel.split(',').each {
+                        slack.jobResultNotification('wf_pause_step_before_run',
+                                                    it.toString(),
+                                                    env.JOB_NAME, null,
+                                                    env.BUILD_URL, 'slack_webhook_url')
+                    }
                 }
                 timeout(time: wfPauseStepTimeout, unit: 'MINUTES') {
                     input("Workflow pause requested before run: ${jobName}/${jobDescription}\n" +
