HRMS migration
Field-level mapping, validation, and rollback between Workstream and BambooHR. We move data and schema; workflows are rebuilt natively in BambooHR.
Workstream
Source
BambooHR
Destination
Compatibility
6 of 11
objects map 1:1 between Workstream and BambooHR.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Workstream to BambooHR is a shift from a location-centric to an employee-centric HR data model. Workstream organizes around Locations and Positions assigned to those locations; BambooHR organizes around Employees with job titles and department assignments. The migration requires flattening Workstream's multi-role-per-employee structure into a single BambooHR employment record while preserving compensation, schedule, and location context. We extract all three Workstream lifecycle tabs (Active, Onboarding, Offboarded) explicitly since offboarded records are omitted by default exports, and we carry termination dates and reasons into BambooHR's employee status fields. Binary document files (tax forms, ID scans, signed onboarding packets) are not migratable through Workstream's CSV export tool; we document completion status as fields and flag document packets for manual download. Hiring pipeline stages migrate as BambooHR job opening stages, but BambooHR's ATS is a separate paid add-on, so active recruiting volume factors into the pricing conversation before migration begins.
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 Workstream 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.
Workstream
Team Members (Employees)
BambooHR
Employee
1:1Workstream Employees map directly to BambooHR Employee records. Standard fields (first name, last name, email, phone, hire date, job title) migrate as typed fields. Workstream lifecycle status (Active, Onboarding, Offboarded) maps to BambooHR employment status: Active and Onboarding map to Active, Offboarded maps to a terminated status with the termination date and reason carried into BambooHR's termination_date and termination_reason fields. Workstream's location assignment migrates to a custom BambooHR field (e.g., assigned_location__c) since BambooHR organizes by department rather than physical location.
Workstream
Position
BambooHR
Job Title + Department
1:1Workstream Position records (job openings linked to a specific location with title, pay rate, schedule type, and job description) map to BambooHR job titles and department assignments. The position's location becomes a custom location field on the employee record rather than a native BambooHR organizational unit. We extract pay rate and schedule type from the Position record and map them to BambooHR's compensation fields and a schedule custom field respectively. Active positions with no assigned employee become job opening records in BambooHR's ATS if the add-on is active; otherwise they are documented as positions requiring job opening setup.
Workstream
Application
BambooHR
Job Opening + Applicant (ATS add-on)
1:1Workstream Applications (candidate submissions tied to a specific Position with contact info, screening answers, communication history, and pipeline status) map to BambooHR Job Opening and Applicant records. The migration requires the BambooHR ATS add-on ($99-$199/month extra). If the ATS add-on is not active at the destination, we migrate application metadata as custom fields on the originating Position record for the customer's admin to create job openings manually. Pipeline stage names and order migrate from Workstream to BambooHR job opening statuses.
Workstream
Position Template
BambooHR
Job Title Template (custom field or note)
lossyWorkstream Position Templates are reusable job definitions that feed multiple Position instances. We flatten Position Templates into their instantiated Position records during export, preserving the template origin as a custom field (e.g., position_template_source__c) on each position or employee record. BambooHR does not have a native template concept, so reusable job definitions are recreated as BambooHR job titles and documented in the handoff package for the customer's admin to configure as templates if needed.
Workstream
Custom Fields
BambooHR
Custom Fields
lossyWorkstream custom fields (text, date, number, and dropdown formats scoped by role, location, or department) map to BambooHR custom employee fields. Because Workstream custom fields can be present on one employee record and absent on another within the same organization, we profile field-level presence during scoping and create BambooHR custom fields only for fields that exist on at least one record. Field visibility in BambooHR is set org-wide with field-level access rules applied post-migration. Dropdown fields map to BambooHR dropdown custom fields; text and date fields map to their equivalents.
Workstream
Location
BambooHR
Custom Field (assigned_location__c) or Department
lossyWorkstream Locations are the primary organizational unit with their own configuration, manager, and address. BambooHR does not have a native Locations concept. We map Workstream location names and addresses to a custom employee field (assigned_location__c) or, if the customer has a small fixed set of physical locations, we create BambooHR Departments named after each Workstream Location and assign employees accordingly. Location manager information migrates as a custom field on the location or to a manager reference field.
Workstream
Role and Assignment
BambooHR
Custom Fields (role_multi__c, location_role__c)
lossyWorkstream Role assignments scoped to locations determine pay rates and schedule authority per role-location combination. Since BambooHR ties each employee to a single job title and department, multi-role employees (common in Workstream for part-time hourly workers who cover multiple shifts or roles) are handled by creating a custom multi-select text field (e.g., roles_and_locations__c) that concatenates the role-location combinations with pay rates, preserving the compensation and scheduling context that exists separately in Workstream.
Workstream
Payroll Data (pay rates and schedules)
BambooHR
Pay Rate and Employment Info Custom Fields
1:1Workstream stores pay rates, pay schedules, and payroll sync status as employee properties because Workstream integrates with third-party payroll providers rather than running payroll internally. We map pay rate fields, pay frequency, and payroll sync status to BambooHR compensation custom fields. BambooHR Payroll (a separate product with its own pricing) may be the destination payroll system; if so, we coordinate pay rate mapping to BambooHR's native compensation fields. If the customer uses a third-party payroll outside of BambooHR, the pay rate fields migrate as custom fields for the customer's payroll admin to configure.
Workstream
Offboarded Employee History
BambooHR
Terminated Employee Records
1:1Workstream's data export separates Active, Onboarding, and Offboarded employees into distinct tabs. Offboarded records contain termination date, termination reason, and final status. We include offboarded history in the migration scope by default (unless the customer opts out) and migrate these records as BambooHR Employee records with status set to terminated, termination_date populated, and termination_reason carried into a custom field. Preserving this history is critical for compliance records and for maintaining accurate employment verification data.
Workstream
Hiring Pipeline Stages
BambooHR
Job Opening Statuses
lossyWorkstream's configurable hiring pipeline stages (Applied, Screening, Interview, Offer, Hired) map to BambooHR job opening statuses. We extract the full pipeline definition including stage names, order, and any conditional logic and document it in the migration handoff package. If BambooHR ATS is active, we configure the corresponding job opening statuses in BambooHR's ATS settings during the schema setup phase. Stage-level customization (e.g., stage-specific questions or automated actions in Workstream) does not migrate and is documented for admin rebuild.
Workstream
Binary Documents (Tax Forms, IDs, Onboarding Files)
BambooHR
None
1:1Workstream stores tax forms, ID scans, and signed onboarding documents as binary attachments not accessible via the CSV export tool. We do not migrate binary document files. Employee metadata about document submission status (which forms were completed, submission dates) migrates as a field on the employee record, and we provide the customer with a document download checklist specifying all document packets to retrieve manually from Workstream before cutover. BambooHR supports file attachments on employee records via its UI and API for post-migration manual upload.
| Workstream | BambooHR | Compatibility | |
|---|---|---|---|
| Team Members (Employees) | Employee1:1 | Fully supported | |
| Position | Job Title + Department1:1 | Fully supported | |
| Application | Job Opening + Applicant (ATS add-on)1:1 | Fully supported | |
| Position Template | Job Title Template (custom field or note)lossy | Fully supported | |
| Custom Fields | Custom Fieldslossy | Mapping required | |
| Location | Custom Field (assigned_location__c) or Departmentlossy | Fully supported | |
| Role and Assignment | Custom Fields (role_multi__c, location_role__c)lossy | Fully supported | |
| Payroll Data (pay rates and schedules) | Pay Rate and Employment Info Custom Fields1:1 | Fully supported | |
| Offboarded Employee History | Terminated Employee Records1:1 | Fully supported | |
| Hiring Pipeline Stages | Job Opening Statuseslossy | Mapping required | |
| Binary Documents (Tax Forms, IDs, Onboarding Files) | None1: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.
Workstream gotchas
Location-based pricing does not follow employee headcount
Offboarded employee data requires explicit scoping
Custom field schemas vary by location and role scope
Binary document files are not migratable
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 data export scoping
We audit the Workstream tenant across active locations, employee lifecycle distribution (Active, Onboarding, Offboarded counts), position count and template usage, application backlog volume, custom field inventory with per-record presence profiling, and payroll integration configuration. We confirm whether BambooHR ATS licensing is active or required. The discovery output is a written migration scope with record counts per object, a custom field inventory list with presence rates, and a BambooHR ATS decision checkpoint if applications are in scope.
Source data extraction and transformation
We extract Workstream data via its CSV export tool, querying all three employee lifecycle tabs explicitly and extracting Position records, Position Template metadata, Application records (with applicant details and pipeline status), and custom field data. We transform Workstream's location-centric schema into the employee-centric model: we flatten multi-role-per-employee data into concatenated custom fields, map termination dates and reasons from the Offboarded tab to BambooHR's employee status fields, and remap pay rate and schedule data to BambooHR compensation custom fields. The extraction outputs structured CSV files per object with resolved field types and a per-record presence flag for optional fields.
BambooHR custom field and department setup
We create BambooHR custom employee fields corresponding to Workstream custom fields (matching type: text, date, number, dropdown) and configure field-level visibility rules to prevent blank-field confusion on records where the source field was not populated. If the customer chooses department-based location mapping, we create BambooHR Departments named after Workstream Locations. We configure job opening statuses in BambooHR ATS to match Workstream pipeline stages if the ATS add-on is active. All schema setup happens in the customer's live BambooHR tenant or a sandbox environment for validation before production migration.
Sandbox migration and reconciliation
We run a full migration into a BambooHR sandbox (or a staging pass in the live tenant if no sandbox is available) using production data volume. The customer's HR lead reconciles record counts across all three Workstream lifecycle tabs against BambooHR employee records, spot-checks 25-50 random employee records for field-level accuracy (especially pay rates, termination dates, custom fields, and role-location concatenations), and validates that offboarded employee history is present. Any mapping corrections are applied before the production migration begins.
Production migration in dependency order
We run production migration in dependency order: first, employee records with Active and Onboarding status; second, offboarded employee records with termination dates and reasons; third, custom field data linked by employee record ID; fourth, Position records mapped to job titles and department assignments; fifth, Application records into BambooHR ATS if the add-on is active. Each phase emits a row-count reconciliation report before the next phase begins. Any rejected records (e.g., due to missing required fields) are isolated, corrected, and retried within the same phase before moving forward.
Cutover, document checklist handoff, and automation rebuild inventory
We freeze Workstream write access during cutover, run a final delta migration of any records modified during the migration window, and enable BambooHR as the system of record. We deliver the document download checklist specifying all document packets to retrieve manually from Workstream, the job opening status mapping document for BambooHR ATS configuration, and a written inventory of any Workstream automations (SMS workflows, automated reminders) that have no BambooHR native equivalent and require admin rebuild. We support a one-week post-migration reconciliation window for record corrections reported by the customer's HR team.
Platform deep dives
Workstream
Source
Strengths
Weaknesses
BambooHR
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 Workstream and BambooHR.
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
Workstream: Not publicly documented on developer portal.
Data volume sensitivity
Workstream 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 Workstream to BambooHR migration scoping. Not seeing yours? Book a call.
Walk through your Workstream 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 Workstream
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.