diff --git a/src/main/java/eu/hbp/mip/models/DTOs/AlgorithmDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/AlgorithmDTO.java
index 52db979d5ddd7b043572be8fc9255c45fa0e9c98..47e6f3ddfac62760727c91887547a6b950437a7b 100644
--- a/src/main/java/eu/hbp/mip/models/DTOs/AlgorithmDTO.java
+++ b/src/main/java/eu/hbp/mip/models/DTOs/AlgorithmDTO.java
@@ -1,9 +1,12 @@
 package eu.hbp.mip.models.DTOs;
 
+import com.google.gson.Gson;
 import com.google.gson.annotations.SerializedName;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.Arrays;
+import java.util.Hashtable;
 import java.util.List;
 
 @Getter
@@ -70,4 +73,25 @@ public class AlgorithmDTO {
         @SerializedName("valueEnumerations")
         private List<String> valueEnumerations;
     }
+
+    public MIPEngineBody convertToMIPEngineBody()
+    {
+        MIPEngineBody mipEngineBody = new MIPEngineBody();
+        MIPEngineBody.InputData inputData = new MIPEngineBody.InputData();
+
+        this.parameters.forEach(parameter -> {
+            if(parameter.getName().equals("x"))
+                inputData.setX(Arrays.asList(parameter.getValue().split(",")));
+            if(parameter.getName().equals("y"))
+                inputData.setY(Arrays.asList(parameter.getValue().split(",")));
+            if(parameter.getName().equals("dataset"))
+                inputData.setDatasets(Arrays.asList(parameter.getValue().split(",")));
+            if(parameter.getName().equals("pathology"))
+                inputData.setPathology(parameter.getValue());
+            if(parameter.getName().equals("filter"))
+                inputData.setFilters(null);
+        });
+        mipEngineBody.setInputdata(inputData);
+        return mipEngineBody;
+    }
 }
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java
index a250e42498295bffb7888319a0f584c42df16e3f..386195dab6451e130ccb9ab625d585d1d7e141e9 100644
--- a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java
+++ b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineAlgorithmDTO.java
@@ -25,7 +25,7 @@ public class MIPEngineAlgorithmDTO {
     private String type;
 
     @SerializedName("parameters")
-    private Object parameters;
+    private InputDataParamDTO parameters;
 
     @SerializedName("crossvalidation")
     private String crossvalidation;
@@ -57,6 +57,7 @@ public class MIPEngineAlgorithmDTO {
 
         @SerializedName("desc")
         private String desc;
+
         public AlgorithmDTO.AlgorithmParamDTO convertToAlgorithmParamDTO(String name) throws Exception {
             AlgorithmDTO.AlgorithmParamDTO algorithmParamDTO = new AlgorithmDTO.AlgorithmParamDTO();
             algorithmParamDTO.setName(name);
@@ -67,10 +68,6 @@ public class MIPEngineAlgorithmDTO {
                 algorithmParamDTO.setValueType(this.types.get(0));
             }
             else{
-                if(stattypes == null){
-                    System.out.println("Dsafasfads------------------------->>>>>>>>>>>>>>>");
-                    System.out.println(name);
-                }
                 algorithmParamDTO.setType("column");
                 algorithmParamDTO.setColumnValuesSQLType(String.join(", ", this.types));
                 algorithmParamDTO.setColumnValuesIsCategorical(getColumnValuesIsCategorical(this.stattypes));
diff --git a/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineBody.java b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineBody.java
new file mode 100644
index 0000000000000000000000000000000000000000..bbae5f4a096acf7401ea5e4d1cf2164488897286
--- /dev/null
+++ b/src/main/java/eu/hbp/mip/models/DTOs/MIPEngineBody.java
@@ -0,0 +1,31 @@
+package eu.hbp.mip.models.DTOs;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class MIPEngineBody {
+    @SerializedName("inputdata")
+    private InputData inputdata;
+    @SerializedName("parameters")
+    private Object parameters;
+
+    @Getter
+    @Setter
+    public static class InputData {
+        @SerializedName("pathology")
+        private String pathology;
+        @SerializedName("datasets")
+        private List<String> datasets;
+        @SerializedName("filters")
+        private String filters;
+        @SerializedName("x")
+        private List<String> x;
+        @SerializedName("y")
+        private List<String> y;
+    }
+}
diff --git a/src/main/java/eu/hbp/mip/services/ExperimentService.java b/src/main/java/eu/hbp/mip/services/ExperimentService.java
index a8b176d764d02bab2507b545bf56c9951e0ff531..0179d824e1a648c9a4f9ab7a0215226f817f0890 100644
--- a/src/main/java/eu/hbp/mip/services/ExperimentService.java
+++ b/src/main/java/eu/hbp/mip/services/ExperimentService.java
@@ -17,6 +17,7 @@ import eu.hbp.mip.models.DAOs.ExperimentDAO;
 import eu.hbp.mip.models.DAOs.UserDAO;
 import eu.hbp.mip.models.DTOs.AlgorithmDTO;
 import eu.hbp.mip.models.DTOs.ExperimentDTO;
+import eu.hbp.mip.models.DTOs.MIPEngineBody;
 import eu.hbp.mip.models.galaxy.GalaxyWorkflowResult;
 import eu.hbp.mip.models.galaxy.PostWorkflowToGalaxyDtoResponse;
 import eu.hbp.mip.repositories.ExperimentRepository;
@@ -506,6 +507,17 @@ public class ExperimentService {
         return JsonConverters.convertObjectToJsonString(finalJsonObject);
     }
 
+    private List<Object> formattingMIPEngienResult(String result) {
+        List<List<String>> resultJson = JsonConverters.convertJsonStringToObject(result, new ArrayList<ArrayList<String>>().getClass());
+        List<Object> finalObject = new ArrayList<>();
+        LinkedTreeMap<String,Object> data = new LinkedTreeMap<>();
+        data.put("data", resultJson);
+        data.put("type", "application/json");
+        finalObject.add(data);
+        List<Object> result_kappa = finalObject;
+        return result_kappa;
+    }
+
     /**
      * The runExperiment will run the experiment to exareme or MIPEngine.
      *
@@ -520,22 +532,18 @@ public class ExperimentService {
         // Run the 1st algorithm from the list
         String algorithmName = experimentDTO.getAlgorithm().getName();
 
-        // Get the parameters
-        List<AlgorithmDTO.AlgorithmParamDTO> algorithmParameters
-                = experimentDTO.getAlgorithm().getParameters();
-
-        String body = gson.toJson(algorithmParameters);
-
-        logger.LogUserAction("Completed, returning: " + experimentDTO);
-
-
         // Run with the appropriate engine
         if (algorithmType.equals("mipengine")) {
+            MIPEngineBody mipEngineBody = experimentDTO.getAlgorithm().convertToMIPEngineBody();
+            String body = gson.toJson(mipEngineBody);
             String url =  mipengineAlgorithmsUrl + "/" + algorithmName;
             logger.LogUserAction("url: " + url + ", body: " + body);
             logger.LogUserAction("Algorithm runs on MIPEngine.");
             return runMIPEngineExperiment(url, body);
         } else {
+            List<AlgorithmDTO.AlgorithmParamDTO> algorithmParameters
+                    = experimentDTO.getAlgorithm().getParameters();
+            String body = gson.toJson(algorithmParameters);
             String url = queryExaremeUrl + "/" + algorithmName;
             logger.LogUserAction("url: " + url + ", body: " + body);
             logger.LogUserAction("Algorithm runs on Exareme.");
@@ -584,11 +592,8 @@ public class ExperimentService {
         } catch (Exception e) {
             throw new InternalServerError("Error occurred : " + e.getMessage());
         }
-        System.out.println("----------------------------------->>>>>>>>>>>>>>>>>>>>>>");
-        System.out.println(results);
         // Results are stored in the experiment object
-        ExperimentDTO experimentDTOWithOnlyResult = JsonConverters.convertJsonStringToObject(String.valueOf(results), ExperimentDTO.class);
-        List<Object> resultDTOS = experimentDTOWithOnlyResult.getResult();
+        List<Object> resultDTOS = formattingMIPEngienResult(String.valueOf(results));
 
         return new ExperimentResult(code, resultDTOS);
     }