Skip to main content

Schedule

A Schedule enables you to execute Logic Flows automatically on a time-based schedule. Instead of waiting for user actions or entity events, Schedules proactively run your business logic at defined intervals—every minute, hour, day, week, or month.

The Need for Scheduled Execution

Many business processes don't fit neatly into event-driven patterns. They need to run regularly regardless of user activity:

  • Daily reports generated every morning before business hours
  • Weekly data cleanup removing stale records every Sunday night
  • Monthly invoicing creating invoices on the first of each month
  • Hourly synchronization keeping external systems up to date
  • Periodic health checks monitoring data quality at regular intervals

Without scheduled execution, these processes would require manual triggering or complex workarounds.

How Schedules Work

When you create a Schedule in FlowOn Logic:

  1. Configuration: You define the schedule parameters (frequency, interval, start date)
  2. Job Creation: FlowOn automatically creates a native Dynamics 365 background job
  3. Automatic Execution: The CRM job engine runs your Logic Flow at the specified intervals
  4. Status Tracking: The system tracks when the flow last ran and when it will run next

Schedule Structure

ComponentDescriptionRequired
NameUnique identifier for the scheduleYes
ProjectThe FlowOn Project this schedule belongs toYes
Logic FlowThe Flow to execute on scheduleYes
FrequencyTime unit for recurrence (Minute, Hour, Day, Week, Month)Yes
IntervalNumber of frequency units between executionsYes
Start DateWhen the schedule becomes activeYes
Next Run DateWhen the flow will next execute (auto-calculated)Auto
Last Run DateWhen the flow last executed (auto-updated)Auto
StatusCurrent state: Started or StoppedAuto

Frequency Options

FrequencyDescriptionExample Use Cases
MinuteRuns every N minutesNear real-time sync, frequent polling, SLA monitoring
HourRuns every N hoursRegular data updates, periodic checks, cache refresh
DayRuns every N daysDaily reports, nightly cleanup, daily aggregations
WeekRuns every N weeksWeekly summaries, periodic maintenance, weekly alerts
MonthRuns every N monthsMonthly invoicing, monthly reports, quarterly reviews

Interval Configuration

The Interval specifies how many frequency units pass between executions:

FrequencyIntervalResult
Minute5Every 5 minutes
Minute15Every 15 minutes
Hour1Every hour
Hour4Every 4 hours
Day1Every day
Day3Every 3 days
Week1Every week
Week2Every 2 weeks (biweekly)
Month1Every month
Month3Every 3 months (quarterly)

Schedule Status

StatusDescriptionCRM Job State
StartedSchedule is active and will execute at intervalsRunning/Waiting
StoppedSchedule is deactivated and will not executePaused

When you create a schedule, its status is automatically set to Started and a native CRM background job is created. To pause execution, deactivate the schedule—status changes to Stopped and the CRM job is paused.

Date Tracking

The system automatically maintains two date fields:

Next Run Date: Calculated based on frequency, interval, and either the start date (for new schedules) or the last run date (for existing schedules). This tells you exactly when the flow will execute next.

Last Run Date: Updated each time the scheduled flow executes. This provides an audit trail and helps troubleshoot if executions are being missed.

Example Schedules

Daily Sales Report

Schedule: DailySalesReport
Project: Sales Analytics
Logic Flow: GenerateDailySalesReport

┌─────────────────────────┬────────────────────────────────────────────┐
│ Property │ Value │
├─────────────────────────┼────────────────────────────────────────────┤
│ Frequency │ Day │
├─────────────────────────┼────────────────────────────────────────────┤
│ Interval │ 1 │
├─────────────────────────┼────────────────────────────────────────────┤
│ Start Date │ 2026-01-15 06:00:00 (6 AM) │
├─────────────────────────┼────────────────────────────────────────────┤
│ Status │ Started │
├─────────────────────────┼────────────────────────────────────────────┤
│ Next Run Date │ 2026-01-16 06:00:00 │
├─────────────────────────┼────────────────────────────────────────────┤
│ Last Run Date │ 2026-01-15 06:00:00 │
└─────────────────────────┴────────────────────────────────────────────┘

Purpose: Generates and emails daily sales summary report every morning
at 6 AM before business hours begin.

Hourly External System Sync

Schedule: HourlyCRMSync
Project: Integration Hub
Logic Flow: SyncToExternalCRM

┌─────────────────────────┬────────────────────────────────────────────┐
│ Property │ Value │
├─────────────────────────┼────────────────────────────────────────────┤
│ Frequency │ Hour │
├─────────────────────────┼────────────────────────────────────────────┤
│ Interval │ 1 │
├─────────────────────────┼────────────────────────────────────────────┤
│ Start Date │ 2026-01-15 00:00:00 │
├─────────────────────────┼────────────────────────────────────────────┤
│ Status │ Started │
└─────────────────────────┴────────────────────────────────────────────┘

Purpose: Synchronizes new and modified records to external CRM system
every hour to maintain near real-time data consistency.

Weekly Data Cleanup

Schedule: WeeklyDataCleanup
Project: Data Maintenance
Logic Flow: CleanupStaleRecords

┌─────────────────────────┬────────────────────────────────────────────┐
│ Property │ Value │
├─────────────────────────┼────────────────────────────────────────────┤
│ Frequency │ Week │
├─────────────────────────┼────────────────────────────────────────────┤
│ Interval │ 1 │
├─────────────────────────┼────────────────────────────────────────────┤
│ Start Date │ 2026-01-19 02:00:00 (Sunday 2 AM) │
├─────────────────────────┼────────────────────────────────────────────┤
│ Status │ Started │
└─────────────────────────┴────────────────────────────────────────────┘

Purpose: Archives completed activities older than 90 days and removes
temporary records every Sunday at 2 AM during low-usage hours.

Monthly Invoice Generation

Schedule: MonthlyInvoicing
Project: Finance Automation
Logic Flow: GenerateMonthlyInvoices

┌─────────────────────────┬────────────────────────────────────────────┐
│ Property │ Value │
├─────────────────────────┼────────────────────────────────────────────┤
│ Frequency │ Month │
├─────────────────────────┼────────────────────────────────────────────┤
│ Interval │ 1 │
├─────────────────────────┼────────────────────────────────────────────┤
│ Start Date │ 2026-02-01 00:00:00 (1st of month) │
├─────────────────────────┼────────────────────────────────────────────┤
│ Status │ Started │
└─────────────────────────┴────────────────────────────────────────────┘

Purpose: Generates invoices for all billable activities from the
previous month on the 1st of each month.

Five-Minute SLA Monitor

Schedule: SLAMonitor
Project: Service Management
Logic Flow: CheckSLABreaches

┌─────────────────────────┬────────────────────────────────────────────┐
│ Property │ Value │
├─────────────────────────┼────────────────────────────────────────────┤
│ Frequency │ Minute │
├─────────────────────────┼────────────────────────────────────────────┤
│ Interval │ 5 │
├─────────────────────────┼────────────────────────────────────────────┤
│ Start Date │ 2026-01-15 00:00:00 │
├─────────────────────────┼────────────────────────────────────────────┤
│ Status │ Started │
└─────────────────────────┴────────────────────────────────────────────┘

Purpose: Checks for cases approaching or breaching SLA targets every
5 minutes and sends alerts to supervisors.

Schedule Management

Creating a Schedule

  1. Define the schedule name and assign to a project
  2. Select the Logic Flow to execute
  3. Configure frequency and interval
  4. Set the start date/time
  5. Save—status automatically becomes Started
  6. Native CRM job is created and begins executing

Deactivating a Schedule

To pause a schedule without deleting it:

  1. Open the schedule record
  2. Deactivate the record
  3. Status changes to Stopped
  4. The native CRM job is paused
  5. No further executions occur until reactivated

Reactivating a Schedule

To resume a stopped schedule:

  1. Open the schedule record
  2. Activate the record
  3. Status changes to Started
  4. The native CRM job resumes
  5. Next Run Date is recalculated from the current time

Best Practices

Choose Appropriate Frequencies: Don't run schedules more frequently than necessary. Minute-level schedules consume more resources than daily schedules. Match frequency to actual business needs.

Consider Time Zones: Start dates are typically in UTC. Plan your schedules accounting for your users' time zones. A "daily morning report" should run at morning time in the relevant time zone.

Avoid Peak Hours: For resource-intensive flows, schedule execution during off-peak hours (nights, weekends) when possible. This reduces impact on user experience.

Design Flows for Scheduled Execution: Flows run by schedules don't have a triggering record or user context. Design them to:

  • Query for the records they need to process
  • Handle empty result sets gracefully
  • Process records in batches for large datasets

Monitor Execution: Regularly check Last Run Date to ensure schedules are executing as expected. Investigate if dates don't update as anticipated.

Use Meaningful Names: Include frequency and purpose in schedule names (e.g., "DailyMorningReport", "HourlySyncToSalesforce", "WeeklyCleanup").

Handle Failures Gracefully: Scheduled flows should include error handling. Log errors, send notifications for critical failures, and avoid letting one record's error stop processing of remaining records.

Document the Schedule: Use the Flow's description to document what the schedule does, why it runs at its frequency, and any dependencies.

Start Small with High-Frequency Schedules: If implementing a minute-level schedule, start with a longer interval (15 or 30 minutes) and reduce only if business needs require it.

Plan for Overlap: If a flow takes longer to run than the interval between executions, you may have overlapping runs. Design flows to handle this or increase the interval.