# 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

  1. Schedule heavy jobs at night — Use EveryNightScheduleCfg for operations that consume significant CPU or I/O
  2. Distribute load — Use RandomEveryDayScheduleCfg so multiple jobs don't all run at once
  3. Respect business hours — Use StartTime and EndTime to keep intrusive jobs out of working hours
  4. Use short intervals for polling — File retry checks benefit from 1-minute intervals; don't go longer than 5 minutes
  5. Test in staging — Performance impact varies; verify interval and timing in test environment before production deployment
Last Updated: 4/15/2026, 8:56:27 AM