Workday Phone Write Back

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.

  1. WORK_MOBILE set to Sync
    a. WORK_MOBILE will aggregate as null
    b. PHONE_WORK will be correct
    c. Workday will be correct
  2. 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"

"PHONE_WORK": "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']/@ns1:Formatted_Phone"

Number Format
WORK_MOBILE format: +1 (123) 4567890
PHONE_WORK format: +1 1234567899(Mobile)

Have you tried using the ADDITIONAL_PHONE_WORK attribute?

Worker_Data/Personal_Data/Contact_Data/Phone_Data[Usage_Data[@Public=‘true’]/Type_Data[@Primary=‘false’]/Type_Reference/ID[@type=‘Communication_Usage_Type_ID’] =‘WORK’]/@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.

1 Like

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"

Full XML from ccg.log

<ns1:Change_Work_Contact_Information_Request xmlns:ns1="urn:com.workday/bsvc">
    <ns1:Business_Process_Parameters>
        <ns1:Auto_Complete>false</ns1:Auto_Complete>
        <ns1:Run_Now>false</ns1:Run_Now>
    </ns1:Business_Process_Parameters>
    <ns1:Change_Work_Contact_Information_Data>
        <ns1:Person_Reference>
            <ns1:ID ns1:type="Employee_ID">12345</ns1:ID>
        </ns1:Person_Reference>
        <ns1:Event_Effective_Date>2023-11-15+00:00</ns1:Event_Effective_Date>
        <ns1:Person_Contact_Information_Data>
            <ns1:Person_Phone_Information_Data ns1:Replace_All="true">
                <ns1:Phone_Information_Data ns1:Delete="false">
                    <ns1:Phone_Data>
                        <ns1:Device_Type_Reference>
                            <ns1:ID ns1:type="Phone_Device_Type_ID">Mobile</ns1:ID>
                        </ns1:Device_Type_Reference>
                        <ns1:Country_Code_Reference>
                            <ns1:ID ns1:type="Country_Phone_Code_ID">USA_1</ns1:ID>
                        </ns1:Country_Code_Reference>
                        <ns1:Complete_Phone_Number>2534445555</ns1:Complete_Phone_Number>
                    </ns1:Phone_Data>
                    <ns1:Usage_Data ns1:Public="true">
                        <ns1:Type_Data ns1:Primary="false">
                            <ns1:Type_Reference>
                                <ns1:ID ns1:type="Communication_Usage_Type_ID">Work</ns1:ID>
                            </ns1:Type_Reference>
                        </ns1:Type_Data>
                    </ns1:Usage_Data>
                </ns1:Phone_Information_Data>
            </ns1:Person_Phone_Information_Data>
        </ns1:Person_Contact_Information_Data>
    </ns1:Change_Work_Contact_Information_Data>
</ns1:Change_Work_Contact_Information_Request>

Error Event:

[“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.

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