Maintenance Tasks in AEM as a Cloud Service maintenance-tasks-in-aem-as-a-cloud-service

Maintenance Tasks are processes that run on a schedule 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.

Configuring maintenance tasks maintenance-tasks-configuring

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 manages those maintenance tasks which have settings that are not configurable by customers (for example, Datastore Garbage Collection, Audit Log Purge, Version Purge). Other maintenance tasks can be configured by customers, as described in the table below.

CAUTION
Adobe reserves the right to override a customer’s maintenance task configuration settings 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

For existing environments (those created before March 11, 2024), purging is disabled and will not be enabled in the future unless explicitly enabled by the customer, at which time they may also configure it with custom values.
\ New environments (those created starting March 11, 2024) will have purging enabled by default with the values below, with customers being able to configure with custom values.

  1. Versions older than 30 days are removed

  2. The most recent 5 versions in the last 30 days are kept

  3. Irrespective of the rules above, the most recent version is preserved. \

    It is recommended that customers who have regulatory requirements to render site pages exactly as they appeared on a specific date, integrate with specialized, external services.

Audit Log Purge
Adobe

For existing environments (those created before March 11, 2024), purging is disabled and will not be enabled in the future unless explicitly enabled by the customer, at which time they may also configure it with custom values.
\ New environments (those created starting March, 2024) will have purging enabled by default under the /content node of the repository according to the following behavior:

  1. For replication auditing, audit logs older than 3 days are removed

  2. For DAM (Assets) auditing, audit logs older than 30 days are removed

  3. For page auditing, logs older than 3 days are removed. \

    It is recommended that customers who have regulatory requirements to produce uneditable audit logs, integrate with specialized, external services.

Lucene Binaries Cleanup
Adobe
Unused and therefore disabled by Adobe.
Ad-hoc Task Purge
Customer

Must be done in git. Override the out-of-the-box Maintenance window configuration node under /libs by creating properties under the folder /apps/settings/granite/operations/maintenance/granite_weekly, granite_daily or granite_monthly.

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 attribute sling:resourceType set to granite/operations/components/maintenance/task and attribute granite.maintenance.name set to TaskPurge. Configure the OSGI properties, see com.adobe.granite.taskmanagement.impl.purge.TaskPurgeMaintenanceTask for the list of properties.

Workflow Purge
Customer

Must be done in git. Override the out-of-the-box Maintenance window configuration node under /libs by creating properties under the folder /apps/settings/granite/operations/maintenance/granite_weekly, granite_daily or granite_monthly. 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 git. Override the out-of-the-box Maintenance window configuration node under /libs by creating properties under the folder /apps/settings/granite/operations/maintenance/granite_weekly, granite_daily or granite_monthly. 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_ProjectPurgeTask) with the appropriate properties. See the list of OSGI properties under "Adobe Projects Purge Configuration".

Maintenance Window Configuration
Who owns the configuration
Configuration Type
Parameters
Daily
Customer
JCR Node Definition

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.

A maintenance task cannot be executed more than once during this timeframe.

Weekly
Customer
JCR Node Definition

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.

A maintenance task cannot be executed more than once during this timeframe.

windowScheduleWeekdays= Array of two values from 1–7 (for example, [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

windowSchedule=monthly (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.

A maintenance task cannot be executed more than once during this timeframe.

windowScheduleWeekdays=Array of two values from 1–7 (for example, [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 on the day governed by windowScheduleWeekdays (every month).

Locations:

  • Daily - /apps/settings/granite/operations/maintenance/granite_daily
  • Weekly - /apps/settings/granite/operations/maintenance/granite_weekly
  • Monthly - /apps/settings/granite/operations/maintenance/granite_monthly

Code samples:

Code sample 1 (daily)


<?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 (weekly)


<?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 (monthly)


<?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"/>
recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab