This post was most recently updated on January 5th, 2019.Reading Time: 3 minutes.
This article applies to a lot of different issues you might be having with your SharePoint-powered site, or even custom functionality like mobile apps using SharePoint’s search index.
I’ll list a few of the situations, which could be caused by these issues, below:
- You’re using Search to show a list of User Profiles with their properties, but it’s showing outdated or missing information
- Your intranet has the classic “Upcoming Birthdays” -webpart (only weather and lunch lists are more classic than that!) This webpart is not showing some of the organization members at all.
- The aforementioned webpart might also show nobody at all.
- You’re searching users on SharePoint’s People Search based on their profile properties, but aren’t getting results, or you get outdated results.
- You have built a mobile application, that shows user profiles based on the information in SharePoint Search index, but this application works errorenously for at least some users.
Reason for the issue
These issues are most of the time caused by an odd glitch in SharePoint’s search indexing. Every now and then, crawler might start ignoring certain properties from certain user profiles.
This is kind of a well-known issue, even though you can’t really know what went wrong. I don’t think anyone really knows, save for a few engineers working for Microsoft :)
Luckily, it’s also reasonably easy to fix!
How to fix this?
If you’re on-premises, you might want to check that your indexing component is running, your application servers are not out of memory, your index freshness is good and that there aren’t any errors in general.
You can always start a full crawl for your People Results result source. If that doesn’t help, check out the next steps, as even though they are for SharePoint Online, the basic concept sometimes helps on-premises, too. Just replace “RefinableDate” with whatever Managed Property you want to use, and be sure to configure them on the farm level!
In SharePoint Online, there aren’t that many things you can do. Setting crawl schedule, running a full crawl – all of that is out of your hands! And that’s often a good thing, because dealing with some of the search issues that SharePoint Server might have, are quite frankly sometimes very painful.
Let’s presume that you’re using any functionality which shows users’ birthdays. To this end, you’ve configured a mapping between the People:SPS-Birthday property to any RefinableDate -property. However, this is not quite working. How to fix this?
For that scenario, the steps are below.
- Remove the alias from the RefinableDate you’re using.
- Remove the mapping between the People:SPS-Birthday & the RefinableDate.
- Change the mapping to another RefinableDate.
- Add the alias to that RefinableDate.
- Temporarily create a new User Profile Property (call it “TempProp” or something similar).
- Add a value to that field for any user (nothing vulgar, thank you very much!)
- After SharePoint Search indexing has run (I’d guess after a few hours, but the next day at the latest), remove the value from the property.
- Then remove the property.
At this point, everything should work. The remapping should fix any hangups that might exist between populating the values to your managed properties, and the creation of a new (temporary) property should trigger a reindex of the user profiles.
Alternatively, you can use Mikael Svenson’s scripts for reindexing user profiles – most of the time, the end result should be the same: https://github.com/wobba/SPO-Trigger-Reindex
He's been a developer from 2004 (starting with PHP and Java), and he's been bending and twisting SharePoint into different shapes since MOSS. Nowadays he's not only working on SharePoint, but also on .NET projects, Azure, Office 365 and a lot of other stuff.
This is his personal professional (e.g. professional, but definitely personal) blog.