diff --git a/frontend-js/src/main/js/map/CustomMap.js b/frontend-js/src/main/js/map/CustomMap.js
index 7f839f1ca11c57120de8f7d2830cd053bd1d7ae1..9fa139d1c02941adcb69e0cf55eeb21d73702b73 100644
--- a/frontend-js/src/main/js/map/CustomMap.js
+++ b/frontend-js/src/main/js/map/CustomMap.js
@@ -727,15 +727,6 @@ CustomMap.prototype.renderOverlayCollection = function (params) {
       promises.push(submaps[i].getMarkerSurfaceCollection().renderOverlay(identifiedElements, overlayCollection));
     }
     return Promise.all(promises);
-  }).then(function () {
-    return Promise.each(elements, function (element) {
-      var infoWindow = self.getInfoWindowForIdentifiedElement(element);
-      if (infoWindow !== null && infoWindow !== undefined) {
-        return self.retrieveOverlayDetailDataForElement(element, infoWindow.getOverlayFullViewArray()).then(function () {
-          return self.updateInfoWindowForIdentifiedElement(element);
-        });
-      }
-    });
   }).then(function () {
     return self.fetchIdentifiedElements(elements, true);
   }).then(function (fullElements) {
@@ -838,23 +829,6 @@ CustomMap.prototype.retrieveOverlayDetailDataForElement = function (element, gen
   return Promise.all(promises);
 };
 
-/**
- * Updates info window identified by element given as a parameter.
- *
- * @param {IdentifiedElement} identifiedElement
- *          element for which info window should be updated
- *
- * @returns {PromiseLike|Promise}
- */
-CustomMap.prototype.updateInfoWindowForIdentifiedElement = function (identifiedElement) {
-  var infoWindow = this.getInfoWindowForIdentifiedElement(identifiedElement);
-  if (infoWindow === null || infoWindow === undefined) {
-    return Promise.resolve();
-  } else {
-    return infoWindow.update();
-  }
-};
-
 /**
  * Returns data from all {OverlayCollection} for a given alias.
  *
diff --git a/frontend-js/src/main/js/map/window/AbstractInfoWindow.js b/frontend-js/src/main/js/map/window/AbstractInfoWindow.js
index 97c192a9216766a9bd3deb7bd7d5d65b5214f338..9ca02dc551756c99b7e274cb6c05c6f9f5202378 100644
--- a/frontend-js/src/main/js/map/window/AbstractInfoWindow.js
+++ b/frontend-js/src/main/js/map/window/AbstractInfoWindow.js
@@ -25,22 +25,35 @@ function AbstractInfoWindow(params) {
   // call super constructor
   ObjectWithListeners.call(this);
 
-  this.setIdentifiedElement(params.identifiedElement);
+  var self = this;
+
+  self.setIdentifiedElement(params.identifiedElement);
 
-  this.setCustomMap(params.map);
-  this.setMarker(params.marker);
+  self.setCustomMap(params.map);
+  self.setMarker(params.marker);
 
-  this.setContent(this.createWaitingContentDiv());
+  self.setContent(this.createWaitingContentDiv());
 
-  this._overlayFullView = [];
+  self._overlayFullView = [];
 
-  this.registerPropertyType("overlayFullView");
+  self.registerPropertyType("overlayFullView");
 
-  this.registerListenerType("onShow");
-  this.registerListenerType("onUpdate");
+  self.registerListenerType("onShow");
+  self.registerListenerType("onUpdate");
 
-  this.setGuiUtils(new GuiUtils());
+  self.setGuiUtils(new GuiUtils());
 
+  var dbOverlaySearchChanged = function () {
+    return self.update();
+  };
+  var searchDbOverlay = params.map.getTopMap().getOverlayByName("search");
+  if (searchDbOverlay !== undefined) {
+    searchDbOverlay.addListener("onSearch", dbOverlaySearchChanged);
+  }
+  var commentDbOverlay = params.map.getTopMap().getOverlayByName("comment");
+  if (commentDbOverlay !== undefined) {
+    commentDbOverlay.addListener("onSearch", dbOverlaySearchChanged);
+  }
 }
 
 AbstractInfoWindow.prototype = Object.create(ObjectWithListeners.prototype);
diff --git a/frontend-js/src/main/js/map/window/AliasInfoWindow.js b/frontend-js/src/main/js/map/window/AliasInfoWindow.js
index ce8fcecf6223cdf548b7e08844525b9bfd7c7bc9..5f9957d418f073468ce95763fe133a99d75c6df2 100644
--- a/frontend-js/src/main/js/map/window/AliasInfoWindow.js
+++ b/frontend-js/src/main/js/map/window/AliasInfoWindow.js
@@ -42,8 +42,25 @@ function AliasInfoWindow(params) {
     });
   };
 
+  var dbOverlaySearchChanged = function () {
+    return self.update();
+  };
+
   params.map.getTopMap().addListener("onShowOverlay", overlayListChanged);
   params.map.getTopMap().addListener("onHideOverlay", overlayListChanged);
+
+  var drugDbOverlay = params.map.getTopMap().getOverlayByName("drug");
+  if (drugDbOverlay !== undefined) {
+    drugDbOverlay.addListener("onSearch", dbOverlaySearchChanged);
+  }
+  var chemicalDbOverlay = params.map.getTopMap().getOverlayByName("chemical");
+  if (chemicalDbOverlay !== undefined) {
+    chemicalDbOverlay.addListener("onSearch", dbOverlaySearchChanged);
+  }
+  var mirnaDbOverlay = params.map.getTopMap().getOverlayByName("mirna");
+  if (mirnaDbOverlay !== undefined) {
+    mirnaDbOverlay.addListener("onSearch", dbOverlaySearchChanged);
+  }
 }
 
 AliasInfoWindow.prototype = Object.create(AbstractInfoWindow.prototype);
diff --git a/frontend-js/src/test/js/map/AbstractCustomMap-test.js b/frontend-js/src/test/js/map/AbstractCustomMap-test.js
index 642c1db6c89157026254be9ad75846470a958b47..5d433c2ffcbc42189434c798c7092744b5a1299a 100644
--- a/frontend-js/src/test/js/map/AbstractCustomMap-test.js
+++ b/frontend-js/src/test/js/map/AbstractCustomMap-test.js
@@ -85,7 +85,7 @@ describe('AbstractCustomMap', function () {
 
     // mock the behaviour of the map
     mockObject.getTopMap = function () {
-      return mockObject;
+      return helper.createCustomMap();
     };
     mockObject.getOverlayDataForReaction = function () {
       return Promise.resolve([]);
diff --git a/frontend-js/src/test/js/map/overlay/AbstractDbOverlay-test.js b/frontend-js/src/test/js/map/overlay/AbstractDbOverlay-test.js
index 872390761f84edff948e06a4d7436aa53e3c45ea..a5f1240c5dd7497c31dd8e20665559804bbf0714 100644
--- a/frontend-js/src/test/js/map/overlay/AbstractDbOverlay-test.js
+++ b/frontend-js/src/test/js/map/overlay/AbstractDbOverlay-test.js
@@ -10,8 +10,6 @@ var logger = require('../../logger');
 describe('AbstractDbOverlay', function () {
   var mapMock = {
     registerDbOverlay: function () {
-    },
-    updateInfoWindowForIdentifiedElement: function () {
     }
   };
   describe("constructor", function () {
diff --git a/frontend-js/src/test/js/map/overlay/DrugDbOverlay-test.js b/frontend-js/src/test/js/map/overlay/DrugDbOverlay-test.js
index 0c0666f87f8906fd578ba5d89bcf9ce72e52bfc8..04d73c7b26f9d60aa9c3fa258e521933f6ab4de6 100644
--- a/frontend-js/src/test/js/map/overlay/DrugDbOverlay-test.js
+++ b/frontend-js/src/test/js/map/overlay/DrugDbOverlay-test.js
@@ -5,9 +5,11 @@ require("../../mocha-config");
 
 var IdentifiedElement = require('../../../../main/js/map/data/IdentifiedElement');
 var DrugDbOverlay = require('../../../../main/js/map/overlay/DrugDbOverlay');
+var Point = require('../../../../main/js/map/canvas/Point');
 var ServerConnector = require('../../ServerConnector-mock');
 
-var assert = require('assert');
+var chai = require('chai');
+var assert = chai.assert;
 
 describe('DrugDbOverlay', function () {
   it("constructor 1", function () {
@@ -22,23 +24,60 @@ describe('DrugDbOverlay', function () {
     assert.equal(logger.getWarnings.length, 0);
   });
 
-  it("searchByQuery", function () {
-    helper.setUrl("http://test/?id=drug_target_sample");
-
-    var map, searchDb;
-    return ServerConnector.getProject("drug_target_sample").then(function (project) {
-      map = helper.createCustomMap(project);
-      searchDb = helper.createDrugDbOverlay(map);
-      return searchDb.searchByQuery("NADH");
-    }).then(function (drugs) {
-      assert.equal(drugs.length, 1);
-      assert.equal(searchDb.getQueries().length, 1);
-      return searchDb.getElementsByQuery(searchDb.getQueries()[0]);
-    }).then(function (elements) {
-      assert.ok(elements.length > 1);
-      return searchDb.getIdentifiedElements();
-    }).then(function (elements) {
-      assert.equal(elements.length, 1);
+  describe("searchByQuery", function () {
+    it("simple", function () {
+      helper.setUrl("http://test/?id=drug_target_sample");
+
+      var map, searchDb;
+      return ServerConnector.getProject("drug_target_sample").then(function (project) {
+        map = helper.createCustomMap(project);
+        searchDb = helper.createDrugDbOverlay(map);
+        return searchDb.searchByQuery("NADH");
+      }).then(function (drugs) {
+        assert.equal(drugs.length, 1);
+        assert.equal(searchDb.getQueries().length, 1);
+        return searchDb.getElementsByQuery(searchDb.getQueries()[0]);
+      }).then(function (elements) {
+        assert.ok(elements.length > 1);
+        return searchDb.getIdentifiedElements();
+      }).then(function (elements) {
+        assert.equal(elements.length, 1);
+      });
+    });
+    it("check if info window updated", function () {
+      helper.setUrl("http://test/?id=drug_target_sample");
+
+      var map, searchDb, alias, marker, infoWindow;
+      var ie = new IdentifiedElement({
+        id: 436152,
+        modelId: 20637,
+        type: 'ALIAS'
+      });
+      return ServerConnector.getProject("drug_target_sample").then(function (project) {
+        map = helper.createCustomMap(project);
+        searchDb = helper.createDrugDbOverlay(map);
+
+        return map.getModel().getByIdentifiedElement(ie);
+      }).then(function (result) {
+        alias = result;
+        marker = map.getMapCanvas().createMarker({icon: "empty.png", position: new Point(0, 0)});
+        return map.openInfoWindowForIdentifiedElement(ie, marker)
+      }).then(function (result) {
+        infoWindow = result;
+        assert.notOk(infoWindow.getContent().innerHTML.indexOf("NADH") >= 0);
+
+        return searchDb.searchByQuery("NADH");
+      }).then(function (drugs) {
+        assert.equal(drugs.length, 1);
+        assert.equal(searchDb.getQueries().length, 1);
+        return searchDb.getElementsByQuery(searchDb.getQueries()[0]);
+      }).then(function (elements) {
+        assert.ok(elements.length > 1);
+        return searchDb.getIdentifiedElements();
+      }).then(function (elements) {
+        assert.ok(infoWindow.getContent().innerHTML.indexOf("NADH") >= 0);
+        assert.equal(elements.length, 1);
+      });
     });
   });