diff --git a/src/main/java/eu/hbp/mip/configuration/SecurityConfiguration.java b/src/main/java/eu/hbp/mip/configuration/SecurityConfiguration.java
index ec2c93d36082a5639d88ba4979d76bf7d52dc1e1..c7366da49d325bf988e285a58abfacea6e3a5b24 100644
--- a/src/main/java/eu/hbp/mip/configuration/SecurityConfiguration.java
+++ b/src/main/java/eu/hbp/mip/configuration/SecurityConfiguration.java
@@ -7,6 +7,7 @@ import eu.hbp.mip.model.User;
 import eu.hbp.mip.repositories.UserRepository;
 import eu.hbp.mip.utils.CORSFilter;
 import eu.hbp.mip.utils.CustomLoginUrlAuthenticationEntryPoint;
+import eu.hbp.mip.utils.HTTPUtil;
 import io.swagger.annotations.ApiParam;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -300,7 +301,20 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
             query.append("\"").append(idToken).append("\"");
             query.append("}");
 
-            // TODO send request
+            try {
+                int responseCode = HTTPUtil.sendPost(revokeTokenURI, query.toString(), new StringBuilder());
+                if (responseCode != 200)
+                {
+                    LOGGER.warn("Cannot send request to OIDC server for revocation ! ");
+                }
+                else{
+                    LOGGER.info("Should be logged out");
+                }
+            } catch (IOException e) {
+                LOGGER.warn("Cannot notify logout to OIDC server !");
+                LOGGER.trace(e);
+            }
+
         }
     }
 }
\ No newline at end of file
diff --git a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
index 28d94981ef94b25063224056e1d6e9fe585f1a45..bc0d28603d4fd57b7c0935d2023205e706dbba21 100644
--- a/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/ExperimentApi.java
@@ -8,6 +8,8 @@ import akka.util.Timeout;
 import com.google.common.collect.Lists;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
 import eu.hbp.mip.akka.SpringExtension;
 import eu.hbp.mip.configuration.SecurityConfiguration;
 import eu.hbp.mip.messages.external.Methods;
@@ -17,11 +19,15 @@ import eu.hbp.mip.model.ExperimentQuery;
 import eu.hbp.mip.model.User;
 import eu.hbp.mip.repositories.ExperimentRepository;
 import eu.hbp.mip.repositories.ModelRepository;
+import eu.hbp.mip.utils.HTTPUtil;
+import eu.hbp.mip.utils.JSONUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
@@ -29,7 +35,10 @@ import scala.concurrent.Await;
 import scala.concurrent.Future;
 import scala.concurrent.duration.Duration;
 
+import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.net.MalformedURLException;
 import java.util.Date;
 import java.util.Iterator;
@@ -59,6 +68,9 @@ public class ExperimentApi {
 
     private static final String EXAREME_LR_ALGO = "WP_LINEAR_REGRESSION";
 
+    @Value("#{'${services.exareme.miningExaremeUrl:http://hbps2.chuv.ch:9090/mining/query}'}")
+    private String miningExaremeQueryUrl;
+
     @Autowired
     private SecurityConfiguration securityConfiguration;
 
@@ -200,7 +212,7 @@ public class ExperimentApi {
     }
 
     @ApiOperation(value = "List available methods and validations", response = String.class)
-    // @Cacheable("methods")
+    @Cacheable("methods")
     @RequestMapping(path = "/methods", method = RequestMethod.GET)
     public ResponseEntity listAvailableMethodsAndValidations() throws IOException {
         LOGGER.info("List available methods and validations");
@@ -219,7 +231,16 @@ public class ExperimentApi {
             return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE).build();
         }
 
-        return ResponseEntity.ok(result.methods());
+        // >> Temporary : should return result.methods() in the future
+        JsonObject catalog = new JsonParser().parse(result.methods()).getAsJsonObject();
+        InputStream is = ExperimentApi.class.getClassLoader().getResourceAsStream(EXAREME_ALGO_JSON_FILE);
+        InputStreamReader isr = new InputStreamReader(is);
+        BufferedReader br = new BufferedReader(isr);
+        JsonObject exaremeAlgo = new JsonParser().parse(br).getAsJsonObject();
+        catalog.get("algorithms").getAsJsonArray().add(exaremeAlgo);
+        // << Temporary
+
+        return ResponseEntity.ok(gson.toJson(catalog));
     }
 
     private ResponseEntity<String> doListExperiments(
@@ -291,7 +312,32 @@ public class ExperimentApi {
     }
 
     private void sendExaremeExperiment(Experiment experiment) {
-        // TODO: integrate Exareme
+        // >> Temporary: we should integrate exareme in a proper way in the future
+        // this runs in the background. For future optimization: use a thread pool
+        new Thread(() -> {
+            String query = experiment.computeExaremeQuery();
+            String url = miningExaremeQueryUrl + "/" + EXAREME_LR_ALGO;
+            // Results are stored in the experiment object
+            try {
+                StringBuilder results = new StringBuilder();
+                int code = HTTPUtil.sendPost(url, query, results);
+                experiment.setResult(results.toString());
+                experiment.setHasError(code >= 400);
+                experiment.setHasServerError(code >= 500);
+            } catch (IOException e) {
+                LOGGER.trace(e);
+                LOGGER.warn("Exareme experiment failed to run properly !");
+                experiment.setHasError(true);
+                experiment.setHasServerError(true);
+                experiment.setResult(e.getMessage());
+            }
+            if(!JSONUtil.isJSONValid(experiment.getResult()))
+            {
+                experiment.setResult("Unsupported variables !");
+            }
+            finishExpermient(experiment);
+        }).start();
+        // << Temporary
     }
 
     private void finishExpermient(Experiment experiment)
diff --git a/src/main/java/eu/hbp/mip/utils/HTTPUtil.java b/src/main/java/eu/hbp/mip/utils/HTTPUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..65995960216c03b96a58ac8a399381c8c2a3ac32
--- /dev/null
+++ b/src/main/java/eu/hbp/mip/utils/HTTPUtil.java
@@ -0,0 +1,70 @@
+package eu.hbp.mip.utils;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+/**
+ * Created by mirco on 20.06.16.
+ */
+public class HTTPUtil {
+
+    private HTTPUtil()
+    {
+        /* Hide implicit public constructor */
+        throw new IllegalAccessError("HTTPUtil class");
+    }
+
+    public static int sendGet(String url, StringBuilder resp) throws IOException {
+        return sendHTTP(url, "", resp, "GET");
+    }
+
+    public static int sendPost(String url, String query, StringBuilder resp) throws IOException {
+        return sendHTTP(url, query, resp, "POST");
+    }
+
+    public static int sendHTTP(String url, String query, StringBuilder resp, String httpVerb) throws IOException {
+
+        URL obj = new URL(url);
+        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
+
+        if(!"GET".equals(httpVerb)) {
+            con.setRequestMethod(httpVerb);
+            if(query != null && query.length() > 0)
+            {
+                con.addRequestProperty("Content-Type", "application/json");
+                con.setRequestProperty("Content-Length", Integer.toString(query.length()));
+
+                con.setDoOutput(true);
+                DataOutputStream wr = new DataOutputStream(con.getOutputStream());
+                wr.write(query.getBytes("UTF8"));
+                wr.flush();
+                wr.close();
+            }
+        }
+
+        int respCode = con.getResponseCode();
+
+        BufferedReader in;
+        if(respCode == 200) {
+            in = new BufferedReader(new InputStreamReader(con.getInputStream()));
+        }
+        else
+        {
+            in = new BufferedReader(new InputStreamReader(con.getErrorStream()));
+        }
+        String inputLine;
+        StringBuilder response = new StringBuilder();
+
+        while ((inputLine = in.readLine()) != null) {
+            response.append(inputLine);
+        }
+        in.close();
+        resp.append(response.toString());
+
+        return respCode;
+    }
+}
\ No newline at end of file