diff --git a/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java b/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java
index 7bd98ed3b4abe93f1b3858c833388241c9af08e4..55ba113936fb86193f5086b9472300055d7bcfd5 100644
--- a/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java
+++ b/src/main/java/eu/hbp/mip/configuration/PersistenceConfiguration.java
@@ -25,6 +25,9 @@ public class PersistenceConfiguration {
     @Autowired
     DataSource dataSource;
 
+    @Autowired
+    DataSource variablesDatasource;
+
     @Bean
     @DependsOn("flyway")
     public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
diff --git a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java
index 7849409a9e375d0a512121f24c9e7f6b1426b084..9c8b401142590795b6c4adce89a2a82bb0d21c4b 100644
--- a/src/main/java/eu/hbp/mip/controllers/VariablesApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/VariablesApi.java
@@ -6,6 +6,8 @@ package eu.hbp.mip.controllers;
 
 
 import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
 import com.google.gson.stream.JsonReader;
 import eu.hbp.mip.model.Value;
 import eu.hbp.mip.model.Variable;
@@ -17,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
 import java.io.BufferedReader;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.util.LinkedList;
 import java.util.List;
 
 import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
@@ -30,6 +33,8 @@ public class VariablesApi {
 
     private static final String VARIABLES_FILE = "data/variables.json";
 
+    private static LinkedList<Variable> variables;
+
 
     @ApiOperation(value = "Get variables", response = Variable.class, responseContainer = "List")
     @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") })
@@ -44,7 +49,29 @@ public class VariablesApi {
     )  {
         LOGGER.info("Get variables");
 
-        return ResponseEntity.ok(null);  // TODO : findall
+        InputStream is = Variable.class.getClassLoader().getResourceAsStream(VARIABLES_FILE);
+        InputStreamReader isr = new InputStreamReader(is);
+        BufferedReader br = new BufferedReader(isr);
+
+        JsonObject root = new Gson().fromJson(new JsonReader(br), JsonObject.class);
+        variables = new LinkedList<>();
+
+        extractVariablesRecursive(root);
+
+        return ResponseEntity.ok(variables);
+    }
+
+    private static void extractVariablesRecursive(JsonObject element) {
+        if (element.has("groups")){
+            for(JsonElement child : element.getAsJsonArray("groups")) {
+                extractVariablesRecursive(child.getAsJsonObject());
+            }
+        }
+        if (element.has("variables")){
+            for (JsonElement var : element.getAsJsonArray("variables")){
+                variables.add(new Gson().fromJson(var, Variable.class));
+            }
+        }
     }
 
     @ApiOperation(value = "Get a variable", response = Variable.class)