Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
154 changes: 120 additions & 34 deletions connection-guides/hris/workday_OAuth2.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ import IntegrationFooter from "/snippets/integration-footer.mdx";
</Step>
</Steps>

## Add the Integration System User to a Security Group
## Add the Integration System User to Security Groups

<Steps>
<Step title="Search for Create Security Group">
Expand All @@ -112,22 +112,26 @@ import IntegrationFooter from "/snippets/integration-footer.mdx";
</Frame>
</Step>
<Step title="Select Security Group Type">
On the "Create Security Group" page, select "Integration System Security Group (Unconstrained)" from the Type of Tenanted Security Group pull-down menu. Enter a name in the Name field.
On the "Create Security Group" page, select "User-Based Security Group" from the Type of Tenanted Security Group pull-down menu. Enter a name in the Name field.

<Note>
Some Workday Business Processes require User-Based Security Groups to access by default.
</Note>

<Frame>
<img
className="rounded-md"
style={{ margin:"0 auto",border:"1px solid #efefef" }}
alt="Security Group Type"
src="/images/workday/image8.png"
src="/images/workday/user-based-security-group.png"
/>
</Frame>
</Step>
<Step title="Click OK">
Click OK.
</Step>
<Step title="Edit Integration System Security Group">
On the "Edit Integration System Security Group (Unconstrained)" page, enter the same name you used when creating the ISU in the first section. Click OK.
<Step title="Assign Security Group">
On the "Assign Users to User-Based Security Group" page, assign the Integration System User you created in the previous step. Click OK.
</Step>
</Steps>

Expand All @@ -144,7 +148,11 @@ import IntegrationFooter from "/snippets/integration-footer.mdx";

You can reach this interface by searching for "Maintain Permissions for Security Group" in the search bar, and selecting the name of the Security Group you created in the previous step.

This integration uses the following Workday Security Group Permissions. For each listed permission, select either **Get Only** for read-only access, or **Get and Put** for read and write access in the _View/Modify Access_ column.
This integration uses the following Workday Security Group Permissions. For each listed permission, add a row for either **Get Only** for read-only access, or **Get and Put** for read and write access in the _View/Modify Access_ column.

<Note>
"View" access may be required for accessing Custom Report and WQL data.
</Note>

<Frame>
<img
Expand All @@ -157,54 +165,86 @@ import IntegrationFooter from "/snippets/integration-footer.mdx";
<Info>
Please note that Security Group Permissions can be customized within a Workday organization, and this list does not account for such customizations.
</Info>
- Access Leave Type (Segmented)
- Business Process Administration
- Integration Build
- Job Information
- Job Profile: View
- National ID Identification
- System Auditing
- View: National Identifiers - All
- **Manage:**
- Location
- Organization Integration
- **Person Data:**
- Name
- Citizenship Status
- Date of Birth
- Disabilities
- Gender
- Government IDs
- Home Address
- Home Contact Information
- ID Information
- Marital Status
- National ID Identification
- Personal Information
- Name
- Personal Data
- Personal Information
- Personal Photo
- Home Contact Information
- Home Address
- Home Email
- Home Phone
- Work Contact Information
- Work Address
- Work Email
- Work Phone
- Work Contact Information
- **Reports:**
- Manager
- Time Tracking
- **Set Up:**
- Payroll
- Payroll (ROE) - CAN
- Time Off
- Time Off (Calculations - Absence Specific)
- **Worker Data:**
- Add Worker Documents
- All Positions
- Compensation
- Current Staffing Information
- Employment Data
- Leave of Absence
- Leave of Absence (Leave of Absence Manager View)
- Organization Information
- Public Worker Reports
- **Time Off**
- Time Off
- Time Off Manager View
- Time Off Balances
- Time Off Balances Manager View
- **Leave of Absence**
- Public Worker Reports (**requires 'View' access**)
- Time Off
- Time Off (Time Off)
- Time Off (Time Off Balances)
- Time Off (Time Off Balances Manager View)
- Time Off (Time Off Manager View)
- Workers
- Add Worker Documents
- Set Up: Time Off
- Set Up: Time Off (Calculations - Absence Specific)
- System Auditing
- View: National Identifiers - All
- **System:**
- Workday Query Language
- Business Process Administration
</Step>
</Steps>

## Edit Required Business Process Security Policies

<Steps>

<Note>
Initiation Access for the Request Time Off business process is required by default to access some Worker Time Off data.

Your tenant may require similar View Access for other business processes.
</Note>

<Step title="Edit Required Business Process Security Policies">
Open the "Edit Business Process Security Policy" task for the "Request Time Off" business process.

<Frame>
<img
className="rounded-md"
style={{ margin:"0 auto",border:"1px solid #efefef" }}
alt="Human Resources Web Service"
src="/images/workday/bp_request_time_off_policy.png"
/>
</Frame>
</Step>

<Step title="Grant Initiation Access">
Under "Who Can Start the Business Process" > "Initiating Action: Request Time Off (REST Service)", add the Security Group you created in the previous steps.

Then click OK.
</Step>
</Steps>

Expand All @@ -216,6 +256,47 @@ import IntegrationFooter from "/snippets/integration-footer.mdx";
</Step>
</Steps>

## Identifying and Troubleshooting Additional Required Permissions

<Info>
The API client accesses Workday using the permissions of the Integration System User that is linked via the refresh token. The Integration System User's permissions are determined by the User-Based Security Group you created and assigned to that user (and any others assigned). If you encounter API errors related to missing permissions, you may need to identify and add additional permissions to this Security Group.
</Info>

<Steps>
<Step title="Troubleshooting REST Endpoint and Report Field Access">
If you receive API errors indicating that a specific REST endpoint or report field is inaccessible, you can identify the required permissions using the "View Security for Securable Item" report.

<Note>
This report allows you to search for Tasks, Reports, Report Fields, Background Processes, and Data Sources to view their required Functional Areas, Security Policies, and currently-permitted Security Groups.
</Note>

1. In the Search bar, search for "View Security for Securable Item".
2. In the modal, search for the specific REST endpoint, report, or report field that is causing the error (e.g., search for "Leave Type" if you're getting an error about the `leaveType` field).
3. From the search results, click the "View Security" button for the relevant item.
- There are often multiple items with the same name, so you may need to click the "View Security" button for each item.
4. Review the "Domain Security" section to see which Security Groups currently have access.
5. Check if your User-Based Security Group is listed. If it is not listed:
- Note the required Domain Security Policy permissions shown in the modal.
- Navigate to "Maintain Permissions for Security Group" and add the required permissions to your Security Group.
- After adding permissions, activate the changes using "Activate Pending Security Policy Changes".
</Step>

<Step title="Troubleshooting Calculated Field Access">
For calculated fields used in reports, you must check the security requirements using the "View Calculated Field" report.

1. In the Search bar, search for "View Calculated Field".
2. Search for the specific calculated field that is causing access issues.
3. Open the calculated field and open the three-dots menu to navigate to "Security" > "View Security".
4. Review the modal to see:
- The Security Groups currently permitted to access the calculated field.
- The Security Policies that are required for access.
5. If your User-Based Security Group is not listed:
- Note the required Security Policies shown in the modal.
- Navigate to "Maintain Permissions for Security Group" and add the required Domain Security Policy permissions to your Security Group.
- After adding permissions, activate the changes using "Activate Pending Security Policy Changes".
</Step>
</Steps>

## Register the Rest API Client

<Steps>
Expand All @@ -232,22 +313,25 @@ import IntegrationFooter from "/snippets/integration-footer.mdx";
</Frame>
</Step>
<Step title="Register API Client">
Register the API Client with the following details and then click on **OK** button
Register the API Client with the following details.

- **Client Name**: e.g. StackOne_Integrations
- **Non-Expiring Refresh Tokens**: Check the box
- **Scopes**: Select the required functional scopes to enable data access via API.
- _Advanced Compensation_
- _Core Compensation_
- _Integrations_
- _Implementation_
- _Integration_
- _Jobs & Positions_
- _Organizations and Roles_
- _Personal Data_
- _Staffing_
- _System_
- _Tenant Non-Configurable_
- _Time Off and Leave_
- _Time Tracking_
- _Workday Designer_
- _Worker Profile and Skills_

<Frame>
<img
Expand All @@ -257,6 +341,8 @@ import IntegrationFooter from "/snippets/integration-footer.mdx";
src="/images/workday-oauth2/image3.png"
/>
</Frame>

Select the option **Include Workday Owned Scopes** and click OK.
</Step>
<Step title="Copy the credentials">
After registering the client, you will be redirected to a page displaying the **Client ID** and **Client Secret**. Make sure to copy and securely store these credentials.
Expand Down
Binary file added images/workday/bp_request_time_off_policy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/workday/user-based-security-group.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.