diff --git a/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js b/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js
index f35e5299d618fa9680d8dce09ad95287997dd584..692d5d4e130ce79e8a1614044a4e7d75c03cfd88 100644
--- a/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js
+++ b/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js
@@ -180,6 +180,12 @@ AbstractDbOverlay.prototype.searchByEncodedQuery = function (originalQuery, fitB
     return this.searchNamesByTarget(query.target);
   } else if (query.type === AbstractDbOverlay.QueryType.SEARCH_BY_COORDINATES) {
     query.coordinates = new google.maps.Point(query.coordinates.x, query.coordinates.y);
+    if (this.getMap().getSubmapById(query.modelId) === null) {
+      //this can happen when cached data comes from project that was removed and something else
+      //was uploaded with the same name
+      logger.warn("Invalid search query. Model doesn't exist: " + query.modelId);
+      return Promise.resolve();
+    }
     return this.searchByCoordinates(query);
   } else {
     throw new Error("Unknown type of query: " + query.type);
diff --git a/frontend-js/src/test/js/map/overlay/SearchDbOverlay-test.js b/frontend-js/src/test/js/map/overlay/SearchDbOverlay-test.js
index e466e58026f69561c1293cfd1d0e701ce84cec4c..575eb33baae911bab6f801f05e398059a6d60726 100644
--- a/frontend-js/src/test/js/map/overlay/SearchDbOverlay-test.js
+++ b/frontend-js/src/test/js/map/overlay/SearchDbOverlay-test.js
@@ -1,4 +1,5 @@
 "use strict";
+require('../../mocha-config.js');
 
 var logger = require('../../logger');
 
@@ -9,12 +10,12 @@ var AbstractDbOverlay = require('../../../../main/js/map/overlay/AbstractDbOverl
 var assert = require('assert');
 var Promise = require('bluebird');
 
-describe('SearchDbOverlay', function() {
-  it("constructor 1", function() {
+describe('SearchDbOverlay', function () {
+  it("constructor 1", function () {
     var map = helper.createCustomMap();
     var oc = new SearchDbOverlay({
-      map : map,
-      name : 'search'
+      map: map,
+      name: 'search'
     });
     assert.ok(oc);
     assert.equal(oc.getName(), 'search');
@@ -22,44 +23,44 @@ describe('SearchDbOverlay', function() {
     assert.equal(logger.getWarnings.length, 0);
   });
 
-  it("searchByCoordinates with too far alias as result", function() {
-    return ServerConnector.getProject().then(function(project) {
+  it("searchByCoordinates with too far alias as result", function () {
+    return ServerConnector.getProject().then(function (project) {
       var map = helper.createCustomMap(project);
       var searchDb = helper.createSearchDbOverlay(map);
 
       var searchParams = {
-        modelId : map.getModel().getId(),
-        coordinates : new google.maps.Point(207.73, 479.18),
-        zoom : 4,
+        modelId: map.getModel().getId(),
+        coordinates: new google.maps.Point(207.73, 479.18),
+        zoom: 4,
       };
       return searchDb.searchByCoordinates(searchParams);
-    }).then(function(result) {
+    }).then(function (result) {
       assert.equal(result.length, 0);
     });
   });
 
-  describe("searchByQuery", function() {
-    it("with perfectMatch", function() {
-      return ServerConnector.getProject().then(function(project) {
+  describe("searchByQuery", function () {
+    it("with perfectMatch", function () {
+      return ServerConnector.getProject().then(function (project) {
         var map = helper.createCustomMap(project);
         map.getModel().setId(15781);
         var searchDb = helper.createSearchDbOverlay(map);
 
         return searchDb.searchByQuery("s1", true);
-      }).then(function(result) {
+      }).then(function (result) {
         assert.equal(result.length, 1);
         assert.equal(result[0].length, 1);
       });
     });
-    it("check state when network problems", function() {
+    it("check state when network problems", function () {
       var problematicQuery = "sxx1";
       var searchDb;
-      return ServerConnector.getProject().then(function(project) {
+      return ServerConnector.getProject().then(function (project) {
         var map = helper.createCustomMap(project);
         searchDb = helper.createSearchDbOverlay(map);
 
         return searchDb.searchByQuery(problematicQuery);
-      }).then(null, function() {
+      }).then(null, function () {
         var queries = searchDb.getQueries();
         var promises = [];
         for (var i = 0; i < queries.length; i++) {
@@ -70,119 +71,134 @@ describe('SearchDbOverlay', function() {
     });
   });
 
-  it("searchByEncodedQuery", function() {
-    return ServerConnector.getProject().then(function(project) {
-      var map = helper.createCustomMap(project);
-      var searchDb = helper.createSearchDbOverlay(map);
-      var point = new google.maps.Point(316.05, 253.61);
-      var queryType = AbstractDbOverlay.QueryType.SEARCH_BY_COORDINATES;
-      var query = searchDb.encodeQuery(queryType, map.getModel().getId(), point, 2);
-      return searchDb.searchByEncodedQuery(query);
-    }).then(function(result) {
-      assert.ok(result.length > 0);
+  describe("searchByEncodedQuery", function () {
+    it("search by coordinates", function () {
+      return ServerConnector.getProject().then(function (project) {
+        var map = helper.createCustomMap(project);
+        var searchDb = helper.createSearchDbOverlay(map);
+        var point = new google.maps.Point(316.05, 253.61);
+        var queryType = AbstractDbOverlay.QueryType.SEARCH_BY_COORDINATES;
+        var query = searchDb.encodeQuery(queryType, map.getModel().getId(), point, 2);
+        return searchDb.searchByEncodedQuery(query);
+      }).then(function (result) {
+        assert.ok(result.length > 0);
+      });
+    });
+    it("search by coordinates on map that doesn't exist", function () {
+      return ServerConnector.getProject().then(function (project) {
+        var map = helper.createCustomMap(project);
+        var searchDb = helper.createSearchDbOverlay(map);
+        var point = new google.maps.Point(316.05, 253.61);
+        var queryType = AbstractDbOverlay.QueryType.SEARCH_BY_COORDINATES;
+        var query = searchDb.encodeQuery(queryType, -1, point, 2);
+        return searchDb.searchByEncodedQuery(query);
+      }).then(function (result) {
+        assert.equal(logger.getWarnings().length, 1);
+        assert.equal(result.length, 0);
+      });
     });
   });
 
-  describe("searchByCoordinates", function() {
-    it("with too far reaction as result", function() {
-      return ServerConnector.getProject().then(function(project) {
+  describe("searchByCoordinates", function () {
+    it("with too far reaction as result", function () {
+      return ServerConnector.getProject().then(function (project) {
         var map = helper.createCustomMap(project);
         var searchDb = helper.createSearchDbOverlay(map);
 
         var searchParams = {
-          modelId : map.getModel().getId(),
-          coordinates : new google.maps.Point(553.10, 479.18),
-          zoom : 4,
+          modelId: map.getModel().getId(),
+          coordinates: new google.maps.Point(553.10, 479.18),
+          zoom: 4,
         };
         return searchDb.searchByCoordinates(searchParams);
-      }).then(function(result) {
+      }).then(function (result) {
         assert.equal(result.length, 0);
       });
 
     });
 
-    it("on empty map", function() {
+    it("on empty map", function () {
       helper.setUrl("http://test/?id=empty");
-      return ServerConnector.getProject().then(function(project) {
+      return ServerConnector.getProject().then(function (project) {
         var map = helper.createCustomMap(project);
         var searchDb = helper.createSearchDbOverlay(map);
 
         var searchParams = {
-          modelId : map.getModel().getId(),
-          coordinates : new google.maps.Point(553.10, 479.18),
-          zoom : 4,
+          modelId: map.getModel().getId(),
+          coordinates: new google.maps.Point(553.10, 479.18),
+          zoom: 4,
         };
         return searchDb.searchByCoordinates(searchParams);
-      }).then(function(result) {
+      }).then(function (result) {
         assert.equal(result.length, 0);
       });
 
     });
 
-    it("on hidden nested object", function() {
-      return ServerConnector.getProject().then(function(project) {
+    it("on hidden nested object", function () {
+      return ServerConnector.getProject().then(function (project) {
         var map = helper.createCustomMap(project);
         var searchDb = helper.createSearchDbOverlay(map);
 
         var searchParams = {
-          modelId : map.getModel().getId(),
-          coordinates : new google.maps.Point(316.05, 253.61),
-          zoom : 2,
+          modelId: map.getModel().getId(),
+          coordinates: new google.maps.Point(316.05, 253.61),
+          zoom: 2,
         };
         return searchDb.searchByCoordinates(searchParams);
-      }).then(function(result) {
+      }).then(function (result) {
         // id of the parent
         assert.equal(result[0].getId(), 329159);
       });
 
     });
 
-    it("on nested object", function() {
-      return ServerConnector.getProject().then(function(project) {
+    it("on nested object", function () {
+      return ServerConnector.getProject().then(function (project) {
         var map = helper.createCustomMap(project);
         var searchDb = helper.createSearchDbOverlay(map);
 
         var searchParams = {
-          modelId : map.getModel().getId(),
-          coordinates : new google.maps.Point(316.05, 253.61),
-          zoom : 4,
+          modelId: map.getModel().getId(),
+          coordinates: new google.maps.Point(316.05, 253.61),
+          zoom: 4,
         };
         return searchDb.searchByCoordinates(searchParams);
-      }).then(function(result) {
+      }).then(function (result) {
         assert.equal(result[0].getId(), 329159);
       });
     });
   });
 
-  describe("getDetailDataByIdentifiedElement", function() {
-    it("get by alias", function() {
-      return ServerConnector.getProject().then(function(project) {
+  describe("getDetailDataByIdentifiedElement", function () {
+    it("get by alias", function () {
+      return ServerConnector.getProject().then(function (project) {
         var map = helper.createCustomMap(project);
         var searchDb = helper.createSearchDbOverlay(map);
 
         var searchParams = new IdentifiedElement({
-          type : "ALIAS",
-          id : 329177,
-          modelId : project.getModel().getId(),
+          type: "ALIAS",
+          id: 329177,
+          modelId: project.getModel().getId(),
         });
         return searchDb.getDetailDataByIdentifiedElement(searchParams);
-      }).then(function(result) {
+      }).then(function (result) {
         assert.equal(result.getId(), 329177);
       });
 
     });
-    it("get by point", function() {
-      return ServerConnector.getProject().then(function(project) {
+    it("get by point", function () {
+      return ServerConnector.getProject().then(function (project) {
         var map = helper.createCustomMap(project);
         var searchDb = helper.createSearchDbOverlay(map);
 
         var searchParams = new IdentifiedElement({
-          type : "POINT",
-          id : "2,3",
-          modelId : project.getModel().getId(),
+          type: "POINT",
+          id: "2,3",
+          modelId: project.getModel().getId(),
         });
         return searchDb.getDetailDataByIdentifiedElement(searchParams);
-      }).then(function(result) {
+      }).then(function (result) {
         assert.equal(result, null);
       });
     });