# Job Scheduling
Jobs run according to their schedule configuration. Five schedule types control how and when background jobs execute.
# Schedule Types
Schedule types determine how and when jobs execute:
# EveryDayScheduleCfg
Run once daily at a specific time. Use for daily maintenance (metadata updates, backups).
# EveryNightScheduleCfg
Run nightly during off-hours (typically 22:00-06:00). Use for heavy processing (search indexing, large data operations).
# IntervalScheduleCfg
Run at regular intervals throughout the day. Use for frequent polling (file retries, permission checks).
# RandomEveryDayScheduleCfg
Run once daily at a random time within a window. Use for load distribution (certificate checks, report generation).
# ManualScheduleCfg
Run only when triggered manually via API or UI. Use for one-time operations, emergency maintenance.
# EveryDayScheduleCfg
Runs a job once each day at a specified time.
{
"RunTime": "02:00:00"
}
# RunTime
Type: TimeSpan
The specific time of day to run. Example: "14:30:00" for 2:30 PM.
Use case: Daily metadata updates at 2 AM when servers have capacity
# EveryNightScheduleCfg
Runs a job once nightly during a configured window.
{
"StartTime": "21:00:00",
"EndTime": "06:00:00"
}
# StartTime
Type: TimeSpan? | Default: "21:00:00"
Start time for the nightly window (9 PM).
# EndTime
Type: TimeSpan? | Default: "06:00:00"
End time for the nightly window (6 AM).
Use case: Search index maintenance between 9 PM and 6 AM to avoid daytime impact
# IntervalScheduleCfg
Runs a job repeatedly at regular intervals.
{
"Interval": "00:30:00",
"StartTime": "08:00:00",
"EndTime": "18:00:00"
}
# Interval
Type: TimeSpan
How often to run. Example: "00:15:00" for every 15 minutes.
# StartTime
Type: TimeSpan?
Optional: Don't run before this time. Example: "08:00:00"
# EndTime
Type: TimeSpan?
Optional: Don't run after this time. Example: "18:00:00"
Use case: Check for failed files every minute during business hours (8 AM - 6 PM)
# RandomEveryDayScheduleCfg
Runs once daily at a random time within a configured window to distribute load.
{
"StartTime": "08:00:00",
"EndTime": "18:00:00"
}
# StartTime
Type: TimeSpan?
Earliest possible run time. Example: "08:00:00" for 8 AM
# EndTime
Type: TimeSpan?
Latest possible run time. Example: "18:00:00" for 6 PM
When both start and end times are configured, the job picks a random time between them each day. This prevents all scheduled jobs from running at the same time.
Use case: Certificate expiry checks run at random times between 8 AM and 6 PM to avoid synchronized load spikes
# ManualScheduleCfg
Runs only when manually triggered via the provisioning service API or administrative interface.
{}
No scheduling properties.
Use case: Emergency permission repairs, one-time data corrections
# Time Format
All time values use TimeSpan format: HH:MM:SS
# 00:30:00
30 minutes
# 02:00:00
2 hours
# 08:00:00
8:00 AM
# 22:30:00
10:30 PM
# 00:01:00
1 minute
# Common Scheduling Patterns
# Off-Hours Processing (Search Indexing)
Use EveryNightScheduleCfg for heavy jobs:
{
"StartTime": "21:00:00",
"EndTime": "06:00:00"
}
# Frequent Polling (Retry Logic)
Use IntervalScheduleCfg with short intervals:
{
"Interval": "00:01:00",
"StartTime": "08:00:00",
"EndTime": "18:00:00"
}
# Load Distribution (Certificate Checks)
Use RandomEveryDayScheduleCfg to spread out execution:
{
"StartTime": "08:00:00",
"EndTime": "18:00:00"
}
# Fixed-Time Execution (Daily Reports)
Use EveryDayScheduleCfg for specific times:
{
"RunTime": "09:00:00"
}
# Best Practices
- Schedule heavy jobs at night — Use
EveryNightScheduleCfgfor operations that consume significant CPU or I/O - Distribute load — Use
RandomEveryDayScheduleCfgso multiple jobs don't all run at once - Respect business hours — Use
StartTimeandEndTimeto keep intrusive jobs out of working hours - Use short intervals for polling — File retry checks benefit from 1-minute intervals; don't go longer than 5 minutes
- Test in staging — Performance impact varies; verify interval and timing in test environment before production deployment
# Related
- Jobs — job types and configurations
- Global Settings Configuration — where jobs are configured