diff --git a/apps/user_ldap/group_ldap.php b/apps/user_ldap/group_ldap.php
index 4fd4c636913cffa5ca04eca62d87e4d40ef88cf6..efa5f8b4fe32d9f99eedc2c7231ce35661077568 100644
--- a/apps/user_ldap/group_ldap.php
+++ b/apps/user_ldap/group_ldap.php
@@ -209,6 +209,19 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface {
 		return $groupUsers;
 	}
 
+	/**
+	 * @brief get a list of all display names in a group
+	 * @returns array with display names (value) and user ids(key)
+	 */
+	public function displayNamesInGroup($gid, $search, $limit, $offset) {
+		$users = $this->usersInGroup($gid, $search, $limit, $offset);
+		$displayNames = array();
+		foreach($users as $user) {
+			$displayNames[$user] = \OC_User::getDisplayName($user);
+		}
+		return $displayNames;
+	}
+
 	/**
 	 * @brief get a list of all groups
 	 * @returns array with group names
@@ -287,8 +300,6 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface {
 	* compared with OC_USER_BACKEND_CREATE_USER etc.
 	*/
 	public function implementsActions($actions) {
-		//always returns false, because possible actions are modifying
-		// actions. We do not write to LDAP, at least for now.
-		return false;
+		return (bool)(OC_GROUP_BACKEND_GET_DISPLAYNAME	& $actions);
 	}
 }
diff --git a/apps/user_ldap/group_proxy.php b/apps/user_ldap/group_proxy.php
index 5aa1aef0e0eb128608900370555b787b14a8173c..68d2efe38718dd00d1ed9bc8a4610c833f765e50 100644
--- a/apps/user_ldap/group_proxy.php
+++ b/apps/user_ldap/group_proxy.php
@@ -135,6 +135,22 @@ class Group_Proxy extends lib\Proxy implements \OCP\GroupInterface {
 		return $users;
 	}
 
+	/**
+	 * @brief get a list of all display names in a group
+	 * @returns array with display names (value) and user ids(key)
+	 */
+	public function displayNamesInGroup($gid, $search, $limit, $offset) {
+		$displayNames = array();
+
+		foreach($this->backends as $backend) {
+			$backendUsers = $backend->displayNamesInGroup($gid, $search, $limit, $offset);
+			if (is_array($backendUsers)) {
+				$displayNames = array_merge($displayNames, $backendUsers);
+			}
+		}
+		return $displayNames;
+	}
+
 	/**
 	 * @brief get a list of all groups
 	 * @returns array with group names
diff --git a/lib/group.php b/lib/group.php
index 88f0a2a032ccb60f98aa0980275459db538c1b03..d1a830730b755a18398e0c052281bad2482730b6 100644
--- a/lib/group.php
+++ b/lib/group.php
@@ -294,7 +294,13 @@ class OC_Group {
 	public static function displayNamesInGroup($gid, $search = '', $limit = -1, $offset = 0) {
 		$displayNames=array();
 		foreach(self::$_usedBackends as $backend) {
-			$displayNames = array_merge($backend->displayNamesInGroup($gid, $search, $limit, $offset), $displayNames);
+			if($backend->implementsActions(OC_GROUP_BACKEND_GET_DISPLAYNAME)) {
+				$displayNames = array_merge($backend->displayNamesInGroup($gid, $search, $limit, $offset), $displayNames);
+			} else {
+				$users = $backend->usersInGroup($gid, $search, $limit, $offset);
+				$names = array_combine($users, $users);
+				$displayNames = array_merge($names, $displayNames);
+			}
 		}
 		return $displayNames;
 	}
diff --git a/lib/group/backend.php b/lib/group/backend.php
index 26a784efb28bf2551e0c64d840bd4facbf48b820..2e17b5d0b7f9f805b7e5d47572e21d558286f7a0 100644
--- a/lib/group/backend.php
+++ b/lib/group/backend.php
@@ -33,6 +33,7 @@ define('OC_GROUP_BACKEND_CREATE_GROUP',      0x00000001);
 define('OC_GROUP_BACKEND_DELETE_GROUP',      0x00000010);
 define('OC_GROUP_BACKEND_ADD_TO_GROUP',      0x00000100);
 define('OC_GROUP_BACKEND_REMOVE_FROM_GOUP',  0x00001000);
+define('OC_GROUP_BACKEND_GET_DISPLAYNAME',   0x00010000);
 
 /**
  * Abstract base class for user management
@@ -43,6 +44,7 @@ abstract class OC_Group_Backend implements OC_Group_Interface {
 		OC_GROUP_BACKEND_DELETE_GROUP => 'deleteGroup',
 		OC_GROUP_BACKEND_ADD_TO_GROUP => 'addToGroup',
 		OC_GROUP_BACKEND_REMOVE_FROM_GOUP => 'removeFromGroup',
+		OC_GROUP_BACKEND_GET_DISPLAYNAME => 'displayNamesInGroup',
 	);
 
 	/**