Return to doc.sitecore.com

Valid for Sitecore 5.3, 5.2
How can I configure Sitecore V5 to periodically perform tasks in Sitecore V5?

Sitecore provides a facility for creating and running Scheduled Tasks.

The following steps describe how to configure such a task:

  1. Create your own class. This class must implement at least one public method with the following parameters:

    using System;
    using Sitecore.Data.Items;
    using Sitecore.Tasks;
    namespace CustomScheduleTasks

       public class Task1 
       { 
          public void WriteToLogFile(Item[] itemArray, CommandItem commandItem, ScheduleItem scheduledItem) 
          { 
             Sitecore.Diagnostics.Log.Info("Test Scheduled task: "+DateTime.Now, this); 
          } 
       }
    }

  2. Compile this assembly and put the resulting file, for example: CustomScheduleTasks.dll, into the Sitecore web root /bin folder.
  3. In the Content Editor System area, locate the /system/Tasks/Commands item and create a new item based on the __Task Command master.
  4. Fill in the necessary fields:

    Type: CustomScheduleTasks.Task1, CustomScheduleTasks

    Method: WriteToLogFile

    The Type indicates the namespace and assembly file.  The Method indicates the method to call on the specified class. 

    Your command is now ready for use as a scheduled task.
     
  5. Locate the /system/Tasks/Schedules item and create new __Task Scheduler item
  6. Fill in the fields:

    Command:
    select command created in the previous step.

    Items
    : if you want to pass an array of items to your method you can place any XPath here. Items can be divided by pipe separator. For example: /Sitecore/content/Home/Globals/Item1 |  /Sitecore/content/Home/Globals/Item2
  7. Schedule: 20040720T235900|20060725T235900|127|01:00:00

    In this example, the task will be executed from 20.07.2004 23:59:00 to 25.07.2006 23:59:00, every day (as specified by the number 127) and every 1 hour (as specified by 01:00:00).

    In the Schedule field you can place 4 parameters divided by pipe separators:

    1. From Date
    2. To Date 
    3. Day of Weeks. Here DaysOfWeek enumeration is used. For Monday and Friday you should write 34 (2+32) 

        public enum DaysOfWeek
        {
          None = 0,
          Sunday = 1,
          Monday = 2,
          Tuesday = 4,
          Wednesday = 8,
          Thursday = 16,
          Friday = 32,
          Saturday = 64,
        }
       
    4. Period of time e.g.: 01:00:00 – every 1 hour.

    Note: the Auto Remove field is used when a scheduled item is executed. If AutoRemove is set, then the schedule item will be removed (deleted) after it is completed

  8. Set the necessary frequency and interval parameters in the web.config: 

        <scheduling> 
          <!-- Time between checking for scheduled tasks waiting to execute -->
          <frequency>01:00:00</frequency>
        
          <!-- Agent to process schedules embedded as items in a database -->
          <agent type="Sitecore.Tasks.DatabaseAgent" method="Run" interval="01:00:00">
            <param desc="database">core</param>
            <param desc="schedule root">/sitecore/system/tasks/schedules</param>
            <LogActivity>true</LogActivity>
          </agent> 
                ...

Note: the interval for the DatabaseAgent should be set to more than the frequency parameter.