HRMS migration
Field-level mapping, validation, and rollback between Voyse and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Voyse
Source
Bullhorn ATS & CRM
Destination
Compatibility
8 of 13
objects map 1:1 between Voyse and Bullhorn ATS & CRM.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from Voyse to Bullhorn is a migration from a small-team HRMS focused on UK software organisations into the market-leading recruitment ATS and CRM used by over 10,000 staffing agencies globally. Voyse stores candidate records, employee profiles, and onboarding stage data in a flat or lightly structured schema; Bullhorn uses a normalised entity model with separate Candidate, Contact, Company, Job, and Placement objects linked by lookups. We scope Voyse's custom property fields, resolve them against Bullhorn's standard and custom field inventory, and load records in dependency order starting with Companies, then Candidates, then Jobs, with Placements inserted once both Candidate and Job lookups are satisfied. Custom objects migrate as Bullhorn Custom Objects with a 55-field-per-object ceiling enforced by Bullhorn's edition (Front Office Growth 10 objects; ATS Growth none; ATS 2 objects). Onboarding workflows, automation rules, and document templates are not migratable as code; we deliver a written inventory for your Bullhorn admin to configure post-migration. Bullhorn's API rate limits and Bulk API chunking apply to large record sets.
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 Voyse 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.
Voyse
Candidate
Bullhorn ATS & CRM
Candidate
1:1Voyse candidate records map directly to Bullhorn Candidate entities. We preserve the Voyse candidate identifier as a custom field voyse_id__c for audit. Core fields (firstName, lastName, email, phone, address) map to Bullhorn Candidate fields with edit type validation applied. Voyse custom properties (skills, availability status, stage flags) migrate to Bullhorn Candidate custom fields or Custom Objects depending on the property cardinality (multi-select migrates to a custom multi-select picklist; structured records migrate to a named Custom Object on the Candidate entity). We validate field edit types against the Bullhorn API field schema before write-back.
Voyse
Contact
Bullhorn ATS & CRM
Contact
1:1Voyse contact records (client-facing or employee contact profiles) map to Bullhorn Contact entities. The Voyse email field becomes the dedupe key during import. We resolve the Company lookup by matching Voyse company name or domain against Bullhorn Corporation name or website. Any Voyse contact without a matching Corporation is held for reconciliation. Contact type distinctions (internal employee, external client contact) map to a Bullhorn custom field or category if the customer has a Contact type taxonomy defined.
Voyse
Company
Bullhorn ATS & CRM
Corporation
1:1Voyse company records (organisations associated with candidates or clients) map to Bullhorn Corporation. The Corporation is the parent entity for Contacts, Job Orders, and Opportunities, so it is migrated first in the dependency chain. We set Corporation.name from Voyse.companyName and Corporation.website from Voyse.companyDomain for dedupe and lookup resolution. Bullhorn Corporation accepts custom fields for industry classification, staff count, and billing contact details.
Voyse
Job
Bullhorn ATS & CRM
Job Order
1:1Voyse job postings or vacancy records map to Bullhorn Job Order (the Bullhorn internal name for job record). Job title, description, location, employment type, and salary fields map directly. The Voyse job status (open, filled, closed) maps to Job Order status in Bullhorn. If Voyse tracks job-to-candidate assignments, we resolve the Candidate lookup during migration. Bullhorn Job Order custom fields capture any Voyse-specific job attributes not covered by standard fields.
Voyse
Placement
Bullhorn ATS & CRM
Placement
1:1Voyse records tracking a candidate placed into a role map to Bullhorn Placement. Placement requires both a resolved Candidate lookup and a resolved Job Order lookup, so it migrates after both parent entities are confirmed in Bullhorn. We map Voyse placement start date, end date, and billing rate to Bullhorn Placement date fields and custom billing fields. Commission tracking in Voyse maps to Bullhorn PlacementCommission records if the customer maintains commission data in Voyse.
Voyse
Employee Profile
Bullhorn ATS & CRM
Candidate + Custom Object
1:manyVoyse employee profiles (records that combine personal data with employment data such as start date, department, manager, and onboarding stage) cannot map to a single Bullhorn entity because Bullhorn separates personal candidate data (Candidate) from placement and employment data (Placement and related Custom Objects). We split the profile into a Bullhorn Candidate record for personal data and a Custom Object (EmployeeData or OnboardingData) for employment attributes including manager, startDate, department, and onboarding stage. The split rule is defined during scoping based on the customer's Voyse data model.
Voyse
Onboarding Stage
Bullhorn ATS & CRM
Custom Object on Candidate or Placement
lossyVoyse onboarding workflow stages (pre-hire, documentation, training, active) have no direct Bullhorn standard field equivalent. We migrate these as a Bullhorn Custom Object attached to the Candidate or Placement record, with stage name, enteredDate, and completedDate fields. Bullhorn ATS edition limits to 2 searchable Custom Objects per entity; if the customer exceeds this, we recommend attaching onboarding data as a bullhornnative Custom Object for searchable stages and non-searchable stage notes as custom fields.
Voyse
Document
Bullhorn ATS & CRM
ContentDocument + ContentVersion
1:1Voyse-uploaded documents (CVs, contracts, onboarding paperwork) migrate as Bullhorn ContentDocument records with ContentVersion for versioned file content. We preserve the original filename and file extension, and link each document to the parent entity (Candidate, Contact, Job Order, or Placement) via ContentDocumentLink. Bullhorn's file size limits (default 25 MB per file; configurable higher for enterprise) apply to the migrated documents.
Voyse
Custom Property
Bullhorn ATS & CRM
Custom Field or Custom Object
lossyVoyse custom properties that are single-value per record map to Bullhorn custom fields on the appropriate entity. Multi-value or structured custom properties (key-value pairs, JSON-like data) map to Bullhorn Custom Objects with a 1:N or 1:1 relationship to the parent entity. We validate each Voyse custom property against Bullhorn's field edit type options (text, number, date, dropdown, multi-select, picker types) during the pre-migration schema audit and flag any that exceed Bullhorn's 55-field per Custom Object limit.
Voyse
Skill
Bullhorn ATS & CRM
Skill
1:1Voyse skill tags stored against candidates migrate to Bullhorn Skill entities. Bullhorn Skills are managed through a dedicated Skills module and linked to Candidate records via CandidateSkill records. We preserve skill name, proficiency level (if available in Voyse), and the date the skill was added or verified. Skills without proficiency in Voyse are imported as Skill with no proficiency rating.
Voyse
User
Bullhorn ATS & CRM
Bullhorn User
1:1Voyse users referenced as owners, assignees, or recruiters on any record map to Bullhorn User entities. We resolve users by email address match. Any Voyse user without a matching Bullhorn User is held in a reconciliation queue for the customer's Bullhorn admin to provision before record import resumes. User permissions, roles, and team assignments require manual configuration in Bullhorn after migration.
Voyse
Engagement
Bullhorn ATS & CRM
Note or Task
lossyVoyse engagement records (notes, comments, activity log entries) attached to candidate or employee profiles migrate to Bullhorn Note entities linked to the parent Candidate or Contact via ContentDocumentLink. Voyse engagement timestamps are preserved as Note.createdDate. Bullhorn does not have a native activity timeline equivalent to some ATS platforms; we use Notes to preserve the engagement record with the original Voyse text content and author attribution.
Voyse
Tag
Bullhorn ATS & CRM
Category or Custom Field
lossyVoyse tags (flat labels attached to candidate or job records) migrate to Bullhorn Category entities or to a custom multi-select picklist field depending on whether the customer uses Bullhorn's native Category taxonomy. Tags used for Boolean flags (active, verified, priority) migrate to Bullhorn custom checkbox fields. The customer chooses the tag strategy during scoping based on whether Bullhorn Categories are already in use in the destination org.
| Voyse | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Candidate | Candidate1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Company | Corporation1:1 | Fully supported | |
| Job | Job Order1:1 | Fully supported | |
| Placement | Placement1:1 | Fully supported | |
| Employee Profile | Candidate + Custom Object1:many | Fully supported | |
| Onboarding Stage | Custom Object on Candidate or Placementlossy | Fully supported | |
| Document | ContentDocument + ContentVersion1:1 | Fully supported | |
| Custom Property | Custom Field or Custom Objectlossy | Fully supported | |
| Skill | Skill1:1 | Fully supported | |
| User | Bullhorn User1:1 | Fully supported | |
| Engagement | Note or Tasklossy | Fully supported | |
| Tag | Category or Custom Fieldlossy | 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.
Voyse gotchas
Catalog category is materially wrong
Operational data lives in BPO-managed third-party tenants
Compliance and PII handling is governed by the MSA
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 edition assessment
We audit the source Voyse account for record counts (Candidates, Companies, Jobs, Placements, Employees, Documents), custom property names and data types, onboarding workflow rule definitions, and any unstructured data fields that lack a clear type assignment. We simultaneously assess the destination Bullhorn edition and available Custom Object headroom. The output is a written migration scope that identifies every object, flags fields that require type resolution or manual reconciliation, and recommends a Bullhorn edition upgrade if the customer's Voyse custom property count exceeds the base ATS Custom Object ceiling.
Schema design and field mapping
We design the destination Bullhorn schema based on the scoping output. This includes provisioning Bullhorn custom fields (with edit types matched to Voyse property types), Custom Objects (named and structured per the customer's Voyse data model, with 55-field limits respected), Category taxonomy (if Tags are in use), and any required custom picklist values. The schema is validated against the Bullhorn API field list before any data is written. We deliver the complete field mapping document for the customer's review before sandbox migration begins.
Sandbox migration and reconciliation
We run a full migration into a Bullhorn Sandbox using production-like record volumes. The customer's Bullhorn admin reconciles record counts (Candidates in, Contacts in, Corporations in, Jobs in, Placements in), spot-checks 20-40 records against the Voyse source, and reviews the custom object and field data to confirm accuracy. Any mapping corrections, custom field additions, or category taxonomy adjustments are made in the sandbox before production migration is scheduled. Bullhorn ATS edition customers with fewer than 2 Custom Objects remaining must confirm their consolidation strategy before proceeding.
User provisioning and owner reconciliation
We extract every distinct Voyse user referenced as an owner, assignee, or recruiter on Candidate, Job, Placement, or engagement records and match by email against the Bullhorn destination org's User table. Users without a matching Bullhorn account are held in a reconciliation queue. The customer's Bullhorn admin provisions missing Users before production migration resumes. Migration cannot proceed past this step because Bullhorn OwnerId references are required on Job Order, Placement, and engagement records.
Production migration in dependency order
We run production migration in record-dependency sequence: Corporations first (parent for Contacts and Jobs), then Contacts and Candidates in parallel (with CorporationId resolved on Contacts), then Job Orders (with CorporationId resolved), then Placements (with CandidateId and JobOrderId resolved), then engagement records (Notes via ContentDocument), then Custom Objects last (with parent entity lookups satisfied). Each phase emits a row-count reconciliation report and a sample record validation before the next phase begins. Bullhorn Bulk API 2.0 handles batches exceeding 1,000 records with exponential backoff on rate limit responses.
Cutover, document validation, and workflow inventory handoff
We freeze Voyse record 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 onboarding workflow inventory document to the customer's Bullhorn admin team. We do not rebuild Voyse onboarding workflows as Bullhorn Automation; that work is documented separately for the admin to configure post-migration. We support a five-business-day hypercare window to resolve any record linkage issues or field-level data gaps raised by the customer's team.
Platform deep dives
Voyse
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate HRMS migration. 4 of 7 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Voyse and Bullhorn ATS & CRM.
Object compatibility
4 of 7 objects need a manual workaround.
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
Voyse: Determined by the underlying LiveVox / DOMO / other tenant APIs, not by Voyse itself..
Data volume sensitivity
Voyse 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 Voyse to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Voyse 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 Voyse
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.