diff --git a/src/com/mirantis/mk/Salt.groovy b/src/com/mirantis/mk/Salt.groovy
index 3e870fa..53b2629 100644
--- a/src/com/mirantis/mk/Salt.groovy
+++ b/src/com/mirantis/mk/Salt.groovy
@@ -147,15 +147,35 @@
  * @param master Salt connection object
  * @param target Get pillar target
  * @param cmd command
+ * @param checkResponse test command success execution (default true)
  * @param batch salt batch parameter integer or string with percents (optional, default null - disable batch)
  * @return output of salt command
  */
-def cmdRun(master, target, cmd, batch=null) {
+def cmdRun(master, target, cmd, checkResponse = true, batch=null) {
     def common = new com.mirantis.mk.Common()
-
+    def originalCmd = cmd
     common.infoMsg("Running command ${cmd} on ${target}")
-
-    return runSaltCommand(master, 'local', ['expression': target, 'type': 'compound'], 'cmd.run', batch, [cmd])
+    if (checkResponse) {
+      cmd = cmd + " && echo Salt command execution success"
+    }
+    def output = salt.runSaltCommand(master, 'local', ['expression': target, 'type': 'compound'], 'cmd.run', batch, [cmd])
+    if (checkResponse) {
+        // iterate over all affected nodes and check success return code
+        if (output["return"]){
+            for(int i=0;i<output["return"].size();i++){
+                def node = output["return"][i];
+                for(int j=0;j<node.size();j++){
+                    def nodeKey = node.keySet()[j]
+                    if (!node[nodeKey].contains("Salt command execution success")) {
+                        throw new Exception("Execution of cmd ${originalCmd} failed. Server returns: ${node[nodeKey]}")
+                    }
+                }
+            }
+        }else{
+            throw new Exception("Salt Api response doesn't have return param!")
+        }
+    }
+    return output
 }
 
 /**
