Resume Parsing with
: Parsing Architecture and Field MappingOverview
This article describes how data is mapped from resumes parsed by
to Contact records in .
An
must be upgraded to package v.3.389 or newer to take advantage of this architecture.The following Custom Setting must be enabled for the field-mapping process described in this article to work: Setup > Custom Settings > Talent Rover Properties > Manage Records > Enable New Architecture.
How it Works
The
parser is designed to validate mobile/phone numbers, so the parser looks for international prefix codes/calling codes. If those are not found, the parser will look at what country is specified in the address to work out the relevant prefix/international code. The parser can also look for other identifiers (not specified by ) to determine the category of the number (mobile/home phone) if the address is invalid.If you notice what appears to be incorrectly parsed phone numbers added to a contact record as a result of resume parsing, please contact
Support to explain how the phone numbers were extracted.The Generic Parser
has designed a generic parser that can handle field mapping from resume to Contact record from any provider. The provider is identified by the Configuration (TR1__Search_Match_Configuration__mdt) Custom Metadata Type.
When the Provider Type is 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. classes will be called.
, the relevant Parser and ProviderThe whole idea of the generic parser is to avoid the use of multiple IF clauses that have hard-coded references to the XML Used to create custom markup languages in order to display information on the Internet. We use XML when sending jobs to Indeed for syndication. Nodes names and Fields on the Contact object.
The generic parser will iterate the list of records in the Candidate A person looking for a job. A candidate can also be referred to as a Job Seeker, Applicant, or Provider. Mapping (TR1__Candidate_Mapping__mdt) Custom Metadata Type. Each record represents a field value that needs to be stored in and will be fetched using an XPath expression. The generic parser will employ the SObject methods – put( fieldname, object ) to place the value into the respective field on the Contact record without hard-coding references.
The generic parser currently supports field mapping to the following
objects: Contact, Employment History, and Education History. The Object field on the Candidate Mapping Custom Metadata Type record captures the name of the Object for any field included in the mapping.Candidate Mapping Custom Metadata Type
To access this setting go to Setup > Custom Metadata Types > Candidate Mapping (TR1__Candidate_Mapping__mdt). This Custom Metadata Type will have no records after upgrading to v. 3.389 or higher for the first time. This article provides the recommended mapping configuration and will explain how to create the records and what fields should be mapped, but the specific field mapping for each
will be decided by the .Candidate Mapping Custom Metadata Type Fields
For each field to be mapped, create a separate Custom Metatdata Type record against the Candidate Mapping Custom Metadata Type. The screenshot above shows what a filled in record looks like. Below is a list of the available fields and their function:
Field Name | Function |
---|---|
Label | Master Label (label can be changed) |
Candidate Mapping Name | Developer Name (label can be changed) |
Action When used in ATS or Search and Match UI, one of multiple actions available after user has selected a sub-set of Candidates | Picklist Values: Merge, Do nothing, Override |
Object | API name of | Object: Contact, Education History, Employment History
Field API Name | API Name of the | object field
Default Value | Value to be added automatically if a field Value is returned as NULL from parser |
XPath | Path to the specific node in the XML file |
XML Node | Node in the XML corresponding to the Contact field |
Field Details
Action: This field controls the Record Update behavior. During parsing, a check happens to see if the destination field in
is already populated. If it is populated, these are the options:- Merge: Add the new value to the existing one.
- Do nothing: Do not update the field.
- Override: Replace existing value with new value.
- Conditional Override: Replace existing value with new value only if the new value is not blank.
Default Value: The value to be added if a field is returned as NULL from
(for example, you can decide to have "Unknown" as the default value in the case where a name is not parsed from a resume).
The Action and Default Value fields are not in use when the field mapping is to the Employment History or Education History Objects.
Field Mapping Examples
Below are two examples of how a Candidate Mapping Custom Metadata Type record is mapped from the XML record, so it is clear how data is used in this process.
Example 1
<Candidate>
<Personal>
<FirstName>John<FirstName>
<LastName>Smith<LastName>
<Initials>JC</Initials>
<Gender>Male</Gender>
<Email>john.smith@yahoo.com<Email>
<MobilePhones>
<MobilePhone>+12188675309</MobilePhone>
<MobilePhones>
<Personal>
<Candidate>
Using the above image, create a new record in Candidate Mapping Custom Metadata Type for Mobile:
Field Name | Value |
---|---|
Label | Mobile |
Candidate Mapping Name | Mobile |
Action | Override |
Object | Contact |
Field API Name | MobilePhone |
Default Value | (blank) |
XPath | Candidate/Personal/MobilePhones |
XML Node | MobilePhone |
XPath: The Xpath field needs the complete Path of the Node from to the desired value. When the code will be executed for the following :
XPath / XML Node: Candidate/Personal/MobilePhones/ MobilePhone
It will get this value “+347875723446”.
Example 2
This second example to further clarifies the importance of the Xpath field. The data we want to map is the location of the Candidate’s employers.
<EmploymentHistory>
<EmploymentItem>
<JobTitle>Junior Front-end Web Developer</JobTitle>
<EmployerName></EmployerName>
<EmployerLocation></EmployerLocation>
<Address>
<EmployerCity>Madrid</EmployerCity>
<EmployerRegion>ES Madrid</EmployerRegion>
<EmployerCountry>Spain</EmployerCountry>
<Address>
<YearsExperience>8</YearsExperience>
<Dates>
<StartDate>2011-10-01</StartDate>
<EndDate>
<YearMonth>2019-10<YearMonth
</EndDate>
<Dates>
</EmploymentItem>
<EmploymentHistory>
Field Name | Value |
---|---|
Label | Region |
Candidate Mapping Name | Region |
Action | n.a. |
Object | TR1__EmploymentHistory__c |
Field API Name | TR1__Region__c |
Default Value | n.a. |
XPath | Address |
XML Node | EmployerRegion |
To get the value of Region from the XML node, the following two fields are important:
XML Node: EmployerRegion
XPath: Address
The XPath field considers the complete path of the Node from that holds the desired value. When the code will be executed for the following:
EmploymentHistory / EmploymentItem / XPath / XML Node:
EmploymentHistory / EmploymentItem / Address / EmployerRegion
This value “ES Madrid” is returned. EmploymentHistory and EmploymentItem will be added in the code.
Candidate Mapping
These tables provide the recommended configuration for the Candidate Mapping Custom Metadata Type.
Contact Fields
Select “Contact” in the Object Field.
Label | Candidate Mapping Name | XPath | XML Node | Field API Name | Default Value |
---|---|---|---|---|---|
Nationality | Nationality | Personal | Nationality | TR1__Nationality__c | |
City | City | Personal/Address | City | OtherCity | |
PostalCode | PostalCode | Personal/Address | ZipCode | OtherPostalCode | |
Soft Skills | Soft_Skills | SoftSkill | TR1__Skills__c | ||
Professional Skills | Professional_Skills | ProfessionalSkill | TR1__Skills__c | ||
Country | Country | Personal/Address | Country[@code] | OtherCountry | |
FullName | FullName | Personal | FullName | TR1__Full_Name__c | |
OtherPhone | OtherPhone | Personal/OtherPhones | OtherPhone | OtherPhone | |
StreetAddress | StreetAddress | OtherStreet | |||
ESHighestEducationLevel | ESHighestEducationLevel | ESHighestEducationLevel | TR1__ESHighestEducationLevel__c | ||
Region | Region | Personal/Address | Region[@code] | OtherState | |
Gender | Gender | Personal | Gender | TR1__Gender__c | |
Citizenship | Citizenship | Personal | Nationality[@code] | TR1__Citizenship__c | |
Languages | Languages | LanguageSkill | TR1__Language__c | ||
Personal/Emails | |||||
HomePhone | HomePhone | Personal/HomePhones | HomePhone | HomePhone | |
LastName | LastName | Personal | LastName | LastName | |
HighestEducationLevel | HighestEducationLevel | ProfileSummary | HighestEducationLevel | TR1__Education__c | |
CurrentPosition | CurrentPosition | ProfileSummary | CurrentJob | Title | |
MobilePhone | MobilePhone | Personal/MobilePhones | MobilePhone | MobilePhone | |
FirstName | FirstName | Personal | FirstName | FirstName | |
Computer Skills | Computer_Skills | ComputerSkill | TR1__Systems_Experience__c | ||
DateOfBirth | DateOfBirth | Personal | DateOfBirth | TR1__Birthdate__c | |
LastName DefaultValue | LastName_DefaultValue | LastName | UNKNOWN | ||
Country | CountryFailover | Personal/Address | Country[@code] | TR1__OtherCountry__c | |
Region | RegionFailover | Personal/Address | Region[@code] | TR1__OtherState__c | |
MiddleName | MiddleName | Personal | MiddleName | TR1__Middle_Name__c | |
DriversLicense | DriversLicense | Personal | DriversLicenseEUNorm | TR1__Drivers_License__c |
Below are 2 configurable Contact fields. If these values are required for your Organization, add the following field records in the Custom Metadata Type.
Label | Candidate Mapping Name | XPath | XML Node | Field API Name |
---|---|---|---|---|
Initials | Initials | Personal | Initials | Add any New/Existing Field in which you need the value |
Marital Status | Marital_Status | Personal | MaritalStatus | Add any New/Existing Field in which you need the value |
Education History Fields
Select “TR1__EducationHistory__c” in the Object Field.
Label | Candidate Mapping Name | XML Node | Field API Name |
---|---|---|---|
Major | Major | Major | TR1__DegreeName__c |
StartDate | StartDate | StartDate | TR1__StartDate__c |
EducationLevel | EducationLevel | EducationLevel | TR1__DegreeType__c |
EndDate | EndDate | EndDate | TR1__EndDate__c |
InstituteName | InstituteName | InstituteName | TR1__SchoolName__c |
Employment History Fields
Select “TR1__EmploymentHistory__c” in the Object Field.
Label | Candidate Mapping Name | XML Node | Field API Name |
---|---|---|---|
EndDate | EndDate_Emp | EndDate | TR1__EndDate__c |
EmployerCity | EmployerCity | EmployerCity | TR1__City__c |
JobDescription | JobDescription | JobDescription | TR1__Description__c |
EmployerName | EmployerName | EmployerName | TR1__EmployerName__c |
EmployerRegion | EmployerRegion | EmployerRegion | TR1__Region__c |
EmployerCountry | EmployerCountry | EmployerCountry | TR1__Country__c |
JobTitle | JobTitle | JobTitle | TR1__Title__c |
StartDate | StartDate_Emp | StartDate | TR1__StartDate__c |