Read the earlier post regarding pre-reqs needed to connect to Workday using .NET. This time I'll do it in VB.NET and the below code will update the email address.
/////////////////////////////
empId = "12345"
workerType = "Employee_ID"
Dim emailValue As String = "jsmtih@company.com"
Dim effectiveDate As Date = Now()
Dim emailRequest As New Maintain_Contact_Information_for_Person_Event_RequestType()
emailRequest.version = "v22.0"
emailRequest.Add_Only = True
emailRequest.Maintain_Contact_Information_Data = New Contact_Information_for_Person_Event_DataType()
emailRequest.Maintain_Contact_Information_Data.Worker_Contact_Information_Data = New Contact_Information_DataType()
emailRequest.Maintain_Contact_Information_Data.Worker_Contact_Information_Data.Email_Address_Data = New Email_Address_Information_DataType(0) {New Email_Address_Information_DataType()}
emailRequest.Maintain_Contact_Information_Data.Worker_Reference = New WorkerObjectType()
emailRequest.Maintain_Contact_Information_Data.Worker_Reference.ID = New WorkerObjectIDType(0) {New WorkerObjectIDType()}
emailRequest.Maintain_Contact_Information_Data.Worker_Reference.ID(0).type = workerType
emailRequest.Maintain_Contact_Information_Data.Worker_Reference.ID(0).Value = empId
emailRequest.Maintain_Contact_Information_Data.Effective_Date = effectiveDate
emailRequest.Maintain_Contact_Information_Data.Effective_DateSpecified = True
emailRequest.Maintain_Contact_Information_Data.Worker_Contact_Information_Data.Email_Address_Data(0).Email_Address = emailValue
emailRequest.Maintain_Contact_Information_Data.Worker_Contact_Information_Data.Email_Address_Data(0).Usage_Data = New Communication_Method_Usage_Information_DataType(0) {New Communication_Method_Usage_Information_DataType()}
emailRequest.Maintain_Contact_Information_Data.Worker_Contact_Information_Data.Email_Address_Data(0).Usage_Data(0).[Public] = True
emailRequest.Maintain_Contact_Information_Data.Worker_Contact_Information_Data.Email_Address_Data(0).Usage_Data(0).PublicSpecified = True
emailRequest.Maintain_Contact_Information_Data.Worker_Contact_Information_Data.Email_Address_Data(0).Usage_Data(0).Type_Data = New Communication_Usage_Type_DataType(0) {New Communication_Usage_Type_DataType()}
emailRequest.Maintain_Contact_Information_Data.Worker_Contact_Information_Data.Email_Address_Data(0).Usage_Data(0).Type_Data(0).Primary = True
emailRequest.Maintain_Contact_Information_Data.Worker_Contact_Information_Data.Email_Address_Data(0).Usage_Data(0).Type_Data(0).PrimarySpecified = True
emailRequest.Maintain_Contact_Information_Data.Worker_Contact_Information_Data.Email_Address_Data(0).Usage_Data(0).Type_Data(0).Type_Reference = New Communication_Usage_TypeObjectType()
emailRequest.Maintain_Contact_Information_Data.Worker_Contact_Information_Data.Email_Address_Data(0).Usage_Data(0).Type_Data(0).Type_Reference.ID = New Communication_Usage_TypeObjectIDType(0) {New Communication_Usage_TypeObjectIDType()}
emailRequest.Maintain_Contact_Information_Data.Worker_Contact_Information_Data.Email_Address_Data(0).Usage_Data(0).Type_Data(0).Type_Reference.ID(0).type = "Communication_Usage_Type_ID"
emailRequest.Maintain_Contact_Information_Data.Worker_Contact_Information_Data.Email_Address_Data(0).Usage_Data(0).Type_Data(0).Type_Reference.ID(0).Value = "WORK"
Dim emailProxy As Human_ResourcesPortClient = CreateHumanResourcesProxy()
Dim emailResponse As Maintain_Contact_Information_for_Person_Event_ResponseType
Try
emailResponse = emailProxy.Maintain_Contact_Information(emailRequest)
Console.WriteLine("email update done")
Catch fe As FaultException
If fe.Message.Contains("Invalid ID value.") Then
Try
Console.WriteLine("Email Update ERROR as Employee will try CW")
emailRequest.Maintain_Contact_Information_Data.Worker_Reference.ID(0).type = "Contingent_Worker_ID"
emailResponse = emailProxy.Maintain_Contact_Information(emailRequest)
Console.WriteLine("email update done")
Catch ex As Exception
Console.WriteLine("Email Update ERROR as CW also " + fe.Message)
End Try
End If
'Console.WriteLine("Email Update ERROR " + fe.Message)
End Try
///////////////////////////////
Notice that in the Try/Catch section, I catch in case the update doesn't work as an Employee then I try again as a Contingent Worker.
The CreateHumanResourcesProxy function can be found in the earlier post.