HRMS migration
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
Source
Bullhorn ATS & CRM
Destination
Compatibility
9 of 12
objects map 1:1 between Candidate Manager and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
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.
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 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
Bullhorn ATS & CRM
Candidate
1:1Candidate 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
Bullhorn ATS & CRM
Job Order
1:1Candidate 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
Bullhorn ATS & CRM
Candidate Status / Job Order Status
lossyCandidate 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
Bullhorn ATS & CRM
Custom Number Fields on Candidate
1:1Numeric 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
Bullhorn ATS & CRM
Candidate (owner attribution) / User (lookup)
1:1Records 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
Bullhorn ATS & CRM
Candidate (source attribution)
1:1Agencies 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
Bullhorn ATS & CRM
Placement (if hired) + Bullhorn Onboarding Tasks
lossyCandidate 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
Bullhorn ATS & CRM
Custom Object or Report (supplementary)
lossyCandidate 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)
Bullhorn ATS & CRM
Custom Field on Candidate
1:1Candidate 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)
Bullhorn ATS & CRM
Custom Field on Job Order
1:1Candidate 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
Bullhorn ATS & CRM
CandidateSubmission / JobOrderCandidate
1:1The 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
Bullhorn ATS & CRM
User
1:1Candidate 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.
| Candidate Manager | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Candidate | Candidate1:1 | Fully supported | |
| Job Order | Job Order1:1 | Fully supported | |
| Pipeline Stage | Candidate Status / Job Order Statuslossy | Fully supported | |
| Ranking and Pre-Profiling Score | Custom Number Fields on Candidate1:1 | Fully supported | |
| Hiring Manager Self-Service Portal Record | Candidate (owner attribution) / User (lookup)1:1 | Fully supported | |
| Staffing Firm and Agency Portal Record | Candidate (source attribution)1:1 | Fully supported | |
| Onboarding Record | Placement (if hired) + Bullhorn Onboarding Taskslossy | Fully supported | |
| Reporting Data / Hiring Funnel Metrics | Custom Object or Report (supplementary)lossy | Fully supported | |
| Custom Field (Candidate Level) | Custom Field on Candidate1:1 | Fully supported | |
| Custom Field (Job Order Level) | Custom Field on Job Order1:1 | Fully supported | |
| Candidate-to-Job Application Relationship | CandidateSubmission / JobOrderCandidate1:1 | Fully supported | |
| User / Owner | User1: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.
Candidate Manager gotchas
No public API for incremental sync or third-party integrations
Pipeline stages are fixed and not reconfigurable
Bespoke configurations vary tenant-to-tenant
EDI reporting fields are sensitive personal data with GDPR implications
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 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.
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.
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.
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.
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.
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
Candidate Manager
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 Candidate Manager 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
Candidate Manager: Not publicly documented.
Data volume sensitivity
Candidate Manager 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 Candidate Manager to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Candidate Manager
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.