Following on from the four part series Extend SharePoint 2013 People Search Using Business Connectivity Services I had a requirement to update multi-value user properties using BCS. If you haven’t read the posts in the series I highly recommend that you do as I’m only going to cover the changes I had to make in order to import multi-value properties.
For this example I’ve added a column to my SQL Server table called Speciality and updated the stored procedure to return the values in this column.
In the screen shot above I’ve added three specialties for myself, SharePoint, Hyper-V and SQL Server. This has created multiple rows, an additional row for each specialty each with the same email address. The email address is important as this will be used by a filter within the external content type to return multiple values for each user.
Next, in SharePoint Designer open the external content type that references the stored procedure and click on Operations Design View in the ribbon.
In Data Source Explorer find the stored procedure under Routines, right click on it and choose New Read List Operation.
Click Next and on the Input Parameters screen click to add a Filter. Create the filter, in my case on the email field and click Ok.
On the Return Parameter screen click on Email, then tick Map to Identifier. Finish the wizard and save changes to your external content type.
From Central Administration open your User Profile Synchronization Service and click on Configure Synchronization Connections.
Use the drop down to edit your external content type connection. You can now choose a 1:many mapping, filter using the email filter against the WorkEmail user profile property.
To create a multi-value user open the User Profile Synchronization Service and click on Mange User Properties.
Click on New Property, select the property type as string (Multi Value) and choose the multi value separator you’d like to use.
Map the new property to the correct attribute from your BCS data connection and click Ok.
Run a full profile synchronization, then click on Manage User Profiles to search for a user and check the properties have been populated.