diff --git a/frontend-js/src/main/js/Configuration.js b/frontend-js/src/main/js/Configuration.js
index df5d61bea47e7ba9235def7a00ea95df0824f64f..871d070dcccc928029199d0cc672c30adaeb66dc 100644
--- a/frontend-js/src/main/js/Configuration.js
+++ b/frontend-js/src/main/js/Configuration.js
@@ -301,6 +301,10 @@ Configuration.prototype.setPrivilegeTypes = function (privilegeTypes) {
   }
 };
 
+/**
+ *
+ * @returns {PrivilegeType[]}
+ */
 Configuration.prototype.getPrivilegeTypes = function () {
   return this._privilegeTypes;
 };
diff --git a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js
index b915e3e66cfc78a274dd6bf33d4cfeb186a5626b..109a71b2f828b4f70413e174504237ff3902d6af 100644
--- a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js
+++ b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js
@@ -72,7 +72,6 @@ EditProjectDialog.prototype.createGui = function () {
     name: "COMMENTS",
     panelClass: CommentsTab
   });
-  // var element = Functions.createElement({type: "div", style: "margin-top:10px;"});
   self.setCommentsTab(self._panels[0]);
 
   $(".nav-tabs > li > a", self.getElement()).bind("click", function () {
diff --git a/frontend-js/src/main/js/gui/admin/EditUserDialog.js b/frontend-js/src/main/js/gui/admin/EditUserDialog.js
index 7cf9719e85ae2c81b8da50ba758bb3f4b86dd64e..15e9e545586b63e2c297852a9f4cebabadd5d602 100644
--- a/frontend-js/src/main/js/gui/admin/EditUserDialog.js
+++ b/frontend-js/src/main/js/gui/admin/EditUserDialog.js
@@ -13,6 +13,17 @@ var logger = require('../../logger');
 
 var guiUtils = new (require('../leftPanel/GuiUtils'))();
 
+/**
+ *
+ * @param params
+ * @param {HTMLElement} params.element
+ * @param {User} params.user
+ * @param {Configuration} params.configuration
+ * @param {ServerConnector} params.serverConnector
+ *
+ * @constructor
+ * @extends {AbstractGuiElement}
+ */
 function EditUserDialog(params) {
   AbstractGuiElement.call(this, params);
   var self = this;
@@ -27,113 +38,72 @@ function EditUserDialog(params) {
 EditUserDialog.prototype = Object.create(AbstractGuiElement.prototype);
 EditUserDialog.prototype.constructor = EditUserDialog;
 
+/**
+ *
+ * @param {User} user
+ */
 EditUserDialog.prototype.setUser = function (user) {
   this._user = user;
   this.setIsNewUser(user.getLogin() === undefined);
 };
+
+/**
+ *
+ * @returns {User}
+ */
 EditUserDialog.prototype.getUser = function () {
   return this._user;
 };
 
+/**
+ *
+ * @param {boolean} isNewUser
+ */
 EditUserDialog.prototype.setIsNewUser = function (isNewUser) {
   this._isNewUser = isNewUser;
 };
+
+/**
+ *
+ * @returns {boolean}
+ */
 EditUserDialog.prototype.getIsNewUser = function () {
   return this._isNewUser;
 };
 
+/**
+ *
+ */
 EditUserDialog.prototype.createGui = function () {
   var self = this;
-  var element = self.getElement();
-
-  var tabDiv = Functions.createElement({
-    type: "div",
-    name: "tabView",
-    className: "tabbable boxed parentTabs",
-    style: "position:absolute;top:10px;bottom:40px;left:10px;right:10px"
-  });
-  element.appendChild(tabDiv);
-
-  var tabMenuDiv = Functions.createElement({
-    type: "ul",
-    className: "nav nav-tabs"
-  });
-  tabDiv.appendChild(tabMenuDiv);
 
-  var tabContentDiv = Functions.createElement({
-    type: "div",
-    className: "tab-content",
-    style: "height:100%"
-  });
-  tabDiv.appendChild(tabContentDiv);
-
-  self.createGeneralTab(tabMenuDiv, tabContentDiv);
-  self.createPrivilegesTab(tabMenuDiv, tabContentDiv);
-  self.createProjectsTab(tabMenuDiv, tabContentDiv);
-  $("a", tabMenuDiv).bind("click", function () {
-    //workaround for some css issues...
-    tabDiv.style.top = "40px";
-    tabDiv.style.bottom = "10px";
-  });
-};
+  guiUtils.initTabContent(self);
 
-EditUserDialog.prototype.createGeneralTab = function (tabMenuDiv, tabContentDiv) {
-  var self = this;
-  self.addTab({
-    tabMenuDiv: tabMenuDiv,
-    tabContentDiv: tabContentDiv,
+  guiUtils.addTab(self, {
     name: "DETAILS",
     content: self.createGeneralTabContent()
   });
-
-};
-
-var login_counter = 0;
-
-EditUserDialog.prototype.generateTabId = function (tab_name) {
-  var self = this;
-  var login = self.getUser().getLogin();
-  if (login === undefined) {
-    login = "new_user_" + (login_counter++);
-  }
-  return login.replace(".", "_") + tab_name.replace(" ", "_") + "_TAB";
-};
-
-EditUserDialog.prototype.createPrivilegesTab = function (tabMenuDiv, tabContentDiv) {
-  var self = this;
-  self.addTab({
-    tabMenuDiv: tabMenuDiv,
-    tabContentDiv: tabContentDiv,
+  guiUtils.addTab(self, {
     name: "GLOBAL PRIVILEGES",
     content: self.createPrivilegesTabContent()
   });
-
-};
-
-EditUserDialog.prototype.addTab = function (params) {
-  var id = this.generateTabId(params.name);
-
-  var navLi = guiUtils.createTabMenuObject({
-    id: id,
-    name: params.name,
-    navigationBar: params.tabMenuDiv
+  guiUtils.addTab(self, {
+    name: "PROJECT PRIVILEGES",
+    content: self.createProjectsTabContent()
   });
-  params.tabMenuDiv.appendChild(navLi);
 
-  var contentDiv = guiUtils.createTabContentObject({
-    id: id,
-    navigationObject: navLi,
-    navigationBar: params.tabMenuDiv
+  $(".nav-tabs > li > a", self.getElement()).bind("click", function () {
+    //workaround for some css issues...
+    $(".parentTabs", self.getElement()).css("top", "40px");
+    $(".parentTabs", self.getElement()).css("bottom", "10px");
   });
-
-  $(contentDiv).css("overflow","auto");
-  if (params.content !== undefined) {
-    contentDiv.appendChild(params.content);
-  }
-
-  params.tabContentDiv.appendChild(contentDiv);
 };
 
+/**
+ *
+ * @param value
+ * @returns {string}
+ */
 function getStringIfDefined(value) {
   if (value === undefined) {
     return "";
@@ -141,6 +111,10 @@ function getStringIfDefined(value) {
   return xss(value);
 }
 
+/**
+ *
+ * @returns {HTMLElement}
+ */
 EditUserDialog.prototype.createGeneralTabContent = function () {
 
   var self = this;
@@ -192,6 +166,10 @@ EditUserDialog.prototype.createGeneralTabContent = function () {
 
 };
 
+/**
+ *
+ * @returns {HTMLElement}
+ */
 EditUserDialog.prototype.createPrivilegesTabContent = function () {
   var self = this;
   var result = Functions.createElement({
@@ -202,6 +180,11 @@ EditUserDialog.prototype.createPrivilegesTabContent = function () {
   return result;
 };
 
+/**
+ *
+ * @returns {HTMLElement}
+ * @private
+ */
 EditUserDialog.prototype._createPrivilegesTable = function () {
   var result = Functions.createElement({
     type: "div",
@@ -220,16 +203,10 @@ EditUserDialog.prototype._createPrivilegesTable = function () {
 };
 
 
-EditUserDialog.prototype.createProjectsTab = function (tabMenuDiv, tabContentDiv) {
-  var self = this;
-  self.addTab({
-    tabMenuDiv: tabMenuDiv,
-    tabContentDiv: tabContentDiv,
-    name: "PROJECT PRIVILEGES",
-    content: self.createProjectsTabContent()
-  });
-};
-
+/**
+ *
+ * @returns {HTMLElement}
+ */
 EditUserDialog.prototype.createProjectsTabContent = function () {
   var self = this;
   var result = Functions.createElement({
@@ -240,6 +217,11 @@ EditUserDialog.prototype.createProjectsTabContent = function () {
   return result;
 };
 
+/**
+ *
+ * @returns {HTMLElement}
+ * @private
+ */
 EditUserDialog.prototype._createProjectsTable = function () {
   var result = Functions.createElement({
     type: "div",
@@ -262,6 +244,10 @@ EditUserDialog.prototype._createProjectsTable = function () {
   return result;
 };
 
+/**
+ *
+ * @returns {Promise}
+ */
 EditUserDialog.prototype.init = function () {
   var self = this;
 
@@ -295,163 +281,176 @@ EditUserDialog.prototype.init = function () {
 
   dataTable.clear().rows.add(data).draw();
 
-  return self.initProjectsTab().then(function () {
-    return self.refreshProjects();
-  }).then(function () {
+  self.initProjectsTab();
+  return self.refreshProjects().then(function () {
     return self.initPrivilegesTab();
   }).then(function () {
     $(window).trigger('resize');
   });
 };
 
+/**
+ *
+ */
 EditUserDialog.prototype.initProjectsTab = function () {
   var self = this;
 
   var usersTable = $("[name=projectsTable]", self.getElement())[0];
 
-  var configuration;
-  return ServerConnector.getConfiguration().then(function (result) {
-    configuration = result;
-    return self.createUserPrivilegeColumns()
-  }).then(function (columns) {
-    $(usersTable).DataTable({
-      columns: columns
-    });
-    $(usersTable).on("click", "[name='project-privilege-checkbox']", function () {
-      var data = $(this).attr("data").split("-");
-      var privilegeType = data[0];
-      var objectId = data[1];
-      var value = $(this).is(":checked");
-      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, objectId: objectId});
-        }
+  var configuration = self.getConfiguration();
+  var columns = self.createUserPrivilegeColumns();
+  $(usersTable).DataTable({
+    columns: columns
+  });
+  $(usersTable).on("click", "[name='project-privilege-checkbox']", function () {
+    var data = $(this).attr("data").split("-");
+    var privilegeType = data[0];
+    var objectId = data[1];
+    var value = $(this).is(":checked") ? 1 : 0;
+    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, objectId: objectId});
       }
-    });
+    }
+  });
 
-    $("[name='defaultProjectsRow']", self.getElement()).on("click", "[name='project-privilege-checkbox']", function () {
-      var data = $(this).attr("data").split("-");
-      var privilegeType = data[0];
-      var objectId = data[1];
-      var value = $(this).is(":checked");
-      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, objectId: objectId});
-        }
+  $("[name='defaultProjectsRow']", self.getElement()).on("click", "[name='project-privilege-checkbox']", function () {
+    var data = $(this).attr("data").split("-");
+    var privilegeType = data[0];
+    var objectId = data[1];
+    var value = $(this).is(":checked") ? 1 : 0;
+    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, objectId: objectId});
       }
-    });
-
+    }
   });
 };
 
+/**
+ *
+ */
 EditUserDialog.prototype.initPrivilegesTab = function () {
   var self = this;
 
   var usersTable = $("[name=privilegesTable]", self.getElement())[0];
 
-  return ServerConnector.getConfiguration().then(function (configuration) {
-    var columns = [{
-      title: "Name"
-    }, {
-      title: "Value"
-    }];
-    var dataTable = $(usersTable).DataTable({
-      columns: columns
-    });
-    var data = [];
+  var configuration = self.getConfiguration();
+  var columns = [{
+    title: "Name"
+  }, {
+    title: "Value"
+  }];
+  var dataTable = $(usersTable).DataTable({
+    columns: columns
+  });
+  var data = [];
 
+  for (var i = 0; i < configuration.getPrivilegeTypes().length; i++) {
+    var privilege = configuration.getPrivilegeTypes()[i];
+    if (privilege.getObjectType() === null) {
+      if (privilege.getValueType() === "boolean") {
+        var checked = "";
+        if (self.getUser().hasPrivilege(privilege)) {
+          checked = "checked"
+        }
+        data.push([
+          "<span>" + privilege.getCommonName() + "</span>",
+          "<input type='checkbox' name='privilege-checkbox' data='" + privilege.getName() + "' " + checked + " />"
+        ]);
+      } else if (privilege.getValueType() === "int") {
+        data.push([
+          "<span>" + privilege.getCommonName() + "</span>",
+          "<input name='privilege-int' data='" + privilege.getName() + "' value='" + self.getUser().getPrivilegeValue(privilege) + "' />"
+        ]);
+
+      }
+    }
+  }
+  dataTable.clear().rows.add(data).draw();
+  $(usersTable).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.getObjectType() === null) {
-        if (privilege.getValueType() === "boolean") {
-          var checked = "";
-          if (self.getUser().hasPrivilege(privilege)) {
-            checked = "checked"
-          }
-          data.push([
-            "<span>" + privilege.getCommonName() + "</span>",
-            "<input type='checkbox' name='privilege-checkbox' data='" + privilege.getName() + "' " + checked + " />"
-          ]);
-        } else if (privilege.getValueType() === "int") {
-          data.push([
-            "<span>" + privilege.getCommonName() + "</span>",
-            "<input name='privilege-int' data='" + privilege.getName() + "' value='" + self.getUser().getPrivilegeValue(privilege) + "' />"
-          ]);
-
-        }
+      if (privilege.getName() === privilegeType) {
+        var value = $(this).is(":checked") ? 1 : 0;
+        self.getUser().setPrivilege({type: privilege, value: value});
       }
     }
-    dataTable.clear().rows.add(data).draw();
-    $(usersTable).on("click", "[name='privilege-checkbox']", function () {
-      var privilegeType = $(this).attr("data");
+  });
+  $(usersTable).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: $(this).is(":checked")});
+          self.getUser().setPrivilege({type: privilege, value: value});
         }
       }
-    });
-    $(usersTable).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});
-          }
-        }
-      }
-    });
+    }
   });
 };
 
+/**
+ *
+ * @returns {Promise}
+ */
 EditUserDialog.prototype.refreshProjects = function () {
   var self = this;
-  return ServerConnector.getProjects().then(function (projects) {
+  return self.getServerConnector().getProjects().then(function (projects) {
     return self.setProjects(projects);
   });
 };
 
+/**
+ *
+ * @param projects
+ */
 EditUserDialog.prototype.setProjects = function (projects) {
   var self = this;
   self._userByLogin = [];
-  return self.createUserPrivilegeColumns().then(function (columns) {
-    var dataTable = $("[name='projectsTable']", self.getElement()).DataTable();
-    var data = [], i;
-
-    var rowData = self.projectToTableRow(null, columns);
-    var defaultRow = $("[name='defaultProjectsRow']", self.getElement())[0];
-    defaultRow.innerHTML = "";
+  var columns = self.createUserPrivilegeColumns();
+  var dataTable = $("[name='projectsTable']", self.getElement()).DataTable();
+  var data = [], i;
+
+  var rowData = self.projectToTableRow(null, columns);
+  var defaultRow = $("[name='defaultProjectsRow']", self.getElement())[0];
+  defaultRow.innerHTML = "";
+  defaultRow.appendChild(Functions.createElement({
+    type: "span",
+    content: rowData[0],
+    xss: false
+  }));
+  defaultRow.appendChild(Functions.createElement({type: "br"}));
+  for (i = 1; i < columns.length; i++) {
     defaultRow.appendChild(Functions.createElement({
-      type: "span",
-      content: rowData[0],
+      type: "div",
+      content: rowData[i] + columns[i].title,
+      style: "float:left;padding:5px;",
       xss: false
     }));
-    defaultRow.appendChild(Functions.createElement({type: "br"}));
-    for (i = 1; i < columns.length; i++) {
-      defaultRow.appendChild(Functions.createElement({
-        type: "div",
-        content: rowData[i] + columns[i].title,
-        style: "float:left;padding:5px;",
-        xss: false
-      }));
-    }
-    defaultRow.appendChild(Functions.createElement({type: "br"}));
-    defaultRow.appendChild(Functions.createElement({type: "hr"}));
-    // data.push(rowData);
-    for (i = 0; i < projects.length; i++) {
-      var project = projects[i];
-      rowData = self.projectToTableRow(project, columns);
-      data.push(rowData);
-    }
-    dataTable.clear().rows.add(data).draw();
-  });
+  }
+  defaultRow.appendChild(Functions.createElement({type: "br"}));
+  defaultRow.appendChild(Functions.createElement({type: "hr"}));
+  // data.push(rowData);
+  for (i = 0; i < projects.length; i++) {
+    var project = projects[i];
+    rowData = self.projectToTableRow(project, columns);
+    data.push(rowData);
+  }
+  dataTable.clear().rows.add(data).draw();
 };
 
+/**
+ *
+ * @param {Project} project
+ * @param {Array} columns
+ * @returns {Array}
+ */
 EditUserDialog.prototype.projectToTableRow = function (project, columns) {
   var user = this.getUser();
   var row = [];
@@ -477,6 +476,9 @@ EditUserDialog.prototype.projectToTableRow = function (project, columns) {
 };
 
 
+/**
+ *
+ */
 EditUserDialog.prototype.destroy = function () {
   var self = this;
   var div = self.getElement();
@@ -501,6 +503,9 @@ EditUserDialog.prototype.destroy = function () {
   }
 };
 
+/**
+ *
+ */
 EditUserDialog.prototype.open = function () {
   var self = this;
   var div = self.getElement();
@@ -518,6 +523,10 @@ EditUserDialog.prototype.open = function () {
   $(div).dialog("open");
 };
 
+/**
+ *
+ * @returns {Promise}
+ */
 EditUserDialog.prototype.onSaveClicked = function () {
   var self = this;
   var user = self.getUser();
@@ -528,15 +537,19 @@ EditUserDialog.prototype.onSaveClicked = function () {
     user.setName(self.getName());
     user.setSurname(self.getSurname());
     if (self.getIsNewUser()) {
-      return ServerConnector.addUser(user);
+      return self.getServerConnector().addUser(user);
     } else {
-      return ServerConnector.updateUser(user);
+      return self.getServerConnector().updateUser(user);
     }
   }).then(function () {
     return self.callListeners("onSave", user);
   });
 };
 
+/**
+ *
+ * @returns {Promise}
+ */
 EditUserDialog.prototype.checkValidity = function () {
   var self = this;
   var isValid = true;
@@ -545,7 +558,7 @@ EditUserDialog.prototype.checkValidity = function () {
     error += "<li>Password doesn't match</li>";
     isValid = false;
   }
-  if (self.getLogin() === "" || self.getLogin() === undefined || self.getLogin() === null) {
+  if (self.getLogin() === "" || self.getLogin() === undefined) {
     error += "<li>Login must not be empty</li>";
     isValid = false;
   }
@@ -567,63 +580,94 @@ EditUserDialog.prototype.checkValidity = function () {
   });
 };
 
+/**
+ *
+ * @returns {string}
+ */
 EditUserDialog.prototype.getPassword = function () {
   var self = this;
   return $("[name='userPassword']", self.getElement()).val();
 };
+
+/**
+ *
+ * @returns {string}
+ */
 EditUserDialog.prototype.getPassword2 = function () {
   var self = this;
   return $("[name='userPassword2']", self.getElement()).val();
 };
 
+/**
+ *
+ * @returns {string}
+ */
 EditUserDialog.prototype.getLogin = function () {
   var self = this;
   return $("[name='userLogin']", self.getElement()).val();
 };
 
+/**
+ *
+ * @returns {string}
+ */
 EditUserDialog.prototype.getEmail = function () {
   var self = this;
   return $("[name='userEmail']", self.getElement()).val();
 };
+
+/**
+ *
+ * @returns {string}
+ */
 EditUserDialog.prototype.getName = function () {
   var self = this;
   return $("[name='userName']", self.getElement()).val();
 };
+
+/**
+ *
+ * @returns {string}
+ */
 EditUserDialog.prototype.getSurname = function () {
   var self = this;
   return $("[name='userSurname']", self.getElement()).val();
 };
 
-
+/**
+ *
+ */
 EditUserDialog.prototype.close = function () {
   var self = this;
   $(self.getElement()).dialog("close");
 };
 
+/**
+ *
+ * @returns {{title: string, privilegeType: PrivilegeType|undefined}[]}
+ */
 EditUserDialog.prototype.createUserPrivilegeColumns = function () {
   var self = this;
 
   if (self._userPrivilegeColumns !== undefined) {
-    return Promise.resolve(self._userPrivilegeColumns);
+    return self._userPrivilegeColumns;
   }
 
-  return ServerConnector.getConfiguration().then(function (configuration) {
-    self._userPrivilegeColumns = [{
-      title: "ProjectId"
-    }];
-    var privilegeTypes = configuration.getPrivilegeTypes();
-    for (var i = 0; i < privilegeTypes.length; i++) {
-      var type = privilegeTypes[i];
-      if (type.getObjectType() === "Project") {
-        self._userPrivilegeColumns.push({
-          "title": type.getCommonName(),
-          privilegeType: type
-        });
-      }
+  var configuration = self.getConfiguration();
+  self._userPrivilegeColumns = [{
+    title: "ProjectId"
+  }];
+  var privilegeTypes = configuration.getPrivilegeTypes();
+  for (var i = 0; i < privilegeTypes.length; i++) {
+    var type = privilegeTypes[i];
+    if (type.getObjectType() === "Project") {
+      self._userPrivilegeColumns.push({
+        "title": type.getCommonName(),
+        privilegeType: type
+      });
     }
-    return self._userPrivilegeColumns;
-  });
-
+  }
+  return self._userPrivilegeColumns;
 };
 
 
diff --git a/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js b/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
index 2eb25ce86ccf98dcca46ae0316b02f832fd6855b..5332f39c23749f849e7f56e5676dd83552bb6201 100644
--- a/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
@@ -171,7 +171,7 @@ UsersAdminPanel.prototype._createUsersTableRow = function () {
       }
     }).catch(function (error) {
       GuiConnector.alert(error);
-    }).finally(function(){
+    }).finally(function () {
       GuiConnector.hideProcessing();
     });
   });
@@ -220,7 +220,8 @@ UsersAdminPanel.prototype.getDialog = function (user) {
         type: "div"
       }),
       user: user,
-      customMap: null
+      configuration: self.getConfiguration(),
+      serverConnector: self.getServerConnector()
     });
     self._dialogs[user.getLogin()] = dialog;
     if (user.getLogin() === undefined) {
diff --git a/frontend-js/src/main/js/map/data/User.js b/frontend-js/src/main/js/map/data/User.js
index d0befc57c8f7cb0305724f860df026726b8d9d68..c123aa391785d01cdc1b1c03aa17aa22833ddb79 100644
--- a/frontend-js/src/main/js/map/data/User.js
+++ b/frontend-js/src/main/js/map/data/User.js
@@ -251,7 +251,7 @@ User.prototype.hasPrivilege = function (type, objectId) {
 /**
  *
  * @param {Object} params
- * @param {number} params.objectId
+ * @param {number} [params.objectId]
  * @param {PrivilegeType} params.type
  * @param {number} [params.value=1]
  */
diff --git a/frontend-js/src/test/js/gui/admin/EditUserDialog-test.js b/frontend-js/src/test/js/gui/admin/EditUserDialog-test.js
index b6061dcb0ef22b52c02147460307d2dd9fc7b08e..46f2d6f4ce775b9f34214aa575f024aeba637146 100644
--- a/frontend-js/src/test/js/gui/admin/EditUserDialog-test.js
+++ b/frontend-js/src/test/js/gui/admin/EditUserDialog-test.js
@@ -13,6 +13,16 @@ var chai = require('chai');
 var assert = chai.assert;
 var expect = chai.expect;
 
+function createEditUserDialog(project, user) {
+  return new EditUserDialog({
+    element: testDiv,
+    project: project,
+    user: user,
+    configuration: helper.getConfiguration(),
+    serverConnector: ServerConnector
+  });
+}
+
 describe('EditUserDialog', function () {
 
   describe('init', function () {
@@ -22,12 +32,7 @@ describe('EditUserDialog', function () {
       var user = new User({});
       return ServerConnector.getProject().then(function (result) {
         project = result;
-        dialog = new EditUserDialog({
-          element: testDiv,
-          project: project,
-          user: user,
-          customMap: null
-        });
+        dialog = createEditUserDialog(project, user);
         return dialog.init();
       }).then(function () {
         assert.equal(0, logger.getWarnings().length);
@@ -45,12 +50,7 @@ describe('EditUserDialog', function () {
       var user = new User({});
       return ServerConnector.getProject().then(function (result) {
         project = result;
-        dialog = new EditUserDialog({
-          element: testDiv,
-          project: project,
-          user: user,
-          customMap: null
-        });
+        dialog = createEditUserDialog(project, user);
         return dialog.init();
       }).then(function () {
         return dialog.checkValidity().then(function () {
@@ -72,12 +72,7 @@ describe('EditUserDialog', function () {
         return ServerConnector.getProject();
       }).then(function (result) {
         project = result;
-        dialog = new EditUserDialog({
-          element: testDiv,
-          project: project,
-          user: user,
-          customMap: null
-        });
+        dialog = createEditUserDialog(project, user);
         return dialog.init();
       }).then(function () {
         return dialog.checkValidity();
@@ -99,12 +94,7 @@ describe('EditUserDialog', function () {
         return ServerConnector.getProject();
       }).then(function (result) {
         project = result;
-        dialog = new EditUserDialog({
-          element: testDiv,
-          project: project,
-          user: user,
-          customMap: null
-        });
+        dialog = createEditUserDialog(project, user);
         return dialog.init();
       }).then(function () {
         return dialog.onSaveClicked();
@@ -127,12 +117,7 @@ describe('EditUserDialog', function () {
         return ServerConnector.getProject();
       }).then(function (result) {
         project = result;
-        dialog = new EditUserDialog({
-          element: testDiv,
-          project: project,
-          user: user,
-          customMap: null
-        });
+        dialog = createEditUserDialog(project, user);
         return dialog.init();
       }).then(function () {
         return $("[name=privilege-checkbox]", dialog.getElement()).click();
@@ -156,12 +141,7 @@ describe('EditUserDialog', function () {
         return ServerConnector.getProject();
       }).then(function (result) {
         project = result;
-        dialog = new EditUserDialog({
-          element: testDiv,
-          project: project,
-          user: user,
-          customMap: null
-        });
+        dialog = createEditUserDialog(project, user);
         return dialog.init();
       }).then(function () {
         $("[name=privilege-int]", dialog.getElement()).val("101010");