Stephen Gilmore.

Notes from building my first Workday Sudio DIS

This week, I had a good use case using a custom Data Initialization Service (DIS) in a Studio from “scratch”, and I learned a few things along the way. It was a bit different than using DIS in a connector, Workday’s Data Initialization Service (DIS) is fast!.

What is DIS?

DIS is a way for Workday to query data efficiently. It can act as a substitute for GET_* API calls and RaaS reports. It’s similar in complexity to paged SOAP API requests.

Hidden in a Community discussion, I found a comment by product manager Doug Lee, where I learned:

  1. The data querying and extraction happens in the tenant before integration code is ran.
  2. Queries make better use of resources and typically yield higher performance than web services.
  3. The DIS extraction happens before an integration runs. Meaning it won’t count against runtime limits.

DIS negatives?

  • Higher complexity than a RaaS report.

Workday Community has a post in the knowledge base with 2 sample .clar files showing how to process DIS in a Studio. Data Initialization Service for Custom Integrations

Lesson’s learned

Service configuration notes

  • Make the Wrapper Element Name be root
  • Make the Web Service Alias be record or row
  • I have no idea what Can Be Relaunched with Completed Documents does. It’s absent from Workday Community’s docs when I built this.

There could be a lot of documents

Depending on the configured partition size, you can end up with at on of little documents to deal with. Be conscious of how and what you log. In addition to the data docs, there are extra audit files.

The document tag I used to iterate the DIS documents was Data - Partial.

Helpful mvel commands to help processing the documents:

// All of these are functions you can drop into an
// eval or log step.
// They need to occur after a GetIntegratonDocuments component.

// Get a list of document tags
props['docLabels'] = da.allLabels.toString();

// Count the number of documents
props['docCount'] = da.size();

DIS Service configuration quirks

DO NOT create the DIS service in Workday Studio.

  1. Log into the tenant and run the task Create Integration Data Initialization Service
  2. In Studio, you want to Create service-reference and type in the exact name of the service you created.
  3. Ignore the “⚠️The entered service name is not defined in the workspace” warning. Studio will figure it out when you deploy.

If you decide to select Create 'data-initialization-service' in Studio, you’ll spend a lot of time rebuilding your DIS service because Studio will wipe it out every single time you deploy.

Huge thank you to Harshil Tamrakar on these Community discussions:

Bonus: Integration retrieval service notes

Retrieval services have the same issue described above. Deploying the service in the studio causes it to be deleted with every deploy. I feel like I should have remembered that… It’s been a long time since I’ve done an inbound document-based Studio. The solution is the same as above. Create the service in the tenant.

Thank you again Doug Lee for confirming in a comment: Re: Studio - Deployment erases all the services se… - Workday Community