HRMS migration
Field-level mapping, validation, and rollback between flair.hr and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
flair.hr
Source
Bullhorn ATS & CRM
Destination
Compatibility
9 of 12
objects map 1:1 between flair.hr and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from flair.hr to Bullhorn is a platform-type transition, not a straightforward data copy. flair.hr is an HRMS that manages employees, onboarding, performance, time tracking, and absence records on Salesforce objects; Bullhorn is an ATS and recruiting CRM that tracks candidates, job orders, submissions, placements, and client corporations on its own proprietary schema. There is no 1:1 object correspondence for Employees, Departments, Absences, Time Entries, or Performance Reviews. We scope what migrates and what must be documented for manual rebuild or addressed with Bullhorn custom objects and support tickets. We extract flair data via the Salesforce REST API using the customer's connected app credentials, transform the records to Bullhorn entity format, and load via Bullhorn's REST API with rate-limit handling. We do not migrate flair Workflows, Sequences, or Salesforce Flow-based approvals as code; we deliver a written inventory of these for your admin to rebuild in Bullhorn's workflow builder.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a flair.hr object lands in Bullhorn ATS & CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
flair.hr
Employee
Bullhorn ATS & CRM
Candidate or ClientContact
1:manyflair Employee records (Salesforce Contacts with flair-specific custom fields) require a strategic decision in Bullhorn. If the customer uses Bullhorn for internal recruiting, employees become Bullhorn Candidates. If the customer uses Bullhorn for external candidate sourcing and already has an HR system for employees, we migrate employee contact data to Bullhorn ClientContact with a custom flaremigration__c flag. We preserve start date as a custom date field, employment status as a custom picklist, and manager relationships by resolving the manager's email to a Bullhorn User lookup. The customer decides the target model during scoping; we cannot make this determination from schema inspection alone.
flair.hr
Candidate / Job Application
Bullhorn ATS & CRM
Candidate
1:1flair Candidate records (stored as Salesforce Leads or custom JobApplication objects depending on the flair configuration) map directly to Bullhorn Candidate. We inspect the org's object model during discovery to determine whether flair uses Lead or a custom candidate object, then extract the relevant records. Candidate name, email, phone, skills, experience, and source attribution migrate to Bullhorn Candidate fields. Any flair custom fields on the candidate record map to Bullhorn customObject fields if provisioned, or to Candidate custom fields.
flair.hr
Position
Bullhorn ATS & CRM
JobOrder
1:1flair Position records (job openings) map to Bullhorn JobOrder. The Position title becomes JobOrder.title; the department and location assignments become JobOrder.departments and JobOrder.address; the position status (Open, Closed, On Hold) maps to JobOrder.status. We preserve any custom headcount fields from flair as JobOrder custom fields. JobOrder.clientCorporation is resolved to an existing Bullhorn ClientCorporation or created during migration if no match exists.
flair.hr
Department
Bullhorn ATS & CRM
ClientCorporation or custom object
lossyflair Departments have no direct Bullhorn equivalent. Bullhorn ClientCorporation represents a client company in the recruiting context, not an internal organizational unit. We offer two migration paths: (1) map Departments to Bullhorn ClientCorporation records if the customer treats departments as client-facing business units in Bullhorn, or (2) document Departments in a custom Bullhorn object (customObject1 through customObject10 depending on edition) with a name and hierarchy field. The customer selects the strategy during scoping.
flair.hr
Absence
Bullhorn ATS & CRM
Custom Object or excluded
1:1flair Absence records (custom objects tracking leave types, start/end dates, approval status, and employee lookups) have no native Bullhorn equivalent. Bullhorn is a recruiting ATS and does not track employee absence. We document this as an out-of-scope object and recommend the customer address absence management through a dedicated HR tool, a Bullhorn custom object, or manual processes post-migration. We preserve the full absence history in the migration scope document so that the customer can elect to build a custom object if desired.
flair.hr
Time Entry
Bullhorn ATS & CRM
Custom Object or excluded
1:1flair time tracking data uses either a custom TimeEntry object or standard Salesforce Event/Task records depending on the flair version. Bullhorn has no native time tracking for ATS records. We detect the underlying flair time model during discovery, then either skip the records (documenting them in the scope) or map them to a Bullhorn custom object if the customer has provisioned one. Time entries linked to projects or cost centers cannot be preserved in Bullhorn without a custom integration.
flair.hr
Document / File
Bullhorn ATS & CRM
Candidate attachment or ClientCorporation attachment
1:1flair documents stored as Salesforce Files and ContentDocumentLink migrate to Bullhorn Candidate or JobOrder attachments. We extract the binary attachment, upload it to Bullhorn via the entity file endpoint, and link it to the target record. Large document volumes require batch processing with Bullhorn API rate-limit handling. We preserve the ContentDocument description and any folder metadata as the Bullhorn file description.
flair.hr
Performance Review
Bullhorn ATS & CRM
Custom Object or excluded
1:1flair Performance review cycles, goals, OKRs, and feedback records (custom objects linked to Employees) have no Bullhorn equivalent. Bullhorn does not track employee performance management as a native feature. We document the existence of these records in the migration scope, export them as a reference CSV for the customer's HR admin, and recommend rebuilding in a dedicated performance management tool or a Bullhorn custom object provisioned by Bullhorn Support.
flair.hr
Engagement (calls, emails, meetings, tasks)
Bullhorn ATS & CRM
Candidate Task, Event, Note
1:1flair engagement records (calls, emails, meetings, tasks, notes on Candidate and Employee records) migrate to Bullhorn Candidate tasks and events. Call engagements map to Bullhorn Task with TaskSubtype=Call; email engagements map to Note records attached to the Candidate; meeting engagements map to Event records with attendees linked via EventRelation; task engagements map to Bullhorn Task. We resolve the parent Candidate by email match and preserve the original timestamp for activity timeline ordering. Engagement history migration requires Bulk API handling for volumes over 10,000 records.
flair.hr
Job Posting / Career Portal
Bullhorn ATS & CRM
JobOrder (active postings only)
1:1flair active job postings (custom objects linked to Positions) migrate to Bullhorn JobOrder with isOpen=True and posting dates preserved. The branded career portal pages themselves do not migrate; flair's career portal builder requires flair support intervention to activate and cannot be exported as a portable artifact. We migrate posting content, location assignments, and segment associations as JobOrder fields and custom fields, then document the career portal URL mapping separately for the customer to re-publish in Bullhorn or on a standalone careers site.
flair.hr
Custom Objects (flair)
Bullhorn ATS & CRM
Custom Objects (Bullhorn)
1:1flair custom objects built on Salesforce (for industry-specific or customer-defined data) map to Bullhorn custom objects if the customer has provisioned them. Bullhorn custom objects must be requested via Bullhorn Support using a Custom Object Setup Spreadsheet and are limited to 10 per entity (Front Office Growth/Enterprise) or 2 (ATS Growth) with 55 fields each. We inspect flair's custom object definitions during discovery, cross-reference them with the customer's Bullhorn edition, and flag any that exceed Bullhorn's limits for discussion. Migrations requiring more custom objects than the edition supports are scoped as tier upgrades or partial migrations.
flair.hr
Workflow (Salesforce Flow)
Bullhorn ATS & CRM
Not migrated — documented for rebuild
lossyflair Workflows implemented as Salesforce Flow step sequences for onboarding, performance reviews, and approvals do not migrate. Bullhorn's workflow builder operates on a different model (step-based recruiting workflows versus record-triggered Flows). We deliver a written inventory of every active flair Flow with its trigger type, conditions, actions, and a recommended Bullhorn workflow equivalent. The customer's admin rebuilds these in Bullhorn's workflow designer post-migration. Workflows are explicitly out of scope as code migration.
| flair.hr | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Employee | Candidate or ClientContact1:many | Fully supported | |
| Candidate / Job Application | Candidate1:1 | Fully supported | |
| Position | JobOrder1:1 | Fully supported | |
| Department | ClientCorporation or custom objectlossy | Fully supported | |
| Absence | Custom Object or excluded1:1 | Fully supported | |
| Time Entry | Custom Object or excluded1:1 | Fully supported | |
| Document / File | Candidate attachment or ClientCorporation attachment1:1 | Fully supported | |
| Performance Review | Custom Object or excluded1:1 | Fully supported | |
| Engagement (calls, emails, meetings, tasks) | Candidate Task, Event, Note1:1 | Fully supported | |
| Job Posting / Career Portal | JobOrder (active postings only)1:1 | Fully supported | |
| Custom Objects (flair) | Custom Objects (Bullhorn)1:1 | Fully supported | |
| Workflow (Salesforce Flow) | Not migrated — documented for rebuildlossy | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
flair.hr gotchas
Career portal migration requires manual flair support intervention
Time tracking data model varies by flair version
Custom objects and fields require schema inspection before mapping
Payroll data migration does not include live payroll runs
Bullhorn ATS & CRM gotchas
ATS Growth edition has no API access
Attachments excluded from CSV bulk exports
Custom Object limits vary sharply by edition
Opportunity pipeline stages are recruitment-specific
Resume parse quality varies by document format
Pair-specific challenges
Migration approach
Discovery and schema inspection
We audit the source flair Salesforce org via the REST API using the customer's connected app credentials scoped to the flair package namespace. We enumerate all standard and custom objects, their field definitions, picklist values, lookup relationships, and effective-dated record structures. We run a Salesforce schema describe call to capture the full object and field inventory. We also identify the time tracking model in use (custom TimeEntry or Salesforce Event/Task) and inspect active Salesforce Flows for the workflow inventory document. This step produces a written data dictionary and object dependency graph for customer review before any extraction begins.
Bullhorn custom object provisioning coordination
If the migration scope includes data that requires Bullhorn custom objects (absence records, performance reviews, custom flair objects with no direct Bullhorn equivalent), we coordinate with the customer to submit the Bullhorn Custom Object Setup Spreadsheet to Bullhorn Support. Bullhorn requires 1-2 weeks to provision custom objects. We begin this step in parallel with discovery to avoid timeline delays. We confirm the provisioned custom object names and field IDs before proceeding to data extraction.
Data extraction from Salesforce REST API
We extract data from flair via the Salesforce REST API in dependency order: first, the organizational structure (Departments, Locations, Manager hierarchy); then, Employee and Candidate records; then, Positions and Job Postings; then, Absences, Time Entries, and Documents; finally, Engagement history (calls, emails, meetings, tasks, notes). Each extraction uses SOQL queries with field-level selectivity to avoid full table scans on large orgs. We handle pagination, token refresh, and rate-limit responses with exponential backoff. The output is a set of structured JSON files organized by entity.
Data transformation and field mapping
We transform the extracted Salesforce-formatted records to Bullhorn entity format. This includes resolving manager email addresses to Bullhorn User lookups, mapping flair employment status values to Bullhorn Candidate custom picklists, splitting Departments to the customer-chosen strategy (ClientCorporation or custom object), and resolving Position-to-JobOrder associations. Documents are extracted as base64-encoded binaries and prepared for Bullhorn file upload. The transformation scripts apply the mapping rules defined in the scoping document and emit a reconciliation row-count report for customer review.
Sandbox migration and reconciliation
We load transformed data into a Bullhorn Sandbox environment using the Bullhorn REST API with OAuth 2.0 authentication. We load in entity dependency order: ClientCorporation (first, as JobOrder and Candidate reference it), Candidate records (with email deduping), JobOrder records (with ClientCorporation lookup resolved), then custom object records (once Bullhorn Support has provisioned them). Documents are uploaded as Bullhorn entity files. The customer's Bullhorn admin reviews record counts, spot-checks 25-50 candidate and job order records against the flair source, and approves the mapping before production migration begins. Any corrections are made in the transformation scripts, not manually in Bullhorn.
Production migration and cutover
We run the production migration using the same extraction, transformation, and load sequence validated in Sandbox. Bullhorn REST API rate limits are enforced with batch chunking and exponential backoff. We freeze flair write access during the production cutover window, run a final delta extraction of any records modified during the migration window, then load the delta into Bullhorn. We deliver the Workflow and Flow inventory document, the Absence/Time Entry/Performance Review scope document, and the Career Portal rebuild checklist to the customer's Bullhorn admin team. We do not rebuild flair Workflows in Bullhorn; that is a separate engagement.
Platform deep dives
flair.hr
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between flair.hr and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across flair.hr and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between flair.hr and Bullhorn ATS & CRM.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
7-object category — typical timelines run 2–7 days end-to-end.
API constraints
flair.hr: Salesforce API limits apply — not publicly documented by flair separately from standard Salesforce platform limits.
Data volume sensitivity
flair.hr exposes a bulk API — large-volume migrations stream efficiently.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during flair.hr to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your flair.hr to Bullhorn ATS & CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave flair.hr
Other ways to arrive at Bullhorn ATS & CRM
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.