: Setup and Configuration Guide
This configuration guide is designed for Textkernel Search + Match: Overview for general information and a list of guides designed for end-users.
s. Please seeOverview
This configuration guide is used to enable Sandbox Non Production Environments are used by customers to test new features prior to them going live. and Production s. requires the 2020.10 GA Release (Package Version 5.31.2) or newer.
in tandem with Professional Services and . The steps in this guide can be used for bothSteps
Select a
Environment and Enter Credentialsprovides two environments, one for your Production and another for Sandbox s. There are two corresponding sets of credentials provided by for accessing Production and Sandboxes, respectively. All the steps in this guide need to be completed in both s, unless specified otherwise.
Activate the environment:
- Go to Setup > Custom Metadata Types > Textkernel configuration.
- In the Environment In Salesforce terminology, any type of instance where the application can be used, like a production instance (where users use the product daily) or a testing environment (a Salesforce instance created just to develop and test features). Or can be used with reference to an external database Type field enter Production or Sandbox depending on the type of being configured.
- In Environment enter Custom.
- Navigate to the Textkernel Management Component tab, click on Single Tenant settings and click the Manage custom settings button. You may need to create a Tab for the
- Enter the credentials provided by in the form that pops up.
Create a
Page- Go to Setup >Tabs.
- Scroll down to the Lightning Component Tabs related list and click on New.
- Populate the following fields:
- Lightning component: TR1:TextkernelIframe
- Tab Label: <desired_label>
- Tab Name: <desired_name>
- Tab Style: <desired_icon>
- Description: <optional>
- Click on Next.
- Add tab visibility to the necessary profiles and Save.
Enable Candidate Search, Job Search, and Portal
- Go to Setup > Custom Metadata Types > Textkernel configuration and click Manage Records.
- Choose Textkernel Configuration.
- On this page, enable these three checkboxes:
Configure Candidate Indexing with
These steps will configure the standard Candidate Data Model, which defines what Candidate data is synced with TMF A technical term, not specific to BH4SF. It's a file format used in parsing.) file, which is a structured text file that contains instructions for parsing and formatting. This data model customization needs to be coordinated between the Professional Services team and to be able to be implemented.
and indexed. This involves customizing the trace message format (Changes to Out-of-the-Box TMF
For any change to the TMF, go to Setup > Custom Metadata Types > Textkernel object configuration and click on Manage Records, then choose Edit Candidate.
Checkboxes in the TMF require either a numeric value or a true/false value. The default is True/False but this can be customized by adding attributes:
- To send 1/0, add the attribute bhtk:convertBooleanToNumeric="true"
- To send yes/no, add the attribute bhtk:convertBooleanToYesNo="true"
These additional attributes should be added to the respective TMF nodes. For Contact nodes, update the itemGroup tag for respective fields. For all related objects and fields (such as Education/Employment), update the Field tag
s, <ItemGroup> with the OtherCountryCode field may need to be removed from the TMF, per this screenshot:Configure Which Contacts are Indexed
- Go to Setup > Custom Metadata Types > Textkernel configuration and click on Manage Records.
- Check if these two fields are on the page layout and if not, add them:
- Candidate Filter Field: Enter the API API, or Application Programming Interface, is used by customers to create custom career portals or to take advantage of Data Mirror/DataMart. Bullhorn prefers to use REST API. name of the Contact field that determines if the Contact is to be indexed or not.
- Candidate Filter Value: Specify which field value flags the Contact for indexing.
For example, you could use a checkbox field DoNotIndex__c and configure this setting as follows:
- Candidate Filter Field: DoNotIndex__c
- Candidate Filter Value: False
This will result in all Contacts A contact (or client contact) is the person who the recruiter is working with at a Company. In Talent Rover a Contact can be either a Client Contact or a Candidate Contact. Both types of Contacts are stored in the same object (Contact). that have the DoNotIndex__c checkbox unchecked to be included in the Indexing.
Do not use package field TR1__donotuseinsam__c for this configuration, as there is logic attached to this field that results in Contacts with TR1__donotuseinsam__c = True being excluded from search results.
Start Indexing
- Go to the Textkernel Management tab.
- Click on Queue all Candidates A person looking for a job. A candidate can also be referred to as a Job Seeker, Applicant, or Provider. for Indexing.
- Once they are queued, click on Start Indexer.
Configure Job Indexing with
These steps will configure the standard Vacancy A job (vacancy, position, role) is an opening for which a customer's client needs a placement. Data Model, which defines what Job data is synced with and indexed. There is an option to customize the data model which needs to be coordinated between the Professional Services team and to be implemented.
Add the Job Indexing Template
- Go to Setup > Custom Metadata Types > Textkernel object configurations > Job.
- On the Job .mdt record, paste the standard TMF template (see below) into the Template In BH4SF, this mainly refers to email templates field and Save. Make sure that Object is set to Job on this record.
-
Go to Setup >Custom Metadata Types >Textkernel configuration and in the Activation of module section and select the Job search enabled checkbox.
Start Job Indexing
- Go to the Textkernel Management Component tab and click on Queue All Jobs A job (vacancy, position, role) is an opening for which a customer's client needs a placement. for Indexing.
- Once queueing is complete, click on Start Indexer.
Standard Job Indexing TMF
<?xml version="1.0" encoding="UTF-8"?>
<Vacancy api_version="tk_vacancy_01.4" xmlns:bhtk="http://www.bullhorn.com/BHTK_DomParser/xml_namespace">
<Language></Language>
<JobTitle bhtk:object="TR1__Job__c" bhtk:field="TR1__Job_Title__c" />
<Location></Location>
<ReferenceNumber bhtk:object="TR1__Job__c" bhtk:field="TR1__Job_Number__c" />
<NumberOfOpenings bhtk:object="TR1__Job__c" bhtk:field="TR1__Number_of_Openings__c"/>
<ApplicationDeadline></ApplicationDeadline>
<StartDate bhtk:object="TR1__Job__c" bhtk:field="TR1__Estimated_Start_Date__c"/>
<PostingDate bhtk:object="TR1__Job__c" bhtk:field="TR1__Open_Date__c"/>
<Organization>
<Name bhtk:object="TR1__Job__c" bhtk:field="TR1__Account_Name__c" />
<Address></Address>
<Phone></Phone>
<Email bhtk:object="TR1__Job__c" bhtk:field="TR1__Contact_Email__c" />
<Fax></Fax>
<Website bhtk:object="TR1__Job__c" bhtk:field="TR1__Account__r.Website" />
<ContactPerson bhtk:object="TR1__Job__c" bhtk:field="TR1__Contact__r.Name" />
<Industry bhtk:object="TR1__Job__c" bhtk:field="TR1__Industry__c" />
</Organization>
<CandidateRequirements>
<Experience bhtk:object="TR1__Job__c" bhtk:field="TR1__Years_of_Experience__c"/>
<Education bhtk:object="TR1__Job__c" bhtk:field="TR1__Education_Requirements__c"/>
<Competences></Competences>
<ComputerSkills bhtk:object="TR1__Job__c" bhtk:field="TR1__Computer_Systems__c" />
<DrivingLicenses></DrivingLicenses>
<LanguageSkills></LanguageSkills>
</CandidateRequirements>
<ConditionsBenefits>
<ContractType></ContractType>
<EmploymentType></EmploymentType>
<HoursPerWeek></HoursPerWeek>
<WorkingHours></WorkingHours>
</ConditionsBenefits>
<Sections>
<EmployerDescription></EmployerDescription>
<JobDescription></JobDescription>
<CandidateProfile></CandidateProfile>
<ConditionsBenefits bhtk:object="TR1__Job__c" bhtk:field="TR1__Bonus__c"/>
<ApplicationProcedure></ApplicationProcedure>
</Sections>
<VacancyDocument bhtk:object="TR1__Job__c" bhtk:field="TR1__Client_Job_Description__c" />
<UserArea>
<Location>
<City bhtk:object="TR1__Job__c" bhtk:field="TR1__City__c"/>
<ZipCode bhtk:object="TR1__Job__c" bhtk:field="TR1__Postal_Code__c"/>
<State bhtk:object="TR1__Job__c" bhtk:field="TR1__State_Area__c"/>
<CountryCode bhtk:object="TR1__Job__c" bhtk:field="TR1__Country__c"/>
</Location>
<RecordTypeName bhtk:object="TR1__Job__c" bhtk:field="RecordType.Name" />
<RecordTypeID bhtk:object="TR1__Job__c" bhtk:field="RecordTypeId" />
<Level bhtk:object="TR1__Job__c" bhtk:field="TR1__Level__c" />
<OtherExperience bhtk:object="TR1__Job__c" bhtk:field="TR1__Other_Experience__c" />
<PrimaryBackground bhtk:object="TR1__Job__c" bhtk:field="TR1__Primary_Background__c" />
<RegionalArea bhtk:object="TR1__Job__c" bhtk:field="TR1__Regional_Area__c" />
<SecondaryBackground bhtk:object="TR1__Job__c" bhtk:field="TR1__Secondary_Background__c" />
<Status bhtk:object="TR1__Job__c" bhtk:field="TR1__Status__c" />
<SalaryHigh bhtk:object="TR1__Job__c" bhtk:field="TR1__Salary_High__c" />
<ClosedReason bhtk:object="TR1__Job__c" bhtk:field="TR1__Closed_Reason__c" />
<Division bhtk:object="TR1__Job__c" bhtk:field="TR1__Division__c" />
<MaximumBillRate bhtk:object="TR1__Job__c" bhtk:field="TR1__Maximum_Bill_Rate__c" />
<MaximumPayRate bhtk:object="TR1__Job__c" bhtk:field="TR1__Maximum_Pay_Rate__c" />
<PrimaryMatchingRequirement bhtk:object="TR1__Job__c" bhtk:field="TR1__Primary_Matching_Requirement__c" />
<ExperienceRequirements bhtk:object="TR1__Job__c" bhtk:field="TR1__Experience_Requirements__c" />
<Account bhtk:object="TR1__Job__c" bhtk:field="TR1__Account__c" />
<Contact bhtk:object="TR1__Job__c" bhtk:field="TR1__Contact__c" />
</UserArea>
</Vacancy>
Add a
Portal Signing CertificateCreate a Signing Certificate
A Signing Certificate must be configured for each
in a single-tenant environment (Production or Sandbox), while all s in the same environment can share the same Portal Account.- Go to Setup > Security > Certificate and Key Management.
- Click the Create CA-Signed Certificate button.
- Fill all the required fields according to the help text provided for each field. The Key Size field value must be 2048.
When creating the certificate, follow this required naming convention: TKPortal_[org id]_[year]. For example: TKPortal_11111111111_2020.
A valid email address where the certificate expiration reminder will be sent has to be entered in the Email Address field. This email address needs to be monitored for these types of requests. When the certificate is about to expire, Bullhorn has to create a new certificate and submit a new signing request.
- Click Save to create a certificate, which will be referred to as the signing certificate.
See Textkernel Search + Match: Portal Certificate Creation for more details about certificate creation.
Get the Signing Certificate Signed by Bullhorn
- Open the certificate detail page and click the Download Certificate Signing Request button. Save the .csr file to your computer.
- Send the .csr file to Bullhorn through Professional Services. Bullhorn will sign the certificate using the .csr file and provide a .crt file, which is a signed version of the certificate. Additionally, Bullhorn will provide intermediate and root certificate files with .crt extension. Save them to your computer.
Upload the Signed Certificate into the Org
- Go back to the certificate record that was created earlier. On the certificate detail page, click the Upload Signed Certificate button.
- Click Choose File, select the .crt file for the certificate provided by Bullhorn and click Save.
Configure the Textkernel Portal Configuration Custom Metadata Type
To complete the configuration of the TextKernel A BH4SF partner. One of the Search and Match / Resume Parsin services providers integrated with BH4SF Portal Configuration Custom Metadata Type, you need a few values from your Portal Account.
Contact
and provide the following information:- JWT Issuer
- Portal Account Name. The Portal account name is always the same as the Candidate Search environment name without the '_cv' .
will provide back the following:
- URL
- Account name (Configuration Service Username)
- Admin password (Configuration Service Password)
- Go to Setup > Custom Metadata Types > Textkernel Portal Configuration.
- Click the Manage Textkernel Portal Configurations button.
- Click on New
- Fill in all the required fields following the instructions below. Save after entering all the information.
Label
Enter in any name, such as
Portal Config.Textkernel Portal Configuration Name
This will be automatically populated after entering a label.
Login URL
sso Single Sign On is an authentication process that allows a user to access multiple applications with one set of login credentials./jwt/login?jwt=
will provide this when Portal Account is created. The URL must be completed by addingFor example, if
provides https://staging.textkernel.nl/tkportal/ then the correct Login URL will be: https://staging.textkernel.nl/tkportal/sso/jwt/login?jwt=Signing Certificate Name
Copy this from Setup > Security > Certificate and Key Management and click on the name to open the record and copy the value in the Unique Name field.
Account Name
will provide this when the Portal Account is created.
JWT Issuer
This is entered in the format [CN value from Certificate record] : BH4Force Partner Services Intermediate CA.
A colon must be used to separate the two parts, the second part is always the same. The first part comes from the Certificate record:
- Go to Setup > Security > Certificate and Key Management.
- Select your certificate in the Certificates section.
- On the Certificate record, go to the Certificate field and copy the string just after CN=.
The correct JWT Issuer value based on the screenshot above would be tkportal_emea5:BH4Force Partner Services Intermediate CA.
Signing Certificate
Open the .crt file of the signing certificate with any text editor. Copy all the text content between the -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- lines and paste it into the Signing Certificate field.
Intermediate Certificate
Repeat steps above for Signing Certificate except with the Intermediate certificate provided by Bullhorn. Paste the text into the Intermediate Certificate field.
Root Certificate
Repeat steps above for Signing Certificate except with the Root certificate provided by Bullhorn. Paste the text into the Root Certificate field.
Configuration Service Username
This is the Account name
will provide when the Portal Account is created.Configuration Service Password
This is the Admin Password
will provide when the Portal Account is created.Search Policy URL
Bullhorn will provide the Service Endpoint When two systems integrate, an endpoint is one end of a communication channel. URL.
Use this format:
Prod Environment: Service Endpoint URL + /portal/config/searchPolicy
UAT Environment: Service Endpoint URL + /tkportal/config/searchPolicy
User Config URL
Bullhorn will provide the Service Endpoint URL.
Prod Environment: Service Endpoint URL + /portal/config/user
UAT Environment: Service Endpoint URL + /tkportal/config/user
Portal CSS customization options
- Go to Setup > Custom Metadata Types > Textkernel configuration
- If you are upgrading an existing Org, pull the following new fields on the page layout:
- Enter this value in the Portal CSS url field: https://tr-tkportalcss.s3-eu-west-1.amazonaws.com/bhtkportal.css
Configure Search Policies
Add Field to Contacts and Jobs Objects to Store Access Criteria
- Go to Setup > Picklist Value Sets > Textkernel Access Roles A job (vacancy, position, role) is an opening for which a customer's client needs a placement..
- The values added to this picklist will be used to mark Contact and Job records for inclusion in a search policy. For example, you might have London Office, New York Office, Rome Office as values in this picklist.
- Create two new multi-picklist fields called Textkernel Access Roles, one each on the Contact and Job Objects. Choose the Textkernel Access Roles global picklist when creating this field. Make sure that this field has at least one selected value.
The Textkernel Access Roles fields on Contact and Job records need to be populated with the relevant values to indicate which Access Roles should have visibility of the record. A mass record update might be necessary. These values/access roles will be associated to Users, so once Users and Contact/ Job records are indexed with User In Salesforce terminology, this is anybody that has login access to an instance. In BH4SF instances, usually the staff of recruiting companies access role A job (vacancy, position, role) is an opening for which a customer's client needs a placement. will be visible for that User.
, only records that have values matching aEnable Sharing for Candidates and Jobs
- Go to Setup > Custom Metadata Type > Textkernel Configuration and click on Manage Records.
- Choose Textkernel configuration and in the Sharing section enable these two checkboxes:
- Enter the API Name of the multi-select picklist fields you created on the Contacts object and Job objects in the Candidate sharing field and Job sharing field.
Create a Search Policy
- Go to App Launcher > TK An abbreviation for Textkernel Portal Search Policies (System Admins only have access to this tab) and click on New.
- Select which Access Roles you want to enable for Contacts and Jobs with this Policy:
Create a Search Policy Assignment
- After creating a Search Policy record, click on the Related tab on the same record.
- Click on New to create a Search Policy Assignment A Job position record to associate Users to the policy you have created.
Assign Permission Set
Assign the Module textkernel user permissions permission set to each user who is using
, if not already assigned.Add the
Button to Contact and Job RecordsContact Object
- Go to Setup > Object Manager > Contact > Buttons, Links, and Actions.
- Go to Create Button or Link.
- Fill in the following information:
- Label: (or preferred label)
- Display Type: Detail Page Button
- Behavior: Display in new window
- Content Source: URL
- Enter this script in formula input field:Copy
{!URLFOR("/lightning/cmp/tr1__TextkernelIframe",null,['tr1__candidateId'= CASESAFEID(Organization.Id) + '_' + CASESAFEID(Contact.Id),'tr1__selectedTab'='jobSearch'])}
- Save and add the button to the relevant Contact page layout.
Job Object
- Go to Setup > Object Manager > Job > Buttons, Links, and Actions.
- Go to Create Button or Link.
- Fill in the following information:
- Label: (or preferred label)
- Display Type: Detail Page Button
- Behavior: Display in new window
- Content Source: URL
- Enter this script in formula input field:Copy
{!URLFOR("/lightning/cmp/tr1__TextkernelIframe",null,['tr1__jobId'= CASESAFEID(Organization.Id) + '_' + CASESAFEID(TR1__Job__c.Id),'tr1__selectedTab'='candidateSearch'])}
- Save and add the button to the relevant Contact page layout.
Configure Resume Parsing
Confirm Connection Record
Confirm with Bullhorn that your Org is set up correctly for Resume Parsing A process which converts an unstructured form of resume data into the structured format..
Set
as the Provider- Go to Setup > Custom Metadata Types > Search & Match Configuration then click on Manage Records.
- Click Edit and select Textkernel from the Provider Type dropdown.
Add the Lightning Document Parser
- Go to Setup > User Interface > Publisher Layouts.
- Click on the Edit link next to the Publisher Layout Name Global Layout.
- From Mobile & Lightning Actions on the left, drag and Drop Resume Parser (be sure to choose the one with API name of TR1__Lightning_Resume_Parser) to the Salesforce and Lightning Experience Actions section, then Save
If the Org is switching to Lightning for the first time, a domain name will need to be created to enable any of the custom components. Go to Setup > Company A Company is the organization where the contact works. This can also be called the Client. Settings > My Domain to set that up.
Configure Data Mapping from Resume to Contact Record
Refer to Resume Parsing with Textkernel: Parsing Architecture and Field Mapping for more information.
Configure External Searches and Import Candidates Functionality
Refer to Textkernel Search + Match: External Searches and Import Candidates Configuration Guide for more information.