: High Volume Recruiting Configuration
This article applies to
s using the data model only.Overview
This article covers the settings involved in the configuration of Bulk Action An action that is performed for a large volume of data (for example, an email sent after selecting a large number of Candidates) Definition records.
High Volume. These settings are already configured for standard high volume functionality but you may want to change them based on your needs. You will need to create theThis article is intended for
s.ATS Action Modes
There are three different processes to perform candidates A person looking for a job. A candidate can also be referred to as a Job Seeker, Applicant, or Provider. to a different stage:
Actions, such as moving- UI Mode - For simple actions without much data.
- Mass Action When used in ATS or Search and Match UI, one of multiple actions available after user has selected a sub-set of Candidates Mode (Synchronous) - For more complex actions.
- Bulk Action Mode (Asynchronous) - For the most data-heavy and complex actions.
The only difference an end user will notice is that UI and Mass Action Mode records are updated in real time while Bulk Mode takes longer. Users will be able to check progress in the Bulk Monitor tab of the job A job (vacancy, position, role) is an opening for which a customer's client needs a placement. record. See ATS v2: High Volume Recruiting for more information. Bulk Action Definitions are used by two functionalities, High Volume and the .
UI Mode Configuration
- Go to Setup > Custom Metadata Types > ATS Action Configuration.
- Enter a value in the UI Limit field.
The value entered in this field determines the maximum number of records to be processed in UI Mode. For example, if the value entered is 20 and a user selects up to 20 Candidates in
and performs an action that action will happen in UI Mode. If the user selects 21 or more candidates the action will be performed in Mass or Bulk Mode instead.The
has a hard-coded limit of 10. When that limit is reached Bulk Mode will automatically be used, ignoring any user-entered UI Limit.Bulk Action Definitions Configuration
Mass and Bulk Actions are configured using the Bulk Action Definition Object. Use the following fields for configuration:
- Action Name: Name of the action (i.e. Reject/Unreject). Case sensitive.
- Bulk Action Limit: The maximum number of records that can be selected for bulk action. If the number of selected records is higher than the Bulk Action Limit the action will not be triggered and an error message will be displayed.
- Bulk Threshold: This value defines the boundary between Mass Actions and Bulk Actions. When the number of selected records is lower than the Bulk Threshold the action is performed in Mass Action mode. If the number of records is equal to or higher than the Bulk Threshold the action is performed in Bulk Mode.
- The UI Limit value cannot be larger than the Bulk Threshold Value.
- Chunk Size: Selected records are split into chunks in Bulk Action mode. The action is executed asynchronously for each chunk. Chunk Size determines how many records are contained in each chunk, i.e., how many records will be updated in a single transaction.
- Handler Name: This field contains the name of the class that implements the BHHV_BulkActionHandler interface. This class executes action specific logic.
- Target Object: 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 object this action is designed for and on the object where the Bulk Monitor will be displayed. It is always TR1__Job__c.
In Orgs where
High Volume or the is configured for the first time, the following script should be run in the Developer Console to generate the baseline Bulk Action Definition records:Set<String> definitionNamesToRemove = new Set<String>{
'Add To Call List', 'Apply To Other Job', 'Cancel Schedules', 'Edit Schedules', 'Internal Interview',
'Mass Placement', 'Move To Offer', 'Move To Stage', 'Move To Submittal', 'Move To Send Out',
'Reject/Unreject', 'Email', 'EML_BulkMailer', 'Bulk DML','EML_BulkICSMailer'};
delete [SELECT Id FROM TR1__BHHV_Bulk_Action_Log__c];
delete [SELECT Id FROM TR1__BHHV_Bulk_Action_Definition__c WHERE Name IN: definitionNamesToRemove];
TR1.BulkActionDefinitionUtility.createDefinitions();
The last line of code is a post deployment step run every time a new feature requires bulk action definitions. This code can be run in
s with Bulk Action Definitions already created as it does not override existing records, only adds new ones.Once the script is executed the following records will be created on the Bulk Action Definitions Object:
The performance of mass/bulk actions depends heavily on the objects involved in the background and related background actions, so it will vary from case to case, and from Org to Org. Refer to this article as the general configuration, but if problems or errors appear while a bulk action is performed, then the values should be decreased.
Job Record Type
Job Record Type: (TR1__Job_Record_Type__mdt)
Clickpath: Setup > Custom Metadata Types > Job Record Type
This Custom Metadata Type is a Job Record Type classifier referenced in other settings. Upon package install these four records are available:
- Consulting
- Permanent
- Retained
- Fixed Term
If your
uses any other Job Record Types, add a record for each. You only need to enter Label/ Job Record Type Name on the record.Config per Job
ATS Config per Job Record Type: (TR1__ATS_Config_per_Job_Record_Type__mdt)
Clickpath: Setup > Custom Metadata Types > ATS Config per Job Record Type
This Custom Metadata Type defines the
default view and the set of fields to display for Tabular View based on Job Record Type.These are the main fields on this Custom Metadata Type record:
- Default View: Picklist to define the default view.
- Fields to Display: Comma separated list of fields to display on Tabular View. The main object is Applicant A person looking for a job. A candidate can also be referred to as a Job Seeker, Applicant, or Provider.__c field a Contact Name field will be displayed). . All relationships are supported. If you put a lookup field in the list, the Name field from the lookup object will be displayed (i.e. for TR1__
- Job Record Type: Metadata lookup to TR1__Job_Record_Type__mdt.
Action Configuration
ATS Action Configuration: (TR1__ATS_Action_Configuration__mdt)
Clickpath: Setup > Custom Metadata Types > ATS Action Configuration
The most important information stored in this Custom Metadata Type is the UI Limit. The value that you enter here determines the max number of records that will be processed in UI mode.
For example, if the value here is 10, when a user selects up to 10 Candidates in
and performs an action, that action will be in UI Mode . If the user selects more than 10 Candidates, the Action will be performed in Mass or Bulk Mode.These are the main fields on this Custom Metadata Type record:
- UI Limit: Max number of records processed in UI mode.
- Action Name: Name of the action as defined in Bulk Action Definition. Case sensitive. Out of the box we have:
- Add To Call List
- Apply To Other Job
- Cancel Schedules
- Edit Schedules
- Internal Interview The third Stage of Job application flow. This is when the recruiter sets up a job interview between Candidate and Client.
- Mass Placement The stage that occurs after a candidate accepts a job offer and facilitates their information being copied to the back office.
- Move To Offer The fourth Stage of Job application flow. This is when the candidate is offered the position (details about salary, locations etc are shared and candidate decides if he wants to take the job)
- Move To Send Out The third Stage of Job application flow. This is when the recruiter sets up a job interview between Candidate and Client.
- Move To Stage (This is the setting for the Move Back bulk/mass actions)
- Move To Submittal The Second Stage of Job application flow. This is when the recruiter sends the Candidate CV to the client, a sort of first introduction.
- Placement
- Quick Add*
- Reject/Unreject
- View Interview Schedules*
*There is no bulk/mass action associated to the Quick Add and View Interview Schedules buttons, but an mdt record needs to be created for these two buttons to control their visibility. Action Name is a mandatory field, so a value is needed. UI Limit is populated for the same reason.
- Job Record Type: Metadata lookup to TR1__Job_Record_Type__mdt.
- Active: set to True by default as all action buttons are visible out of the box. Set it to False to remove an action button from the user interface.
- Position A job (vacancy, position, role) is an opening for which a customer's client needs a placement.: Currently non-functional. With future development it will control the position of the button on the Action Toolbar.
On first installing the package, this Custom Metadata Type will have the following list of records, with fields populated as per this table:
Label | ATS Action Configuration Name | Action Name | UI Limit | Job Record Type | Active | Position |
---|---|---|---|---|---|---|
Add To Call List Consulting |
Add_To_Call_List_Consulting |
Add To Call List |
20 |
Consulting |
TRUE |
10 |
Add To Call List Fixed |
Add_To_Call_List_Fixed |
Add To Call List |
20 |
TRUE |
10 |
|
Add To Call List Perm |
Add_To_Call_List_Perm |
Add To Call List |
20 |
Permanent |
TRUE |
10 |
Add To Call List Retained |
Add_To_Call_List_Retained |
Add To Call List |
20 |
Retained |
TRUE |
10 |
Apply To Other Job Consulting |
Apply_To_Other_Job_Consulting |
Apply To Other Job |
20 |
Consulting |
TRUE |
3 |
Apply To Other Job Fixed |
Apply_To_Other_Job_Fixed |
Apply To Other Job |
20 |
Fixed Term Booking |
TRUE |
3 |
Apply To Other Job Permanent |
Apply_To_Other_Job_Permanent |
Apply To Other Job |
20 |
Permanent |
TRUE |
3 |
Apply To Other Job Retained |
Apply_To_Other_Job_Retained |
Apply To Other Job |
20 |
Retained |
TRUE |
3 |
Cancel Schedules Consulting |
Cancel_Schedules_Consulting |
Cancel Schedules |
20 |
Consulting |
TRUE |
n.a. |
Cancel Schedules Fixed |
Cancel_Schedules_Fixed |
Cancel Schedules |
20 |
Fixed Term Booking |
TRUE |
n.a. |
Cancel Schedules Permanent |
Cancel_Schedules_Permanent |
Cancel Schedules |
20 |
Permanent |
TRUE |
n.a. |
Cancel Schedules Retained |
Cancel_Schedules_Retained |
Cancel Schedules |
20 |
Retained |
TRUE |
n.a. |
Edit Schedules Consulting |
Edit_Schedules_Consulting |
Edit Schedules |
20 |
Consulting |
TRUE |
n.a. |
Edit Schedules Fixed |
Edit_Schedules_Fixed |
Edit Schedules |
20 |
Fixed Term Booking |
TRUE |
n.a. |
Edit Schedules Permanent |
Edit_Schedules_Permanent |
Edit Schedules |
20 |
Permanent |
TRUE |
n.a. |
Edit Schedules Retained |
Edit_Schedules_Retained |
Edit Schedules |
20 |
Retained |
TRUE |
n.a. |
Email Consulting |
Email_Consulting |
|
20 |
Consulting |
TRUE |
2 |
Email Fixed |
Email_Fixed |
|
20 |
Fixed Term Booking |
TRUE |
2 |
Email Permanent |
Email_Permanent |
|
20 |
Permanent |
TRUE |
2 |
Email Retained |
Email_Retained |
|
20 |
Retained |
TRUE |
2 |
Internal Interview Consulting |
Internal_Interview_Consulting |
Internal Interview |
20 |
Consulting |
TRUE |
1 |
Internal Interview Fixed |
Internal_Interview_Fixed |
Internal Interview |
20 |
Fixed Term Booking |
TRUE |
1 |
Internal Interview Permanent |
Internal_Interview_Permanent |
Internal Interview |
20 |
Permanent |
TRUE |
1 |
Internal Interview Retained |
Internal_Interview_Retained |
Internal Interview |
20 |
Retained |
TRUE |
1 |
Mass Placement Consulting |
Mass_Placement_Consulting |
Mass Placement |
20 |
Consulting |
TRUE |
4 |
Mass Placement Fixed |
Mass_Placement_Fixed |
Mass Placement |
20 |
Fixed Term Booking |
TRUE |
4 |
Mass Placement Permanent |
Mass_Placement_Permanent |
Mass Placement |
20 |
Permanent |
TRUE |
4 |
Mass Placement Retained |
Mass_Placement_Retained |
Mass Placement |
20 |
Retained |
TRUE |
4 |
Move To Offer Consulting |
Move_To_Offer_Consulting |
Move To Offer |
20 |
Consulting |
TRUE |
n.a. |
Move To Offer Fixed |
Move_To_Offer_Fixed |
Move To Offer |
20 |
Fixed Term Booking |
TRUE |
n.a. |
Move To Offer Permanent |
Move_To_Offer_Permanent |
Move To Offer |
20 |
Permanent |
TRUE |
n.a. |
Move To Offer Retained |
Move_To_Offer_Retained |
Move To Offer |
20 |
Retained |
TRUE |
n.a. |
Move To Send Out Consulting |
Move_To_Send_Out_Consulting |
Move To Send Out |
20 |
Consulting |
TRUE |
n.a. |
Move To Send Out Fixed |
Move_To_Send_Out_Fixed |
Move To Send Out |
20 |
Fixed Term Booking |
TRUE |
n.a. |
Move To Send Out Permanent |
Move_To_Send_Out_Permanent |
Move To Send Out |
20 |
Permanent |
TRUE |
n.a. |
Move To Send Out Retained |
Move_To_Send_Out_Retained |
Move To Send Out |
20 |
Retained |
TRUE |
n.a. |
Move To Stage Consulting |
Move_To_Stage_Consulting |
Move To Stage |
20 |
Consulting |
TRUE |
n.a. |
Move To Stage Fixed |
Move_To_Stage_Fixed |
Move To Stage |
20 |
Fixed Term Booking |
TRUE |
n.a. |
Move To Stage Permanent |
Move_To_Stage_Permanent |
Move To Stage |
20 |
Permanent |
TRUE |
n.a. |
Move To Stage Retained |
Move_To_Stage_Retained |
Move To Stage |
20 |
Retained |
TRUE |
n.a. |
Move To Submittal Consulting |
Move_To_Submittal_Consulting |
Move To Submittal |
20 |
Consulting |
TRUE |
n.a. |
Move To Submittal Fixed |
Move_To_Submittal_Fixed |
Move To Submittal |
20 |
Fixed Term Booking |
TRUE |
n.a. |
Move To Submittal Permanent |
Move_To_Submittal_Permanent |
Move To Submittal |
20 |
Permanent |
TRUE |
n.a. |
Move To Submittal Retained |
Move_To_Submittal_Retained |
Move To Submittal |
20 |
Retained |
TRUE |
n.a. |
Placement Consulting |
Placement_Consulting |
Placement |
20 |
Consulting |
TRUE |
4 |
Placement Fixed |
Placement_Fixed |
Placement |
20 |
Fixed Term Booking |
TRUE |
4 |
Placement Permanent |
Placement_Permanent |
Placement |
20 |
Permanent |
TRUE |
4 |
Placement Retained |
Placement_Retained |
Placement |
20 |
Retained |
TRUE |
4 |
Quick Add Consulting |
Quick_Add_Consulting |
Quick Add |
20 |
Consulting |
TRUE |
5 |
Quick Add Fixed |
Quick_Add_Fixed |
Quick Add |
20 |
Fixed Term Booking |
TRUE |
5 |
Quick Add Permanent |
Quick_Add_Permanent |
Quick Add |
20 |
Permanent |
TRUE |
5 |
Quick Add Retained |
Quick_Add_Retained |
Quick Add |
20 |
Retained |
TRUE |
5 |
Reject/Unreject Consulting |
Reject_Unreject_Consulting |
Reject/Unreject |
20 |
Consulting |
TRUE |
8 |
Reject/Unreject Fixed |
Reject_Unreject_Fixed |
Reject/Unreject |
20 |
Fixed Term Booking |
TRUE |
8 |
Reject/Unreject Permanent |
Reject_Unreject_Permanent |
Reject/Unreject |
20 |
Permanent |
TRUE |
8 |
Reject/Unreject Retained |
Reject_Unreject_Retained |
Reject/Unreject |
20 |
Retained |
TRUE |
8 |
View Interview Schedules Consulting |
View_Interview_Schedules_Consulting |
View Interview Schedules |
20 |
Consulting |
TRUE |
12 |
View Interview Schedules Fixed |
View_Interview_Schedules_Fixed |
View Interview Schedules |
20 |
Fixed Term Booking |
TRUE |
12 |
View Interview Schedules Permanent |
View_Interview_Schedules_Permanent |
View Interview Schedules |
20 |
Permanent |
TRUE |
12 |
View Interview Schedules Retained |
View_Interview_Schedules_Retained |
View Interview Schedules |
20 |
Retained |
TRUE |
12 |
ATS HV Settings
ATS HV Settings: (TR1__ATS_HV_Settings__mdt)
Clickpath: Setup > Custom Metadata Types > ATS HV Settings
This Custom Metadata Type sets the retention period for Bulk Action logs.The value is stored in the Bulk Action Log Retention Period field. If a log is older (in days) than the value in this field then it will not be displayed in Bulk Monitor.
ATS Configuration Settings
ATS Configuration Settings: (TR1__ATS_Configuration_Settings__c)
Clickpath: Setup > Custom Settings > ATS Configuration Settings
This Custom Setting stores settings for various
features. Two are related to the set up of ATS High Volume:- Toggle Views Button Disabled: Disables the toggle view button. The end user will only have access to the view set as default in the ATS Config per Job Record Type Custom Metadata Type.
- Kanban View The main User Interface in ATSv1 (the page that opens after a job/candidate is selected and that shows buttons, stage columns, or swimlanes, and cards). One of the three UI Views in ATS v2 (the others being List View and Table View) Disabled: Removes access to the ATS Kanban View only.
Custom Action Implementation
This section contains guidance for implementing Custom Bulk Actions in your
. Some developer experience may be necessary.- Implement the TR1__BHHV_BulkActionHandler interface. There are 2 methods that have to be implemented:
- handle(Set<Id> recordIds, String parameters) - This method should contain all the business logic for the given custom action. It will be invoked directly in a mass action scenario. The method should return an instance of BHHV_BulkActionResult.
- handle(Set<Id> recordIds, String parameters, Id bulkActionLogDetailId) - This method is used in bulk action scenarios. Implementation should call the method above and then publish the TR1__BHHV_Bulk_Action_Response__e platform event using bulkActionLogDetailId and BHHV_BulkActionResult from handle method call.
Example Implementation:public class BulkCustomActionHandler implements BHHV_BulkActionHandler {
/**
* Method contains Add to Call List Bulk Action logic
*
* @param recordIds: Set of Application First stage of Job placement flow (Application> Submittal>Interview>Offer> Placement) v2 Ids
* @param parameters: parameters in JSON format
* @param bulkActionLogDetailId: Id of Bulk Action Log Detail object
*/
public void handle(Set<Id> recordIds, String parameters, Id bulkActionLogDetailId) {
BHHV_BulkActionResult actionResult = this.handle(recordIds, parameters);
BHHV_Bulk_Action_Response__e actionResponse = new BHHV_Bulk_Action_Response__e();
actionResponse.Bulk_Action_Log_Detail__c = bulkActionLogDetailId;
if (actionResult.errorDetails != null && !actionResult.errorDetails.isEmpty()) {
actionResponse.Error_Details__c = JSON.serialize(actionResult.errorDetails);
} else if (String.isNotEmpty(actionResult.message)) {
actionResponse.Error_Details__c = actionResult.message;
}
actionResponse.Status__c = String.isEmpty(actionResponse.Error_Details__c) ? 'Completed - Ok' : 'Completed - Error';
EventBus.publish(actionResponse);
}
/**
* Method creates list of Call List Members based on
* Call List and Applicant information
*
* @param recordIds: Set of Application v2 Ids
* @param parameters: parameters in JSON format
*
* @return Bulk Action Result record
*/
public BHHV_BulkActionResult handle(Set<Id> recordIds, String parameters) {
BHHV_BulkActionResult actionResult = new BHHV_BulkActionResult();
try {
/**
* do some business logic
*/
actionResult.isSuccess = result.isSuccess;
//if there is a general error just put error message to actionResult.message
//if there are errors per processed records put JSON string with error messages mapped to Application V2 Id
//for example '{"a0A56000001zn7WEAQ":"some error text", "a0A56000001zn7WEAR":"some error text 2"}'
actionResult.errorDetails = result.errorMessageMap;
} catch (Exception e) {
actionResult.isSuccess = false;
actionResult.message = e.getMessage();
}
return actionResult;
}
}
- Create a TR1__BHHV_Bulk_Action_Definition__c record where:
- Action Name - Your action identifier. The name should be unique. You will send Action Name to BHHV_Bulk_Action_Controller which invokes Bulk Action.
- Handler Name - The name of your class from step 1.
- Target Object - TR1__Job__c.
- Bulk Threshold - Any set of records whose size is above the threshold will be handled in Bulk (asynchronous) mode. Otherwise it will be handled in Mass (synchronous) mode.
- Bulk Action Limit - Maximum amount of records that can be processed in a single bulk action.
- Chunk Size - In bulk mode, records are processed in chunks. Chunk size is determined by TR1__BHHV_BulkActionHandler implementation from step 1. If Bulk action fails to execute with SOQL Limit error you can try to decrease Chunk Size.
- Create an Aura component for a custom action. After the component is developed it should be configured in the TR1__ATS_Job_Custom_Action__mdt custom Metadata.
-
From this Aura component invoke TR1__BHHV_BulkActionController.invokeAction(String actionDataJSON). Where actionDataJSON is a JSON string that contains
- bulkActionDefinitionId - ID of TR1__BHHV_Bulk_Action_Definition__c from step 2.
- entityId - Job Id.
- objectIds - List of TR1__Application_V2__c record Ids.
- parameters - Any parameters that you want to pass to the implementation of TR1__BHHV_BulkActionHandler from step 1. This parameter is passed directly to the handle method therefore its structure is up to the developer’s consideration.