HRMS migration
Field-level mapping, validation, and rollback between Eploy and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Eploy
Source
Bullhorn ATS & CRM
Destination
Compatibility
11 of 14
objects map 1:1 between Eploy and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Eploy to Bullhorn is a structural migration across two ATS platforms with fundamentally different object models. Eploy organises hiring around Jobs, Candidates, Workflow Stages, Hiring Manager Portals, and an integrated Onboarding module. Bullhorn uses a Jobs-to-Candidates-to-Placement chain anchored by a separate Company entity and a Work Order or Job Order object. We resolve the stage model gap during scoping by building a custom mapping table from Eploy's organisation-specific stages to Bullhorn's Work Order statuses, preserve the original stage transition timestamps as audit data, and handle the document attachment pipeline (Eploy serves resume URLs that must be downloaded then uploaded to Bullhorn as binary blobs). Workflow automations and Eploy's onboarding module do not migrate as code; we deliver a written inventory of both for the customer's Bullhorn admin to rebuild in Bullhorn Automation or the Bullhorn Onboarding module post-migration.
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 Eploy 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.
Eploy
Job Requisition
Bullhorn ATS & CRM
Job Order
1:1Eploy Job records (title, department, location, salary bands, workflow assignment) map 1:1 to Bullhorn Job Order records. Custom job fields from Eploy migrate to Bullhorn custom fields on Job Order. The job-to-workflow linkage in Eploy maps to the Job Order's status and custom status picklist values that we configure during Bullhorn schema design.
Eploy
Candidate
Bullhorn ATS & CRM
Candidate
1:1Eploy Candidate records (contact details, skills, notes, application history, status) map directly to Bullhorn Candidate. A Bullhorn Candidate does not require a Company record to exist first, but we create Client Corporation records during migration to enable the placement chain. Duplicates are resolved by email deduplication key during import.
Eploy
Workflow Stages
Bullhorn ATS & CRM
Job Order Status / Custom Status Picklist
lossyEploy workflow stages are organisation-specific with no canonical list in the API; we discover them by aggregating distinct stage values across active jobs during discovery. Each Eploy stage maps to a Bullhorn Job Order status or a custom status picklist value. Stage transition timestamps preserve as a separate audit object linked to the candidate's submission record.
Eploy
Hiring Manager Portal
Bullhorn ATS & CRM
User Assignment on Job Order / Contact
1:1Hiring manager assignments in Eploy (specific users tied to jobs and workflow stages) map to Bullhorn Job Order ownership and the primary Contact record on the Client Corporation. Role-based permissions that Eploy grants at the portal level may not translate directly to Bullhorn's permission set model; we flag these for Bullhorn admin review during scoping.
Eploy
Offer
Bullhorn ATS & CRM
Placement (Lead泪水) or Job Order extended fields
1:1Eploy Offer records (salary, start date, role details, e-signature status) map to Bullhorn Placement records once the candidate is placed against a Job Order. If placement has not occurred at migration time, we create a Candidate custom field set capturing the offer details and flag the record for the Bullhorn team to convert to a Placement upon hire.
Eploy
Onboarding Records
Bullhorn ATS & CRM
Bullhorn Onboarding Module (separate)
1:1Eploy's onboarding module (reference collection, contracts, compliance documents) lives in a separate schema that may not fully expose all fields via the standard API. We query the onboarding endpoints explicitly during discovery, migrate what is accessible, and recommend a manual CSV export for records with partial schemas. Bullhorn Onboarding (part of Bullhorn One) is a separate licensed module; we document the onboarding data gap and map the record structure for re-entry post-migration.
Eploy
Employee Referral
Bullhorn ATS & CRM
Candidate custom referral fields / Referral source picklist
1:1Eploy referral records (linking an employee to a referred candidate with reward status) map to Bullhorn Candidate records with a referral source custom picklist field and a referring employee custom lookup field. Reward status migrates as a text field; the monetary reward value does not transfer unless a custom numeric field is created in Bullhorn.
Eploy
Talent Pool
Bullhorn ATS & CRM
Candidate Tag or Candidate Segment
1:1Eploy Talent Pools (saved candidate collections for future roles) migrate as Bullhorn Candidate Tags or Segments. Pool membership preserves as a tag value on each Candidate record, enabling the Bullhorn team to recreate Talent Pool views through Bullhorn's built-in search and filter capabilities. We map pool names to tag values during scoping with customer confirmation.
Eploy
Custom Properties (Job)
Bullhorn ATS & CRM
Job Order Custom Fields
lossyOrganisations add custom fields to Eploy Job records. We detect the custom property schema during discovery and create corresponding custom fields in Bullhorn on the Job Order entity via Bullhorn's custom fields API. Custom field type mapping (text, number, date, picklist) is confirmed with the customer before schema deployment.
Eploy
Custom Properties (Candidate)
Bullhorn ATS & CRM
Candidate Custom Fields
lossyEploy custom candidate properties migrate to Bullhorn Candidate custom fields. Multi-select checkbox properties in Eploy map to Bullhorn multi-select picklists. Long-text notes migrate to Bullhorn Candidate custom text area fields. Custom field name collisions with Bullhorn standard fields are resolved by appending a suffix during scoping.
Eploy
Assessment
Bullhorn ATS & CRM
Candidate custom assessment fields or note attachment
1:1Assessment scores and results from Eploy attach to candidate records. We migrate structured assessment data as custom fields on the Candidate object. Visual or scored assessments that do not fit a typed field migrate as a Note record attached to the Candidate with the assessment content preserved in the body. The assessment provider reference migrates as a text field.
Eploy
Document / Attachment (Resume)
Bullhorn ATS & CRM
Candidate Attachment (binary blob)
1:1Eploy serves resume and document URLs rather than inline blobs. We enumerate all attachment URLs, download each file to temporary storage, then upload each to Bullhorn's attachment endpoint as a multipart/form-data binary blob. Large volumes of attachments (hundreds per candidate in compliance-heavy sectors) extend migration time. Filenames and the associated Candidate record link are preserved. This two-pass pattern is required because Bullhorn does not accept redirect URLs as attachment sources.
Eploy
Communication History (Email/SMS)
Bullhorn ATS & CRM
Candidate Note or Communication History
1:1Eploy email and SMS threads tied to candidates migrate as Note records in Bullhorn linked to the Candidate. Formatting may flatten in transit. SMS content migrates as a separate Note record with an sms_thread__c custom flag for Bullhorn admin identification. Timestamps are preserved in the Note's created date for timeline ordering.
Eploy
Application / Submission History
Bullhorn ATS & CRM
Candidate Job Submission records
1:1Each Eploy candidate-to-job submission creates a Candidate Job Submission record in Bullhorn linking the Candidate to the Job Order. We preserve the Eploy submission date and the workflow stage at submission time as custom fields on the Bullhorn submission record. Multiple submissions for the same candidate to different jobs create separate submission records.
| Eploy | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Job Requisition | Job Order1:1 | Fully supported | |
| Candidate | Candidate1:1 | Fully supported | |
| Workflow Stages | Job Order Status / Custom Status Picklistlossy | Mapping required | |
| Hiring Manager Portal | User Assignment on Job Order / Contact1:1 | Fully supported | |
| Offer | Placement (Lead泪水) or Job Order extended fields1:1 | Fully supported | |
| Onboarding Records | Bullhorn Onboarding Module (separate)1:1 | Mapping required | |
| Employee Referral | Candidate custom referral fields / Referral source picklist1:1 | Fully supported | |
| Talent Pool | Candidate Tag or Candidate Segment1:1 | Fully supported | |
| Custom Properties (Job) | Job Order Custom Fieldslossy | Fully supported | |
| Custom Properties (Candidate) | Candidate Custom Fieldslossy | Fully supported | |
| Assessment | Candidate custom assessment fields or note attachment1:1 | Fully supported | |
| Document / Attachment (Resume) | Candidate Attachment (binary blob)1:1 | Fully supported | |
| Communication History (Email/SMS) | Candidate Note or Communication History1:1 | Fully supported | |
| Application / Submission History | Candidate Job Submission records1: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.
Eploy gotchas
API rate limits cap daily call volumes per tier
API keys are tied to individual user records
Onboarding module data may live in a separate schema
Custom workflow stages require mapping table creation
Document attachments require separate download-then-upload passes
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 Eploy API scoping
We audit the source Eploy tenant across API tier (1 to 4, determining daily call limits), active job count, candidate volume, custom property schemas on Jobs and Candidates, talent pool count, onboarding module schema, referral records, and document attachment volume. We identify the Eploy API key's associated service account and confirm read permissions across all objects. We also enumerate the distinct workflow stage values across active jobs to begin the stage mapping table. The discovery output is a written migration scope document with record counts per object, API rate assessment, and a preliminary stage mapping table.
Stage mapping design and Bullhorn schema preparation
We build the complete stage mapping table by aggregating all distinct Eploy workflow stage names and proposing Bullhorn Job Order status and custom status picklist values for each. Customer confirmation of the stage map is required before schema work begins. We then design the Bullhorn destination schema: custom fields on Job Order and Candidate (mapped from Eploy custom properties), Client Corporation records created from Eploy company references, custom referral and assessment fields, and any custom objects. Schema is deployed to a Bullhorn Sandbox first for validation.
Sandbox migration and reconciliation
We run a full migration into Bullhorn Sandbox using production-like data volumes. The customer's Bullhorn admin reconciles record counts (Jobs in, Candidates in, Offers in, Talent Pool memberships in, Documents in), spot-checks 25 to 50 random candidate records against the Eploy source, and verifies the stage mapping produces expected Bullhorn status values. Stage mapping corrections and custom field adjustments happen here, not in production. Document attachment counts are verified against the source URL list.
Document attachment pre-processing
Before production migration begins, we enumerate all document attachment URLs from Eploy and download each file to secure temporary storage. We verify file integrity (MD5 checksum), resolve any redirect chains, and stage the files for Bullhorn upload in dependency order (after candidate records exist in Bullhorn so that the parent record ID is available). For high-volume document sets, we parallelise downloads within the Eploy API rate limit (10 req/sec burst) using exponential backoff on 429 responses.
Production migration in dependency order
We run production migration in record-dependency order: Client Corporation records (from Eploy companies referenced in jobs and candidate history), Job Orders (from Eploy Job requisitions with status and custom fields), Candidates (with Client Corporation lookups resolved), Offer and referral data (as custom fields on Candidate), Talent Pool memberships (as Candidate tags), Application history (as Candidate Job Submission records), Assessment data (as custom fields and Note records), Communication history (as Note records), then document attachments (as Bullhorn binary blobs linked to Candidate). Each phase emits a row-count reconciliation report before the next phase begins. We throttle to stay within the Eploy API's daily call tier and implement checkpointing to resume from the last successful record on any 429 response.
Cutover, validation, and workflow rebuild handoff
We freeze Eploy 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 Eploy workflow rule inventory and Bullhorn Automation rebuild guide to the customer's Bullhorn admin team. We support a one-week hypercare window where we resolve any reconciliation issues raised by the recruitment team. We do not rebuild Eploy workflow rules as Bullhorn Automation inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
Eploy
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between Eploy and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Eploy and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between Eploy 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
Eploy: 10 requests per second; daily tier caps of 1,000 / 5,000 / 10,000 / 50,000 depending on subscribed tier.
Data volume sensitivity
Eploy 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 Eploy to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Eploy 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 Eploy
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.