diff --git a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
index 5f8433b78b03fe9d9abaffd152edc760f238ca4f..f876e315ed224bfc667b6ff6fb9337a2bafb361f 100644
--- a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
@@ -400,7 +400,7 @@ public class ExperimentApi {
             UserActionLogging.LogAction("Run workflow",
                     "Could not find algorithm code: " + workflowId);
             return ResponseEntity.status(HttpStatus.BAD_REQUEST)
-                    .body(new ErrorResponse("Could not find galaxy algorithm.", "99").toString());
+                    .body(new ErrorResponse("Could not find galaxy algorithm.").toString());
         }
         final WorkflowDetails workflowDetails = workflowsClient.showWorkflow(workflow.getId());
         for (Map.Entry<String, WorkflowInputDefinition> workflowParameter : workflowDetails.getInputs().entrySet()) {
@@ -440,9 +440,8 @@ public class ExperimentApi {
                 // Values are read from streams.
                 JSONObject jObjectError = new JSONObject(msgErr);
                 String errMsg = jObjectError.get("err_msg").toString();
-                String errCode = jObjectError.get("err_code").toString();
 
-                experiment.setResult(new ErrorResponse(errMsg, errCode).toString());
+                experiment.setResult("[" + new ErrorResponse(errMsg).toString() + "]");
                 experiment.setHasError(response.code() >= 400);
                 experiment.setHasServerError(response.code() >= 500);
             }
@@ -531,7 +530,7 @@ public class ExperimentApi {
                                     experiment.setHasError(true);
                                     experiment.setHasServerError(true);
                                 }
-                                experiment.setResult(result);
+                                experiment.setResult("[" + result + "]");
                                 experiment.setWorkflowStatus("completed");
                                 resultFound = true;
                             }
@@ -539,7 +538,7 @@ public class ExperimentApi {
 
                         if (!resultFound) {      // If there is no visible result
                             UserActionLogging.LogThreadAction("Update workflow experiment", "No visible result");
-                            experiment.setResult(new ErrorResponse("The workflow has no visible result.", "500").toString());
+                            experiment.setResult("[" + new ErrorResponse("The workflow has no visible result.").toString() + "]");
                             experiment.setHasError(true);
                             experiment.setHasServerError(true);
                         }
@@ -566,7 +565,7 @@ public class ExperimentApi {
                                     experiment.setHasError(true);
                                     experiment.setHasServerError(true);
                                 }
-                                experiment.setResult(result);
+                                experiment.setResult("[" + result + "]");
                                 experiment.setWorkflowStatus("error");
                                 failedJobFound = true;
                             }
@@ -574,7 +573,7 @@ public class ExperimentApi {
 
                         if (!failedJobFound) {      // If there is no visible failed job
                             UserActionLogging.LogThreadAction("Update workflow experiment", "No failed result");
-                            experiment.setResult(new ErrorResponse("The workflow has no failed result.", "500").toString());
+                            experiment.setResult("[" + new ErrorResponse("The workflow has no failed result.").toString() + "]");
                             experiment.setHasError(true);
                             experiment.setHasServerError(true);
                         }
@@ -582,7 +581,7 @@ public class ExperimentApi {
                         break;
 
                     default:        // InternalError or unexpected result
-                        experiment.setResult(new ErrorResponse("An unexpected error occurred.", "500").toString());
+                        experiment.setResult("[" + new ErrorResponse("An unexpected error occurred.").toString() + "]");
                         experiment.setHasError(true);
                         experiment.setHasServerError(true);
                         finishExperiment(experiment);
diff --git a/src/main/java/eu/hbp/mip/controllers/MiningApi.java b/src/main/java/eu/hbp/mip/controllers/MiningApi.java
index f1a984eca2631c959067f646bcd6336ab56addfe..3adcc6269e8120147c6c81367c91b928c1d5d486 100644
--- a/src/main/java/eu/hbp/mip/controllers/MiningApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/MiningApi.java
@@ -83,4 +83,12 @@ public class MiningApi {
             return new ResponseEntity<>("Not found", HttpStatus.BAD_REQUEST);
         }
     }
+
+    @ApiOperation(value = "Check if a formula is valid", response = String.class)
+    @RequestMapping(value = "/checkFormula", method = RequestMethod.POST)
+    public ResponseEntity checkFormulaValidity(String formula) {
+        UserActionLogging.LogAction("Check Formula Validity", "");
+
+        return ResponseEntity.ok("");
+    }
 }
diff --git a/src/main/java/eu/hbp/mip/model/galaxy/ErrorResponse.java b/src/main/java/eu/hbp/mip/model/galaxy/ErrorResponse.java
index e4144da6502ca26cf0f2032ace1d5d19d6c65746..77a171358b54561e3492dcb317acd835aeaa645f 100644
--- a/src/main/java/eu/hbp/mip/model/galaxy/ErrorResponse.java
+++ b/src/main/java/eu/hbp/mip/model/galaxy/ErrorResponse.java
@@ -7,35 +7,44 @@ package eu.hbp.mip.model.galaxy;
 
 import com.google.gson.annotations.SerializedName;
 
-public class ErrorResponse {
+import java.util.ArrayList;
+import java.util.List;
 
-    @SerializedName("err_msg")
-    String errMsg;
+public class ErrorResponse {
 
-    @SerializedName("err_code")
-    String errCode;
+    @SerializedName("result")
+    List<ErrorMessage> result;
 
     public ErrorResponse() {
     }
 
-    public ErrorResponse(String errMsg, String errCode) {
-        this.errMsg = errMsg;
-        this.errCode = errCode;
+    public ErrorResponse(String errMsg) {
+        this.result = new ArrayList<>();
+        this.result.add(new ErrorMessage(errMsg));
     }
 
-    public String getErrMsg() {
-        return errMsg;
-    }
+    public static class ErrorMessage {
 
-    public void setErrMsg(String errMsg) {
-        this.errMsg = errMsg;
-    }
+        @SerializedName("data")
+        String errMsg;
 
-    public String getErrCode() {
-        return errCode;
-    }
+        @SerializedName("type")
+        String errType;
+
+        public ErrorMessage() {
+        }
+
+        public ErrorMessage(String errMsg) {
+            this.errMsg = errMsg;
+            this.errType = "text/plain+error";
+        }
+
+        public String getErrMsg() {
+            return errMsg;
+        }
 
-    public void setErrCode(String errCode) {
-        this.errCode = errCode;
+        public void setErrMsg(String errMsg) {
+            this.errMsg = errMsg;
+        }
     }
 }