diff --git a/src/main/java/org/hbp/mip/controllers/MiningApi.java b/src/main/java/org/hbp/mip/controllers/MiningApi.java
index e59f846b6ac19153e992bf94e0865ef3fbcb980f..d89008594716c235c7f878935d4eb8e2e8ec3bb2 100644
--- a/src/main/java/org/hbp/mip/controllers/MiningApi.java
+++ b/src/main/java/org/hbp/mip/controllers/MiningApi.java
@@ -4,11 +4,17 @@
 
 package org.hbp.mip.controllers;
 
-import com.google.gson.*;
+import com.google.gson.Gson;
+import com.google.gson.JsonParser;
 import io.swagger.annotations.*;
+import org.hbp.mip.model.Model;
+import org.hbp.mip.model.SimpleMiningQuery;
+import org.hbp.mip.model.Variable;
 import org.hbp.mip.model.algorithm.Algorithm;
 import org.hbp.mip.model.algorithm.Catalog;
 import org.hbp.mip.utils.HTTPUtil;
+import org.hbp.mip.utils.HibernateUtil;
+import org.hibernate.Session;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -21,6 +27,9 @@ import java.io.BufferedReader;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.UnknownHostException;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
 
 @RestController
 @RequestMapping(value = "/mining")
@@ -72,16 +81,19 @@ public class MiningApi {
                 .get("algorithm").getAsJsonObject()
                 .get("code").getAsString();
 
+        String modelSlug = new JsonParser().parse(query).getAsJsonObject()
+                .get("model").getAsString();
+
         for(Algorithm algo : catalog.getAlgorithms())
         {
             if (algo.getCode().equals(algoCode))
             {
                 if(algo.getSource().equals(ML_SOURCE)) {
-                    return postMipMining(query);
+                    return postMipMining(algoCode, modelSlug);
                 }
                 else if(algo.getSource().equals(EXAREME_SOURCE))
                 {
-                    return postExaremeMining("WP_LINEAR_REGRESSION", query);
+                    return postExaremeMining("WP_LINEAR_REGRESSION", modelSlug);
                 }
             }
         }
@@ -89,10 +101,61 @@ public class MiningApi {
         return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
     }
 
-    private ResponseEntity<String> postMipMining(String query) throws Exception {
+    private ResponseEntity<String> postMipMining(String algoCode, String modelSlug) throws Exception {
+
+        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+        Model model = null;
+
+        try {
+            session.beginTransaction();
+            model = (Model) session.createQuery("FROM Model WHERE slug= :slug")
+                    .setString("slug", modelSlug)
+                    .uniqueResult();
+            session.getTransaction().commit();
+        } catch (Exception e)
+        {
+            if(session.getTransaction() != null)
+            {
+                session.getTransaction().rollback();
+                throw e;
+            }
+        }
+
+        SimpleMiningQuery smq = new SimpleMiningQuery();
+        smq.setAlgorithm(algoCode);
+
+        LinkedList<Map<String,String>> vars = new LinkedList<>();
+        for(Variable var : model.getQuery().getVariables())
+        {
+            Map<String,String> m = new HashMap<>();
+            m.put("code", var.getCode());
+            vars.add(m);
+        }
+        smq.setVariables(vars);
+
+        LinkedList<Map<String,String>> covars = new LinkedList<>();
+        for(Variable var : model.getQuery().getCovariables())
+        {
+            Map<String,String> m = new HashMap<>();
+            m.put("code", var.getCode());
+            covars.add(m);
+        }
+        smq.setCovariables(covars);
+
+        LinkedList<Map<String,String>> grps = new LinkedList<>();
+        for(Variable var : model.getQuery().getGrouping())
+        {
+            Map<String,String> m = new HashMap<>();
+            m.put("code", var.getCode());
+            grps.add(m);
+        }
+        smq.setGrouping(grps);
+
+        smq.setFilters(new LinkedList<>());
+
         try {
             StringBuilder results = new StringBuilder();
-            int code = HTTPUtil.sendPost(miningMipUrl, query, results);
+            int code = HTTPUtil.sendPost(miningMipUrl, new Gson().toJson(smq), results);
 
             return new ResponseEntity<>(results.toString(), HttpStatus.valueOf(code));
         }
@@ -103,14 +166,14 @@ public class MiningApi {
     }
 
 
-    private ResponseEntity<String> postExaremeMining(String algo, String query) throws Exception {
+    private ResponseEntity<String> postExaremeMining(String algoCode, String modelSlug) throws Exception {
         try {
 
             /* Launch computation */
 
-            String url = miningExaremeQueryUrl +"/"+algo+"/?format=true";
+            String url = miningExaremeQueryUrl +"/"+algoCode+"/?format=true";
             StringBuilder results = new StringBuilder();
-            int code = HTTPUtil.sendPost(url, query, results);
+            int code = HTTPUtil.sendPost(url, modelSlug, results);
             if (code < 200 || code > 299)
             {
                 return new ResponseEntity<>(results.toString(), HttpStatus.valueOf(code));
@@ -127,7 +190,7 @@ public class MiningApi {
             while (progress < 100) {
                 Thread.sleep(200);
                 results = new StringBuilder();
-                code = HTTPUtil.sendPost(url, query, results);
+                code = HTTPUtil.sendPost(url, modelSlug, results);
                 if (code < 200 || code > 299)
                 {
                     return new ResponseEntity<>(results.toString(), HttpStatus.valueOf(code));
@@ -139,7 +202,7 @@ public class MiningApi {
 
             url = miningExaremeQueryUrl +"/"+key+"/result";
             results = new StringBuilder();
-            code = HTTPUtil.sendPost(url, query, results);
+            code = HTTPUtil.sendPost(url, modelSlug, results);
 
             return new ResponseEntity<>(results.toString(), HttpStatus.valueOf(code));
         }
diff --git a/src/main/java/org/hbp/mip/model/ExaremeQuery.java b/src/main/java/org/hbp/mip/model/ExaremeQuery.java
new file mode 100644
index 0000000000000000000000000000000000000000..269c7880475b6836b1d52e06e94e458ab798dcdc
--- /dev/null
+++ b/src/main/java/org/hbp/mip/model/ExaremeQuery.java
@@ -0,0 +1,7 @@
+package org.hbp.mip.model;
+
+/**
+ * Created by mirco on 20.06.16.
+ */
+public class ExaremeQuery {
+}
diff --git a/src/main/java/org/hbp/mip/model/SimpleMiningQuery.java b/src/main/java/org/hbp/mip/model/SimpleMiningQuery.java
new file mode 100644
index 0000000000000000000000000000000000000000..cbc400cd4819774875c845055bc8bf24fde4e98f
--- /dev/null
+++ b/src/main/java/org/hbp/mip/model/SimpleMiningQuery.java
@@ -0,0 +1,67 @@
+package org.hbp.mip.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by mirco on 20.06.16.
+ */
+
+@ApiModel
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class SimpleMiningQuery {
+
+    private String algorithm;
+
+    private List<Map<String,String>> variables;
+
+    private List<Map<String,String>> covariables;
+
+    private List<Map<String,String>> grouping;
+
+    private List<Map<String,String>> filters;
+
+
+    public String getAlgorithm() {
+        return algorithm;
+    }
+
+    public void setAlgorithm(String algorithm) {
+        this.algorithm = algorithm;
+    }
+
+    public List<Map<String, String>> getVariables() {
+        return variables;
+    }
+
+    public void setVariables(List<Map<String, String>> variables) {
+        this.variables = variables;
+    }
+
+    public List<Map<String, String>> getCovariables() {
+        return covariables;
+    }
+
+    public void setCovariables(List<Map<String, String>> covariables) {
+        this.covariables = covariables;
+    }
+
+    public List<Map<String, String>> getGrouping() {
+        return grouping;
+    }
+
+    public void setGrouping(List<Map<String, String>> grouping) {
+        this.grouping = grouping;
+    }
+
+    public List<Map<String, String>> getFilters() {
+        return filters;
+    }
+
+    public void setFilters(List<Map<String, String>> filters) {
+        this.filters = filters;
+    }
+}