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.


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}}

























The next post will describe the Timer Recycle Job and how it utilizes the Administration Service.

Comments (5)

  1. 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.  

  2. Soumya says:

    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?



  3. Manoj says:

    there can be number of reasons to it:

    1) The farm is not in sync, may be one of your server  in farm does not have the updates applied or is corrupted. There are few powershell commands to check for same like Get-SPFarm.Version etc.

    2) The timer service is corrupted, above command "execadmsvcjobs " may or may not help as it just pushed the timer service to initiate the process within its queue or pending upon.

    3) One of the server is not in farm.

    4) You missed to execute the Configuration Wizard or Configuration wizard failed in any of the servers.

    5) If you still face the issue then rebuilt is the only option.

    6) If you Admin service is running under some account then check GPO for same.

  4. gregthatcher says:

    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.  

  5. Noisemaker0 says:


    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?