Missing user profile picture after updating
mysite host URL in SharePoint 2013
29 April 2015
Recently I had to change mysite host URL in one of our environment. After I update my site hots URL and ran full user profile sync. Everything was working fine until I noticed that user images are not appearing inside user profiles.
I have started looking into the issue and done the following steps to figure out the problem
I have checked the user profile “Picture” property to make sure that It is mapped to “PhotoThumbnail” property of active directory
Then I have checked that the Farm account have permissions on User profiles
Using the farm account I have ran the photo import command again
Update-SPProfilePhotoStore –MySiteHostLocation http://mysiteHostUrl –CreateThumbnailsForImportedPhotos $true
With help of miisclient.exe I have confirmend that the picture property is pull the binary information from active directory.
I then went to my profile and right click on the “PictureURL” and selected “Properties” option which open up the “Properties” popup window. Suddenly I realised that the URL of my user profile picture is still pointing to the old my site.
have copied the above picture URL in the browser, updated the “mysite” host URL to new one and hit enter. I was managed to see my profile picture as below.
At last I managed to find the issue. Now it’s time to fix it. So I wrote below PowerShell command to update all user profile picture properties URL.
$mySiteNewHostURL = “http://NewMySiteHostURL”
$mySiteOldHostURL = “http://OldMySiteHostURL”
$mySite = Get-SPSite $mySiteNewHostUrl
$SPServiceContext = Get-SPServiceContext $mySite
$userProfileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($SPServiceContext)
$userProfiles = $userProfileManager.GetEnumerator ( )
foreach ($userProfile in $userProfiles)
{
#check if the picture property contain image URL, then replace it with new my site host URL
if ($userProfile[“PictureURL”] -ne ”)
{
$oldImageUrl = $userProfile[“PictureURL”].toString ( )
$newImageUrl = $oldImageUrl -Replace $mySiteOldHostURL, $mySiteNewHostURL
write-host “Old Image Link = ” $oldImageUrl ” –> New Image Link = ” $newImageUrl
$userProfile[“PictureURL”].Value = $newImageUrl $userProfile.Commit ( )
}
}
After I ran above PowerShell script, I was able to see picture inside my user profile as below. Happy coding