> ## Documentation Index
> Fetch the complete documentation index at: https://stackone-hub-docs-confluence-api-token-update.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Workday (OAuth)

> If you've been directed to StackOne to integrate with Workday, the following steps will help you understand the process and any necessary actions to configure successful integration.

<Warning>
  This guidance assumes you have Admin privileges for your Workday account.
</Warning>

## Finding your Workday Tenant

<Steps>
  <Step title="Log into Workday">
    Log into your Workday account. Look at the address bar at the top of the browser window where the URL is displayed. Find your tenant immediately after `workday.com/`.

    For example, if your URL is `https://my-instance.workday.com/my-tenant/d/etc`, your tenant is `my-tenant`.

    <Frame>
      <img className="rounded-md" style={{ margin:"0 auto",border:"1px solid #efefef" }} alt="Workday Tenant" src="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/lMwMaErGDlYR1KkK/images/workday-oauth2/image1.png?fit=max&auto=format&n=lMwMaErGDlYR1KkK&q=85&s=75411e72ec7dcee800a11ca939c7290b" width="2880" height="1532" data-path="images/workday-oauth2/image1.png" />
    </Frame>
  </Step>
</Steps>

## Finding the Web Services Endpoint

<Steps>
  <Step title="Go to Public Web Services">
    Go to the `Public Web Services` report.

    <Frame>
      <img className="rounded-md" style={{ margin: '0 auto', border: '1px solid #efefef' }} alt="Human Resources Web Service" src="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/w__eN0U5iLwN8ehP/images/workday/image2.png?fit=max&auto=format&n=w__eN0U5iLwN8ehP&q=85&s=f85c87d253fa480fe05524504e18cc39" width="305" height="150" data-path="images/workday/image2.png" />
    </Frame>
  </Step>

  <Step title="Find Human Resources">
    Find Human Resources and hover over it to be able to interact with the menu. Via the three-dots menu, go to `Web Service` and click on `View WSDL` (note that the page may take a minute to fully load).

    <Frame>
      <img className="rounded-md" style={{ margin: '0 auto', border: '1px solid #efefef' }} alt="WSDL Service" src="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/w__eN0U5iLwN8ehP/images/workday/image3.png?fit=max&auto=format&n=w__eN0U5iLwN8ehP&q=85&s=510ea1d5d508acad638251860dd25191" width="634" height="440" data-path="images/workday/image3.png" />
    </Frame>
  </Step>

  <Step title="Search for wsdl:service">
    Search for `wsdl:service` in the file OR navigate directly to the very bottom of the page. You should see something like this:

    <Frame>
      <img className="rounded-md" style={{ margin: '0 auto', border: '1px solid #efefef' }} alt="WSDL Service" src="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/w__eN0U5iLwN8ehP/images/workday/image4.png?fit=max&auto=format&n=w__eN0U5iLwN8ehP&q=85&s=fb2520f10d4296d5841d0217bf8eb0fb" width="986" height="93" data-path="images/workday/image4.png" />
    </Frame>

    Copy everything before `service` in the location attribute. Do not include the `https://` prefix. In the example tenant above, this would be `wd2-impl-services1.workday.com/ccx` but it may be different for your tenant (e.g., `wd5-services1.myworkday.com/ccx`).

    Save this value to be used in a later step.
  </Step>
</Steps>

## Set up an Integration System User

<Steps>
  <Step title="Search for Create Integration System User">
    Log in to your Workday tenant in the Workday portal. In the Search field, search for "Create Integration System User".

    <Frame>
      <img className="rounded-md" style={{ margin:"0 auto",border:"1px solid #efefef" }} alt="Create Integration System User" src="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/w__eN0U5iLwN8ehP/images/workday/image5.png?fit=max&auto=format&n=w__eN0U5iLwN8ehP&q=85&s=b2f499da08369a1e1218c7abd21b5dd0" width="331" height="116" data-path="images/workday/image5.png" />
    </Frame>
  </Step>

  <Step title="Choose the Task">
    Choose the "Create Integration System User" task.
  </Step>

  <Step title="Enter Account Information">
    Enter a username and password in the Account Information section on the "Create Integration System User" page.

    <Frame>
      <img className="rounded-md" style={{ margin:"0 auto",border:"1px solid #efefef" }} alt="Account Information" src="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/w__eN0U5iLwN8ehP/images/workday/image6.png?fit=max&auto=format&n=w__eN0U5iLwN8ehP&q=85&s=401c354c72005a79975f8d96b0a54405" width="764" height="769" data-path="images/workday/image6.png" />
    </Frame>
  </Step>

  <Step title="Click OK">
    Click OK.
  </Step>
</Steps>

## Add the Integration System User to Security Groups

<Steps>
  <Step title="Search for Create Security Group">
    In the Search field, search for "Create Security Group". Select the "Create Security Group" task.

    <Frame>
      <img className="rounded-md" style={{ margin:"0 auto",border:"1px solid #efefef" }} alt="Create Security Group" src="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/w__eN0U5iLwN8ehP/images/workday/image7.png?fit=max&auto=format&n=w__eN0U5iLwN8ehP&q=85&s=07df7c2d260fa18ec9a546309e719e78" width="283" height="119" data-path="images/workday/image7.png" />
    </Frame>
  </Step>

  <Step title="Select Security Group Type">
    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="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/w__eN0U5iLwN8ehP/images/workday/user-based-security-group.png?fit=max&auto=format&n=w__eN0U5iLwN8ehP&q=85&s=a5b9eb480a1daebd9223f67cb12ae343" width="594" height="309" data-path="images/workday/user-based-security-group.png" />
    </Frame>
  </Step>

  <Step title="Click OK">
    Click OK.
  </Step>

  <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>

## Configure Domain Security Policy Permissions

<Steps>
  <Step title="Edit Permissions">
    <Info>
      The Workday HRIS integration currently requires **all** of the permissions listed below to be enabled for full support.

      Workday's API may return an error response if any of these permissions are missing.
    </Info>

    Edit the Domain Security Policy Permissions in the Security Group.

    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, 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 className="rounded-md" style={{ margin:"0 auto",border:"1px solid #efefef" }} alt="View/Modify Access" src="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/w__eN0U5iLwN8ehP/images/workday/image13.png?fit=max&auto=format&n=w__eN0U5iLwN8ehP&q=85&s=8be0db05ea354f2c07fc4102a94f4f02" width="1128" height="445" data-path="images/workday/image13.png" />
    </Frame>

    <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:**
      * Citizenship Status
      * Date of Birth
      * Disabilities
      * Gender
      * Home Address
      * Home Contact Information
      * ID Information
      * Marital Status
      * Name
      * Personal Data
      * Personal Information
      * Personal Photo
      * Work Address
      * 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 (**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
  </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="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/Cmc9v6zkKIhKV8Me/images/workday/bp_request_time_off_policy.png?fit=max&auto=format&n=Cmc9v6zkKIhKV8Me&q=85&s=7f2f4343d6611337768199344024c58a" width="925" height="529" data-path="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>

## Approve the Security Policy Changes

<Steps>
  <Step title="Search for Activate Pending Security Policy Changes">
    In the Search bar, search for "Activate Pending Security Policy Changes". Review the policies that need approval in the summary of the changes in the security policy. Approve the pending security policy changes to activate them.
  </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>
  <Step title="Go to Register API Client">
    Go to the `Register API Client for Integration` Task.

    <Frame>
      <img className="rounded-md" style={{ margin:"0 auto",border:"1px solid #efefef" }} alt="Human Resources Web Service" src="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/lMwMaErGDlYR1KkK/images/workday-oauth2/image2.png?fit=max&auto=format&n=lMwMaErGDlYR1KkK&q=85&s=49c22fa0c750a9856cebe3879b065bb9" width="1918" height="817" data-path="images/workday-oauth2/image2.png" />
    </Frame>
  </Step>

  <Step title="Register API Client">
    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*
      * *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 className="rounded-md" style={{ margin:"0 auto",border:"1px solid #efefef" }} alt="WSDL Service" src="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/lMwMaErGDlYR1KkK/images/workday-oauth2/image3.png?fit=max&auto=format&n=lMwMaErGDlYR1KkK&q=85&s=63951120bba60def61208d2a9abce24c" width="910" height="709" data-path="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.

    <Frame>
      <img className="rounded-md" style={{ margin:"0 auto",border:"1px solid #efefef" }} alt="WSDL Service" src="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/lMwMaErGDlYR1KkK/images/workday-oauth2/image4.png?fit=max&auto=format&n=lMwMaErGDlYR1KkK&q=85&s=491ea06b02d61ec922456a7cdde658aa" width="1915" height="725" data-path="images/workday-oauth2/image4.png" />
    </Frame>
  </Step>

  <Step title="Generate the Refresh token">
    Follow the steps below to generate the refresh tokens.

    * At the top of the page, click the **menu (⋯)** icon.
    * Select **API Client** from the menu.
    * Click on **Manage Refresh Tokens for Integrations**.

    <Frame>
      <img className="rounded-md" style={{ margin:"0 auto",border:"1px solid #efefef" }} alt="WSDL Service" src="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/lMwMaErGDlYR1KkK/images/workday-oauth2/image5.png?fit=max&auto=format&n=lMwMaErGDlYR1KkK&q=85&s=0590656c0c3632a9214a025b4fb6ab81" width="1906" height="718" data-path="images/workday-oauth2/image5.png" />
    </Frame>

    Once you select **menu (⋯) → API Client → Manage Refresh Tokens for Integrations**, you will be redirected to a screen to choose your Workday account (the Integration System User you created earlier). Select the account and click **OK**.

    <Frame>
      <img className="rounded-md" style={{ margin:"0 auto",border:"1px solid #efefef" }} alt="WSDL Service" src="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/lMwMaErGDlYR1KkK/images/workday-oauth2/image6.png?fit=max&auto=format&n=lMwMaErGDlYR1KkK&q=85&s=887fdde5ebcda89e42b606fa3568aad4" width="1908" height="787" data-path="images/workday-oauth2/image6.png" />
    </Frame>

    Once you're on the Refresh Token page, select **Generate New Refresh Token** and click **OK**.

    <Frame>
      <img className="rounded-md" style={{ margin:"0 auto",border:"1px solid #efefef" }} alt="WSDL Service" src="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/Cmc9v6zkKIhKV8Me/images/workday-oauth2/image7.png?fit=max&auto=format&n=Cmc9v6zkKIhKV8Me&q=85&s=89b121f9a27b60e13bfffe42d79d52fe" width="2814" height="1078" data-path="images/workday-oauth2/image7.png" />
    </Frame>

    Once the refresh token is generated successfully, copy the token and click Done.

    <Frame>
      <img className="rounded-md" style={{ margin:"0 auto",border:"1px solid #efefef" }} alt="WSDL Service" src="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/Cmc9v6zkKIhKV8Me/images/workday-oauth2/image8.png?fit=max&auto=format&n=Cmc9v6zkKIhKV8Me&q=85&s=cc1e0b12a78710f00209a2b92baaabc4" width="1913" height="726" data-path="images/workday-oauth2/image8.png" />
    </Frame>
  </Step>
</Steps>

## Linking your Account

Enter the following details in the connection form:

* **[Web Service Endpoint](#finding-the-web-services-endpoint)**
* **Workday Tenant Domain** (optional): The Domain of your Workday tenant. Can be found in the URL when logged into Workday. (e.g. `my-instance.workday.com`)
* **[Tenant](#finding-your-workday-tenant)**
* **[Client ID](#register-the-rest-api-client)**
* **[Client Secret](#register-the-rest-api-client)**

Click **Connect**.

<Frame>
  <img className="rounded-md" style={{ margin:"0 auto",border:"1px solid #efefef" }} alt="Linking your Account" src="https://mintcdn.com/stackone-hub-docs-confluence-api-token-update/w__eN0U5iLwN8ehP/images/workday/image9.png?fit=max&auto=format&n=w__eN0U5iLwN8ehP&q=85&s=71fa495e4fdef8f9d13e07f41a5c4c73" width="489" height="703" data-path="images/workday/image9.png" />
</Frame>

<br />

Congratulations, you're all set! If you face any issues with the steps mentioned above,
please contact us by emailing [integrations@stackone.com](mailto:integrations@stackone.com). We're always here to assist you!

<Card title="Useful Links" icon="link" href="https://doc.workday.com">
  [https://doc.workday.com](https://doc.workday.com)
</Card>
