# FSM Configuration Settings (Admin)

- Updated on Sep 11, 2024
- Published on Jun 8, 2022
- 7 minute(s) read

Mobileforce Field Service Management (FSM) can be configured with the following settings which govern the behavior of the **Schedule and Dispatch** screen.

**Please note:** The settings described herein can only be set and modified by Mobileforce FSM Administrators. For help with these settings, please contact your Mobileforce FSM Administrator.

This screen allows a dispatcher to schedule service tasks within an office. A user-friendly UI displays these scheduled tasks in a calendar. Also, the locations of tasks and technicians are displayed within a Google street map.

The key objects used by the Schedule & Dispatch object are as follows:

| Table        | Description                                                        |
|--------------|--------------------------------------------------------------------|
| Office       | Office(s) owning the tasks and technicians. Scheduling is done in a per-office basis. |
| ServiceTask  | A job that needs to be scheduled.                                  |
| User         | Technicians that can perform the tasks. Only users of role 'Technician' are considered. |
| Appointment   | A scheduled task                                                  |

## UI

There is no top-level screen type because Schedule and Dispatch is designed to be an inner screen that is invoked after selecting an office.

The URL for the dispatch and schedule screen is

```url
scheduledispatch.php?path=...&s=...&officeId=...
```

It requires three parameters, `path`, `s`, and `officeId`. `path` and `s` are the standard adlwebui parameters. `officeId` is the ID of the office EasyCLM object to schedule for.

There are two ways one can configure the schedule & dispatch screen, depending on whether the application has one office or multiple offices.

### Configuration for a single office scheduling

For single-office scheduling, the office ID is hard-wired into the URL. The `adlwebui-extension` property causes the web screen to go directly to the given URL instead of using an iframe. Also, it will automatically append the `path` and `s` parameters.

```xml
<screen type="web" name="Schedule &amp; Dispatch"
        iconportrait="..." iconlandscape="..." acl=""
        url="https://apps.mobileforcesoftware.com/adlwebui/scheduledispatch.php?officeId=1" >
  <data>
    <prop key="screenid">scheddisp</prop>
    <prop key="param-prefix">easyclm-</prop>
    <prop key="adlwebui-extension">1</prop>
    (other props)
  </data>
</screen>
```

### Configuration for multiple office scheduling

For multiple-office scheduling, the top-level Schedule & Dispatch screen is a datatable screen that displays all offices. It is configured such that clicking on an office will open the schedule & dispatch screen. Also, updates are disabled for this screen.

```xml
<screen type="datatable" name="Schedule &amp; Dispatch"
        iconportrait="..." iconlandscape="..." acl=""
        url="https://apps.mobileforcesoftware.com/adapters/easyclm/schema.php#Office" >
  <data>
    <prop key="screenid">scheddisp</prop>
    <prop key="param-prefix">easyclm-</prop>
    <prop key="listitem-link-template-Office">scheduledispatchscreen.php?[[]]&amp;officeId=[id]</prop>
    <prop key="table-actions-Office">list</prop>
    <prop key="content-body-header">Please select an office.</prop>
    (other props)
  </data>
</screen>
```

### Customizing displayed fields

The Schedule & Dispatch screen displays detailed data from tasks, technicians, and appointments. Customers may need to change what info is displayed by default, perhaps showing custom fields. To support this, the Schedule & Dispatch screen uses datatable layouts to allow customization of list data, popups, and detailed info.

To customize a particular list, popup or object details, create a layout with the layout type set to 'scheduler'. (This layout type can be changed via the configuration property 'layouttype'). The table below shows which UI component map to which layouts

| UI Component                  | Layout Table Name | Layout Action |
|-------------------------------|-------------------|---------------|
| List of Open Tasks            | ServiceTask       | list          |
| Open Task Details             | ServiceTask       | read          |
| Technician Popup              | User              | list          |
| Appointment Popup             | Appointment       | list          |
| Appointment Details            | Appointment       | read          |

### Customizing global action buttons

Scheduling often requires customized actions, such as autoscheduling or custom-built tools for a customer. To support this, the Schedule & Dispatch screen allows one to add custom global action buttons to the top right of the screen. This is done via configuration properties of the form `action-button-{id}`, where `{id}` is a unique identifier for the button.

Some example properties are:

```xml
<prop key="scheduler-action-button-plugRoute">Plug Route|https://apps.mobileforcesoftware.com/customers/servicevelocity/servicevelocity/calendar/scheduler/php/plug_route.php</prop>
<prop key="scheduler-action-button-smartRoute">Smart Route|https://apps.mobileforcesoftware.com/customers/servicevelocity/servicevelocity/calendar/scheduler/php/smart_route.php</prop>
<prop key="scheduler-action-button-mapAppointment">Map Appt.|https://apps.mobileforcesoftware.com/customers/servicevelocity/servicevelocity/calendar/scheduler/php/mapAppointment.php</prop>
```

### Configuration properties

The Schedule & Dispatch screen can be customized through several properties that can be either in the screen itself, or in the parent `app` or `applet` elements. These properties can also be prefixed either by the screen's parameter-prefix, specified by the `param-prefix` screen property, or by the global `scheduler-` parameter-prefix. This parameter prefix is optional when specified within the screen but required in the `app` or `applet` elements. For example, the property `min-range` can be specified as just `min-range` within the `screen` element, or as `scheduler-min-range` or `easyclm-min-range` when specified within the `screen`, `applet`, or `app` elements. This example assumes that the screen prop `param-prefix` is set to `easyclm-`.

The table below lists all supported configuration properties

| Property                                   | Default | Description                                                                                             |
|--------------------------------------------|---------|---------------------------------------------------------------------------------------------------------|
| all-offices                                | 0       | If 1, one can display all tasks, techs, and appts for all offices at once.                            |
| action-button-{id}                         |         | Data for a global action button to display on the top-right of the screen.                             |
| appointment-emails                         | 0       | If set to 1, emails will be sent whenever an appointment is locked or unlocked.                        |
| calendar-max-time                          | 21:00   | Maximum time in calendar that one can schedule an appointment                                           |
| calendar-min-time                          | 06:00   | Minimum time in calendar that one can schedule an appointment                                           |
| calendar-modes                             | timelineDay,timelineWeek,timelineMonth,listWeek | List of supported FullCalendar modes.                   |
| calendar-modes-default                     | timelineWeek | Default selected FullCalendar mode                                                                       |
| calendar-schedule-default-day               | Monday,Tuesday,Wednesday,Thursday,Friday | Default list of days that one can schedule an appointment for a technician.                         |
| calendar-schedule-default-end-time          | 17:00   | Default start time that one can schedule an appointment for a technician.                             |
| calendar-schedule-default-start-time        | 09:00   | Default end time that one can schedule an appointment for a technician.                               |
| calendar-snap-duration                      | 00:30   | Granularity of time that one can set a start time for an appointment.                                 |
| datatable-url                              | https://.../adapters/easyclm/schema.php | EasyCLM adapter schema URL.                             |
| datatable-{tableName}-listinfo             |         | List of fields to display for the table if it doesn't have a layout.                                  |
| datatable-{tableName}-marker-listinfo      |         | List of fields to display for the marker popup for the table if it doesn't have a layout.              |
| datatable-{tableName}-screenid             |         | ID of ADL screen to go to when opening an external window to display details for the named table.     |
| datatable-{tableName}-layouttype           |         | Datatable layout type to use when opening an external window to display details for the named table.   |
| date-displayformat                         |         | PHP date format to use for date fields                                                                   |
| datetime-displayformat                     |         | PHP date format to use for date and time fields                                                         |
| email-server                               | local   | Type of email server to use to send invitation emails. May be local, smtp, or adapter.                 |
| estimated-hours-default                     | 1       | Number of hours that a task is estimated to take if the task does not provide an estimate.              |
| industry                                   | service | Industry that this screen is scheduling for. Used to determine the displayed text in this screen.     |
| layouttype                                 | scheduler | Datatable layout type to use to fetch layouts for this screen                                          |
| multi-assign                               | 0       | If set to 1, multiple techs can be assigned to the same task.                                        |
| multi-day                                  | 0       | If set to 1, the scheduler will allow one to create multi-day appointments.                           |
| multi-day-split                            | 1       | If set to 1, multi-day appointments are split into multiple single-day appointments.                   |
| office-check-disable                        | 0       | If set to 1, checking that the technician is in the same office as the task is disabled.               |
| office-id                                  |         | Office ID to use if not specified in the URL.                                                         |
| param-prefix                               | easyclm- | Parameter prefix to use for this screen and for calls to the EasyCLM adapter.                        |
| range-default                              | 25      | Default range one can select for filtering in-range technicians                                         |
| range-max                                  | 150     | Maximum range one can select for filtering in-range technicians                                         |
| range-min                                  | 2       | Minimum range one can select for filtering in-range technicians                                         |
| service-status-filter-default              | 1       | Specifies the default value for the task status filter. It may be set to either the ID or the label of the status. |
| service-type-filter-default                | \*any\* | Specifies the default value for the task type filter. It may be set to either the ID or the label of the type.        |
| show-assigned-appointment-markers          | 0       | If set to 1, markers for all appointments will be displayed on the map.                                |
| show-only-schedulable                      | 1       | If set to 1, only open or assigned tasks with field 'to_be_scheduled' set to 1 will be displayed. This flag has no effect on tasks that are not open or assigned. |
| show-service-status-filter                  | 0       | If set to 1, a task filter dropdown is displayed that filters tasks by their status.                    |
| show-service-type-filter                    | 1       | If set to 1, a task filter dropdown is displayed that filters tasks by their type.                     |
| smtp-email                                 |         | From address to send emails when using SMTP. Used only when email-server is set to 'smtp'.             |
| smtp-host                                  |         | Host name of SMTP server. Used only when email-server is set to 'smtp'.                               |
| smtp-port                                  | 587     | Port number of SMTP server. Used only when email-server is set to 'smtp'.                             |
| smtp-username                              |         | User name used to access SMTP server. Used only when email-server is set to 'smtp'.                   |
| smtp-password                              |         | Password used to access SMTP server. Used only when email-server is set to 'smtp'.                   |
| technician-role-ids                        | 4       | Comma separated list of EasyCLM Role object IDs for technician roles. This is used to determine which users are technicians. |
| timezone                                    | (server timezone) | Server timezone to use for this page.                                                      |

### Timezone related FSM properties

```none
<prop key="scheduler-smart-route-date-display-format">dd-mm-yyyy</prop>
<prop key="scheduler-smart-route-time-display-format">24</prop>
<prop key="date-displayformat">d-m-Y</prop>
<prop key="datetime-displayformat">dd-mm-yyyy H:i:s</prop>
<prop key="time-displayformat">H:i:s</prop>
```

### Date related CPQ properties

```none
<prop key="cpq-date-displayformat">dd-mm-yyyy</prop>
<prop key="cpq-datetime-displayformat">dd-mm-yyyy H:i:s</prop>
```
