HRMS migration
Field-level mapping, validation, and rollback between Voyse and BambooHR. We move data and schema; workflows are rebuilt natively in BambooHR.
Voyse
Source
BambooHR
Destination
Compatibility
8 of 12
objects map 1:1 between Voyse and BambooHR.
Complexity
CModerate
Timeline
2-3 weeks
Overview
Moving from Voyse to BambooHR is primarily a growth-stage transition. Voyse is built for UK-based software teams under ten employees and holds a 5.0 G2 rating for that niche; organisations that scale beyond that headcount or expand geographically find BambooHR's per-employee pricing model, its ATS and onboarding module, and its 150-plus integration ecosystem a more sustainable long-term platform. We extract employee records and any custom properties from Voyse's export API, flag undocumented field types during scoping, and map each to the corresponding BambooHR Employee field or custom field. Onboarding workflows, document uploads, and stage history are preserved in the migration package. BambooHR's BambooHR Payroll, Benefits Administration, and Employer of Record (powered by Remote) modules are outside the data migration scope and require separate configuration after cutover. We do not migrate Voyse workflows or onboarding automation as code; we deliver a written inventory of every active workflow for the customer's admin to rebuild in BambooHR's checklist and onboarding tools.
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 BambooHR, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Voyse
Employee Profile
BambooHR
Employee
1:1Voyse employee records map directly to BambooHR Employee. The core fields (first name, last name, email, hire date, department, job title, employment status) migrate as typed BambooHR Employee fields. Any custom properties on the Voyse employee record are flagged during scoping, and undocumented field types are written to a custom field inventory for the customer's admin to decide whether each maps to a BambooHR custom field or is excluded. The BambooHR Employee API requires an active employment status to populate the employee directory correctly.
Voyse
Candidate Record
BambooHR
Applicant (ATS module)
1:1Voyse ATS candidate records map to BambooHR Applicants when the BambooHR ATS module is in scope. The Voyse candidate stage pipeline maps to BambooHR Job Application Status values. If the destination BambooHR instance does not include the ATS module, candidate records are migrated as Employee records with a custom field voyse_candidate_source__c set to TRUE and the original application date preserved. Resume files migrate as ContentDocument records attached to the Applicant.
Voyse
Job Opening
BambooHR
Job
1:1Voyse job postings map to BambooHR Jobs. The Voyse job status (open, closed, archived, draft) maps to BambooHR Job Status. Job description, requirements, and department assignments migrate to the corresponding BambooHR Job fields. Job openings are created in BambooHR before any Applicant records are imported so that the Job lookup is satisfied at the time of Applicant insert.
Voyse
Department
BambooHR
Department
1:1Voyse department assignments on employee and job records map to BambooHR Department. Department is a lookup in BambooHR; we extract every distinct department value from Voyse during scoping, create the corresponding BambooHR Department records first, and use the resolved BambooHR Department ID as the foreign key on every Employee record. This ordering is required because BambooHR enforces referential integrity on the Department lookup.
Voyse
Location
BambooHR
Location
1:1Voyse location data (office name, city, region) maps to BambooHR Location. Location in BambooHR is a standalone object used for org chart placement and time-off scheduling context. We extract distinct location values from Voyse employee records during scoping and pre-create the corresponding Location entries before Employee import.
Voyse
Employment Status
BambooHR
Employment Status
1:1Voyse employment status values (active, inactive, on leave, terminated) map to BambooHR Employment Status with a direct enumeration match. Termination date and termination reason from Voyse migrate to BambooHR Termination Date and Termination Type fields. We preserve the original Voyse employment status as a custom field voyse_original_status__c for audit purposes if the enumeration values do not map cleanly.
Voyse
Onboarding Document
BambooHR
New Hire Packet (Employee File)
lossyVoyse onboarding documents (uploaded files, signed forms, stage completion timestamps) migrate as ContentDocument records attached to the corresponding BambooHR Employee via ContentDocumentLink. Document names are preserved with a voyse_onboarding_ prefix. If Voyse stores onboarding stage completion as a structured field rather than a document, we map it to a BambooHR custom field onboarding_stage__c. The BambooHR New Hire Packet template is outside migration scope and is configured by the customer's admin post-cutover.
Voyse
Onboarding Workflow
BambooHR
Onboarding Checklist
lossyVoyse onboarding workflows do not migrate as automation code. We deliver a written inventory of every active Voyse onboarding workflow with its trigger, stage sequence, and assigned tasks. BambooHR's Onboarding Checklist builder is the replacement tool; the customer's HR admin recreates the workflow as a checklist template in BambooHR. Stage history (completed steps and timestamps) migrates as a custom field voyse_onboarding_history__c holding a JSON log of the original stage progression.
Voyse
Custom Property (Employee)
BambooHR
Custom Field (Employee)
lossyVoyse custom properties on Employee records (beyond the standard fields) are enumerated during scoping. We create matching BambooHR custom fields on the Employee object before migration begins. Field types are mapped: Voyse text properties become BambooHR short-text or long-text fields; Voyse date properties become BambooHR date fields; Voyse numeric properties become BambooHR number fields; Voyse multi-select properties become BambooHR multiple-select fields. Custom field naming follows the voyse_ prefix convention for traceability.
Voyse
Custom Property (Candidate)
BambooHR
Custom Field (Applicant)
lossyVoyse custom properties on candidate records map to BambooHR Applicant custom fields when the ATS module is active. If the destination BambooHR instance does not include ATS, candidate custom properties are stored as Employee custom fields with a voyse_candidate_field__c naming prefix. We enumerate every distinct custom property during scoping and create the destination schema before any record import.
Voyse
Owner
BambooHR
User
1:1Voyse Owners (recruiters, HR admins, hiring managers) referenced on candidate and job records map to BambooHR User by email address match. We extract every distinct Voyse owner email during scoping, match against the BambooHR User table, and hold any unmapped owners in a reconciliation queue. The customer's BambooHR admin provisions missing Users before record import resumes. Active/inactive status in BambooHR is set to match the original Voyse owner status.
Voyse
Time-Off Record
BambooHR
Time Off
1:1Voyse time-off records (PTO, sick leave, approved absences) map to BambooHR Time Off entries. The Voyse absence type maps to BambooHR Time Off Type, the start and end dates migrate directly, and the status (approved, pending, denied) maps to BambooHR status values. If Voyse stores accrual balances, we create BambooHR Time Off policies as a setup step before balance records are imported.
| Voyse | BambooHR | Compatibility | |
|---|---|---|---|
| Employee Profile | Employee1:1 | Fully supported | |
| Candidate Record | Applicant (ATS module)1:1 | Fully supported | |
| Job Opening | Job1:1 | Fully supported | |
| Department | Department1:1 | Fully supported | |
| Location | Location1:1 | Fully supported | |
| Employment Status | Employment Status1:1 | Fully supported | |
| Onboarding Document | New Hire Packet (Employee File)lossy | Fully supported | |
| Onboarding Workflow | Onboarding Checklistlossy | Fully supported | |
| Custom Property (Employee) | Custom Field (Employee)lossy | Fully supported | |
| Custom Property (Candidate) | Custom Field (Applicant)lossy | Fully supported | |
| Owner | User1:1 | Fully supported | |
| Time-Off Record | Time Off1: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.
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
BambooHR gotchas
Undocumented API rate limits can trigger 503 errors
Per-employee pricing model requires active record count verification
API credentials must be sent on every request to avoid extra round trips
Custom field schema varies per account and requires manual inventory
Document and attachment exports are not covered by standard report exports
Pair-specific challenges
Migration approach
Discovery and scoping
We audit the Voyse instance across employee record count, candidate volume, job opening count, active onboarding workflows, custom properties (enumerated by type), document attachment count, and owner assignments. We pair this with a BambooHR tier assessment: Essentials ($6-$9/employee/mo) covers core HRIS, employee records, and time-off; Advantage ($8-$12/employee/mo) adds ATS, advanced onboarding, and custom workflows. We confirm whether ATS is required and whether BambooHR Payroll or Benefits Administration are in scope, as these are separate products that do not inherit migrated data automatically. The discovery output is a written migration scope document with record counts per object and a custom field inventory.
Schema pre-creation in BambooHR
Before any data moves, we create the BambooHR destination schema. This includes pre-creating every Department and Location entry (resolved from Voyse data) so that the Employee import can satisfy those foreign-key lookups. We create all required BambooHR custom fields (Employee and Applicant) matching the Voyse custom property inventory, with field types mapped from Voyse to BambooHR equivalents. If BambooHR ATS is in scope, we pre-create the Job openings so that Applicant records have a valid Job lookup at insert time. We also configure time-off policies if accrual balances are migrating.
Sandbox validation (optional for 50+ employee migrations)
For migrations with 50 or more active employees or multiple custom fields, we run a Sandbox migration first using a representative data volume. The customer's HR lead spot-checks 15-25 random employee records against the Voyse source, validates that department and location lookups resolved correctly, and confirms that custom fields populated as expected. We deliver a reconciliation report with record counts per object and per-field validation. Any mapping corrections are applied to the production migration script before cutover.
Owner and user provisioning reconciliation
We extract every distinct Voyse owner email referenced on candidate records, job openings, and onboarding assignments. Each email is matched against the BambooHR User table by email address. Owners without a matching BambooHR User are listed in a reconciliation report for the customer's admin to provision. We cannot import records with an OwnerId that points to a non-existent user; provisioning must complete before the migration script runs in production.
Production migration in dependency order
We run production migration in record-dependency order: Departments and Locations (no dependencies), then Employees (with DepartmentId and LocationId resolved), then Jobs (if ATS is in scope), then Applicants (with JobId and OwnerId resolved), then Time Off records, then document ContentDocuments with ContentDocumentLinks. Onboarding stage history migrates as a custom JSON field after Employee import. Each phase emits a row-count reconciliation report; the migration pauses if record rejection exceeds a 1 percent threshold so that the root cause is identified before the next phase begins.
Cutover, validation, and workflow handoff
We freeze Voyse writes at cutover, run a final delta pass for any records modified during the migration window, then hand off BambooHR as the system of record. We deliver the onboarding workflow inventory document to the customer's HR admin for rebuild in BambooHR's checklist builder. We support a three-day hypercare window to resolve reconciliation issues raised during the first payroll or onboarding cycle. We do not configure BambooHR Payroll, Benefits Administration, or the Employer of Record module as part of the migration scope; these require separate product configuration sessions.
Platform deep dives
Voyse
Source
Strengths
Weaknesses
BambooHR
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 BambooHR.
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 BambooHR migration scoping. Not seeing yours? Book a call.
Walk through your Voyse to BambooHR 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 BambooHR
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.