SharePoint · SharePoint 2013

SharePoint 2013 – Managed Properties for User fields


<h1> My Problem</h1> I created a user field CVOwner on my document library (as a site collection column). Then I wanted this to be displayed in my search results web part. I updated my display template but the field didn’t want to appear. Time to look into how this all works. When SharePoint crawls the content which uses the CV Owner field a managed properties are created:

  • OLCVOwnerOWSUSER

Also there are two Crawled Properties:

  • ows_q_USER_OL_CVOwner
  • ows_OL_CVOwner

So what are these two Crawled properties? Is one not enough?

Some attempts to your solution

First I added a refinement panel showing my OLCVOwnerOWSUSER (I had to update the managed property to include the refinement option first) hmm, the data is appearing fine. But not in the refinement settings preview though. This could be a clue. This preview screen uses a display template itself. Maybe display templates can’t handle user objects… No that can’t be it. If the refinement panel can display the data then so can any other display template. I must be missing something. So in the DisplayTemplates Folder I looked in the Filters folder. There is a Control_Refinement display template and then a lot of Filter_* display templates, Ok, I’m using the filter_multivalue.html. This display template is able to display the user fields.

Your Solution

Then I looked at my web part properties.

<property name=”SelectedPropertiesJson” type=”string”>[“Title”,”AboutMe”,”AccountName”,”BaseOfficeLocation”,”Department”,”HitHighlightedProperties”,”Interests”,”LastModifiedTime”,”Memberships”,”PastProjects”,”Path”,”PreferredName”,”Responsibilities”,”Schools”,”ServiceApplicationID”,”SipAddress”,”Skills”,”UserProfile_GUID”,”WorkEmail”,”WorkId”,”FirstName”,”LastName”,”Office”,”WorkPhone”,”JobTitle”,”MobilePhone”,”PictureURL”,”Email”,”Floor”,”MapReference”,”Fax”,”Extension”,”CV”,”DisplayAuthor\n\t\t\t”]</property>

Adding my CVOwner field made the property available:

<property name=”SelectedPropertiesJson” type=”string”>[“OLCVOwnerOWSUSER”,”Title”,”AboutMe”,”AccountName”,”BaseOfficeLocation”,”Department”,”HitHighlightedProperties”,”Interests”,”LastModifiedTime”,”Memberships”,”PastProjects”,”Path”,”PreferredName”,”Responsibilities”,”Schools”,”ServiceApplicationID”,”SipAddress”,”Skills”,”UserProfile_GUID”,”WorkEmail”,”WorkId”,”FirstName”,”LastName”,”Office”,”WorkPhone”,”JobTitle”,”MobilePhone”,”PictureURL”,”Email”,”Floor”,”MapReference”,”Fax”,”Extension”,”CV”,”DisplayAuthor\n\t\t\t”]</property>

So now I’m getting some results:

The following is now displayed:

| Pieter Veenstra | 693A30232E777C6D796465765C7069657465722E7665656E73747261 i:0#.w|mydev\pieter.veenstra;Pieter Veenstra

Ok, these are indeed user details but not really what I want.

So I created a new mapping CVOwner and mapped this to the ows_OL_CVOwner crawled Property.

Now I’m getting my display name back.

Advertisements

Please leave a comment or feedback

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s