HRMS migration
Field-level mapping, validation, and rollback between Bullhorn ATS & CRM and Crelate. We move data and schema; workflows are rebuilt natively in Crelate.
Bullhorn ATS & CRM
Source
Crelate
Destination
Compatibility
11 of 12
objects map 1:1 between Bullhorn ATS & CRM and Crelate.
Complexity
BStandard
Timeline
2-3 weeks
Try the reverse
Overview
Bullhorn ATS & CRM and Crelate share a recruitment-focused data model—both treat Candidates and Companies as first-class objects—but the platforms diverge sharply on custom field capacity and object hierarchy. Bullhorn's ATS editions cap searchable custom objects at 2 per entity with 55 fields each, while Front Office editions allow 10 custom objects. Crelate imposes a hard 20-field limit per entity with no custom object support, forcing any Bullhorn custom object that functions as a child table (multiple certifications per candidate, multiple interview rounds per submission) to be flattened into custom fields, tags, or notes before migration. We audit the customer's Bullhorn edition during scoping, extract all custom object records via the REST API, transform multi-instance records into Crelate-compatible structures, and preserve resume file attachments that Bullhorn's CSV bulk export excludes. Workflows, automations, and Bullhorn Back Office billing records do not migrate; we deliver a written inventory of Bullhorn-specific configurations requiring rebuild at Crelate.
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.
Source platform
Bullhorn ATS & CRM platform overview
Scorecard, SWOT, gotchas, and pricing for Bullhorn ATS & CRM.
Destination platform
Crelate platform overview
Scorecard, SWOT, gotchas, and pricing for Crelate.
Data migration guide
The complete Crelate migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Source platform guide
Bullhorn migration guide
Understand the data you're exporting from Bullhorn ATS & CRM before mapping it.
Destination checklist
Crelate migration checklist
Pre- and post-cutover tasks for moving onto Crelate.
Source checklist
Bullhorn migration checklist
Exit checklist for unwinding your Bullhorn ATS & CRM setup cleanly.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Bullhorn ATS & CRM object lands in Crelate, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Bullhorn ATS & CRM
Candidate
Crelate
Contact
1:1Bullhorn Candidates map to Crelate Contacts. The Bullhorn Candidate is the primary ATS record storing parsed resume data, work history, skills, certifications, and status. We map standard fields (name, email, phone, address, skills) directly. Bullhorn's Candidate custom fields and CandidateList associations (submissions to jobs) migrate as Crelate custom fields and activity tags respectively. Resume file attachments require separate retrieval via Bullhorn's file reference API because CSV exports do not include attachments.
Bullhorn ATS & CRM
JobOrder
Crelate
Job
1:1Bullhorn JobOrders map to Crelate Jobs. JobOrder contains requirements, status, location, salary information, and links to Clients. We map standard job fields directly. Bullhorn's job pipeline stages (e.g., New, Interview, Offer, Extended) require a stage mapping table because Bullhorn's recruiting-specific stage names differ from Crelate's standard ATS pipeline terminology. We document the customer's stage names and build a custom mapping before import, preserving stage history as a Crelate activity tag if exact labels cannot be matched.
Bullhorn ATS & CRM
Client (ClientCorporation)
Crelate
Client Organization
1:1Bullhorn Clients (ClientCorporation) map to Crelate Client Organizations. This is Bullhorn's CRM company record representing the staffing agency's customer. Standard fields—company name, industry, address, website—map directly. The primary contact within each Client record migrates separately as a Crelate Contact linked to the Client Organization.
Bullhorn ATS & CRM
Contact
Crelate
Contact
1:1Bullhorn Contacts represent both client-side business contacts and candidate references. They share a schema but serve different roles. We separate Bullhorn Contacts by their entity type during migration to avoid confusion with Candidate records. Client-side contacts link to the Client Organization; candidate references link to the Candidate record. Email, phone, title, and company association migrate as standard fields.
Bullhorn ATS & CRM
Opportunity
Crelate
Opportunity (Pipeline Deal)
1:1Bullhorn Opportunities are CRM-level pipeline deals tied to Clients, representing sales pipeline stages distinct from the ATS submission flow. They map to Crelate Opportunities or pipeline deals. Bullhorn's recruiting-specific pipeline stages (Interview, Offer, Extended) differ from standard CRM terminology. We build a custom stage mapping table during scoping, documenting the customer's exact stage names and probability percentages. Stage history is preserved as a custom field at Crelate if exact labels cannot be matched.
Bullhorn ATS & CRM
Placement
Crelate
Placement
1:1Bullhorn Placements map to Crelate Placements. The Placement record links Candidate, JobOrder, and Client, with billing information including pay and charge rates. Contract placements carry overtime rules, start/end dates, and split-billing details. We preserve all placement billing fields including pay rate, charge rate, overtime multiplier, and billing frequency. Historical placements carry placement commission data that migrates as Crelate custom fields.
Bullhorn ATS & CRM
CandidateList (Job Submission)
Crelate
Candidate Submission / Activity Tag
1:1CandidateList represents a candidate's submission to a specific job, storing status within the recruitment pipeline (e.g., Submitted, Phone Screen, Interview, Offer, Placed). Bullhorn assigns each CandidateList a status within the Bullhorn job pipeline. We migrate submission status as Crelate activity tags on the candidate Contact record, linked to the destination Job. This preserves the candidate's journey through each job submission without requiring a dedicated submissions object.
Bullhorn ATS & CRM
Custom Object
Crelate
Custom Fields, Tags, or Notes
1:manyBullhorn custom objects (up to 10 per entity on Front Office editions, each with 55 fields) have no direct Crelate equivalent. Crelate supports a hard cap of 20 custom fields per entity with no child-table or custom object support. We audit every Bullhorn custom object during scoping. Single-instance custom object data (one record per candidate or job) flattens into Crelate custom fields. Multi-instance custom objects (e.g., multiple certifications per candidate, multiple interview rounds per job) are transformed into Crelate tags, notes (with structured text), or activity records depending on the customer's prioritization during scoping.
Bullhorn ATS & CRM
Task
Crelate
Task / Activity
1:1Bullhorn Tasks store to-dos with type, due date, status, and owner assignment across entities. They map cleanly to Crelate Task records. Bullhorn's ATS Growth edition caps API subscriptions at 50, which may limit bulk task retrieval; we handle this with pagination and batched retrieval. Standard task fields (subject, due date, status, priority, owner) migrate directly.
Bullhorn ATS & CRM
User (Owner / Recruiter)
Crelate
User
1:1Bullhorn Users are system accounts representing recruiters, sales staff, and administrators with assigned roles and permissions. User records include name, email, role, and department. We extract all Users and map them to Crelate Users by email. Recruiters without a matching Crelate User go to a reconciliation queue for the customer's admin to provision before record import resumes.
Bullhorn ATS & CRM
Attachment (Resume / File)
Crelate
Attachment (File)
1:1Bullhorn stores resume files, parsed documents, and communications as separate attachment entities accessible via the file reference API endpoints (/entityFiles/{entityType}/{entityId} and /file/{entityType}/{entityId}/{fileId}). Bullhorn's standard CSV export does not include attachments. We retrieve every attachment via Bullhorn's file reference API, map the file to the corresponding migrated Candidate or Contact record, and upload to Crelate. This step is explicitly planned because it requires API calls beyond the standard export and cannot be completed via CSV alone.
Bullhorn ATS & CRM
Lead (Bullhorn CRM Leads)
Crelate
Lead
1:1Bullhorn Lead records (distinct from Candidate) represent unqualified prospects in the CRM pipeline. They map to Crelate Leads if the customer maintains a separate lead queue. If the customer's Bullhorn workflow routes all prospects through the Candidate object, Leads may be empty and can be skipped. We confirm the customer's lead workflow during scoping.
| Bullhorn ATS & CRM | Crelate | Compatibility | |
|---|---|---|---|
| Candidate | Contact1:1 | Fully supported | |
| JobOrder | Job1:1 | Fully supported | |
| Client (ClientCorporation) | Client Organization1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Opportunity | Opportunity (Pipeline Deal)1:1 | Fully supported | |
| Placement | Placement1:1 | Fully supported | |
| CandidateList (Job Submission) | Candidate Submission / Activity Tag1:1 | Fully supported | |
| Custom Object | Custom Fields, Tags, or Notes1:many | Fully supported | |
| Task | Task / Activity1:1 | Fully supported | |
| User (Owner / Recruiter) | User1:1 | Fully supported | |
| Attachment (Resume / File) | Attachment (File)1:1 | Fully supported | |
| Lead (Bullhorn CRM Leads) | Lead1: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.
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
Crelate gotchas
120 req/min API rate limit throttles bulk migrations
20 custom field per-entity cap forces data model decisions
15,000-record export ceiling on single operations
Sequences and automation workflows do not migrate
API key is a querystring parameter, not a header
Pair-specific challenges
Migration approach
Discovery and Bullhorn edition audit
We audit the source Bullhorn instance across edition (ATS Growth/ATS/Corporate/Front Office), custom objects per entity, pipeline stages, engagement volume, and attachment count. Bullhorn ATS Growth editions are flagged immediately because API access is absent. We extract a full list of custom object schemas, field names, and record counts. We pair this with Crelate's schema requirements confirmation: the 20-field limit per entity, no custom object support, and supported object types. The discovery output is a written migration scope with a custom object rationalization plan and an explicit list of data elements that cannot migrate from Bullhorn ATS Growth.
Custom object transformation design
We design the transformation layer for every Bullhorn custom object that cannot map directly to Crelate. Single-instance data (one record per candidate, job, or placement) flattens into Crelate custom fields, prioritized by the customer during scoping. Multi-instance data (multiple certifications, multiple interview rounds, multiple compliance records) converts to Crelate tags (for categorical data), notes with structured text, or activity entries. We document every transformation decision in a mapping table that the customer reviews before any data moves. This step is the primary driver of timeline for migrations with heavy custom object usage.
API extraction and attachment retrieval
We extract all Bullhorn entities via the REST API: Candidates, JobOrders, Clients, Contacts, Opportunities, Placements, CandidateLists, Tasks, and Users. Bullhorn's REST API returns entity metadata including custom fields and custom object instances. For attachments, we call Bullhorn's file reference endpoints (/entityFiles/{entityType}/{entityId} and /file/{entityType}/{entityId}/{fileId}) to retrieve every resume and document. Bullhorn's ATS Growth edition is handled via CSV export with explicit documentation that attachments will not transfer. We paginate large result sets and implement rate-limit handling per Bullhorn's Fair Use Policy.
Crelate test migration and reconciliation
We run a full migration into a Crelate test environment using production-like data volume. The customer's recruitment lead reconciles record counts (Candidates in, Contacts in, Jobs in, Placements in), spot-checks 25-50 random records against the Bullhorn source, and reviews the custom field and tag assignments for transformed custom objects. The customer validates the opportunity stage mapping and placement billing fields. Any mapping corrections happen here, not in production. Crelate's own migration documentation (Discovery, Development, Testing, Verification, Launch) serves as our validation checklist.
Production migration in dependency order
We run production migration in record-dependency order: Users and Owners first (provisioned by the customer's Crelate admin), then Client Organizations, Contacts (with deduplication resolved), Candidates (with custom field assignments applied), Jobs, Opportunities with stage remapping, Placements with billing fields, CandidateList submission history as activity tags, Tasks, and finally attachments via file upload. Each phase emits a row-count reconciliation report before the next phase begins. Bullhorn writes are frozen during cutover, and we run a final delta migration of records modified during the migration window.
Cutover, validation, and workflow handoff
We enable Crelate as the system of record and deliver a written workflow and automation inventory to the customer's admin team. This document lists every Bullhorn workflow, automation trigger, and Bullhorn-specific configuration (e.g., Back Office billing rules, Herefish automations, Canvas reporting) requiring rebuild at Crelate. We do not rebuild Bullhorn workflows as Crelate automations inside the migration scope; that is a separate engagement. We support a one-week hypercare window where we resolve reconciliation issues raised by the recruiting team.
Platform deep dives
Bullhorn ATS & CRM
Source
Strengths
Weaknesses
Crelate
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. 1 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 Bullhorn ATS & CRM and Crelate.
Object compatibility
1 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
Bullhorn ATS & CRM: 1,500 req/min, 100,000 calls/month, 50 concurrent sessions, 50 subscriptions; ATS Growth edition has NO API access.
Data volume sensitivity
Bullhorn ATS & CRM 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 Bullhorn ATS & CRM to Crelate migration scoping. Not seeing yours? Book a call.
Walk through your Bullhorn ATS & CRM to Crelate migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Bullhorn ATS & CRM
Other ways to arrive at Crelate
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.