HRMS migration

Migrate from Candidate Manager to Bullhorn ATS & CRM

Field-level mapping, validation, and rollback between Candidate Manager and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.

Candidate Manager logo

Candidate Manager

Source

Bullhorn ATS & CRM

Destination

Bullhorn ATS & CRM logo

Compatibility

75%

9 of 12

objects map 1:1 between Candidate Manager and Bullhorn ATS & CRM.

Complexity

BStandard

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Candidate Manager does not expose a documented public REST API for bulk data extraction, which makes it a file-first migration source. We extract data via CSV and structured file exports from the platform's reporting module, then normalize stages, ranking scores, and sourcing attribution into the Bullhorn ATS schema before insert via the Bullhorn REST API. Pipeline stage names from Candidate Manager are fixed and cannot be reconfigured at the workflow level, so we preserve the original stage label as a custom property in Bullhorn and map it to the nearest equivalent Bullhorn pipeline stage. Ranking and pre-profiling scores transfer as custom number fields because not all ATS platforms handle these natively. Hiring manager portal records and agency portal submissions require owner attribution resolution since hiring managers may not exist as formal Bullhorn user accounts. We do not migrate Candidate Manager workflows, staffing portal configurations, or embedded onboarding e-signature data as these are either not exportable in a machine-readable format or require manual reconciliation by the customer's admin team post-migration.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Candidate Manager logo

Candidate Manager

What's pushing teams away

  • Zero verified review footprint — Capterra shows 0 reviews and TrustRadius gating prevents public sentiment analysis, leaving buyers without independent validation versus high-volume ATSes (BambooHR 3,400+ reviews, ZipRecruiter 10,000+).
  • Pricing is opaque; one Capterra entry references a €2,000 per user one-time Basic plan, which is unusual versus the subscription model competitors offer and difficult to compare.
  • No public API or developer documentation means integrations with background-check vendors, assessment tools, or downstream HRIS systems require vendor-mediated work rather than standard plug-and-play.
  • Up to 5-day account setup with an account manager is slow versus self-serve modern ATSes that go live in hours.
  • Limited public footprint and review depth makes long-term roadmap and support continuity hard to assess for buyers committing multi-year.

Choosing

Bullhorn ATS & CRM logo

Bullhorn ATS & CRM

What's pulling them in

  • Agencies choose Bullhorn because it combines ATS and CRM in one platform, eliminating the need to switch between separate tools for candidate management and client relationship tracking.
  • The resume parser extracts contact details, work history, and skills into structured, searchable candidate profiles automatically without manual data entry, reportedly driving 24% more placements per recruiter.
  • Bullhorn's placement and split-billing model natively supports contract staffing workflows, handling start/end dates, overtime rules, and multi-party pay/charge rates in a single record.
  • The platform offers extensive third-party integrations through its Recruitment Cloud Marketplace, connecting with back-office, onboarding, and payroll systems used by staffing agencies.
  • 72% of Bullhorn customers are teams with fewer than 10 users, and Bullhorn's implementation team handles setup and data migration for small agencies going live within weeks.

Object mapping

How Candidate Manager objects map to Bullhorn ATS & CRM

Each row shows how a Candidate Manager 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.

Candidate Manager

Candidate

maps to

Bullhorn ATS & CRM

Candidate

1:1
Fully supported

Candidate Manager candidate records map to Bullhorn Candidate. We extract name, contact details, resume file, application date, source attribution, and status stage from CSV exports. The Candidate Manager resume file is stored as a resume blob or file reference; we download and attach it to the Bullhorn Candidate record via the resume field or ContentDocument attachment. Ranking and pre-profiling scores from Candidate Manager transfer as custom number fields on the Bullhorn Candidate record because Bullhorn has no native scoring object. Application date maps to dateAdded; source attribution maps to source. Candidate Manager status stage (Applied, Under Consideration, Interviewing, Hired) is preserved in a custom text field cm_original_stage__c and mapped to the nearest Bullhorn Candidate status.

Candidate Manager

Job Order

maps to

Bullhorn ATS & CRM

Job Order

1:1
Fully supported

Candidate Manager job orders carry requisition metadata, department, location, and open date. We map these as Bullhorn Job Order records. Title, description, address, and employment type transfer directly. The Candidate Manager job ID is preserved in a custom field cm_job_id__c for reconciliation. Custom fields attached to job orders in Candidate Manager are discovered during the scoping call and mapped to Bullhorn custom fields or Job Order standard fields depending on type match. Bullhorn's Job Order requires an assigned User as the recruiterOwner before insert.

Candidate Manager

Pipeline Stage

maps to

Bullhorn ATS & CRM

Candidate Status / Job Order Status

lossy
Fully supported

Candidate Manager uses fixed stage names that cannot be reconfigured at the workflow level. We preserve the original stage label as a custom property cm_original_stage__c on the Bullhorn Candidate record. For each Candidate Manager stage (Applied, Under Consideration, Interviewing, Hired, etc.), we map to the nearest Bullhorn Candidate status value and note the mapping in the migration specification. If the customer has configured Candidate Manager stages beyond the standard set, we treat them as custom picklist values to add to the Bullhorn Candidate status field during schema setup.

Candidate Manager

Ranking and Pre-Profiling Score

maps to

Bullhorn ATS & CRM

Custom Number Fields on Candidate

1:1
Fully supported

Numeric ranking and screening scores from Candidate Manager are stored as candidate properties. We transfer these as-is into Bullhorn custom number fields (cm_ranking_score__c, cm_preprofiling_score__c) on the Candidate record. Bullhorn does not have a native scoring object at the ATS tier, so these values land as custom fields. They are searchable in Bullhorn's additional criteria filters and visible on the Candidate record. We flag any score that falls outside the range supported by Bullhorn's number field type during validation.

Candidate Manager

Hiring Manager Self-Service Portal Record

maps to

Bullhorn ATS & CRM

Candidate (owner attribution) / User (lookup)

1:1
Fully supported

Records created or modified via the Candidate Manager hiring manager portal carry an owner attribution field. We preserve this as a custom text field cm_hiring_manager__c on the Bullhorn Candidate record. If the hiring manager does not exist as a formal Bullhorn User, we flag the record for the customer's admin to provision the User account and update the assignment post-migration. Bullhorn requires a valid OwnerId (User reference) on most standard record types; a null or invalid owner causes insert failure.

Candidate Manager

Staffing Firm and Agency Portal Record

maps to

Bullhorn ATS & CRM

Candidate (source attribution)

1:1
Fully supported

Agencies submitting candidates through the Candidate Manager staffing portal are tracked as submission sources. We map agency name and submission ID to the Bullhorn Candidate record using the source field and a custom field cm_agency_submission_id__c. Agency-specific notes attached to the submission are preserved in a custom text field cm_agency_notes__c on the Candidate record. Bullhorn's source picklist is extended to include agency names that do not match existing Bullhorn source values during schema setup.

Candidate Manager

Onboarding Record

maps to

Bullhorn ATS & CRM

Placement (if hired) + Bullhorn Onboarding Tasks

lossy
Fully supported

Candidate Manager extends into onboarding for hired candidates. We migrate onboarding task completion status and document references for candidates with a Hired stage. Task status maps to Bullhorn Onboarding task records if the customer licenses Bullhorn Onboarding (formerly Able). Document references migrate as ContentDocument attachments linked to the Placement record. We flag any e-signature or form-fill data that does not export cleanly from Candidate Manager; this data typically requires manual re-entry by the customer's onboarding team post-migration.

Candidate Manager

Reporting Data / Hiring Funnel Metrics

maps to

Bullhorn ATS & CRM

Custom Object or Report (supplementary)

lossy
Fully supported

Candidate Manager's reporting module generates aggregate data exports covering historical hiring funnel metrics. These records reflect a point-in-time snapshot from Candidate Manager and do not represent live Bullhorn data. We deliver them as supplementary records in a Bullhorn Custom Object (cm_funnel_metrics__c) so the customer retains the historical context. The data is marked with cm_source_created_date__c to distinguish it from Bullhorn-native reporting. Rebuilding equivalent funnel reporting in Bullhorn Analytics or Canvas is documented separately as a post-migration admin task.

Candidate Manager

Custom Field (Candidate Level)

maps to

Bullhorn ATS & CRM

Custom Field on Candidate

1:1
Fully supported

Candidate Manager custom fields at the candidate level are not documented in a machine-readable schema. We discover them during the scoping call by reviewing a sample export and a walkthrough of the Candidate Manager admin interface. Each discovered custom field is mapped to a Bullhorn custom field on the Candidate object (with __c suffix per Bullhorn convention). Field type mapping: text to Text, date to Date, number to Number, picklist to Picklist (with values extended). Required fields in Candidate Manager are flagged for Bullhorn field validation rules.

Candidate Manager

Custom Field (Job Order Level)

maps to

Bullhorn ATS & CRM

Custom Field on Job Order

1:1
Fully supported

Candidate Manager custom fields at the job order level are mapped to Bullhorn custom fields on the Job Order object. We follow the same discovery and type-mapping process as candidate-level custom fields. Bullhorn Job Order supports up to 55 custom fields per Custom Object configuration; if the customer's Job Order custom field count exceeds this, we prioritize the fields most critical to placement workflow and flag the remainder for manual entry or a second-pass migration.

Candidate Manager

Candidate-to-Job Application Relationship

maps to

Bullhorn ATS & CRM

CandidateSubmission / JobOrderCandidate

1:1
Fully supported

The application relationship between a Candidate record and a Job Order in Candidate Manager maps to Bullhorn's CandidateSubmission or JobOrderCandidate relationship. Bullhorn's REST API requires that both the Candidate and the Job Order exist before the relationship record is inserted. We sequence the migration so that Job Orders are loaded first (with recruiterOwner resolved to a Bullhorn User), then Candidates (with status mapped), then relationship records (with candidateID and jobOrderID resolved). This dependency order prevents the foreign-key violations that occur if the relationship is written before the parent records.

Candidate Manager

User / Owner

maps to

Bullhorn ATS & CRM

User

1:1
Fully supported

Candidate Manager user and owner records map to Bullhorn User. We resolve owners by email match against the Bullhorn User table. Any Candidate Manager Owner without a matching Bullhorn User goes to a reconciliation queue for the customer's admin to provision the User before record import resumes. Active Candidate Manager users who are not provisioned in Bullhorn will have their records assigned to a system migration user temporarily, with reassignment documented for the admin to complete post-migration.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Candidate Manager logo

Candidate Manager gotchas

High

No public API for incremental sync or third-party integrations

Medium

Pipeline stages are fixed and not reconfigurable

Medium

Bespoke configurations vary tenant-to-tenant

High

EDI reporting fields are sensitive personal data with GDPR implications

Bullhorn ATS & CRM logo

Bullhorn ATS & CRM gotchas

High

ATS Growth edition has no API access

High

Attachments excluded from CSV bulk exports

Medium

Custom Object limits vary sharply by edition

Medium

Opportunity pipeline stages are recruitment-specific

Low

Resume parse quality varies by document format

Pair-specific challenges

  • Candidate Manager has no REST API; file extraction introduces schema discovery risk

    Candidate Manager does not expose a documented public REST API for bulk data extraction. All migration data comes from CSV and structured file exports from the platform's reporting module. The custom field schema is not documented in a machine-readable format, which means we discover custom fields by reviewing a sample export and a guided admin walkthrough during scoping. Fields not visible in the sample export may be missed and migrate as blank in Bullhorn. We mitigate this by requesting a full export with all columns visible and asking the customer to confirm the custom field inventory against their Candidate Manager admin settings before extraction begins.

  • Bullhorn Custom Objects require Bullhorn Support ticket setup before API use

    Bullhorn Custom Objects are not self-service; they must be requested via Bullhorn Support using a Custom Object Setup Sheet. Each Custom Object supports 55 fields, with limits by edition (10 for Front Office Growth/Enterprise, 2 for Bullhorn ATS, none for ATS Growth). If the Candidate Manager schema requires more than 2 custom objects on a Bullhorn ATS-tier destination, the customer must upgrade or accept that some custom fields will be consolidated or manually reconciled post-migration. We coordinate the Support ticket during the schema design phase so Custom Objects are ready before the first data load.

  • Hiring manager portal records lack Bullhorn User accounts

    Candidate Manager hiring manager portal records carry owner attribution for records created or modified by hiring managers who may not exist as formal Candidate Manager user accounts. When migrating to Bullhorn, these records require a valid OwnerId (Bullhorn User reference) to insert without error. If the hiring manager is not provisioned as a Bullhorn User, the record fails insert. We preserve the hiring manager name in a custom field cm_hiring_manager__c and flag all records with unresolved owners for the customer's admin to assign to a Bullhorn User after migration.

  • Resume formatting degrades during file export and re-import

    Candidate Manager's resume parsing is reported to produce jumbled, unformatted text in the source system (per reviewer feedback). File-based export of resume content from Candidate Manager may carry forward formatting inconsistencies. We validate resume content post-extraction and flag any records where the resume body is null, truncated, or contains character encoding anomalies. We attach resume files to Bullhorn Candidate records as ContentDocument attachments rather than relying on parsed text fields to preserve the original document. Bullhorn's own resume parsing then re-extracts structured fields from the attachment after migration.

  • Bullhorn field validation rules and field-level security can block file-based inserts

    Bullhorn enforces validation rules and field-level security on standard and custom objects that the CSV import must explicitly satisfy. Required fields (such as recruiterOwner on Job Order, or custom picklist fields with restricted values) will cause record rejection if left blank. We review the Bullhorn destination org's validation rules and field-level security with the customer's admin before migration, temporarily relaxing or extending rules for migration context. Without this step, 5-20% of records typically fail the first import pass and require a corrective load.

Migration approach

Six steps for a successful Candidate Manager to Bullhorn ATS & CRM data migration

  1. Discovery and scoping call

    We audit the Candidate Manager instance through a guided admin walkthrough, reviewing all candidate fields, job order fields, custom field inventory, pipeline stage definitions, hiring manager portal records, agency portal submissions, and onboarding record structure. We request a full CSV export with all columns to confirm the actual schema versus documented expectations. We pair this with the Bullhorn destination edition review: Bullhorn ATS ($99/user/mo) covers most migrations but is limited to 2 Custom Objects; Bullhorn Front Office Growth ($165/user/mo) supports 10 Custom Objects and is recommended if the Candidate Manager schema has more than 2 custom field groups. The discovery output is a written migration scope with record counts, field inventory, and Bullhorn edition recommendation.

  2. File extraction and data quality assessment

    We extract all data from Candidate Manager via CSV and structured file exports from the platform's reporting module. The extraction covers Candidates, Job Orders, Pipeline Stages, Ranking Scores, Hiring Manager Portal Records, Agency Portal Submissions, Onboarding Records, and any supplementary reporting data. We run a data quality assessment on the extracted files, flagging null required fields, malformed resume content, duplicate candidate records (by email or resume hash), and any field that exceeds Bullhorn's type constraints. The customer reviews and approves the quality report before transformation begins.

  3. Schema design and Bullhorn Custom Object setup coordination

    We design the Bullhorn destination schema, including standard field mappings, custom field creation (with __c API names matched to Candidate Manager field names where possible), Bullhorn Candidate status picklist extension (for stages that do not map to standard values), and any required Bullhorn Support tickets for Custom Object provisioning. Schema is designed against the customer's target Bullhorn edition. We submit the Custom Object Setup Sheet to Bullhorn Support if the migration requires more than the ATS-tier limit of 2 Custom Objects. Schema is validated in a Bullhorn Sandbox before production migration begins.

  4. Owner and user reconciliation

    We extract every distinct owner and user referenced on Candidate, Job Order, and submission records from the Candidate Manager export. We match these by email against the Bullhorn destination org's User table. Any Candidate Manager owner without a matching Bullhorn User goes to a reconciliation queue for the customer's admin to provision before record import resumes. Hiring manager portal records with unresolved owners are flagged with cm_hiring_manager__c preserved for post-migration assignment. Migration cannot proceed past Job Order and Candidate insert until all required OwnerId references are satisfied.

  5. Staged production migration in dependency order

    We run production migration in record-dependency order to satisfy Bullhorn's foreign-key constraints. Job Orders are loaded first (with recruiterOwner resolved to a Bullhorn User). Candidates are loaded second (with status mapped to Bullhorn Candidate status and ranking scores in custom fields). Onboarding records and placement records are loaded third for candidates with a Hired stage. Hiring funnel metric data is delivered as supplementary Custom Object records. Agency submission relationships are written as Candidate source attribution. Each phase emits a row-count reconciliation report before the next phase begins. We use the Bullhorn REST API for standard inserts and the Bulk API 2.0 if record volume exceeds 10,000 per object.

  6. Cutover, validation, and workflow handoff

    We freeze Candidate Manager writes during the cutover window, run a final delta migration of any records modified during the migration, then enable Bullhorn as the system of record. We deliver a written inventory of Candidate Manager workflows, staffing portal configurations, and any onboarding e-signature data that could not be exported in a machine-readable format. We do not rebuild Candidate Manager workflows as Bullhorn Automation; that work is handled by the customer's Bullhorn admin or a Bullhorn partner using the handoff document. We support a one-week hypercare window where we resolve any record reconciliation issues raised by the customer's team.

Platform deep dives

Context on both ends of the pair

Candidate Manager logo

Candidate Manager

Source

Strengths

  • Built-in GDPR consent, data retention, and privacy policy enforcement.
  • 600+ job board posting reach from a single workflow.
  • EDI reporting with customised Equal Opportunities forms.
  • Configurable to a bespoke recruitment workflow with vendor support.
  • Multi-region presence (Ireland, UK, USA) with named enterprise references.

Weaknesses

  • Effectively zero independent review footprint on Capterra and other public review sites.
  • Opaque pricing — one source cites €2,000/user one-time, which is hard to compare to subscription-based competitors.
  • No public API or developer documentation; integrations require vendor mediation.
  • Account setup takes up to 5 days versus self-serve competitors.
  • Limited public product detail makes pre-purchase due diligence difficult.
Bullhorn ATS & CRM logo

Bullhorn ATS & CRM

Destination

Strengths

  • Unified ATS and CRM on one platform purpose-built for staffing agencies, eliminating separate tools for candidates and clients.
  • Automated resume parsing extracts structured candidate data—contact details, work history, skills—into searchable profiles instantly.
  • Native placement and split-billing model handles contract staffing workflows including start/end dates and overtime rules.
  • Bullhorn Recruitment Cloud Marketplace offers 100+ pre-validated third-party integrations spanning the full recruiting lifecycle.
  • 24/7 global support coverage from 350+ support staff with dedicated account management included at all tiers.

Weaknesses

  • Widely regarded as old and bloated with an unintuitive interface and steep learning curve for new recruiters.
  • Slow page loads and performance lag cited in over 200 verified G2 reviews during high-volume recruiting periods.
  • Pricing is opaque—custom-negotiated per organization with significant upfront implementation fees that vary by deal.
  • ATS Growth edition excludes API access entirely, preventing automated data export without upgrading first.

Complexity grading

How hard is this migration?

Standard HRMS migration. 1 of 7 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Candidate Manager and Bullhorn ATS & CRM.

  • Object compatibility

    B

    1 of 7 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    7-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Candidate Manager: Not publicly documented.

  • Data volume sensitivity

    B

    Candidate Manager doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Candidate Manager to Bullhorn ATS & CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Candidate Manager to Bullhorn ATS & CRM data migrations

Answers to the questions buyers ask most during Candidate Manager to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Candidate Manager to Bullhorn ATS & CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between four and six weeks for accounts under 15,000 candidates and 500 job orders with a straightforward custom field inventory. Migrations with large onboarding record histories, agency portal submission records (over 50,000 submissions), more than 2 Bullhorn ATS-tier Custom Objects, or a high proportion of hiring manager portal records without existing Bullhorn User accounts move to eight to twelve weeks because of owner reconciliation, Custom Object Support ticket coordination, and the staged insert sequencing required to satisfy Bullhorn's foreign-key constraints.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Candidate Manager.
Land in Bullhorn ATS & CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day