The way My Sites are created in SharePoint 2013 is vastly different from SharePoint 2010, but for good reason. I won’t go into the details of how it’s changed, as Wictor Wilen has done an excellent job of this already in his blog post SharePoint 2013: Personal Site Instantiation Queues and Bad Throughput. I encountered problems with a new development workstation not setting up My Sites for users appropriately - blocking us from testing our solution, which was dependent upon a user having a My Site. In looking online (and in Wictor’s blog post), everything was pointing to checking the following three timer jobs:
- My Site Instantiation Interactive Request Queue
- My Site Instantiation Non-Interactive Request Queue
- My Site Second Instantiation Interactive Request Queue
The problem is, those timer jobs were missing from my server! I checked for the timer jobs first through Central Administration, and then subsequently thru PowerShell. The following are the results I found:
Get-SPTimerJob | sort Name | ft Name
I decided to check for the My Site timer jobs on a know working SharePoint 2013 farm. Sure enough, they were there:
I wanted to look for a way to re-register timer jobs. There should be no reason for me to do something drastic like uninstall/reinstall the User Profile Service just to get the timer job re-registered. This timer job, as expected, was in the
So, I cracked open dotPeek and decided to hunt for that timer job definition and find who was using it. It turns out, there’s a web application-level feature (
MySiteInstantiationQueuesFeatureReceiver) which registers these timer jobs:
There is a public static method inside that feature receiver used for registering the timer jobs.
So, I had one of two options: invoke the static method directly, or simply toggle the feature. I opted to toggle the feature:
$feat = Get-SPFeature 65B53AAF-4754-46D7-BB5B-7ED4CF5564E1 Disable-SPFeature $feat -Url http://webapp Enable-SPFeature $feat -Url http://webapp
Finally, I double checked and verified the timer jobs were now present!
I then went to the My Site host URL and got into the queue for provisioning. Within 5 minutes, my personal my site was provisioned!