HRMS migration

Migrate from Gem to Bullhorn ATS & CRM

Field-level mapping, validation, and rollback between Gem and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.

Gem logo

Gem

Source

Bullhorn ATS & CRM

Destination

Bullhorn ATS & CRM logo

Compatibility

58%

7 of 12

objects map 1:1 between Gem and Bullhorn ATS & CRM.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Gem to Bullhorn is a CRM-to-ATS structural migration. Gem centers on Candidates, Projects (sourcing groups), and Sequences (outreach cadences) as a talent sourcing layer. Bullhorn centers on Candidates, ClientCorporations (companies), JobOrders (requisitions), and Placements (placed hires) as a full staffing ATS and CRM. The core schema shift is that Gem's Project memberships (which candidates belong to which sourcing initiatives) have no direct Bullhorn equivalent, so we map them to a custom object or tagging strategy during scoping. Bullhorn's edition tier limits on custom objects (up to 10 on Front Office Growth and Enterprise, 2 on standard Bullhorn ATS, none on ATS Growth) require us to audit Gem's candidate custom fields against the destination tier before migration. Gem's Sequences are not exposed via API and cannot migrate; we deliver a written sequence inventory with step counts, A/B test logic, and a recommended Bullhorn Automation rebuild for each cadence. We use Bullhorn's REST API with pagination and field-mappings-aware imports to preserve all standard candidate fields, work history, education, and engagement records.

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

Gem logo

Gem

What's pushing teams away

  • Pricing at scale becomes opaque and expensive, with custom Growth and Enterprise tiers potentially exceeding $500-2,000 per seat per month.
  • Limited outreach channels (email, InMail, SMS only) with no phone enrichment, which constrains full-cycle recruiting strategies.
  • Annual contracts are required for most plans, leaving teams locked in with no true month-to-month flexibility.
  • Support responsiveness is slow according to multiple reviewers, with working through problems taking longer than expected.
  • Reporting features are limited, making it difficult to share insights efficiently with hiring managers.

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 Gem objects map to Bullhorn ATS & CRM

Each row shows how a Gem 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.

Gem

Candidate

maps to

Bullhorn ATS & CRM

Candidate

1:1
Fully supported

Gem's Candidate object (internally Prospect in Gem's UI) maps directly to Bullhorn's Candidate object. We preserve all standard fields: firstName, lastName, email, phone, LinkedIn URL, currentTitle, currentCompany, location, and the full work history and education sub-objects. Gem's linked_in_handle deduplication logic requires us to query existing Bullhorn Candidates by LinkedIn URL before insert and use update instead of create when a match is found, preventing duplicate records and preserving existing candidate data while applying new custom field values.

Gem

Project

maps to

Bullhorn ATS & CRM

CustomObject1 or Candidate Tags

many:1
Fully supported

Gem's Projects (grouped sourcing initiatives) have no direct Bullhorn equivalent. Bullhorn Candidates support tagging and custom objects. We map Project membership to Bullhorn Candidate custom fields or a CustomObject that stores the Project name, Project status, and date-added. If Bullhorn's custom object tier limit is reached (2 on Bullhorn ATS, 10 on Front Office Growth/Enterprise, none on ATS Growth), we fall back to a multi-select picklist using the Tags field or a freeform text field. The customer chooses the strategy during scoping based on their Bullhorn edition.

Gem

Custom Fields (Candidate)

maps to

Bullhorn ATS & CRM

Custom Fields or CustomObject Fields

lossy
Mapping required

Gem's candidate custom fields (single-select, multi-select, date, freeform text) map to Bullhorn custom fields on the Candidate entity or to Bullhorn CustomObject fields. Single-select and multi-select Gem fields map to Bullhorn DropDown and Multi-Select Picklist fields. Date fields map to Bullhorn Date fields. Freeform text fields map to Bullhorn Text fields but inherit Bullhorn's 255-character limit per field; fields exceeding this limit split across multiple text fields or stored in a Notes relationship. Bullhorn edition tier limits (10 custom objects with 55 fields each on Front Office Growth/Enterprise; 2 on Bullhorn ATS) are checked against Gem's custom field count before migration begins.

Gem

Emails and Activities

maps to

Bullhorn ATS & CRM

Note, Task, and Appointment

1:1
Mapping required

Gem's email, InMail, and SMS engagement records map to Bullhorn Note and Task objects. Emails migrate as Note records with the full email body and sender/recipient preserved. Calls migrate as Task with TaskSubtype = Call and duration stored in a custom Task field. Meetings and calendar events migrate as Appointment records. Each activity record links to the parent Candidate via the CandidateID field. Gem's activity timestamp preserves the original date for activity timeline ordering.

Gem

User (Owner)

maps to

Bullhorn ATS & CRM

User

1:1
Fully supported

Gem's Owner records map to Bullhorn User accounts. We resolve each Gem Owner by email match against Bullhorn's User table. Any Gem Owner without a matching Bullhorn User goes to a reconciliation queue for the customer's Bullhorn admin to provision before record import resumes. Bullhorn user roles and permissions (Recruiter, Sales, Hiring Manager, Admin) must be reconfigured at the destination because Gem and Bullhorn use different permission models.

Gem

ATS Positions (JobOrders)

maps to

Bullhorn ATS & CRM

JobOrder

1:1
Fully supported

Gem's ATS Position records (synced from linked ATS integrations) map to Bullhorn JobOrder. JobOrder title, description, status, and linked candidate associations migrate with the candidate mapping. Full ATS pipeline stage data from Gem depends on which ATS was connected; if Gem was used as the CRM layer over a homegrown or entry-level ATS, the JobOrder migration scope may be limited to whatever Gem stored.

Gem

Interviews and Scorecards

maps to

Bullhorn ATS & CRM

Note and CustomObject

1:1
Mapping required

Gem's interview data (from BrightHire integration for AI-generated scorecards or from integrated ATS tools) maps to Bullhorn Note records on the Candidate. BrightHire-specific interview scorecards may be stored in a separate Notes section if the integration was active; we migrate available interview notes and preserve interview date, interviewer name, and scorecard summary as Bullhorn Note content. Full AI-generated scorecard structure (rubric, ratings) may require a custom object if the customer wants structured data post-migration.

Gem

Work History

maps to

Bullhorn ATS & CRM

Candidate Work History (sub-object)

1:1
Fully supported

Gem's Candidate work history sub-records map to Bullhorn's Candidate Employment list. Each work history entry carries company name, job title, start date, end date, and description. Bullhorn supports multiple employment entries on a Candidate record with ordered display. We migrate work history entries in reverse chronological order as they appear in Gem.

Gem

Education

maps to

Bullhorn ATS & CRM

Candidate Education (sub-object)

1:1
Fully supported

Gem's Candidate education sub-records map to Bullhorn's Candidate Education list. Each education entry carries institution name, degree, field of study, graduation date, and notes. Bullhorn supports multiple education entries on a Candidate record. We preserve the full education history for compliance and client-facing candidate profiles.

Gem

Custom Fields (Project)

maps to

Bullhorn ATS & CRM

CustomObject Fields

lossy
Mapping required

Gem's Project custom fields (project-wide fields applied to all candidates in a sourcing initiative) require a dedicated Bullhorn CustomObject because Bullhorn does not have a native Project entity. If Bullhorn's CustomObject limit for the customer's edition has been consumed by other custom objects, we discuss reducing the project field scope or storing project fields as structured Note records attached to candidate groups. Project-level fields in Gem are not searchable or reportable in Gem; the customer should not expect different behavior in Bullhorn for this data.

Gem

Sequences

maps to

Bullhorn ATS & CRM

Bullhorn Automation

lossy
Not supported

Gem Sequences cannot be migrated because Gem does not expose sequence definitions via API. We deliver a written sequence inventory documenting each active Gem Sequence with its step count, step type (email, InMail, SMS), delay between steps, A/B test configuration (if any), and the candidate list or Project it was attached to. The inventory includes recommended Bullhorn Automation (formerly Herefish) rebuild steps for each cadence. Bullhorn Automation is a separate product licensing; the customer must ensure this is active before automation rebuild begins.

Gem

Workflows and Automations

maps to

Bullhorn ATS & CRM

Bullhorn Automation or Workflow Rules

lossy
Fully supported

Gem's automated workflow rules (property-triggered follow-up actions, task creation, field updates) are not exposed via API and cannot migrate. We deliver a written workflow inventory with each automation's trigger condition, actions, and recommended Bullhorn equivalent. Bullhorn Automation (separate license) handles outbound cadence automations; Bullhorn Workflow Rules (native, no separate license on Corporate and Enterprise) handle record-triggered actions like task assignment, email alerts, and field updates. The customer's Bullhorn admin rebuilds these post-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.

Gem logo

Gem gotchas

High

Sequences and workflows not exposed via API

High

LinkedIn handle deduplication blocks duplicate imports

Medium

AI credit limits vary by plan tier

Medium

Custom fields have different reportability and searchability

Low

Annual billing required for most plans

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

  • Gem Sequences and workflows are not exposed via API

    Gem does not expose sequence definitions or workflow automation rules through its API. All outreach sequences, A/B test configurations, and automated follow-up workflows must be manually rebuilt at the destination. We flag this during discovery and scope out sequence and workflow migration from the data transfer plan. We deliver a written inventory of every active Gem Sequence and Workflow with step details and recommended Bullhorn Automation rebuild steps, but the rebuild itself is outside migration scope and requires a separate Bullhorn Automation license.

  • Bullhorn edition tier limits custom objects before migration begins

    Bullhorn editions impose hard limits on custom objects: Front Office Growth and Enterprise allow up to 10 custom objects with 55 fields each; Bullhorn ATS allows 2 custom objects; ATS Growth has none. Gem's candidate custom fields and project custom fields must be audited against the destination Bullhorn edition before migration. If the customer's Bullhorn tier does not support the required custom object count, we scope the migration to the highest-tiered fields and flag overflow fields for manual post-migration entry or a Bullhorn edition upgrade.

  • Gem's LinkedIn handle deduplication triggers duplicate blocks on import

    Gem's API returns a 400 error with duplicate_candidate details when attempting to create a candidate with a linked_in_handle that already exists in the workspace. When migrating into Bullhorn (which is the destination here), we handle deduplication by querying existing Bullhorn Candidates by LinkedIn URL before insert. When migrating out of Gem to Bullhorn, the deduplication concern reverses: we must ensure Gem's export does not contain duplicates from Gem's own deduplication merges. We validate candidate uniqueness by email and LinkedIn URL before generating the migration export file.

  • Bullhorn custom fields require support ticket or field mapping setup

    Bullhorn custom objects must be requested via Bullhorn Support using a Custom Object Setup Sheet submitted as a support ticket. Custom fields on Bullhorn entities (Candidate, JobOrder, ClientCorporation) are set up by an admin user in the Field Mappings section. We coordinate with the customer's Bullhorn admin to pre-create custom fields before migration so that the import job does not target non-existent fields. Fields created as part of marketplace integrations or compliance functionality do not count toward the custom object limits.

  • Gem's freeform text custom fields are not searchable or reportable

    Gem's freeform text custom fields on Candidates are not searchable and not reportable within Gem. Bullhorn's standard text fields have a 255-character limit per field. During migration, freeform text fields longer than 255 characters require splitting across multiple text fields or archiving as Bullhorn Note records. The customer should not expect improved searchability or reportability for this data in Bullhorn if it was not available in Gem.

Migration approach

Six steps for a successful Gem to Bullhorn ATS & CRM data migration

  1. Discovery and edition verification

    We audit Gem's source data across candidates, projects, custom fields, activity history, interview data, active sequences, active workflows, and engagement volume. We pair this with a Bullhorn edition check: Bullhorn ATS (2 custom objects, 10GB storage, basic CRM) covers minimal custom field migrations; Front Office Growth (10 custom objects, 55 fields each, full CRM and ATS) covers most staffing agency migrations; Bullhorn Enterprise adds advanced reporting, SSO, and dedicated support. The discovery output is a written migration scope with candidate count, project count, custom field count, activity volume, and a Bullhorn edition recommendation if the customer has not yet selected a tier.

  2. Custom object and field provisioning coordination

    We coordinate with the customer's Bullhorn admin to pre-create all required custom objects via Bullhorn Support ticket and pre-create all required custom fields via Bullhorn's Field Mappings admin section before any data import begins. If Bullhorn's edition tier does not support the required custom object count, we scope the migration to the highest-priority fields and present options: upgrade Bullhorn edition, reduce custom field scope, or store overflow data as structured Note records. Custom object setup is outside FlitStack AI's scope and must be handled by the customer's Bullhorn admin or Bullhorn Support directly.

  3. Sandbox migration and reconciliation

    We run a full migration into a Bullhorn sandbox environment (or a staging subset of the production org) using production-like data volume. The customer's Bullhorn admin reconciles record counts (Candidates in, custom object records in, activities in), spot-checks 25-50 random candidate records against the Gem source, and validates custom field values on 10 records per custom field. Any mapping corrections, custom field overflow decisions, and project-to-custom-object strategy choices happen in staging before production migration begins.

  4. Owner and user provisioning verification

    We extract every distinct Gem Owner referenced on Candidate, Project, and engagement records and match by email against the Bullhorn destination's User table. Owners without a matching Bullhorn User go to a reconciliation queue. The customer's Bullhorn admin provisions any missing Users with the appropriate Bullhorn role (Recruiter, Sales, Hiring Manager, Admin) and ensures the migration user has the required API permissions. Migration cannot proceed past this step because OwnerID references are required on Candidate and JobOrder records.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Users (verified, not migrated), ClientCorporations (from Gem company data if present), Candidates (with LinkedIn URL deduplication resolved), JobOrders (from Gem ATS Position data), custom object records (with all parent Lookups validated), activities (Tasks, Notes, Appointments via Bullhorn REST API with pagination), and finally Project custom field data mapped to the designated CustomObject or tagging strategy. Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and automation rebuild handoff

    We freeze Gem writes during cutover, run a final delta migration of any records modified during the migration window, then enable Bullhorn as the system of record. We deliver the Sequence and Workflow inventory document to the customer's admin team with recommended Bullhorn Automation rebuild steps for each Gem Sequence and Bullhorn Workflow Rules equivalents for each Gem Workflow. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's recruiting team. We do not rebuild Gem Sequences or Workflows inside the migration scope; Bullhorn Automation licensing is a separate purchase and the rebuild itself is handled by the customer's Bullhorn admin or a Bullhorn implementation partner.

Platform deep dives

Context on both ends of the pair

Gem logo

Gem

Source

Strengths

  • All-in-one ATS + CRM + sourcing consolidates multiple recruiting tools into a single platform.
  • AI-powered candidate rediscovery surfaces qualified candidates from existing talent pools.
  • Automated outreach sequences with multi-channel support and A/B testing built natively.
  • BrightHire integration pulls AI-generated interview notes and scorecards directly into candidate records.
  • Large candidate database with 800M+ profiles for sourcing passive candidates.

Weaknesses

  • No phone enrichment limits outreach to email, InMail, and SMS only.
  • Annual billing required for most plans with no transparent month-to-month option.
  • AI credit limits on lower tiers cap heavy sourcing usage at 500 credits per month.
  • Steep learning curve for new users with workflows and outreach sequences.
  • Support responsiveness is a recurring complaint across multiple review sources.
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 Gem and Bullhorn ATS & CRM.

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

    All 7 core objects map 1:1 between Gem 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

    Gem: Not publicly documented.

  • Data volume sensitivity

    B

    Gem doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Gem 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 Gem to Bullhorn ATS & CRM data migrations

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

Can't find your answer?

Walk through your Gem to Bullhorn ATS & CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most Gem to Bullhorn migrations land between two and four weeks for accounts under 15,000 Candidates with fewer than 20 custom fields and no complex project-to-custom-object remapping. Migrations involving Bullhorn edition tier upgrades (to accommodate custom object count), large activity histories (over 300,000 engagement records), or multiple Gem ATS integrations that require JobOrder remapping move to six to ten weeks because of custom object provisioning coordination with Bullhorn Support and reconciliation testing.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Gem.
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