# 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
# Metadata and Search
| 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 jobIntervalInMinutes(int?) — For interval-based jobs: minutes between runsStartTime(TimeSpan?) — Don't run before this time of dayEndTime(TimeSpan?) — Don't run after this time of day
# Common Configuration
All jobs support:
- State tracking —
CurrentStatetracks job progress and is managed by the system - Scheduling — Control when the job runs using schedule-specific properties
- Enable/Disable — Set
Disabled: trueto turn off a job without removing its configuration
# Related
- Global Settings Configuration — where jobs are configured
- Scheduling Jobs — schedule configuration details