HRMS migration
Field-level mapping, validation, and rollback between Crelate and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Crelate
Source
Bullhorn ATS & CRM
Destination
Compatibility
9 of 16
objects map 1:1 between Crelate and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
2-4 weeks
Try the reverse
Overview
Moving from Crelate to Bullhorn is a data-model compression migration disguised as a vendor switch. Crelate runs a unified ATS+CRM schema where Contacts, Companies, Jobs, and Opportunities share a flat structure; Bullhorn uses a deeply relational staffing model with separate Candidate, ClientContact, ClientCorporation, JobOrder, JobSubmission, and Placement objects that encode the full recruiting lifecycle. We resolve the schema expansion during scoping, map Crelate's unified contact records to Bullhorn's Candidate (for job seekers) and ClientContact (for employer contacts) objects, and sequence Placements last so that their parent JobOrder and Candidate references exist first. Crelate's 20 custom field per-entity cap forces a field prioritization exercise before any data moves; we surface that during discovery rather than mid-migration. Bullhorn's module-based pricing (reporting, support, automation) adds separate line items beyond the base per-seat rate, which we disclose during scoping so the destination cost reflects the full contract. Sequences, automations, and Crelate's Activity add-on tiers do not migrate; we deliver a written map for Bullhorn rebuild.
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
Crelate platform overview
Scorecard, SWOT, gotchas, and pricing for Crelate.
Destination platform
Bullhorn ATS & CRM platform overview
Scorecard, SWOT, gotchas, and pricing for Bullhorn ATS & CRM.
Data migration guide
The complete Bullhorn migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Source platform guide
Crelate migration guide
Understand the data you're exporting from Crelate before mapping it.
Destination checklist
Bullhorn migration checklist
Pre- and post-cutover tasks for moving onto Bullhorn ATS & CRM.
Source checklist
Crelate migration checklist
Exit checklist for unwinding your Crelate 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 Crelate 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.
Crelate
Contact (candidate records)
Bullhorn ATS & CRM
Candidate
1:1Crelate Contacts where the record type indicates a job seeker map to Bullhorn Candidate. We identify candidate records by examining Crelate's contact type property, tag assignments, and job submission history. Standard Candidate fields (firstName, lastName, email, phone, address) map directly. The original Crelate contact ID is preserved in a customText field for reconciliation. If Crelate's Activities module is enabled, candidate notes and tasks migrate as Bullhorn Note and Task records linked to the Candidate entity.
Crelate
Contact (employer contacts)
Bullhorn ATS & CRM
ClientContact
1:1Crelate Contacts associated with Companies that represent employers map to Bullhorn ClientContact. The mapping resolves the ClientContact's clientCorporation reference to the migrated ClientCorporation record by matching on company name or Crelate company ID. ClientContact fields (firstName, lastName, email, phone, title) map directly. Custom fields on Crelate employer contacts migrate to ClientContact custom fields if under the 20-field destination cap.
Crelate
Company
Bullhorn ATS & CRM
ClientCorporation
1:1Crelate Companies map to Bullhorn ClientCorporation. This is the first object imported because ClientCorporation is a required dependency for JobOrder, ClientContact, and Placement. Company name maps to clientCorporationName, address fields map to address fields, and website maps to url. We deduplicate on company name during import and flag any Crelate company that has no associated employer contacts or job orders for manual review before parent record sequencing continues.
Crelate
Job
Bullhorn ATS & CRM
JobOrder
1:1Crelate Jobs map to Bullhorn JobOrder. The ClientCorporation reference resolves to the migrated ClientCorporation record by name or ID match. Crelate job status (Open, Closed, Filled) maps to Bullhorn jobStatus (Open, Interview, Offer, Extended, Placed, Closed). Custom fields on Jobs migrate to JobOrder custom fields subject to the 20-field cap. We preserve the Crelate job ID in a custom field for placement chain resolution later.
Crelate
Placement
Bullhorn ATS & CRM
Placement
lossyCrelate Placements map to Bullhorn Placement. This is the last object imported because Placements require existing JobOrder, Candidate, and ClientCorporation records to satisfy foreign key constraints. We resolve the parent JobOrder by matching on the preserved Crelate job ID in the JobOrder custom field, the Candidate by matching on name and email, and the ClientCorporation by name. Placement pay rate, bill rate, fee percentage, start date, and end date migrate directly. Crelate's 15,000-record export ceiling does not typically affect Placements because volume is lower, but we check during scoping if the customer has exceptionally high placement counts requiring segmented export.
Crelate
Opportunity
Bullhorn ATS & CRM
JobOrder or Note (scope-dependent)
lossyCrelate Opportunities track business development activity in the CRM layer. Bullhorn does not have a direct Opportunity object equivalent; business development tracking in Bullhorn is handled through JobOrder pipeline stages and Placement fees. We map Crelate Opportunities to Bullhorn JobOrder records if the Opportunity represents a job to be filled, or to Note records attached to the relevant ClientCorporation if it represents a qualified lead without an active job order. The customer chooses the mapping strategy during scoping based on how they use Crelate Opportunities.
Crelate
Custom Fields (Contacts)
Bullhorn ATS & CRM
Custom Fields (Candidate + ClientContact)
lossyCrelate's 20 custom fields per entity cap is the primary constraint on this mapping. We audit the customer's Crelate custom field inventory during discovery and rank fields by usage frequency, reporting dependency, and business criticality. Fields above the cap are flagged for customer decision: migrate only the top 20, split some fields into multi-value text storage, or accept data loss. We configure the Bullhorn customText and custom1-99 fields via Bullhorn's Field Mappings tool before import and map each Crelate custom field to its Bullhorn equivalent by name and type.
Crelate
Custom Fields (Companies)
Bullhorn ATS & CRM
Custom Fields (ClientCorporation)
lossyCrelate Company custom fields migrate to ClientCorporation customText fields. Same 20-field cap applies. We flag any Crelate company with more than 20 custom fields during scoping and provide a ranked field inventory for the customer to decide which fields to prioritize. Industry classification, staffing-specific compliance fields, and billing terms are typically higher priority than internal notes fields for staffing agencies.
Crelate
Custom Fields (Jobs)
Bullhorn ATS & CRM
Custom Fields (JobOrder)
lossyCrelate Job custom fields migrate to JobOrder customText fields. Staffing-specific fields like pay range, bill rate range, security clearance requirements, and remote/hybrid status are prioritized above general notes fields. We map these fields by name and data type, with date fields going to JobOrder customDate fields and currency fields going to customCurrency.
Crelate
Activities (calls, emails, meetings, tasks)
Bullhorn ATS & CRM
Note, Task, and Event
1:1Crelate Activities (if enabled on the source plan) migrate to Bullhorn Note, Task, and Event records. Calls migrate as Task with TaskSubtype=Call; emails migrate as Note with type=Email; meetings migrate as Event; general tasks migrate as Task. Activities are linked to their parent record (Candidate, ClientContact, or JobOrder) via the Bullhorn entityType and entityId references. Bullhorn's Activity module must be enabled on the destination Bullhorn subscription for activity records to save correctly; we verify this during pre-migration setup.
Crelate
Documents
Bullhorn ATS & CRM
ContentDocument + ContentVersion
1:1Crelate documents attached to Contacts, Companies, Jobs, or Placements migrate to Bullhorn's ContentDocument library via Bullhorn's document storage API. We export documents from Crelate via bulk export, re-upload them to Bullhorn as ContentVersion records, and link them to the appropriate parent record (Candidate, ClientCorporation, JobOrder, or Placement) via ContentDocumentLink. Resume files attached to Candidates map to the Candidate's primary resume field.
Crelate
Tags
Bullhorn ATS & CRM
Multi-Select Picklist or Tag
lossyCrelate tags applied to Contacts, Companies, and Jobs migrate to Bullhorn as custom tag fields on the respective object. Bullhorn supports tagging on Candidates, ClientContacts, JobOrders, and Placements natively. We extract the distinct tag values during discovery, configure the Bullhorn tag field, and apply tags during import. If tag count exceeds Bullhorn's practical limit for a single field, we advise splitting into multiple tag categories during scoping.
Crelate
User / Owner
Bullhorn ATS & CRM
User
1:1Crelate Users who own records map to Bullhorn Users. We match on email address. Any Crelate User without a matching Bullhorn User is placed in a reconciliation queue for the customer's Bullhorn admin to provision before record import resumes. Bullhorn User provisioning requires the admin to assign a Bullhorn role and division, which we cannot automate.
Crelate
Pipeline Stages (Jobs)
Bullhorn ATS & CRM
JobOrder Status + custom status fields
lossyCrelate Job pipeline stages map to Bullhorn JobOrder status values. Bullhorn uses a fixed set of status values (Open, Interview, Offer, Extended, Placed, Closed) that can be extended with custom status fields. We map Crelate stage names to nearest Bullhorn equivalents and configure any custom status fields required to preserve stage granularity. Stage-specific automations do not migrate; we document the stage-to-automation mapping for Bullhorn rebuild.
Crelate
Sequences
Bullhorn ATS & CRM
None (documented for rebuild)
1:1Crelate Sequences represent automated outreach cadences with templated emails, tasks, and text steps tied to timing rules. This is a platform-native feature with no Bullhorn equivalent in standard Sales Cloud ATS. We do not migrate Sequences as code. We document every active Crelate Sequence (name, steps, timing, enrollment criteria) during migration discovery and deliver a written sequence inventory for the customer's Bullhorn admin or Bullhorn Automation Engine partner to rebuild using Bullhorn's workflow builder or a sales engagement tool like Salesloft or Outreach that integrates with Bullhorn.
Crelate
Workflow Automations
Bullhorn ATS & CRM
None (documented for rebuild)
1:1Crelate automations tied to pipeline stage changes, record creation, or property updates do not migrate. Bullhorn's Automation Engine is a separate module with a different rule-builder model. We document every active Crelate automation with its trigger, conditions, and actions, and deliver a written automation map recommending equivalent Bullhorn Automation Engine rules or Bullhorn-supported third-party workflow tools. Rebuild is outside migration scope.
| Crelate | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Contact (candidate records) | Candidate1:1 | Fully supported | |
| Contact (employer contacts) | ClientContact1:1 | Fully supported | |
| Company | ClientCorporation1:1 | Fully supported | |
| Job | JobOrder1:1 | Fully supported | |
| Placement | Placementlossy | Fully supported | |
| Opportunity | JobOrder or Note (scope-dependent)lossy | Fully supported | |
| Custom Fields (Contacts) | Custom Fields (Candidate + ClientContact)lossy | Fully supported | |
| Custom Fields (Companies) | Custom Fields (ClientCorporation)lossy | Fully supported | |
| Custom Fields (Jobs) | Custom Fields (JobOrder)lossy | Fully supported | |
| Activities (calls, emails, meetings, tasks) | Note, Task, and Event1:1 | Fully supported | |
| Documents | ContentDocument + ContentVersion1:1 | Mapping required | |
| Tags | Multi-Select Picklist or Taglossy | Mapping required | |
| User / Owner | User1:1 | Fully supported | |
| Pipeline Stages (Jobs) | JobOrder Status + custom status fieldslossy | Fully supported | |
| Sequences | None (documented for rebuild)1:1 | Not supported | |
| Workflow Automations | None (documented for rebuild)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.
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
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 source audit
We audit the source Crelate portal across plan tier, custom field inventory per entity (flagging any entity exceeding 20 fields), activity module status, active Sequences, active automations, record counts per object, and document volume. We pair this with a Bullhorn destination audit: edition selection, Activity module status, existing custom field usage, and division/role configuration. The discovery output is a written migration scope document including the field prioritization matrix, contact type split strategy, and automation inventory template.
Contact type split analysis and field mapping design
We analyze every Crelate Contact record to determine whether it represents a job seeker (maps to Bullhorn Candidate) or an employer contact (maps to Bullhorn ClientContact). We evaluate contact tags, job submission history, associated company type, and any explicit contact type flags in Crelate. We design the Bullhorn field mapping configuration using Bullhorn's Field Mappings tool, pre-creating customText and custom1-99 field assignments for every Crelate custom field that falls within the 20-field cap. Field mapping is deployed to a Bullhorn sandbox for validation before production migration begins.
Sandbox migration and reconciliation
We run a full migration into Bullhorn's sandbox using production-like data volume. The customer's Bullhorn admin reconciles record counts (ClientCorporations in, ClientContacts in, Candidates in, JobOrders in, Placements in), spot-checks 25-50 random records against Crelate source, and validates that Placement chains correctly link to their parent JobOrder and Candidate. Field mapping corrections and any custom field cap conflicts are resolved in sandbox before production migration. Bullhorn sandbox refresh is the customer's responsibility; we schedule migration validation around refresh windows.
Owner reconciliation and User provisioning
We extract every distinct Crelate User referenced on Contacts, Companies, Jobs, and Placements and match by email against the Bullhorn destination org's User table. Any Crelate User without a matching Bullhorn User goes to a reconciliation queue. The customer's Bullhorn admin provisions missing Users with appropriate roles and divisions. Migration cannot proceed past this step because Candidate, ClientContact, JobOrder, and Placement all reference an Owner field that must resolve to a valid Bullhorn User.
Production migration in dependency order
We run production migration in record-dependency order: ClientCorporations (first, as the root employer entity), Candidates and ClientContacts (in parallel, after ClientCorporation is established for the ClientContact clientCorporationId lookup), JobOrders (with clientCorporationId resolved), Activities (Tasks, Events, Notes via Bullhorn REST API), Placements (last, with jobOrderId, candidateId, and clientCorporationId resolved), Documents (ContentDocument upload and linking), Tags. Each phase emits a row-count reconciliation report before the next phase begins. We handle Crelate's 120 req/min API rate limit with request batching and exponential backoff during extraction.
Cutover, validation, and automation rebuild handoff
We freeze Crelate 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 automation inventory document to the customer's Bullhorn admin or Bullhorn Automation Engine partner. We support a one-week hypercare window where we resolve reconciliation issues raised by the recruiting team. We do not rebuild Crelate Sequences or automations as Bullhorn workflows inside migration scope; that is a separate engagement with a Bullhorn implementation partner.
Platform deep dives
Crelate
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
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 Crelate and Bullhorn ATS & CRM.
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
Crelate: 120 req/min.
Data volume sensitivity
Crelate 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 Crelate to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Crelate 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 Crelate
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.