diff --git a/frontend-js/src/main/js/ServerConnector.js b/frontend-js/src/main/js/ServerConnector.js
index eebb2c97939364987afdc238455ca3bc77be5d9e..7c5ee7d128a8a179f7cffd3573276fd889f81241 100644
--- a/frontend-js/src/main/js/ServerConnector.js
+++ b/frontend-js/src/main/js/ServerConnector.js
@@ -1693,7 +1693,7 @@ ServerConnector.getSessionData = function (project) {
  * @param {number} [params.projectId]
  * @param {Point} params.coordinates
  * @param {number} [params.count]
- * @param {string} [params.type]
+ * @param {string[]} [params.type]
  *
  * @returns {PromiseLike<IdentifiedElement[]>}
  */
diff --git a/frontend-js/src/main/js/gui/leftPanel/GenericSearchPanel.js b/frontend-js/src/main/js/gui/leftPanel/GenericSearchPanel.js
index d0352ecdec6ca3ae683be10341f4f005c8d25c8e..0b0ee47231ab245c0ce9b27aa357ec0214697c6d 100644
--- a/frontend-js/src/main/js/gui/leftPanel/GenericSearchPanel.js
+++ b/frontend-js/src/main/js/gui/leftPanel/GenericSearchPanel.js
@@ -6,6 +6,7 @@ var Promise = require("bluebird");
 
 var AbstractDbPanel = require('./AbstractDbPanel');
 var Alias = require('../../map/data/Alias');
+var IdentifiedElement = require('../../map/data/IdentifiedElement');
 var InvalidArgumentError = require('../../InvalidArgumentError');
 var PanelControlElementType = require('../PanelControlElementType');
 var Reaction = require('../../map/data/Reaction');
@@ -22,15 +23,47 @@ var Functions = require('../../Functions');
  * @extends AbstractDbPanel
  */
 function GenericSearchPanel(params) {
+  var self = this;
   params.panelName = "search";
   params.helpTip = "<p>search tab allows to search for particular elements or interactions in the map</p>"
     + "<p>perfect match tick box active: only terms with an exact match to the query will be returned</p>"
     + "<p>separate multiple search by semicolon</p>";
   params.placeholder = "keyword";
 
-  AbstractDbPanel.call(this, params);
+  AbstractDbPanel.call(self, params);
+
+  self.createSearchGui();
+
+  self.getMap().addListener("onBioEntityClick", function (e) {
+    var identifiedElement = e.arg;
+    var queries = self.getOverlayDb().getQueries();
+    var promises = [];
+    for (var i = 0; i < queries.length; i++) {
+      promises.push(self.getOverlayDb().getElementsByQuery(queries[i]));
+    }
+    return Promise.all(promises).then(function (elements) {
+      var tab = -1;
+      for (var i = 0; i < elements.length; i++) {
+        for (var j = 0; j < elements[i].length; j++) {
+          var element = elements[i][j].element;
+          if (element instanceof SearchBioEntityGroup) {
+            for (var k = 0; k < element.getBioEntities().length; k++) {
+              if (new IdentifiedElement(element.getBioEntities()[k]).equals(identifiedElement)) {
+                tab = i;
+              }
+            }
+          } else if (new IdentifiedElement(element).equals(identifiedElement)) {
+            tab = i;
+          }
+        }
+      }
+      var link = $(".parentTabs > .nav-tabs > li > a", self.getElement())[tab];
+      if (link !== undefined) {
+        return link.click();
+      }
+    });
+  });
 
-  this.createSearchGui();
 }
 
 GenericSearchPanel.prototype = Object.create(AbstractDbPanel.prototype);
diff --git a/frontend-js/src/main/js/map/data/IdentifiedElement.js b/frontend-js/src/main/js/map/data/IdentifiedElement.js
index c2bbe28b91635f18d33c57e28c81c47da1a6492c..5b2e69861f0858a9653a9dea9eaf39ca746e2301 100644
--- a/frontend-js/src/main/js/map/data/IdentifiedElement.js
+++ b/frontend-js/src/main/js/map/data/IdentifiedElement.js
@@ -267,7 +267,7 @@ IdentifiedElement.prototype.setLineColor = function (lineColor) {
 
 /**
  *
- * @param {IdentifiedElement} argument
+ * @param {Object} argument
  * @returns {boolean}
  */
 IdentifiedElement.prototype.equals = function (argument) {
diff --git a/frontend-js/src/main/js/map/overlay/SearchDbOverlay.js b/frontend-js/src/main/js/map/overlay/SearchDbOverlay.js
index f92ba6c44050528ff40beb1403e56c0e3ea4da61..aba0743abf24bdebd69d926d7cb5705308649560 100644
--- a/frontend-js/src/main/js/map/overlay/SearchDbOverlay.js
+++ b/frontend-js/src/main/js/map/overlay/SearchDbOverlay.js
@@ -95,11 +95,10 @@ SearchDbOverlay.prototype.getElementsByQuery = function (query) {
  *
  * @param {IdentifiedElement} identifiedElement
  * @param {number} zoomLevel
- * @param {Point}coordinates
  * @returns {Promise}
  * @private
  */
-SearchDbOverlay.prototype._getFirstVisibleParentOrObject = function (identifiedElement, zoomLevel, coordinates) {
+SearchDbOverlay.prototype._getFirstVisibleParentOrObject = function (identifiedElement, zoomLevel) {
   if (identifiedElement === undefined) {
     return Promise.resolve();
   }
@@ -129,7 +128,7 @@ SearchDbOverlay.prototype._getFirstVisibleParentOrObject = function (identifiedE
           type: "ALIAS",
           modelId: identifiedElement.getModelId()
         });
-        return self._getFirstVisibleParentOrObject(parent, zoomLevel, coordinates);
+        return self._getFirstVisibleParentOrObject(parent, zoomLevel);
       } else {
         logger.warn("Cannot find visible parent for object. (zoomLevel=" + zoomLevel + ")");
         logger.warn(fullElement);
@@ -145,7 +144,7 @@ SearchDbOverlay.prototype._getFirstVisibleParentOrObject = function (identifiedE
  * @param {number} params.modelId
  * @param {Point} params.coordinates
  * @param {number} params.zoom
- * @returns {Promise}
+ * @returns {Promise| PromiseLike}
  */
 SearchDbOverlay.prototype.searchByCoordinates = function (params) {
   var modelId = params.modelId;