HRMS migration
Field-level mapping, validation, and rollback between eRecruiter and BambooHR. We move data and schema; workflows are rebuilt natively in BambooHR.
eRecruiter
Source
BambooHR
Destination
Compatibility
9 of 12
objects map 1:1 between eRecruiter and BambooHR.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from eRecruiter to BambooHR is a shift from a dedicated ATS platform to an integrated HRIS with built-in applicant tracking. eRecruiter excels at full-lifecycle recruitment management with native GDPR and RODO compliance for Polish employers; BambooHR provides a unified employee records system that bundles HR data, payroll, onboarding, and ATS within a single platform designed for small to mid-sized businesses. The migration requires resolving several structural gaps: eRecruiter has no native bulk export endpoint so we read records individually via the REST API with concurrent reads and pagination; document attachments depend on parent record IDs that must be written before the binary; CV Parsing output stores extracted fields in a non-standard schema that requires discovery before mapping; and BambooHR's ATS caps job postings per tier (5 on Core, 25 on Pro, 50 on Elite) which may require a tier upgrade to accommodate historical job volume. We do not migrate workflows, sequences, or automations as code; we deliver a written inventory for the customer's admin to rebuild in BambooHR's workflow builder.
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 eRecruiter 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.
eRecruiter
Candidate
BambooHR
Employee (with ATS Candidate record)
1:1eRecruiter Candidates map to BambooHR Employee records as the primary HRIS object. BambooHR does not maintain a separate Candidate object outside of the hiring workflow; Candidates from eRecruiter who are not yet hired become BambooHR Applicants linked to the Job. We map eRecruiter contact fields (name, email, phone, address) to BambooHR Employee fields using the standard field names, and preserve the original eRecruiter Candidate ID in a custom field erecruiter_candidate_id__c for audit. GDPR consent flags migrate to BambooHR's custom field model.
eRecruiter
Application
BambooHR
Applicant (BambooHR ATS)
1:1eRecruiter Applications map to BambooHR Applicant records within the BambooHR ATS Hiring module. Each Application links to the corresponding Job (BambooHR Job) and Applicant (Candidate). Application stage, status, rating, and custom application fields migrate as Applicant custom fields. We resolve the Job reference in BambooHR before writing Applications so that the parent lookup is satisfied at insert time.
eRecruiter
Job
BambooHR
Job (BambooHR ATS)
1:1eRecruiter Jobs map to BambooHR Job records. We migrate title, description (HTML preserved), location, department, employment type, and publication status. Historical closed jobs migrate as inactive Job records in BambooHR. We flag any customer whose historical job count exceeds their BambooHR ATS tier cap (Core 5, Pro 25, Elite 50 simultaneous open jobs) before migration so that tier upgrade decisions are made before cutover rather than during.
eRecruiter
Company
BambooHR
Employee Organization records
lossyeRecruiter Company entities (typically employer companies rather than candidate employers) map to organizational context within BambooHR. If the customer uses Companies to track client employers, we map these to BambooHR's department and division structure or flag them as requiring a custom field. eRecruiter's Company Import API uses ExternalId matching for updates.
eRecruiter
User
BambooHR
User (BambooHR)
1:1eRecruiter Users map to BambooHR User accounts. Role naming differs between platforms; we capture the eRecruiter role name in a custom field erecruiter_role__c and the customer maps it to the appropriate BambooHR permission role during scoping. User provisioning requires active BambooHR User licenses, which the customer supplies before migration.
eRecruiter
Department
BambooHR
Department (BambooHR)
1:1eRecruiter Department is a referenced entity on Jobs and Users. We detect whether BambooHR is configured with Departments as independent records or as a property on the Job, then migrate accordingly. Departments must be created before Jobs that reference them.
eRecruiter
Location
BambooHR
Location (BambooHR)
1:1Location data (city, region, country) migrates as structured address components on the Job record in BambooHR. If the customer uses multi-location job posting in eRecruiter, we map each location to a separate BambooHR Location record and associate it with the Job.
eRecruiter
Attachment (Candidate)
BambooHR
File (BambooHR Employee)
lossyCandidate document attachments in eRecruiter are identified by DocumentTypeName, Filename, and the parent Candidate's ID. We transfer binary attachments by first resolving the target Employee record ID in BambooHR, then uploading the file to the corresponding Employee document section. Documents without a valid parent Employee reference (orphaned attachments) are flagged for manual review. This dependency requires Candidates to be migrated before their attachments.
eRecruiter
Attachment (Application)
BambooHR
File (BambooHR Applicant)
lossyApplication attachments (resumes, cover letters, portfolio files) migrate to BambooHR Applicant file attachments. We resolve the target Applicant record ID before uploading. The Job must be migrated and the Applicant record created before Application attachment migration begins.
eRecruiter
Scorecard / Rating
BambooHR
Custom Fields on Applicant
1:1Structured evaluation ratings on eRecruiter Applications are stored as part of the Application record or as linked feedback entries. We serialize scorecard data into custom fields on the BambooHR Applicant record. Field type mapping (rating scales to picklist or number) is validated during scoping.
eRecruiter
Custom Fields (Candidate)
BambooHR
Custom Fields (BambooHR Employee)
1:1eRecruiter custom fields on Candidates migrate to BambooHR Employee custom fields. CV Parsing output (experience duration, education level, skills tags, language proficiency) requires discovery during scoping because parsed field names vary by CV template and parsing version. We treat all CV Parsing fields as custom fields, validate the target schema, and flag any field type mismatches before migration.
eRecruiter
Custom Fields (Application)
BambooHR
Custom Fields (BambooHR Applicant)
1:1eRecruiter custom fields on Applications migrate to BambooHR Applicant custom fields. We discover the full custom field schema during scoping, map field types to their BambooHR equivalents (text, number, date, picklist), and validate that all required fields are populated before the first Applicant insert.
| eRecruiter | BambooHR | Compatibility | |
|---|---|---|---|
| Candidate | Employee (with ATS Candidate record)1:1 | Fully supported | |
| Application | Applicant (BambooHR ATS)1:1 | Fully supported | |
| Job | Job (BambooHR ATS)1:1 | Fully supported | |
| Company | Employee Organization recordslossy | Fully supported | |
| User | User (BambooHR)1:1 | Fully supported | |
| Department | Department (BambooHR)1:1 | Fully supported | |
| Location | Location (BambooHR)1:1 | Fully supported | |
| Attachment (Candidate) | File (BambooHR Employee)lossy | Fully supported | |
| Attachment (Application) | File (BambooHR Applicant)lossy | Fully supported | |
| Scorecard / Rating | Custom Fields on Applicant1:1 | Fully supported | |
| Custom Fields (Candidate) | Custom Fields (BambooHR Employee)1:1 | Fully supported | |
| Custom Fields (Application) | Custom Fields (BambooHR Applicant)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.
eRecruiter gotchas
No native bulk candidate export endpoint
Documents require linked parent records
CV Parsing output requires field mapping
Pricing requires direct sales contact
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 schema scoping
We audit the source eRecruiter instance across record counts (Candidates, Applications, Jobs, Companies, Users, Departments, Locations), document attachment volume, custom field inventory (including CV Parsing fields), active workflows and automations, and GDPR consent metadata. We pair this with a BambooHR environment review: current tier, ATS job posting cap, custom field limits, and whether the ATS module is active. The discovery output is a written migration scope, a schema gap analysis, and a BambooHR tier recommendation if the job posting cap is exceeded.
CV Parsing field discovery and custom field mapping
We run a full scan of eRecruiter CV Parsing output across a representative candidate sample to capture every unique parsed field name and data type. We compare this against the BambooHR custom field schema and identify any fields that cannot map directly (non-standard data types, unbounded text, multi-value arrays). The customer reviews the mapping and approves which parsed fields migrate as custom fields versus being dropped. This step is critical because CV Parsing schemas are template-dependent and silently vary across the candidate population.
Sandbox migration and reconciliation
We run a full migration into a BambooHR staging environment (or a test company account) using production-like record volumes. The customer's HR lead reconciles record counts, spot-checks 25-50 candidate profiles against the eRecruiter source, validates that document attachments are accessible in BambooHR, and confirms that application stage names and ratings are correctly mapped. Any mapping corrections happen here before production migration begins.
Parent-record dependency resolution
We resolve the write order for all records with parent dependencies: Departments and Locations first (referenced by Jobs and Users), then Jobs (referenced by Applications), then Users (referenced by Candidates and Applications), then Candidates (written as Employees in BambooHR), then Applications (as BambooHR Applicants), then document attachments (last, because they require both the parent Employee and Applicant records to exist). Any eRecruiter documents without a resolvable parent record are listed in a supplemental document for manual review.
Production migration in dependency order
We execute production migration in the validated write order with concurrent API reads against eRecruiter and Bulk API writes to BambooHR. We apply exponential backoff on eRecruiter API rate-limit responses, validate every record write against BambooHR field types and required constraints, and emit a per-phase reconciliation report (record count in, record count out, error count, attachment count transferred). BambooHR tier upgrade (if required) is coordinated with the ATS migration phase to ensure the job posting cap is not hit mid-migration.
Cutover, validation, and workflow handoff
We freeze eRecruiter writes during the cutover window, run a final delta migration of any records modified during the migration window, then designate BambooHR as the system of record. We deliver the workflow and automation inventory document to the customer's HR admin. We support a one-week hypercare window to resolve any reconciliation issues raised by the HR team. Workflow rebuild in BambooHR's builder is outside standard migration scope and is handled by the customer's admin or a separate engagement.
Platform deep dives
eRecruiter
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 eRecruiter 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
eRecruiter: Not publicly documented.
Data volume sensitivity
eRecruiter 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 eRecruiter to BambooHR migration scoping. Not seeing yours? Book a call.
Walk through your eRecruiter 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 eRecruiter
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.