diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php
index 042076fe62e881917a5cb0989e835531594f8f2c..00183ac181b3761a703ec301e60a9bf0ebdd8f68 100644
--- a/apps/user_ldap/lib/access.php
+++ b/apps/user_ldap/lib/access.php
@@ -288,8 +288,8 @@ abstract class Access {
 		}
 		$ldapname = $this->sanitizeUsername($ldapname);
 
-		//a new user/group! Then let's try to add it. We're shooting into the blue with the user/group name, assuming that in most cases there will not be a conflict. Otherwise an error will occur and we will continue with our second shot.
-		if(($isUser && !\OCP\User::userExists($ldapname)) || (!$isUser && !\OC_Group::groupExists($ldapname))) {
+		//a new user/group! Add it only if it doesn't conflict with other backend's users or existing groups
+		if(($isUser && !\OCP\User::userExists($ldapname, 'OCA\\user_ldap\\USER_LDAP')) || (!$isUser && !\OC_Group::groupExists($ldapname))) {
 			if($this->mapComponent($dn, $ldapname, $isUser)) {
 				return $ldapname;
 			}
@@ -881,4 +881,4 @@ abstract class Access {
 		return $pagedSearchOK;
 	}
 
-}
\ No newline at end of file
+}
diff --git a/lib/public/user.php b/lib/public/user.php
index b320ce8ea0c4ba21465675c83c20a50341d814e1..9e50115ab7053e7a4eb13d9615ad9296b5665761 100644
--- a/lib/public/user.php
+++ b/lib/public/user.php
@@ -65,12 +65,12 @@ class User {
 	/**
 	 * @brief check if a user exists
 	 * @param string $uid the username
+	 * @param string $excludingBackend (default none) 
 	 * @return boolean
 	 */
-	public static function userExists( $uid ) {
-		return \OC_USER::userExists( $uid );
+	public static function userExists( $uid, $excludingBackend = null ) {
+		return \OC_USER::userExists( $uid, $excludingBackend );
 	}
-
 	/**
 	 * @brief Loggs the user out including all the session data
 	 * @returns true
diff --git a/lib/user.php b/lib/user.php
index 94ea899b8418041914e6df6f4f855b2a8a366738..80f88ca7052da3e46dc98ac60da179a7680399ac 100644
--- a/lib/user.php
+++ b/lib/user.php
@@ -414,10 +414,15 @@ class OC_User {
 	/**
 	 * @brief check if a user exists
 	 * @param string $uid the username
+	 * @param string $excludingBackend (default none)
 	 * @return boolean
 	 */
-	public static function userExists($uid) {
+	public static function userExists($uid, $excludingBackend=null) {
 		foreach(self::$_usedBackends as $backend) {
+			if (!is_null($excludingBackend) && !strcmp(get_class($backend),$excludingBackend)) {
+			    OC_Log::write('OC_User', $excludingBackend . 'excluded from user existance check.', OC_Log::DEBUG);
+			    continue;
+			}
 			$result=$backend->userExists($uid);
 			if($result===true) {
 				return true;