diff --git a/frontend-js/src/main/js/gui/admin/EditUserDialog.js b/frontend-js/src/main/js/gui/admin/EditUserDialog.js
index 114543974af9df810125d5e1e4cf5c4041272742..7d1893b03c9f54bfb144fc98e454c531baa5cf43 100644
--- a/frontend-js/src/main/js/gui/admin/EditUserDialog.js
+++ b/frontend-js/src/main/js/gui/admin/EditUserDialog.js
@@ -256,7 +256,7 @@ EditUserDialog.prototype.init = function () {
 
   var detailsTable = $("[name=detailsTable]", self.getElement())[0];
 
-  var dataTable = $(detailsTable).DataTable({
+  $(detailsTable).DataTable({
     columns: [{
       title: "Name"
     }, {
@@ -267,6 +267,20 @@ EditUserDialog.prototype.init = function () {
     searching: false,
     bInfo: false
   });
+
+  self.initProjectsTab();
+  self.initPrivilegesTab();
+
+  return self.refresh().then(function () {
+    $(window).trigger('resize');
+  });
+};
+
+EditUserDialog.prototype.refresh = function () {
+  var self = this;
+
+  var dataTable = $("[name=detailsTable]", self.getElement()).DataTable();
+
   var data = [];
 
   var user = self.getUser();
@@ -275,6 +289,7 @@ EditUserDialog.prototype.init = function () {
   if (user.getLogin() !== undefined) {
     readonly = ' readonly ';
   }
+
   data.push(['Login', '<input name="userLogin" value="' + getStringIfDefined(user.getLogin()) + '" ' + readonly + '/>']);
   data.push(['Password', '<input type="password" name="userPassword" value=""/>']);
   data.push(['Confirm password', '<input type="password" name="userPassword2" value=""/>']);
@@ -284,11 +299,8 @@ EditUserDialog.prototype.init = function () {
 
   dataTable.clear().rows.add(data).draw();
 
-  self.initProjectsTab();
   return self.refreshProjects().then(function () {
-    return self.initPrivilegesTab();
-  }).then(function () {
-    $(window).trigger('resize');
+    return self.refreshPrivilegesTab();
   });
 };
 
@@ -340,17 +352,53 @@ EditUserDialog.prototype.initPrivilegesTab = function () {
 
   var privilegesTable = $("[name=privilegesTable]", self.getElement())[0];
 
-  var configuration = self.getConfiguration();
   var columns = [{
     title: "Name"
   }, {
     title: "Value"
   }];
-  var dataTable = $(privilegesTable).DataTable({
+
+  $(privilegesTable).DataTable({
     columns: columns
   });
-  var data = [];
 
+  var configuration = self.getConfiguration();
+  $(privilegesTable).on("click", "[name='privilege-checkbox']", function () {
+    var privilegeType = $(this).attr("data");
+    for (var i = 0; i < configuration.getPrivilegeTypes().length; i++) {
+      var privilege = configuration.getPrivilegeTypes()[i];
+      if (privilege.getName() === privilegeType) {
+        var value = $(this).is(":checked") ? 1 : 0;
+        self.getUser().setPrivilege({type: privilege, value: value});
+      }
+    }
+  });
+  $(privilegesTable).on("change", "[name='privilege-int']", function () {
+    var privilegeType = $(this).attr("data");
+    var value = $(this).val();
+    value = parseInt(value);
+    if (Functions.isInt(value)) {
+      for (var i = 0; i < configuration.getPrivilegeTypes().length; i++) {
+        var privilege = configuration.getPrivilegeTypes()[i];
+        if (privilege.getName() === privilegeType) {
+          self.getUser().setPrivilege({type: privilege, value: value});
+        }
+      }
+    }
+  });
+
+};
+
+/**
+ *
+ */
+EditUserDialog.prototype.refreshPrivilegesTab = function () {
+  var self = this;
+
+  var dataTable = $("[name=privilegesTable]", self.getElement()).DataTable();
+
+  var data = [];
+  var configuration = self.getConfiguration();
   for (var i = 0; i < configuration.getPrivilegeTypes().length; i++) {
     var privilege = configuration.getPrivilegeTypes()[i];
     var option;
@@ -390,29 +438,6 @@ EditUserDialog.prototype.initPrivilegesTab = function () {
     }
   }
   dataTable.clear().rows.add(data).draw();
-  $(privilegesTable).on("click", "[name='privilege-checkbox']", function () {
-    var privilegeType = $(this).attr("data");
-    for (var i = 0; i < configuration.getPrivilegeTypes().length; i++) {
-      var privilege = configuration.getPrivilegeTypes()[i];
-      if (privilege.getName() === privilegeType) {
-        var value = $(this).is(":checked") ? 1 : 0;
-        self.getUser().setPrivilege({type: privilege, value: value});
-      }
-    }
-  });
-  $(privilegesTable).on("change", "[name='privilege-int']", function () {
-    var privilegeType = $(this).attr("data");
-    var value = $(this).val();
-    value = parseInt(value);
-    if (Functions.isInt(value)) {
-      for (var i = 0; i < configuration.getPrivilegeTypes().length; i++) {
-        var privilege = configuration.getPrivilegeTypes()[i];
-        if (privilege.getName() === privilegeType) {
-          self.getUser().setPrivilege({type: privilege, value: value});
-        }
-      }
-    }
-  });
 };
 
 /**
diff --git a/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js b/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
index 4a87c0ec4e883009c2c67d840a8ffad88fe0855a..fb233eaa895767f827f3f7b296d9e953eebe2653 100644
--- a/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
@@ -237,7 +237,9 @@ UsersAdminPanel.prototype.getDialog = function (user) {
       return dialog;
     });
   } else {
-    return Promise.resolve(dialog);
+    return dialog.refresh().then(function () {
+      return dialog;
+    });
   }
 };
 
diff --git a/frontend-js/src/test/js/gui/admin/UserAdminPanel-test.js b/frontend-js/src/test/js/gui/admin/UserAdminPanel-test.js
index fb675b9525b9a984701bf5569cc54b48577afd6f..b225da055dea2b9d6f92cef9df663dd259169f50 100644
--- a/frontend-js/src/test/js/gui/admin/UserAdminPanel-test.js
+++ b/frontend-js/src/test/js/gui/admin/UserAdminPanel-test.js
@@ -11,38 +11,35 @@ var logger = require('../../logger');
 
 var assert = require('assert');
 
-function createUserAdminPanel(configuration) {
+/**
+ *
+ * @returns {UsersAdminPanel}
+ */
+function createUserAdminPanel() {
   return new UsersAdminPanel({
     element: testDiv,
-    configuration: configuration,
+    configuration: helper.getConfiguration(),
     serverConnector: ServerConnector
   });
 }
 
 describe('UsersAdminPanel', function () {
-
   describe('init', function () {
     it('default', function () {
       helper.loginAsAdmin();
-      var usersTab;
-      return ServerConnector.getConfiguration().then(function (configuration) {
-        usersTab = createUserAdminPanel(configuration);
-        return usersTab.init();
-      }).then(function () {
+      var usersTab = createUserAdminPanel();
+      return usersTab.init().then(function () {
         assert.equal(0, logger.getWarnings().length);
         return usersTab.destroy();
       });
     });
     it('user without access', function () {
-      var usersTab;
       var oldFun = ServerConnector.getUsers;
       ServerConnector.getUsers = function () {
         return Promise.reject(new SecurityError("Access denied."));
       };
-      return ServerConnector.getConfiguration().then(function (configuration) {
-        usersTab = createUserAdminPanel(configuration);
-        return usersTab.init();
-      }).then(function () {
+      var usersTab = createUserAdminPanel();
+      return usersTab.init().then(function () {
         assert.equal(0, logger.getWarnings().length);
         assert.ok(usersTab.getElement().innerHTML.indexOf("no privilege") >= 0);
         return usersTab.destroy();
@@ -54,36 +51,51 @@ describe('UsersAdminPanel', function () {
 
   it('refresh', function () {
     helper.loginAsAdmin();
-    var usersTab;
-    return ServerConnector.getConfiguration().then(function (configuration) {
-      usersTab = createUserAdminPanel(configuration);
-      return usersTab.init();
-    }).then(function () {
+    var usersTab = createUserAdminPanel();
+    return usersTab.init().then(function () {
       return usersTab.onRefreshClicked();
     }).then(function () {
       return usersTab.destroy();
     });
   });
 
-  it('showEditDialog', function () {
-    helper.loginAsAdmin();
-    var usersTab;
-    return ServerConnector.getConfiguration().then(function (configuration) {
-      usersTab = createUserAdminPanel(configuration);
-      return usersTab.init();
-    }).then(function () {
-      return usersTab.showEditDialog("anonymous");
-    }).then(function () {
-      return usersTab.destroy();
+  describe('showEditDialog', function () {
+    it('default', function () {
+      helper.loginAsAdmin();
+      var usersTab = createUserAdminPanel();
+      return usersTab.init().then(function () {
+        return usersTab.showEditDialog("anonymous");
+      }).then(function () {
+        return usersTab.destroy();
+      });
+    });
+
+    it('after user was changed locally', function () {
+      helper.loginAsAdmin();
+      var usersTab = createUserAdminPanel();
+      var originalFunction = ServerConnector.getUser;
+      return usersTab.init().then(function () {
+        return usersTab.showEditDialog("anonymous");
+      }).then(function () {
+        return ServerConnector.getUser("anonymous");
+      }).then(function (user) {
+        user.setEmail("email.changed@uni.lu");
+        ServerConnector.getUser = function () {
+          return Promise.resolve(user);
+        };
+        return usersTab.showEditDialog("anonymous");
+      }).then(function () {
+        assert.ok(document.body.innerHTML.indexOf("email.changed@uni.lu") >= 0, "User data wasn't refreshed on second opening");
+        return usersTab.destroy();
+      }).finally(function () {
+        ServerConnector.getUser = originalFunction;
+      });
     });
   });
   it('onAddClicked', function () {
     helper.loginAsAdmin();
-    var usersTab;
-    return ServerConnector.getConfiguration().then(function (configuration) {
-      usersTab = createUserAdminPanel(configuration);
-      return usersTab.init();
-    }).then(function () {
+    var usersTab = createUserAdminPanel();
+    return usersTab.init().then(function () {
       return usersTab.onAddClicked();
     }).then(function () {
       return usersTab.destroy();
@@ -91,4 +103,5 @@ describe('UsersAdminPanel', function () {
   });
 
 
-});
+})
+;