# Jobs and Scheduled Tasks

Background jobs provide automated provisioning operations that run on configured schedules. These include document metadata updates, search index maintenance, certificate expiry notifications, permission management, and file retry logic.

# Overview

Jobs are configured in the global SettingsCfg.Jobs collection and run according to their schedule configuration. Each job type has its own configuration class and scheduling behavior.

# Available Jobs

Job Class Purpose
Update Document Metadata UpdateDocumentMetadataJobCfg Automatically update document metadata fields based on criteria
Update Search Index UpdateSearchIndexJobCfg Trigger search re-indexing for document libraries

# Notifications and Monitoring

Job Class Purpose
Certificate Expiry CertificateExpiryJobCfg Email notifications when Azure app registration certificates are about to expire

# Permissions and Access

Job Class Purpose
Change Permissions on Recent Documents ChangePermissionsOnRecentDocumentsJobCfg Automatically disable inherited permissions on recently accessed documents

# File Management

Job Class Purpose
Retry Failed Files RetryJobCfg Re-enqueue failed provisioning files after a configurable delay

# Job Scheduling

Each job uses a scheduling configuration to control when and how often it runs:

Schedule Class Purpose
EveryDayScheduleCfg Run once daily at a specific time
EveryNightScheduleCfg Run nightly (typical: between 22:00 and 06:00)
IntervalScheduleCfg Run at regular intervals (e.g., every 15 minutes)
RandomEveryDayScheduleCfg Run once daily at a random time within a window
ManualScheduleCfg Run only when triggered manually

See Scheduling Jobs for detailed scheduling configuration.

# Configuration Pattern

Most jobs follow this pattern:

{
  "Disabled": false,
  "IntervalInMinutes": 60,
  "StartTime": "08:00:00",
  "EndTime": "18:00:00",
  "Subject": "Job notification subject",
  "CurrentState": {}
}

Common scheduling properties:

  • Disabled (bool?) — Disable this job
  • IntervalInMinutes (int?) — For interval-based jobs: minutes between runs
  • StartTime (TimeSpan?) — Don't run before this time of day
  • EndTime (TimeSpan?) — Don't run after this time of day

# Common Configuration

All jobs support:

  • State trackingCurrentState tracks job progress and is managed by the system
  • Scheduling — Control when the job runs using schedule-specific properties
  • Enable/Disable — Set Disabled: true to turn off a job without removing its configuration
Last Updated: 4/15/2026, 8:56:27 AM