diff --git a/frontend-js/src/main/js/map/AbstractCustomMap.js b/frontend-js/src/main/js/map/AbstractCustomMap.js
index 56f8556095638ff3dfabc34674263fa64d46c9f3..1ce26116786354b940fa788969cf7725888c63cd 100644
--- a/frontend-js/src/main/js/map/AbstractCustomMap.js
+++ b/frontend-js/src/main/js/map/AbstractCustomMap.js
@@ -583,24 +583,28 @@ AbstractCustomMap.prototype._showSelectedLayout = function(layoutId, index, leng
     var layoutAliases;
     var layoutReactions;
 
-    return self.getModel().getLayoutDataById(layoutId).then(function(layout) {
+    return self.getTopMap().getModel().getLayoutDataById(layoutId).then(function(layout) {
       layoutAliases = layout.getAliases();
       layoutReactions = layout.getReactions();
 
       return Promise.each(layoutAliases,function(layoutAlias){
-        return self.getModel().getAliasById(layoutAlias.getId()).then(function(aliasData) {
-          return AliasOverlay.create(layoutAlias, aliasData, self, startX, endX);
-        }).then(function(overlay){
-          self.selectedLayoutOverlays[layoutId].push(overlay);
-        });
+        if (layoutAlias.getModelId()===self.getId()) {
+          return self.getModel().getAliasById(layoutAlias.getId()).then(function(aliasData) {
+            return AliasOverlay.create(layoutAlias, aliasData, self, startX, endX);
+          }).then(function(overlay){
+            self.selectedLayoutOverlays[layoutId].push(overlay);
+          });
+        }
       });
     }).then(function(){
       return Promise.each(layoutReactions,function(layoutReaction){
-        return self.getModel().getReactionById(layoutReaction.getId()).then(function(reactionData) {
-          var reactionOverlay = new ReactionOverlay(layoutReaction, reactionData, self, length === 1);
-          self.selectedLayoutOverlays[layoutId].push(reactionOverlay);
-          reactionOverlay.show();
-        });
+        if (layoutReaction.getModelId()===self.getId()) {
+          return self.getModel().getReactionById(layoutReaction.getId()).then(function(reactionData) {
+            var reactionOverlay = new ReactionOverlay(layoutReaction, reactionData, self, length === 1);
+            self.selectedLayoutOverlays[layoutId].push(reactionOverlay);
+            reactionOverlay.show();
+          });
+        }
       });
     }).then(function(){
       resolve();
diff --git a/frontend-js/src/main/js/map/data/LayoutReaction.js b/frontend-js/src/main/js/map/data/LayoutReaction.js
index 18c369ae6db04d543b6a504acc683c76bc9bc8d6..f7cca0fdf303e4d50b5aa2444753360b3c4179ff 100644
--- a/frontend-js/src/main/js/map/data/LayoutReaction.js
+++ b/frontend-js/src/main/js/map/data/LayoutReaction.js
@@ -8,6 +8,7 @@
  */
 function LayoutReaction(javaObject) {
   this.setId(javaObject.idObject);
+  this.setModelId(javaObject.modelId);
   this.setWidth(javaObject.width);
   this.setColor(javaObject.color);
   this.setReverse(javaObject.reverse);
@@ -21,6 +22,14 @@ LayoutReaction.prototype.setId = function(id) {
   this.id = parseInt(id);
 };
 
+LayoutReaction.prototype.getModelId = function() {
+  return this._modelId;
+};
+
+LayoutReaction.prototype.setModelId = function(modelId) {
+  this._modelId = parseInt(modelId);
+};
+
 LayoutReaction.prototype.setWidth = function(width) {
   this.width = width;
 };
diff --git a/frontend-js/src/test/js/map/CustomMap-test.js b/frontend-js/src/test/js/map/CustomMap-test.js
index 93dd5140e0b31a583bf16a11f1d7bcb854f10ad1..207032f16bee515e44462e09ff469af7df7b2ca2 100644
--- a/frontend-js/src/test/js/map/CustomMap-test.js
+++ b/frontend-js/src/test/js/map/CustomMap-test.js
@@ -126,23 +126,6 @@ describe('CustomMap', function() {
     });
   });
 
-  it("addSelectedLayout with data download", function() {
-    var map = helper.createCustomMap();
-    var layout = helper.createLayout();
-    layout.setId(102);
-    map.getModel().addLayout(layout);
-
-    return map.addSelectedLayout(layout.getId()).then(function() {
-      var vLayouts = ServerConnector.getSessionData(map.getProject()).getVisibleOverlays();
-      assert.equal(1, vLayouts.length);
-      assert.equal(layout.getId(), vLayouts[0]);
-
-      var overlays = map.getSelectedLayoutOverlays()[layout.getId()];
-      assert.equal(overlays.length, 1);
-      assert.ok(overlays[0] instanceof AliasOverlay);
-    });
-  });
-
   it("_showSelectedLayout", function() {
     var map = helper.createCustomMap();
     var alias = helper.createAlias();
@@ -156,10 +139,12 @@ describe('CustomMap', function() {
     layout.setInitialized(true);
     var layoutAlias = helper.createLayoutAlias();
     layoutAlias.setId(alias.getId());
+    layoutAlias.setModelId(map.getId());
     layout.addAlias(layoutAlias);
 
     var layoutReaction = helper.createLayoutReaction();
     layoutReaction.setId(reaction.getId());
+    layoutReaction.setModelId(map.getId());
     layout.addReaction(layoutReaction);
 
     map.getModel().addLayout(layout);
@@ -179,6 +164,41 @@ describe('CustomMap', function() {
     });
 
   });
+
+  it("addSelectedLayout with submaps", function() {
+    var projectId = "complex_model_with_submaps";
+    helper.setUrl("http://test/?id=" + projectId);
+    GuiConnector.getParams["id"] = projectId;
+    return ServerConnector.getProject(projectId).then(function(project) {
+      var options = helper.createCustomMapOptions(project);
+      var customMap = new CustomMap(options);
+      var overlayId = 18083;
+      
+      var emptySubmodelId = 16730; 
+      var filledSubmodelId = 16731; 
+      
+      customMap.openSubmap(emptySubmodelId);
+      customMap.openSubmap(filledSubmodelId);
+
+      var emptySubmap = customMap.getSubmapById(emptySubmodelId);
+      var filledSubmap = customMap.getSubmapById(filledSubmodelId);
+
+      return customMap.addSelectedLayout(overlayId).then(function() {
+
+        assert.equal(1, customMap.selectedLayoutOverlays[overlayId].length);
+        assert.equal(1, filledSubmap.selectedLayoutOverlays[overlayId].length);
+        assert.equal(0, emptySubmap.selectedLayoutOverlays[overlayId].length);
+
+        // now hide the layout
+        customMap.hideSelectedLayout(overlayId);
+        assert.equal(0, customMap.selectedLayoutOverlays[overlayId].length);
+        assert.equal(0, filledSubmap.selectedLayoutOverlays[overlayId].length);
+        assert.equal(0, emptySubmap.selectedLayoutOverlays[overlayId].length);
+      });
+
+    });
+  });
+
   it("openInfoWindowForAlias", function() {
     var map = helper.createCustomMap();
     var layout = helper.createLayout();
diff --git a/frontend-js/testFiles/apiCalls/overlay/getOverlayById/overlayId=18083&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/overlay/getOverlayById/overlayId=18083&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID&
new file mode 100644
index 0000000000000000000000000000000000000000..bca5c59148a1f0b759d1e25fed28055b8e2fec31
--- /dev/null
+++ b/frontend-js/testFiles/apiCalls/overlay/getOverlayById/overlayId=18083&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID&
@@ -0,0 +1 @@
+{"modelId":16728,"name":"C:\\fakepath\\a.txt","description":"","status":"OK","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/.18083","creator":"","inputDataAvailable":"true","idObject":18083}
\ No newline at end of file
diff --git a/frontend-js/testFiles/apiCalls/overlay/getOverlayElements/overlayId=18083&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/overlay/getOverlayElements/overlayId=18083&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID&
new file mode 100644
index 0000000000000000000000000000000000000000..a2194e211054a9cebc5183e28af5ea8a337d2d35
--- /dev/null
+++ b/frontend-js/testFiles/apiCalls/overlay/getOverlayElements/overlayId=18083&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID&
@@ -0,0 +1 @@
+[{"type":"ALIAS","overlayContent":{"value":1.0,"modelId":16728,"idObject":"345331"}},{"type":"ALIAS","overlayContent":{"value":1.0,"modelId":16729,"idObject":"345330"}},{"type":"ALIAS","overlayContent":{"value":1.0,"modelId":16731,"idObject":"345337"}}]
\ No newline at end of file
diff --git a/frontend-js/testFiles/apiCalls/overlay/getOverlayList/projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/overlay/getOverlayList/projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID&
new file mode 100644
index 0000000000000000000000000000000000000000..0637a088a01e8ddab3bf3fa98dbe804cbde1a0dc
--- /dev/null
+++ b/frontend-js/testFiles/apiCalls/overlay/getOverlayList/projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID&
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/frontend-js/testFiles/apiCalls/project/getElements/columns=id,bounds,modelId&id=345330,345331,345337&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/project/getElements/columns=id,bounds,modelId&id=345330,345331,345337&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID&
new file mode 100644
index 0000000000000000000000000000000000000000..0534e69e0259a430bb3bd844338b91eccb5fc5a6
--- /dev/null
+++ b/frontend-js/testFiles/apiCalls/project/getElements/columns=id,bounds,modelId&id=345330,345331,345337&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID&
@@ -0,0 +1 @@
+[{"modelId":16731,"bounds":{"x":190.0,"y":44.0,"width":80.0,"height":40.0},"id":345337},{"modelId":16729,"bounds":{"x":65.0,"y":64.0,"width":80.0,"height":40.0},"id":345330},{"modelId":16728,"bounds":{"x":59.0,"y":73.0,"width":80.0,"height":40.0},"id":345331}]
\ No newline at end of file
diff --git a/frontend-js/testFiles/apiCalls/project/getElements/columns=id,bounds,modelId&id=345337&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/project/getElements/columns=id,bounds,modelId&id=345337&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID&
new file mode 100644
index 0000000000000000000000000000000000000000..0845b7dc0ff7356be96c9de63580a817defee6b5
--- /dev/null
+++ b/frontend-js/testFiles/apiCalls/project/getElements/columns=id,bounds,modelId&id=345337&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID&
@@ -0,0 +1 @@
+[{"modelId":16731,"bounds":{"x":190.0,"y":44.0,"width":80.0,"height":40.0},"id":345337}]
\ No newline at end of file
diff --git a/frontend-js/testFiles/apiCalls/project/getMetaData/projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/project/getMetaData/projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID&
new file mode 100644
index 0000000000000000000000000000000000000000..bb1433fb340137ed9c9a37f0140f17f5a6ea0527
--- /dev/null
+++ b/frontend-js/testFiles/apiCalls/project/getMetaData/projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID&
@@ -0,0 +1 @@
+{"version":"0","idObject":15763,"name":"UNKNOWN DISEASE MAP","projectId":"complex_model_with_submaps","description":"","map":{"name":"main","idObject":16728,"tileSize":256,"width":515,"height":362,"minZoom":2,"maxZoom":4,"layouts":[{"modelId":16728,"name":"Pathways and compartments","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_nested0","creator":"","inputDataAvailable":"false","idObject":14959},{"modelId":16728,"name":"Network","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_normal0","creator":"","inputDataAvailable":"false","idObject":14960},{"modelId":16728,"name":"Empty","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_empty0","creator":"","inputDataAvailable":"false","idObject":14961},{"modelId":16728,"name":"C:\\fakepath\\a.txt","description":"","status":"OK","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/.18083","creator":"","inputDataAvailable":"true","idObject":18083}],"submodels":[{"name":"s3","idObject":16730,"tileSize":256,"width":421,"height":315,"minZoom":2,"maxZoom":3,"layouts":[{"modelId":16730,"name":"Pathways and compartments","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_nested2","creator":"","inputDataAvailable":"false","idObject":14950},{"modelId":16730,"name":"Network","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_normal2","creator":"","inputDataAvailable":"false","idObject":14951},{"modelId":16730,"name":"Empty","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_empty2","creator":"","inputDataAvailable":"false","idObject":14952}],"submodels":[],"centerLatLng":{"lat":79.19139766235872,"lng":-135.10688836104512},"topLeftLatLng":{"lat":85.05112877980659,"lng":-180.0},"bottomRightLatLng":{"lat":74.06362505154212,"lng":-90.0}},{"name":"s2","idObject":16731,"tileSize":256,"width":451,"height":253,"minZoom":2,"maxZoom":3,"layouts":[{"modelId":16731,"name":"Pathways and compartments","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_nested1","creator":"","inputDataAvailable":"false","idObject":14956},{"modelId":16731,"name":"Network","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_normal1","creator":"","inputDataAvailable":"false","idObject":14957},{"modelId":16731,"name":"Empty","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_empty1","creator":"","inputDataAvailable":"false","idObject":14958}],"submodels":[],"centerLatLng":{"lat":79.19006423440219,"lng":-135.09977827050997},"topLeftLatLng":{"lat":85.05112877980659,"lng":-180.0},"bottomRightLatLng":{"lat":78.0903352323621,"lng":-90.0}},{"name":"s1","idObject":16729,"tileSize":256,"width":571,"height":276,"minZoom":2,"maxZoom":4,"layouts":[{"modelId":16729,"name":"Pathways and compartments","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_nested3","creator":"","inputDataAvailable":"false","idObject":14953},{"modelId":16729,"name":"Network","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_normal3","creator":"","inputDataAvailable":"false","idObject":14954},{"modelId":16729,"name":"Empty","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_empty3","creator":"","inputDataAvailable":"false","idObject":14955}],"submodels":[],"centerLatLng":{"lat":79.18613072613702,"lng":-135.07880910683014},"topLeftLatLng":{"lat":85.05112877980659,"lng":-180.0},"bottomRightLatLng":{"lat":79.44906929997262,"lng":-90.0}}],"centerLatLng":{"lat":79.18773841616675,"lng":-135.0873786407767},"topLeftLatLng":{"lat":85.05112877980659,"lng":-180.0},"bottomRightLatLng":{"lat":75.1456787592211,"lng":-90.0}},"publicationCount":0,"overviewImageViews":[]}
\ No newline at end of file