HRMS migration
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
Source
Bullhorn ATS & CRM
Destination
Compatibility
7 of 12
objects map 1:1 between Gem and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
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.
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 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
Bullhorn ATS & CRM
Candidate
1:1Gem'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
Bullhorn ATS & CRM
CustomObject1 or Candidate Tags
many:1Gem'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)
Bullhorn ATS & CRM
Custom Fields or CustomObject Fields
lossyGem'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
Bullhorn ATS & CRM
Note, Task, and Appointment
1:1Gem'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)
Bullhorn ATS & CRM
User
1:1Gem'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)
Bullhorn ATS & CRM
JobOrder
1:1Gem'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
Bullhorn ATS & CRM
Note and CustomObject
1:1Gem'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
Bullhorn ATS & CRM
Candidate Work History (sub-object)
1:1Gem'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
Bullhorn ATS & CRM
Candidate Education (sub-object)
1:1Gem'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)
Bullhorn ATS & CRM
CustomObject Fields
lossyGem'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
Bullhorn ATS & CRM
Bullhorn Automation
lossyGem 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
Bullhorn ATS & CRM
Bullhorn Automation or Workflow Rules
lossyGem'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.
| Gem | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Candidate | Candidate1:1 | Fully supported | |
| Project | CustomObject1 or Candidate Tagsmany:1 | Fully supported | |
| Custom Fields (Candidate) | Custom Fields or CustomObject Fieldslossy | Mapping required | |
| Emails and Activities | Note, Task, and Appointment1:1 | Mapping required | |
| User (Owner) | User1:1 | Fully supported | |
| ATS Positions (JobOrders) | JobOrder1:1 | Fully supported | |
| Interviews and Scorecards | Note and CustomObject1:1 | Mapping required | |
| Work History | Candidate Work History (sub-object)1:1 | Fully supported | |
| Education | Candidate Education (sub-object)1:1 | Fully supported | |
| Custom Fields (Project) | CustomObject Fieldslossy | Mapping required | |
| Sequences | Bullhorn Automationlossy | Not supported | |
| Workflows and Automations | Bullhorn Automation or Workflow Ruleslossy | 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.
Gem gotchas
Sequences and workflows not exposed via API
LinkedIn handle deduplication blocks duplicate imports
AI credit limits vary by plan tier
Custom fields have different reportability and searchability
Annual billing required for most plans
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 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.
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.
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.
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.
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.
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
Gem
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between Gem and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Gem and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between Gem 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
Gem: Not publicly documented.
Data volume sensitivity
Gem doesn't expose a bulk API — REST + parallelization used for high-volume runs.
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 Gem to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Gem
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.