HRMS migration

Migrate from flair.hr to Bullhorn ATS & CRM

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 logo

flair.hr

Source

Bullhorn ATS & CRM

Destination

Bullhorn ATS & CRM logo

Compatibility

75%

9 of 12

objects map 1:1 between flair.hr and Bullhorn ATS & CRM.

Complexity

BStandard

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

flair.hr logo

flair.hr

What's pushing teams away

  • Advanced analytics and reporting features are tier-locked behind higher plans, frustrating customers who need complex workforce dashboards at the base tier.
  • Steep Salesforce-specific learning curve — teams without internal Salesforce admin resources find customization and troubleshooting difficult.
  • Implementation timelines run 4–8 weeks even for standard deployments, which exceeds expectations for smaller teams expecting faster onboarding.
  • Limited direct data export tooling — there is no self-service bulk export button; customers must request data exports from flair support or rely on Salesforce API access they may not have configured.
  • Career portal migration required manual intervention from flair support and a hard sunset deadline of March 2024 for legacy pages, creating urgency pressure.

Choosing

Bullhorn ATS & CRM logo

Bullhorn ATS & CRM

What's pulling them in

  • Agencies choose Bullhorn because it combines ATS and CRM in one platform, eliminating the need to switch between separate tools for candidate management and client relationship tracking.
  • The resume parser extracts contact details, work history, and skills into structured, searchable candidate profiles automatically without manual data entry, reportedly driving 24% more placements per recruiter.
  • Bullhorn's placement and split-billing model natively supports contract staffing workflows, handling start/end dates, overtime rules, and multi-party pay/charge rates in a single record.
  • The platform offers extensive third-party integrations through its Recruitment Cloud Marketplace, connecting with back-office, onboarding, and payroll systems used by staffing agencies.
  • 72% of Bullhorn customers are teams with fewer than 10 users, and Bullhorn's implementation team handles setup and data migration for small agencies going live within weeks.

Object mapping

How flair.hr objects map to Bullhorn ATS & CRM

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

maps to

Bullhorn ATS & CRM

Candidate or ClientContact

1:many
Fully supported

flair 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

maps to

Bullhorn ATS & CRM

Candidate

1:1
Fully supported

flair 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

maps to

Bullhorn ATS & CRM

JobOrder

1:1
Fully supported

flair 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

maps to

Bullhorn ATS & CRM

ClientCorporation or custom object

lossy
Fully supported

flair 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

maps to

Bullhorn ATS & CRM

Custom Object or excluded

1:1
Fully supported

flair 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

maps to

Bullhorn ATS & CRM

Custom Object or excluded

1:1
Fully supported

flair 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

maps to

Bullhorn ATS & CRM

Candidate attachment or ClientCorporation attachment

1:1
Fully supported

flair 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

maps to

Bullhorn ATS & CRM

Custom Object or excluded

1:1
Fully supported

flair 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)

maps to

Bullhorn ATS & CRM

Candidate Task, Event, Note

1:1
Fully supported

flair 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

maps to

Bullhorn ATS & CRM

JobOrder (active postings only)

1:1
Fully supported

flair 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)

maps to

Bullhorn ATS & CRM

Custom Objects (Bullhorn)

1:1
Fully supported

flair 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)

maps to

Bullhorn ATS & CRM

Not migrated — documented for rebuild

lossy
Fully supported

flair 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.

Gotchas + challenges

What specifically takes care here

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 logo

flair.hr gotchas

High

Career portal migration requires manual flair support intervention

Medium

Time tracking data model varies by flair version

Medium

Custom objects and fields require schema inspection before mapping

Low

Payroll data migration does not include live payroll runs

Bullhorn ATS & CRM logo

Bullhorn ATS & CRM gotchas

High

ATS Growth edition has no API access

High

Attachments excluded from CSV bulk exports

Medium

Custom Object limits vary sharply by edition

Medium

Opportunity pipeline stages are recruitment-specific

Low

Resume parse quality varies by document format

Pair-specific challenges

  • Bullhorn has no native HR or employee object

    flair.hr stores employee records as Salesforce Contacts with employment-specific custom fields. Bullhorn does not have a native Employee object; the closest equivalent is Candidate (for recruiting) or ClientContact (for client company contacts). We cannot determine which mapping strategy the customer needs without a scoping conversation. Migrations that assume all Employees map to Candidates without customer input end up with the wrong entity model, requiring re-migration or manual cleanup in Bullhorn. We resolve this decision during discovery before any data extraction begins.

  • Custom objects require Bullhorn Support to provision

    Unlike Salesforce where admins create custom objects directly, Bullhorn requires customers to submit a Custom Object Setup Spreadsheet to Bullhorn Support to provision each custom object. Bullhorn supports up to 10 custom objects per entity on Front Office Growth/Enterprise (2 on ATS Growth) with 55 fields each. We coordinate custom object provisioning as part of the migration scope: we enumerate the required Bullhorn custom objects from the flair schema inspection, the customer submits the setup spreadsheet to Bullhorn Support, and we wait for provisioning before loading data into custom object fields. This adds 1-2 weeks to the timeline if not started early.

  • flair's time tracking model must be detected before mapping

    flair uses either a custom TimeEntry object or standard Salesforce Event/Task records for time tracking depending on the deployment version. Bullhorn has no native time tracking feature. We inspect the org schema during discovery to determine which time model is active, then decide whether to skip time entries (documenting them for the customer) or map them to a Bullhorn custom object if one has been provisioned. Mismatches between the detected model and the import script cause silent row failures if not caught upfront.

  • flair Career Portal pages cannot be exported as data

    flair's career portal builder pages and branded job posting templates are not exportable as data artifacts. The career portal migration path requires manual flair support intervention to activate the new portal builder and preserve the old URL, with a hard sunset deadline that already passed in March 2024 for legacy pages. We migrate active job posting content as JobOrder records, but the branded career portal pages, custom styling, and application form configurations must be rebuilt by the customer in Bullhorn's careers site builder or a third-party careers page platform.

  • flair Workflows (Salesforce Flow) do not migrate to Bullhorn workflows

    flair onboarding workflows, approval chains, and performance review step sequences are implemented as Salesforce Flow records. Bullhorn's workflow builder uses a different paradigm (step-based recruiting actions, not record-triggered automation). We do not migrate Flow records as code. We inspect the flair org during discovery, enumerate every active Flow with its trigger and steps, and deliver a written Flow inventory document with recommended Bullhorn workflow equivalents. The customer's Bullhorn admin or an implementation partner rebuilds the workflows post-migration.

Migration approach

Six steps for a successful flair.hr to Bullhorn ATS & CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

flair.hr logo

flair.hr

Source

Strengths

  • 100+ native integrations including Salesforce products, Slack, LinkedIn, DATEV, and multiple HR platforms (Personio, BambooHR, HiBob).
  • Salesforce-grade data security and infrastructure, giving enterprise customers confidence in compliance and uptime.
  • Flexible, modular all-in-one covering recruiting, onboarding, time tracking, performance, payroll, and engagement.
  • Custom workflow builder with step sequencing and approval chains managed via Salesforce Flow.
  • Position management with automatic hierarchy syncing, supporting succession planning and headcount forecasting.

Weaknesses

  • Requires Salesforce infrastructure knowledge — organizations without Salesforce licenses or admin capacity may struggle with customization.
  • Pricing is not publicly published, making competitive evaluation and budget planning difficult without a sales call.
  • No self-service bulk data export — customers depend on support requests or API access to retrieve their data.
  • Advanced features are gated by tier, with some analytics and customization options available only on higher-priced plans.
  • Implementation takes 4–8 weeks, which is longer than many cloud HR competitors with faster setup wizards.
Bullhorn ATS & CRM logo

Bullhorn ATS & CRM

Destination

Strengths

  • Unified ATS and CRM on one platform purpose-built for staffing agencies, eliminating separate tools for candidates and clients.
  • Automated resume parsing extracts structured candidate data—contact details, work history, skills—into searchable profiles instantly.
  • Native placement and split-billing model handles contract staffing workflows including start/end dates and overtime rules.
  • Bullhorn Recruitment Cloud Marketplace offers 100+ pre-validated third-party integrations spanning the full recruiting lifecycle.
  • 24/7 global support coverage from 350+ support staff with dedicated account management included at all tiers.

Weaknesses

  • Widely regarded as old and bloated with an unintuitive interface and steep learning curve for new recruiters.
  • Slow page loads and performance lag cited in over 200 verified G2 reviews during high-volume recruiting periods.
  • Pricing is opaque—custom-negotiated per organization with significant upfront implementation fees that vary by deal.
  • ATS Growth edition excludes API access entirely, preventing automated data export without upgrading first.

Complexity grading

How hard is this migration?

Standard HRMS migration. All 7 core objects map 1:1 between flair.hr and Bullhorn ATS & CRM.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across flair.hr and Bullhorn ATS & CRM.

  • Object compatibility

    A

    All 7 core objects map 1:1 between flair.hr and Bullhorn ATS & CRM.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    7-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    flair.hr: Salesforce API limits apply — not publicly documented by flair separately from standard Salesforce platform limits.

  • Data volume sensitivity

    A

    flair.hr exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your flair.hr to Bullhorn ATS & CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about flair.hr to Bullhorn ATS & CRM data migrations

Answers to the questions buyers ask most during flair.hr to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most migrations land between four and six weeks for straightforward cases with fewer than 5,000 candidate records and no custom flair objects requiring Bullhorn custom object provisioning. Migrations with full absence history, performance review records, large document attachment volumes, or organizational structures requiring custom object setup run eight to twelve weeks because of Bullhorn custom object provisioning lead time (1-2 weeks via Bullhorn Support), document batch processing, and entity-dependency resolution.

Adjacent paths

Related migrations to explore

Ready when you are

Move from flair.hr.
Land in Bullhorn ATS & CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day