HRMS migration
Field-level mapping, validation, and rollback between Rival and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Rival
Source
Bullhorn ATS & CRM
Destination
Compatibility
7 of 12
objects map 1:1 between Rival and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from Rival to Bullhorn is a cross-category migration from an all-in-one HRMS into a staffing-specific ATS and CRM. Rival does not publish API documentation or a self-serve export endpoint, so every migration requires coordinated access through Rival's internal tools and support team. We request a structured data export during scoping, validate the schema against Rival's live customer instance, then transform and load into Bullhorn's Candidate, ClientCorporation, JobOrder, and Placement objects via the REST API. Bullhorn stores placement chains as a deeply relational set of records (Candidate → JobSubmission → Placement) connected through foreign keys, which requires strict dependency ordering during import. Custom Objects on Bullhorn must be provisioned by Bullhorn Support using a setup spreadsheet before the API can write to them. We do not migrate Rival workflows, onboarding task sequences, or learning module content as code; we deliver a written inventory of these for the customer's admin to rebuild in Bullhorn or a complementary tool.
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 Rival 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.
Rival
Employee
Bullhorn ATS & CRM
Candidate
1:1Rival employee records map to Bullhorn Candidate. Core fields (firstName, lastName, email, title, department, hireDate) translate directly. Rival custom fields discovered during schema discovery phase require per-migration field-mapping to Bullhorn Candidate customObject fields. Candidate is the primary person record in Bullhorn and must be loaded before any JobSubmission or Placement records because Placement references Candidate via foreign key. We preserve Rival employee IDs in a custom field rival_employee_id__c on Candidate for audit traceability.
Rival
Organizational Structure (Departments)
Bullhorn ATS & CRM
ClientCorporation + Department
1:manyRival's department and reporting-line hierarchy is decomposed into Bullhorn ClientCorporation (for organizational units with client or company relationships) and Bullhorn Department (for internal org structure). Reporting relationships stored as manager-employee links in Rival are preserved as a custom field rival_manager_id__c on Candidate, with a post-migration script that resolves the reference to the manager's Bullhorn Candidate record.
Rival
Compensation History
Bullhorn ATS & CRM
Candidate Custom Object (customObject1s through customObject10s)
1:manyRival effective-dated compensation rows (salary, bonus, equity, benefits plan) map to Bullhorn Custom Objects attached to Candidate. Each effective_date row becomes a separate Custom Object record with compensation_effective_date__c, base_salary__c, bonus_target__c, and benefits_tier__c fields. Bullhorn Support must provision the Custom Object via the setup spreadsheet before we can write to it; this adds 5-10 business days to the project timeline and is done before migration execution begins.
Rival
PTO Balances
Bullhorn ATS & CRM
Candidate Custom Object or Note
lossyRival PTO balances are current-state snapshots at migration time. We write these as a single Custom Object record per Candidate with fields pto_balance_hours__c, pto_accrual_rate__c, and pto_snapshot_date__c. Ongoing accruals after migration are handled manually or through Bullhorn's third-party payroll integrations post-migration. Bullhorn does not have a native PTO accrual engine; this is an HR-administration gap that Bullhorn expects to be filled by external HRIS or payroll tools.
Rival
Benefits Enrollment
Bullhorn ATS & CRM
Candidate Custom Object
1:1Rival benefits data (plan name, coverage tier, enrollment date, carrier) migrates to Bullhorn Custom Object fields on Candidate. Carrier-specific plan IDs do not map 1:1 to Bullhorn because Bullhorn is a staffing ATS, not an HRIS, and has no native benefits administration module. We map what exists (plan name, tier, enrollment date) and flag carrier-specific IDs for manual reconciliation post-migration.
Rival
Job Titles and Departments
Bullhorn ATS & CRM
Candidate title + Department
1:1Job title and department assignments on Rival employee records map directly to Candidate.title and the Bullhorn Department lookup. Title history in Rival is preserved as a Note on the Candidate record if the customer requires the full history; the current title is the primary field.
Rival
Locations
Bullhorn ATS & CRM
Candidate address + ClientCorporation address
1:1Rival location fields (office address, city, state, remote designation) map to Candidate address fields in Bullhorn. If Rival stores company-wide office locations separate from employee assignments, we map those to ClientCorporation addresses. Remote or work-from-home designations migrate as a text field rather than a structured picklist unless Bullhorn's schema includes a remote-friendly designation field.
Rival
Users and Roles
Bullhorn ATS & CRM
User
1:1Rival user accounts with admin, manager, and employee role types map to Bullhorn User records. Rival role names (Admin, Manager, Employee) map to Bullhorn permission sets or profile assignments. We extract distinct user records referenced on employee profiles and match by email against Bullhorn Users. Any Rival user without a Bullhorn User counterpart goes to a reconciliation queue for the customer's Bullhorn admin to provision.
Rival
Documents (flagged for manual handling)
Bullhorn ATS & CRM
ContentDocument
1:1Rival employee documents (offer letters, contracts, ID scans) are binary blobs with no documented export endpoint. We cannot guarantee document fidelity in a self-serve migration. We export document filenames and associate them with employee IDs in a mapping file for the customer's admin to re-upload manually post-migration. This is documented as a separate workstream with an estimated manual effort based on document count.
Rival
Custom Fields (discovered per-migration)
Bullhorn ATS & CRM
Custom Objects on Candidate
lossyRival custom fields vary by customer organization and have no stable public schema. We discover the live schema during scoping by coordinating with the customer's Rival administrator, building a per-migration field-mapping table before executing any writes. Bullhorn custom fields live on Custom Objects (customObject1s through customObject10s) that must be provisioned by Bullhorn Support via the setup spreadsheet. Each Custom Object supports up to 55 fields with limits on checkbox, dropdown, and text field counts per Bullhorn KB.
Rival
Effective-Dated Changes
Bullhorn ATS & CRM
Custom Object historical records
1:manyRival stores salary changes, title changes, and org moves as effective-dated events rather than immutable snapshots. We extract the full effective-dated history and write each row as a separate Custom Object record on the Candidate with an effective_date field, preserving the sequence. This is distinct from Bullhorn's standard Audit History, which tracks field changes after they occur in Bullhorn rather than importing historical changes.
Rival
Onboarding Task Sequences
Bullhorn ATS & CRM
Inventory document (not migrated)
1:1Rival onboarding task automation sequences are not migrated as code. We extract a list of active onboarding workflows, the tasks within each, the stagger logic (start date offset, completion dependencies), and any conditional rules. This is delivered as a written inventory for the customer's Bullhorn admin or implementation partner to rebuild using Bullhorn Automation (Herefish) or a third-party onboarding tool. Bullhorn's native task management does not include the staggered start-date logic that Rival's automation provides.
| Rival | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Employee | Candidate1:1 | Fully supported | |
| Organizational Structure (Departments) | ClientCorporation + Department1:many | Fully supported | |
| Compensation History | Candidate Custom Object (customObject1s through customObject10s)1:many | Mapping required | |
| PTO Balances | Candidate Custom Object or Notelossy | Mapping required | |
| Benefits Enrollment | Candidate Custom Object1:1 | Mapping required | |
| Job Titles and Departments | Candidate title + Department1:1 | Fully supported | |
| Locations | Candidate address + ClientCorporation address1:1 | Fully supported | |
| Users and Roles | User1:1 | Mapping required | |
| Documents (flagged for manual handling) | ContentDocument1:1 | Fully supported | |
| Custom Fields (discovered per-migration) | Custom Objects on Candidatelossy | Fully supported | |
| Effective-Dated Changes | Custom Object historical records1:many | Fully supported | |
| Onboarding Task Sequences | Inventory document (not migrated)1:1 | 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.
Rival gotchas
No publicly documented export API for self-serve data extraction
Documents and binary attachments are not exportable via standard means
Custom fields have no stable schema for automated mapping
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 export coordination
We audit the Rival customer instance through coordinated access with Rival's support team, extracting the full employee record schema including any custom fields, department structure, compensation history rows, PTO balances, benefits enrollment data, and document filenames. We simultaneously audit the Bullhorn destination instance: edition tier (ATS, ATS Growth, Front Office Growth, or Enterprise), existing Custom Object configuration, Department structure, and User roster. The discovery output is a written migration scope, a field-mapping table for every Rival source field, and confirmation of the Rival export format (CSV or JSON) and timeline.
Bullhorn Custom Object provisioning
We submit a Bullhorn Support ticket with the Custom Object Setup Spreadsheet for each Custom Object required by the migration scope. This includes compensation history (salary, bonus, equity), PTO snapshot, and any Rival custom fields requiring a Bullhorn custom object target. Bullhorn Support typically takes 5-10 business days to provision the custom objects. We do not begin migration execution until custom objects are confirmed active in the Bullhorn instance, because API writes to non-provisioned custom objects fail silently or return opaque errors.
Sandbox migration and reconciliation
We run a full migration into a Bullhorn sandbox or a dev scratch org using a representative data subset (typically 10% of total volume). The customer's Bullhorn admin reviews record counts, spot-checks field values against the Rival source, and validates that Candidate records are correctly linked to their department and user assignments. Schema corrections, field-type mismatches, and mapping errors surface here. We do not proceed to production migration until the sandbox migration is signed off by the customer's admin.
User and department reconciliation
We extract every distinct Rival user referenced on employee profiles and match by email against Bullhorn's User table. Any Rival user without a Bullhorn User goes to a reconciliation queue. We also reconcile Rival departments against Bullhorn Departments, flagging any org units in Rival that have no Bullhorn equivalent and recommending a target structure. Bullhorn's Department entity does not support hierarchical nesting by default; if the customer's Rival org chart is multi-level, we document the hierarchy for manual reconstruction post-migration.
Production migration in dependency order
We run production migration in strict record-dependency order: Departments (no dependencies), Users (manual provisioning validated), ClientCorporations, Candidates (with rival_employee_id__c and custom field mappings resolved), JobOrders, ClientContacts, Custom Object rows for compensation history (with effective_date sequencing preserved), PTO snapshots, and benefits enrollment data. Each phase emits a row-count reconciliation report before the next phase begins. We use Bullhorn REST API with batch chunking and exponential backoff to handle the 1,500 requests per minute rate limit.
Document re-upload handoff and onboarding inventory delivery
We deliver a document mapping file pairing each Rival document filename with its associated Candidate record (by rival_employee_id__c) and the Bullhorn Candidate's new Bullhorn ID. The customer's admin re-uploads documents manually via Bullhorn's document module. We also deliver the Onboarding Workflow Inventory: a written document listing every active Rival onboarding task sequence, its tasks, stagger logic, conditional rules, and recommended Bullhorn Automation (Herefish) equivalent. We do not rebuild these in Bullhorn; that work is handled by the customer's Bullhorn admin or implementation partner as a separate engagement.
Platform deep dives
Rival
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. 2 of 7 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Rival and Bullhorn ATS & CRM.
Object compatibility
2 of 7 objects need a mapping; the rest are 1:1.
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
Rival: N/A — no public API.
Data volume sensitivity
Rival 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 Rival to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Rival 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 Rival
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.