HRMS migration
Field-level mapping, validation, and rollback between flair.hr and BambooHR. We move data and schema; workflows are rebuilt natively in BambooHR.
flair.hr
Source
BambooHR
Destination
Compatibility
10 of 12
objects map 1:1 between flair.hr and BambooHR.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from flair.hr to BambooHR means leaving the Salesforce platform entirely. flair.hr stores every HR object on Salesforce standard and custom objects accessed via the Salesforce REST API; BambooHR is a standalone cloud HRIS with its own employee database, onboarding flow, time-off engine, and benefits module. We export from the customer's Salesforce instance using the connected app credentials scoped to the flair package, then map the data into BambooHR's employee, job, time-off, and performance objects. The migration requires upfront schema discovery to detect the active time-tracking model (custom TimeEntry object or standard Event/Task), enumerate custom flair fields for BambooHR custom-field equivalents, and resolve manager lookups before import. We do not migrate flair Workflows, Salesforce Flow step sequences, payroll runs, or career portal pages as these require manual rebuild in BambooHR or direct flair support intervention. BambooHR's custom field model has API limitations that we surface during scoping to prevent import failures post-migration.
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 flair.hr 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.
flair.hr
Employee
BambooHR
Employee
1:1flair Employees are Salesforce Contacts with flair-specific custom fields for employment details. We export via the Salesforce REST API using the connected app scoped to the flair namespace. Fields including hire date, job title, employment status, manager (as Contact lookup), department, and cost center map to BambooHR employee profile fields. We resolve the Salesforce manager Contact lookup to a BambooHR supervisor relationship during the transform step before import. Custom flair employment fields require schema discovery to enumerate and map to BambooHR custom fields.
flair.hr
Candidate / Job Application
BambooHR
Applicant
1:1Candidates in flair can be stored as Salesforce Leads or as custom JobApplication objects depending on the deployment configuration. We inspect the org schema during discovery to identify the active candidate object, then export accordingly. BambooHR's applicant record accepts name, contact info, job applied to, status, source, and custom fields. Application history and stage progression migrate as status records on the Applicant object. Active job postings from flair's Position objects link to BambooHR job openings by title and location match.
flair.hr
Position
BambooHR
Job
1:1flair Positions are Salesforce custom objects representing job openings with fields for title, department, location, employment type, and headcount. We map Position title to BambooHR Job name, Position employment type to Job employment status, and Position location to a BambooHR location lookup. Open and closed position status migrates to BambooHR Job status (Open/Closed). Compensation details stored in custom Position fields map to BambooHR custom fields on the Job record if configured.
flair.hr
Department
BambooHR
Department
1:1flair Departments map directly to BambooHR Departments. We preserve the full department hierarchy (parent department relationships) by resolving parent department IDs during the import. Each Employee record is linked to its owning department via the BambooHR department lookup. Departments with associated cost-center assignments in flair carry those as department-level custom fields in BambooHR.
flair.hr
Location
BambooHR
Location
1:1flair Locations are custom objects representing physical or legal-entity work sites with address, country, timezone, and cost-center metadata. We create BambooHR Locations with address, country, and timezone preserved. Multi-country and multi-subsidiary configurations in flair require a separate BambooHR Location record per site.
flair.hr
Absence
BambooHR
Time Off
1:1flair Absence records are custom objects tracking leave type, start and end dates, approval status, and linked employee lookups. We migrate the full absence history including pending and approved records into BambooHR Time Off. Leave type names from flair map to BambooHR Time Off Type values (PTO, Sick, Personal, etc.), which the customer configures during BambooHR setup. Historical approved absences import with original dates and leave-type assignments.
flair.hr
Time Entry
BambooHR
Time Tracking
1:1flair uses either a custom TimeEntry object or standard Salesforce Event/Task records for time tracking depending on the deployment version. We detect the underlying model via schema describe during discovery and apply the appropriate field mapping. Hours, project codes, and cost-center assignments map to BambooHR time tracking entries. Custom time-tracking fields from flair's custom TimeEntry object require BambooHR custom field equivalents, which are limited to certain field types per the BambooHR API. Large time-entry datasets (over 100,000 rows) use batched import with API rate-limit handling.
flair.hr
Document
BambooHR
File
1:1flair document storage uses Salesforce Files (ContentDocument) and ContentDocumentLink relationships to employee or position records. We export the binary file content and metadata via the Salesforce API and attach them as BambooHR Employee Documents linked to the corresponding employee record. Large document volumes require volume-based scoping and may exceed typical migration timelines if not flagged during discovery.
flair.hr
Performance Review
BambooHR
Performance Review
lossyPerformance review cycles, goals, OKRs, and feedback records are custom objects in flair linked to Employees. BambooHR supports one review type per cycle (self-assessment, manager assessment, goals, 360). If the customer's flair instance uses multiple simultaneous review cycle templates, we consolidate into BambooHR's single review type, mapping cycle name, review period, and ratings. Rating scale values require cross-walking per the customer's configured flair scale before import. Historical completed reviews migrate as read-only records.
flair.hr
Engagement Survey
BambooHR
Employee Satisfaction
1:1Survey questions, response sets, and aggregate eNPS scores migrate as BambooHR Employee Satisfaction records. Individual anonymous survey responses migrate as aggregate summary records because direct attribution is not available and BambooHR's satisfaction module does not store per-question employee-level responses. Survey metadata (survey name, date, participation rate) carries forward. If flair stores identifiable individual responses, those map to BambooHR custom fields if configured; anonymous-only surveys carry as aggregate.
flair.hr
Custom Objects
BambooHR
Custom Fields
lossyflair's extensibility model uses Salesforce custom objects and fields for industry-specific or customer-defined data structures. We inspect the org's custom object definitions during discovery and enumerate all custom fields. Each custom flair field maps to a BambooHR custom field where field type compatibility is supported. BambooHR custom fields are type-restricted (text, date, number, dropdown, checkbox) and scoped per employee tab; they do not sync via BambooHR integrations. Fields that do not have a compatible BambooHR type are flagged in the scoping spreadsheet for customer decision before import.
flair.hr
Payroll Records
BambooHR
Payroll Import (External)
1:1Payroll summary records, effective-dated compensation history, and benefit enrollment data migrate as read-only historical records in BambooHR's employee compensation and benefits sections. Active payroll runs, DATEV, Sage, or AFAS integration configurations do not migrate because they are tightly coupled to the source system's payroll engine. We recommend involving the customer's payroll team during scoping to confirm which historical records are needed and to plan for re-entry of active payroll runs in BambooHR or its connected payroll provider.
| flair.hr | BambooHR | Compatibility | |
|---|---|---|---|
| Employee | Employee1:1 | Fully supported | |
| Candidate / Job Application | Applicant1:1 | Fully supported | |
| Position | Job1:1 | Fully supported | |
| Department | Department1:1 | Fully supported | |
| Location | Location1:1 | Fully supported | |
| Absence | Time Off1:1 | Fully supported | |
| Time Entry | Time Tracking1:1 | Fully supported | |
| Document | File1:1 | Fully supported | |
| Performance Review | Performance Reviewlossy | Fully supported | |
| Engagement Survey | Employee Satisfaction1:1 | Fully supported | |
| Custom Objects | Custom Fieldslossy | Mapping required | |
| Payroll Records | Payroll Import (External)1:1 | Mapping required |
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.
flair.hr gotchas
Career portal migration requires manual flair support intervention
Time tracking data model varies by flair version
Custom objects and fields require schema inspection before mapping
Payroll data migration does not include live payroll runs
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 Salesforce schema inspection
We access the customer's Salesforce instance via the connected app scoped to the flair package namespace and run a full schema describe to enumerate all standard and custom objects, fields, and relationships. We identify the active candidate object (Lead or custom JobApplication), the time-tracking model (custom TimeEntry or Event/Task), and any custom fields requiring BambooHR equivalents. We also extract record counts per object to scope batch sizing and timeline. The discovery output is a written migration scope with the full detected schema, a field-mapping spreadsheet, and a BambooHR custom field configuration checklist for the customer's BambooHR admin to complete before import.
BambooHR environment setup and custom field configuration
The customer provisions a BambooHR account (or uses an existing one if already in place) and creates the custom fields identified during discovery. BambooHR custom fields are scoped per employee profile tab; the customer's admin configures them under Settings > Employee Fields > Add Custom Field. We review the completed custom field list against the mapping spreadsheet and flag any that exceed BambooHR's field-type restrictions. Department and location hierarchies in BambooHR are configured before employee import so that lookups are satisfied at insert time.
Data extraction from Salesforce
We export data from the customer's Salesforce instance using the REST API for real-time record retrieval and the Bulk API 2.0 for large datasets (employees, time entries, engagement history). Exports run in dependency order: locations and departments first (for lookup resolution), then employees with manager IDs resolved to manager email addresses that map to BambooHR supervisor fields, then candidates, positions, absence records, time entries, documents, performance reviews, and engagement survey aggregates. All exports are run into a named export directory per object with row counts logged for reconciliation.
Data transformation and field mapping
We transform exported records to match BambooHR's field types, picklist values, and required field constraints. Manager relationships are resolved by matching Salesforce Contact IDs to BambooHR employee IDs via the email-to-employee lookup. Absence types are mapped to BambooHR Time Off Type values configured during setup. Performance review rating scales are cross-walked per the customer's defined scale. Documents are exported as binary file content and reattached as BambooHR employee documents. Custom flair fields that have no BambooHR equivalent are flagged in the transform report. Records with missing required fields are held rather than imported to avoid silent failures.
Employee import and dependent object migration
We run the import into BambooHR in dependency order: locations and departments first, then employees with all profile fields and manager lookups resolved, then applicants linked to job openings, then time-off history, then time entries, then performance review records, then survey aggregates, then documents. Each phase emits a row-count reconciliation report before the next phase begins. API rate-limit handling with exponential backoff governs import pacing for larger datasets. Any records rejected during import (due to field-type mismatch or missing required fields) are logged with error reasons and fed back to the transformation step for correction.
Cutover, validation, and workflow rebuild handoff
We freeze flair writes during cutover and run a final delta migration of any records modified during the migration window. We deliver a sample validation check of 30-50 employee records against the source data, spot-checking name, job title, department, manager, hire date, and absence balance. We deliver a written inventory of flair Workflows and Salesforce Flow step sequences that require manual rebuild in BambooHR's Workflow & Approvals builder. We provide a 5-business-day hypercare window for reconciliation issues. We do not rebuild flair Workflows as BambooHR workflows as part of the standard migration scope; this is a separate process-rebuild engagement.
Platform deep dives
flair.hr
Source
Strengths
Weaknesses
BambooHR
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between flair.hr and BambooHR.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across flair.hr and BambooHR.
Object compatibility
All 7 core objects map 1:1 between flair.hr and BambooHR.
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
flair.hr: Salesforce API limits apply — not publicly documented by flair separately from standard Salesforce platform limits.
Data volume sensitivity
flair.hr exposes a bulk API — large-volume migrations stream efficiently.
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 flair.hr to BambooHR migration scoping. Not seeing yours? Book a call.
Walk through your flair.hr 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 flair.hr
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.