Introduction
Oracle Taleo provides talent management functions as Software as a service (SaaS). Taleo often needs to be integrated with other human resource systems. In this post, let’s look at few integration patterns for Taleo and implementing a recommended pattern using Integration Cloud Service (ICS), a cloud-based integration platform (iPaaS).
Main Article
Oracle Taleo is offered in Enterprise and Business editions. Both are SaaS applications that often need to be integrated with other enterprise systems, on-premise or on the cloud. Here are the integration capabilities of Taleo editions:
- Taleo Business Edition offers integration via SOAP and REST interfaces.
- Taleo Enterprise Edition offers integration via SOAP services, SOAP-based Bulk API and Taleo Connect Client (TCC) that leverages the Bulk API.
Integrating with Taleo Business Edition can be achieved with SOAP or REST adapters in ICS, using a simple “Basic Map Data” pattern. Integrating with Taleo Enterprise Edition, however, deserves a closer look and consideration of alterative patterns. Taleo Enterprise provides three ways to integrate, each with its own merits.
Integration using Taleo Connect Client(TCC) is recommended. We’ll also address other 2 approaches for sake of completeness. To jump to a sub-section directly, click one of the links below.
Taleo SOAP web services
Taleo Bulk API
Taleo Connect Client (TCC)
Integrating Taleo with EBS using ICS and TCC
Launching TCC client through a SOAP interface
Taleo SOAP web services
Taleo SOAP web services provide synchronous integration. Web services update the system immediately. However, there are restrictive metered-limits to number of invocations and number of records per invocation, in order to minimize impact to live application. These limits might necessitate several web service invocations to finish a job that might need only one execution of other job alternatives. Figure 1 shows a logical view of such integration using ICS.
Figure1
ICS integration could be implemented using “Basic Map Data” for each distinct flow or using “Orchestration” for more complex use cases.
Taleo Bulk API
Bulk APIs asynchronously exchange data with Taleo Enterprise Edition. Bulk APIs are SOAP-based and require submission of a job, subsequent polling to observe status of the jobs and optionally an invocation to fetch the data, for read operations. Bulk APIs are less restrictive than SOAP APIs in terms of volume of records exchanged.
Bulk APIs invocations cloud include T-XML queries, CSV or XML content. T-XML queries could be easily generated from Taleo Connect Client (TCC)’s editor. Figure 2 shows a logic view of integration using Bulk API.
Figure 2
As seen above, the integration logic is complex, with multiple calls to complete the integration and one or more polling calls to find status of the request. In addition, need for TCC to author T-XML import/export queries might mean that any change in the query will require TCC to author the query and a redeployment of integration with modified T-XML to ICS. In addition, Bulk API requests that exceed certain size limit require the data MTOM attachments. A link to Bulk API guide is provided in References section.
Taleo Connect Client (TCC)
As stated previously, TCC provides the best way to integrate with Taleo Enterprise. TCC has design editor to author exports and imports and run configurations. It also could be run from command line to execute the import or export jobs. TCC leverages the Bulk API to execute the imports and exports, while abstracting the complex steps involved in using Bulk API directly. A link to another post introducing TCC is provided in References section.
Figure 3
Figure 3 shows a logical view of a solution using TCC and ICS. In this case, ICS orchestrates the flow by interacting with HCM and Taleo. TCC is launched remotely through SOAP service. TCC, the SOAP launcher service and a staging file system are deployed to an IaaS compute node running Linux.
Integrating Taleo with EBS using ICS and TCC
Let’s look at a solution to integrate Taleo and EBS Human resources module, using ICS as the central point for scheduling and orchestration. This solution is suitable for on-going scheduled updates involving few hundred records for each run. Figure 4 represents the solution.
Figure 4
TCC is deployed to a host accessible from ICS. The same host runs a J-EE container, such as WebLogic or Tomcat. The launcher web service deployed to the container launches TCC client upon a request from ICS. TCC client, depending on the type of job, either writes a file to a staging folder or reads a file from the folder. The staging folder could be local or on a shared file system, accessible to ICS via SFTP. Here are the steps performed by the ICS orchestration.
- Invoke launcher service to run a TCC export configuration. Wait for completion of the export.
- Initiate SFTP connection to retrieve the export file.
- Loop through contents of the file. For each row, transform the data and invoke EBS REST adapter to add the record. Stage the response from EBS locally.
- Write the staged responses from EBS to a file and transfer via SFTP to folder accessible to TCC.
- Invoke launcher to run a TCC import configuration. Wait for completion of the import.
- At this point, bi-direction integration between Taleo and EBS is complete.
This solution demonstrates the capabilities of ICS to seamlessly integrate SaaS applications and on-premise systems. ICS triggers the job and orchestrates export and import activities in single flow. When the orchestration completes, both, Taleo and EBS are updated. Without ICS, the solution would contain a disjointed set of jobs that could be managed by different teams and might require lengthy triage to resolve issues.
Launching TCC client through a SOAP interface
Taleo Connect Client could be run from command line to execute a configuration to export or import data. A Cron job or Enterprise Scheduling service (ESS) could launch the client. However, enabling the client to be launched through a service will allow a more cohesive flow in integration tier and eliminate redundant scheduled jobs.
Here is a sample java code to launch a command line program. This code launches TCC code and wait for completion, capturing the command output. Note that the code should be tailored to specific needs and suitable error handing, and, tested for function and performance.
package com.test.demo; import com.taleo.integration.client.Client; import java.io.BufferedReader; import java.io.InputStreamReader; public class tccClient { public boolean runTCCJoB(String strJobLocation) { Process p=null; try { System.out.println("Launching Taleo client. Path:" + strJobLocation); String cmd = "/home/runuser/tcc/scripts/client.sh " + strJobLocation; p = Runtime.getRuntime().exec(cmd); //Read both Input and Error streams. ReadStream s1 = new ReadStream("stdin", p.getInputStream()); ReadStream s2 = new ReadStream("stderr", p.getErrorStream()); s1.start(); s2.start(); p.waitFor(); return true; } catch (Exception e) { //log and notify as appropriate e.printStackTrace(); return false; } finally { if (p != null) { p.destroy(); } } } }
Here is a sample service for a launcher service using JAX-WS and SOAP.
package com.oracle.demo; import javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.WebParam; @WebService(serviceName = "tccJobService") public class tccJobService { @WebMethod(operationName = "runTCCJob") public String runTCCJob(@WebParam(name = "JobPath") String JobPath) { try{ //tccClient().runTCCJob(JobPath); return new tccClient().runTCCJoB(JobPath) ; } catch(Exception ex) { ex.printStackTrace(); return ex.getMessage(); } } }
Finally, this is a SOAP request that could be sent from an ICS orchestration, to launch TCC client.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:demo="http://demo.oracle.com/"> <soapenv:Header/> <soapenv:Body> <demo:runTCCJob> <!--Optional:--> <JobPath>/home/runuser/tcc/exportdef/TCC-Candidate-export_cfg.xml</JobPath> </demo:runTCCJob> </soapenv:Body> </soapenv:Envelope>
Summary
This post addressed alternative patterns to integrate with Taleo Enterprise Edition, along with pros and cons of each pattern. It explained a demo solution based on the recommended pattern using TCC and provided code snippets and steps to launch TCC client via web service. At the time of this post’s publication, ICS does not offer Taleo-specific adapter. A link to current list of supported adapters is provided in references section.
References
· Getting started with Taleo Connect Client (TCC) – ATeam Chronicles
· Taleo business edition REST API guide
· Taleo Enterprise Edition Bulk API guide
· Latest documentation for Integration Cloud Service
· Currently available ICS adapters
All content listed on this page is the property of Oracle Corp. Redistribution not allowed without written permission