Thursday, April 30

Workday: Core Connector Templates

Below are some of the hand picked core connector integration templates that you generally see during work.

Core Connector for HCM -Templates:


Core Connector: Worker
Core Connector: Positions
Core Connector: Locations
Core Connector: Job Requisitions
Directory Service
E-Verify - Employment Verification
Core Connector: Job Profile and Job Family
Core Connector: Organization Inbound
Core Connector: Organization Outbound

Integration - Templates:


Enterprise Interface Builder  (EIB Related)
Cloud Integration Template   (Studio related)
Document Transformation

Cloud Connect for Benefits - Templates:


CIGNA: Medical, Dental, Wellness, FSA
Guardian: Dental, Vision, Insurance
Delta Dental of CA: Dental
Aetna: FSA, HSA, Life, Disability
MetLife: Dental, Vision
HealthPartners: Medical, Dental, Vision, Rx

Cloud Connect for Third Party Payroll - Templates:


Payroll Interface
PI External Results Inbound (Do Not Use)
Import External Payslips
Payroll Effective Change Interface
PECI - Merge Files Integration Template
External Payroll Results Inbound
Worker Effective Change Interface

iLoad- Templates:


iLoad Bulk: Process Input File Template
iLoad Bulk: Doc Splitter


Access the report - Integration Template Catalog to view all the integration templates that Workday is offering.

Friday, April 17

Integrations: Workday XSL Coding Tips

Workday XSL Coding Tips


Using Variables (Declaration) :


<xsl:variable name="NEWLINE" select="'&#xa;'"/>
<xsl:variable name="PIPE" select="'|'"/>   [Use the delimiter that you would like to see in the output. Examples: Comma(,), Tab (    ), Pipe(|), SemiColon(;) ]
               <xsl:variable name="Record1" select="'C'"/>
               <xsl:variable name="Record2" select="'S'"/>

Using your Variable: (for above)


              <xsl:value-of select="$NEWLINE"/> [This takes the cursor to next line]
              <xsl:value-of select="$PIPE"/>  [This prints | ]
      <xsl:value-of select="$Record1"/>     [This prints C]
      <xsl:value-of select="$Record2"/>     [This prints S]


Using Fillers (Declaration):

    <xsl:variable name="Filler_Blank" select="'                                                                                                                            '"/>
            <xsl:variable name="Filler_Zeros" select="'0000000000000000000000'"/>


Using your Fillers and Substring Function: (for above)

             <xsl:value-of select="substring($Filler,1,10)"/>           [This prints 10 spaces, if you say 15 then it will print 15 spaces ]
             <xsl:value-of select="substring($Filler_Zeros,1,4)"/>  [This prints 0000 as you said 4]


Using Plain Text:


<xsl:value-of select="'TEST'"/>

Using Comment:


<!--  Your Comment Here  -->  

Using Choose:


    <xsl:choose>
<xsl:when test=" wd:Gender = 'Male' ">
   <xsl:value-of select="'M'"/>
        </xsl:when>
<xsl:when test=" wd:Gender = 'Female' ">
   <xsl:value-of select="'F'"/>
        </xsl:when>
        <xsl:otherwise>
                  <xsl:value-of select="'U'"/>
        </xsl:otherwise>
    </xsl:choose>

Using For:


<xsl:for-each select="wd:Report_Data/wd:Report_Entry">

          <Your Lines of code here>

        </xsl:for-each>

Using Templates:


    <xsl:template match="/">
        <xsl:call-template name="HeaderRecord"/>
        <xsl:call-template name="DetailRecords"/>
        <xsl:call-template name="TrailerRecord"/>
    </xsl:template>

    <xsl:template name="HeaderRecord">
          <Your Lines of code here>
    </xsl:template>

    <xsl:template name="DetailRecords">
          <Your Lines of code here>
    </xsl:template>

    <xsl:template name="TrailerRecord">
          <Your Lines of code here>
    </xsl:template>


Thursday, April 16

Reporting: Catch Up Behavior - Scheduling Reports / Integrations

Catch Up Behavior - Scheduling

While scheduling the Reports or Integrations, you will come across Catch Up Behavior field which is mandatory. Using the Catch Up Behavior option enables you to limit how many times processes run after maintenance issues cause errors. 

You will see the below options available. First time scheduling you will only see (Run Once and None)
  • Run Once - Selecting this option will Catch Up one time if it missed.
  • None        -  Selecting this option will NOT Catch Up at all even though it missed.
  • Legacy     -  Selecting this option will Catch Up the old /earlier expired ones. This is going to be deprecated in the future. [Don't be surprised if you don't see this now]
Example: If you schedule a process to run multiple times in a day when your environment is down for maintenance, you can limit the process to run once instead of catching up all missed occurrences.

During the maintenance window / Unplanned outage, if your reports or integrations were supposed to be running as per the schedule during that time you will use Catch up Behavior selection to tell what you want to do on the missed recurrences.


Note: You can't limit processes for schedules with a minute recurrence.

Wednesday, April 15

Integrations: Workday XML - XSLT Sample codes

Use the below sample code to start with your XSLT journey. I made it as simple as possible for you to understand and get going.

xml Sample:


<?xml version="1.0" encoding="UTF-8"?>
<wd:Report_Data xmlns:wd="urn:com.workday.report/WD_Sample_Report">
  <wd:Report_Entry>
    <wd:Employee_ID>1234</wd:Employee_ID>
    <wd:firstName>Steve</wd:firstName>
    <wd:lastName>Morgan</wd:lastName>
    <wd:Age>56</wd:Age>
  </wd:Report_Entry>
  <wd:Report_Entry>
    <wd:Employee_ID>1235</wd:Employee_ID>
    <wd:firstName>Logan</wd:firstName>
    <wd:lastName>McNeil</wd:lastName>
    <wd:Age>40</wd:Age>
  </wd:Report_Entry>
  <wd:Report_Entry>
    <wd:Employee_ID>1236</wd:Employee_ID>
    <wd:firstName>Joy</wd:firstName>
    <wd:lastName>Banks</wd:lastName>
    <wd:Age>42</wd:Age>
  </wd:Report_Entry>
</wd:Report_Data>

xslt Sample:


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:wd="urn:com.workday.report/WD_Sample_Report" version="2.0">

<xsl:output method="text" indent="no"/>
<xsl:strip-space elements="*"/>

<xsl:variable name="NEWLINE" select="'&#xa;'"/>
<xsl:variable name="PIPE" select="'|'"/>

<xsl:template match="/">
    <!-- Header Record --> 
    <xsl:text>Employee ID</xsl:text>
        <xsl:value-of select="$PIPE"/>
<xsl:text>First Name</xsl:text>
        <xsl:value-of select="$PIPE"/>
<xsl:text>Last Name</xsl:text>
        <xsl:value-of select="$PIPE"/>
<xsl:text>Age</xsl:text>
<xsl:value-of select="$NEWLINE"/> 
<xsl:for-each select="wd:Report_Data/wd:Report_Entry">
    <!-- Detail Record --> 
        <xsl:value-of select="wd:Employee_ID"/>
                <xsl:value-of select="$PIPE"/>
    <xsl:value-of select="wd:firstName"/>
                <xsl:value-of select="$PIPE"/>
    <xsl:value-of select="wd:lastName"/>
        <xsl:value-of select="$PIPE"/>
    <xsl:value-of select="wd:Age"/>
        <xsl:value-of select="$NEWLINE"/>
</xsl:for-each>

    <!-- Trailer Record --> 
<xsl:text>End of Records</xsl:text>
 
</xsl:template>
</xsl:stylesheet>

Test

Use XLS Transformer to test the above code.

Result:


Employee ID|First Name|Last Name|Age| 1234|Steve|Morgan|56 1235|Logan|McNeil|40 1235|Joy|Banks|42 End of Records

Tuesday, April 14

Integrations: XML - XSL Tranformation - Free online Formatter

Workday XML - XSL Tranformation

Abbrevations:

XML Stands for eXtensible Markup Language
XSL Stand for eXtensible Stylesheet Language (Styling language for XML)
XSLT stands for XSL Transformations.


If you do not have any xsl transformers installed on your local machine,  I suggest you to use online free formatter to test your xml to xslt conversion and see how your end data looks like after applying your transformation code.

Follow the below three steps, to transform your xml.
  1. XML input - Copy Paste / Attach your generated workday xml code.
  2. XSL input  - Copy Paste / Attach your own custom code in relation to your xml.
  3. Transform XML - Click this to see the result.
Click the below link to format your code.


Just a word of caution: Make sure, you avoid any confidential data in your xml file while using free online formatters

Monday, April 13

Business Processes: How to exclude the Notification details link

How to exclude the Notification details link - Business Process

In business Processes, you know that you will be able to configure the custom notifications. Usually you will see the link in the notification that gets generated. There could be different reasons ( like security, don't need to give extra details) as why you don't want to show up the link to the process. 

Go to Edit Workflow Notification and check the check box as shown below. This helps in not showing the link details.



Sunday, April 12

Integrations: EIB - Inbound Validation Only mode

How to Run EIB Inbound in Validation mode


When you want to load some data into Workday, you typically use the EIB Inbound. You know you will use the three phases involved in EIB - Get Data, Transform Data, Deliver Data.

Its always a good approach to run your EIB Inbound integration load with Validation Only Load.

This helps you in identifying the issues so that you can fix it and proceed with the actual load.

Below shown is the screen when you click on Launch/Schedule integration. Here is where you set the Validation Only Load. When you are comfortable with the load validation, in the next launch just make sure that you don't select so that your run will not be a Validation only but an actual load.


Workday EIB Inbound - Validation Mode Setup

Saturday, April 11

Workday Assistant / Chat Bot


Workday Assistant / Chat Bot is the new feature with release R1 2020(34)

We can enable users to perform HCM related tasks and retrieve Workday information by having a conversation with the Assistant chatbot.


Examples:
  • Show my playslip
  • Request time off and view balances.
  • View worker and manager information.
  • Initiate a location or supervisory organization change.

Workday also supports Assistant on mobile.

Assistant doesn't support proxy users.

In Non-Production tenants, when you proxy as some one, the bot will still consider you as the user and provide your information and not the one whom you are proxy-ing. Which is correct.