Sunday, November 27, 2016

Installation Instructions for Sitecore QuartzScheduler Module

Installation Instructions for Sitecore QuartzScheduler module


Module works with Sitecore 8, 8.1 update 3. Tested it with 8.2 but apart from trigger detail dialog, everything seems to work. 
Please follow these steps to install the packages in a zip file

  1. Install TDS.Sitecore.QuartzScheduler.Core.update package
  2. Install TDS.Sitecore.QuartzScheduler.Matser.update package
  3. Re-build Master Index

  4. At this point you are ready to define your jobs and triggers

  5. Optional steps
    1. Install TDS.Sitecore.QuartzScheduler.Master.Content.update package to install out of the box job definitions
      Note: If you are installing this package, see notes below each job to ensure you don’t run it twice
    2. This package contains job definitions for:
      • HelloWorld demo job
      • Archive Job performance statistics
      • Cleanup Publish Queue (Sitecore job) - invoked from a quartz job
        • In Sitecore agent /task configuration, set interval to 00:00:00 to disable Sitecore invoking this job
      • Cleanup History (Sitecore job) - invoked from a quartz job
        • In Sitecore agent / task configuration, set interval to 00:00:00 to disable Sitecore invoking this job
      • Cleanup Event Queue (Sitecore job) - invoked from a quartz job
        • In Sitecore agent / task configuration, set interval to 00:00:00 to disable Sitecore invoking this job








    3. Restart App Pool
Add Log4Net configuration as mentioned below
Under <log4net> node, add appender for Sitecore.QuartzScheduler as shown below


      
      
      
        
      
      
    

Add corresponding logger just below </root> element, as shown below

 
      
      
    


Known issue with Sitecore 8.2
Problem
Trigger detail dialog does not take the whole window width and hight. This apperas to be Frame control issue.

Workaround
Work around to this is you can open triggerdetail page by copying jobdetail and trigger detail id as given below

/sitecore/client/Applications/QuartzScheduler/Pages/TriggerDetails?sc_lang=en&jd={97EEE137-5303-4CF9-87A2-CEF8B68DB9C2}&td={68975F6D-9C5B-4C26-99AF-5537A87244C7}


You can get the trigger detail and job detail id from job detail page. When you click on the trigger item in the list control, console shows you the id of the trigger, you can copy from there.


Thursday, November 24, 2016

Overview of Sitecore QuartzScheduler

In this blog I am highlighting the features and usage of Sitecore QuartzScheduler Module. This will be useful for anyone who wants to use this module

Problem this module addresses

  • Until know scheduling and knowing how your jobs are performing in Sitecore has been a challenge. By default jobs execute based on the sliding duration of app pool start and hence it is not predictive enough.
  • You dont know how long jobs are taking and whether they are having race conditions
  • I cannot execute a particular job on-demand
  • I cannot define multiple and complex schedules for a job


Solution

  • Sitecore QuartzScheduler is an attempt to address these pain points. This is based on industry proven Quartz Scheduler for .net - enterprise scheduler framework


Features
  • Bulit on Quartz.net - industry proven enterprise job scheduler
  • Manage and Define Jobs and when those jobs will trigger (according to server clock time and not app pool recycle sliding time)
    • Define triggers based on duration every few hours, minutes or seconds
    • Define triggers to fire daily
    • Define triggers that fire only certain days of the week
    • Define triggers that fire monthly once on any given day
    • If none-of the above suits your need - Define custom triggers based on cron- expression guidelines of Quartz.net
  • Job Performance Dashboard showing
    • Job Performance Average and Maximum time it has taken
    • Individual Job Performance - from last app pool recycle
    • Current Execution Status and next fire times for each job trigger defined
  • Execute a job on-demand (instead of waiting for schedule to trigger)
  • Download job performance data as a Json file (in the event you are recycling the app pool and want to retain this data before you do so)
  • Out of the box jobs for
    • Cleanup Publish Queue
    • Cleanup Event Queue
    • Cleanup History
  • You can create your own jobs and create definition items in Sitecore through Sitecore SPEAK app
  • Extensible - create your own trigger statistics store to store performance benchmarks for longer term rather than in application cache

Feature walk-through

Launch and Navigation

Quick launch button in the Launchpad

Sitecore QuartzScheduler - Sitecore Launchpad button


Simple navigation

Sitecore QuartzScheduler - Simple Navigation


Dashboard

To view Job performance summary on what is the avg time taken by a job and maximum time it has taken so far

Sitecore QuartzScheduler - Job Performance Summary


To view individual job performance trend

Sitecore QuartzScheduler - Job Performance Trend
Sitecore QuartzScheduler - Job Performance Trend



To view current job execution status and when the next trigger for each job will fire

Sitecore QuartzScheduler - Current Job Execution Status

Manage Jobs

Ability to manage and define your own jobs which are implemented according to Quartz.net guidance

Sitecore QuartzScheduler - Manage Jobs

Create / Edit Jobs

Sitecore QuartzScheduler - Crete / Edit Jobs

Create / Edit Triggers

Sitecore QuartzScheduler - Create / Edit Triggers

Refer installation instructions on my blog post here OR on Sitecore marketplace once it becomes available