Saviynt unveils its cutting-edge Intelligence Suite products to revolutionize Identity Security!
Click HERE to see how Saviynt Intelligence is transforming the industry.
Saviynt Copilot Icon

Workday SOAP call validation error

umang28
Regular Contributor
Regular Contributor

Hello,

I am making multiple dependent SOAP calls to create a contingent worker in Workday. For now I am able to make the first call to create a Position_ID and was able to map it to the account.customproperty3 of the user's account. To make the second call, I need to pass the Position_ID value taking from customproperty3 but that does not seem to be working. Rather takes the value '${account.customproperty3}' as it is. How can we map nodes having a reference with types? It is working for nodes like the first name <bsvc:First_Name>${user.firstname}</bsvc:First_Name> but fails for

<bsvc:Position_Reference> <bsvc:ID bsvc:type=\"Position_ID\">${account.customproperty3}</bsvc:ID> </bsvc:Position_Reference>
Error:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client.validationError
faultSubcode:
faultString: Validation error occurred. Invalid ID value. '${account.customproperty3}' is not a valid ID value for type = 'Position_ID'

If I go-ahead and hardcode the Position_ID value it works. This is just one example, I have multiple that I would be needing to map similar to the Position_ID. Please let me know if this is supported by the SOAP workday connector and how?

Thanks,

12 REPLIES 12

sudeshjaiswal
Saviynt Employee
Saviynt Employee

Hello @umang28,

You have use the Soap response value itself, you cannot use the value which are stored from the firstcall. 

Thanks.

If you find the above response useful, Kindly Mark it as "Accept As Solution".

@sudeshjaiswal Could you please let me know the correct syntax? I referred (Scenario 8: https://docs.saviyntcloud.com/bundle/SOAP-v55x/page/Content/Scenarios-for-Implementing-the-Connector... and getting the same validation error. 

UPDATEJSON:

[{
"CONNECTION": "createPosition",
"REQUESTXML": "${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-XXXXXX\"> <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:Create_Position_Request bsvc:version=\"v39.0\"> <bsvc:Business_Process_Parameters> <bsvc:Auto_Complete>true</bsvc:Auto_Complete> <bsvc:Run_Now>true</bsvc:Run_Now> </bsvc:Business_Process_Parameters> <bsvc:Create_Position_Data> <bsvc:Supervisory_Organization_Reference> <bsvc:ID bsvc:type=\"Organization_Reference_ID\">27000207</bsvc:ID> </bsvc:Supervisory_Organization_Reference> <bsvc:Position_Data> <bsvc:Position_ID></bsvc:Position_ID> <bsvc:Job_Posting_Title>Contingent Worker Transition</bsvc:Job_Posting_Title> </bsvc:Position_Data> </bsvc:Create_Position_Data> </bsvc:Create_Position_Request> </soapenv:Body> </soapenv:Envelope>') : ''}",
"REQUESTPARAMS": {
"Content-Type": "text/xml"
},
"RESPONSEDATAPATH": "Body.Create_Position_Response",
"RESPONSEMAPPING": {
"POSITION": "Body.Create_Position_Response.Position_Reference.ID(@wd:type=='Position_ID')"
},
"CONNECTION": "createAccount",
"REQUESTXML": "${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-XXXXXX\"> <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:Contract_Contingent_Worker_Request bsvc:version=\"v39.0\"> <bsvc:Business_Process_Parameters> <bsvc:Auto_Complete>true</bsvc:Auto_Complete> <bsvc:Run_Now>true</bsvc:Run_Now> </bsvc:Business_Process_Parameters> <bsvc:Contract_Contingent_Worker_Data> <bsvc:Applicant_Data> <bsvc:Personal_Data> <bsvc:Universal_ID>222223</bsvc:Universal_ID> <bsvc:Name_Data> <bsvc:Legal_Name_Data> <bsvc:Name_Detail_Data> <bsvc:Country_Reference bsvc:Descriptor=\"?\"> <bsvc:ID bsvc:type=\"ISO_3166-1_Alpha-2_Code\">US</bsvc:ID> </bsvc:Country_Reference> <bsvc:First_Name>${user.lastname}</bsvc:First_Name> <bsvc:Middle_Name></bsvc:Middle_Name> <bsvc:Last_Name>Bechkam</bsvc:Last_Name> </bsvc:Name_Detail_Data> </bsvc:Legal_Name_Data> </bsvc:Name_Data> <bsvc:Contact_Data> <bsvc:Address_Data> <bsvc:Country_Reference> <bsvc:ID bsvc:type=\"ISO_3166-1_Alpha-2_Code\">US</bsvc:ID> <bsvc:ID bsvc:type=\"ISO_3166-1_Alpha-3_Code\">USA</bsvc:ID> <bsvc:ID bsvc:type=\"ISO_3166-1_Numeric-3_Code\">840</bsvc:ID> </bsvc:Country_Reference> <bsvc:Country_Region_Reference> <bsvc:ID bsvc:type=\"Country_Region_ID\">USA-TX</bsvc:ID> <bsvc:ID bsvc:type=\"ISO_3166-2_Code\">TX</bsvc:ID> </bsvc:Country_Region_Reference> <bsvc:Address_Line_Data bsvc:Type=\"ADDRESS_LINE_1\" bsvc:Descriptor=\"Address Line 1\">191002 Ridgewood Pkwy</bsvc:Address_Line_Data> <bsvc:Subregion_Data bsvc:Type=\"REGION_SUBDIVISION_1\" bsvc:Descriptor=\"County\">Bexar</bsvc:Subregion_Data> <bsvc:Postal_Code>78259-1834</bsvc:Postal_Code> <bsvc:Municipality>San Ant</bsvc:Municipality> <bsvc:Usage_Data bsvc:Public=\"1\"> <bsvc:Type_Data bsvc:Primary=\"1\"> <bsvc:Type_Reference> <bsvc:ID bsvc:type=\"Communication_Usage_Type_ID\">WORK</bsvc:ID> </bsvc:Type_Reference> </bsvc:Type_Data> </bsvc:Usage_Data> </bsvc:Address_Data> </bsvc:Contact_Data> </bsvc:Personal_Data> </bsvc:Applicant_Data> <bsvc:Position_Reference> <bsvc:ID bsvc:type=\"Position_ID\">${POSITION}</bsvc:ID> </bsvc:Position_Reference> <bsvc:Contract_Start_Date>2023-08-02</bsvc:Contract_Start_Date> <bsvc:Contract_Contingent_Worker_Event_Data> <bsvc:Contingent_Worker_ID></bsvc:Contingent_Worker_ID> <bsvc:Position_ID></bsvc:Position_ID> <bsvc:Contract_Worker_Type_Reference> <bsvc:ID bsvc:type=\"Contingent_Worker_Type_ID\">Contractor_Non_Learning</bsvc:ID> </bsvc:Contract_Worker_Type_Reference> <bsvc:Position_Details> <bsvc:Job_Profile_Reference> <bsvc:ID bsvc:type=\"Job_Profile_ID\">21999999</bsvc:ID> </bsvc:Job_Profile_Reference> <bsvc:Position_Title>Contingent Worker Transition</bsvc:Position_Title> <bsvc:Location_Reference> <bsvc:ID bsvc:type=\"Location_ID\">L-00299</bsvc:ID> </bsvc:Location_Reference> <bsvc:Position_Time_Type_Reference> <bsvc:ID bsvc:type=\"Position_Time_Type_ID \">Full_time</bsvc:ID> </bsvc:Position_Time_Type_Reference> </bsvc:Position_Details> </bsvc:Contract_Contingent_Worker_Event_Data> </bsvc:Contract_Contingent_Worker_Data> </bsvc:Contract_Contingent_Worker_Request> </soapenv:Body> </soapenv:Envelope>') : ''}",
"REQUESTPARAMS": {
"Content-Type": "text/xml"
}
}]

 

 

umang28
Regular Contributor
Regular Contributor

I would just like to know if the mapping on the 2nd call can be done irrespective if it is getting the values from the responsemapping from call1 or not? 

For example in the 2nd call if I map <bsvc:First_Name>${user.firstname}</bsvc:First_Name>

the user is getting created in workday with the first name as ${user.firstname}

Earlier I thought it was to do with the responsmapping from the 1st call causing an issue but looks like even if I do a simple mapping like the above example also lands into the same issue. Please advice. 

sudeshjaiswal
Saviynt Employee
Saviynt Employee

Hello @umang28,

Can you please provide the Call1 Soap Response?

Thanks,

If you find the above response useful, Kindly Mark it as "Accept As Solution".

@sudeshjaiswal 

The below response from call1 is what is captured in the logs:

2023-08-16 14:22:01,993 [quartzScheduler_Worker-4] TRACE provisoning.SoapProvisioningService - XML after removing non-valid chars:: <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Body><wd:Create_Position_Response wd:version="v39.0" xmlns:wd="urn:com.workday/bsvc"><wd:Event_Reference><wd:ID wd:type="WID">XXXXXX</wd:ID></wd:Event_Reference><wd:Position_Reference><wd:ID wd:type="WID">XXXXXX</wd:ID><wd:ID wd:type="Position_ID">32011716</wd:ID></wd:Position_Reference></wd:Create_Position_Response></env:Body></env:Envelope>

umang28
Regular Contributor
Regular Contributor

I have attached the SOAP call and logs for reference. In this instance I have hard coded all the attribute values including the Position_ID (32011719) in Call2 and mapped <bsvc:First_Name>${USER.FIRSTNAME}</bsvc:First_Name>. The worker gets created successfully in Workday but with the first name as ${USER.FIRSTNAME}

umang28
Regular Contributor
Regular Contributor

@sudeshjaiswal  Forgot to add the SOAP call. 

sudeshjaiswal
Saviynt Employee
Saviynt Employee

Hello @umang28,

Can you please try with below response mapping path.

"RESPONSEDATAPATH": "Body.Create_Position_Response",
"RESPONSEMAPPING": {
"POSITION": "Body.Create_Position_Response.Position_Reference.ID[1].__text"
}

Thanks

If you find the above response useful, Kindly Mark it as "Accept As Solution".

@sudeshjaiswal The response mapping you provided did not work. Could you please confirm why is the  mapping <bsvc:First_Name>${user.firstname}</bsvc:First_Name> not working in the call2? The value of the first name is getting directly from the user profile and not from any response mapping from call1. 

sudeshjaiswal
Saviynt Employee
Saviynt Employee

Hello @umang28,

Sorry for the late response.
Could you please confirm if you have used <bsvc:First_Name>${user.firstname}</bsvc:First_Name>  in the small case, as i can see the in your payload you have used all in caps, can you confirm if you have tried with the lower case.

sudeshjaiswal_0-1695789137882.png

Thanks,

If you find the above response useful, Kindly Mark it as "Accept As Solution".

@sudeshjaiswal  I was able to resolve it by using the below format: 

<bsvc:First_Name>'+user.firstname+'</bsvc:First_Name>

Thanks,

sudeshjaiswal
Saviynt Employee
Saviynt Employee

Hello @umang28,

Thanks for the confirmation.

Regards,

Sudesh

If you find the above response useful, Kindly Mark it as "Accept As Solution".