Off Limits Policies: Job Role

Overview

When a JobClosed A job (vacancy, position, role) is an opening for which a customer's client needs a placement. RoleClosed A job (vacancy, position, role) is an opening for which a customer's client needs a placement. Policy is created, the selected Job Role becomes Off Limits. This means that if a Contact is assigned that Job Role, an Off Limit Line Item (or badge) is created and the Contact is tagged as Off Limits. This article covers how to configure a Job Role so it displays the Off Limit line item (or badge) as well as other important information for this Off Limits policy.

The topics in this article are as follows:

Creating an Off Limit Job Role Policy

There are two scenarios where Contacts are NOT considered Off Limits even if they meet the criteria of an Off Limit Job Role Policy:

Narrowing Down the Job Role Policy Criteria

Users have the option of narrowing down the Job Role policy criteria by configuring a Job Status and a Job Record Type in the Off Limit Job Role Policy.

The Job Status field and Job Record Type field on a Job Role Policy record function like filters for the policy that is being configured. Changing the value of these fields does not trigger any recalculation. Some examples of this are as follows:

  • Job Role Policy is created with Job Role = Jury Member: Any Contact on any Job assigned the Jury Member Job Role becomes Off Limits.
  • Job Role Policy is created with Job Role = Jury Member and Job Status = Open: Any Contact on any Open Job assigned the Jury Member Job Role becomes Off Limits.
  • Job Role Policy is created with Job Role = Jury Member, Job Status = Open and Job Record Type = Permanent: Any Contact on any open Permanent Job assigned the Jury Member Job Role becomes Off Limits.

Choosing the Duration

The Duration field on an Job Role Policy determines the period of time that a Contactremains Off Limits because of the policy.

Leaving Duration blank is not supported.

The Duration (expressed in number of days) entered on the policy record is used by Bullhorn for Salesforce to determine the Off Limit Line Item’s Duration (how long the Contact will be Off Limits):

  • The Start Date is the date when the Contact is moved to the relevant stage and the Off Limit Line Item is created.
  • The End Date is calculated by adding Start Date + Duration.

There are a number of events that can take place before the Duration expires that can affect the enforcement of the Off Limits attribute:

  • The Contact is moved to a different Job Role.
  • The Job is closed.
  • The Job is closed for a specific Closed Reason.

For those scenarios options can be configured at policy level to let the user decide on the Duration Behavior when a Contact is moved to a different Job Role before the Duration is expired. A second layer of configuration can be used to control what happens to the Off Limits constraint when the Job is closed or closed with a specific Closed Reason before the Duration has expired. For more details, see the section Off Limit Policy Extension.

A Contact is Moved Off the Job Role before Duration Expires

To decide what happens to the Off Limit Line Item in this scenario, you can choose one of the following options when creating the policy:

  • Do Nothing: Off Limits duration runs its course regardless of the change of Job Role.
  • Disable: Off Limit Line Item is disabled the moment the Contact is assigned a different Job Role. The Off Limit Line Item’s end date is populated with the date of Job Role change.
  • Update: An extension, for a set amount of days, is added to the duration set on the policy. After selecting this option, users need to enter a value in the Additional Days on Role Update field. This is effectively the new duration. The event looks like this:
    • Start Date: Day when Contact has been assigned a different Job Role.
    • End Date: Start Date + value entered in Additional Days on Role Update field.

Configuration

When a Job Role Policy is created and marked as active or deactivated, only future Job RolesClosed A job (vacancy, position, role) is an opening for which a customer's client needs a placement. assignments will be considered for Off Limit line item creation.

General

Field Name API Name Field Type Description Supports Updates?
Description TR1__Description__c Text(255) General description of the policy Yes
Rank TR1__Rank__c Number(4, 0) The value in this field determines the order/priority of enforced policies Yes
Reason TR1__Reason__c Text(255) The name/short description of this policy. Important: please note that this field is required at database level and must always be populated. If not, even when removed from the layout, users will not be able to save the policy. The value in this field is shown in the Off Limits warning/block ‘popup’ to inform users why the Contact they selected is Off Limit Yes
Legal Reason TR1__Legal_Reason__c Text(255) Legal reason for enforcing this policy, if relevant Yes
Type TR1__Type__c Picklist

The behavior enforced at ‘checkpoints’ when an Off Limits Contact is selected for some actions. The options are:

  • Block
  • Warning
Yes. If the value is changed on an existing policy, the change is only propagated to Line Items created afterwards.
Active TR1__Active__c Checkbox

Flag that shows if the policy is active.

If unchecked, the policy and all related Off Limits line items are disabled.

Yes
Job Role TR1__Job_Role__c Text(255) Job Role that, if assigned to a Contact, renders them Off Limits. No
Job Record Type TR1__Job_Record_Type__c Text(255) Job Record Type that the Job Role policy applies to. No
Job Status TR1__Job_Status__c Text(255) Job Status Type that the Job Role policy applies to. No
Duration TR1__Duration__c Number(18, 0) This field determines the period of time that Contacts remain Off Limits when a policy applies to them. Yes
Behavior on Role Change TR1__Behavior_on_Role_change__c Picklist

For Job Role Policies only. The value chosen in the picklist determines what happens to the Line Item Duration when a Contact is assigned a different Job Role. These are the OOTB values:

  • Do Nothing
  • Disable
  • Update
No
Additional Days on Role Update TR1__Additional_Days_on_Role_Update__c Number(18, 0) Days added to Off Limit Duration after triggering the update behavior on Job Role change. The ‘clock’ starts on the Job Role change date, so effectively the value in this field is the ‘new’ Duration. Yes
Disable Off Limits On Policy Disable N/A Checkbox Unselected out of the box: the default behavior is that when a Job Role Policy is disabled, all active related Off Limit line items remain enabled until their Duration expires. Select this checkbox if you want all active Off Limit line items to be disabled when the related Job Role Policy is disabled. Yes

Off Limit Policy Extension

As mentioned, further configuration can be added to control what happens to the Off Limits constraint when the Job is closed or closed with a specific Closed Reason before the Duration has expired.

If no ‘Off Limit Policy Extension’ record is configured and linked to a Job Role policy, the ‘Duration’ of the Off Limit Job Role Policy and related Line Items is decided exclusively by what’s configured on the policy. The configuration of an Off Limit Policy Extension record determines the following:

  • What Job Changes (Job Fields updates) can trigger a change of Duration:

    • Job Status change

    • Closed Reason change

  • What happens to Off Limit Line Items ‘Duration’ when we register such a change

    • Do Nothing: Off limits duration runs its course regardless of the change of Job Status/Closed Reason

    • Disable: Off Limit Line Items are disabled the moment BH4SF registers a change of Job Status/Closed Reason

    • Update: An extension (in a set amount of days) is added to the Duration set for the Off Limit Line Item.

      • If selecting this option, users need to enter a value in the Additional Days field. This is effectively the new duration (Start Date is the date when the change is registered. End Date= new Start Date + value entered in Additional Days field).

Here are a list of fields for the Off Limit Policy Extension object:

Field Name

API Name

Field Type

Description

Off Limit Policy

TR1__Off_Limit_Policy__c

Lookup to Policy

(required)

Defines which policy the behavior’s ‘extension’ configured against this object applies to

Job Status

TR1__Job_Status_Picklist__c

Picklist

The values come from Job object> TR1__Status__c

  • Open
  • Hold
  • Closed

Job Closed Reason

TR1__Job_Closed_Reason_Picklist__c

Picklist

The values come from Job object> TR1__Closed_Reason__c

ATS Stage

TR1__ATS_Stage__c

Multi-select Picklist

The values come from Application V2Closed A BH4SF custom object introduced when new data model ATSv2 was added to the core product object> TR1__Stage__c

This field is irrelevant if you are configuring an Off Limit Policy Extensions record related to a Job Role policy.

Behavior on Job Change

TR1__Behavior_on_Job_changes__c

Picklist

Behavior of Off Limit Line Item when Job Status or Job Closed Reason changes:

  • Do Nothing
  • Disable
  • Update

Additional Days

TR1__Additional_Days__c

Number(18,0)

When ‘Behavior on Job change’ is set to Update, the additional days are added to the existing end date of all candidatesClosed A person looking for a job. A candidate can also be referred to as a Job Seeker, Applicant, or Provider.’ related Policy generated badges (which may have been populated by duration) 

Executive and Non-Executive Jobs

The Off Limits logic does not apply to non-executive jobs. Actions performed with Contacts assigned Job Roles for a non-executive job will not trigger any Off Limits functionality.

Through configuration, it is possible to ensure that BH4SF recognizes non-executive Search jobs and ignores any Off Limits constraints for Contacts and Candidates associated with such jobs.

Recruiting agencies specializing in executive searches may also routinely deal with non-executive jobs. Both types of Job records may be present in the same Org. The Off-Limits logic will not apply to the non-executive jobs, unless it is specially configured.

Use Cases

Conditions Met Situation Outcome
  • Active Job Role policy for Job Role X
  • Behavior on RoleChange="Disable"
  • Duration="N"
Contact C is assigned Job Role X. Contact C becomes Off Limit for “N“ Days starting from when they are assigned Job Role X.
  • Active Job Role policy for Job Role X
  • Behavior on RoleChange = "Disable"
  • Duration=“N"
  • Contact C is Off Limit because of this policy with Duration "N"
Contact C is assigned Job Role Y for same Job. Contact C is no longer Off Limits because Behavior on Role Change = "Disable".
  • Active Job Role policy for Job Role X.
  • Behavior on RoleChange= "Update".
  • Duration = "N.
  • Additional Days on Role update = N1.
Contact C is assigned Job Role X Contact C becomes Off Limit for "N" Days starting from when they are assigned Job Role X.
  • Active Job Role policy for Job Role X
  • Behavior on RoleChange = "Update"
  • Duration = "N"
  • Additional Days on Role update = N1
  • Contact C is Off Limits because of this policy with Duration = "N".
Contact C is assigned different Job Role for same Job. Contact C remains Off Limits and the Duration becomes "N1".
  • Active Job Role policy for Job Role X
  • Behavior on RoleChange = "Do Nothing
  • Duration = "N"
Contact C is assigned Job Role X. Contact C becomes Off Limit for "N" Days starting from when they are assigned Job Role X.
  • Active Job Role policy for Job Role X
  • Behavior on RoleChange = "Do Nothing"
  • Duration = "N"
  • Contact C is Off Limits because of this policy with Duration = "N"
Contact C is assigned different Job Role for same Job. Contact C remains Off Limits till Duration ends.
  • Active Job Role policy for Job Role X
  • Behavior on Role Change = "Disable/Do Nothing/Update"
  • Duration = 20
  • Additional Days on Role Update = 30
  • Contact C is Off Limit because of this policy with Duration = 20 = and a Line Item L1 is created for the Policy for Duration = 20.
Contact “C“ is moved from Job Role "X" to Job Role "Y" (for same Job) after five days.
  • If Behavior on Role Change = Disable then L1 is disabled>Contact C is no longer Off Limit.
  • If Behavior on Role Change = Do Nothing then L1 Duration=15> Contact C is Off limit for 15 more days.
  • If Behavior on Role Change = Update then L1 Duration=30 days>Contact C is Off limit for 30 more days.
  • Active Job Role policy for Job Role X
  • Behavior on Role Change = "Disable/Do Nothing/Update"
  • Duration = 20
  • Additional Days on Role Update = 30
  • Contact C is Off Limit because of this policy with Duration = 20 = and a Line Item L1 is created for the Policy for Duration = 20.
Contact C Job Role is changed from Job Role "Y" to Job Role "X" after give days and they are now again affected by the Job Role Policy for Job Role X.
  • New Line Item L2 is created with Duration 20 days for the Policy.
  • Line Item L1 is disabled.
  • Contact C is Off Limits due to L2
  • Active Job Role policy for Job Role X
  • Behavior on Role Change = "Disable/Do Nothing/Update"
  • Duration = 20
  • Additional Days on Role Update = 30
  • Contact C is Off Limit because of this policy with Duration = 20 = and a Line Item L1 is created for the Policy for Duration = 20.
Contact C Job Role is changed again: from Job Role "X" to Job Role "Z" (of same Job) after five days.
  • If Behavior on Role Change = Disable then L2 is disabled>Contact C is no longer Off Limit
  • If Behavior on Role Change = Do Nothing then L2 Duration = 15> Contact C is Off limit for 15 more days
  • If Behavior on Role Change = Update then L2 Duration = 30 days> Contact C is Off limit for 30 more days.

Off Limit Recalculation Global Method

OffLimitRecalculator is a global apex class with a global method that makes it possible to run Off Limit recalculations for given Contact records or for given Off Limit ATS Stage Policy records/Off Limit Job Role Policy records.

There are two main use cases for adding this API:

  • A New Off Limit ATS Stage/ Job Role Policy is Created: As previously stated, when an ATS Stage Policy is created and marked active or deactivated, only FUTURE stage changes are considered for line items creation: but an API call can trigger recalculations and generate line items for candidates in the associated stages/ Job Roles.
  • Data Migration: when triggers are disabled, Off Limit line items etc will not be created, so this API will allow the Data Migration Team/Professional Services Team to generate them without hitting governor limits.

Global Methods

About Method

Method runs Off Limit recalculation for Contact records based on the Contact Ids provided in contactIds attribute.

Method recalculates all policy types:

  • Contact Policy
  • Account Policy
  • ATS Stage Policy
  • Job Role Policy.

This method executes recalculation in asynchronous transactions.

TR1.OffLimitRecalculator.recalculatePoliciesForContact(Set<Id> contactIds);

Method runs Off Limit recalculation for a Off Limit Policy record based on the Off Limit Policy Id provided in policyId attribute.

Method supports only Off Limit Policy records with ATS Stage or Job Role.

TR1.OffLimitRecalculator.recalculateATSOrJobRolePolicy(Id policyId);

Examples

Use Developer Console to Open Execute Anonymous Window for the following scenarios: 

  • In this scenario,"003Ox000002chwOIAQ" is a Contact Id.

    Copy
    Off Limit recalculation for Contact records script:
    Set<Id> contactIds = new Set<Id>();
    contactIds.add('003Ox000002chwOIAQ');
    TR1.OffLimitRecalculator.recalculatePoliciesForContacts(contactIds);
  • In this scenario, "a2OOx000000FsBNMA0" is an ATS Stage or Job Role Off limit Policy Id.

    Copy

    Off Limit recalculation for a Off Limit Policy record script:

    TR1.OffLimitRecalculator.recalculateATSOrJobRolePolicy('a2OOx000000FsBNMA0');