# Retry Failed Files Job

Re-enqueues provisioning files that failed processing after a configurable delay period.

Configuration class: RetryJobCfg

Schedule base: IntervalScheduleCfg (runs at regular intervals)

# Purpose

When provisioning files (Excel, JSON, etc.) fail to process, they are moved to an error folder with details about the failure. This job:

  • Monitors the error folder for failed files
  • Re-enqueues files after a minimum age (to ensure the underlying issue is resolved)
  • Limits retry attempts to prevent infinite loops
  • Automatically resets retry counts on service restart

Useful for:

  • Recovering from transient failures (network timeouts, temporary locks)
  • Allowing time for dependent systems to be available before retrying
  • Automating retry without manual intervention

# Configuration

# Disabled

  • Type: bool?
  • Default:
  • Required: No
  • Description: Disable this job without removing configuration

# MinimumFileAge

  • Type: TimeSpan
  • Default: 00:01:00 (1 minute)
  • Required: No
  • Description: Minimum age of a failed file before it's eligible for retry. Delay = age + scheduling interval. Example: 00:05:00 waits at least 5 minutes before retrying.

# MaximumRetries

  • Type: int
  • Default: 3
  • Required: No
  • Description: Maximum number of times to re-enqueue a file before giving up. Example: 5 allows up to 5 retry attempts. Note: Retry count resets when the provisioning service restarts.

# CurrentState

  • Type: RetryJobState
  • Default:
  • Required: No
  • Description: System-managed — stores current job state

# Scheduling Properties

# Interval

  • Type: TimeSpan
  • Default: 00:01:00 (1 minute)
  • Description: How often to check for failed files eligible for retry.

# Example Configuration

{
  "Disabled": false,
  "MinimumFileAge": "00:05:00",
  "MaximumRetries": 3,
  "Interval": "00:01:00",
  "CurrentState": {}
}

# How It Works

  1. Job runs at the configured Interval (default: every minute)
  2. Scans the error folder for failed files
  3. For each failed file:
    • Checks if file age >= MinimumFileAge
    • If eligibility criteria met and retry count < MaximumRetries:
      • Moves file back to the watch folder for reprocessing
      • Increments retry counter
  4. Files exceeding MaximumRetries remain in the error folder

# File Location

Failed files are stored in:

[watch-folder]/Error/[filename].xlsx

When re-enqueued, files are moved back to:

[watch-folder]/[filename].xlsx

# Failure Scenarios

Common scenarios that benefit from retry:

  • Transient network issues: Connection timeout, briefly unavailable server
  • Temporary locks: Another process briefly locked the library
  • Service dependencies: External system temporarily offline, now recovered
  • Resource exhaustion: Server ran out of memory/connections, now recovered

Note: Permanent failures (invalid configuration, missing parent, bad data format) will fail again and should be fixed manually.

# Notes

  • Minimum age: Set to at least 1 minute to allow time for underlying issues to resolve
  • Retry limits: MaximumRetries of 3-5 is typical; increase for high-value operations, decrease for time-sensitive provisioning
  • Service restarts: Retry counters reset on provisioning service restart, allowing stuck files to be retried again
  • Manual intervention: Files in the error folder can be manually reviewed and fixed before the next retry window
  • Audit trail: Check provisioning logs for error details to understand why files failed
Last Updated: 4/15/2026, 8:56:27 AM