HRMS migration
Field-level mapping, validation, and rollback between CVWarehouse and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
CVWarehouse
Source
Bullhorn ATS & CRM
Destination
Compatibility
8 of 12
objects map 1:1 between CVWarehouse and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from CVWarehouse to Bullhorn is a cross-system migration where the main engineering challenge is working around CVWarehouse's lack of a public REST API or bulk export mechanism. We coordinate structured data extraction through the admin UI or CSV export, run cross-database de-duplication using email address as the primary key, and write the cleaned record set into Bullhorn via its REST API with batch chunking and rate-limit handling. CVWarehouse's configurable Selection Rounds (with arbitrary stage names) require an explicit routing table before migration, and Vacancy Templates need explicit field mapping since they are per-account custom fields with no standard schema. We do not migrate Reports and Analytics from CVWarehouse, and Bullhorn Custom Objects require setup through Bullhorn Support before data can land in them. Workflows and automations do not migrate; we deliver a written inventory for the customer's admin to rebuild in Bullhorn Automation.
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 CVWarehouse 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.
CVWarehouse
Vacancy
Bullhorn ATS & CRM
JobOrder
1:1CVWarehouse Vacancies map to Bullhorn JobOrder records. Each Vacancy carries job title, location, department, employment type, and a Vacancy Template with custom fields. We map standard fields directly and flag custom template fields for explicit Bullhorn field mapping during scoping. Vacancy status (Open, Closed, On Hold) maps to JobOrder status with a customer-confirmed status routing table. We create Bullhorn JobOrder records before candidate import so that the JobOrder ID is available for the Candidate-to-JobApplication association.
CVWarehouse
Candidate
Bullhorn ATS & CRM
Candidate
1:manyCVWarehouse Candidate records map to Bullhorn Candidate entities. CVWarehouse stores candidates across separate databases per brand or location, so a single individual may appear in multiple databases. We run cross-database de-duplication using email address as the primary key before writing to Bullhorn. Where the same email appears across multiple CVWarehouse databases, we merge into a single Bullhorn Candidate record and preserve the brand-location provenance in a custom field source_brand__c. Ambiguous records (same name, different email) go to a reconciliation queue for customer review.
CVWarehouse
Application
Bullhorn ATS & CRM
JobSubmission
1:1CVWarehouse Applications (Candidate-to-Vacancy links) map to Bullhorn JobSubmission records. Each Application tracks submission date, source channel, and application status. We map applicationDate to JobSubmission dateAdded, applicationSource to JobSubmission source, and applicationStatus to JobSubmission status. Multiple Applications for the same Candidate-to-Vacancy pair are deduplicated during mapping.
CVWarehouse
Selection Round
Bullhorn ATS & CRM
CandidatePipeline (pipeline stage)
lossyCVWarehouse Selection Rounds define interview stages, reviewer assignments, and scoring per Vacancy. Bullhorn's pipeline stage model uses configurable stage names per JobOrder pipeline. We build a routing table mapping each CVWarehouse Selection Round name to the target Bullhorn pipeline stage name during scoping, asking the customer to confirm equivalents before the migration run. Stage ordering is preserved chronologically. Custom stage names that do not map to Bullhorn defaults are created as new pipeline stage values before migration.
CVWarehouse
Scorecard and Rating
Bullhorn ATS & CRM
Candidate Evaluation (custom object or note)
1:1Interviewer scorecards and structured ratings stored per Selection Round in CVWarehouse map to Bullhorn Candidate evaluation records or structured notes. Bullhorn ATS Growth limits custom objects to 2; Bullhorn ATS and Enterprise allow up to 10 custom objects with 55 fields each. We configure the destination custom object before migration if the customer's Bullhorn edition supports it, otherwise scorecards migrate as structured Note records with a defined body template (Reviewer, Round, Score, Comments). We flag the approach during scoping.
CVWarehouse
Attachment (CV, Cover Letter, Portfolio)
Bullhorn ATS & CRM
Candidate Document (ContentDocument / File)
1:1CVWarehouse stores CVs, cover letters, and portfolio files per Candidate or Application. We export these as binary blobs and write them to Bullhorn's Candidate record via the ContentDocumentLink object. The original filename and MIME type are preserved. Bullhorn's API accepts attachments up to the org's file storage limit. We batch large binary sets to avoid timeout and resume partial uploads on failure.
CVWarehouse
Vacancy Template
Bullhorn ATS & CRM
Custom Fields on JobOrder
lossyCVWarehouse Vacancy Templates standardize job postings with custom fields beyond the standard vacancy schema. These require explicit field mapping during scoping because they are per-account custom fields with no standard across CVWarehouse accounts. We inventory every Vacancy Template field, map each to a Bullhorn JobOrder custom field (customText1-20, customDate1-5, etc.), and configure the Bullhorn field mappings before vacancy import. If the template field count exceeds Bullhorn's 55-field custom object limit, we prioritize the most business-critical fields and document the remainder.
CVWarehouse
User
Bullhorn ATS & CRM
User
1:1CVWarehouse recruiters, hiring managers, and administrators with role-based access map to Bullhorn User records. We resolve Users by email address match against the Bullhorn destination org's User table. Role names (Recruiter, Hiring Manager, Admin) map to Bullhorn UserType and Division assignments. Users without a matching Bullhorn User go to a reconciliation queue for the customer's Bullhorn admin to provision before record import resumes. Inactive CVWarehouse users are mapped to inactive Bullhorn Users with their original owner history preserved.
CVWarehouse
Company (Employer Brand)
Bullhorn ATS & CRM
ClientCorporation
1:1CVWarehouse organizations that manage employer brands or multiple client relationships map to Bullhorn ClientCorporation records. In CVWarehouse's multi-database model, each database may represent a distinct employer brand or subsidiary; we map each to a separate ClientCorporation record and preserve the original database name in a custom field cvw_database__c for audit. Company contact records map to ClientContact entities linked to the ClientCorporation.
CVWarehouse
Candidate Source Channel
Bullhorn ATS & CRM
JobSubmission source
1:1CVWarehouse tracks how each Application entered the system (job board, referral, direct, career site). This source attribution maps to Bullhorn JobSubmission.source. We preserve the raw source string and, where CVWarehouse uses a structured source taxonomy, map to the nearest Bullhorn source picklist value. Unknown source values are written to a custom field original_source__c to preserve the raw data for post-migration segmentation.
CVWarehouse
GDPR Consent Record
Bullhorn ATS & CRM
Candidate Consent (custom field or note)
lossyCVWarehouse's GDPR-compliant candidate portal stores consent flags per employer brand. We map consent status to Bullhorn Candidate.hasOptedOutOfEmail (for email opt-out) and preserve the full consent record, including consent date, consent type, and employer brand, in a custom field or structured note. Bullhorn's GDPR tooling is available on Enterprise editions; we confirm availability during scoping.
CVWarehouse
Reports and Analytics
Bullhorn ATS & CRM
None
1:1CVWarehouse reporting is UI-based with no documented analytics export API. Built-in reports do not migrate. We recommend configuring equivalent Bullhorn reports (Standard Reporting on Team and Corporate, Advanced Reporting Dashboards on Enterprise) post-migration. During scoping, we inventory the five to ten most-critical CVWarehouse reports and deliver a written guide mapping their metrics to Bullhorn report builder equivalents for the customer's Bullhorn admin to configure.
| CVWarehouse | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Vacancy | JobOrder1:1 | Fully supported | |
| Candidate | Candidate1:many | Fully supported | |
| Application | JobSubmission1:1 | Fully supported | |
| Selection Round | CandidatePipeline (pipeline stage)lossy | Fully supported | |
| Scorecard and Rating | Candidate Evaluation (custom object or note)1:1 | Fully supported | |
| Attachment (CV, Cover Letter, Portfolio) | Candidate Document (ContentDocument / File)1:1 | Fully supported | |
| Vacancy Template | Custom Fields on JobOrderlossy | Fully supported | |
| User | User1:1 | Fully supported | |
| Company (Employer Brand) | ClientCorporation1:1 | Fully supported | |
| Candidate Source Channel | JobSubmission source1:1 | Fully supported | |
| GDPR Consent Record | Candidate Consent (custom field or note)lossy | Fully supported | |
| Reports and Analytics | None1:1 | Not 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.
CVWarehouse gotchas
No documented public REST API for bulk exports
Separate databases per brand or location fragment candidate pools
Per-feature pricing creates tier ambiguity at migration time
Acquisition by BCS introduces roadmap uncertainty
Selection Round data depends on non-standard stage names
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, export coordination, and scoping
We audit the CVWarehouse account across database count, total candidate records, vacancy count, application volume, Selection Round stage names, Vacancy Template fields, and attachment sizes. We coordinate with the CVWarehouse CSM to confirm export file availability (CSV or structured dump) and timeline. We also confirm the destination Bullhorn edition, existing custom object configuration, and pipeline stage defaults. The discovery output is a written migration scope with a confirmed data extraction plan and a Bullhorn schema design brief.
Schema design in Bullhorn
We design the Bullhorn destination schema: JobOrder pipelines and stage names (confirmed against CVWarehouse Selection Round names), Candidate custom fields, ClientCorporation fields for employer brands, and custom object configuration if scorecards are being migrated. We submit the Bullhorn Custom Object Setup Sheet to Bullhorn Support if additional custom objects are required. Bullhorn field type constraints (character limits, picklist values, required fields) are validated against the source data during this phase. Schema is validated in a Bullhorn sandbox or test org before production migration.
Data extraction, cleaning, and de-duplication from CVWarehouse
We extract data from CVWarehouse in the agreed format (admin UI CSV or structured dump), splitting by database where multi-database layouts exist. We run cross-database de-duplication using email address as the primary key, merge duplicate candidate records, and flag ambiguous records for customer review. We transform CVWarehouse Selection Round stage names against the confirmed routing table, map Vacancy Template custom fields to Bullhorn custom fields, and convert attachment binary blobs to Bullhorn ContentDocument format.
Sandbox migration and reconciliation
We run a full migration into the Bullhorn destination org using production-like data volume. The customer's Bullhorn admin reconciles record counts (Candidates in, Vacancies in, Applications in, Selection Round history in), spot-checks 25-50 random candidate records against the CVWarehouse source, validates that pipeline stage routing is correct, and confirms that attachments appear on the right records. Any mapping corrections, stage routing issues, or custom field gaps are resolved here before production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: ClientCorporations (employer brands), JobOrders (vacancies with custom fields resolved), Candidates (with de-duplication applied and multi-database provenance preserved), JobSubmissions (with Candidate-to-JobOrder Lookups resolved), Selection Round history (with stage routing applied), scorecards and evaluations, and attachments (last, as ContentDocument uploads are the slowest phase). Each phase emits a row-count reconciliation report before the next phase begins. Bullhorn REST API batch endpoints handle the write operations with exponential backoff on rate-limit responses.
Cutover, validation, and automation handoff
We freeze CVWarehouse writes during cutover, run a final delta migration of any records created or modified during the migration window, then enable Bullhorn as the system of record. We validate candidate and vacancy counts, spot-check attachment availability, and confirm that pipeline stage routing appears correctly in Bullhorn. We deliver the written inventory of Vacancy Templates (for Bullhorn template rebuild), Selection Round routing map, GDPR consent record summary, and a Bullhorn Automation rebuild guide covering any recruiting workflows the customer wants to replicate. We do not rebuild Bullhorn Automation workflows as part of the migration scope.
Platform deep dives
CVWarehouse
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between CVWarehouse and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across CVWarehouse and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between CVWarehouse 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
CVWarehouse: Not publicly documented.
Data volume sensitivity
CVWarehouse 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 CVWarehouse to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your CVWarehouse 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 CVWarehouse
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.