diff --git a/frontend-js/src/main/js/GuiConnector.js b/frontend-js/src/main/js/GuiConnector.js
index 87070fd26cebaef9099722450ab23ae2554bffc8..fd67dfe09eb02a46d8eaadcd979f00e9b746a72f 100644
--- a/frontend-js/src/main/js/GuiConnector.js
+++ b/frontend-js/src/main/js/GuiConnector.js
@@ -99,10 +99,6 @@ GuiConnector.init = function() {
 
 };
 
-GuiConnector.search = function(query) {
-  this.searchPanel.search(query);
-};
-
 /**
  * Returns name of the file with LCSB logo.
  * 
diff --git a/frontend-js/src/main/js/SessionData.js b/frontend-js/src/main/js/SessionData.js
index 2bf1f6286f47ef5b4796ea42d2141a664d850028..65fe605882bec4a8ce5517c454a6a0a013355ed2 100644
--- a/frontend-js/src/main/js/SessionData.js
+++ b/frontend-js/src/main/js/SessionData.js
@@ -24,6 +24,20 @@ SessionData.prototype.getShowComments = function() {
   return Cookies.get(key) === "true";
 };
 
+SessionData.prototype.setSearchQuery = function(value) {
+  var key = this.getKey(SessionObjectType.SEARCH_QUERY);
+  Cookies.set(key, JSON.stringify(value));
+};
+
+SessionData.prototype.getSearchQuery = function() {
+  var key = this.getKey(SessionObjectType.SEARCH_QUERY);
+  var result = Cookies.get(key);
+  if (result !== undefined) {
+    result = JSON.parse(result);
+  }
+  return result
+};
+
 SessionData.prototype.setShowComments = function(value) {
   var key = this.getKey(SessionObjectType.SHOW_COMMENT);
   Cookies.set(key, value + "");
diff --git a/frontend-js/src/main/js/SessionObjectType.js b/frontend-js/src/main/js/SessionObjectType.js
index 8514f367942c6dc41b713266c26d33bdd34db1b5..6a66e5daef4cc73f509dc8b6e789f7e716312ea5 100644
--- a/frontend-js/src/main/js/SessionObjectType.js
+++ b/frontend-js/src/main/js/SessionObjectType.js
@@ -3,7 +3,9 @@
 var SessionObjectType = {
   SHOW_COMMENT : "SHOW_COMMENT",
   SELECTED_BACKGROUND_OVERLAY : "SELECTED_BACKGROUND_OVERLAY",
+  SEARCH_QUERY : "SEARCH_QUERY",
   VISIBLE_OVERLAYS : "VISIBLE_OVERLAYS",
+  
 
   CENTER : "CENTER",
   ZOOM_LEVEL : "ZOOM_LEVEL",
diff --git a/frontend-js/src/main/js/map/AbstractCustomMap.js b/frontend-js/src/main/js/map/AbstractCustomMap.js
index 31aac9f3d5ef288f62bd462aecb6b943aaa50506..6c4e6043f56f63abc438fa16ad79c80c5a4add1d 100644
--- a/frontend-js/src/main/js/map/AbstractCustomMap.js
+++ b/frontend-js/src/main/js/map/AbstractCustomMap.js
@@ -315,7 +315,7 @@ AbstractCustomMap.prototype.registerMapClickEvents = function() {
   google.maps.event.addListener(this.getGoogleMap(), 'click', function(mouseEvent) {
     var point = self.fromLatLngToPoint(mouseEvent.latLng);
     var searchDb = customMap.getOverlayByName('search');
-    return searchDb.searchByCoordinates(self.getModel(), point).catch(GuiConnector.alert);
+    return searchDb.searchByCoordinates(self.getModel().getId(), point).catch(GuiConnector.alert);
   });
 
   // select last clicked map
diff --git a/frontend-js/src/main/js/map/overlay/SearchDbOverlay.js b/frontend-js/src/main/js/map/overlay/SearchDbOverlay.js
index f2910eba78a3b38040b825e16bcb1b15dee14a81..b88672edecd6f5d63adc638a211197b584261609 100644
--- a/frontend-js/src/main/js/map/overlay/SearchDbOverlay.js
+++ b/frontend-js/src/main/js/map/overlay/SearchDbOverlay.js
@@ -7,6 +7,8 @@ var IdentifiedElement = require('../data/IdentifiedElement');
 var OverlayCollection = require('./OverlayCollection');
 var Reaction = require('../data/Reaction');
 
+var ServerConnector = require('../../ServerConnector');
+
 function SearchDbOverlay(params) {
   // call super constructor
   OverlayCollection.call(this, params);
@@ -25,13 +27,13 @@ SearchDbOverlay.QueryType = {
     SEARCH_BY_QUERY : "SEARCH_BY_QUERY",
 };
 
-function encodeQuery(type, arg0, arg1){
+SearchDbOverlay.prototype.encodeQuery= function (type, arg0, arg1){
   if (type === SearchDbOverlay.QueryType.SEARCH_BY_COORDINATES) {
-    var model = arg0;
+    var modelId = arg0;
     var coordinates = arg1;
     return JSON.stringify({
       type:type,
-      modelId:model.getId(),
+      modelId:modelId,
       coordinates: coordinates
     });
   } else if (type === SearchDbOverlay.QueryType.SEARCH_BY_QUERY) {
@@ -45,7 +47,12 @@ function encodeQuery(type, arg0, arg1){
   } else {
     throw new Error("Unknown query type: "+type);
   }
-}
+};
+
+
+SearchDbOverlay.prototype.decodeQuery= function (query){
+  return JSON.parse(query);
+};
 
 SearchDbOverlay.prototype.getElementsByQuery = function(query) {
   var self = this;
@@ -85,10 +92,13 @@ SearchDbOverlay.prototype.getElementsByQuery = function(query) {
   });
 };
 
-SearchDbOverlay.prototype.searchByCoordinates = function(model, coordinates) {
+SearchDbOverlay.prototype.searchByCoordinates = function(modelId, coordinates) {
   var self = this;
+  var query = self.encodeQuery(SearchDbOverlay.QueryType.SEARCH_BY_COORDINATES, modelId, coordinates);
+  
+  ServerConnector.getSessionData().setSearchQuery(query);
+  
   return new Promise(function(resolve, reject) {
-    var query = encodeQuery(SearchDbOverlay.QueryType.SEARCH_BY_COORDINATES, model, coordinates);
     self.setQueries([query]);
     
     if (self._elementsByQuery[query] !== undefined) {
@@ -97,7 +107,7 @@ SearchDbOverlay.prototype.searchByCoordinates = function(model, coordinates) {
       }).catch(reject);
     } else {
       return ServerConnector.getClosestElementsByCoordinates({
-        modelId:model.getId(), coordinates: coordinates, count: 1
+        modelId:modelId, coordinates: coordinates, count: 1
       }).then(function(elements) {
         self._elementsByQuery[query] = elements;
         if (elements[0].getType()==="REACTION") {
@@ -124,7 +134,7 @@ SearchDbOverlay.prototype.searchByCoordinates = function(model, coordinates) {
 SearchDbOverlay.prototype.searchBySingleQuery = function(originalQuery, perfect) {
   var self = this;
   return new Promise(function(resolve, reject) {
-    var query = encodeQuery(SearchDbOverlay.QueryType.SEARCH_BY_QUERY, originalQuery, perfect);
+    var query = self.encodeQuery(SearchDbOverlay.QueryType.SEARCH_BY_QUERY, originalQuery, perfect);
     if (self._elementsByQuery[query] !== undefined) {
       resolve(self._elementsByQuery[query]);
     } else {
@@ -147,6 +157,9 @@ SearchDbOverlay.prototype.searchBySingleQuery = function(originalQuery, perfect)
 
 SearchDbOverlay.prototype.searchByQuery = function(originalQuery, perfect) {
   var self = this;
+  var query = self.encodeQuery(SearchDbOverlay.QueryType.SEARCH_BY_QUERY, originalQuery, perfect)
+  ServerConnector.getSessionData().setSearchQuery(query);
+  
   return new Promise(function(resolve, reject) {
     var queries = [];
     if (perfect) {
@@ -158,7 +171,7 @@ SearchDbOverlay.prototype.searchByQuery = function(originalQuery, perfect) {
     var encodedQueries = [];
     var promises = [];
     for (var i=0;i<queries.length;i++) {
-      encodedQueries.push(encodeQuery(SearchDbOverlay.QueryType.SEARCH_BY_QUERY, queries[i], perfect));
+      encodedQueries.push(self.encodeQuery(SearchDbOverlay.QueryType.SEARCH_BY_QUERY, queries[i], perfect));
       promises.push(self.searchBySingleQuery(queries[i], perfect));
     }
     self.setQueries(encodedQueries);
@@ -211,5 +224,17 @@ SearchDbOverlay.prototype.refresh = function(){
   throw new Error("Refreshing shouldn't be called");
 };
 
+SearchDbOverlay.prototype.searchByEncodedQuery = function(originalQuery, perfect) {
+  var query = this.decodeQuery(originalQuery);
+  if (query.type === SearchDbOverlay.QueryType.SEARCH_BY_QUERY) {
+    return this.searchByQuery(query.query,query.perfect);
+  } else if (query.type === SearchDbOverlay.QueryType.SEARCH_BY_COORDINATES) {
+    return this.searchByCoordinates(query.modelId,query.coordinates);
+  } else {
+    throw new Error("Unknown type of query: "+query.type);
+  }
+};
+
+
 
 module.exports = SearchDbOverlay;
diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js
index 0542b0f42ff9a847e40b08f5e7f1de19438ccd33..be06d31a772f9c463f86ab0a28f51013cc3312ac 100644
--- a/frontend-js/src/main/js/minerva.js
+++ b/frontend-js/src/main/js/minerva.js
@@ -35,6 +35,10 @@ function processUrlGetParams(params) {
   if (GuiConnector.getParams["comments"] ==="on") {
     sessionData.setShowComments(true);
   }
+  if (GuiConnector.getParams["search"] !== undefined) {
+    var query = SearchDbOverlay.prototype.encodeQuery(SearchDbOverlay.QueryType.SEARCH_BY_QUERY, GuiConnector.getParams["search"]);
+    sessionData.setSearchQuery(query);
+  }
 
 }
 
@@ -103,10 +107,13 @@ function create(params) {
   }
 
   return new Promise(function(resolve, reject) {
+    var sessionData =ServerConnector.getSessionData(); 
     result.refreshOverlays().then(function() {
-      if (GuiConnector.getParams["search"] !== undefined) {
-        GuiConnector.search(GuiConnector.getParams["search"]);
-      }
+      if (sessionData.getSearchQuery()!==undefined) {
+        return result.getOverlayByName("search").searchByEncodedQuery(sessionData.getSearchQuery());
+      } else {
+        return Promise.resolve();
+      }}).then(function(){
       
       if (ServerConnector.getSessionData().getShowComments()) {
         result.getControl(ControlType.COMMENT_CHECKBOX).checked=true;
diff --git a/frontend-js/src/test/js/gui/SearchPanel-test.js b/frontend-js/src/test/js/gui/SearchPanel-test.js
index d9073bba3b5b87b928ebaff32397c8f257ada7b4..fe7842d790c63f98c423accc4f3b1fcdf2507c99 100644
--- a/frontend-js/src/test/js/gui/SearchPanel-test.js
+++ b/frontend-js/src/test/js/gui/SearchPanel-test.js
@@ -42,7 +42,7 @@ describe('SearchPanel', function() {
       customMap : map
     });
 
-    return searchDbOverlay.searchByCoordinates(map.getModel(), new google.maps.Point(26547.33, 39419.29)).then(
+    return searchDbOverlay.searchByCoordinates(map.getModel().getId(), new google.maps.Point(26547.33, 39419.29)).then(
         function() {
           assert.equal(logger.getWarnings().length, 0);
           assert.ok(div.innerHTML.indexOf("Reaction") >= 0);
diff --git a/frontend-js/src/test/js/minerva-test.js b/frontend-js/src/test/js/minerva-test.js
index 9a9d865224b98f3d7c0b7a663167687bb97c1b45..496986420595c0d8019e9d6cdec42f91ec357524 100644
--- a/frontend-js/src/test/js/minerva-test.js
+++ b/frontend-js/src/test/js/minerva-test.js
@@ -153,4 +153,26 @@ describe('minerva global', function() {
       assert.ok(result);
     });
   });
+  
+  it('create with search overlay and GET search param', function() {
+    GuiConnector.getParams["search"]="s1";
+    
+    var project = helper.createProject();
+    project.getModel().setId(15781);
+    var map = helper.createGoogleMap();
+
+    var options = {
+      map : map,
+      project : project,
+      dataCollections : [ {
+        name : "search"
+      } ],
+    };
+
+    return minerva.create(options).then(function(result) {
+      return result.getOverlayByName("search").getIdentifiedElements();
+    }).then(function(elements){
+      assert.ok(elements.length>0);
+    });
+  });
 });
diff --git a/frontend-js/testFiles/apiCalls/project/getElementsByQuery/projectId=sample&query=s1&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/project/getElementsByQuery/projectId=sample&query=s1&token=MOCK_TOKEN_ID&
new file mode 100644
index 0000000000000000000000000000000000000000..b7e86f323fb71755b369948cb7b4fda82a39439a
--- /dev/null
+++ b/frontend-js/testFiles/apiCalls/project/getElementsByQuery/projectId=sample&query=s1&token=MOCK_TOKEN_ID&
@@ -0,0 +1 @@
+[{"modelId":15781,"id":329173,"type":"ALIAS"},{"modelId":15781,"id":329158,"type":"ALIAS"},{"modelId":15781,"id":329169,"type":"ALIAS"},{"modelId":15781,"id":329177,"type":"ALIAS"},{"modelId":15781,"id":329175,"type":"ALIAS"},{"modelId":15781,"id":329159,"type":"ALIAS"}]
\ No newline at end of file