Operation is not valid due to the current state of the object
Profile Synchronisation
Yesterday I had an issue reconfiguring the User Profiles Service Application. My customer used SharePoint Active Directory Import and we needed to switch this to SharePoint Profile Synchronisation.
Why? We wanted to import photos stored in AD into the SharePoint User Profiles using PowerShell. And the
[code lang=text]
Update-SPProfilePhotoStore -CreateThumbnailsForImportedPhotos 1 -MySiteHostLocation https:/ /mysite
[/code]
is only supported with profile synchronisation.
First of all I got these messages when I switched the synchronisation type. Every minute a number of these appeared.
PartitionPropertiesCache.RefreshPartitionProperties: Encountered error: System.InvalidOperationException: Operation is not valid due to the current state of the object. ;at
Microsoft.Office.Server.Administration.UserProfileApplication.PartitionPropertiesCache.get_SqlSession() ;at Microsoft.Office.Server.Administration.UserProfileApplication.PartitionPropertiesCache.RefreshPartitionProperties()
I looked at:
- FIM certificates
- Try to run the sync on a different server
- Checked the account used in the services console?
- Checked for stuck timer jobs?
- Recreated the user profile service (many times)
None of this worked.
Then I found some additional errors:
User Profile Application: SynchronizeMIIS encounters an exception: System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.Office.Server.UserProfiles.UserProfileImportJob.<>c__DisplayClass2.b__1()
at Microsoft.SharePoint.SPSecurity.<>c__DisplayClass5.b__3()
at Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)
at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode, Object param)
at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated secureCode)
at Microsoft.Office.Server.UserProfiles.UserProfileImportJob.IsTimerJobRunning(UserProfileApplicationJob timerJob)
at Microsoft.Office.Server.Administration.UserProfileApplication.SynchronizeMIIS()
at Microsoft.Office.Server.Administration.ILMProfileSynchronizationJob.Execute()
Also of the two services involved I found that the Synchronisation Service was stuck in starting
User Profile Service Started Stop
User Profile Synchronization Service Starting
Your solution
Then I started to play around with some PowerShell.
Add-PSSnapin “Microsoft.SharePoint.PowerShell”
Get-SPServiceInstance | where {$_.TypeName -like “User*”}
This usually returns:
TypeName Status Id
——– —— —
User Profile Synchronization … Online e2212408-5988-439f-9784-db085650e9ac
User Profile Service Online c0b2cca4-f440-43f6-8018-d32b0547eb31
In my case I found that I got 4 services returned.
So for all for services I ran :
Stop-SPServiceInstance <Guid>
Then I started the User Profile Service (in my case both instances)
Start-SPServiceInstance <Guid>
Then I started one of the synchronisation services and all started to work.
Conslusion there must have been a left over user profile service causing problems.