For nearly 20 years, the SharePoint User Profile Service was the home for Profile photos in SharePoint. Even as we moved to the cloud the process for updating photos remained the same. You essentially had 3 options:
Native Synchronization with Entra ID (fka. Azure Active Directory) via the Azure AD Connect Sync process.
The native sync process would push the binary photo stored from the thumbnailPhoto field of Active Directory into the cloud. This photo would make its way to Exchange and then eventually land in SharePoint. This image sync process happens once a day and is known to have its issues. Certain variables/flags on the profile could prevent the image from ever showing up in SharePoint at all. There are Delve flags and other triggers that make this process very cumbersome for many SharePoint Online Customers.
Manually Update the User’s Photo
Using your Profile Service Administration page in the SharePoint Online Admin center, you can update a user’s photo by manually uploading the desired image. By doing this, you are essentially breaking the chain-of-custody of the user’s image. In many cases, this created a disparity between SharePoint Online and the rest of the M365 ecosystem. Take our CEO Ted as an example, we used the manual process to update his image in our demo tenant and now we have two Teds!!
SharePoint REST API
People are the cornerstone of any collaboration platform so having high-quality images is very important and we spend a great deal of time with each of our customers getting this right. Using the API, our standard approach was to upload a high-resolution image to a library in SharePoint and then use the API to reference that image by updating the PictureUrl property. The key to this approach is that the image must live within SharePoint in order for the service to fetch the image.
One of the nice features of the SharePoint Profile service is that each image undergoes some post-processing that generates 3 thumbnails of the user’s image. (Small, Medium, Large) These images are stored within something called the My Site host. Something we no longer even think about, but was an every day component of SharePoint Admins in the past.
Today, we can reference any of these images by using the following URL.
The link above is pointing at the root site collection, but the URL can also be used from any site by adding the /_layouts/15…. portion to the end of any SharePoint Site Collection URL.
New Guidance from Microsoft
Microsoft will no longer allow manual image updates from the SharePoint Online admin center. Instead, you are required to update their image globally via the M365 Admin Center. This new guidance creates a centralized process for updating images that will hopefully clear up some of the old issues of the past.
If you have a process today that is updating the SharePoint profile service directory, you should start planning for a way to replace this functionality. You can read more here for different ways you can update the users profile photo. As expected, mass updates via REST API or PowerShell will need to performed against the Microsoft Graph.
Here at Infodash, we have already begun the transition from the SharePoint API to the office graph. In our testing, we have noticed that it still takes about 24 hours for this image to appear in SharePoint. Generally, that is not a big issue as 99% of our customers sync their employee data once a day and images rarely change.
Having trouble with profile photos? Use this diagnostic tool to narrow down the root cause.