TCC – Sub IncludedIn SubQuery

I never thought that this would work but it seems to run just fine, putting it here for future reference. This returns candidates numbers that have an application to a requisition that’s posted, used for a T-XML candidate attachment export.

<quer:filtering xmlns:quer="http://www.taleo.com/ws/integration/query">
  <quer:includedIn>
    <quer:field path="Number"/>
    <quer:query projectedClass="Application" alias="sqMotives" preventDuplicates="true" pagingsize="1">
      <quer:subQueries/>
      <quer:projections>
        <quer:projection>
          <quer:field path="Candidate,Number"/>
        </quer:projection>
      </quer:projections>
      <quer:filterings>
        <quer:filtering>
          <quer:includedIn>
            <quer:field path="Applications,Requisition,Number"/>
            <quer:query projectedClass="SourcingRequest" alias="sqMotives" preventDuplicates="true" pagingsize="1">
              <quer:subQueries/>
              <quer:projections>
                <quer:projection>
                  <quer:field path="Requisition,Number"/>
                </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>
      </quer:filterings>
    </quer:query>
  </quer:includedIn>
</quer:filtering>

TCC – Upgrade to 17

This post is to consolidate the information about the required update of TCC to version 17.x

TCC: Does TCC Need To Be Upgraded When A Zone Is Upgraded? (Doc ID 2086226.1)
This article addresses the question of whether TCC needs to be upgraded when a zone is upgraded.

Read More


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.