SharePoint 2010 Web Analytics – Changing the Schedule

If you ever tried to change the processing schedule or manually run the processes for the SharePoint 2010 Web Analytics, you probably realized fairly quickly that it is a less-than-intuitive and rather frustrating endeavor.  Hopefully this post can demystify some of the moving pieces for you.

Web Analytics has several timer jobs.  Web Analytics data is, by nature, a reporting mechanism with a daily granularity (i.e. – it is not intended to be updated multiple times per day).

  • Microsoft SharePoint Foundation Site Inventory Usage Collection – By default, this timer job runs daily.  It is responsible for collecting site inventory information from each site collection in the farm.  This job is the first of the “daily” jobs that should be executed.
  • Microsoft SharePoint Foundation Usage Data Import – By default, this job runs every 30 minutes.  It is responsible for importing usage data into the logging database.
  • Microsoft SharePoint Foundation Usage Data Processing – By default, this job is run daily.  It is responsible for processing data that has been accumulated in the Staging database.
  • Web Analytics Trigger Workflows Timer Job – By default, this job is run daily.  It is responsible for starting the workflows that allow for automatic distribution of analytic reports.

Additionally, the Web Analytics service application contains a property called “ReportConsolidationStartTime”.  This property is set via PowerShell (see details).  By default, the property is set to an integer value of 3 (3 am).

The key thing to remember is that the “ReportConsolidationStartTime” is evaluated based on the server’s time zone at the time SharePoint was installed.  So, if your server is currently set to use Eastern Standard Time (EST) as the time zone, but SharePoint was installed while the server was set to Pacific Standard Time (PST), the “ReportConsolidationStartTime” will always evaluated as PST.  Strange, but true.

If your numbers have ever been incorrect and you tried to manually run the timer jobs, you would have seen that the Web Analytics reports did not update.  That is because the Report Consolidation needs to execute before the reports get re-generated.  To force a complete manual run of the Web Analytics processing, execute the first three timer jobs (above), then trigger a Report Consolidation by manually updating the “ReportConsolidationStartTime” property to the current hour via PowerShell.  Finally, run the final timer job to distribute the reports, if your users are leveraging that functionality.