TCC – Error: ‘Timestamp format must be…’

So I was trying to do a replace null on two date fields and render it toChar yyyy-MM-dd and it kept giving me the lovely ‘SAX parsing error’, looking in the profiler I get this reason:
Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]
After rearranging the order of the toChar and replaceNull and still getting the same thing, I finally stumbled on the answer which was to declare the projection as a toChar by adding:
projectedField=”RuntimeString:toChar”
To the projection attributes.
I’m not 100% sure why this has to be done but it fixed the issue so figured I’d post it here.


TCC – Looping

There are times when you’ll want to loop through exports because the amount returned is going to be greater than 100k. There is two fold process here, in this section we’ll discuss how to set up an export configuration file for looping. Remember that you have to have the TCC custom steps in order for this to work.

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

Post-processing:
1st step – com.taleo.integration.client.customstep.count.ExportCountPostStep
Last step – com.taleo.integration.client.customstep.paging.PagingPostStep

There are no arguments for the Post-processing steps.
The batch file will need to take into account an if exists to look for the file, when the file is no longer there it should end the run.


TCC – EEO Exports

Got tired of having to track this down every time I needed it so here it is.

Gender

<quer:projection id="idGender" alias="USAEEO2Gender" xmlns:quer="http://www.taleo.com/ws/integration/query">
  <quer:query projectedClass="Candidate" alias="EEO2b_Gender">
    <quer:projections>
      <quer:projection alias="EEO2b_Gender">
        <quer:field path="DiversityAnswers,PossibleAnswer,Description"/>
      </quer:projection>
    </quer:projections>
    <quer:filterings>
      <quer:filtering>
        <quer:equal>
          <quer:field path="DiversityAnswers,Question,Code"/>
          <quer:string>EEO2b Gender</quer:string>
        </quer:equal>
      </quer:filtering>
      <quer:filtering>
        <quer:equal>
          <quer:field path="Number"/>
          <quer:field ownerQuery="NewHire" path="Number"/>
        </quer:equal>
      </quer:filtering>
    </quer:filterings>
  </quer:query>
</quer:projection>

Ethnicity

<quer:projection id="idEEO2EthnicityAnswerNo" alias="USAEEO2Ethnicity" xmlns:quer="http://www.taleo.com/ws/integration/query">
  <quer:query projectedClass="Candidate" alias="CandEthnicity">
    <quer:projections>
      <quer:projection alias="EEO2Ethnicity_AnswerNo">
        <quer:field path="DiversityAnswers,PossibleAnswer,Description"/>
      </quer:projection>
    </quer:projections>
    <quer:filterings>
      <quer:filtering>
        <quer:equal>
          <quer:field path="DiversityAnswers,PossibleAnswer,Question,Code"/>
          <quer:string>EEO2b Ethnicity</quer:string>
        </quer:equal>
      </quer:filtering>
      <quer:filtering>
        <quer:equal>
          <quer:field path="Number"/>
          <quer:field ownerQuery="NewHire" path="Number"/>
        </quer:equal>
      </quer:filtering>
    </quer:filterings>
  </quer:query>
</quer:projection>

Race

<quer:projection id="idUSAEEO2RaceAnswerNo" alias="USAEEO2Race" xmlns:quer="http://www.taleo.com/ws/integration/query">
  <quer:query projectedClass="Candidate" alias="CandRace">
    <quer:projections>
      <quer:projection alias="EEO2Race_AnswerNo">
        <quer:field path="DiversityAnswers,PossibleAnswer,Description"/>
      </quer:projection>
    </quer:projections>
    <quer:filterings>
      <quer:filtering>
        <quer:equal>
          <quer:field path="DiversityAnswers,PossibleAnswer,Question,Code"/>
          <quer:string>EEO2b Race</quer:string>
        </quer:equal>
      </quer:filtering>
      <quer:filtering>
        <quer:equal>
          <quer:field path="Number"/>
          <quer:field ownerQuery="NewHire" path="Number"/>
        </quer:equal>
      </quer:filtering>
    </quer:filterings>
  </quer:query>
</quer:projection>

Disability

<quer:projection id="idEEO2Disability" alias="USAEEO2Disability" xmlns:quer="http://www.taleo.com/ws/integration/query">
  <quer:query projectedClass="Candidate" alias="CandDisability">
    <quer:projections>
      <quer:projection alias="EEO2Disability_AnswerNo">
        <quer:field path="DiversityAnswers,PossibleAnswer,Description"/>
      </quer:projection>
    </quer:projections>
    <quer:filterings>
      <quer:filtering>
        <quer:equal>
          <quer:field path="DiversityAnswers,PossibleAnswer,Question,Code"/>
          <quer:string>EEO2b Disability</quer:string>
        </quer:equal>
      </quer:filtering>
      <quer:filtering>
        <quer:equal>
          <quer:field path="Number"/>
          <quer:field ownerQuery="NewHire" path="Number"/>
        </quer:equal>
      </quer:filtering>
    </quer:filterings>
  </quer:query>
</quer:projection>

Protected Veteran

<quer:projection id="idEEO2ProtectedVet" alias="USAEEO2ProtectedVet" xmlns:quer="http://www.taleo.com/ws/integration/query">
  <quer:query projectedClass="Candidate" alias="CandProtectedVet">
    <quer:projections>
      <quer:projection alias="EEO2ProtectedVet_AnswerNo">
        <quer:field path="DiversityAnswers,PossibleAnswer,Description"/>
      </quer:projection>
    </quer:projections>
    <quer:filterings>
      <quer:filtering>
        <quer:equal>
          <quer:field path="DiversityAnswers,PossibleAnswer,Question,Code"/>
          <quer:string>EEO2b Protected veteran</quer:string>
        </quer:equal>
      </quer:filtering>
      <quer:filtering>
        <quer:equal>
          <quer:field path="Number"/>
          <quer:field ownerQuery="NewHire" path="Number"/>
        </quer:equal>
      </quer:filtering>
    </quer:filterings>
  </quer:query>
</quer:projection>

TCC – Top Level OLF Filter

For those times that you need to isolate all children of a specific parent.

<quer:filtering xmlns:quer="http://www.taleo.com/ws/integration/query">
	<quer:includedIn>
		<quer:decode>
			<quer:field path="Level"/>
			<quer:string>1</quer:string>
			<quer:field path="Code"/>
			<quer:string>2</quer:string>
			<quer:field path="Parent,Code"/>
			<quer:string>3</quer:string>
			<quer:field path="Parent,Parent,Code"/>
			<quer:string>4</quer:string>
			<quer:field path="Parent,Parent,Parent,Code"/>
			<quer:string>5</quer:string>
			<quer:field path="Parent,Parent,Parent,Parent,Code"/>
		</quer:decode>
		<quer:list>
			<quer:string>VALUE1</quer:string>
			<quer:string>VALUE2</quer:string>
		</quer:list>
	</quer:includedIn>
</quer:filtering>

TCC – Subquery against another entity

So I was having to write an export that would mimic the results of and OBI report so that it could be automated. The logical entity to pull this information in was the application as it had candidate and requisition data that was needed for the report. Unfortunately, there was a filter in the OBI report saying that the requisition had to be posted. Now the problem here lies in the fact that you cannot access the SourcingRequest table from the application entity. So I’m like well, if I were writing this out, I would just make sure that:

ContestNumber in (select ContestNumber from SourcingRequest where PostingStatus = ‘posted’)

After monkeying around with it I finally got it to work and it’s done by putting in a subquery in the general filters:

<quer:filtering xmlns:quer="http://www.taleo.com/ws/integration/query">
	<quer:includedIn>
		<quer:field path="Requisition,ContestNumber"/>
		<quer:query projectedClass="SourcingRequest" alias="sqMotives" preventDuplicates="true" pagingsize="1">
			<quer:subQueries/>
			<quer:projections>
				<quer:projection>
					<quer:field path="Requisition,ContestNumber"/>
				</quer:projection>
			</quer:projections>
			<quer:filterings>
				<quer:filtering>
					<quer:equal>
						<quer:field path="SourcingRequestStatus,Number"/>
						<quer:string>2</quer:string>
					</quer:equal>
				</quer:filtering>
			</quer:filterings>
		</quer:query>
	</quer:includedIn>
</quer:filtering>

TCC – Finding Duplicate Emails (Having Clause)

In a perfect world, we would all have a 3 day work week, get 2 months of vacation a year, doughnut Friday would be every day and candidate databases wouldn’t have duplicate email addresses. Well that’s the hand we’re dealt and I can’t do anything about the first three but can at least try to give you some data on the latter.

If you’re looking to pull a list of email addresses and the count for them to give you an idea of what you’re up against use the process below.

Create an empty file called: CandidateEmailCountExport_sq.xml

Add the following code:


<?xml version="1.0" encoding="UTF-8"?>
<quer:query productCode="RC1501" model="http://www.taleo.com/ws/tee800/2009/01" projectedClass="Candidate" locale="en" mode="CSV" csvheader="true" largegraph="true" preventDuplicates="true" xmlns:quer="http://www.taleo.com/ws/integration/query">
	<quer:subQueries/>
	<quer:projections>
		<quer:projection>
			<quer:field path="EmailAddress"/>
		</quer:projection>
		<quer:projection alias="CNTEmail">
			<quer:count>
				<quer:field path="EmailAddress"/>
			</quer:count>
		</quer:projection>
	</quer:projections>
	<quer:projectionFilterings/>
	<quer:filterings/>
	<quer:sortings/>
	<quer:sortingFilterings/>
	<quer:groupings>
		<quer:grouping>
			<quer:field path="EmailAddress"/>
		</quer:grouping>
	</quer:groupings>
	<quer:groupingFilterings>
		<quer:groupingFiltering>
			<quer:greaterThan>
				<quer:count>
					<quer:field path="EmailAddress"/>
				</quer:count>
				<quer:string>1</quer:string>
			</quer:greaterThan>
		</quer:groupingFiltering>
	</quer:groupingFilterings>
	<quer:joinings/>
</quer:query>
<span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span>

WARNING!!! This is one of those that if you open it in the GUI, make a change and save it, it will erase the groupingFilterings and groupingFiltering, any edits should be made in your favorite text editor.


TCC – Prevent Mass Emails by Integration

We’ve all been there, we’re loading something into a staging zone and then it all of a sudden hits us, we forgot to mask the email…

So to prevent any mass emailing from what we’re doing with in TCC there is a setting on the front end that we need to set, I know going into the GUI is a bit scary but sometimes we’ve got to fet an assist from front end settings.

This is chapter and verse from Doc ID 1047782.1 in the MOS:

The setting AllowIntegrationSendingEmail is used to prevent TCC imports from sending mass emails. It prevents or allows the zone to send the correspondences configured to be triggered automatically. If the setting is set to False, no emails are sent following a TCC import. If the setting is set to True, emails will be sent whenever the conditions for an automated correspondence are met.

The setting can be found here: Configuration > General Configuration – Settings > Allow Integration Sending Email.

Correspondences must be configured in the zone for them to be sent out.

 


TCC – Custom Function WM_CONCAT

We’ve all had those times when we want to export the user types or groups and return the selections on the same line as opposed to each type and group on a different line. Yes you could use csv-entity export but that’s never a sure thing.  You can use WM_CONCAT to pull the elements and stick them in the same column as comma separated value. This is a bit limited because you have include a grouping for every value not using WM_CONCAT.

Here is a functional demonstration:

Create an empty file named: UserExport-WM_CONCAT_sq.xml

Add this code to the file:

 
<?xml version="1.0" encoding="UTF-8"?>
<quer:query productCode="SO1704" model="http://www.taleo.com/ws/so800/2009/01" projectedClass="User" locale="en" mode="CSV" csvheader="true" largegraph="true" preventDuplicates="false" xmlns:quer="http://www.taleo.com/ws/integration/query">
	<quer:subQueries/>
	<quer:projections>
		<quer:projection>
            <quer:field path="UserAccount,Loginname"/>
        </quer:projection>
		<quer:projection>
            <quer:field path="FirstName"/>
        </quer:projection>
		<quer:projection>
            <quer:field path="LastName"/>
        </quer:projection>
		<quer:projection>
            <quer:field path="CorrespondenceEmail"/>
        </quer:projection>
		<quer:projection alias="UserTypeCode" projectedValueType="[C">
  <quer:customFunction name="wm_concat">
    <quer:field path="UserTypes,Code"/>
  </quer:customFunction>
</quer:projection>
	</quer:projections>
	<quer:projectionFilterings/>
	<quer:filterings/>
	<quer:sortings>
		<quer:sorting ascending="true">
			<quer:field path="LastName"/>
		</quer:sorting>
		<quer:sorting ascending="true">
			<quer:field path="FirstName"/>
		</quer:sorting>
	</quer:sortings>
	<quer:sortingFilterings/>
	<quer:groupings>
		<quer:grouping>
            <quer:field path="UserAccount,Loginname"/>
        </quer:grouping>
		<quer:grouping>
            <quer:field path="FirstName"/>
        </quer:grouping>
		<quer:grouping>
            <quer:field path="LastName"/>
        </quer:grouping>
		<quer:grouping>
            <quer:field path="CorrespondenceEmail"/>
        </quer:grouping>
	</quer:groupings>
	<quer:joinings/>
</quer:query>

TCC – Batch file for touchpoints

We always know what fun it is to crawl way back into the past when we knew and were fluent with DOS, ah it certainly brings back nostalgia and I can usually do everything that I need to do but some of it I barely remembered then let alone know. But the internet provides and when setting up batch files for the touchpoints I just need a template so here is the header and import and output samples.

Read More