The SharePoint Administration Service and SPAdministrationServiceJobDefinition
The Timer Service Recycle, Password Management, and Application Server Administration Service recurring timer jobs all derive from the SPAdministrationServiceJobDefinition class. We'll begin here by presenting and discussing this special timer job class and the SharePoint 2010 Administration Windows service with which it interacts. Then we will discuss these jobs in detail.
SharePoint 2010 Administration Service
The SharePoint 2010 Administration Service is a Windows service installed by SharePoint. The service's name is SPAdminV4 and its primary executable is WSSADMIN.EXE in the 14\BIN directory. The task of the SharePoint Administration service is remarkably simple: it handles a specific subset of operations (exposed as methods of the SPAdministrationOperation object) which require local administrator rights on a server. The Timer Service uses an IPC (Inter-Process Communication) channel to call upon the Administration Service to execute these operations.
Operations carried out by the Administration Service include service-related tasks such as restarting Windows services and IIS application pools; creating folders and files and configuring their permissions; adding and removing accounts from local security groups; and creating and modifying values in the Registry.
The Administration Service cannot do anything other than its preconfigured subset of operations. In addition there is no supported way for a third-party timer job to directly call these methods - only internal SharePoint jobs may utilize them. As a result, this discussion of the Administration Service and SPAdministrationServiceJobDefinition is meant only to help you troubleshoot and understand existing SharePoint Administration Service jobs; there is no purpose in writing your own jobs of this type.
SPAdministrationJobDefinition
SPAdministrationServiceJobDefinition is a class for SharePoint timer jobs which derives from SPJobDefinition, the base class for all SharePoint timer jobs introduced in the first post in this series. SPAdministrationServiceJobDefinition is used to create jobs which will utilize the SharePoint 2010 Administration Service (SPAdminV4) for some of their operations. It is important to note that the job is still in fact run by the standard timer service and doesn't have to utilize the Administration Service at all. To actually utilize the Administration Service, it's up to the job's implementation to explicitly call one a designated administration operation.
By deriving from SPAdministrationServiceJobDefinition, a job indicates to the Timer Service that it intends to utilize the Administration service for some of its operations. This allows the Timer Service to check if the Administration service is in fact running on the server before scheduling the job; if it is not, an alert can be logged and the job is not scheduled.
To list all recurring and one-time Administration Service jobs currently configured in the farm, run the following PowerShell command:
PS:> Get-SPTimerJob | ? {($_ -is [Microsoft.SharePoint.Administration.SPAdministrationServiceJobDefinition])}
Note that there are not many recurring Administration Service timer jobs. Most Administration Service timer jobs are one-time jobs to create or copy files, restart services, set configurations, etc.
Another benefit of deriving from SPAdministrationServiceJobDefinition is that Administration Service jobs can be singled out for independent execution when needed. For example, to increase security in some farms the Administration Service is stopped and only started specifically when local administration jobs need to be executed. In these scenarios the Administration Service is started and Start-SPAdminJob PowerShell cmdlet (or STSADM -o ExecAdmSvcJobs) is called. Use the -Verbose parameter with this cmdlet to cause it to output information about each job run.
To help you better understand which jobs require the Administration Service, following is an abbreviated list of their type names, which for the most part are self-describing. Most of these are configured as one-time jobs when needed. To retrieve a list of configured timer jobs by type name, you can run the following PowerShell command:
PS:> Get-SPTimerJob | Format-Table Name, @{Label="Type";Expression={$_.GetType().FullName}}
TypeName |
ApplicationServerAdministrationServiceJob |
SearchConfigurationJobDefinition |
SPBackupRestoreJobDefinition |
SPAdminAppPoolCredentialDeploymentJobDefinition |
SPAdminConfigServicesJob |
SPAntivirusJobDefinition |
SPApplicationPoolUnprovisioningJobDefinition |
SPCertificateStoreDeploymentJobDefinition |
SPGeneratePasswordJobDefinition |
SPIisWebServiceSettingsJobDefinition |
SPIisWebsiteUnprovisioningJobDefinition |
SPPasswordManagementJobDefinition |
SPServiceApplicationInstanceProvisioningJobDefinition |
SPServiceApplicationProvisioiningJobDefinition |
SPServiceInstanceJobDefinition |
SPSmtpSettingsPullJobDefinition |
SPSmtpSettingsPushJobDefinition |
SPSolutionDeploymentJobDefinition |
SPTimerRecycleJobDefinition |
SPUpdateWorkerProcessGroup |
SPUpgradeJobDefinition |
SPWebApplicationProvisioningJobDefinition |
The next post will describe the Timer Recycle Job and how it utilizes the Administration Service.
Comments
- Anonymous
January 08, 2012
That was a good article. I'm learning about Sharepoint, so it really works. I was very curious as well as to what those services were as well. - Anonymous
February 19, 2014
Thanks Josh. Sometimes, during wsp deployments, we need to stop SharePoint 2010 Administration Service, run stsadm -o execadmsvcjobs and then restart them. It works. However, what I don't understand is why this is needed. Why does wsps go to deploying state forever. How to resolve this permanently without having to do this every time?Thanks,Soumya - Anonymous
March 04, 2014
The comment has been removed - Anonymous
March 24, 2014
Thanks much for the article. I've been trying to figure out why SharePoint 2013 apps require the SharePoint Administration Service (and Timer Service) -- now I get it. - Anonymous
June 15, 2015
Hi, i have some problems deploying features in my farm. when a deploying job is created getting the Sptimerjob give me a job with a name like "solution-deploymen..." and blank schedule that never run and the job is stuck in deploying state. Have you any idea how i can set a schedule manually for the job? Thanks