We are trying to write back phone numbers to Workday (Authoritative source) but I have been seeing inconsistent results.
We configured both WORK_MOBILE and PHONE_WORK in the schema and Attribute Sync for these but the common behavior is the update will get sent to Workday without a failure. This causes the Account Attribute to be updated, but on the next aggregation the value will return to null.
Here are 2 different configurations that we have tried, each having the target value go back to null, thus triggering another sync to occur.
WORK_MOBILE set to Sync
a. WORK_MOBILE will aggregate as null
b. PHONE_WORK will be correct
c. Workday will be correct
PHONE_WORK set to Sync
a. PHONE_WORK will aggregate as null
b. WORK_MOBILE will be correct
c. Workday will be correct
XpathAttributesMap "WORK_MOBILE": "ns1:Worker_Data/ns1:Personal_Data/ns1:Contact_Data/ns1:Phone_Data[(ns1:Usage_Data[@ns1:Public='true']/ns1:Type_Data/ns1:Type_Reference/ns1:ID[@ns1:type='Communication_Usage_Type_ID'] ='WORK') and (ns1:Phone_Device_Type_Reference/ns1:ID[@ns1:type='Phone_Device_Type_ID']='Mobile')]/@ns1:Workday_Traditional_Formatted_Phone"
We were able to successfully update the phone number using WORK_MOBILE with the xpath:
"ns1:Worker_Data/ns1:Personal_Data/ns1:Contact_Data/ns1:Phone_Data[(ns1:Usage_Data[@ns1:Public='true']/ns1:Type_Data[@ns1:Primary='true']/ns1:Type_Reference/ns1:ID[@ns1:type='Communication_Usage_Type_ID'] ='WORK') and (ns1:Phone_Device_Type_Reference/ns1:ID[@ns1:type='Phone_Device_Type_ID']='Mobile')]/@ns1:E164_Formatted_Phone"
We could also use the Phone_Number for updating:
"ns1:Worker_Data/ns1:Personal_Data/ns1:Contact_Data/ns1:Phone_Data[(ns1:Usage_Data[@ns1:Public='true']/ns1:Type_Data[@ns1:Primary='true']/ns1:Type_Reference/ns1:ID[@ns1:type='Communication_Usage_Type_ID'] ='WORK') and (ns1:Phone_Device_Type_Reference/ns1:ID[@ns1:type='Phone_Device_Type_ID']='Mobile')]/ns1:Phone_Number"
The issue was that Workday validates the number and checks if it is a fake number, so numbers like +11111111111, +12222222222, +11234567890 did not work, but a number like +12534445555 did work.
We are noticing an issue with updating a user’s WORK_MOBILE if the user does not currently have a number. The issue appears in that the Change Contact Info API is not being passed the Primary value as “true” even though the xpath specifies it as true.
<ns1:Type_Data ns1:Primary="false">
Is there a change to the xpath needed to let the connector know that Primary should be “true”?
xpath:
"WORK_MOBILE": "ns1:Worker_Data/ns1:Personal_Data/ns1:Contact_Data/ns1:Phone_Data[(ns1:Usage_Data[@ns1:Public='true']/ns1:Type_Data/ns1:Type_Reference/ns1:ID[@ns1:type='Communication_Usage_Type_ID'] ='WORK') and (ns1:Phone_Device_Type_Reference/ns1:ID[@ns1:type='Phone_Device_Type_ID']='Mobile')]/@ns1:E164_Formatted_Phone"
[“openconnector.InvalidConfigurationException: [ InvalidConfigurationException ] \n [ Possible suggestions ] You cannot initiate this action because there are other pending or completed actions for the person that conflict with this one. \n [ Error details ] Validation error occurred. Subject person must have exactly one primary work phone number in order to have non-primary entries. The primary contact information may be either previously entered or included within this request.”]
It seems the solution to my previous issue was that the primary flag does not come from the xpath, but from the configuration for “primary_Work_Phone_Type” being set to mobile.