HRMS migration

Migrate from CVWarehouse to Bullhorn ATS & CRM

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 logo

CVWarehouse

Source

Bullhorn ATS & CRM

Destination

Bullhorn ATS & CRM logo

Compatibility

67%

8 of 12

objects map 1:1 between CVWarehouse and Bullhorn ATS & CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

CVWarehouse logo

CVWarehouse

What's pushing teams away

  • Per-feature and per-module pricing model causes cost to escalate as AI matching, multi-brand databases and advanced reporting are added — predictable all-inclusive pricing is not on offer.
  • Public REST/bulk-export API is not documented, making integrations with payroll, HRIS or BI platforms harder than at competitors like Greenhouse, Recruitee or Bullhorn.
  • Acquired by BCS in May 2024 — customers cite roadmap and long-term support uncertainty as a trigger to evaluate alternatives.
  • Feature breadth is described by some reviewers as excessive for smaller hiring teams; unused modules add complexity without value.
  • Competitors including Recruitee, Greenhouse, Breezy and Bullhorn surface more modern AI sourcing, candidate-matching and integration-marketplace capabilities than CVWarehouse exposes today.

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 CVWarehouse objects map to Bullhorn ATS & CRM

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

maps to

Bullhorn ATS & CRM

JobOrder

1:1
Fully supported

CVWarehouse 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

maps to

Bullhorn ATS & CRM

Candidate

1:many
Fully supported

CVWarehouse 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

maps to

Bullhorn ATS & CRM

JobSubmission

1:1
Fully supported

CVWarehouse 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

maps to

Bullhorn ATS & CRM

CandidatePipeline (pipeline stage)

lossy
Fully supported

CVWarehouse 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

maps to

Bullhorn ATS & CRM

Candidate Evaluation (custom object or note)

1:1
Fully supported

Interviewer 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)

maps to

Bullhorn ATS & CRM

Candidate Document (ContentDocument / File)

1:1
Fully supported

CVWarehouse 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

maps to

Bullhorn ATS & CRM

Custom Fields on JobOrder

lossy
Fully supported

CVWarehouse 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

maps to

Bullhorn ATS & CRM

User

1:1
Fully supported

CVWarehouse 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)

maps to

Bullhorn ATS & CRM

ClientCorporation

1:1
Fully supported

CVWarehouse 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

maps to

Bullhorn ATS & CRM

JobSubmission source

1:1
Fully supported

CVWarehouse 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

maps to

Bullhorn ATS & CRM

Candidate Consent (custom field or note)

lossy
Fully supported

CVWarehouse'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

maps to

Bullhorn ATS & CRM

None

1:1
Not supported

CVWarehouse 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.

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.

CVWarehouse logo

CVWarehouse gotchas

High

No documented public REST API for bulk exports

High

Separate databases per brand or location fragment candidate pools

Medium

Per-feature pricing creates tier ambiguity at migration time

Medium

Acquisition by BCS introduces roadmap uncertainty

Low

Selection Round data depends on non-standard stage names

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

  • CVWarehouse has no documented public REST API for bulk export

    CVWarehouse does not publicly expose a REST or bulk export API in its standard documentation. We cannot automate direct API pulls for large candidate pools. We handle this by coordinating a structured data dump through the admin UI or CSV export where available, and by sequencing large record sets in batches to avoid timeout. Customers should confirm export file availability with their CVWarehouse CSM before scoping begins. If CVWarehouse is unwilling or unable to produce a full data export within the migration window, we flag this as a scope risk and recommend initiating the CSM conversation early.

  • Multi-database candidate fragmentation requires de-duplication before Bullhorn write

    CVWarehouse natively supports separate talent databases per brand or location. During migration, a single logical candidate may appear in multiple databases with slightly different records. We run cross-database de-duplication using email address as the primary key and flag ambiguous records (same name, different email; or multiple similar names under one email) for customer review before writing to Bullhorn. Skipping this step results in inflated candidate counts, duplicate outreach, and GDPR risk if the same person has multiple consent records across databases.

  • Bullhorn Custom Objects require Support-ticket setup before migration data can land

    Bullhorn Custom Objects (customObject1s through customObject10s) cannot be created via the API alone. Bullhorn requires a Custom Object Setup Sheet to be submitted as a support ticket to Bullhorn Support before any migration data can write to custom object entities. We pre-create this ticket during schema design. Bullhorn ATS Growth editions are limited to 2 custom objects; Bullhorn ATS and Enterprise allow 10. We confirm the destination Bullhorn edition and custom object allocation during scoping to avoid discovering limits mid-migration.

  • Non-standard Selection Round stage names require explicit customer-confirmed routing

    CVWarehouse Vacancies define arbitrary Selection Round names rather than enforcing a standard taxonomy. Bullhorn's pipeline model uses configurable stage names per pipeline. We build a routing table of all existing stage names found in the CVWarehouse export and ask the customer to confirm the target Bullhorn pipeline stage equivalents before migration. Stages that do not yet exist in Bullhorn are created before migration. If the customer does not confirm the routing table before the migration run, we default to the nearest Bullhorn standard stage and document the deviation for post-migration cleanup.

  • Vacancy Template custom fields may exceed Bullhorn's 55-field custom object limit

    CVWarehouse Vacancy Templates can contain many custom fields beyond the standard vacancy schema. Bullhorn custom objects support a maximum of 55 fields per object. If a customer's Vacancy Template exceeds this limit, we prioritize the most business-critical fields for migration and document the remainder in the scope handoff. We also flag any field type mismatches (CVWarehouse free-text fields vs Bullhorn's typed custom fields) during scoping so that the customer can confirm the data strategy before migration begins.

Migration approach

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

CVWarehouse logo

CVWarehouse

Source

Strengths

  • Reliable uptime: users report zero downtime over multi-year periods
  • User-friendly interface: low onboarding friction for recruiters and hiring managers
  • Multi-database layout: separate talent pools per brand or location out of the box
  • Selection Process feature: supports multi-stage interview pipelines with configurable rounds
  • GDPR-compliant candidate portal with privacy policy and cookie management per employer brand

Weaknesses

  • Feature breadth: many users report unused functionality adding complexity
  • Pricing model: per-feature pricing can escalate as more modules are enabled
  • Limited public API documentation: no well-documented bulk export or REST API surfaced in research
  • Acquisition by BCS (2024): long-term roadmap and support continuity for existing customers is unclear
  • Migration tooling: no native export-to-file format with guaranteed schema stability
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. All 7 core objects map 1:1 between CVWarehouse and Bullhorn ATS & CRM.

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

    All 7 core objects map 1:1 between CVWarehouse and Bullhorn ATS & CRM.

  • 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

    CVWarehouse: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your CVWarehouse 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 CVWarehouse to Bullhorn ATS & CRM data migrations

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

Can't find your answer?

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 consultation

Most migrations land between three and five weeks for accounts under 10,000 candidates, a single database, and fewer than 200 vacancies with no complex Vacancy Templates. Mid-size accounts with 10,000-50,000 candidates, multi-brand database splitting, custom Vacancy Templates, and large attachment volumes move to six to ten weeks. Large, complex cases with over 50,000 candidates, multiple databases, and hundreds of historical vacancies push toward ten to twelve weeks. Timeline depends heavily on how quickly CVWarehouse can produce the data export; we recommend opening the export request with CVWarehouse's CSM as early as possible.

Adjacent paths

Related migrations to explore

Ready when you are

Move from CVWarehouse.
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