Guidelines for Using the Scheduling Policy Commit Mode
Define what happens when a dispatcher or scheduling operation makes a change to the schedule that conflicts with an ongoing optimization process.
Required Editions
| Available in: both Salesforce Classic (not available in all orgs) and Lightning Experience |
| The Field Service core features, managed package, and mobile app are available in Enterprise, Unlimited, and Developer Editions. |
This is a Field Service managed package feature.
Various conflicts can occur in the schedule during an optimization run. For example, while optimization is running, a dispatcher pins a service appointment, a customer cancels an appointment at the last minute, or an emergency service appointment is created and scheduled automatically. These actions can result in discrepancies between the schedule at the start of optimization and the schedule upon completion. If a scheduling change during optimization creates scheduling conflicts, you can commit the optimization recommendations despite the conflicts or roll back to the original schedule without making any changes.
- Always Commit (default for Salesforce orgs created before Summer ’23): If a user tries to make a potentially conflicting change to the schedule while optimization is in progress, a message is shown to warn the user that their change can conflict with the optimization results, but lets them opt to save the change. If the conflicting change is made by automation or a user outside of the Classic Dispatch Console, no message is shown.
- Rollback (default for Salesforce orgs created from Summer ’23): If a potentially conflicting change is made to the schedule for the dates being optimized—with a buffer day before and after—don’t complete the optimization. This choice is a conservative scheduling option that helps you avoid possible conflicts. For example, if you begin a scheduled job to optimize from April 2 to April 5, changes made to the April 1 to April 6 schedule cause the optimization to be rolled back. Changes include creating and deleting resource absences and service appointments, any resource absence updates, and updates to the service appointment assigned resource, Scheduled Start or Scheduled End.
The default when you’re using Enhanced Scheduling and Optimization is Rollback, but consider selecting Always Commit during global optimization. Rollback is recommended with in-day optimization schedule policies due to a high chance of conflicts. During night-optimization, where conflicts are limited, consider selecting Always Commit.
Here are examples of potentially conflicting schedule changes and what happens depending on the selected Commit Mode.
| Scenario | Always Commit | Rollback |
|---|---|---|
| The dispatcher pins a service appointment while an optimization request is running (the Pinned checkbox on the service appointment is selected). | The pinned service appointment remains in its place. An overlap can occur with another service appointment if optimization had planned to move the pinned appointment to schedule another job in place of it. | The pinned service appointment remains in its place. An overlap can occur with another service appointment. |
| The status of a service appointment is updated. | The schedule is updated. The service appointment can move to another time and resource as per the optimization results. The status remains unchanged from the latest update. | The optimization result is committed. |
| A service appointment is created and scheduled. | The schedule is updated as per the optimization results. An overlap can occur with another service appointment. | No changes are made to the schedule. |
| The dispatcher schedules an appointment that is currently unscheduled. | During optimization, the optimization run overrides the dispatcher's decision and assigns the appointment to the service resource suggested by the engine (commits the recommended solution). | No changes are made to the schedule. |
| A scheduled service appointment is canceled. | If a scheduled service appointment is canceled during an optimization run, the service appointment remains canceled and doesn't appear on the Gantt. | No changes are made to the schedule. |
| A scheduled service appointment is unscheduled. | The schedule is updated as per the optimization results. | No changes are made to the schedule. |
| Optimization tries to schedule a service appointment and the unscheduled appointment is canceled. | Scheduled Start and Scheduled End times are added to the service appointment. No assigned resource is added to the service appointment. | No changes are made to the schedule. |
| A resource absence is created within the optimization horizon. | The schedule is updated as per the optimization results. An overlap can occur with another service appointment. | No changes are made to the schedule. |
| A resource absence is updated within the optimization horizon. | The schedule is updated as per the optimization results. An overlap can occur with another service appointment. | No changes are made to the schedule. |
| A resource absence is deleted within the optimization horizon. | The schedule is updated as per the optimization results. | No changes are made to the schedule. |
| A scheduled service appointment is rescheduled to another time (the Scheduled Start Time or Scheduled End time, or both, is updated). | The service appointment moves to another time or service resource, or both, as per the optimization results. | No changes are made to the schedule. |
| A scheduled service appointment is rescheduled to another service resource (Assigned Resource is updated). | The service appointment moves to another time or service resource, or both, as per the optimization results. | No changes are made to the schedule. |
| The Arrival Window Start time of a service appointment or Arrival Window End time, or both, is updated. | The service appointment moves to another time or service resource, or both, as per the optimization results. | No changes are made to the schedule. |

