Oracle Fusion Cloud and Workday
How to connect Oracle Fusion Cloud (ERP, SCM and HCM) and Workday. Both read, and both can also make changes once a SourceLace admin turns them on: Oracle Fusion creates and updates records, and Workday starts one business process, the business title change (see Making changes). Each person signs in with their own Oracle or Workday login, so Oracle and Workday show them only what their own roles and security groups allow. SourceLace never uses an administrator or integration system account, for reads or for changes.
Status: in testing. Built against Oracle's and Workday's documented REST APIs and covered by automated tests against simulated systems; not yet used with a customer's live Oracle pod or Workday tenant.
How this differs from other sources
There is no SourceLace-wide app for Oracle or Workday. Your Oracle or Workday admin registers an OAuth client for SourceLace inside your own system, and your SourceLace admin types its details into the source.
- The client secret is stored encrypted with your organization's own key. After saving, SourceLace only ever shows
(saved). To keep it when editing the source, leave the field empty; to change it, type the new one. - Type the secret on the web app's Manage sources page, not in a chat, so it never sits in a chat transcript.
- SourceLace sends a PKCE challenge with every sign-in. A public client (no secret) also works where your policy prefers it: leave the secret empty.
The redirect URL both systems ask for is:
https://sourcelace.onrender.com/connect/callback
Oracle Fusion Cloud
Register SourceLace (Oracle identity domain administrator, about 15 minutes)
You need the Identity Domain Administrator role for the identity domain your Fusion users sign in with.
- Sign in to the OCI Console (cloud.oracle.com). Open Identity & Security → Domains and click the identity domain your Fusion users sign in with. (Older pods call this Oracle Identity Cloud Service; the steps are the same.)
- On the domain's Overview, copy the Domain URL, such as
https://idcs-0123456789abcdef.identity.oraclecloud.com. This is theidcs_urloption. - Open Integrated applications → Add application → Confidential Application → Launch workflow. Name:
SourceLace. Click Next. - Under Client configuration, choose Configure this application as a client now:
- Allowed grant types: tick Authorization code and Refresh token, nothing else.
- Redirect URL: the redirect URL above.
- Client type: Confidential.
- Token issuance policy → Resources: tick Add resources, click Add scope, choose your pod's Fusion Applications resource, and add its scope (usually
urn:opc:resource:consumer::all). - Click Next, then Finish.
- Click Activate on the new application.
- On its OAuth configuration tab, copy the Client ID, the Client secret (Show secret), and the scope shown next to the Fusion resource, exactly as shown with no added spaces, such as
urn:opc:resource:fa:instanceid=123456789urn:opc:resource:consumer::all. SourceLace addsoffline_accessitself, so people stay signed in. - Note the address people use for Fusion, such as
corvanta.fa.us2.oraclecloud.com. This is thehostoption.
Add the source (SourceLace admin)
Kind: Oracle Fusion Cloud (ERP, SCM, HCM) (oracle_fusion).
| Option | Type | Default | Example | What it is |
|---|---|---|---|---|
host |
Host name | (required) | corvanta.fa.us2.oraclecloud.com |
The Fusion address. Must end in .oraclecloud.com. |
idcs_url |
Host name | (required) | https://idcs-0123456789abcdef.identity.oraclecloud.com |
The identity domain URL from step 2. Must end in .identity.oraclecloud.com. |
client_id |
Text | (required) | 0a1b2c3d4e... |
From step 6. |
client_secret |
Secret | (none: public client) | From step 6. Stored encrypted; shown only as (saved). |
|
scope |
Text | (required) | urn:opc:resource:fa:instanceid=123456789urn:opc:resource:consumer::all |
The Fusion scope from step 6. |
resources |
List, separated by commas | (none) | receivablesCustomerAccountActivities, hcm/salaries |
Extra REST resources to list in search_schema. |
What people can do
search_schemalists common resources (Payables invoices, suppliers, purchase orders, requisitions, sales orders, items, projects, and HCM workers, absences, jobs and positions) plus any inresources. Any other Fusion REST resource can still be queried by name.describe_objectreads the resource's own description from Oracle: its attributes and child resources.query(languagefusion_rest) takes a resource with Oracle's REST options, such asinvoices?q=InvoiceAmount > 1000 and PaymentStatusFlag = 'N'&fields=InvoiceId,InvoiceNumber,InvoiceAmount&orderBy=InvoiceDate:desc&limit=50. HCM resources start withhcm/and CX ones withcrm/. The options allowed areq,fields,orderBy,finder,expand,limit(up to 500) andoffset; anything else is refused before Oracle is called. SourceLace pages through results itself.get_recordreads one record by its key, plus up to three child resources (such as an invoice'sinvoiceLines).propose_changeandapply_changecreate and update records, when changes are on (see Making changes).
Workday
Register SourceLace (Workday security administrator, about 15 minutes)
You need someone who can run the Register API Client task. Try it first in an implementation or sandbox tenant.
- Search for the task Register API Client (not "for Integrations": that one is for system accounts, and SourceLace signs each person in with their own login).
- Fill it in:
- Client Name:
SourceLace. - Client Grant Type: Authorization Code Grant. Access Token Type: Bearer.
- Redirection URI: the redirect URL above.
- Refresh Token Timeout (in days): how long people stay connected, such as 30, or tick Non-Expiring Refresh Tokens if your policy allows.
- Support Proof Key for Code Exchange (PKCE): tick it if your tenant shows it.
- Leave Public Client unticked.
- Scope (Functional Areas): at least Staffing, Organizations and Roles, Time Off and Leave, Jobs and Positions, Contact Information and System (System holds Workday Query Language). Add others, such as Compensation or Benefits, for data people should read.
- Include Workday Owned Scope: tick it.
- Client Name:
- Click OK. Workday shows the Client ID and Client Secret once: copy both now.
- Search for View API Clients and open the API Clients tab. Copy:
- Workday REST API Endpoint, such as
https://wd2-impl-services1.workday.com/ccx/api/v1/corvanta_preview. Its host (wd2-impl-services1.workday.com) is thehostoption, and its last part (corvanta_preview) is thetenantoption. - Authorization Endpoint, such as
https://impl.workday.com/corvanta_preview/authorize. If its host differs from the REST API host, that host (impl.workday.com) is theauth_hostoption.
- Workday REST API Endpoint, such as
Add the source (SourceLace admin)
Kind: Workday (workday).
| Option | Type | Default | Example | What it is |
|---|---|---|---|---|
host |
Host name | (required) | wd2-impl-services1.workday.com |
The REST API host from step 4. Must end in .workday.com or .myworkday.com. |
tenant |
Text | (required) | corvanta_preview |
The tenant name from step 4. |
auth_host |
Host name | the host option |
impl.workday.com |
The Authorization Endpoint's host, if different. |
client_id |
Text | (required) | MzY4... |
From step 3. |
client_secret |
Secret | (none: public client) | From step 3. Stored encrypted; shown only as (saved). |
What people can do
search_schemalists the REST objects (workers, supervisory organizations, job profiles, job families, jobs) and the WQL data sources the person may use (such asallActiveWorkers).describe_objecton a WQL data source lists its fields; on a REST object it lists the fields of a sample record and the related listsget_recordcan add.querytakeswql, one Workday Query LanguageSELECT ... FROM ...such asSELECT workdayID, fullName, businessTitle FROM allActiveWorkers WHERE isManager = true(noLIMITneeded), orworkday_rest, a REST collection withsearch,limitandoffset, such asworkers?search=Lee&limit=20.get_recordreads one REST object by its Workday ID, plus related lists such as a worker'sdirectReports,supervisoryOrganizationsManagedortimeOffDetails.propose_changeandapply_changestart a business title change, when changes are on (see Making changes).
Making changes
Changes are off until a SourceLace admin turns on Allow changes for the source and lists the objects under Objects that can be changed (such as invoices for Oracle Fusion, or businessTitleChange for Workday). As everywhere in SourceLace, the person first sees a preview with the current and new values, and nothing is sent until they confirm. Each change runs as that person's own Oracle or Workday login, so their own roles decide whether it is allowed.
Oracle Fusion: create and update
- What can be changed: any top-level Fusion REST resource the admin lists, by the same name
queryuses (such asinvoices,suppliers,purchaseRequisitionsorhcm/workers). A create sends one new record to the resource; an update changes one record. - Checked before anything is sent: field names are checked against the resource's own description from Oracle. An unknown field, or one Oracle marks as not updatable, is refused in the preview. If Oracle says the resource does not allow create or update, that is refused too.
- The preview shows the record's current values of just the fields being changed.
- If someone else changed the record after the preview, the change is refused and the person is asked to propose it again. SourceLace uses Oracle's record version (ETag) when Oracle returns one; otherwise it compares the record's
LastUpdateDate(or, if the resource has none, the values themselves) just before writing. - Deletes are refused. Fusion records are closed or cancelled through their status (for example, cancel an invoice or close a purchase order), so ask for a status change instead.
- What each person's roles decide: whether they can create or change that kind of record at all (their Fusion duty roles and privileges, such as Manage Payables Invoices) and which records (their data security, such as business units). If Oracle refuses, SourceLace shows Oracle's own message.
- Setup: nothing new. The Fusion scope you already gave the OAuth client covers reads and changes; Fusion's roles are what limit changes. Make sure the people who should make changes have the right Fusion roles.
Workday: the business title change
Workday does not let outside apps edit records directly: every change runs a business process inside Workday, with its own approvals. SourceLace only offers changes that are a single, documented Workday REST call, so a change can never stop half way. Today that is one:
| Object to allow | What it does | Field |
|---|---|---|
businessTitleChange |
Starts a Business Title Change for one worker | proposedBusinessTitle (text, up to 255 characters) |
- It is proposed as an update, with object
businessTitleChangeand the worker's Workday ID as the record id. The preview shows the worker's current business title. - Approvals still apply. The preview says so: this starts Workday's own business process, so if your Workday setup requires a manager or HR partner to approve, the new title shows only after they do.
- Creates, deletes, any other field and any other Workday object are refused in the preview, before anything is sent. Just before starting the change, SourceLace reads the worker's current title again and refuses the change if it moved since the preview.
- Once changes are on,
search_schemalistsbusinessTitleChangeanddescribe_objectshows its field. - What each person's security groups decide: whether they may start a business title change for that worker, set by the business process security policy for Business Title Change in Workday (for example, workers for themselves, or managers for their team). If Workday refuses, SourceLace shows Workday's own message.
- Setup: the API client's scope must include Staffing, the functional area that holds the Business Title Change business process (already in the list in step 2 above). If your API client was registered without it, edit the client in View API Clients and add it. Then turn on changes for
businessTitleChangeon the source. - Not offered yet: contact information changes, job changes, time off and other business processes.
When something goes wrong
| What you see | What to do |
|---|---|
| "... needs the option '...', such as ...." | Fill in that option. |
| "The option '...' of ... must be a host name ending in ..., such as ...." | Give only the host name, from the steps above. |
| "... needs the option 'client_id': the client id of the OAuth client your admin registered for SourceLace." | Fill in client_id. |
| "... needs the option 'scope': the Fusion scope shown in your identity domain, such as ..." | Copy the scope from step 6, exactly. |
| "Oracle sign-in failed: ..." or "Workday sign-in failed: ..." | The system's own reason follows, usually a redirect URL that does not match exactly, a wrong client secret, or (Workday) a missing functional area. |
| "Oracle did not say which user signed in." or "Workday did not say which worker signed in." | Contact support. |
| "Oracle Fusion: that resource or record does not exist, or your roles do not let you see it." | Check the resource name with search_schema; the person's Fusion roles may not allow it. |
| "Workday: that does not exist, or your security groups do not let you see it." | Check the name or id; the person's security groups may not allow it, or the API client lacks that functional area. |
| "Workday has no WQL data source '...' that you can use." | Check the data source name with search_schema. |
| "Oracle answered with a web page instead of data (HTTP ...)." (or Workday) | The host option is probably wrong, or the system is down for maintenance. |
| "Your Oracle sign-in has expired." or "Your Workday sign-in has expired." | Connect again. |
| "Oracle Fusion: your roles do not allow this. ..." | The person's Fusion roles do not allow creating or changing these records. Ask your Oracle admin. |
| "Oracle Fusion does not allow ... on ... through its REST API." | That resource cannot be created or updated through Oracle's REST API. Make the change in Fusion itself. |
| "This ... record changed in Oracle Fusion after the preview. Propose the change again." or "This worker changed in Workday after the preview. Propose the change again." | Someone else changed it; ask for a new preview. |
| "SourceLace does not delete Oracle Fusion records. ..." | Change the record's status instead, such as cancelling an invoice. |
| "SourceLace cannot change '...' in Workday. The changes it can propose are: ..." | Only businessTitleChange is offered. |
| "Workday changes go through business processes, so SourceLace can only start a business title change for one worker: ..." | Propose an update of businessTitleChange with the worker's Workday ID. |