Copy Schedule
Note: This business process An organized flow of activities or tasks that achieves a business goal. An automated business process minimises the amount of paperwork and manual tasks to complete that process by way of automatic actions, online forms, and automatically generated messages. is an extension model that is developed outside the normal release schedule to meet specific customer needs. To request one of these models, you must submit a Salesforce Service Request to UKG. After the model is delivered to your tenant, you can edit it to meet your needs.
The Copy Schedule business process extension provides a quick and easy way to create future schedules by copying previous schedules assigned to a set of employees.
Customers with limited numbers of employees often create their own schedules because they know what works best for their locations. They need an efficient way within the Schedule Planner to copy schedules, including transfers, for a set of employees from previous (source) to future (target) schedule periods A repeating span of days in the schedule that is defined for administrative purposes, such as pay periods.. This business process extension provides that capability.
To use the extension, the manager navigates to the Schedule Planner, selects the date range and employees of the source schedule, and then launches Copy Schedule by way of a GoTo action. Date and employee selections automatically pass as process parameters. Before initiating the process, the manager makes selections from the Copy Schedule panel:
-
Target Schedule
-
Symbolic reference.
-
-
Start Date and End Date
-
When entered, Start and End Date values override the Target Schedule selection.
-
-
Override Existing Schedule
-
Include Comments
If the source schedule contains absence paycodes A category of time or money that employees earn, for example, Regular Hours, Bonus, or Sick., the process replaces them in the target with the most recently saved shift associated with the employee for that day. For example, if a Sick paycode replaced an employee’s 8:00 AM-4:00 PM shift in the source schedule, the process copies only the 8:00 AM-4:00 PM shift into the target. If a saved shift is not found in the source, nothing is copied to the target.
When an active employee who is selected in the source schedule has a terminated or inactivated status in the target period, the process creates open shifts with the employee's assigned Job in the target period.
-
Hyperfinds A search engine that filters and selects groups of employees through queries that specify conditions or locations (criteria). used to select the source employees must be limited to 50, or fewer, employees.
-
Date ranges for either the source or target schedules must not exceed 90 days.
-
Start and End Dates for both the source and target schedules must be synchronized. For example, if the dates associated with the source begin on Sunday and end on Saturday, the target dates must also begin and end on Sunday and Saturday, respectively.
-
If selected dates in the source and target schedules overlap, the user is notified with options to:
-
Override the existing schedule; that is, delete the existing schedule and replace it with new shifts.
-
Copy the next schedule to the target.
-
-
If no shift is assigned to an employee on a particular day in the source, no shift will be copied to the corresponding employee and day in the target.
-
All shifts in the source are copied to the target, even if multiple shifts are assigned to an employee on a single day.
-
When a business structure transfer matches an employee's primary job in the source, it is copied to the target.
-
Absence paycodes, including full and half day, in the source are replaced with the latest saved shift of that day in the target.
-
If an employee is active in the source, but terminated or inactivated in the target period, open shifts are created in the target associated with the employee's job assignment; this may differ from the employee's primary job.

A store manager wants to copy last week's schedule to the following week. The original schedule contains Sick paycodes. It also contains an employee working as a Sales Associate through Day 2 of next week, then retiring on Day 3.
The schedule for the previous week:
EMPLOYEE ID | EMPLOYEE NAME | ORG JOB | DAY 1 | DAY 2 | DAY 3 | DAY 4 | DAY 5 | DAY 6 | DAY 7 |
001-004 | Gibson, Emmy | Sales Associate | 08:00—16:00 | 08:00—16:00 | 08:00—16:00 | 08:00—16:00 | 08:00—16:00 | 09:00—17:00 | |
001-005 | Wooly, John | Sales Associate | 08:00—16:00 | 08:00—16:00 | 08:00—16:00 | 08:00—16:00 | 08:00—16:00 | 09:00—17:00 | |
001-006 | Holmes, Frank | Mechanic | 06:00—12:00 | Sick(06:00—12:00) | Sick(06:00—12:00) | 06:00—12:00 | 06:00—12:00 | ||
001-007 | Abraham, Mike | Mechanic | 12:00—18:00 | 12:00—18:00 | 12:00—18:00 | 12:00—18:00 | 12:00—18:00 |
-
In the Schedule Planner, load the previous schedule, select a set of employees, navigate to the GoTo control, and select Business Processes.
-
Select Copy Schedule from the Business Processes Library.
-
In the Copy Schedule panel, select Next Schedule Period from Target Schedule, and click tap the Copy Schedule button.
After the process completes, return to the Schedule Planner to view the results:
-
Absence pay codes are removed and replaced with original schedules.
-
Open shifts are created for the Sales Associate job, effective on the employee's retirement date.
The schedule for the following week:
EMPLOYEE ID | EMPLOYEE NAME | ORG JOB | DAY 1 | DAY 2 | DAY 3 | DAY 4 | DAY 5 | DAY 6 | DAY 7 |
Open Shift A shift that is scheduled for a job, but no employee is assigned to work it. | Sales Associate | 08:00—16:00 | 08:00—16:00 | 08:00—16:00 | 09:00—17:00 | ||||
001-004 | Gibson, Emmy | Sales Associate | 08:00—16:00 | 08:00—16:00 | 08:00—16:00 | 08:00—16:00 | 08:00—16:00 | 09:00—17:00 | |
001-005 | Wooly, John | Sales Associate | 08:00—16:00 | 08:00—16:00 | |||||
001-006 | Holmes, Frank | Mechanic | 06:00—12:00 | 06:00—12:00 | 06:00—12:00 | 06:00—12:00 | 06:00—12:00 | ||
001-007 | Abraham, Mike | Mechanic | 12:00—18:00 | 12:00—18:00 | 12:00—18:00 | 12:00—18:00 | 12:00—18:00 |

Migrate the business process model to the tenant
Migrate the Copy Schedule_v3.0 process model to the customer tenant using Setup Data Manager (SDM Set-up Data Manager moves and manages configuration data across software and hardware environments.).
-
Log in to the appropriate tenant.
-
Go to Main Menu > Administration > Setup Data Manager.
-
Select the Source tenant where the Process Model resides, and select the template to copy. It is a .zip file. A message appears in the Source column: Source: Import from <filename>.zip.
-
Click Tap Review and Publish. The Publish Summary panel appears.
-
Review the Publish Summary panel. It lists the items that were extracted from the migration file. If you approve, click tap Publish with Comment or just Publish.
-
Click Tap Go to Publish History at the bottom of the panel to view the status of the data transfer. The Publish History page contains a table that lists the items you have published. If there were errors during the transfer, the button under the Errors column for that row is black.
-
To view details, click tap the appropriate row and click tap View Selected.
-
On the History for publish run page, click tap Show all to view the setup data that you published, and the errors that occurred, if any, listed by item type and name.
Configure the Copy Schedule decision tables
-
Go to Main Menu > Administration > Application Setup > Business Process setup > Process Models.
-
Select the Copy Schedule_v3.0 process and click Edit. The process model enters edit mode.
-
Select the Decision Tables tab.
-
Click Everyone's, and then select the decision table.
-
Click Decision Table Editor to add or update the rows in the table.
-
Click Save and close.
-
Values entered in the decision tables are case-sensitive, and must match configured values in UKG Pro Workforce Management™.
-
Do not remove variables, variable names, or variable types from any decision table.
Edit the decision table: CopySchedule_Variables
The CopySchedule_Variables decision table holds the variables for the copy schedule process and can be changed accordingly.
Variable name | Type | Description |
---|---|---|
Admin | Text | An internal Service Level user who runs the REST APIs. Do not change. |
Timeframe | Text |
Comma-separated list of time frame values, such as "Next Schedule Period, Current Schedule Period." Values must be entered using the same locale as the default tenant locale. |
OverrideExistingScheduledSelectedByDefault | Boolean |
Determines the default value of the Override Existing Schedule checkbox in the Copy Schedule panel.
|
CopyShiftLabelsSelectedByDefault | Boolean |
Determines the default value of the Copy Shift Labels checkbox in the Copy Schedule panel.
|
CopyShiftCommentsSelectedByDefault | Boolean |
Determines the default value of the Copy Comments checkbox in the Copy Schedule panel.
|
In this extension, the Service Level user executes the backend REST APIs. Because the Service Level user depends on the customer tenant locale during API calls, the locale of the Timeframe values in the target schedule drop-down list in the user form must match the locale used by the customer tenant.
Edit the decision table: CopySchedule_Locale
The CopySchedule_Locale decision table holds the messages for the copy schedule process and can be changed accordingly.
Variable name | Type | Description |
---|---|---|
Key | Text | Placeholders for messages. |
Locale | Text | Locale policy used for customized message. |
Message | Text | Customized message. |
Description | Text | (Optional) Customized description. |
Key | Locale | Message | |
---|---|---|---|
1 | =="_MessageTimePeriod Exceeded" | !="empty" | "The selected period has exceeded the last 90 days." |
2 | =="_MessageEmployeeCountExceeded" | !="empty" | "More than 50 employees selected." |
3 | =="_MessageTimePeriodandEmployeeCount" | !="empty" | "The number of employees has exceeded 50 and the selected period has exceeded 90 days." |
4 | =="_MessageScriptError" | !="empty" | "Script execution failure. Please contact system administrator." |
5 | =="_Message1" | !="empty" | "Contact the system administrator." |
6 | =="_Message2" | !="empty" | "Error is mentioned below." |
7 | =="_MessageErrorFormHeader" | !="empty" | "Error" |
8 | =="_MessageAPIError" | !="empty" | "Rest API Connector failure. Please contact system administrator." |
9 | =="_MessagePasteEndDate" | !="empty" | "Past End Date is less than Past Start Date." |
10 | =="_MessageSelected" | !="empty" | "Selected Schedule" |
11 | =="_MessageTarget" | !="empty" | "Target Schedule" |
12 | =="_MessageOverride" | !="empty" | "Override Existing Schedule" |
13 | =="_MessageStartDate" | !="empty" | "Start Date" |
14 | =="_MessageEndDate" | !="empty" | "End Date" |
-
Localization of business process workflows remains optional, but is supported.
-
The decision table holds all messages represented with standard English labels; these apply to all locales when the Locale is set to a wildcard (*).
-
Some or all messages can be translated by adding lines to the table in their preferred translation for specific locales. Messages for the most commonly used Locale Policy should be defined at the top of the decision table. Text within tags ("<>") must not be changed.
-
Names of the parameters in the decision table column Parameter Name must be used as is. If any parameter value needs to be localized for a different Locale Policy, copy the Parameter Name with the * Locale Policy, add a new row to the decision table with the appropriate Locale Policy, and then add the localized values in the Message column.
-
The last row in the decision table must remain empty ("!=empty".)
Deploy Process Model
Note: Process models must be redeployed every time changes are made to an existing model. Re-deployment is not required for decision table changes.
Follow these steps to deploy the process model. For detailed information, see the online help topic Deploy Business Process Models
- From the Main Menu, go to Application Setup > Business Process Setup > Process Models.
- Select the process model.
- Click Tap Edit, and then configure the required parameters and deployment dates.
- Click Tap Save and then Return to deploy.

API name | Section | Type | Resource path | Location | Description |
---|---|---|---|---|---|
Retrieve schedule | Scheduling | POST | /v1/scheduling/schedule/multi_read | Copy schedule | Return schedules for a set of employees or locations. |
Update schedule for multiple employees | Scheduling | POST | /v1/scheduling/schedule/multi_update | Copy schedule | Update schedules for multiple employees. |
Retrieve persons | Common | POST | /v1/commons/persons/extensions/multi_read | Copy schedule | Return multiple person records. |
Delete shifts | Scheduling | POST | /v1/scheduling/schedule/shifts/multi_delete | Copy schedule subprocess | Delete shifts for the selected time frame. |
Retrieve schedule audits | Scheduling | POST | /v1/scheduling/audits/multi_read | Copy schedule subprocess | Retrieve all shift information. |
Execute Hyperfind query | Common | POST | /v1/commons/hyperfind/execute | Copy schedule | Execute a Hyperfind query by ID or qualifier. |
Retrieve locale date span | Common | POST | /v1/commons/symbolicperiod/read | Copy schedule | Retrieve paycode value, and then calculate start and end dates. |
Retrieve current user's tenant Locale | Common | GET | /v1/commons/user_preferences/locale_policy?userCurrent=true | Copy schedule | Retrieve locale for system user. |
Retrieve shifts | Scheduling | POST | /v1/scheduling/schedule/shifts/multi_read | Copy schedule | Retrieve one or more shifts according to the parameters provided. |