Loading
Upcoming Mandatory Changes to Public Key Infrastructure (PKI)Read More
Salesforce Enforces New Security Requirements in Summer 2026Read More
Agentforce Field Service and Operations
Table of Contents
Select Filters

          No results
          No results
          Here are some search tips

          Check the spelling of your keywords.
          Use more general search terms.
          Select fewer filters to broaden your search.

          Search all of Salesforce Help
          Create the Flows for Handling Service Resource Absences in the Legacy Agentforce Builder

          Create the Flows for Handling Service Resource Absences in the Legacy Agentforce Builder

          Create two flows, one for creating the resource absence, and the other for rescheduling the service appointments.

          Required Editions

          Available in: Lightning Experience
          Available in: Enterprise, Performance, Unlimited, and Developer Editions with Field Service and Foundations, or Einstein 1 Field Service Edition or Agentforce 1 Field Service Edition.

          Resource Absence Flow

          This flow returns a list of today’s service appointments that the service resource who requested the absence is assigned to, and creates a resource absence.

          Create an Autolaunched Flow that performs the following:

          • Gets the service resource’s ID
          • Determines the time zone and the operating hours for the primary service territory
          • Determines the time zone and the operating hours for the relocation service territory
          • Prevents creating duplicate absence records if the flow runs multiple times on the same day
          • Finds all of the appointments assigned to the mobile worker today

          Variables

          API Name Details
          saIdsFromAssignedResource

          Text

          Select to allow multiple values (collection)

          serviceResourceSAIds

          Text

          Select to allow multiple values (collection)

          Available for output

          currentDateTimeTZ

          Data Type: Text

          STMRelocation

          Data Type: Record

          Object: Service Territory Member

          timeZone

          Note: This variable isn’t used in the flow, but it’s required for the input of the agent action. You can enter a default value here, such as UTC.

          Data Type: Text

          Default Value: “”

          Available for input

          varEnd

          Data Type: Date/Time

          varRecordTypeId

          Data Type: Text

          varResourceId

          Data Type: Text

          varStart

          Data Type: Date/Time

          Formulas

          API Name Data Type Formula
          LocalDateTimeEndOfDayFormula Date/Time DATETIMEVALUE(TEXT(DATEVALUE({!currentDateTimeTZ})) + " 23:59:59")
          LocalDateTimeNowFormula Date/Time DATETIMEVALUE(TEXT(DATEVALUE({!currentDateTimeTZ})) + " 00:00:00")
          TodayEndFormula Date/Time DATETIMEVALUE(TEXT(DATEVALUE({!currentDateTimeTZ})) + " 23:59:59")
          TodayStartFormula Date/Time NOW()

          Elements

          Flow Element Configuration
          Get Records

          Label: Get Service Resource ID

          Salesforce Object: Service Resource

          Filter: All Conditions Are Met (AND)

          Field: User ID, Operator: Equals, Value: Running User > id

          Get Records

          Label: Get Primary Service Territory Member

          Salesforce Object: Service Territory Member

          Filter: Custom Condition Logic Is Met

          1. Field: Resource ID, Operator: Equals, Value: Service Resource from Get Service Resource ID > Resource ID

          2. Field: Territory Type, Operator: Equals, Value: Primary

          3. Field: Start Date, Operator: Less Than or Equal, Value: TodayStartFormula

          4. Field: End Date, Operator: Greater Than, Value: TodayStartFormula

          5. Field: End Date, Operator: Is Null, Value: True

          Condition Logic: 1 AND 2 AND 3 AND (4 OR 5)

          Get Records

          Label: Get Relocation Service Territory Member

          Salesforce Object: Service Territory Member

          Filter: Custom Condition Logic Is Met

          1. Field: Resource ID, Operator: Equals, Value: Service Resource from Get Service Resource ID > Resource ID

          2. Field: Territory Type, Operator: Equals, Value: Relocation

          3. Field: Start Date, Operator: Less Than or Equal, Value: TodayStartFormula

          4. Field: End Date, Operator: Greater Than or Equal, Value: TodayStartFormula

          5. Field: End Date, Operator: Is Null, Value: True

          Condition Logic: 1 AND 2 AND 3 AND (4 OR 5)

          How to Store Record Data: Choose fields and assign variables (advanced)

          Record: STMRelocation

          Decision

          Label: Is Relocation Service Territory Member?

          Outcome Label: Yes

          Default Outcome Label: No

          Filter: All Conditions Are Met (AND)

          Resource: STMRelocation, Operator: Is Blank, Value: False

          Default Outcome Label: No (Default)

          No > Get Records

          Label: Get Service Territory Primary Operating Hours

          Salesforce Object: Service Territory

          Filter: All Conditions Are Met (AND)

          Field: Territory ID, Operator: Equals, Value: Service Territory Member from Get Primary Service Territory Member > Territory ID

          How to Store Record Data: Choose fields and let Salesforce do the rest

          Field: OperatingHoursId

          Get Records

          Label: Get Time Zone Primary

          Salesforce Object: Operating Hours

          Filter: All Conditions Are Met (AND)

          Field: Operating Hour ID, Operator: Equals, Value: Service Territory from Get Service Territory Primary Operating Hours > Operating Hour ID

          Action

          Action: Get Current Time

          Label: Get Current Time Primary

          TimeZone: Operating Hours from Get Time Zone Primary > Time Zone

          Manually assign variables (advanced)

          Store Output Values: currentDateTimeTZ

          Yes > Get Records

          Label: Get Service Territory Relocation Operating Hours

          Salesforce Object: Service Territory

          Filter: All Conditions Are Met (AND)

          Field: Territory ID, Operator: Equals, Value: STMRelocation > Resource Territory ID

          How to Store Record Data: Choose fields and let Salesforce do the rest

          Field: OperatingHoursId

          Get Records

          Label: Get Time Zone Relocation

          Salesforce Object: Operating Hours

          Filter: All Conditions Are Met (AND)

          Field: Operating Hour ID, Operator: Equals, Value: Service Territory from Get Service Territory Relocation Operating Hours > Operating Hour ID

          Action

          Action: Get Current Time

          Label: Get Current Time Relocation

          TimeZone: Operating Hours from Get Time Zone Relocation > Time Zone

          Manually assign variables (advanced)

          Store Output Values: currentDateTimeTZ

          Connect the No and Yes paths > Get Records

          Label: Get Existing Resource Absence

          Salesforce Object: Resource Absence

          Filter: All Conditions Are Met (AND)

          1. Field: Resource ID, Operator: Equals, Value: Service Resource from Get Service Resource ID > Resource ID

          2. Field: Start Time, Operator: Less Than or Equal , Value: LocalDateTimeEndOfDayFormula

          3. Field: End Time, Operator: Greater Than or Equal, Value: LocalDateTimeNowFormula

          4. Field: Type, Operator: Equals, Value: Medical

          How to Store Record Data: Choose fields and assign variables (advanced)

          Where to Store Field Values: In separate variables

          Field: RecordTypeId, Variable: varRecordTypeId

          Field: ResourceId, Variable: varResourceId

          Assignment

          Label: Assign Current Date and Time

          Variable: varStart, Operator: Equals, Value: TodayStartFormula

          Variable: varEnd, Operator: Equals, Value: TodayEndFormula

          Decision

          Label: Is Resource Absence on Gantt?

          Outcome Label: No

          Filter: All Conditions Are Met (AND)

          Resource: varResourceId, Operator: is Null, Value: True

          Note: You can add more fields that were fetched throughout the flow, check if they’re not Empty or Null, and determine if the resource absence should be created.

          Default Outcome Label: Yes (Default)

          No > Get Records

          Label: Get Record Type

          Salesforce Object: Record Type

          Filter: All Conditions Are Met (AND)

          Field: Record Type Name, Operator: Equals, Value: Non_Availability

          Create Records

          Label: Create Resource Absence

          How to set record field values: Manually

          Salesforce Object: Resource Absence

          1. Field: End Time, Value: LocalDateTimeEndOfDayFormula

          2. Field: Start Time, Value: TodayStartFormula

          3. Field: Record Type ID, Value: Record Type from Get Record Type > Record Type ID

          4. Field: Resource ID, Value: Service Resource from Get Service Resource ID > Resource ID

          5. Field: Approved, Value: True

          6. Field: Type, Value: Medical

          Connect the No and Yes paths > Get Records

          Label: Get Service Appointment

          Salesforce Object: Service Appointment

          Filter: All Conditions Are Met (AND)

          1. Field: Scheduled Start, Operator: Greater Than or Equal, Value: TodayStartFormula

          2. Field: Scheduled End, Operator: Less Than or Equal, Value: TodayEndFormula

          3. Field: Territory ID, Operator: Equals, Value: Service Territory from Get Service Territory Primary Operating Hours > Territory ID

          How Many Records to Store: All records

          Choose fields and let Salesforce do the rest: Id is entered by default

          Loop

          Label: Iterate Over Service Appointments for Today

          Collection Variable: Service Appointments from Get Service Appointments

          Specify Direction for Iterating Over Collection: First item to last item

          For Each > Assignment

          Label: Set List of Service Appointment IDs

          Set Var Values: saIdsFromAssignedResource, Operator: Add, Value: Current Item from Loop Iterate Over Service Appointments > Service Appointment ID

          After Last > Get Records

          Label: Get Service Appointment from Assigned Resource

          Salesforce Object: Assigned Resource

          Filter: All Conditions Are Met (AND)

          1. Field: Service Appointment ID, Operator: In, Value: saIdsFromAssignedResource

          2. Field: Service Resource ID , Operator: Equals, Value: Service Resource from Get Service Resource ID > Resource ID

          How Many Records to Store: All records

          How to Store Record Data: Choose fields and let Salesforce do the rest

          1. Field: Id

          2. Field : ServiceAppointmentId

          Loop

          Label: Iterate Over Assigned Resource for Today

          Collection Variable: Assigned Resources from Get Service Appointment from Assigned Resource

          For Each > Assignment

          Label: Set List of Service Appointment IDs for Today

          Variable: serviceResourceSAIds, Operator: Add, Value: Current Item from Loop Iterate Over Assign Resource for Today > Service Appointment ID

          Your flow should look like this.

          Resource Absence flow

          Reschedule Service Appointments Flow

          This flow attempts to reschedule the service resource’s service appointments one at a time.

          Create an Autolaunched Flow with the following details.

          Variables

          API Name Details
          saResults

          Data Type: Text

          Available for output

          serviceAppointmentId

          Data Type: Text

          Available for input

          Elements

          Flow Element Configuration
          Get Records

          Label: Get Scheduling Policy

          Salesforce Object: Scheduling Policy

          Filter: All Conditions Are Met (AND)

          Field: Scheduling Policy Name, Operator: Equals, Value: Customer First

          Subflow

          Subflow: Field Service: Schedule Service Appointment

          Label: Reschedule Service Appointment

          serviceAppointmentId: Included, Value: serviceAppointmentId

          Decision

          Label: Was Reschedule Successful?

          Outcome Label: No

          Default Outcome Label: Yes

          Filter: All Conditions Are Met (AND)

          Resource: Outputs from Reschedule Service Appointment > serviceAppointmentId, Operator: Equals, Value: Blank Value (Empty String)

          No > Action

          Action: Schedule Service Appointment (scheduleServiceAppointment)

          Label: Retry Reschedule

          Scheduling Policy ID: Scheduling Policy from Get Scheduling Policy > Record ID

          Service Appointment ID: serviceAppointmentId

          Connect the No and Yes paths > Assignment

          Label: Assign Service Appointment ID

          Variable: saResults, Operator: Equals, Value: Outputs from Reschedule Service Appointment > serviceAppointmentId

          Your flow should look like this.

          Reschedule Appointments flow

           
          Loading
          Salesforce Help | Article