SharePoint: Quick Edit with People Picker field – The user does not exist or is not unique
Update 3/14/23: This issue was fixed for SharePoint 2019 and SPSE in the January 2023 updates. See below for details.
Consider the following scenario:
You have a SharePoint Server 2013, 2016, 2019, or Subscription Edition (SPSE) web application that has both Windows and Trusted Provider / SAML authentication (ADFS, etc) enabled.
You have a list with a “Person or Group”-type (aka: “people picker”) column in it.
You edit the list using the “Quick Edit” / “edit this list” functionality to edit the list in a datasheet-style view.
You search for a user account in the Person or Group column and it resolves correctly:
You hit enter to go to the next row and you get an error on the first row that says: “The user does not exist or is not unique”.
This seems very odd since you just, seconds before, successfully resolved that to a single user account.
Note: This may only occur for users not already added to the site collection. More on that later…
So why does this happen?
When you hit enter to go to the next row, the “Quick Edit” control tries to update the list item. It must re-resolve the user that you entered into the People Picker column.
It does so using the users email address. It calls into all available claims providers including Active Directory and your Trusted Provider, which both return results.
That’s why we get the “The user does not exist or is not unique” error. We did not get a single unique result.
Solutions:
Update: It has come to my attention that this issue has been fixed in the January 2023 Public Update for SharePoint Server 2019 and SharePoint Subscription Edition (SPSE). For example, see the SPSE January KB article: Description of the security update for SharePoint Server Subscription Edition: January 10, 2023 (KB5002331)
“Fixes an issue in which the Quick Edit button doesn’t work for the Person or Group column if there are multiple authentication providers.”
The SharePoint 2019 January 2023 update KB lists the same fix.
So if you have SharePoint 2019 or SPSE, just patch to the January 2023 updates (or a later build, the updates are cumulative) to resolve this issue.
Workaround:
If you can’t patch right now, or are running SharePoint 2016, consider this:
It only occurs when there are multiple authentication providers enabled on the web application, and only when using the “Quick Edit” control, so if you avoid either of those, you won’t see the problem. That’s more like “problem avoidance” than a “solution”, but I do have a workaround.
For the user account that fails to resolve, add them to any SharePoint group or “person or group”-type list column in the site. It doesn’t have to be the same list, you can add them anywhere in the entire site collection, and then “Quick Edit” should be able to properly resolve them.
Here I’m just using the normal new item form to add my “Test 1” user to my list.
Not only does that work to add the user to the “person or group” column, after doing so, I’m also able to successfully add the same user using “Quick Edit”:
Why this works: When the user already exists in the site collection, the “Quick Edit” control still re-resolves the user and gets multiple matches, but it then uses those results to match to the User Information List for the site collection and resolve it to a single unique user account. So all you have to do is use the normal (non-quick edit) new item or edit item forms to add the user to any person or group column. After doing that once, you then should be able to add that same user using the “Quick Edit” view on the same list or any other list in the site collection.
Technical details:
Note: While I’ve seen this happen in both SharePoint 2013 and 2016, all my testing was done on SharePoint 2016 at build 16.0.4639.1002.
In your SharePoint ULS logs, you’ll see something like this:
08/14/2018 09:28:46.95 w3wp.exe (0x18E8) 0x2E70 SharePoint Foundation Resolve ax7nk Medium Found multiple matches for resolution. Web: ‘d21a207d-0726-4779-8e8d-c0cb97011805’, WebApp: ‘null’, Input: ‘test1@contoso.com’, PrincipalType: ‘User, SecurityGroup, SharePointGroup’, PrincipalSource: ‘UserInfoList, MembershipProvider, RoleProvider’, MatchCount: ‘3’. 3ab0849e-e089-e088-a10e-e4e9a4c5effc
08/14/2018 09:28:46.95 w3wp.exe (0x18E8) 0x2E70 SharePoint Foundation General 8kh7 High The user does not exist or is not unique. 3ab0849e-e089-e088-a10e-e4e9a4c5effc
08/14/2018 09:28:46.95 w3wp.exe (0x18E8) 0x2E70 SharePoint Foundation General art2g High ListItemUpdate ExpectedFailure: Microsoft.SharePoint.SPException: The user does not exist or is not unique. —> System.Runtime.InteropServices.COMException: The user does not exist or is not unique. at Microsoft.SharePoint.Library.SPRequestInternalClass.AddOrUpdateItem(String bstrUrl, String bstrListName, Boolean bAdd, Boolean bSystemUpdate, Boolean bPreserveItemVersion, Boolean bPreserveItemUIVersion, Boolean bUpdateNoVersion, Int32& plID, String& pbstrGuid, Guid pbstrNewDocId, Boolean bHasNewDocId, String bstrVersion, Object& pvarAttachmentNames, Object& pvarAttachmentContents, Object& pvarProperties, Boolean bCheckOut, Boolean bCheckin, Boolean bUnRestrictedUpdateInProgress, Boolean bMigration, Boolean bPublish, String bstrFileName, ISP2DSafeArrayWriter pListDataValidationCallback, ISP2DSafeArrayWriter pRestrictInsertCallback, ISP2DSafeArrayWriter pUniqueFieldCallback) at Microsoft.SharePoint.Library.SPRequest.AddOrUpdateItem(String bstrUrl, String bstrListName, Boolean bAdd, Boolean bSystemUpdate, Boolean bPreserveItemVersion, Boolean bPreserveItemUIVersion, Boolean bUpdateNoVersion, Int32& plID, String& pbstrGuid, Guid pbstrNewDocId, Boolean bHasNewDocId, String bstrVersion, Object& pvarAttachmentNames, Object& pvarAttachmentContents, Object& pvarProperties, Boolean bCheckOut, Boolean bCheckin, Boolean bUnRestrictedUpdateInProgress, Boolean bMigration, Boolean bPublish, String bstrFileName, ISP2DSafeArrayWriter pListDataValidationCallback, ISP2DSafeArrayWriter pRestrictInsertCallback, ISP2DSafeArrayWriter pUniqueFieldCallback) — End of inner exception stack trace — at Microsoft.SharePoint.SPGlobal.HandleComException(COMException comEx) at Microsoft.SharePoint.Library.SPRequest.AddOrUpdateItem(String bstrUrl, String bstrListName, Boolean bAdd, Boolean bSystemUpdate, Boolean bPreserveItemVersion, Boolean bPreserveItemUIVersion, Boolean bUpdateNoVersion, Int32& plID, String& pbstrGuid, Guid pbstrNewDocId, Boolean bHasNewDocId, String bstrVersion, Object& pvarAttachmentNames, Object& pvarAttachmentContents, Object& pvarProperties, Boolean bCheckOut, Boolean bCheckin, Boolean bUnRestrictedUpdateInProgress, Boolean bMigration, Boolean bPublish, String bstrFileName, ISP2DSafeArrayWriter pListDataValidationCallback, ISP2DSafeArrayWriter pRestrictInsertCallback, ISP2DSafeArrayWriter pUniqueFieldCallback) at Microsoft.SharePoint.SPListItem.AddOrUpdateItem(Boolean bAdd, Boolean bSystem, Boolean bPreserveItemVersion, Boolean bNoVersion, Boolean bMigration, Boolean bPublish, Boolean bCheckOut, Boolean bCheckin, Guid newGuidOnAdd, Int32& ulID, Object& objAttachmentNames, Object& objAttachmentContents, Boolean suppressAfterEvents, String filename, Boolean bPreserveItemUIVersion) at Microsoft.SharePoint.SPListItem.UpdateInternal(Boolean bSystem, Boolean bPreserveItemVersion, Guid newGuidOnAdd, Boolean bMigration, Boolean bPublish, Boolean bNoVersion, Boolean bCheckOut, Boolean bCheckin, Boolean suppressAfterEvents, String filename, Boolean bPreserveItemUIVersion) 3ab0849e-e089-e088-a10e-e4e9a4c5effc