Workday Financial Management
Workday Financial Management is Workday's cloud finance suite, covering accounting, procurement, expenses and spend management. With Weld you can sync your Workday journals and ledgers, supplier invoices and payments, customer invoices and contracts, purchasing, revenue recognition, inventory and reference data into your data warehouse. Combine it with your CRM, budgeting and operational data to report on the general ledger, payables and receivables, committed spend, billing and revenue, and stock movements.
Features
| Feature name | Supported | |
|---|---|---|
| Column Hashing | True | Column level |
| Blocking | True | Column level |
| Incremental | True | |
| Custom data | False | |
| History | True | |
| ReSync | True | Table level |
| Templates | True |
Data Schema
Setup Guide - ELT
Prerequisites
Steps 1 to 6 happen in Workday and need a security administrator who can run these tasks:
- Create Integration System User
- Create Security Group and Maintain Permissions for Security Group
- Activate Pending Security Policy Changes
- Register API Client for Integrations (only for the OAuth option)
How Workday access works
Weld signs in to Workday as an integration system user (ISU), an account that is not tied to a person. The ISU gets its access from a security group, and the group can only read data in the domains you give it Get access to. A domain is Workday's unit of security: all supplier invoice data, for example, sits behind one domain. Workday ignores permission changes until you activate them.
Weld can sign in as the ISU with an OAuth API client (recommended) or with the ISU's user name and password. Decide before you start, because Step 1 depends on it. Step 5 compares the two.
Step 1 - Create an integration system user
- Sign in to Workday as a security administrator.
- Search for the task Create Integration System User and run it.
- Enter a User Name, for example
ISU_Weld, and a strong Password, and note both down. - Clear Require New Password at Next Sign In. The ISU never signs in to Workday's screens, so it could never change the password.
- Do Not Allow UI Sessions: leave it unticked for OAuth, which needs it. Tick it only if you will connect with the user name and password.
- Click OK, then Done.
With the user name and password option, the connection stops working if the ISU's password expires. Check the expiry rules with the task Maintain Password Rules, and exclude the ISU from them.
Step 2 - Create a security group for the user
- Search for the task Create Security Group and run it.
- In Type of Tenanted Security Group, choose Integration System Security Group (Unconstrained).
- Give the group a Name, for example
ISSG_Weld, and click OK. - In Integration System Users, add the ISU from Step 1.
- Click OK, then Done.
Why unconstrained: Workday does not let a constrained integration group access the domains for journals and supplier invoices. Unconstrained does not mean access to everything: the group reads nothing until you grant domains in Step 3, so data such as compensation or worker details stays out of reach unless you grant those domains.
Step 3 - Give the group Get access to the domains you need
This is the step most setups get wrong. The group needs Get access to the domains behind every table you plan to sync, or those tables fail.
Make a list of the domains you need
For the most common reports, grant these domains:
- General ledger (
journal_entry,journal_source,ledger,account_set,company,cost_center,custom_worktag):- Process: Journals (NEW)
- Set Up: Financial Accounting
- Set Up: Company
- Set Up: Accounts
- Create: Cost Center
- Set Up: Worktags
- Accounts payable (
supplier,supplier_invoice,supplier_invoice_adjustment,payment,payment_term,payment_type):- Reports: Supplier
- Process: Supplier Invoice - View
- Process: Settlement
- Process: Supplier Invoice Payment/Settlement, plus the settlement domain of any other payment type you pay out, such as expense reports
- Set Up: Settlement
- Set Up: Supplier Accounts
- Accounts receivable (
customer,customer_invoice,customer_invoice_adjustment,customer_payment):- Reports: Customer
- Process: Customer Invoice - View
- Process: Customer Invoice Payment
For any other table, the Table Reference names the domains to grant. To sync every table, grant all the domains it lists.
Grant Get access
- Search for the task Maintain Permissions for Security Group and run it. Some tenants still call it Maintain Domain Permissions for Security Group.
- Leave Operation on Maintain, select your group, for example
ISSG_Weld, in Source Security Group, and click OK. - On the Domain Security Policy Permissions tab, add one row per domain on your list: click + at the top of the table, set View/Modify Access to Get Only, and pick the domain in Domain Security Policy. Weld never writes to Workday, and the View options only apply to people using Workday's screens. Some domains are named after tasks, such as Create: Cost Center, because they are the only domains that secure that data; with Get Only, Weld can read through them but cannot create or change anything.
- Click OK, then Done.
If a domain on your list is not offered, see If a table fails to sync.
Step 4 - Activate the security changes
- Search for the task Activate Pending Security Policy Changes and run it.
- Enter a Description for Change, for example
Weld integration access, and click OK. - Review the list of changes, tick Confirm and click OK.
Activate again whenever you add or remove domains later.
To check the result, run the report View Security Group for your group. The Domain Security Policy Permissions tab lists the domains the group can read and their functional areas, which you need for OAuth in Step 5.
Authentication policies
If your tenant uses authentication policies (task Manage Authentication Policies), Workday rejects sign-ins from groups no rule covers. Add the Weld group to a rule that allows any authentication type for OAuth, or User Name Password for the password option, then run Activate All Pending Authentication Policy Changes.
Step 5 - Choose how Weld signs in
| OAuth (API client for integrations) | Integration system user and password | |
|---|---|---|
| Recommended | Yes | Only if you cannot register API clients |
| What you enter in Weld | Hostname, tenant, client ID, client secret, refresh token | Hostname, tenant, user name, password |
| Weld stores the ISU password | No | Yes |
| Extra Workday setup | Register an API client and generate a refresh token | None |
Option A - OAuth (API client for integrations), recommended
Register the API client
- Search for the task Register API Client for Integrations and run it.
- Enter a Client Name, for example
Weld. - Tick Non-Expiring Refresh Tokens. Otherwise the token expires and the connection stops syncing until you generate a new one.
- Under Scope (Functional Areas), add every functional area that the View Security Group report in Step 4 lists for your group. Weld cannot read a domain whose functional area is missing here, even with Get access.
- Leave Include Workday Owned Scope unchecked.
- Click OK.
- Copy the Client ID and Client Secret from the confirmation page. The client secret is only shown once.
Generate a refresh token for the ISU
- Search for the task View API Clients and open the API Clients for Integrations tab.
- Find the client you just registered and open its related actions (the
…button). - Choose API Client → Manage Refresh Tokens for Integrations.
- In Workday Account, select the ISU from Step 1 (for example
ISU_Weld) and click OK. - Tick Generate New Refresh Token and click OK.
- Copy the Refresh Token from the confirmation page.
Generate the token for the ISU, not your own account. Weld reads Workday with the permissions of the account the token belongs to.
Option B - Integration system user and password
No further Workday setup is needed. In Weld you enter the ISU's user name, without an @tenant suffix, and password.
Step 6 - Find your hostname and tenant
Both values come from your Workday Web Services URL, which has the form:
https:///ccx/service//...
- Hostname is the services host, for example
wd2-impl-services1.workday.comorservices1.wd103.myworkday.com. It always has aservicespart. - Tenant is the path segment right after
/ccx/service/, for exampleacme_previeworacme.
Do not use the address you see in your browser, such as wd2-impl.workday.com or wd103.myworkday.com. It has no services part, and Weld rejects it.
Find the URL in either of these places:
- From View API Clients: run the task View API Clients. The Token Endpoint at the top of the page has the form
https://<hostname>/ccx/oauth2/<tenant>/token, so you can read both values from it. - From Public Web Services: run the report Public Web Services, open the related actions of any service (for example Human Resources), choose Web Service → View URLs, and click OK. Each URL has the form
https://<hostname>/ccx/service/<tenant>/Human_Resources/....
Sandbox and production tenants have different values, so look them up in the tenant you want to sync.
Step 7 - Create the connection
- In the Weld app, click Data Sources in the sidebar, then Add Data Source.
- Search for Workday Financial Management, select it and choose Create new connection.
- Give the connection a Name.
- Pick the authentication method you chose in Step 5:
- OAuth (API client for integrations): enter Hostname, Tenant, Client ID, Client Secret and Refresh Token.
- Integration system user and password: enter Hostname, Tenant, Username (without the
@tenantsuffix) and Password.
- Click Connect to save the connection.
If the connection fails
| Message in Weld | What to check |
|---|---|
| … is not a Workday services hostname | You entered the browser host. Use the services hostname from Step 6. |
| The hostname … could not be resolved | The hostname has a typo. Copy it again from Step 6. |
| Workday has no endpoint for tenant … | The tenant name is wrong, or the hostname belongs to a different tenant (for example a sandbox hostname with the production tenant name). |
| Workday rejected the client ID or client secret | Copy both again from the API client. If the secret was lost, generate a new one. |
| Workday rejected the refresh token | The token expired or was revoked. Generate a new one with Manage Refresh Tokens for Integrations and make sure Non-Expiring Refresh Tokens is ticked on the API client. |
| Workday rejected the username or password | Use the ISU's user name without @tenant, check the password, and check that the ISU is not required to change its password at next sign-in. |
If a table fails to sync
A successful connection only proves that Weld can sign in. A table that fails with The task submitted is not authorized is missing a domain, and the error names the Workday operation, for example Get_Journals.
- Grant Get access to the domain the Table Reference lists for the table (Step 3) and activate the change (Step 4). With OAuth, also add the domain's functional area to the API client's scope (Step 5). Then sync the table again.
- If the table still fails, or the domain is not offered when you grant access, your tenant secures the operation differently. Look up the domains it uses:
- Run the report View Security for Securable Item and enter the operation from the error.
- Click View Security on the row ending in (Web Service). The Domain Security tab lists the domains that secure the operation; Get access to any one of them is enough.
- Grant one of those domains and activate the change. With OAuth, also add its functional area, from the Functional Areas column, to the API client's scope. If the domain is not offered in Maintain Permissions for Security Group:
- It is part of a larger domain. Some domains, such as Set Up: Journal Source, cannot be granted on their own. Run the report View Domain for the domain and grant its Super Domain instead, Set Up: Financial Accounting in this case.
- Its functional area is disabled. Search for the task Maintain Functional Areas, enable the functional area, and search again.
Step 8 - Data To Sync
Select the tables you wish to include in the sync. You can view the schema, remove columns or hash sensitive information. Only select tables whose domains you gave the security group access to in Step 3.
85 tables are available, grouped below by area. Selecting a table also brings its child tables for line items and nested details, so journal_entry, for example, brings journal_entry_line with it. The Data Schema above shows them all.
- Accounting:
account_set,audit_tag,headcount_plan,journal_entry,journal_source,ledger - Payables:
payment,payment_message,supplier_invoice,supplier_invoice_adjustment,supplier_invoice_assignment_rule,supplier_invoice_request,supplier_invoice_schedule,supplier_refund - Receivables:
consolidated_invoice,customer,customer_activity,customer_invoice,customer_invoice_adjustment,customer_payment - Procurement:
business_entity_contact,catalog_item,purchase_item,purchase_item_list,purchase_order,purchase_order_acknowledgement,purchase_order_schedule,receipt,receipt_adjustment,request_for_quote,request_for_quote_award,request_for_quote_response,requesting_entity,requisition,return,supplier,supplier_catalog,supplier_classification,supplier_contract,supplier_contract_amendment,supplier_contract_lease_amendment,supplier_item - Revenue:
alternate_customer_contract,billing_schedule,billing_schedule_template,customer_contract,customer_contract_amendment,customer_contract_discount_and_premium,customer_contract_renewal_term,customer_contract_template,customer_contract_type,customer_date_milestone,order_fulfillment_transaction,revenue_adjustment_reason,revenue_allocation_configuration,revenue_category,revenue_category_hierarchy,revenue_recognition_schedule,sales_item,sales_item_fair_value_price_list,sales_item_group,sales_item_price_list - Inventory:
goods_delivery_ticket,inventory_par_location,inventory_picking_list,inventory_return_order,inventory_shipment,inventory_stock_request,inventory_transaction,item_lot,manufacturer - Reference data:
commodity_code,commodity_code_type,company,cost_center,currency,currency_conversion_rate,currency_rate_type,custom_worktag,item_identifier_type,organization,payment_term,payment_type,resource_category,spend_category_hierarchy
Attachments and other file content are not synced. Records deleted or cancelled in Workday can keep their last synced state in the destination. Run a ReSync of the table if you need the destination to match Workday exactly.
Step 9 - Configure sync
- Select how often you would like the data to sync.
- Choose a start date. It applies to
cost_center,journal_entry,organization,payment_message,purchase_item,purchase_order,receipt,resource_category,revenue_categoryandsupplier: only their records updated on or after this date are included in the first sync. All other tables always load in full. Leave it empty to load the full history in your tenant. - Check the Destination schema name, which is where the tables land in your warehouse, and click Start Initial Sync.