Admin or Manager role, depending on the task
- Set up or change the Workday integration
-
Admin role
Or a custom role with Configure third-party integrations set to Can configure third-party integrations - Approve synced requests and add start times to partial-day requests
-
Admin or Manager role
Or a custom role with Time off requests set to Can approve, deny, edit, and cancel all agents' time off requests
Preparing Workday needs a Workday admin who can create integration system users, security groups, reports, and API clients.
Admins set roles and permissions in Manage team > Roles and permissions.
Use the Workday integration to put the time off and leave approved in Workday on team members’ schedules in Assembled, so you don’t have to enter it twice. Depending on how you set it up, team members can also request time off in Assembled, and Assembled sends those requests and decisions to Workday.
To open it, go to Configure > Third-party integrations and find the Workday card.
How the Workday integration works
- Workday stays the system of record for time off, leave, and balances. Assembled reads them through Workday reports and the Workday REST API.
- Newly approved time off usually appears on the schedule within 15 minutes. If it doesn’t, see Troubleshooting.
- Time off syncs only for people who exist in Assembled and are matched to a Workday worker. See How people are matched.
- Each Workday time off type becomes an Assembled event type, using your event mapping. Unmapped types are matched by name, and Assembled creates an event type if none matches.
- Time off from Workday is read-only in Assembled. Approve, deny, edit, or cancel it in Workday, and the change syncs to Assembled.
- The integration doesn’t enforce time off balances or caps, and doesn’t approve or deny anything in Workday on its own.
- The connected Workday card shows what’s syncing: future events, and past events from the last 3 months.
- If you disconnect the integration, syncing stops in both directions right away.
Where team members request time off
When you connect Workday, you choose where team members request time off. This decides whether Assembled writes to Workday, and what the API client needs permission to do (see Register an API client). You can change it later with Edit setup.
| Option | What happens |
|---|---|
| Workday — approved requests sync into Assembled | Team members request time off in Workday, and your Workday business process approves it. Only approved requests sync, so requests still Submitted or Sent Back in Workday don’t appear on the schedule. |
| Assembled — requests start here, then follow Workday approval | Team members request time off in Assembled. Assembled checks each request against your time off rules and staffing, can auto-approve it if the team member’s role allows, and sends it to Workday, where your business process approves it. |
| Either platform — requests can start in Workday or Assembled | Team members can request time off in either system. Requests created in Workday sync to Assembled as Pending, and Assembled sends the decision from your auto-approval rules or a manager back to Workday. The integration user needs an approval step in your Workday time off business process. |
With Assembled or Either platform, approving, denying, canceling, or editing a request in either system updates the other, as long as the API client has permission. With Workday, Assembled never writes to Workday.
Note: If the Assembled or Either platform option isn’t available when you set up Workday, contact our team to turn it on.
What syncs from Workday
Time off
- Full-day time off is placed in the team member’s time zone from their Assembled profile, or your company’s default time zone if they don’t have one. To change your company’s default time zone, contact our team.
- Partial-day time off needs a start time before it can go on the schedule, unless your time off report includes start time, end time, and time zone fields. See Add a start time to a partial-day request.
- If time off is canceled in Workday, or corrected after approval (for example, shortened or canceled for one day), Assembled removes or updates it on a later sync.
Leaves of absence
If you add the optional leave of absence report, approved leaves sync as time off and go on the schedule automatically. Each leave runs from its effective date to its actual last day, or its estimated last day if the actual one isn’t set. Leaves can take up to 30 minutes to sync.
Time off balances
If team members request time off in Assembled and you turn on Sync time off balances, Assembled shows Workday balances to team members when they request time off and to managers when they review requests, for example “8 hours available in Workday”. If a request is more than the projected balance, Assembled warns both, but the request can still be submitted and approved. Workday’s projected balance may already include other pending requests.
What doesn’t sync
- Holiday codes and company-wide holidays. Add holidays to schedules in Assembled instead.
- Accruals. Workday stays the system of record for how much time off people earn.
- Pay, performance, and other HR records. Assembled never reads them.
What data moves between Workday and Assembled
The integration only reads and writes time off and absence data.
- Read from Workday: a worker ID, work email, and time off details (dates, quantity, unit, type, status, optional comment, and time zone). For balances and absence types, plan IDs, remaining amounts, and category or unit details.
- Written to Workday: the worker ID, dates, daily quantity, time off type, optional start and end time, and comment.
- Stored in Assembled: time off and absence data, the worker ID and work email, balances, and the event mapping you set up.
How people are matched
Assembled matches each worker in the worker details report (the Employee map) to the person in Assembled with the same email as the worker’s primary work email. The integration doesn’t create people, so add people to Assembled before their time off can sync.
Matching runs once a day, so it can take up to 24 hours after you add someone to Assembled or Workday. You can also associate people with their Workday worker IDs by CSV upload on Manage team > People management.
Set up the Workday integration
The integration is built and maintained by Assembled, so there’s no marketplace app to install. Setup has two parts: a Workday admin prepares Workday, then an Assembled admin connects it in Assembled.
Prepare Workday
Create an integration system user in Workday
Assembled connects to Workday as an integration system user, which gives it access to your workers’ time off.
- In Workday, search for Create Integration System User and open the task.
- Enter the account details and save. Use a clear username, such as
Assembled_ISU, and don’t use the&,<, or>characters in the password. - Leave Require New Password at Next Sign In cleared, and leave Session Timeout Minutes at
0. - So that the password doesn’t expire, search for Maintain Password Rules.
- Add the new user to System Users exempt from password expiration.
Create a security group and add the user
Putting the integration user in its own security group limits it to what the integration needs.
- Search for Create Security Group and select the first result.
- In Type of Tenanted Security Group, choose Integration System Security Group (Unconstrained).
- Enter a name, such as
Assembled_Integration_SG, and select OK. - On the Edit Integration System Security Group (Unconstrained) page, add the integration system user in Integration System Users, and select OK.
Give the security group permissions
The integration user needs View permission on the domain security policies for worker details, time off, and leave of absence.
- Search for Maintain Permissions for Security Group.
- Set Operation to Maintain and Source Security Group to the Assembled security group, then select OK.
- Add these domain security policies with View permission.
| Report | Functional area | Domains (View) |
|---|---|---|
| Worker details | Worker Data | Worker Data: Public Worker Reports; Worker Data: All Positions; Worker Data: Business Title on Worker Profile; Worker Data: Contact Information (needed for the work email) |
| Time off details | Time Off and Leave | Time Off; Worker Time Off; Time Off Requests; Worker Time Off Correction (if you track corrections) |
| Leave of absence details | Time Off and Leave | Leave of Absence; Worker Leave of Absence; Worker Leave Events |
Activate the security policy changes
- Search for Activate Pending Security Policy Changes.
- Add a comment and select OK.
- Select Confirm, then select OK again.
Create the reports
Assembled reads Workday data through Reports-as-a-Service (RaaS) reports. Create two required reports, and a third if you want to sync leaves of absence. Name each field exactly as shown, or Assembled can’t read it.
Worker details (required)
This report matches people in Assembled with their Workday workers. In Assembled, it’s called the Employee map.
| Field | What it contains |
|---|---|
workdayID |
The worker’s unique ID in Workday |
primaryWorkEmail |
The worker’s primary work email |
Time off details (required)
This report syncs time off requests. In Assembled, it’s called the Time off report.
| Field | What it contains |
|---|---|
eventWorkdayID |
The ID Workday assigns to the time off |
workdayID |
The ID of the worker taking time off |
date |
The date of the time off |
unitOfTime |
The unit, such as hours or days |
quantity |
The amount of time off |
status |
The request’s current status |
timeOffType |
The time off type. If it matches the name of an Assembled event type, Assembled uses that event type. |
If you also include start time, end time, and time zone fields, Assembled uses them to place partial-day time off at the right times, and managers don’t need to add start times.
Leave of absence details (optional)
This report syncs leaves of absence. Include past leaves too, so Assembled can tell when a leave is canceled. In Assembled, it’s called the Leave of absence report.
| Field | What it contains |
|---|---|
eventWorkdayID |
The ID Workday assigns to the leave |
workdayID |
The ID of the worker on leave |
Effective_Date |
The first day of the leave |
Last_Day_of_Leave_-_Estimated |
The expected last day of the leave |
Last_Day_of_Leave_-_Actual |
The actual last day of the leave |
Register an API client
Assembled also uses the Workday REST API to read your absence types and, if team members request time off in Assembled, to send requests and decisions to Workday. In Workday, register an API client for integrations, and collect:
- The OAuth client ID and OAuth client secret.
- The Token URL, in the form
https://<workday-host>/ccx/oauth2/<tenant>/token. - A Refresh token, generated in Workday with Manage Refresh Tokens for Integrations for the API client.
- The Absence Management 5 REST base URL, in the form
https://<workday-host>/ccx/api/absenceManagement/v5/<tenant>.
What the API client needs permission to do depends on where team members request time off:
| Where team members request time off | API client permissions |
|---|---|
| Workday | Read eligible absence types |
| Assembled | Read eligible absence types and create time off requests |
| Either platform | Read eligible absence types, create time off requests, and approve or deny the business process steps assigned to the integration user |
Connect Workday in Assembled
Go to Configure > Third-party integrations, find the Workday card, and select Configure integration. Connect Workday opens.
Step 1: Enter the integration user and reports
- Under Integration system user credentials, enter the Workday username and Password.
- Under Add data sources, enter the URLs of your reports in Employee map and Time off report.
- If you created the leave of absence report, enter its URL in Leave of absence report.
- Select Continue.
Step 2: Choose where team members request time off and connect the REST API
- Under Where should agents request time off?, choose Workday, Assembled, or Either platform. For what each option does, see Where team members request time off.
- Under Connect the Workday REST API, enter the OAuth client ID, OAuth client secret, Token URL, Refresh token, and Absence Management 5 REST base URL.
- Select Continue.
Step 3: Map your time off types
The event mapping decides which Assembled event type each Workday time off type becomes. If team members request time off in Assembled, it also decides which Workday absence type each request is sent as.
- Under Event mapping from Workday, choose the Assembled event type for each Workday time off type. Types you leave on Match by name are matched to the Assembled event type with the same name.
- If team members request time off in Assembled, use Event mapping from Assembled to map each Assembled time off type to one or more Workday absence types, in priority order.
- If team members request time off in Assembled, turn on Sync time off balances to show Workday balances in Assembled.
- Select Connect.
When Assembled sends a request to Workday, it uses the first absence type in the mapping that the team member is eligible for in Workday. If they aren’t eligible for any of them, the request doesn’t sync, and Assembled shows Could not sync to HR platform.
Keep in mind: To protect team members’ privacy, you can map sensitive Workday time off types to one or two neutral event types in Assembled, such as “Time off”.
Syncing starts within 15 minutes. The Workday card then shows what’s syncing and when it last synced. To change any of these settings later, select Edit setup on the card: see Update credentials or settings.
Add a start time to a partial-day request
When a team member requests part of a day off in Workday, such as 4 hours, Workday sends Assembled the date and the number of hours, but not which hours. Assembled holds the request until someone adds a start time, instead of guessing which part of the day to block. Full-day and multi-day requests, and leaves of absence, don’t need this step.
A synced request without times appears in the Pending requests on Schedule > Time off, marked Start time missing from synced request. Everyone who can see time off requests can see it there.
- Go to Schedule > Time off and find the pending request.
- Select Add start time. If Workday didn’t send a number of hours either, the button reads Add start, end time.
- In Add missing times for synced time off request, enter the start time. Assembled fills in the end time from the number of hours requested in Workday.
- Select Update time off request.
The request moves to Approved, and the time off is added to the team member’s schedule. Times you enter are in the team member’s time zone, or your company’s default time zone if they don’t have one. Later syncs from Workday don’t overwrite the start time you add.
Note: Many teams ask people to put their intended start time in the request’s comment in Workday, so the manager can copy it into Assembled.
Correct a partial-day request after it syncs
You can’t edit the start or end time of time off that came from Workday. To correct it, replace the request in Workday.
- Cancel the original request in Workday. On the next sync, it’s removed from the team member’s schedule in Assembled.
- Submit a new request in Workday with the correct details.
- When it syncs to Assembled as a pending request, add the start time.
Keep in mind: If the date has passed, check with your Workday admin whether Workday allows the request to be canceled.
Update credentials or settings
The integration stops syncing if the integration user’s username or password, a report URL, or the API client details change in Workday. When that happens, enter the new details in Assembled. You also use Edit setup to change where team members request time off or the event mapping.
Important: Never send your integration user’s password or API secrets by email or in a support conversation.
- Go to Configure > Third-party integrations and find the Workday card.
- Select Edit setup. On some cards it’s in the card’s Edit integration menu.
- Enter the new username, password, report URLs, or API client details, or change your choices. Leave a password or secret blank to keep the one already saved.
- Select Continue to move through the steps, then select Save changes.
You see Workday integration updated, and syncing resumes within 15 minutes. If time off still isn’t syncing, see Time off from Workday stopped syncing for everyone.
Troubleshooting
If a request submitted in Assembled can’t reach Workday, the request shows Could not sync to HR platform, and a banner on Schedule > Time off says how many requests couldn’t sync.
Time off from Workday is missing or at the wrong time
If a team member’s time off is missing or at the wrong time, check these causes.
| Cause | How to tell | What to do |
|---|---|---|
| The team member isn’t matched to a Workday worker | They aren’t in your worker details report, or their Workday work email doesn’t match their Assembled email. | Fix the email in Workday or Assembled, then allow up to 24 hours for matching. |
| The team member was added recently | They were added to Assembled or Workday in the last day. | Wait up to 24 hours. Matching runs once a day. |
| The request isn’t approved in Workday | Its status in Workday is Submitted or Sent Back. | Approve it in Workday. |
| It’s a partial-day request | On Schedule > Time off, it’s marked Start time missing from synced request. | Add a start time. |
| The sync hasn’t run yet | The request was approved in the last 15 minutes. | Wait 15 minutes, then refresh the schedule. |
| The time off type is unusual or blank | The time off appears with an unexpected event type, or not at all. | Check the type in Workday, and the event mapping in Edit setup. |
| The team member’s time zone or the request’s times are wrong | The time off appears at the wrong time. Check the team member’s time zone in Manage team > People management, and the request’s dates and times in Workday. | Correct whichever is wrong. To change your company’s default time zone, contact our team. |
Time off from Workday stopped syncing for everyone
When time off stops syncing for everyone, something has usually changed in Workday. Ask your Workday admin what changed recently.
| Cause | How to tell | What to do |
|---|---|---|
| The integration user’s credentials changed | The password was reset or rotated, the username changed, or the account is locked. | Enter the updated details in Assembled. |
| A report URL changed | The reports were moved, renamed, or regenerated. | Enter the new report URLs in Assembled. |
| The API client changed | The client secret or refresh token was revoked or expired. | Enter the new API client details in Assembled. |
| The integration user’s permissions changed | Permissions changed recently, or the integration user’s security group no longer has View access to every report it needs. | Have your Workday admin restore View access. See Give the security group permissions. |
| Workday is unavailable | Workday is in an outage or maintenance window. | Wait for it to end. |
If it still doesn’t look right, chat with our team. Include when syncing last worked, the team members and requests affected (with dates or Workday request IDs), what changed in Workday, and what you’ve already tried. Never share the integration user’s password or API secrets.