diff --git a/README.md b/README.md
index 861648d99c5e64126470d7438abf13c19892bd67..c8bb6d65f4fc5cbd20d1234135c1e1d56efa5339 100644
--- a/README.md
+++ b/README.md
@@ -523,6 +523,12 @@ customMap.getProject()
 ```
 customMap.getConfiguration().then(function(configuration){console.log(configuration);});
 ```
+* `getAllBioEntities()`
+	* Arguments: NONE
+	* Example:
+```
+customMap.getAllBioEntities().then(function(bioEntities){console.log(bioEntities);});
+```
 * `getBioEntityById({id, modelId, type})`
 	* Arguments: TODO
 	* Example:
diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js
index f84281272aa732bf0a147b5856f517e54f7e5425..78673ae57585a9f369a36f34407aa73c6855e326 100644
--- a/frontend-js/src/main/js/minerva.js
+++ b/frontend-js/src/main/js/minerva.js
@@ -323,6 +323,37 @@ function createResult(customMap) {
         }
       });
     },
+    getAllBioEntities : function() {
+      var models = [ customMap.getModel() ];
+      var result = [];
+      for (var i = 0; i < customMap.getModel().getSubmodels().length; i++) {
+        models.push(customMap.getModel().getSubmodels()[i]);
+      }
+      var promises = [];
+      for (var i = 0; i < models.length; i++) {
+        promises.push(models[i].getAliases({
+          type : customMap.getConfiguration().getElementTypes(),
+          complete : true,
+        }));
+      }
+      return Promise.all(promises).then(function(aliasesByModel) {
+        var promises = [];
+        for (var i = 0; i < models.length; i++) {
+          promises.push(models[i].getReactionsForElements(aliasesByModel[i], true));
+          for (var j = 0; j < aliasesByModel[i].length; j++) {
+            result.push(aliasesByModel[i][j]);
+          }
+        }
+        return Promise.all(promises);
+      }).then(function(reactionsByModel) {
+        for (var i = 0; i < models.length; i++) {
+          for (var j = 0; j < reactionsByModel[i].length; j++) {
+            result.push(reactionsByModel[i][j]);
+          }
+        }
+        return result;
+      });
+    },
     getReactionsWithElement : function(param) {
       if (param.length === undefined) {
         param = [ param ];
diff --git a/frontend-js/src/test/js/minerva-test.js b/frontend-js/src/test/js/minerva-test.js
index 6d989ae49367d46f79e121cd6197df6d322d0d2f..91bcc1657e12613190d873ad5f80652cf5b61e75 100644
--- a/frontend-js/src/test/js/minerva-test.js
+++ b/frontend-js/src/test/js/minerva-test.js
@@ -496,4 +496,21 @@ describe('minerva global', function() {
     });
   });
 
+  it("getAllBioEntities", function() {
+    var options = {
+      projectId : "sample",
+      element : testDiv
+    };
+    var globalResult;
+    return minerva.create(options).then(function(result) {
+      globalResult = result;
+      return result.getAllBioEntities();
+    }).then(function(result) {
+      assert.ok(result);
+      assert.ok(result.length > 0);
+    }).then(function() {
+      globalResult.destroy();
+    });
+  });
+
 });