diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php
index 901299e7c219eeccaf0b9717f12b1eafd860a62a..05249b8f16380f0583ed2e62e31199fc40c46046 100644
--- a/apps/user_ldap/lib/access.php
+++ b/apps/user_ldap/lib/access.php
@@ -624,7 +624,8 @@ abstract class Access {
 	 * @brief executes an LDAP search
 	 * @param $filter the LDAP filter for the search
 	 * @param $base an array containing the LDAP subtree(s) that shall be searched
-	 * @param $attr optional, when a certain attribute shall be filtered out
+	 * @param $attr optional, array, one or more attributes that shall be
+	 * retrieved. Results will according to the order in the array.
 	 * @returns array with the search result
 	 *
 	 * Executes an LDAP search
@@ -656,6 +657,14 @@ abstract class Access {
 			\OCP\Util::writeLog('user_ldap', 'Attempt for Paging?  '.print_r($pagedSearchOK, true), \OCP\Util::ERROR);
 			return array();
 		}
+
+		// Do the server-side sorting
+		foreach(array_reverse($attr) as $sortAttr){
+			foreach($sr as $searchResource) {
+				ldap_sort($link_resource, $searchResource, $sortAttr);
+			}
+		}
+
 		$findings = array();
 		foreach($sr as $key => $res) {
 		    $findings = array_merge($findings, ldap_get_entries($link_resource, $res ));
diff --git a/lib/user.php b/lib/user.php
index f84aa8fad83686efe308ef4c011cea7af6ea8c31..6144f0f6bf9851a0ae7daeb3576a77a0b90032c8 100644
--- a/lib/user.php
+++ b/lib/user.php
@@ -530,7 +530,7 @@ class OC_User {
 				$displayNames = array_merge($displayNames, $backendDisplayNames);
 			}
 		}
-		ksort($displayNames);
+		asort($displayNames);
 		return $displayNames;
 	}
 
diff --git a/settings/js/users.js b/settings/js/users.js
index 452bdf5f838392b6fd527d32e8fb3a7a9fc8f930..2c27c6d7666203c94b6a4db9c21cdb80461844e1 100644
--- a/settings/js/users.js
+++ b/settings/js/users.js
@@ -116,9 +116,9 @@ var UserList = {
 		}
 		var added = false;
 		if (sort) {
-			username = username.toLowerCase();
+			displayname = displayname.toLowerCase();
 			$('tbody tr').each(function () {
-				if (username < $(this).attr('data-uid').toLowerCase()) {
+				if (displayname < $(this).attr('data-uid').toLowerCase()) {
 					$(tr).insertBefore($(this));
 					added = true;
 					return false;