Category Archives: TCC

TCC

TCC_Touchpoints

It’s been so long since I’ve worked without these that I forgot that it’s not part an parcel of an implementation if said implementation was done long enough ago. I first got acquainted with TCC in late 2005 and the TCC_Touchpoints weren’t released until November of 2009.

So without further ado, here is the documentation on it as well as an empty touchpoints to get you started.

TCC

TCC 22a.1 – Issues With TCC_Touchpoints

So they’ve upgraded saxon8.jar to saxon10.jar (the XSLT and XQuery processor) but the framework (TCC_Touchpoints) that the majority of installs use have the reference to saxon8.jar hardcoded in the init.bat/.sh files. Not sure that hard coded is the right word as you can change it but it’s another thing that would have been nice to know.

So the quick takeaway is that if you are using TCC_Touchpoints at all in your integrations, a change is going to have to be made to the touchpoints itself before it can work at all with TCC 22a.1. Initial testing with this fixed allows for a successful run but it no longer displays the workflow progress of the job.

TCC

TCC 22a.1 – Released! And it’s broke…

So it seems that Oracle has release the much awaited TCC 22a.1 to fix the log4j issue. But it seems to have an issue when the TaleoConnectClient.bat is called which is the case for every scheduled integration. Someplace there is a call to saxon8.jar when this release ships with saxon10.jar. While you’ll be able to run the integration in the GUI, once you try to run a CLI job you’ll get something like this:

C:\onedrive_tt\Client\TCC_Touchpoints\bin\Windows>test22-candidateExport.bat > batchRun.txt
Error: Unable to access jarfile C:\TCC\TaleoConnectClient22a1\lib\saxon8.jar
Error: Unable to access jarfile C:\TCC\TaleoConnectClient22a1\lib\saxon8.jar
Error: Unable to access jarfile C:\TCC\TaleoConnectClient22a1\lib\saxon8.jar
Error: Unable to access jarfile C:\TCC\TaleoConnectClient22a1\lib\saxon8.jar
Error: Unable to access jarfile C:\TCC\TaleoConnectClient22a1\lib\saxon8.jar
Error: Unable to access jarfile C:\TCC\TaleoConnectClient22a1\lib\saxon8.jar
Error: Unable to access jarfile C:\TCC\TaleoConnectClient22a1\lib\saxon8.jar

C:\onedrive_tt\Client\TCC_Touchpoints\bin\Windows>CLS
### ERROR - The default endpoint must be defined with a vaild host. ###
Press any key to continue . . . 

Issue was found the issue last week on 4/7, will try to get a case open on it. In any case a work around is to actually put the saxon8.jar in the lib so it will run but it won’t log or return anything so you have to check the profiler.

TCC

TCC – Custom Steps

In normal circumstances, I’d just give a link to where these files live but from the best I can tell their home on the web has been removed. So given that they were released under open source, I’ll provide the files in that spirit as I’m not sure where else they exist.

TCC

TCC – Emailing Import Errors

This is for when you need to have the results file sent to you if there are errors in said results file. This can be a little tricky because you will not get a file if all elements were successful although you can probably do something about that with the trigger rule.
In any case this is the last custom step of the post process and assuming you have the mail host set properly in the config boards, you should be golden.

<cli:CustomStep>
	<cli:JavaClass>com.taleo.integration.client.customstep.mail.SendEmailPostStep</cli:JavaClass>
	<cli:Parameters>
		<cli:Parameter>
			<cli:Name>active</cli:Name>
			<cli:Value>true</cli:Value>
		</cli:Parameter>
		<cli:Parameter>
			<cli:Name>SMTPHost</cli:Name>
			<cli:Value>[MAIL_HOST]</cli:Value>
		</cli:Parameter>
		<cli:Parameter>
			<cli:Name>from</cli:Name>
			<cli:Value>[ALERTING_MAIL_FROM]</cli:Value>
		</cli:Parameter>
		<cli:Parameter>
			<cli:Name>to</cli:Name>
			<cli:Value>[ALERTING_MAIL_ON_ERROR_TO]</cli:Value>
		</cli:Parameter>
		<cli:Parameter>
			<cli:Name>subject</cli:Name>
			<cli:Value>Reporting - Subject/Object of Integration</cli:Value>
		</cli:Parameter>
		<cli:Parameter>
			<cli:Name>messageTemplate</cli:Name>
			<cli:Value>$file.content()</cli:Value>
		</cli:Parameter>
		<cli:Parameter>
			<cli:Name>sendAttachment</cli:Name>
			<cli:Value>true</cli:Value>
		</cli:Parameter>
		<cli:Parameter>
			<cli:Name>triggeringRule</cli:Name>
			<cli:Value>$logic.greaterThan($file.errorCount(),0)</cli:Value>
		</cli:Parameter>
	</cli:Parameters>
</cli:CustomStep>
TCC

TCC – Dead Man Walking (So long and thanks for all the fish…)

So word came down through the grapevine that Taleo is no longer being sold by Oracle and the end of life has been set at 4 years, I guess that would be 2025. It’s funny to think back and I’ve been dealing with Taleo in one form or another since 2007, the last 14 years, and just over a quarter of that time it will cease to exist.

Super annoying considering I was planning on doing the TCC thing into retirement but no biggie, there’s bigger and better fish to fry hopefully outside the Oracle sphere of products. Candidly I’m thinking of Workday but I’ve peaked behind the curtain of the ATS portion of the product and it’s a little scary that it’s that convoluted and disoriented. I’m wondering if the decision in 2013 to stick with Taleo vs SalesForce was right, although I can’t be sure, my path is set by a higher order and I’m here to learn and enjoy the ride. Looking forward to what’s around the next bend!

TCC

TCC – Looping with LRD

So looping is great if you have a static set that you are pulling, think a big set of resumes. But what if you are using this as part of an ongoing and looping is needed with a LRD. Fear not, this is how you do it.

Pre-processing:
1st step – com.taleo.integration.client.customstep.paging.PagingPreStep
Arguments:
pagingSize
100000
pagingFilename
[CFGFOLDER]\pagefile.pgn

2nd step – com.taleo.integration.client.customstep.lrd.LRDPreStep
Arguments :
lrdFilename
LRD filename, this will be the name as created by the config in the standard LRD location

Post-processing (no arguments needed):
1st step – com.taleo.integration.client.customstep.count.ExportCountPostStep
2nd to last step – com.taleo.integration.client.customstep.paging.PagingPostStep
Last step – com.taleo.integration.client.customstep.lrd.LRDPostStep

TCC

TCC – Table Key

So sometimes you’re digging through a table and there isn’t an obvious primary key (normally Number). While most of the tables this happens on aren’t usually exported but in case you need to, you can query the table for the primary key by using this projection, then you can hopefully figure out what the key is named.

<quer:projection alias="Validkey" xmlns:quer="http://www.taleo.com/ws/integration/query">
  <quer:key path=""/>
</quer:projection>
TCC

TCC – Synchronous vs Asynchronous

So for whatever reason I have a mental block distinguishing between these two when it comes to the Taleo API. So to finally write it down:

  • TCC uses ‘asynchronous’ transactions (it processes transactions in a queue) while the Taleo Web Services is ‘synchronous’.  
  • The Taleo WebServiceAPI is type Simple Object Access Protocol (SOAP) for XML-based message exchange, not Representational State Transfer (REST).
  • Taleo Web Services is designed for smaller integrations.  
  • The integration limits of each are covered in the appendix of their respective user guides.
  • For more information about the Taleo integration tools and their limits please see:
TCC

NetChange Result Files

So net-change has given you a bunch of errors, oh well, that’s why we’re here. But it would be nice if net-change would give you the actual identifier instead of instead of a concatenated entity, operation and identifier with a pipe. Oh well, here’s how you pull it in SQL (access) so I don’t have to look up the three functions again.

SELECT SourceCandError.Identifier
,StrReverse(SourceCandError.Identifier) as Rev
,InStr(SourceCandError.Identifier, "|") as FirstPipeLoc
,InStr(StrReverse(SourceCandError.Identifier), "|") as LastPipeLoc
,Right(SourceCandError.Identifier, InStr(StrReverse(SourceCandError.Identifier), "|") -1) as Ident
,Right(SourceCandError.Identifier, InStr(SourceCandError.Identifier, "|")) as AfterPipe
,Mid(SourceCandError.Identifier, InStr(SourceCandError.Identifier, "|")+1, Len(SourceCandError.Identifier) - InStr(SourceCandError.Identifier, "|") - InStr(StrReverse(SourceCandError.Identifier), "|")) as Oper
,SourceCandError.Status
FROM SourceCandError;