HRMS migration
Field-level mapping, validation, and rollback between JOIN and BambooHR. We move data and schema; workflows are rebuilt natively in BambooHR.
JOIN
Source
BambooHR
Destination
Compatibility
7 of 10
objects map 1:1 between JOIN and BambooHR.
Complexity
BStandard
Timeline
3-5 weeks
Overview
JOIN and BambooHR serve different stages of the hiring lifecycle. JOIN is a recruiting ATS built around Job postings, Candidate pipelines, and interview scorecards. BambooHR is a core HRIS that manages Employees, Onboarding, Time Off, Benefits, and optional ATS job listings. The migration from JOIN to BambooHR is therefore a two-part challenge: transferring recruiting data into BambooHR's optional ATS module (where supported) and managing the gap where JOIN's candidate-centric records must be restructured as employee records in BambooHR's HRIS. We handle the parent-record resolution (Job linking to the correct BambooHR department or location), the candidate-to-employee field mapping, the stage-history preservation as custom metadata, and the resume file ingestion. We do not migrate JOIN's Activity timeline (email threads, scheduled events, interview activity) because JOIN's API does not expose a bulk export endpoint for that data. We deliver a written handoff of any recruiting workflow, scorecard template, or job board distribution list requiring manual rebuild in BambooHR.
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 JOIN 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.
JOIN
Job
BambooHR
Job (BambooHR ATS) or Department/Position
lossyJOIN Jobs (title, description, department, location, employment type, posting status) map to BambooHR ATS Job postings if the customer activates BambooHR's optional ATS module. If BambooHR ATS is not active, Jobs map to a structured Department plus a custom Position field that captures employment type and location metadata. We extract the full job record during scan, identify which Jobs are still open versus archived, and configure the destination accordingly during scoping. OPEN jobs migrate first; closed jobs migrate as historical reference records.
JOIN
Candidate
BambooHR
Employee (BambooHR ATS applicant)
1:1JOIN Candidate records (contact info, work history, education, skills tags, source attribution, custom fields) map to BambooHR Employee records or BambooHR ATS Applicants depending on whether the candidate was hired. Hired Candidates become BambooHR Employees with employment start date populated from the JOIN offer or hire-stage date. Unhired candidates who need to be preserved become BambooHR ATS Applicants linked to the corresponding Job. We resolve the hired-versus-not-hired flag from the JOIN pipeline stage (Offer, Rejected, or Application status fields) before import.
JOIN
Application
BambooHR
Employment History or ATS Application
lossyJOIN Applications (Candidate-to-Job join record with applied date, referral source, status) map to BambooHR ATS Application records if the customer uses BambooHR ATS, or to Employment History entries on the BambooHR Employee record if the candidate was hired. Applied date migrates as hire application date; referral source migrates as a custom Employee field. Status mapping uses the JOIN stage name (Applied, Screening, Interview, Offer, Rejected) to set the corresponding BambooHR ATS status or Employment status field.
JOIN
Pipeline Stage
BambooHR
Job Status or Employee Hire Stage
lossyJOIN stage sequences (which vary per Job and per plan) migrate as metadata attached to the Job or Employee record rather than as native stage gates, because BambooHR's ATS module does not enforce a custom stage pipeline the way JOIN does. We preserve the full stage-entry date sequence as a custom field group (stage_1_entry_date, stage_2_entry_date, etc.) so that timing context is not lost. Where the destination is BambooHR without ATS, stage history lands as a free-text notes block on the Employee record.
JOIN
Scorecard / Interview Feedback
BambooHR
Employee Custom Fields or Document Attachment
1:1Structured interview scorecards and free-text evaluation notes migrate as a custom Employee field (long-text type) or as a linked Document record in BambooHR's document storage, depending on the scorecard complexity. Rubric-based scorecards with numeric ratings are flattened into text format (Interviewer, Rating, Comments per criterion) and preserved in reading order. The destination format is agreed during scoping.
JOIN
Custom Fields (Candidate)
BambooHR
Custom Fields (Employee)
1:1JOIN Candidate custom fields (employer-defined, no standardised schema) map to BambooHR Employee custom fields created via BambooHR's Custom Field Builder (available from Essentials plan). We extract the full JOIN custom field schema during scan, surface each field at scoping, and the customer confirms the intended BambooHR equivalent (text, number, date, dropdown, checkbox). Fields with no clear BambooHR equivalent land as free-text custom properties and can be restructured post-migration. JOIN custom fields on Jobs map to Job (ATS) custom fields or Department metadata.
JOIN
Resume / Attachment
BambooHR
Employee Document (Resume)
1:1Candidate resume files export from JOIN and upload to BambooHR as Employee Documents with the Document Type set to Resume. JOIN returns files with non-standard filenames derived from internal IDs; we rename to the convention CandidateName_Position_ApplicationDate before ingestion to prevent filename collisions in bulk uploads and ensure files are identifiable in BambooHR's document list. Supporting documents (portfolios, cover letters) migrate as separate Document records with appropriate type labels.
JOIN
Owner
BambooHR
Employee (User)
1:1JOIN Owners (recruiters, hiring managers) referenced on Candidates and Applications map to BambooHR Employees who correspond to the same individuals. We match by email address. Any JOIN Owner without a matching BambooHR Employee record is held in a reconciliation queue for the customer's admin to provision the corresponding Employee record before migration continues, because BambooHR Employee is a required parent for document and document-type assignments on records.
JOIN
Activity / Communication History
BambooHR
N/A
1:1JOIN's internal email threads, scheduled interview events, and activity log entries cannot migrate because JOIN does not expose a documented bulk export endpoint for activity data. We flag this gap at scoping, instruct the customer on the manual CSV export path from the JOIN dashboard, and ingest that CSV as a reference document attached to the Employee or ATS Applicant record. Email templates from JOIN's communication tools are inventoried separately as a text handoff for the customer to rebuild in BambooHR's email template system.
JOIN
Job Board Distribution List
BambooHR
N/A (manual rebuild)
1:1JOIN's job board distribution configuration (which of the 250+ boards each Job is posted to, posting dates, and status) has no direct BambooHR equivalent. BambooHR ATS supports a limited built-in job board and optional paid job board integrations but does not replicate JOIN's multi-board distribution model. We deliver a written inventory of each JOIN Job's distribution list as a handoff document for the customer's admin to recreate manually or through a third-party job aggregator.
| JOIN | BambooHR | Compatibility | |
|---|---|---|---|
| Job | Job (BambooHR ATS) or Department/Positionlossy | Fully supported | |
| Candidate | Employee (BambooHR ATS applicant)1:1 | Fully supported | |
| Application | Employment History or ATS Applicationlossy | Fully supported | |
| Pipeline Stage | Job Status or Employee Hire Stagelossy | Fully supported | |
| Scorecard / Interview Feedback | Employee Custom Fields or Document Attachment1:1 | Fully supported | |
| Custom Fields (Candidate) | Custom Fields (Employee)1:1 | Fully supported | |
| Resume / Attachment | Employee Document (Resume)1:1 | Fully supported | |
| Owner | Employee (User)1:1 | Fully supported | |
| Activity / Communication History | N/A1:1 | Fully supported | |
| Job Board Distribution List | N/A (manual rebuild)1: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.
JOIN gotchas
Activity log and communication history are not exported via JOIN API
Pipeline stage names vary per job and per plan
Custom fields on Candidates require manual equivalence review
Resume and attachment export format is non-standard
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 source JOIN account: active and archived Jobs, total Candidates, Application volume, custom field schema across Candidates and Jobs, pipeline stage sequences per job, scorecard templates, Owner assignments, and attachment file counts. We confirm whether BambooHR ATS is active or will be activated as part of the migration, because this determines how aggressively we can map recruiting-specific objects. We deliver a written migration scope document with a record-count estimate, a list of JOIN custom fields requiring a BambooHR equivalent, and a flag list of data that JOIN cannot export via API (Activity history, email threads). We identify any JOIN Owners without a corresponding BambooHR Employee and raise the provisioning requirement before migration begins.
Schema design and BambooHR custom field provisioning
We design the destination BambooHR schema. This includes creating Employee custom fields to receive JOIN Candidate data, configuring Department and Location records to map from JOIN Job data, and setting up BambooHR ATS Job postings (if applicable) with the correct department and position mapping. We deploy custom fields via BambooHR's Custom Field Builder interface. We also build the stage-history preservation template (custom fields or document-attached notes block) agreed during scoping. The schema is validated in BambooHR's sandbox or test environment before any production data moves.
Test migration and reconciliation
We run a full test migration into a BambooHR test account using production-like record volume. The customer's HR lead reconciles record counts (Employees in, Job postings in, Documents in), spot-checks 25-50 random records against the JOIN source, and reviews the stage-history attachment format. Any field mapping corrections, custom field type adjustments, or document naming issues are resolved here. This step prevents data-quality issues from reaching production.
File export and normalisation from JOIN
We export all candidate resume files and supporting attachments from JOIN, normalise filenames to the CandidateName_PositionTitle_ApplicationDate convention, and batch them for ingestion. We simultaneously extract the Activity and Communication history CSV from the JOIN dashboard (manual step guided by our scoping instructions). This parallel work reduces the overall migration timeline by ensuring files and activity data are ready before the API-driven record migration begins.
Production migration in dependency order
We run production migration in record-dependency order: Departments and Locations (mapped from JOIN Job data), Employees (from JOIN Candidates, split into hired and not-hired), ATS Jobs (mapped from JOIN Jobs, if BambooHR ATS is active), ATS Applications (from JOIN Applications, if ATS is active), Scorecards and Interview Feedback (as custom Employee fields or Document attachments), Custom Field data for each record, and Resume files as Employee Documents. Each phase emits a row-count reconciliation report before the next phase begins. Owner resolution runs throughout, holding records with unresolved Owner references in a queue.
Cutover, validation, and workflow rebuild handoff
We freeze JOIN write access during cutover, run a final delta migration of any records modified during the migration window, then set BambooHR as the system of record. We deliver the Activity history CSV (from the manual JOIN export) as a reference document attached to each relevant Employee record. We deliver a written inventory of recruiting workflows, scorecard templates, and job board distribution lists requiring manual rebuild in BambooHR ATS, including any BambooHR ATS feature gaps that require a third-party tool. We support a three-day hypercare window for reconciliation issues and then hand off. We do not rebuild recruiting workflows, scorecard templates, or job board distribution lists as part of the migration scope; these are separate workstreams for the customer's HR admin.
Platform deep dives
JOIN
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 JOIN 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
JOIN: Not publicly documented.
Data volume sensitivity
JOIN 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 JOIN to BambooHR migration scoping. Not seeing yours? Book a call.
Walk through your JOIN 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 JOIN
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.