diff --git a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js
index 89d61d1db500186fd22e2641e9ef374b632be41c..d1df569116b54143e25523d0452e8ba9b0b2b9aa 100644
--- a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js
+++ b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js
@@ -18,6 +18,7 @@ var xss = require('xss');
 function EditProjectDialog(params) {
   AbstractGuiElement.call(this, params);
   var self = this;
+  self.registerListenerType("onSave");
   $(self.getElement()).addClass("minerva-edit-project-dialog");
   $(self.getElement()).css({overflow: "hidden"});
 
@@ -237,8 +238,10 @@ EditProjectDialog.prototype.createGeneralTabContent = function () {
     content: '<span class="ui-icon ui-icon-disk"></span>&nbsp;SAVE',
     onclick: function () {
       return self.onSaveClicked().then(function () {
+        return self.callListeners("onSave");
+      }).then(function () {
         return self.close();
-      }, GuiConnector.alert);
+      }).catch(GuiConnector.alert);
     },
     xss: false
   });
diff --git a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
index e3973891d856049d3c82d70030681ffdecdef954..9fbf7d455876b39e5360de2b5deda109e8195aab 100644
--- a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
@@ -261,11 +261,16 @@ MapsAdminPanel.prototype.destroy = function () {
   if ($.fn.DataTable.isDataTable(table)) {
     promises.push($(table).DataTable().destroy());
   }
-  if (self._logDialogs !== undefined) {
-    for (var key in self._logDialogs) {
-      if (self._logDialogs.hasOwnProperty(key)) {
-        promises.push(self._logDialogs[key].destroy());
-      }
+
+  var key;
+  for (key in self._logDialogs) {
+    if (self._logDialogs.hasOwnProperty(key)) {
+      promises.push(self._logDialogs[key].destroy());
+    }
+  }
+  for (key in self._dialogs) {
+    if (self._dialogs.hasOwnProperty(key)) {
+      promises.push(self._dialogs[key].destroy());
     }
   }
   return Promise.all(promises);
@@ -297,6 +302,10 @@ MapsAdminPanel.prototype.getDialog = function (project) {
     });
     self._dialogs[project.getProjectId()] = dialog;
     return dialog.init().then(function () {
+      return dialog.addListener("onSave", function () {
+        return self.onRefreshClicked()
+      });
+    }).then(function () {
       return dialog;
     });
   } else {
diff --git a/frontend-js/src/test/js/gui/admin/MapsAdminPanel-test.js b/frontend-js/src/test/js/gui/admin/MapsAdminPanel-test.js
index d5fdf4574bd1ceb68547ce2d37a3e0d5c1083b01..d365b2e30cf63ae83cd5d96daa712e68dc4b9854 100644
--- a/frontend-js/src/test/js/gui/admin/MapsAdminPanel-test.js
+++ b/frontend-js/src/test/js/gui/admin/MapsAdminPanel-test.js
@@ -51,6 +51,28 @@ describe('MapsAdminPanel', function () {
     });
   });
 
+  it('getDialog', function () {
+    helper.loginAsAdmin();
+    var mapTab;
+    var project;
+    return ServerConnector.getProject().then(function (result) {
+      project = result;
+      return ServerConnector.getConfiguration();
+    }).then(function (configuration) {
+      mapTab = new MapsAdminPanel({
+        element: testDiv,
+        project: project,
+        configuration: configuration
+      });
+      return mapTab.init();
+    }).then(function () {
+      return mapTab.getDialog(project);
+    }).then(function (dialog) {
+      assert.ok(dialog.getListeners("onSave").length > 0);
+      return mapTab.destroy();
+    });
+  });
+
 
   describe('onAddClicked', function () {
     it('default', function () {