Creating A Custom Workday Slack App Using KNIME

black and silver laptop computer
Photo by Mikhail Nilov on Pexels.com

Workday has a Slack app that does some cool things but is currently missing the customization of notifications related to all Workday tasks. This is a massive miss for companies that rely heavily on Slack for notifications instead of email.


To fill this need, we created an App that, in our testing examples, we called “Tobybot”. We can send Slack messages to individuals or Channels in Slack and give employees a stronger nudge about tasks they need to complete in Workday.


The KNIME Slack nodes that we used can be found here. While we built the connections and examples, none of this would be possible without the KNIME community development of these nodes.


Feel free to set up your own Slack Workspace and play around with the examples below to build your own Slack App.

Example Use Cases:

  • Distribute Task or To Do Notification (example #1)
  • Summarize Workday Data into a quick Slack message (example #2)
  • Reminder Slack about Pending Tasks like Job Change Approvals, 
  • Open Enrollment Launch / Close Reminders

The great thing about this is that as long as you can build a Workday RaaS Report, you can use it for notifications in Slack. This gives you a lot of flexibility.

Overall Setup:

  1. Build a RaaS report for the data you are looking to build notifications.
  2. Connect to the RaaS report in KNIME. You can see our guide on how to do this here.
  3. Build the Slack node connection (see below). Please note the Slack nodes are not available out of the box in KNIME, and you will need to download them from the Community nodes.

Setting Up Slack App:

  1. Log in to your Slack account on a browser.
  2. Go to the App Directory
  3. Click Build
  4. Click “Create New App”
  5. You can Create From Scratch or use the manifest file we built here. If you use our manifest file, you can tweak the app once you load it into your workspace to make it your own.
  6. Once you have built the app, you will need to “Install to Workspace”.
  7. Finally, you will need to copy your OAuth token.

For data security purposes, I can not connect to a live Workday environment so instead I am connecting to an example XML dataset that is available on W3schools (example data). The data in this example is using CDs, but the framework is the same.

Example 1:

In this example, we are mocking up sending Slack messages to employees who still need to complete a Review Document in Workday. You can build a RaaS report directly for these pending tasks and include the workers’ email (which will help when connecting them to Slack).

Link to Workflow

What Is Happening?

  • Section 1 – We are grabbing the data and transforming it. The Rule Engine was used to mockup the email field, but you should include that in your RaaS, and then it won’t be needed. Then we join it with the “Get Users” to map to the Slack User ID.
  • Section 2 – I used Rule-based Row Splitter to filter out the data. There are a few ways you can do this. I like using the Splitter to check the filtered-out data and ensure it works as expected. The Constant Value Column is then used to populate the Slack message I want to trigger. You can make this more custom by using a String Manipulation to add details like the User’s name or if you are pulling in fields from a report you want to call out.
  • Section 3 – Using a Variable Loop, you can send a message to each User. It will loop through each row until all rows are completed. Variables control all of the data in the Message Slack User.

After you add your Oath to this Workflow you will see it will send two Slack messages. We added our email to the Rule Engine (section 1) so that our email/Slack account is used for all records. That is why we received both messages. But if the emails/Slack IDs are unique, it will send the messages to each user individually.

Example 2:

In this example, we are mocking up sending Slack messages to a Slack Channel about records per year (which you can equate to hires, terms, etc.). 

Link to Workflow

What Is Happening?

  • Section 1 – No changes here from example one. We also did not need the Get Users node, but this was a copy of Example 1 and left here.
  • Section 2 – Here is where most of our changes and transformations are being done. First, we used “Group By” to group albums by year. We then used “String Manipulation” to write out the sentence we wanted. We added columns to the join function within the sentence to list the data we want to include in the Slack message. We then followed this workflow example to combine all of the sentences (link). You could use a loop and Slack each row individually, but this could become overwhelming if you are slacking a channel for each record. This option combined all of the output into one message. We then converted the data to a Variable.
  • Section 3 – We removed the loop and manually put in the Channel ID for where we wanted the message to go. We kept the Variable for the OAuth and Message.

Tips and Tricks:

  • Why do you need two back-to-back Xpath nodes? – While it might not be necessary in this example, we have found issues where the Xpath formatting has populated incorrectly. We found community posts like this one which helped with the issue. Using the double Xpath nodes by default now to cover this issue.
  • Missing fields on RaaS – This can be caused either by a security issue with your ISU or if the first record does not have data in the field. The XML for that record will not appear. You might need to add it manually.
  • Slack message formatting – There is not a lot of formatting you can do in Slack in general. For any formatting, you will need to use Markdown. You can find examples of this online.
  • The “Slack Users Lookup By Email” seems the most concise way to merge Workday data with the Slack data by using the email as the join, but it seems to take a long time to process. Depending on your data, it may cause it to time out. You can also use the “Get Users” node and “Joiner” to complete this much quicker.
  • You can store the OAuth as a Workflow Variable. Not sure if this is more secure, but it allows the variable to be stored within the Workflow, so you don’t need to copy and paste it into each Slack node. You can just select the variable. We can provide a guide for this in the future.
  • Sadly we have not found a way to include the direct task URL from Workday. So in our live setups, we link to the Workday Inbox/My Tasks.
  • If you are trying to message a private Slack channel, you may need to @mention your Slack app first to add it to the channel. Then it will be able to post messages in that channel.
  • How can I schedule my KNIME workflows? You would either need to get a paid version of KNIME or set up the command line/your computer’s system scheduler. You can learn a bit more about it here.

Leave a Reply

Discover more from Koluit

Subscribe now to keep reading and get access to the full archive.

Continue reading