Optimize schedules

Using optimization to automatically schedule multiple jobs

Skedulo optimization now uses route optimization as the default implementation throughout the Skedulo web app.

Overview

Skedulo uses optimization to efficiently schedule multiple jobs and resources across a scheduling window, taking into account multiple constraints such as skills matching, resource availability, location, and travel time.

Optimization uses a constraint solving algorithm that attempts to find a valid scheduling solution based on the selected jobs and constraint options included in your request.

You can optimize schedules of work using the Skedulo web application or remotely using the Skedulo API:

  • In the Skedulo web application, you can select a number of jobs on the swimlane and click the Optimize button to open constraints menu and run an optimization query.

    This provides optimization results in real time on the swimlane, which you can then accept, modify manually, or decline.

  • In the web application, you can use the Optimization schedules settings page to schedule a batch optimization.

  • Use the /optimization REST API to create optimization requests or schedule a batch optimization remotely.

    Batch optimization can be scheduled to run at a scheduled time daily, weekly, monthly, or ad hoc, with results displayed on the swimlane.

See the Getting started with optimization section for tutorials for how to create optimization requests using each of the above methods.

Usage limitations

Optimization is an expensive operation, therefore it is necessary to limit the number of jobs included in a request to provide real time response to schedule problems. The higher the number of jobs, resources, and activities being optimized, the longer the optimization engine will take to find a solution.

For this reason, Skedulo recommends using the optimization feature to process the smallest number of jobs and resources as is practical.

Skedulo recommends grouping jobs to remain within the 2000 jobs per request limitation. You can use several methods to group jobs:

  • Region: Filters the jobs you want to schedule by region to schedule jobs one region at a time.
  • Resource Type: Groups jobs by resource type required to complete the job. For example, a person or a physical asset (non-human resource, usually an object, such as a truck, forklift, and so on).
  • Resource Category: Groups jobs by the category of work that needs to be performed by the resource.
  • Resource Tags: Groups jobs by the skills the resource is required to have in order to carry out the job.

Where you have a high number of jobs that require automated scheduling using optimization, Skedulo recommends that you use these filters to group your jobs, then use optimization to schedule jobs accordingly for that group.

The efficiency of this process depends highly on the number of jobs you want to schedule using optimization.

Depending on the number of jobs and resources, you can schedule all jobs for that group for the entire scheduling window, or you may need run a new optimization request for each day for each group.

These filters are available in the scheduling page of the Skedulo web application. For more information about using optimization to schedule jobs using the web application, see Automate scheduling with optimization.

You can also use the Skedulo GraphQL API and the Optimization API to filter query jobs and optimize based on other criteria. This is discussed further in this chapter.

Optimization constraints

Optimization uses hard, medium, and soft constraints to determine how to best schedule a set of jobs according to the scheduling options.

Constraints are a set of business rules applied to both jobs and resources that the engine must follow when determining the optimal solution.

These rules are based on the job settings and scheduling options that are configured when jobs are created. Optimization uses these rules to determine when to schedule each job.

  • A hard constraint must not be broken when scheduling a job. For example, one resource cannot be assigned two different jobs at the same time.

  • A medium constraint constrains the number of unscheduled job allocations in the solution. This minimizes the number of unscheduled jobs. Higher medium score violations indicate that a number of jobs might not have been scheduled by the request.

  • A soft constraint may be violated under certain circumstances in favor of a better overall scheduling outcome. For example, a resource prefers not to travel more than 15 minutes from their home address on Fridays.

Hard, medium, and soft scores are returned by the Optimization and Planr APIs when making /schedule or /suggest requests.

These scores are primarily for Skedulo’s internal use and indicate how successful the schedule is in terms of respecting constraints in the context of the request.

The engine accounts for the following constraints when deciding on a schedule:

Multiple resource requirements

Optimization can create a valid scheduling solution for jobs that have resource requirements for multiple skill sets and therefore, need more than one resource to work on the same job.

For example, a job may require a qualified high-voltage electrician, two third-year electrical apprentices, and a laborer, all with a Working At Heights certificate. Set a time for the job to be carried out and optimization can assign the resources required based on the skills required to complete the job.

Resource Inclusion and Exclusion

The optimization engine will also consider resources included in exclusion or inclusion lists (Skedulo for Salesforce users will need to set up an “Account Resource Score”).

Where a resource is on both inclusion and exclusion lists, the optimization engine treats the resource as excluded and will not allocate jobs to them.


Developer documentation


The Skedulo core data model


Get started with Skedulo Plus extensions

Download the Skedulo Plus examples repository to get started with Skedulo Plus extensions.


Skedulo concepts

This chapter provides an overview of core Skedulo concepts and our data model.


API Overview

This section will help you get started with using the Skedulo API.


Authentication and authorization


Authentication for Skedulo


Authentication requirements and API tokens

Authentication requirements for Skedulo API users


Build and deploy a standalone web page (formerly known as Connected Pages)

Developing web extensions (connected pages) for your organization.


Calculate the travel time and distance between multiple locations


Create a webhook

Establishing and using webhooks.


Create and configure work

Creating and configuring jobs in Skedulo


Create and customize objects, and fields

How to add custom data objects and fields in Skedulo.


Create and deploy packages with the SDK

Create and deploy a suite of custom content to your Skedulo organization using packages.


Create custom objects and fields with the Skedulo API

Using the Skedulo API to create custom objects and unique fields.


Create custom objects in Salesforce

How to add data objects in Skedulo for Salesforce.


Flat page components

Configure components for flat pages in Skedulo Plus extensions.


Generate a session ID for geoservices requests


Get started with GraphQL

Use the Skedulo GraphQL schema to interact with objects and fields.


Get started with libraries

The generated library using Skedulo SDK


Get started with Skedulo packages

Create a Skedulo package using the SDK.


Getting started with Skedulo

This section will walk you through basic setup and authentication requirements for using Skedulo and its APIs.


Install and set up Skedulo Packages SDK

Install and set up the Skedulo SDK.


Install the GraphiQL web extension

Add the GraphiQL web extension in the Skedulo web application.


Install the Skedulo CLI for mobile extensions

Install dependencies and tools for creating Skedulo Plus extensions.


Introduction


Introduction to custom functions

How to use the Skedulo CLI to develop custom functions for web and mobile extensions.


Introduction to custom objects and fields in Skedulo

Overview of custom object and field documentation and requirements.


Introduction to pages

Understanding pages on the Skedulo Pulse Platform.


Introduction to Skedulo Plus extensions


Introduction to the Skedulo CLI

What the Skedulo CLI is and what it does.


Introduction to triggered actions

Perform actions in response to Skedulo events.


List page components


sked tenant login


Manage scheduling rules and conflicts on the Skedulo Pulse Platform


Mobile extensions page type definition

Introduction to the page types in the UI definition file.


Object and field permissions (deprecated)

Permission restrictions for schedulers and resources.


Overview of package components

Get to know the types of components that can be used in the Skedulo packages.


Overview of Skedulo picklists

Get to know object picklists in the Skedulo web application.


Overview of triggered actions and webhooks

Introduction to triggered actions and webhooks, and what can be achieved with each.


Provision user accounts via the API

How to create a user record via REST API on the Skedulo Pulse Platform.


Schedule rules and violations (conflicts)


Skedulo Plus extension components overview

Understand the pages and components that are used to build Skedulo Plus extensions.


Skedulo Plus extension definition file structure


Skedulo Plus extensions

Create custom mobile page views for the Skedulo Plus mobile application.


Skedulo v2 mobile app extensions for custom forms

Use the SDK to developer mobile extensions for the Skedulo v2 mobile app.


Skedulo v2 mobile extension

Custom mobile page views for the Skedulo v2 mobile application using the SDK.


Suggest: Resources and times for a job

Optimize resources, schedule, and dispatch a job using the optimize/resource_suggestions endpoint and GraphQL


Understand record access policy rules


Use list views

Access list view functionality and manage permissions.


Use tags for resources and jobs

Using resource skill tags and assigning tags to jobs.


Using the Geoservices API

Overview of the Geoservices API and location management in Skedulo.


Create an object and add custom fields

This article covers how to create the Arcade Games custom object and set up some custom fields.


Manage pages

View and modify the pages available on your tenant.


Manually run a job to evaluate pre-existing schedules

Using a service that can evaluate records against the Rule service’s core rules.


Configure the navigation menu

This article covers how to configure the navigation menu.


Add Contact tags to Accounts using GraphQL

Using GraphQL to add contacts to accounts.


Add custom fields to your custom object in Salesforce

How to create custom fields in Skedulo for Salesforce.


Authentication for Skedulo for Salesforce

Authentication requirements for Skedulo for Salesforce managed package users.


Build and deploy embedded web extensions

Creating web extensions as embedded custom tabs on jobs and resources pages.


Build and deploy multiple pages as a package

Creating web extensions for the Skedulo web application using the Skedulo Packages SDK.


Build and deploy Skedulo v2 mobile app extensions

Build mobile extensions using Skedulo SDK.


Calculate distance and travel time


Control access to application functionality


Create a triggered action for modified objects

Setting up a new triggered action that triggers when a Skedulo object is modified.


Create and customize pages

Create pages on the Skedulo Pulse Platform using Horizon and Breeze components.


Create custom objects and fields in the Skedulo Pulse Platform

How to create custom objects and fields in the Skedulo Pulse Platform.


Create custom objects and fields in the Skedulo Pulse Platform

How to add custom objects to meet your use case requirements.


Create libraries with the SDK

A package component for writing re-usable code that is shared amongst multiple package components.


Create pages

Create and preview pages on the Skedulo Pulse Platform.


sked artifacts custom-field


sked artifacts custom-object


sked package deploy


Deprecated: Use provisioning to create multiple user accounts

IMPORTANT!! Provisioning user records in bulk via REST API is deprecated. Users should use the Skedulo web app Data loader for user record management.


sked function dev


sked web-extension dev


Develop a function

How to use the Skedulo CLI to develop custom functions for extensions, automations, and integrations.


Error handling and debugging triggered actions and webhooks

How retries work and how to view webhook and triggered action logs.


Estimate the distance and travel time between locations on a route


Flat page components


sked artifacts function

Manage the retrieval and deployment of functions


sked function generate


sked web-extension generate-ssl-cert


Get a location's Place ID


Get started with optimization


Get started with Skedulo Plus extensions

Learn how to get started with Skedulo Plus extensions.


sked artifacts horizon-page


sked artifacts horizon-template


Install the Skedulo CLI

How to download and install the Skedulo CLI.


Integrate with the Rules service


Introduction to Skedulo libraries

Get to know how dependency works with Skedulo libraries.


Job lifecycle

Skedulo job and allocation lifecycle.


sked package list


sked tenant list


List pages

Configure list pages for mobile extensions.


Make API calls from Salesforce

Making calls to the Skedulo API from Salesforce using Apex


Manage record access policies via the API


Manage resource availability

Resource availability and scheduled activities.


Metadata for Skedulo Plus extensions


sked artifacts mobile-extension

Manage the retrieval and deployment of mobile extensions.


Modify picklist items and field dependencies

Use the Skedulo API to modify picklist values and field dependencies.


Override the default Create record page

This article covers how to override the default settings of the arcade-games-create page.


Page types

Get to know the different page types.


Query the GraphQL schema

Querying the Skedulo GraphQL schema.


Quickstart

An introduction to using the Skedulo API


sked package register


Role-based permissions (deprecated)

Setting permissions for users and objects based on their role.


Schedule or defer a webhook

Defer a webhook or schedule a webhook to trigger at a specified time.


Section

A container of components that is used to group data into regions on a flat page.


Set Skedulo Plus extension context and metadata

Configure the context and metadata for a Skedulo Plus extension to display the extension on the job details screen or as a global form for all resource users in your team.


sked artifacts


Skedulo API user


Skedulo for Salesforce permission sets

Assigning the correct permission sets for Skedulo for Salesforce users.


Skedulo REST API


Sort list views

Use the Sort option to sort your list view data.


Suggest: Times to schedule a job

Optimize resources, schedule, and dispatch a job using the optimize/suggest endpoint and GraphQL


sked artifacts triggered-action

Manage the retrieval and deployment of triggered actions.


Use shared components library

A package library that share react components for both web extension and mobile extension.


Use the Skedulo REST API

Using the Skedulo REST API endpoints to send and retrieve data remotely.


User permissions in Skedulo for Salesforce


sked artifacts user-role

Manage the retrieval and deployment of user roles.


sked artifacts web-extension

Manage the retrieval and deployment of web extensions.


sked artifacts webhook

Manage the retrieval and deployment of webhooks.


Override the default View record page

This article covers how to override the default settings of the arcade-games-view page.


Override the default Edit record page

This article covers how to override the default settings of the arcade-games-edit page.


Skedulo Plus extension files and data

Understand the file structure and data definitions for Skedulo Plus extensions.


Add Resource tags to Jobs using GraphQL

Using GraphQL to create a job with tags for resource skill requirements.


Address geocoding and autocompletion


Authenticate with the Skedulo CLI

How to authenticate to Skedulo tenants using the Skedulo CLI.


Authorization


Automate responses to changes using webhooks and triggered actions

Integrating Skedulo with third party applications using webhooks and triggered actions.


Change the extension title and summary

Modify the UI definition to change the title and description fields of your Skedulo Plus extension.


Create a scheduled optimization

Create large scheduling queries to be run at a specified time daily, weekly, or monthly.


Create and customize list views

Creating and customizing list views in the Skedulo web app.


Create and use record access policies


Customize pages

Edit pages and customize your experience on the Skedulo Pulse Platform.


Deskless Productivity Cloud fundamentals

Understanding the fundamentals of interacting with the Skedulo APIs and the Deskless Productivity Cloud.


sked tenant display


Edit the default columns

Configure which fields you want available to be displayed on your list view.


Error codes

A list of error codes you might encounter when creating or customizing pages.


Estimate travel times between work items (deprecated)

Using the Planr Geoservices endpoint to approximate resource travel time.


Extend Skedulo functionality with custom functions

How to use the Skedulo CLI to develop custom functions for web and mobile extensions.


Extend Skedulo functionality with functions

How to use Skedulo functions to develop custom functions for web and mobile extensions.


Filter list views

Use the Filter options to restrict which data is displayed.


Get a location's details


How Record access policies control data access


Implement custom schedule rules


Insufficient access (deprecated)

Insufficient access errors and overriding default permissions.


Job start and end times

Setting job start and end time fields.


Make generic Skedulo API requests using Salesforce

Making generic requests to the Skedulo API using Salesforce.


Manage incoming SMS with webhooks

Using webhooks to manage incoming SMS related to jobs


Map custom objects and fields


Optimized scheduling using the Skedulo API

Find a valid scheduling solution for multiple jobs and resources.


Page components

Get to know the flat page and list page components.


Perform multiple actions using GraphQL aliases

Use aliases to perform multiple actions in a single GraphQL mutation


sked tenant

Overview of sked tenant format reference.


Skedulo permissions and access control (deprecated)

Permission restrictions for schedulers and resources.


Skedulo Plus extensions component library

Technical specifications for the UI components of Skedulo Plus extensions.


Text editor

Configure text editor page components for flat page components.


Update a triggered action

Modify an existing triggered action.


Use GraphQL


Use GraphQL

Using the Skedulo GraphQL schema to interact with objects and fields.


Use GraphQL to fetch instance data

Use the instanceFetch file to fetch input data for the form, depending on the form type.


Use GraphQL to query custom objects and fields

How to use GraphQL to interact with custom object data.


Use the Skedulo Software Development Kit (SDK)

How to use the Skedulo Packages SDK to develop custom pages and server extensions for the web application and mobile.


Use webhooks

Using webhooks for Skedulo events.


Web extensions API services

Using injected API services for developing web extensions.


Edit the column templates

Configure how your data is displayed on a List view page.


List view columns

Use the Columns option to choose which columns are visible.


Text view

A simple text field to show basic context in a flat page.


Best practices: Create record access policies and rules

Best practices for creating rules and policies that control user access to data.


Configure default columns for list views

Define which columns are visible for your object on the default list view.


Customize and modify Skedulo picklist values

Managing object picklists in the Skedulo web application.


Delete a triggered action

Delete an existing triggered action.


Develop and deploy custom code using connected functions and the SDK

Using back end API functionality to automate specific behavior in response to certain triggers.


Fetch static data

Understand how static data is fetched in mobile extensions.


Geolocation field type and distance comparison

GraphQL queries for filtering by geolocation and distance from a fixed point


Get a location's geographic co-ordinates


Implement fatigue and time-interval-based rules


Job time constraints

Adding time constraints to jobs


Make changes to the schema using GraphQL mutations

Use GraphQL mutations to make changes to the schema.


Make Skedulo API Notification requests using Salesforce

Dispatch jobs and notify resources from Salesforce using the Skedulo API.


Manage and schedule work

Manage accounts, resource availability, and optimize schedules.


Optimize vs Suggest

What is the difference between using optimize and suggest for allocating jobs?


Override system-generated pages

A tutorial taking you through the process of overriding the default system-generated pages and configuring your data.


Override the default List view page

This article covers how to override the default settings of the arcade-games-list page.


Select editor

Configure the select editor component for Skedulo Plus flat page mobile extensions.


sked tenant set-default


sked function


sked web-extension


Understand the Lookup and Has many custom field types

Information about the reference custom fields that create links between objects in the data schema.


Use triggered actions

Perform actions in response to Skedulo event triggers.


Use triggered actions

Perform actions in response to Skedulo event triggers.


Valid Date and DateTime formats

Specify the right format for dateTime and date fields.


Work with artifacts

How to use the Skedulo CLI to create, retrieve and delete artifacts.


Work with objects and fields

Best practices and considerations when working with objects and fields using the Skedulo CLI.


Create a new job or activity with pre-filled data

Automatically create a new job or activity with data from a URL


Create and map custom objects in Salesforce

Instructions for creating custom objects in the Salesforce Skedulo managed package.


Create forms that only work when users are online

How to create online-mode extensions for Skedulo Plus.


Developing web extensions with the CLI

Develop, deploy and manage web extensions with the Skedulo CLI.


Errors and troubleshooting


Get a location's timezone


sked tenant logout


Multi-selector

Multi-select picklist component.


Save and share list views

Save and share your list views with your organization.


sked package


Understand the Insufficient travel time rule


Use and manage location information

Use geoservices to calculate distances between locations and estimate travel time.


Use pagination to access all GraphQL query results

Paging the results of GraphQL queries.


Use tags


Use the Skedulo CLI to upload and manage your Skedulo Plus extension

Use the Skedulo CLI to deploy, modify, or delete your Skedulo Plus extension.


Work with packages

How to use the Skedulo CLI to build, register, list, and deploy packages.


Skedulo CLI

How to use the Skedulo CLI to extend and customize your Skedulo team.


Advanced column configuration for list views

Enhance the data presented within a list view.


Artifact availability

Which artifacts are available in the Skedulo CLI


Customize and extend Skedulo web app

Create custom objects, fields, and extensions for the Skedulo web app and use Horizon components to develop unique list views and pages.


Date and time picker

A date and time picker component.


Errors and troubleshooting


Manage scheduling rules and exceptions


Resource localization

Understand the localization resource files and how they work in mobile extensions.


Skedulo Plus extensions validation rules

How to add validation to your mobile extensions.


Skedulo web extensions

Custom web page views for the Skedulo web application.


Subscribe to Skedulo objects

GraphQL schema subscriptions.


Customize and extend Skedulo mobile apps

Create custom objects and fields, extensions for the Skedulo v2 mobile app and Skedulo Plus.


Customize list views

Customize the layout of your list views.


Help and troubleshooting

How to get help and answers to common issues with the Skedulo CLI.


Integration and automation

Integrate with Skedulo via REST API and GraphQL, and create webhooks and triggered actions to automatically respond to Skedulo events.


Optimize schedules

Using optimization to automatically schedule multiple jobs


Toggle

The toggle component is used to render a toggle switch, checkbox, or radio button on a flat page.


Upsert records with GraphQL

Using upsert to perform GraphQL insert or update operations.


Attachments

Configure the Attachments component for Skedulo Plus flat page mobile extensions.


Skedulo CLI command reference

How to use the Skedulo CLI to easily build, test, and deploy custom solutions on the Skedulo Pulse Platform.


Manage and control access


Render content dynamically in mobile extensions

How to use dynamic content for pages or components.


Create and manage deployments

Create and deploy customizations using the Skedulo SDK.


Signature

Configure the Signature component for Skedulo Plus flat page mobile extensions.


sked artifact update-descriptors


Menu list

Configure the Menu list component for Skedulo Plus flat page mobile extensions.


Skedulo system status


ReadOnly text

Configure the Read-only text component for Skedulo Plus flat page mobile extensions.


ButtonGroup

Configure a button or group of buttons in your mobile extension.


Address editor

Configure an address editor in your mobile extension.