Field service schedules don't survive contact with the day. Technicians run early, run late, cancel, or get pulled to priority jobs — and someone has to manually adjust everything that follows. FSM Scheduling Automations handles that automatically, in real time, so dispatchers aren't spending their day reacting to the gap between the planned schedule and what's actually happening.
When an agent falls behind, the plugin shifts subsequent tasks right. When they finish early, it shifts tasks left and fills the open time with recommended assignments from the task recommendation engine. When a high-priority work order comes in or an agent marks time off, the right flows trigger automatically — reassigning tasks, alerting dispatchers, and keeping the schedule coherent without manual intervention.
The automation runs through 14 predefined flows built on Flow Designer, covering agent action monitoring, wait state management, schedule adjustments, task lifecycle events, and timeoff handling. Configuration is handled through system properties — thresholds, recommendation policies, and logging — so operations teams can tune behavior without custom development.
Core Features
1. Intra-Day Schedule Optimization
- Agent Schedule Status Monitoring: Tracks if agents are early, late, or on-time for:
- Start travel
- Start work
- Close task
- Dynamic Task Adjustment: Automatically shifts agent tasks left or right based on schedule deviations
- Threshold-Based Triggers: Configurable time difference thresholds (minutes or percentage) to trigger adjustments
2. Intelligent Task Management
Task Recommendation Engine
- Runs FSM task recommendation algorithms to suggest optimal task assignments
- Fills agent schedules with recommended tasks during available time slots
- Integrates with ServiceNow's Task Recommendation Processor
Auto-Assignment
- Automatically assigns work order tasks using Dynamic Scheduling
- Supports filter-based auto-assignment with configurable conditions
- Runs when tasks become unassigned or need reassignment
3. Real-Time Agent Monitoring Flows
The application includes 14 predefined flows:
Agent Action Monitoring
- FSM agent not take action: Monitors when agents don't take expected actions
Wait State Management
- FSM wait for travel start: Monitors travel start delays
- FSM wait for work start: Monitors work start delays
- FSM wait for work complete: Monitors work completion delays
Task Lifecycle Events
- Work order task cancelled: Handles task cancellation events
- High priority work order task created: Responds to urgent task creation
- High priority work order task updated: Handles priority task updates
Schedule Adjustments
- Agent tasks left adjustment: Shifts tasks earlier when agent is ahead of schedule
- Agent tasks right adjustment: Shifts tasks later when agent is behind schedule
- Run task recommendation: Triggers intelligent task recommendations
Timeoff Management
- Agent timeoff created: Handles agent timeoff/unavailability events
Notification & Flagging
- FSM send notification and flag the task: Sends UI notifications and flags problematic tasks
- Flag work order tasks: Marks tasks requiring attention
4. Flow Designer Actions (13 Custom Actions)
Schedule Analysis
agent_schedule_status_check: Determines if agent is early/late/on-timeget_action_to_monitor: Identifies which action to monitor (start travel, start work, close work)check_if_event_includes_date: Validates if events overlap with specific dates
Agent Operations
get_agent_by_event: Looks up agent information from schedule eventslookup_dispatchers: Finds relevant dispatchers for notificationsget_schedule_entry_time: Retrieves schedule entry timestamps
Task Movement
move_agent_tasks_to_left: Shifts all subsequent tasks earliermove_agent_tasks_to_right: Shifts all subsequent tasks later
Automation Triggers
run_fsm_task_recommendation: Executes task recommendation engineauto_assign_work_order_task: Triggers auto-assignment logic
Notifications
fsm_send_ui_notification: Sends bell notifications to dispatchers/agentsfsm_should_trigger_notification_action: Determines if notification should be sent
5. Utility APIs (FSMIntraDayOptimizationUtil)
- Notification Payload Creation: Formats notifications for agent timeoff, late arrivals, early completions
- Task Schedule Validation: Checks if tasks are on schedule with configurable thresholds
- Task Movement Operations: Integrates with
FSMTaskMoveUtilfor shifting tasks - Auto-Assignment Logic: Determines when to trigger Dynamic Scheduling
- Task Recommendation Execution: Runs recommendation algorithms for specific time windows
- Event Date Validation: Checks if schedule events include specific dates/times
- Timezone Handling: Converts schedule times across different timezones
6. Configuration & Properties
- System Properties: Configurable logging, task recommendation policies, and automation thresholds
- Property Categories: Organized FSM Scheduling Flow Properties
- UI Modules: Admin interface under Field Service application menu
Key Use Cases
- Proactive Schedule Management: Automatically detects when agents are running ahead or behind schedule and adjusts remaining tasks
- Intelligent Gap Filling: Recommends and assigns tasks to fill agent schedule gaps
- Real-Time Notifications: Alerts dispatchers when agents miss expected actions or tasks need attention
- Dynamic Workload Balancing: Redistributes tasks based on actual vs. planned progress
- Timeoff Impact Management: Handles schedule adjustments when agents create timeoff entries
- Priority Task Handling: Special workflows for high-priority work order tasks
Integration Points
- Work Management (wm_task): Primary table for work order tasks
- Dynamic Scheduling: Auto-assignment and optimization engine
- Task Recommendations: Intelligent task suggestion system
- Agent Schedules (cmn_schedule_span): Schedule and timeoff management
- Bell Notifications: Real-time UI notifications for dispatchers
- Migrating this plugin com.snc.sn_app_fsm_scheduling_flows from Glide Family to Store
- Required plugins -
- Work Order Management [com.snc.work_management]
- Dynamic Scheduling [com.snc.dynamic_scheduling]