Loading

Service Appointment SchedStartTime and SchedEndTime Unexpectedly Modified During Travel Status Transition in Field Service

Data pubblicazione: Jul 6, 2026
Descrizione

In Salesforce Field Service, when a technician updates a Service Appointment status to In Transit (or your equivalent travel status) using the Field Service Mobile app, the SchedStartTime and SchedEndTime fields may be unexpectedly modified. The Gantt chart and dispatch planning reflect these new times, causing the appointment to appear to move from its originally scheduled slot. Field history confirms that custom automation — not the FSL scheduling engine — is responsible for these changes.

Risoluzione

Cause:

When a technician updates a Service Appointment status (for example, from Dispatched to In Transit), custom automation — typically a record-triggered Flow or Apex trigger — may be configured to fire on that status change. If this automation includes an Update Records action or DML statement that writes to the SchedStartTime or SchedEndTime fields, those fields are overwritten with new values (often the current timestamp or a calculated value based on travel duration).

This behavior is problematic because SchedStartTime and SchedEndTime are managed by the Salesforce Field Service scheduling engine and dispatch operations. These fields represent the planned customer commitment and should not be modified by status-progression automation. When they are overwritten, the Gantt chart and dispatch planning integrity are compromised — the scheduled appointment appears to move, confusing resource planning and customer communication.

The correct fields for travel tracking are ActualStartTime, ActualEndTime, and custom fields such as FSL__ActualTravelDuration__c. Status-change automation should update only these travel-tracking fields, never the scheduled commitment times.

Resolution

To identify and remediate automation that is overwriting SchedStartTime and SchedEndTime during travel status transitions, follow these steps:

Identify the Automation

1. Open Flow Builder.
2. Filter by "When a Service Appointment record is updated".
3. Review each flow for an Update Records action that modifies SchedStartTime or SchedEndTime when the Service Appointment Status field changes to In Transit (or your equivalent travel status).
4. Alternatively, check the Service Appointment object for Apex triggers. Enable Debug Logs on the Field Service Mobile user, capture a travel status transition, and search the log for `FLOW_START_INTERVIEWS` or `DML_BEGIN` entries that reference SchedStartTime or SchedEndTime.
5. Review the Field History on a Service Appointment record. The "Last Modified By" user or integration on the SchedStartTime field will point to the automation owner.

Remove Field Assignments

Once the Flow or Apex trigger has been identified:

1. Open the Flow in Flow Builder (or the Apex trigger in the Developer Console).
2. Locate the Update Records action (or DML statement) that writes to SchedStartTime and SchedEndTime.
3. Remove SchedStartTime and SchedEndTime from the field assignments. Keep only the travel-tracking fields: ActualStartTime, ActualEndTime, `FSL__ActualTravelDuration__c`, or custom travel fields.
4. Save and activate the Flow (or deploy the Apex trigger).

Verify the Fix

1. In your Field Service Mobile app, transition a Service Appointment status to In Transit.
2. Check the Service Appointment record in Salesforce. Confirm that SchedStartTime and SchedEndTime remain unchanged.
3. Confirm that travel-tracking fields (ActualStartTime, ActualEndTime) are populated as expected.
4. Verify that the Gantt chart displays the appointment at its original scheduled time.

Risorse aggiuntive

FAQ

**Q: Can I use a Flow to update SchedStartTime when a technician starts travel?**

A: No. SchedStartTime should only be managed by the FSL scheduling engine or dispatch. If you need to record when travel actually began, use ActualStartTime or a custom field instead.

**Q: Why does the Gantt chart move when I update the Service Appointment status?**

A: If custom automation is overwriting SchedStartTime or SchedEndTime during the status transition, the Gantt chart will reflect the new times. Audit your Flows and Apex triggers to ensure they do not modify these fields.

**Q: What fields should I update in a status-change Flow?**

A: Update only travel-tracking and operational fields: ActualStartTime, ActualEndTime, FSL__ActualTravelDuration__c, or custom fields. Never update SchedStartTime, SchedEndTime, or other scheduling fields managed by FSL.

Additional Resources

For related information on Service Appointment fields and automation, see:

- Actual Start Time and Actual End Time Fields Are Blank in Salesforce Field Service — guidance on populating travel-tracking fields.
- How Scheduled End Date Is Calculated in a Salesforce Field Service Multi-Day Service Appointment — understanding FSL engine recalculation of scheduled times.

Numero articolo Knowledge

005388586

 
Caricamento
Salesforce Help | Article