Workday Hires are not found during aggregation

Which IIQ version are you inquiring about?

8.4p1

Share all details about your problem, including any error messages you may have received.

I have set up a standard Workday application connection. I connected the application to one of our Dev Workday tenants and I was able to read in Workday Hires. However, when I changed the application connection to a different Workday tenant, I was no longer able to read in Hires. I am able to read in existing users from Workday in both Workday tenants, but I can read in Hires from ONLY the first tenant. The Workday team is saying that the security access for my accounts in both Workday tenants are the same.

Does anyone have any ideas as to what is going on here? I don’t see anything else to configure within IIQ to make this all work. Is there some way to do an export of a worker Hire from each tenant and then do a compare to see if there is some difference that is causing IIQ to not see them when aggregating?

I’m at a total loss as to what to do and I would love to hear any insight that anyone would have.

Thanks!

is the test connection and schema preview working fine ?

Hi @vic_rinkenberger,

for reading future hire you need to insert a value(in days) in Effective Date Offset, like this:
image
This value means that connector will read all the account with hire date from today to today+offset.

Also, you must have this key in application xml:

<entry key="Future_Hire_Events"> 
     <value>
           <List>
               <String>Hire Employee</String>    
               <String>Onboarding</String>     
              <String>Contract Contingent Worker</String>
          </List>
     </value> 
</entry> 

In this page you can find the guide about this:

PS Never trust into other teams :crazy_face:. Use SOAPUI with workday project and test it if you can read the future hires

1 Like

Yes, the connection is working fine. I can read in terminations with FUTURE_ values, like this:

          <entry key="FUTURE_ACTION" value="Terminate Employee"/>
          <entry key="FUTURE_DATE" value="08/21/2024"/>
          <entry key="LAST_DAY_OF_WORK" value="08/21/2024"/>
          <entry key="TERMINATION_DATE" value="08/21/2024"/>

But, hires will only show up on the exact date of hire.

I have tried variations of config options. Here is what I currently have:

      <entry key="Future_Data_Business_Process">
        <value>
          <List>
            <String>Contract Contingent Worker</String>
            <String>Onboarding</String>
            <String>Hire Employee</String>
            <String>End Contingent Worker Contract</String>
            <String>Terminate Employee</String>
          </List>
        </value>
      </entry>
      <entry key="Future_Hire_Events">
        <value>
          <List>
            <String>Hire Employee</String>
            <String>Onboarding</String>
            <String>Contract Contingent Worker</String>
          </List>
        </value>
      </entry>
      <entry key="Future_Termination_Events">
        <value>
          <List>
            <String>Terminate Employee</String>
            <String>End Contingent Worker Contract</String>
          </List>
        </value>
      </entry>

I added in the Future_Data_Business_Process key, but that didn’t help. At the start of my testing, I did not have that key in place, and I still could not read in future hires.

Here are my XPaths:

            <entry key="FUTURE_ACTION" value="ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data/ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Hire Employee&apos;]/ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]|ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data/ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Contract Contingent Worker&apos;]/ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;] | ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data/ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Terminate Employee&apos;]/ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;] |ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data/ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Onboarding&apos;]/ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;] |ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data/ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;End Contingent Worker Contract&apos;]/ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]"/>
            <entry key="FUTURE_ACTION2" value="ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data/ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Hire Employee&apos;]/ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]|ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data/ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Terminate Employee&apos;]/ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;] | ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data/ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Contract Contingent Worker&apos;]/ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;] |ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data/ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;End Contingent Worker Contract&apos;]/ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]"/>
            <entry key="FUTURE_ACTION3" value="ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data/ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Hire Employee&apos;]/ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;] | ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data/ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Terminate Employee&apos;]/ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;] | ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data/ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Onboarding&apos;]/ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;] | ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data/ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Contract Contingent Worker&apos;]/ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;] | ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data/ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;End Contingent Worker Contract&apos;]/ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]"/>
            <entry key="FUTURE_DATE" value="ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data[ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Hire Employee&apos;]]/ns1:Transaction_Effective_Moment |ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data[ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Contract Contingent Worker&apos;]]/ns1:Transaction_Effective_Moment  |ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data[ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Terminate Employee&apos;]]/ns1:Transaction_Effective_Moment |ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data[ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Onboarding&apos;]]/ns1:Transaction_Effective_Moment |ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data[ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;End Contingent Worker Contract&apos;]]/ns1:Transaction_Effective_Moment"/>
            <entry key="FUTURE_DATE2" value="ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data[ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Hire Employee&apos;]]/ns1:Transaction_Effective_Moment |ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data[ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Terminate Employee&apos;]]/ns1:Transaction_Effective_Moment |ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data[ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Onboarding&apos;]]/ns1:Transaction_Effective_Moment |ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data[ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;End Contingent Worker Contract&apos;]]/ns1:Transaction_Effective_Moment | ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data[ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Contract Contingent Worker&apos;]]/ns1:Transaction_Effective_Moment"/>
            <entry key="FUTURE_DATE3" value="ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data[ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Hire Employee&apos;]]/ns1:Transaction_Effective_Moment | ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ ns1:Transaction_Log_Data[ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Terminate Employee&apos;]]/ns1:Transaction_Effective_Moment | ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data[ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Onboarding&apos;]]/ns1:Transaction_Effective_Moment | ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data[ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;Contract Contingent Worker&apos;]]/ns1:Transaction_Effective_Moment | ns1:Worker_Data/ns1:Transaction_Log_Entry_Data/ns1:Transaction_Log_Entry/ns1:Transaction_Log_Data[ns1:Transaction_Log_Type_Reference[ns1:ID[@ns1:type=&apos;Business_Process_Type&apos;]=&apos;End Contingent Worker Contract&apos;]]/ns1:Transaction_Effective_Moment"/>

None of those pull in anything. I simply don’t get any future-dated hires during aggregation.

I have read the SailPoint docs about ten times, but I don’t see where I have things wrong. It seems like the problem is the XPath, but I’m not sure where to find the right XPath.

I am working to get SoapUI set up, but I’m not the most familiar with WSDLs, etc.

No problem is easy. On this page you can find the wsdl project:
https://community.workday.com/sites/default/files/file-hosting/productionapi/index.html

You can dowload the wdsl of Human_Resources and upload on SOAPUI. There ou can find the call Get_Workers and read one or all accounts. Here the doc:
https://community.workday.com/sites/default/files/file-hosting/productionapi/Human_Resources/v42.2/Get_Workers.html

Also, the problem that you can read future hires from an enviroment and cant read from another means that you have some difference into configuration between the 2 apps.

About the future hires in the first env, can you confirm that you are reading every time those account? So the last refresh date of account is the same of last aggregation?
image
I know that is a banal question, but I want exclude every possible cause.

PS which version are you using of workday? and have you setup it in xml?

To be clear, I am not able to read Future Hires in any environment. I can see Future Terms with no issue.

I am using SoapUI to manually pull the worker I’m trying to aggregate. They have a hire date of 9/1 (9 days from now), but I can see that they are inactive:

   <wd:Employment_Data>
      <wd:Worker_Status_Data>
         <wd:Active>0</wd:Active>

Is it expected that the worker would be inactive?

I have to set this in the SoapUI request in order to get the worker to even be retrieved:

            <wd:Request_Criteria>
                <wd:Exclude_Inactive_Workers>false</wd:Exclude_Inactive_Workers>

I tried setting this parameter to true: isInactiveWorkersAllowed, but that didn’t help at all.

I’m still unsure if I have the right XPath for FUTURE_DATE. I do not know how to find that in the Workday docs you referenced.

Thanks for the help!

Ok, I had misunderstood.
try with this body in your call. You can read a specific user or wothour refernce/critiria you can read all users.

If with this call you can read the future hires from new workday tenant, it means the service user that your are using for the connector dont have the permission.

   <soapenv:Body>
      <wd:Get_Workers_Request>
         <!-- Optional -->
         <wd:Request_References>
            <!-- Filter for EmployeeID or Contingent_Worker_ID -->
            <!--
            <wd:Worker_Reference>
               <wd:ID wd:type="Employee_ID">12345</wd:ID>
            </wd:Worker_Reference>
            <wd:Worker_Reference>
               <wd:ID wd:type="Contingent_Worker_ID">12345</wd:ID>
            </wd:Worker_Reference>
            -->
         </wd:Request_References>
         <!-- Optional -->
         <wd:Request_Criteria>
            <!-- Filter for status -->
            <!--
            <wd:Worker_Status_Reference>
               <wd:ID wd:type="Active">Active</wd:ID>
            </wd:Worker_Status_Reference>
            -->
         </wd:Request_Criteria>
         <wd:Response_Filter>
            <wd:Page>1</wd:Page> <!-- N.Page -->
            <wd:Count>100</wd:Count> <!-- Result per page -->
         </wd:Response_Filter>
         <wd:Response_Group>
            <wd:Include_Reference>true</wd:Include_Reference>
            <wd:Include_Organization_Assignments>true</wd:Include_Organization_Assignments>
            <wd:Include_Personal_Information>true</wd:Include_Personal_Information>
            <wd:Include_Employment_Information>true</wd:Include_Employment_Information>
            <wd:Include_Additional_Information>true</wd:Include_Additional_Information>
            <wd:Include_Compensation>true</wd:Include_Compensation>
            <wd:Include_All_Roles>true</wd:Include_All_Roles>
            <wd:Include_Management_Chain_Data>true</wd:Include_Management_Chain_Data>
            <wd:Include_Photo>true</wd:Include_Photo>
            <wd:Include_Professional_Experience>true</wd:Include_Professional_Experience>
            <wd:Include_Personal_Interests>true</wd:Include_Personal_Interests>
            <wd:Include_External_IDs>true</wd:Include_External_IDs>
            <wd:Include_Employment_Eligibility>true</wd:Include_Employment_Eligibility>
            <wd:Include_Former_Workers>true</wd:Include_Former_Workers>
            <wd:Include_Worker_Documents>true</wd:Include_Worker_Documents>
            <wd:Include_Location_Details>true</wd:Include_Location_Details>
            <wd:Include_Academic_Qualifications>true</wd:Include_Academic_Qualifications>
            <wd:Include_Worker_Passports>true</wd:Include_Worker_Passports>
            <wd:Include_Worker_Phones>true</wd:Include_Worker_Phones>
            <wd:Include_Worker_Photos>true</wd:Include_Worker_Photos>
            <wd:Include_Worker_Addresses>true</wd:Include_Worker_Addresses>
            <wd:Include_Worker_References>true</wd:Include_Worker_References>
            <wd:Include_Worker_Contact_Information>true</wd:Include_Worker_Contact_Information>
            <wd:Include_Contingent_Worker_Data>true</wd:Include_Contingent_Worker_Data>
            <wd:Include_Worker_Social_Account>true</wd:Include_Worker_Social_Account>
            <wd:Include_Worker_Dependents>true</wd:Include_Worker_Dependents>
            <wd:Include_Worker_Social_Benefits>true</wd:Include_Worker_Social_Benefits>
            <wd:Include_Worker_Benefits>true</wd:Include_Worker_Benefits>
            <wd:Include_Worker_Schedule>true</wd:Include_Worker_Schedule>
            <wd:Include_Worker_Training>true</wd:Include_Worker_Training>
            <wd:Exclude_Reference>false</wd:Exclude_Reference>
            <wd:Exclude_Organization_Assignments>false</wd:Exclude_Organization_Assignments>
            <wd:Exclude_Personal_Information>false</wd:Exclude_Personal_Information>
            <wd:Exclude_Employment_Information>false</wd:Exclude_Employment_Information>
            <wd:Exclude_Additional_Information>false</wd:Exclude_Additional_Information>
            <wd:Exclude_Compensation>false</wd:Exclude_Compensation>
            <wd:Exclude_All_Roles>false</wd:Exclude_All_Roles>
            <wd:Exclude_Management_Chain_Data>false</wd:Exclude_Management_Chain_Data>
            <wd:Exclude_Photo>false</wd:Exclude_Photo>
            <wd:Exclude_Professional_Experience>false</wd:Exclude_Professional_Experience>
            <wd:Exclude_Personal_Interests>false</wd:Exclude_Personal_Interests>
            <wd:Exclude_External_IDs>false</wd:Exclude_External_IDs>
            <wd:Exclude_Employment_Eligibility>false</wd:Exclude_Employment_Eligibility>
            <wd:Exclude_Former_Workers>false</wd:Exclude_Former_Workers>
            <wd:Exclude_Worker_Documents>false</wd:Exclude_Worker_Documents>
            <wd:Exclude_Location_Details>false</wd:Exclude_Location_Details>
            <wd:Exclude_Academic_Qualifications>false</wd:Exclude_Academic_Qualifications>
            <wd:Exclude_Worker_Passports>false</wd:Exclude_Worker_Passports>
            <wd:Exclude_Worker_Phones>false</wd:Exclude_Worker_Phones>
            <wd:Exclude_Worker_Photos>false</wd:Exclude_Worker_Photos>
            <wd:Exclude_Worker_Addresses>false</wd:Exclude_Worker_Addresses>
            <wd:Exclude_Worker_References>false</wd:Exclude_Worker_References>
            <wd:Exclude_Worker_Contact_Information>false</wd:Exclude_Worker_Contact_Information>
            <wd:Exclude_Contingent_Worker_Data>false</wd:Exclude_Contingent_Worker_Data>
            <wd:Exclude_Worker_Social_Account>false</wd:Exclude_Worker_Social_Account>
            <wd:Exclude_Worker_Dependents>false</wd:Exclude_Worker_Dependents>
            <wd:Exclude_Worker_Social_Benefits>false</wd:Exclude_Worker_Social_Benefits>
            <wd:Exclude_Worker_Benefits>false</wd:Exclude_Worker_Benefits>
            <wd:Exclude_Worker_Schedule>false</wd:Exclude_Worker_Schedule>
            <wd:Exclude_Worker_Training>false</wd:Exclude_Worker_Training>
         </wd:Response_Group>
      </wd:Get_Workers_Request>
   </soapenv:Body>

I am not able to get your call to work. I’m getting this error:

               <wd:Validation_Error>
                  <wd:Message>Invalid Subelement Include_Organization_Assignments-urn:com.workday/bsvc for element Worker_Response_Group (6$16666)</wd:Message>
                  <wd:Detail_Message>Invalid Subelement Include_Organization_Assignments-urn:com.workday/bsvc for element Worker_Response_Group (6$16666)</wd:Detail_Message>
                  <wd:Xpath>/wd:Get_Workers_Request[1]/wd:Response_Group[1]/wd:Include_Organization_Assignments[1]</wd:Xpath>
               </wd:Validation_Error>

I am using the same user in both IIQ and SoapUI. In IIQ I can’t get future hires, but in SoapUI, I can get future hires if I include the Exclude_Inactive_Workers parameter.

Again, I am able to pull back the future-dated worker in SoapUI, but the IIQ aggregation won’t find them.

I was able to figure out this issue once I turned on trace for the application. I had renamed the HIREDATE attribute and any future-dated hires rely on that specific attribute to be present in order to be found. Once I added that attribute back, future hires started to show as expected.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.