Announcing the Saviynt Knowledge Exchange unifying the Saviynt forums, documentation, training,
and more in a single search tool across platforms. Read the announcement here.
100% helpful (1/1)
sudeshjaiswal
Saviynt Employee
Saviynt Employee

Use Case

 

Workday is the authoritative source of user data. When users are imported from Workday to Saviynt, an email address must be generated in Saviynt which has to be updated back to Workday.
 

Pre-requisites


Workday Connector (Authoritative Source) should be importing users to Saviynt
 

Applicable Version(s)


All
 

Solution


For any updates to Workday, you will have to use SOAP APIs. This is irrespective of whether you used SOAP API or RAAS for user import.

Please refer to Workday connector documentation for details of configuring the Workday SOAP connection and enabling email generation in Saviynt.

Below steps provide one way to accomplish this use case of updating back in Workday through user update.

  • For the Workday SOAP connection, below is a sample UPDATEUSERJSON.

 

This includes passing the current date as the effective date and Worker Reference (eg: Employee_ID, Contractor_ID) based on the type of user.

 

[{

"CONNECTION": "login",

"${user.email != null && user.email != '' ?
('<soapenv:Envelope
xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"
xmlns:bsvc=\"urn:com.workday/bsvc\">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand=\"1\"
xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"
xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\">
<wsse:UsernameToken wsu:Id=\"UsernameToken-64DBF26FBA30D3CCB6146964280369918\">
<wsse:Username>${USERNAME}</wsse:Username>
<wsse:Password Type=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\">${PASSWORD}</wsse:Password>
<wsse:Nonce EncodingType=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary\">lLP+oysknDXxg0ZcnRTUXg==</wsse:Nonce>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<bsvc:Maintain_Contact_Information_for_Person_Event_Request
xmlns:wd=\"urn:com.workday/bsvc\" bsvc:Add_Only=\"true\" bsvc:version=\"v33.2\">
<bsvc:Business_Process_Parameters>
<bsvc:Auto_Complete>true</bsvc:Auto_Complete>
<bsvc:Run_Now>true</bsvc:Run_Now>
</bsvc:Business_Process_Parameters>
<bsvc:Maintain_Contact_Information_Data>
<bsvc:Worker_Reference>
<bsvc:ID bsvc:type=\"${user.customproperty49}\">${user.username}</bsvc:ID>
</bsvc:Worker_Reference>
<bsvc:Effective_Date>${(new java.text.SimpleDateFormat('yyyy-MM-dd').format(new Date()))}</bsvc:Effective_Date>
<bsvc:Worker_Contact_Information_Data>
<bsvc:Email_Address_Data bsvc:Delete=\"false\" bsvc:Do_Not_Replace_All=\"true\">
<bsvc:Email_Address>${user.email}</bsvc:Email_Address>
<bsvc:Usage_Data bsvc:Public=\"true\">
<bsvc:Type_Data bsvc:Primary=\"true\">
<bsvc:Type_Reference>
<bsvc:ID bsvc:type=\"Communication_Usage_Type_ID\">WORK</bsvc:ID>
</bsvc:Type_Reference>
</bsvc:Type_Data>
</bsvc:Usage_Data>
</bsvc:Email_Address_Data>
</bsvc:Worker_Contact_Information_Data>
</bsvc:Maintain_Contact_Information_Data>
</bsvc:Maintain_Contact_Information_for_Person_Event_Request>
</soapenv:Body>
</soapenv:Envelope>"

}]
  • Create a User Update rule like the one below –
 
sudeshjaiswal_3-1686653716999.png

  • When a user is imported from Workday into Saviynt, the email address will be generated for the user and a User Update task will be created which will be provisioned through the WSRETRY job.
sudeshjaiswal_2-1686653686185.png
  • For processing only User Update tasks you can select the task type “Update User” as Task Type on the WSRETRY job.
sudeshjaiswal_4-1686653787725.png

 


References

https://docs.saviyntcloud.com/bundle/WD2-v23x/page/Content/Workday-Integration-Overview.htm 

Comments
navneetv
Regular Contributor II
Regular Contributor II

Hi @sudeshjaiswal  what is the function of the below format? what date does it generate with this logic?

<bsvc:Effective_Date>${(new java.text.SimpleDateFormat('yyyy-MM-dd').format(new Date()))}</bsvc:Effective_Date>

sudeshjaiswal
Saviynt Employee
Saviynt Employee

Hello @navneetv ,

The expression ${(new java.text.SimpleDateFormat('yyyy-MM-dd').format(new Date()))} would generate the current date in the format 'yyyy-MM-dd'. For example, if the code is executed on June 14, 2023, it would generate the output: 2023-06-14.

 
navneetv
Regular Contributor II
Regular Contributor II

Hi @sudeshjaiswal  last question, how it works for future hires, for example, if someone is hiring on 24th June and today we receive the record then how the email will be updated as we are passing the current date as an effective date but the hiring date is future Since hiring date is future then effective from the workday side would be same as hiring date. then wouldn't we encounter the error while updating 

navneetv
Regular Contributor II
Regular Contributor II

Hi @sudeshjaiswal  could you please confirm, if this current date effective date will work on future hiring records as well? or email writeback will happen only  after the hiring date pass

sudeshjaiswal
Saviynt Employee
Saviynt Employee

Hello @navneetv ,

The current effective date is not applicable to future hiring records, and email writebacks will only occur after the hiring date has passed.'

Thanks,

Souvik_Dey
New Contributor
New Contributor

Hi @sudeshjaiswal 

After email has been generated through Saviynt for one user what should be the Trigger Actions when in the UserUpdate Rule as the user has been already imported through Csv based Schema job?

Version history
Last update:
‎08/22/2023 07:00 AM
Updated by: