Show Menu
TOPICS×

Maintenance Tasks in AEM as a Cloud Service

Maintenance Tasks are processes that run on a schedule in order to optimize the repository. With AEM as a Cloud Service, the need for customers to configure the operational properties of maintenance tasks is minimal. Customers can focus their resources on application-level concerns, leaving the infrastructure operations to Adobe.
For additional information about maintenance tasks, see the following pages:

Configuring maintenance tasks

In previous versions of AEM, you could configure maintenance tasks by using the Maintenance Card (Tools > Operations > Maintenance). For AEM as a Cloud Service, the Maintenance Card is no longer available so configurations should be committed to source control and deployed by using the Cloud Manager. Adobe will manage maintenance tasks that do not require customer decisions (for example, Datastore Garbage Collection) while other maintenance task can be configured by the customer (see the table below).
Adobe reserves the right to override a customer's maintenance task configuration settings in order to mitigate issues such as performance degradation.
The following table illustrates the maintenance tasks that are available at the time of release of AEM as a Cloud Service.
Maintenance Task
Who owns the configuration
How to configure (optional)
Datastore garbage collection
Adobe
N/A - fully Adobe owned
Version Purge
Adobe
Fully owned by Adobe, but in the future, customers will be able to configure certain parameters.
Audit Log Purge
Adobe
Fully owned by Adobe, but in the future, customers will be able to configure certain parameters.
Lucene Binaries Cleanup
Adobe
Unused and therefore disabled by Adobe.
Ad-hoc Task Purge
Customer
Must be done in github.
Override the out-of-the-box Maintenance window configuration node under /libs by creating properties under the the folder /apps/settings/granite/operations/maintenance/granite_weekly or granite_daily . See the Maintenance Window table below for additional configuration details.
Enable the maintenance task by adding another node under the node above (name it granite_TaskPurgeTask ) with the appropriate properties.
Configure the OSGI properties see the AEM 6.5 Maintenance Task documentation
Workflow Purge
Customer
Must be done in github.
Override the out-of-the-box Maintenance window configuration node under /libs by creating properties under the the folder /apps/settings/granite/operations/maintenance/granite_weekly or granite_daily . See the Maintenance Window table below for additional configuration details.
Enable the maintenance task by adding another node under the node above (name it granite_WorkflowPurgeTask ) with the appropriate properties.
Configure the OSGI properties see AEM 6.5 Maintenance Task documentation
Project Purge
Customer
Must be done in github.
Override the out-of-the-box Maintenance window configuration node under /libs by creating properties under the the folder /apps/settings/granite/operations/maintenance/granite_weekly or granite_daily . See the Maintenance Window table below for additional configuration details.
Enable the maintenance task by adding a node under the node above (name it granite_ProjectPurgeTask ) with the appropriate properties.
Configure OSGI properties see AEM 6.5 Maintenance Task documentation
Customers can schedule each of the Workflow Purge, Ad-hoc Task Purge and Project Purge Maintenance tasks to be executed during the daily, weekly, or monthly maintenance windows. These configurations should edited directly in source control. The table below describes the configuration parameters available for each of the window.
Maintenance Window Configuration Who owns the configuration Configuration Type Location Example Parameters
Daily Customer JCR Node Definition /apps/settings/granite/operations/maintenance/granite_daily See code sample 1 below
  • windowSchedule = daily (this value should not be changed)
  • windowStartTime = HH:MM using as 24 hour clock. Defines when the Maintenance Tasks associated with the Daily Maintenance Window should begin executing.
  • windowEndTime = HH:MM using as 24 hour clock. Defines when the Maintenance Tasks associated with the Daily Maintenance Window should stop executing if they haven't already completed.
Weekly Customer JCR Node Definition /apps/settings/granite/operations/maintenance/granite_weekly See code sample 2 below
  • windowSchedule = weekly (this value should not be changed)
  • windowStartTime = HH:MM using as 24 hour clock. Defines when the Maintenance Tasks associated with the weekly Maintenance Window should begin executing.
  • windowEndTime = HH:MM using as 24 hour clock. Defines when the Maintenance Tasks associated with the Weekly Maintenance Window should stop executing if they haven't already completed.
  • windowScheduleWeekdays = Array of 2 values from 1-7. e.g. [5,5]. The first value of the array is the start day when the job is scheduled and the second value is the end day when the job would be stopped. The exact time of the start and the end is governed by windowStartTime and windowEndTime respectively.
Monthly Customer JCR Node Definition /apps/settings/granite/operations/maintenance/granite_monthly See code sample 3 below
  • windowSchedule = daily (this value should not be changed)
  • windowStartTime = HH:MM using as 24 hour clock. Defines when the Maintenance Tasks associated with the Monthly Maintenance Window should begin executing.
  • windowEndTime = HH:MM using as 24 hour clock. Defines when the Maintenance Tasks associated with the Monthly Maintenance Window should stop executing if they haven't already completed.
  • windowScheduleWeekdays = Array of 2 values from 1-7. e.g. [5,5]. The first value of the array is the start day when the job is scheduled and the second value is the end day when the job would be stopped. The exact time of the start and the end is governed by windowStartTime and windowEndTime respectively.
  • windowFirstLastStartDay - 0/1 0 to schedule on the first week of the month or 1 to schedule on the last week of the month. The absence of a value would effectively schedule jobs every day as governed by windowScheduleWeekdays every month.
Code sample 1
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" 
  xmlns:jcr="http://www.jcp.org/jcr/1.0" 
  jcr:primaryType="sling:Folder"
  sling:configCollectionInherit="true"
  sling:configPropertyInherit="true"
  windowSchedule="daily"
  windowStartTime="03:00"
  windowEndTime="05:00"
 />

Code sample 2
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" 
   xmlns:jcr="http://www.jcp.org/jcr/1.0"
   jcr:primaryType="sling:Folder"
   sling:configCollectionInherit="true"
   sling:configPropertyInherit="true"
   windowEndTime="15:30"
   windowSchedule="weekly"
   windowScheduleWeekdays="[5,5]"
   windowStartTime="14:30"/>

Code sample 3
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" 
   xmlns:jcr="http://www.jcp.org/jcr/1.0"
   jcr:primaryType="sling:Folder"
   sling:configCollectionInherit="true"
   sling:configPropertyInherit="true"
   windowEndTime="15:30"
   windowSchedule="monthly"
   windowFirstLastStartDay=0
   windowScheduleWeekdays="[5,5]"
   windowStartTime="14:30"/>