use SOAP::Lite +trace => [ transport => sub { print $_[0]->as_string } ]; my $soapRequest = SOAP::Lite -> uri('urn:com.workday/bsvc') -> readable(1) -> ns('urn:com.workday/bsvc','bsvc') -> proxy('https://wd2-impl-services1.workday.com'); my $Username = SOAP::Header->name('wsse:Username' => $username); my $Password = SOAP::Header->name('wsse:Password') ->attr({'Type'=>'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText'}) ->value($password); my $Nonce = SOAP::Header->name('wsse:Nonce') ->attr({'EncodingType'=>'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary'}) ->value($nonce); my $Created = SOAP::Header->name('wsu:Created' => $created); my $UsernameToken = SOAP::Header->name('wsse:UsernameToken') ->attr ({ 'wsu:Id'=>'UsernameToken-16', 'xmlns:wsu'=> 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd' }) ->value(\SOAP::Header->value($Username,$Password,$Nonce,$Created)); my $security = SOAP::Header->name('wsse:Security') ->attr ({ 'soapenv:mustUnderstand'=>'1', 'xmlns:wsse' => 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd' }) ->value(\SOAP::Header->value($UsernameToken)); my $Type_Reference = SOAP::Data ->name('bsvc:Type_Reference') ->attr({'bsvc:Primary'=>'1'}) ->value('WORK'); my $Usage_Data = SOAP::Data ->name('bsvc:Usage_Data') ->attr({'bsvc:Public'=>'1'}) ->value(\SOAP::Data->value($Type_Reference)); my $Email_Address = SOAP::Data ->name('bsvc:Email_Address') ->value('Hadoop_Test@XXX.co.uk'); my $Internet_Email_Address_Data = SOAP::Data ->name('bsvc:Internet_Email_Address_Data') ->value(\SOAP::Data->value($Email_Address,$Usage_Data)); my $Contact_Data = SOAP::Data ->name('bsvc:Contact_Data') ->value(\SOAP::Data->value($Internet_Email_Address_Data)); my $Person_Data = SOAP::Data ->name('bsvc:Person_Data') ->value(\SOAP::Data->value($Contact_Data)); my $Personal_Info_Data = SOAP::Data ->name('bsvc:Personal_Info_Data') ->value(\SOAP::Data->value($Person_Data)); my $Employee_Personal_Info_Data = SOAP::Data ->name('bsvc:Employee_Personal_Info_Data') ->value(\SOAP::Data->value($Personal_Info_Data)); my $Type_Reference = SOAP::Data ->name('bsvc:Type_Reference') ->attr({'bsvc:Primary'=>'1'}) ->value(\SOAP::Data->value($Person_Data)); my $Employee_Personal_Info_Data = SOAP::Data ->name('bsvc:Employee_Personal_Info_Data') ->value(\SOAP::Data->value($Personal_Info_Data)); my $bsvc_ID = SOAP::Data ->name('bsvc:ID') ->attr({'bsvc:System_ID'=>'WD-EMPLID'}) ->value('1234'); my $Int_ID = SOAP::Data ->name('bsvc:Integration_ID_Reference') ->value(\SOAP::Data->value($bsvc_ID)); my $Employee_Reference = SOAP::Data ->name('bsvc:Employee_Reference') ->value(\SOAP::Data->value($Int_ID)); my $params = SOAP::Data ->name('bsvc:Employee_Personal_Info_Update') ->attr({'bsvc:version'=>'v24.0'}) ->value(\SOAP::Data->value($Employee_Reference)); $soapRequest->call($params,$Employee_Reference,$Employee_Personal_Info_Data,$security);