Skip to main content
External Resources

Read First Introduction & Overview

The 2cloudnine Bullhorn for Salesforce (BH4SF) Integration provides a flexible and seamless solution for integrating the Bullhorn for Salesforce (BH4SF) and 2cloudnine Payroll. Its primary purpose is the creation and updating of 2cloudnine Assignments from the BH4SF Job and Closing Report objects. With the 2cloudnine BH4SF Integration a recruiter is able to manage their temp and perm employees using BH4SF and have the data seamlessly flow to 2cloudnine. Middle and back office functions are then able to pick up and manage this data without a need to interact with the BH4SF records. The purpose of this user guide is to provide instructions related to the deployment and configuration of the 2cloudnine BH4SF integration. The intended audience for this document is system Administrators, recruiters, Payroll and finance users.
Important NotesThe following packages must be installed in the org before you can install the 2cloudnine BH4SF Integration package.
  • 2cloudnine Payroll
  • 2cloudnine Time2Pay Extension
  • Talent Rover
  • Unofficial SF FlowActionsBasePack
  • Unofficial SF FlowScreenComponentsBasePack
  • Unofficial SF Datatable

Pre-Deployment Steps

Prior to the deployment of components you must first install the following packages. Failure to install these packages will result in a failed deployment validation.

Install ‘Unofficial SF Flow’ Packages

The screen flows used throughout the 2cloudnine BH4SF Integration includes functionality provided in the unofficial SF Flow Action and Screen Component Basepacks. These packages must be installed before you can install the 2cloudnine BH4SF Integration package. To install the Flow Action and Screen Component Basepacks:
  1. Go to the Unofficial SF site for the Flow action and screen components basepacks.
  2. Install the 2 packages into your Salesforce Org (Links provided for both sandbox and production).
    1. FlowActionsBasePack
    2. FlowScreenComponentsBasePack
  3. Go to the Unofficial SF site for Datatables.
  4. Install the package into your Salesforce Org (Links provided for both sandbox and production).

Deployment Steps

The 2cloudnine BH4SF Integration is currently only available via the deployment of the required components and not via a package installation. All components are stored in a 2cloudnine managed org and can only be deployed via a request to 2cloudnine. The following document outlines all components that make up the 2cloudnine BH4SF Integration.

Post Deployment Configuration 1. Apply Security

The ‘2cloudnine BH4SF Integration’ contains components across the standard salesforce, Bullhorn and 2cloudnine packages that require user access in order to successfully function. Typically all functions (front, middle and back) will require access to these components. To streamline these security requirements, the 2cloudnine BH4SF integration includes a 2cloudnine BH4SF permission set that can be applied to these users.
This permission set grants access only to components within the 2cloudnine BH4SF integration. Additional permissions on 2cloudnine objects may be required depending on the specific functions the user needs to perform.While the 2cloudnine managed packages include permission sets for middle and back office roles, these are typically too permissive for front office users. As such, custom permission sets should be created to provide front office users with the appropriate level of access to middle and back office data.

2cloudnine BH4SF Permission Set

A permission set ‘2cloudnine BH4SF’ is included in the deployment and contains access to all the required components. To apply the ‘2cloudnine BH4SF’ Permission Set:
  1. Go to ‘Setup’
  2. Search for and select ‘Permission Sets’
  3. Select the ‘2cloudnine BH4SF’ permission set’
  4. Select the button ‘Manage Assignments’
  5. Select the button ‘Add Assignments’
  6. Search for and select each user to assign the permission set to and click Next
  7. Select the ‘Assign’ button.

2cloudnine Rate Calculator Permission Set

The ‘2cloudnine BH4SF Integration’ utilises the Rate Calculator for management of Assignment Rates and oncosts. Users who require access to manage Rates and related records and functionality of the Rate Calculator, must be granted access to the 2cloudnine Rate Calculator via the ‘2cloudnine Rate Calculator’ permission set. To apply the ‘2cloudnine Rate Calculator’ Permission Set:
  1. Go to ‘Setup’
  2. Search for and select ‘Permission Sets’
  3. Select the ‘2cloudnine Rate Calculator’ permission set
  4. Select the button ‘Manage Assignments’
  5. Select the button ‘Add Assignments’
  6. Search for and select each user to assign the permission set to and click Next
  7. Select the ‘Assign’ button.

2. Flows

The 2cloudnine BH4SF Integration utilises multiple screen and record triggered flows in the creation and synchronisation of records between 2cloudnine and BH4SF. To utilise these flows you must install prerequisite packages from Unofficial SF and then activate the flows.

Activate Flows

Prior to using the 2cloudnine BH4SF Integration all flows included within the managed package must be activated. To activate the flows:
  1. Go to Setup
  2. Search for and select Flows
  3. Search for and Select ‘2c9 - Create Job Assignment Template’
  4. Select ‘Activate’
  5. Repeat these steps for all flows listed in the flow glossary at the bottom of this document.
The flows included in the 2cloudnine BH4SF Integration provide a baseline for the integration to function as intended. Users should never remove the criteria and field mappings within these flows but can include additional functionality as required for their org specific requirements.

3. Lightning Page and Page Layout Assignments

The 2cloudnine BH4SF integration includes lightning record pages and page layouts which contain relevant fields and components required for end users. If the customer chooses to retain their own Lightning pages and layouts, ensure these layouts are referenced to verify that all necessary fields and components are included in the customer’s own layouts. For fields in the integration, please refer to the component workbook. Lightning Pages Page Layouts

Client Page Layout

While the 2cloudnine BH4SF Integration provides a default page layout for the Account object, front office systems commonly use their own record types and page layouts. As a result, you will typically need to manually add the necessary 2cloudnine fields to your custom Account layout. However, with the introduction of Assignment Templates (refer to the 2cloudnine Bullhorn for Salesforce (BH4SF) Integration User Guide), most 2cloudnine fields are no longer required on the Account record. When updating an existing front office Account layout, only the following fields and related lists are generally needed:

Job & Closing Report Page Layouts

The 2cloudnine BH4SF does not contain page layouts for the Job & Closing report objects by default. This is because these pages are usually heavily customised in each org, based upon their front office requirements. As a result we recommend adding the following fields and related lists to your respective Job and Closing report layouts. JOB You MUST add the field ‘Assignment Template’ to the Job page layout. If this is not done, any cloned Jobs will not correctly copy across the correct Assignment Template data. CLOSING REPORT

4. Enable Template Validation Override

Validations on the Assignment object are a critical part of the 2c9 product, designed to ensure data integrity by enforcing strict criteria for record creation and updates. These validations prevent errors and maintain consistency across records. However, for the custom ‘Template’ record type, these validations need to be bypassed to accommodate the streamlined data entry requirements specific to templates. This functionality ensures that Assignment records for ‘Template’ can be successfully created and updated with minimal data. To achieve this, validation overrides are applied to the Assignment object for the ‘Template’ record type. This approach allows flexibility for templates while ensuring that all validations remain enforced for other record types, such as ‘Temp,’ to preserve overall data integrity. For more details on Assignment Templates, refer to the user guide. To enable Assignment validation overrides for the ‘Template’ record type:
  1. Go to Setup
  2. Search for and select ‘Custom Settings’
  3. Locate the custom setting labelled ‘Disable Assignment RecordType Validation’ and click ‘Manage’
  4. Click ‘New’
  5. Enter the required details:
    1. Name = A name for the setting, e.g. ‘Template’
    2. Custom Record Type Id = Record Type Id of the Template from the above step (e.g. 0126F000001MobVQAS)
  6. Click ‘Save’
To ensure data integrity, validation overrides are restricted to custom record types, such as the ‘Template’ record type. Overrides cannot be applied to product-based record types like ‘Temp,’ as these rely on strict validations to maintain consistency and prevent data errors across the system.

5. Enable Invoice Setting Override

Currently the 2cloudnine product only supports the creation of 1 set of Invoice Settings per Account. If a user attempts to add a second set (e.g. A different Invoice Entity), the system will fire a validation and prevent the record from saving. Due to this limitation and the requirement for staffing agencies to have multiple Invoice Settings per Account, the use of Invoice Setting overrides are required, ensuring a single Account can have as many different Invoice Settings as required. To enable Invoice Setting
  1. Go to Setup
  2. Search for and select ‘Custom Settings’
  3. Locate the custom setting labelled ‘Override TC9P Validation’ and select ‘Manage’
  4. Select the ‘Edit’ button.
  5. Set ‘Override Invoice Setting’ to TRUE.
  6. Select ‘Save’.

6. Update FEE Record Type

The 2cloudnine BH4SF Integration allows users to generate Invoiceable Fee records from the Account, Job, Closing Report and Assignment objects. To support this, a custom record type called ‘FEE’ has been added to both the Invoiceable Fee and Invoice Item objects. This helps consolidate non-permanent placement fees into a single record type, simplifying system maintenance. While the FEE record types are included with the components, you must ensure that all required values are added to the Fee Type picklist. To assign the Fee Type picklist values to the FEE record types:
  1. Go to Setup
  2. Select Object Manager
  3. Search for and select the ‘Invoice Item’ object
  4. Select ‘Record Types’
  5. Select the ‘FEE’ record type
  6. Select the ‘Fee Type’ picklist.
  7. Assign all ‘Available’ values into the ‘Selected Values’ and select Save.
  8. Repeat for the Invoiceable Fee and Pay Transaction objects.

7. Create Default Records (Optional)

Global Assignment Templates

Global Assignment Templates are predefined “Template” Assignment records linked to a parent Account. These templates can be automatically copied when creating new Accounts, streamlining setup and ensuring consistency. Why Use Global Assignment Templates?
  • Reduces administrative effort when onboarding new Accounts.
  • Improves data integrity by maintaining consistent default values.
  • Flexible setup—an org can have:
    • A single global Assignment Template.
    • Multiple templates linked to one or more Template Accounts.
While optional, Global Assignment Templates provide a structured and efficient way to manage Assignments across the organisation. If Global Assignment Templates are not used, customers must manually create Assignment Templates for each new Account, increasing administrative effort and the risk of inconsistent data. To create a global Assignment template:
  1. Go to the app launcher and search for and select ‘Assignments’
  2. Select the ‘New’ button
  3. Select the ‘Template’ Record Type
  4. Complete all relevant information that would apply to a Global template ensuring the client is set to your global template account.
  5. Select Save
  6. Repeat steps 1-5 for each template you require
Creating global Template Accounts to store Assignment Templates is recommended but not required. Customers can instead opt to use existing Account records as the parent Template account if their org setup supports that.
The following provides different scenarios for the setup of Assignment Templates:

Scenario 1: Single Entity Org (Basic Setup)

A customer with a single Payment and Invoice Entity wants a simple way to manage templates.
  • They create an Account record named “Template Account.”
  • They then set up one Assignment Template linked to this account, defining key global defaults like the Payment Entity and Schedules.
This approach keeps things streamlined with a single template for all cases.

Scenario 2: Single Entity Org (Advanced Setup)

A customer with a single Payment and Invoice Entity needs more flexibility, such as making templates specific to Job Roles.
  • They create an Account record named “Template Account.”
  • Instead of one, they create multiple Assignment Templates under this account, each tailored with specific details like: Interpretation Rules, Rate Calculator Templates and other Job Role specific information.
This allows greater customisation while still maintaining a centralised template structure.

Scenario 3: Multi-Entity Org

A customer has two separate Payment and Invoice Entities and wants to ensure that new Accounts only have access to the templates relevant to their entity.
  • They create two Template Account records:
    • “Entity 1 Template Account”
    • “Entity 2 Template Account”
  • For each Template Account, they create Assignment Templates with details specific to that entity, such as the Payment Entity and Schedules.
With this setup, each entity maintains its own tailored templates, preventing cross-entity template confusion.

Global Invoice Settings Templates

Like Assignment Templates, Global Invoice Settings allow default middle and back-office data to be applied to new or updated Account records. The Global Invoice Setting Template is linked to the Assignment Template created in the previous step. Within each Invoice Setting Template Group, four required Invoice Settings must be configured. To create a Global Invoice Setting Template, configure related Invoice Settings, and apply them to an Assignment Template:
  1. Open the app launcher, search for, and select Template Groups’
  2. Select the ‘New’ button
  3. Select the ‘Invoice Settings’ Record Type
  4. Enter a name for the template group and select Save.
  5. Open the newly created Template Group, go to the Related tab, and click New under Invoice Settings
  6. Create the 4 required Invoice Setting records (Refer to the QRG for details).
  7. Go the first Assignment template from the above setup
  8. Locate the lookup field ‘Invoice Settings Template Group’ and update it with the newly created Invoice Setting Template Group.
  9. Repeat steps 1-8 for all required global Invoice Settings Templates.
A single Invoice Setting Template Group can be linked to multiple AssignmentTemplates. A new Invoice Setting Template is only needed if the related Invoice Settings differ or if they apply to a different Template Account.

8. Update Custom Metadata (Conditionally Compulsory)

When using Global Assignment Templates, the following configuration is mandatory. This step ensures that Template Accounts (created in the previous step) are assigned to a defined picklist value. This picklist allows new or updated Account records to determine the appropriate source for their Assignment Templates.

Update Picklists

The integration includes picklist fields on both the Account object and Assignment Templates custom metadata object. These picklist values are used to align Account records with custom metadata for querying purposes. Therefore, the values in these picklists must match. The values of these fields are customer-driven based on the Template Account setup. For example, if Template Accounts are configured by Payment Entity, it would be logical to define the picklist values using the names of the Payment Entities. To update the Account picklist:
  1. Go to Setup > Object Manager
  2. Search for and select ‘Account’
  3. Select ‘Fields and Relationships’
  4. Select ‘Assignment Template Group’.
  5. Select ‘New’ in the values section
  6. Add any required picklist values
  7. Select Save.
The picklist value ‘Parent’ is used by the integration to assign Assignment Templates from parent Accounts. If this functionality is not required, the value can be deactivated but should never be deleted.
To update the Assignment Template Custom Metadata picklist:
  1. Go to Setup
  2. Search for and select ‘Custom Metadata Types’
  3. Select ‘Assignment Templates’
  4. Select ‘Assignment Template Group’
  5. Select ‘New’ in the values section
  6. Add any required picklist values
  7. Select Save.

Create Custom Metadata

This configuration step maps the Template Accounts to the picklist values from the previous step. To create the custom metadata
  1. Go to Setup
  2. Search for and select ‘Custom Metadata Types’
  3. Select ‘Manage Records’ on ‘Assignment Templates’
  4. Select ‘New’
  5. Enter all fields:
    1. Label - The name of the mapping (e.g. Payment Entity)
    2. Assignment Template Name - The API name, this defaults from the label.
    3. Assignment Template Group - The picklist value used to map the Accounts ‘Assignment Template Group’ to this custom metadata.
    4. Account ID - The ID of the template Account that will store the Assignment Templates.
  6. Select Save
  7. Repeat steps 1-6 for all required mappings.
ExampleUsing scenario 3 from the global template scenario above, two template Accounts have been created:
  • Entity 1 Template Account
  • Entity 2 Template Account
Both the Account and Assignment Template picklist fields will be updated with the values ‘Entity 1’, and ‘Entity 2’.When creating the custom metadata it would be configured as follows:Custom Metadata 1
  • Label = Entity 1 Mapping
  • Assignment Template Name = Entity_1_Mapping
  • Assignment Template Group = Entity 1 (As configured in above step)
  • Account ID = Entity 1 Template Account > Record ID
Custom Metadata 2
  • Label = Entity 2 Mapping
  • Assignment Template Name = Entity_2_Mapping
  • Assignment Template Group = Entity 2 (As configured in above step)
  • Account ID = Entity 2 Template Account > Record ID

9. Flow Glossary

The following glossary provides a high level overview of all flows provided within the 2cloudnine BH4SF Integration. These flows must be Active in order for the 2cloudnine BH4SF integration to function as intended.

Mandatory Flows

The following flows are mandatory for the operation of the 2cloudnine BH4SF integration. Failure to activate and configure these flows according to the instructions above will result in the integration not functioning as intended, or potentially failing entirely. 2c9 - Create Account Assignment Template Record triggered flow that automatically creates a client specific Assignment template from the global template (refer above). This flow is triggered by any Account on create/update that does not have the field ‘Assignment Templates Default’ populated. 2c9 - Create Job Assignment Template Record triggered flow used to clone Assignment Templates and assign them to a Job when a new job is created or updated. This flow is triggered by a Job on create/update when the field ‘Assignment Template’ is not populated. 2c9 - Assignment Template Manager This Screen Flow is used to manage the Assignment Template from the Job record. It plays a critical role in the 2cloudnine BH4SF integration, serving as the user interface for updating middle- and back-office data from the Job record. Any changes made through this flow are saved directly to the Job Assignment Template, which is subsequently used to create the 2cloudnine Assignment. This flow also provides direct access to subflows for managing Invoice Settings and Rates. 2c9 - Create Assignment from Placement Record triggered flow used to automatically create Assignments when a Closing Report record is created. This flow also contains the functionality to create the Payee record. 2c9 - Manage Invoice Settings Screen flow used to streamline the management of invoice fields and related Invoice Settings for both Assignments and Assignment Templates. It provides a user-friendly front-office interface that enables users to view and update invoice-related data at the Assignment level. The flow includes logic to automatically look up existing Invoice Settings or create new records when none are found. This automation ensures consistency, reduces manual data entry, and simplifies the overall invoice setup process. 2c9 - Create Invoice Settings Record triggered flow used to automatically create Invoice Setting Templates and related Invoice Settings. This flow is launched as a subflow from the ‘2c9 - Assignment Template Manager’ flow and has been specifically designed to accept input variables to allow it to be launched from other processes, providing a centralised method for the creation of invoice settings. 2c9 - Retrieve Invoice Settings Auto Launched flow used to get a collection of Invoice Settings based upon an input variable. This flow is launched as a subflow from the ‘2c9 - Assignment Template Manager’ so that users can view related Assignment templates Invoice Settings. 2c9 - Create Perm Fee This flow automatically creates a ‘Perm’ Invoiceable Fee and its related Pay Transaction. It is triggered by a configuration option on the Assignment Template, which defines how and when invoiceable perm fees should be automatically generated. 2c9 - Create Invoiceable Fee Screen This screen flow allows users to generate Invoiceable Fees directly from the Client, Job, Closing Report, and Assignment objects, integrating the fee process into the ATS for a more streamlined experience. It is launched from the ‘2c9 - Manage Invoice Settings’ flow. 2c9 - Enable Overrides This record-triggered flow ensures that Invoice Setting Overrides remain enabled (as configured in Step 5) following the nightly automatic status update job, which disables all overrides by default. Without this flow, the configuration set in Step 5 will be overridden, resulting in errors when users attempt to create a second set of Invoice Settings for the same Account.

Optional Flows

The following flows are optional, depending on how the Placement will be used after the Assignment is created. If customers intend to retain and use the Placement for managing data such as the start date, these flows are strongly recommended to ensure data integrity. However, if the Placement is only used for the initial 2cloudnine Assignment hand-off, these flows can typically be ignored. 2c9 - Update Assignment from Placement Record triggered flow used to synchronise key shared fields between 2cloudnine Assignments and BH4SF Closing Reports (Refer object and field mappings above). If customers are not utilising the Closing Report after Assignment creation, this flow can be safely deactivated. 2c9 - Update Placement from Assignment Record triggered flow used to synchronise key shared fields between BH4SF Closing Reports and 2cloudnine Assignments (Refer object and field mappings above). If customers are not utilising the Closing Report after Assignment creation, this flow can be safely deactivated. 2c9 - Delete Assignment & Placement Autolaunched flow triggered from a button on the Assignment object. This flow is used to correctly delete an Assignment and related Placement performing important checks such as ensuring no Pay Transaction exists. 2c9 - Delete Placement & Assignment Autolaunched flow triggered from a button on the Placement object. This flow is used to correctly delete a Placement and related Assignment performing important checks such as ensuring no Pay Transaction exists.