Taleo - PreEmploy Integration

Overview

Pre-Employ has a recruiter-centric, on-demand Background Check service that is built for Taleo Recruiting. This service has results tied to the candidate
application and it utilizes “result sharing” by default, though the client can disable this, if desired. This service does NOT use Taleo’s “request re-
utilization” feature, so new taleo's transaction IDs are created with each submission. Finally, this service is available in English only. No other languages
are supported for either field labels or result data.

HR-XML Background Request

1) Client Identifier Parameters

The Pre-Employ service utilizes the following Configuration fields in order to identify from which client the incoming background check is being received:

  • Company Identifier
  • Client Account Name (User Name)
  • Client Password

2) Request processing : (full overview)
Logging of Error & Request-Response XML :

Logging to DB is now implemented every where for catching the exceptions & logging of original Request-Response XML which can be queried as given below ,

Error:

“SELECT nt_error_text, nvc_method_name FROM web_service_log WHERE nvc_request_from = 'Taleo' AND (nvc_ssn = '[SSN Number]' OR nvc_batch_control = '[Batch Control Number]') ORDER BY id DESC”

Request XML & Response:

“SELECT nt_request_xml, nt_response FROM web_service_log WHERE nvc_request_from = 'Taleo' AND (in_request_id = [Request Id] OR nvc_ssn = '[SSN Number]' OR nvc_batch_control = '[Batch Control Number]') ORDER BY id DESC”

“Enable/Disable” Notifications to send:

We have added a flag “IsSendEmailNotification” in web.config to control the action of “sending notification emails”.

=> If the value of the flag “IsSendEmailNotification” will be “true” then notification emails will be sent to the email ids “mbayon@pre-employ.com”(Matthew) &
“pre-employ-error@arcsprd.com”

=> If the value of the flag “IsSendEmailNotification” will be “false” then notification emails will not be sent to any email id.

Note : 1) In both above cases, notification data will be inserted into the SQL DB in particular tables which are explained below :-

2) Some data is getting saved in its particular tables like “Requests” table but some was not being logged already so, I have created the logging for these type of data in a log table i.e. “LogErrors”.

3) 1) An email notification flag “LogOnly” will also get updated in SQL DB in the table “EmailLog” and can be fetched by the query given below,

Query to fetch: “SELECT LogOnly FROM EmailLog WHERE Body like '%[Batch Control Number]%'”

2) When Email notification functionality will be Turned OFF then the above query will result as “1” and in other case it'll return “0”.

Queried table for Credentials in SQL DB:

Users table is used for querying the User Id, Password & Client Ids. But the client id must have a package corresponding to it in "ClientPackages"
SQL table. After getting authenticated, data of order requests are processed as below steps :

Step 1)

When an order request comes to process, it generates request data as xml and hits the web method TaleoProcessRequest(RequestXml) of the web service
“taleointegrationservice.asmx” with the request XML.

This method first parse the Request XML and retrieves data into XML container.

Check for the essential elements i.e. SSN Number & DOB, they must be there.

Check for the Taleo's identifier by its Reference Id i.e. 'idOwner' must be TALEO & PRE-EMPLOY.

Extract the batch control number from XML and initiate order placement and insert the record in 'TaleoRequestInfo'
table & 'TaleoAdditionalInfoNode' table of SQL DB.

Transformation of Taleo's XML request to Pre-Employ XML via XSLT transformation rule implemented by the file “TaleoToPreEmploy.xslt” occurs.
Now we process the transformed Pre-Employ XML for Actual SUBMITTAL OF REQUEST.
Now we consume the web service “IntegrationService.asmx” for web method ProcessRequestXml()

Deserialize the all XML data by using 'PreEmployCore.dll' mapping

Deserialized data is now going to save to the SQL db in it's particular tables which are as,

Check for the main contact info i.e. Client Contact, is mandatory.

Check for batch Control No., it is mandatory and should be unique.

Check for User Authentication, it is mandatory.

Log in user by BirsCore.dll Check for client Package, this should be satisfied.

Step 2)

There are two type of requests, Partial request & Full request
Partial Request: If the SSN number is not in XML then this type of request placement will be fired with a fake SSN 999999999.

Full Request : When all data is available in request, then it will go for full request.

Step 1) In this first check for first name, last name and package code then proceed.

Step 2) Validating the data of license, employment, education and reference.

Step 3) First Data is inserted into “logrequestsxml” table having transformed request XML of Pre-Employ format by the method

defined in 'IntegrationService.asmx'

Step 4) Related data is inserted into Requests table having unique 'BatchControlNo'

Step 5) Request Id get updated in “taleorequestInfo” and “TaleoAdditionalInfoNode” table

Step 6) Related data like PO Number is inserted into “RequestOthres” table on the basis of “RequestId” generated in Request table.

Step 7) Related data like name and email is inserted into “RequestRequestor“ table on the basis of 'RequestId' generated in Request table.

Step 8) Related data is inserted into “RequestSubjects” table on the basis of 'RequestId' generated in Request table.

Step 9) Related data is inserted into “RequestSubjectNames” table on the basis of 'RequestSubjectId' generated in Request table by the method

defined in BirsCore.dll.

Step 10) Related data is inserted into “RequestSubjectsAddress” table on the basis of 'RequestSubjectId' generated in Request table.

Step 11) Related data is inserted into “RequestSubjectLicenses” table on the basis of 'RequestSubjectId' generated in Request table.

Step 12) Related data is inserted into “RequestSubjectAlternatePhone” table on the basis of 'RequestSubjectId' generated in Request table.

Step 13) Related data is inserted into “RequestSubjectEmployment” table on the basis of 'RequestSubjectId' generated in Request table.

Step 14) Related data is inserted into “RequestSubjectEducation” table on the basis of 'RequestSubjectId' generated in Request table.

Step 15) Related data is inserted into “RequestSubjectReferences” table on the basis of 'RequestSubjectId' generated in Request table.

Step 16) Drug test related data is inserted into “RequestOthres” table on the basis of 'RequestSubjectId' generated in Request table.

Step 17) Status of the request is inserted into “RequestStatus” table on the basis of 'RequestId'.

Step 18) All data is inserted successfully and it returns a response internally i.e.

<?xml version="1.0" encoding="UTF-8"?>

<BackgroundReports xmlns="http://ns.hr-xml.org/2004-08-02">

<BackgroundReportPackage>

<ProviderReferenceId><IdValue>10000092</IdValue></ProviderReferenceId>

<SupportingDocumentation>

<Documentation>

<InternetWebAddress></InternetWebAddress>

</Documentation>

</SupportingDocumentation>

</BackgroundReportPackage>

</BackgroundReports>

</BackgroundReports>

3) Error Handling :

In Utility.cs, we have method 'LogError' to insert the errors into SQL db in LogErrors table

We have the code for all error setting defined in PreEmployBase. dll' and also have the method to send the Errors to Emails configured in web.config.
There are four classes defined for Error handling i.e. ErrorHandling.cs, ErrorLevels.cs, ErrorMessage.cs and ErrorMessages.cs.

In ErrorMessages.cs, error codes and a message for all codes is defined some of which are as follows :

S. No.

Error Description

Error Code

1

XML not properly formatted. Error detected on or around

1

2

XML not properly formatted. Please verify XML is properly formatted and resend.

2

3

'BatchControlNo' is required.

3

4

'BatchControlNo' must be unique.

4

5

Error no 'authUser' node/element found.

5

Note : There are total 65 Errors, for all Error code and messages, we can refer the class “ErrorMessages.cs” in PreEmployBase library.

4) Quick fixes by Dev team

Troubleshooting the Taleo's Integration issues with a new client - Granite Construction and possible issues occurring with other Taleo's client - Amedysys.

IntegartionService.cs:

i) Removed the validation code for license, employment, education and reference info at the page “IntegrationService.cs”
ii) Added a new field poNumber in code file “PreEmployCore/Order/XmlObjects/XmlRequest.cs”, in XSLT file “TaleoToPreEmploy.xslt”,
and added a new tag for it in transformed request XML. The value of the PO Number is going to save in to 'requestsOther' table of SQL DB.
iii) Removed the single quote issue in request data by adding the method FixQuotes(string sValue) on 'IntegrationService.cs' at line no. 8358
iv) Added the logging into Sql table LogErrors for errors and other any information coming to PreEmploy from Taleo

GeneralFunctions.cs:

i) Added logging into SQL table LogErrors for user login.

RequestMethods.cs:

i) Added the code at line no. 506 regrading to save the PO Number into db
ii) Added a new method at line no. 888 for updating the request Id on the basis of Client Id

TaleoProcessRequest.cs:

i) Added a method GetClientId(), regarding to update the request Id on the basis of Client Id
ii) Added the logging into SQL for saving request info going to update into DB.
iii) Added method DbSetRequestId() for updating the Request Id at successful placement of order at line no. 407
iv) Added the PO Number into request XML at line no. 553
v) Added the code to fetch the alternate phone number at line 573

XslTransforms/TaleoToPreEmploy.xslt:

i) Added the mapping for PO Number.
ii) Changes in employment tag to set the value of 'okToContact' from User Defined field i.e. UDF01.

DLL Code:-

1) PreEmployCore.dll
   1.1) Declared the fields “ponumber“ & “subjectsalternatePhone” in file : XmlRequest.cs
2) PreEmployDal.dll
  2.1) Added the field “ponumber” in file LogRequest.cs
3) BIRSCore.dll
  3.1) For sending CurrentEmployer values in RequestFunctions.vb, used another method : InsertRequestSubjectEmploymentOverloads() and also modified it in place of InsertRequestSubjectEmployment()

Altered SP:

sp_Taleo_InsertRequestInforegarding to insert & update the Request Id into “TaleoRequestInfo” table on the basis of Client Id.

5) End points of Pre-Employ Infrastructure:

Web Services are SOAP-based and will accept HR-XML documents via HTTPS POST to the following URLs :-

Staging Environment:

New Requests & More Details requests are using the following end point:
https://secure.pre-employ.com/taleointegrationbeta/taleointegrationservice.asmx

Some services are consumed in above web service.
https://secure.pre-employ.com/taleointegrationbeta/IntegrationService.asmx
https://secure.pre-employ.com/taleointegrationbeta/IntegrationStatusUpdateService.asmx

Production Environment:

New Requests should use the following URI:
https://secure.pre-employ.com/taleointegration/taleointegrationservice.asmx

More Details requests should use the following URI: https://secure.pre-employ.com/taleointegration/taleointegrationservice.asmx

Some services consumed in above web service https://secure.pre-employ.com/taleointegration/IntegrationService.asmx
https://secure.pre-employ.com/taleointegration/IntegrationStatusUpdateService.asmx

The Partner Portal should use the following URI for both above environments:
www.pre-employ.com

Taleo-PreEmploy Integration Field Mapping of fields from Request XML to Fields in SQL DB

http://preemploy.arcsdev.com/document/taleo-preemploy_integrationfield_map.xls