Planning Widget

Attention: SAP Field Service Management documentation is now available at the SAP Help Portal. On 31 December 2020, docs.coresystems will no longer be available. Until that time, documentation will NOT be updated in docs.coresystems.

In a Nutshell

Within the dispatching board of SAP Field Service Management, the application where the planner feels at home, an additional feature is provided to speed up manual planning. Now, a planner can utilize the repurposed planning widget in the course of the planning process to automatically schedule jobs based on simple criteria like required skills and travel distance. Along with Best Matching Technician functionality Best Matching Technician, the widget is provided to improve the planning by providing AI-based assistance to the planner. This page describes the scope supported by the planning widget as well as provides insights into the behaviour of the widget.

Scope description

To those who have been using SAP Field Service Management for a while the widget will be familiar. The newly redesigned planning widget has inherited the UI of the old autoscheduling solution. The new planning widget, together with the Best Matching Technician, is designed to support semi-automated scheduling. Thus, it is a feature that a planner uses while manually interacting with the system to plan service jobs. For fully automated scheduling - planning that runs on a regular basis but can as well react to events without any human intervention, visit AI-based scehduling. Therefore, some features and functions were removed from the widget to align the functionality with the purpose of supporting the planner with manual scheduling of jobs.

Overall, the widget provides the following:

  • manual trigger for scheduling of queued jobs. Only manual trigger is supported (no scheduled run)
  • assigning jobs to in-house technicians displayed on the dispatching board (crowd technicians are not supported as of now)
  • viewing results of each scheduling run by looking at the list of scheduled and failed assignments
  • for failed assignments, the details of what went wrong are displayed

Use widget tabs

To successfully use the planning widget you need to be aware of its key behaviour patterns described below.

The widget has 3 tabs:

  • Queue
  • Successfully scheduled activities
  • Scheduling errors


The first tab - Queue - displays the jobs that are yet to be scheduled. You can add jobs to the queue by selecting them from the backlog and drag-and-dropping them to the queue. The queue will always display the total number of selected jobs to be scheduled, but within each scheduling cycle you will only be able to assign 40 jobs at a time.

  • you need to select jobs from the backlog (the list of unassigned jobs below the dispatching board) and manually push them to the queue
  • once you drop the jobs to the queue, the number in the circle will display the total amount of queued jobs. If, after dropping jobs into the queue, the number has not changed it means that the selected jobs have already been added to the queue. You can double check it by going to the next page (if you have one on the backlog), selecting some jobs from there - those will probably increase the total number of queued jobs. You can remove the jobs from the queue individually by right-clicking on a job and selecting Remove option or clear the queue altogether. For that, go to the bar above the tabs and hit “…” icon on the right. Select “Remove all” option. The queue will be cleared.

Important note: After each scheduling cycle, jobs that were not scheduled remain in the queue. After the round is finished, unscheduled jobs are queued behind all other jobs that have not yet been scheduled. Most frequently, the issue lies within the incorrect or missing data within a job. Unless you adjust the data, those jobs will remain sitting in the queue and need to be removed manually.

Successfully scheduled activities and Scheduling errors

Next to the queue, there are two status tabs displaying results of the last scheduling run. IMPORTANT NOTE: the results displayed in those two tabs are from the last scheduling round. This data is collected on the company level - NOT on the user level. That means, when you log in to the planning board you will not necessarily see the results of the last scheduling round triggered by you. Rather, you might see the results of the last scheduling round triggered either automatically or by another user (e.g. your fellow planner). Should you start scheduling using the “Schedule now” button, the displayed results will be most probably of the cycle triggered by you.

The successfully scheduled activities tab displays the jobs that were assigned to technicians. To view details of the assignment, such as the technician and date and time of assignment, click the options menu on an individual activity (three vertical dots) and select “Show details”. You will be navigated to the Activity view.

The scheduling errors tab displays the amount of jobs from the last optimization cycle that were not scheduled. By clicking on the tab, you can see individual jobs with corresponding error messages. The error messages can be segmented into two types: either there are issues with the data or the planning criteria or constraints were not matched. Issues with the data will cause the job to be excluded from scheduling altogether. Those issues are pointed out to the user in the error message (amongst others, a frequently apperaing one is missing address or geocoordinates thereof). Another type of error is indicating that no assignment could be found. Potential reasons include constraints that were not respected (see more below) or scheduling criteria of the plugin that could not be met (see more on the concept of plugins in the corresponding section of AI-based scehduling).

Scheduling logic and constraints

When using the widget to assign queued jobs to technicians you need to understand the logic by which assignments will be selected, the valid constraints, as well as how the system determines parameters relevant for scheduling.

Scheduling logic

Scheduling logic within the widget is determined by configurations of the used plugin Skills and distance (see AI-based scehduling, Plugins section for details). As of now, this scheduling logic cannot be altered. Thus, to find an optimal assignment for each job, all technicians that do not possess mandatory skills will be sorted out and the rest will be arranged by the travel distance to the job. The technician that possesses all skills to perform the job and has the shortest distance to drive to the job (from the previous one or their default address) will get the assignment.

Built-in constraints

Constraint Description
Work time patterns Jobs will be scheduled within technicians’ work time patterns. If a technician does not have a work time pattern for the relevant time window (between earliest start and determined due date) they will be considered to work 24/7.
Earliest start The widget will schedule the job after the maintained earliest start date. Should no earliest start be maintained, the current moment of scheduling is considered the earliest start date.
Due date The widget will try to assign a job to a technician prior to the due date. Should the due date lie in the past the due date can be prolonged by maintaining a value in a company setting SAP.FSM.WFM.ExtendDueDateInDay. The default value of the setting is 3, which means that overdue jobs will be scheduled by autoscheduler within 3 days from the moment of planning unless no suitable solution can be found (in which case the job will not be scheduled). The same applies to jobs that are due WITHIN the upcoming 3 days from the moment of planning.
Reachability by driving A job should be reachable for technicians by driving. Maximum time of driving allowed for any technician travel includes driving to the job from the previous location and is set to 6h.
Maximum job duration Maximum job duration should still allow for technician to travel to the job and execute it in one go. Thus, should a technician work 8h days without lunch breaks and the travel time to the job from their default address is 30 min, the job cannot be longer than 7h 30 min to be planned by the widget.
Technician type Only in-house technicians are supported. Crowd technicians will not be considered by the widget during scheduling.

Additional behaviour patterns

Below you will find a short description of system behaviours relevant for scehduling.

Taking over filters from dispatching board

When using the planning widget, you are taking over filters of the dispatching board for data display. In other words, if you filter the list of technicians to display only a subset of those, those are the technicians that will be considered for scheduling once you trigger the planning. Once you triggered scheduling, technicians that were displayed on the planning board at the moment of scheduling start are captured as available resources. No changes on the planning board will affect this selection. That means, if you start scheduling and then readjust the filter while the widget is still processing selected jobs will be assigned to technicians that you had on the board at the moment when you clicked “Schedule now”.

Complementing existing schedule

The planning widget is used as a complementary tool for otherwise manual planning. Therefore, the widget will be used while the planner is still working on a schedule that is not yet completely done. A schedule that is not yet finalized is not yet pushed to technicians. In SAP Field Service Management terms, it means that assigned jobs’ status is Planned - not yet Released. Therefore, the widget will consider time slots occupied by planned jobs as not available for scheduling to avoid overlaps that will have to be resolved manually by the planner. The widget will only schedule jobs to times that are free: time that is defined by the work time pattern as working time, not occupied by either a planned or a released job or an exclusive reservation.

The widget provides help assigning jobs to technicians. However, you cannot automatically release an assigned job using the widget. Releasing of jobs will have to be done by the planner in the same way they otherwise release jobs.

Determining technicians’ location for route calculation

When real-time tracking is enabled on the mobile device (see the mobile auto-location for guidance), the location of the technician can be consumed for assisted scheduling with the widget for calculation of the drivig time from their current location to the next assignment. The driving time to the future assignments will be calculated based on the locations of prior assignments. To consume the location, the location needs to be enabled for autoscheduling. See Live Location chapter of autoscheduling description for details on how to enable live location. The same as with fully automated planning, if live location is not enabled, the determination of the location will be done based on the current assignments. Should no assignments be available for the technician, the default address will be considered as the starting point for driving time calculation.

Driving time

The driving time is computed using the road network and considers the speed in of the particular road.

The following profile is used:

Road Speed KpH Speed MpH
Motorway 90 56
Secondary 55 34
Tertiary 45 28
Residential 25 16

The driving times are assigned to jobs as follows:

  • On first job of the day, it is assumed technician drives from home (or work address, if home is not available)
  • From every subsequent job, the driving distance to the job (from previous job) is assigned to the job itself. These jobs will have null value in the drive from field
  • The last job of the day will be scheduled without consideration for returning home. That means that the drive home will have to be executed outside of working hours.

Data prerequisites for using the widget

In order to be able to use widget, you need to make sure that the jobs and technicians in question fulfill data requirements.

Address of Technicians and Activities

The address of the technician is taken from the Person of type ‘EMPLOYEE’, which is synchronized with the UnifiedPerson. The address taken is of type HOME. If this address is not present, the WORK address is taken. When no address of type HOME or WORK is present, the technician is not taken into consideration for autoscheduling.

The activity address is taken from the Equipment, Business Partner, or Service Call (in this order).

Both addresses have to be be geocoded. From the system perspective for scheduling, non-geocoded addresses do not exist.

Activity Duration

It is very important for the system to be able to determine the duration of a job in order to be able to schedule it. To do that, either Planned duration or Initial estimate values will be checked. Should those fields lack values, the widget will try to determine the duration by looking at a delta between the Planned Start and Planned End fields. If activity’s duration cannot be determined, the job will not be scheduled.