--- title: "Cron Profiles Module Documentation" description: "Documentation for Cron Profiles" --- ## Table of Contents 1. [Navigation & Access](#navigation--access) 2. [Screenshots & Visual Interface](#screenshots--visual-interface) 3. [🎯 User Roles & Key Capabilities](#-user-roles--key-capabilities) 4. [Module Overview (Technical)](#1-module-overview-technical) 5. [Module Overview (Commercial/Business)](#2-module-overview-commercialbusiness) 6. [Module Overview (End User/Administrator)](#3-module-overview-end-useradministrator) 7. [Configuration Sections](#4-configuration-sections) 8. [Settings Reference](#5-settings-reference) 9. [Model Context Protocol (MCP) AI Integration](#model-context-protocol-mcp-ai-integration) 10. [Common Scenarios & Examples](#6-common-scenarios--examples) 11. [Limitations & Important Notes](#7-limitations--important-notes) 12. [Troubleshooting Tips](#8-troubleshooting-tips) 13. [Glossary](#9-glossary) --- ## Navigation & Access To access the Cron Profiles module: 1. Log in to the Ring2All Web Portal (`https:///login`). 2. In the left navigation sidebar, expand **Administration**. 3. Under **Maintenance**, click **Cron Profiles** (`/admin/maintenance/cron-profiles`). 4. Review reusable schedule definitions, standard 5-part cron expressions, enablement status, and latest trigger history. 5. Click **+ Add** to author a new cron profile (`/admin/maintenance/cron-profiles/new`) using visual builder selectors or standard cron expression templates. --- ## Screenshots & Visual Interface ### Time-Based Schedule Profiles Directory Catalog of operational cron schedules powering automated backups, log rotations, CDR synchronization jobs, and health-check monitors across the softswitch cluster. ![Cron Profiles List](/screenshots/admin/maintenance/cron-profiles-list.png) ### Cron Profile Schedule Editor & Expression Builder Intuitive scheduling form featuring quick template presets (Every Minute, Hourly, Daily, Weekly, Monthly) alongside fine-grained selectors for minute, hour, day of month, month, and day of week. ![Cron Profile Schedule Form](/screenshots/admin/maintenance/cron-profiles-form.png) --- ## 🎯 User Roles & Key Capabilities | Role | Access Level | Responsibilities & Capabilities | | :--- | :--- | :--- | | **PBX Super Administrator** | Full Access (`RW`) | Create and maintain global system schedules, validate standard 5-part cron syntax, and link profiles to background batch workers. | | **DevOps & Platform Engineer** | Full Operations (`RW`) | Balance cron execution intervals across cluster nodes to prevent peak CPU and disk I/O bottlenecks during nocturnal backup cycles. | | **Tenant Administrator** | Reusable Selection (`RO`) | Select existing system-approved cron profiles to schedule tenant-specific backup jobs and custom data exports. | | **AI Platform Copilot / MCP Agent** | Schedule Inspection (`RO`) | Execute `list_cron_profiles` to analyze scheduled cron expressions, inspect intervals, and verify background task frequencies. | --- ## 1. Module Overview (Technical) ### What Are Cron Profiles? Cron Profiles is a **scheduling configuration module** that creates reusable time-based schedules for automated tasks. Profiles define when recurring jobs like backups, reports, or maintenance tasks should run. ### Architecture ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Cron Profiles Architecture β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ Cron Profile Library β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Profile: Daily Midnight β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”‚ β”‚ Expression: 0 0 * * * β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Template: Daily (Midnight) β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Status: Enabled β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Profile: Hourly β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”‚ β”‚ Expression: 0 * * * * β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Template: Hourly β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Status: Enabled β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Profile: Business Hours β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”‚ β”‚ Expression: */15 9-17 * * 1-5 β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Template: Custom β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Status: Enabled β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β–Ό Used by scheduled tasks β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Backup Jobs ──────────────► "Daily Midnight" β”‚ β”‚ β”‚ β”‚ Report Generation ───────► "Hourly" β”‚ β”‚ β”‚ β”‚ Status Checks ───────────► "Every 5 Minutes" β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ## 2. Module Overview (Commercial/Business) ### Business Value Cron Profiles provides **reusable scheduling**: | Without Profiles | With Profiles | |------------------|---------------| | Duplicate expressions | Define once, reuse | | Error-prone syntax | Template presets | | No standardization | Consistent schedules | | Manual entry | Visual builder | ### Use Cases 1. **Backup Scheduling** - Daily backups - Weekly full backups 2. **Report Generation** - Hourly reports - End-of-day summaries 3. **Maintenance Tasks** - Log rotation - Cache cleanup 4. **Monitoring** - Regular health checks - Status updates ### Feature Highlights | Feature | Benefit | |---------|---------| | **Templates** | Pre-built schedules | | **Presets** | Quick selection | | **Custom** | Full cron control | | **Reusable** | Use across tasks | | **Enable/Disable** | Toggle profiles | --- ## 3. Module Overview (End User/Administrator) ### What Can You Do? - Create scheduling profiles - Use quick templates - Build custom expressions - Enable/disable profiles - Reuse across modules - View last run times ### Cron Profiles Interface ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Cron Profiles β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ [+ Add] β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Name β”‚ Cron Expression β”‚ Template β”‚ Status β”‚ β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ Daily Midnight β”‚ 0 0 * * * β”‚ Daily β”‚ ● Enabled β”‚ β”‚ β”‚ β”‚ Hourly β”‚ 0 * * * * β”‚ Hourly β”‚ ● Enabled β”‚ β”‚ β”‚ β”‚ Every 5 Min β”‚ */5 * * * * β”‚ Every 5 β”‚ ● Enabled β”‚ β”‚ β”‚ β”‚ Weekly Sunday β”‚ 0 0 * * 0 β”‚ Weekly β”‚ ● Enabled β”‚ β”‚ β”‚ β”‚ Business Hours β”‚ */15 9-17 * * 1-5β”‚ Custom β”‚ β—‹ Disabledβ”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ Actions: [✏️ Edit] [πŸ—‘οΈ Delete] β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Add/Edit Cron Profile ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Edit Cron Profile β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ β–Ό General Information β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚ β”‚ β”‚ β”‚β”‚ β”‚ β”‚ Name: [Daily Midnight ] β”‚β”‚ β”‚ β”‚ β”‚β”‚ β”‚ β”‚ Template: [Daily (Midnight) β–Ό] β”‚β”‚ β”‚ β”‚ Custom | Every Minute | Hourly | Daily | Weekly | Monthlyβ”‚β”‚ β”‚ β”‚ Every 5/15/30 Minutes β”‚β”‚ β”‚ β”‚ β”‚β”‚ β”‚ β”‚ Enabled: βœ“ β”‚β”‚ β”‚ β”‚ β”‚β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚ β”‚ β”‚ β”‚ β–Ό Schedule Settings β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚ β”‚ β”‚ β”‚β”‚ β”‚ β”‚ Cron Expression: 0 0 * * * β”‚β”‚ β”‚ β”‚ Format: Min Hr Day Mon Dow β”‚β”‚ β”‚ β”‚ β”‚β”‚ β”‚ β”‚ ───────────────────────────────────────────── β”‚β”‚ β”‚ β”‚ β”‚β”‚ β”‚ β”‚ Minutes: [Every minute (*) β–Ό] β”‚β”‚ β”‚ β”‚ Every minute (*) | */2 | */5 | */10 | */15 | */30 β”‚β”‚ β”‚ β”‚ β”‚β”‚ β”‚ β”‚ Hours: [Midnight (0) β–Ό] β”‚β”‚ β”‚ β”‚ Every Hour | */2 | */4 | */6 | */12 | Midnight | Noon β”‚β”‚ β”‚ β”‚ Business Hours (9-17) β”‚β”‚ β”‚ β”‚ β”‚β”‚ β”‚ β”‚ Day of Month: [Every Day (*) β–Ό] β”‚β”‚ β”‚ β”‚ Every Day | */2 | 1st and 15th β”‚β”‚ β”‚ β”‚ β”‚β”‚ β”‚ β”‚ Month: [Every Month (*) β–Ό] β”‚β”‚ β”‚ β”‚ Every Month | Quarterly | Jan & July β”‚β”‚ β”‚ β”‚ β”‚β”‚ β”‚ β”‚ Day of Week: [Every Day (*) β–Ό] β”‚β”‚ β”‚ β”‚ Every Day | Mon-Fri | Weekend | Sunday | Monday β”‚β”‚ β”‚ β”‚ β”‚β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚ β”‚ β”‚ β”‚ [Save] [Cancel] β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ### Quick Tips > [!TIP] > **Templates**: Start with a template, then customize. > [!TIP] > **Presets**: Use dropdown presets for common intervals. > [!NOTE] > **Cron Format**: Minute Hour Day Month Weekday --- ## 4. Configuration Sections ### General Information | Field | Description | |-------|-------------| | **Name** | Profile identifier | | **Template** | Quick schedule preset | | **Enabled** | Active/Inactive | ### Schedule Settings | Field | Description | |-------|-------------| | **Cron Expression** | Full cron syntax | | **Minute** | Minute preset | | **Hour** | Hour preset | | **Day of Month** | Day preset | | **Month** | Month preset | | **Day of Week** | Weekday preset | --- ## 5. Settings Reference ### Quick Templates | Template | Expression | Description | |----------|------------|-------------| | **Every Minute** | * * * * * | Run every minute | | **Every 5 Minutes** | */5 * * * * | Every 5 min | | **Every 15 Minutes** | */15 * * * * | Every 15 min | | **Every 30 Minutes** | */30 * * * * | Every 30 min | | **Hourly** | 0 * * * * | Top of each hour | | **Daily (Midnight)** | 0 0 * * * | Midnight daily | | **Weekly (Sunday)** | 0 0 * * 0 | Sunday midnight | | **Monthly (1st)** | 0 0 1 * * | 1st of month | ### Minute Presets | Preset | Value | Description | |--------|-------|-------------| | Every minute | * | Run every minute | | Every 2 | */2 | Every 2 minutes | | Every 5 | */5 | Every 5 minutes | | Every 10 | */10 | Every 10 minutes | | Every 15 | */15 | Every 15 minutes | | Every 30 | */30 | Every 30 minutes | ### Hour Presets | Preset | Value | Description | |--------|-------|-------------| | Every Hour | * | Every hour | | Every 2 | */2 | Every 2 hours | | Every 4 | */4 | Every 4 hours | | Every 6 | */6 | Every 6 hours | | Every 12 | */12 | Every 12 hours | | Midnight | 0 | 12:00 AM | | Noon | 12 | 12:00 PM | | Business | 9-17 | 9 AM - 5 PM | ### Day Presets | Preset | Value | Description | |--------|-------|-------------| | Every Day | * | Daily | | Every Other | */2 | Every 2 days | | 1st and 15th | 1,15 | Bi-monthly | ### Weekday Presets | Preset | Value | Description | |--------|-------|-------------| | Every Day | * | All days | | Mon-Fri | 1-5 | Weekdays | | Weekend | 0,6 | Sat & Sun | | Sunday | 0 | Sunday only | | Monday | 1 | Monday only | ### Cron Expression Format ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ minute (0-59) β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ hour (0-23) β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ day of month (1-31) β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ month (1-12) β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ day of week (0-6, 0=Sunday) β”‚ β”‚ β”‚ β”‚ β”‚ * * * * * ``` ### Special Characters | Character | Meaning | Example | |-----------|---------|---------| | * | Any value | * = every | | */n | Every n | */5 = every 5 | | n-m | Range | 9-17 = 9 to 17 | | n,m | List | 1,15 = 1 and 15 | --- ## Model Context Protocol (MCP) AI Integration The Cron Profiles module exposes typed scheduling queries to the **Model Context Protocol (MCP)**, allowing the Platform Copilot and automated site-reliability agents to inspect active background schedules. ### Available MCP Tools | Tool Name | Scope | Description | | :--- | :--- | :--- | | `list_cron_profiles` | Schedule Registry (`RO`) | Lists all scheduled cron profiles, interval expressions (e.g. "0 2 * * *"), execution frequencies, and associated tenant scopes. | ### Tool Schemas & Payloads #### `list_cron_profiles` ```json { "name": "list_cron_profiles", "description": "Lists all scheduled cron profiles, interval expressions (e.g. \"0 2 * * *\"), execution frequencies, and associated tenant scopes.", "parameters": { "type": "object", "properties": { "search": { "type": "string", "description": "Filter by profile name or cron expression." } } } } ``` **Realistic Execution Response:** ```json { "success": true, "data": { "total": 3, "profiles": [ { "id": 1, "name": "Nightly Database Backup", "schedule": "0 2 * * *", "description": "Executes daily at 02:00 UTC during low call volume", "target": "system", "isActive": true, "lastRun": "2026-09-08T02:00:00Z" }, { "id": 2, "name": "Hourly CDR Archiver", "schedule": "0 * * * *", "description": "Flushes processed CDR partitions every hour", "target": "system", "isActive": true, "lastRun": "2026-09-08T10:00:00Z" }, { "id": 3, "name": "Weekly Cleanup Routine", "schedule": "0 3 * * 0", "description": "Purges temporary audio files every Sunday at 03:00 UTC", "target": "system", "isActive": true, "lastRun": "2026-09-06T03:00:00Z" } ] } } ``` ### Bilingual Natural Language Prompt Examples #### English Prompts - *"Copilot, list all configured cron profiles and show their schedule expressions."* - *"Find any cron profiles scheduled to execute more frequently than every 15 minutes."* - *"Verify when the nightly database backup cron profile last ran."* #### Spanish Prompts - *"Copilot, lista todos los perfiles de cron configurados y sus expresiones temporales."* - *"ΒΏQuΓ© tareas o perfiles de cron se ejecutan durante la noche?"* - *"Verifica la frecuencia y ΓΊltima ejecuciΓ³n del perfil de respaldo nocturno."* ### Enterprise Safeguards & Execution Boundaries 1. **Multi-Tenant Protection:** Cron profiles created for specific tenants are filtered strictly by `tenant_id`, preventing cross-tenant visibility. 2. **Standard 5-Field Syntax Enforcement:** The system strictly parses standard 5-part cron syntax (`minute hour day month day-of-week`), preventing invalid or non-standard scheduling definitions. 3. **Execution Rate Throttling:** Profiles cannot be scheduled below 1-minute intervals, mitigating server denial-of-service risks. --- ## 6. Common Scenarios & Examples ### Scenario 1: Daily Backup at 2 AM 1. Add Profile 2. Name = "Daily 2AM" 3. Template = Custom 4. Minute = 0 5. Hour = 2 6. Day/Month/Week = * 7. Expression: `0 2 * * *` 8. Save ### Scenario 2: Every 5 Minutes 1. Add Profile 2. Name = "Every 5 Min" 3. Template = Every 5 Minutes 4. Save 5. Expression auto-set: `*/5 * * * *` ### Scenario 3: Business Hours Only 1. Add Profile 2. Name = "Business Hours" 3. Template = Custom 4. Minute = */15 (every 15 min) 5. Hour = 9-17 (business hours) 6. Weekday = 1-5 (Mon-Fri) 7. Expression: `*/15 9-17 * * 1-5` 8. Save ### Scenario 4: Weekly Sunday Night 1. Add Profile 2. Name = "Weekly Sunday" 3. Template = Weekly (Sunday) 4. Save 5. Expression: `0 0 * * 0` --- ## 7. Limitations & Important Notes ### Technical Notes > [!NOTE] > **Timezone**: Schedules run in server timezone. > [!NOTE] > **5-Field Format**: Standard cron format (no seconds). > [!WARNING] > **Test First**: Verify expression before production use. ### Best Practices 1. **Use Templates**: Start with presets 2. **Descriptive Names**: Clear profile names 3. **Test Expression**: Verify timing 4. **Off-Peak Hours**: Schedule heavy tasks at night 5. **Monitor Runs**: Check last run status ### Common Expressions | Use Case | Expression | |----------|------------| | Every hour | `0 * * * *` | | Daily at 3 AM | `0 3 * * *` | | Weekdays 9 AM | `0 9 * * 1-5` | | First Monday | `0 0 1-7 * 1` | | Every 10 min | `*/10 * * * *` | --- ## 8. Troubleshooting Tips ### Common Issues | Symptom | Possible Cause | Solution | |---------|---------------|----------| | Not running | Profile disabled | Enable profile | | Wrong time | Timezone issue | Check server TZ | | Too frequent | Wrong interval | Adjust expression | | Never runs | Invalid cron | Verify syntax | ### Verify Expression ```bash # Install cron expression tester pip install croniter # Test expression in Python python -c "from croniter import croniter; from datetime import datetime; c = croniter('0 2 * * *', datetime.now()); print([c.get_next(datetime) for _ in range(5)])" ``` ### Check Cron Jobs ```bash # List system cron jobs crontab -l # View cron log grep CRON /var/log/syslog ``` --- ## 9. Glossary | Term | Definition | |------|------------| | **Cron** | Time-based scheduler | | **Expression** | Schedule syntax | | **Profile** | Reusable schedule | | **Preset** | Pre-defined value | | **Template** | Quick schedule | --- *Documentation last updated: January 2026*