HRMS migration

Migrate from Candidate Manager to BambooHR

Field-level mapping, validation, and rollback between Candidate Manager and BambooHR. We move data and schema; workflows are rebuilt natively in BambooHR.

Candidate Manager logo

Candidate Manager

Source

BambooHR

Destination

BambooHR logo

Compatibility

40%

4 of 10

objects map 1:1 between Candidate Manager and BambooHR.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Candidate Manager is an ATS optimized for mid-market staffing teams, while BambooHR is a core HRIS that includes a lightweight applicant tracking module. This migration crosses a category boundary: Candidate Manager tracks candidates through sourcing, application, and hiring stages; BambooHR tracks employees from hire date through their entire lifecycle. We extract data from Candidate Manager via structured CSV exports (the platform does not expose a documented public API), normalize stage labels and ranking scores, and load them into BambooHR employee records and job postings. Pipeline stage names that have no BambooHR equivalent become custom fields; pre-profiling scores land as numeric custom fields on the employee record. Hiring manager portal attribution and staffing agency submission records do not have a native home in BambooHR and are flagged for manual review after load. We do not migrate workflows, staffing portal configurations, or custom ATS reporting exports as rebuilt reports.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Candidate Manager logo

Candidate Manager

What's pushing teams away

  • Zero verified review footprint — Capterra shows 0 reviews and TrustRadius gating prevents public sentiment analysis, leaving buyers without independent validation versus high-volume ATSes (BambooHR 3,400+ reviews, ZipRecruiter 10,000+).
  • Pricing is opaque; one Capterra entry references a €2,000 per user one-time Basic plan, which is unusual versus the subscription model competitors offer and difficult to compare.
  • No public API or developer documentation means integrations with background-check vendors, assessment tools, or downstream HRIS systems require vendor-mediated work rather than standard plug-and-play.
  • Up to 5-day account setup with an account manager is slow versus self-serve modern ATSes that go live in hours.
  • Limited public footprint and review depth makes long-term roadmap and support continuity hard to assess for buyers committing multi-year.

Choosing

BambooHR logo

BambooHR

What's pulling them in

  • Lowest friction entry point for SMBs moving off spreadsheets — intuitive interface means most teams are functional within days, not weeks.
  • Consolidation value: BambooHR merges ATS, onboarding, HR records, time-off, and payroll into a single pane of glass that employees never need to leave.
  • Volume discounts applied automatically by headcount, so pricing scales predictably as the company grows without renewal negotiations.
  • BambooHR reports most customers go live in four to six weeks, making it a realistic commitment for under-resourced HR teams.
  • Award-winning Support Heroes cited frequently in reviews — responsive human support after implementation is a differentiator.

Object mapping

How Candidate Manager objects map to BambooHR

Each row shows how a Candidate Manager 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.

Candidate Manager

Candidate

maps to

BambooHR

Applicant (BambooHR ATS sub-record) or Employee

1:many
Fully supported

Hired candidates from Candidate Manager map to BambooHR Employee records with a corresponding Applicant record to preserve the pre-hire application history. Candidates who were not hired map to BambooHR Applicant records only. We map firstName, lastName, homeEmail, mobilePhone, and address fields using BambooHR's standard field names. The original application date from Candidate Manager becomes the hireDate only for candidates with a Hired stage; non-hired candidates retain the application date as a custom field since BambooHR's Applicant records do not expose a submittedDate in the standard schema.

Candidate Manager

Candidate Pipeline Stage

maps to

BambooHR

Application Status (custom field)

lossy
Fully supported

Candidate Manager's fixed stage names (Applied, Under Consideration, Interviewing, Hired) do not have a direct BambooHR equivalent because BambooHR's ATS module uses a free-form application status field rather than a fixed pipeline model. We preserve the original stage label as a custom text field named original_ats_stage__c on the Applicant record. For hired candidates, we map the Hired stage to the BambooHR employmentStatus field and set the hireDate.

Candidate Manager

Ranking and Pre-Profiling Score

maps to

BambooHR

Custom numeric field (Employee or Applicant)

1:1
Fully supported

Candidate Manager stores numeric ranking and screening scores as candidate properties. These transfer as-is into custom number fields in BambooHR, prefixed with original_ats_ (e.g., original_ats_ranking_score__c). BambooHR supports numeric custom fields on both Employee and Applicant records. We create these fields during schema setup and populate them for every candidate that carries a score. Note that BambooHR's custom field IDs must be fetched via GET /v1/meta/fields per customer account and cannot be hardcoded.

Candidate Manager

Job Order

maps to

BambooHR

Job (BambooHR ATS Job Posting)

1:1
Fully supported

Candidate Manager job orders carry requisition metadata (department, location, open date, hiring manager). We map these to BambooHR Job records, with the job title becoming the position name, the department mapping to BambooHR's departmentId (pre-created during scoping), and the job open date mapped to the job posting date. Custom fields attached to job orders in Candidate Manager become custom fields on the BambooHR Job record, discovered and mapped individually during the scoping call.

Candidate Manager

Hiring Manager Self-Service Portal Record

maps to

BambooHR

Employee field (supervisor reference)

1:1
Fully supported

Records created via Candidate Manager's hiring manager portal carry an owner attribution field. We preserve this as a supervisor reference on the corresponding BambooHR Employee record. The BambooHR API field for supervisor is supervisor, which takes an Employee ID. If the hiring manager does not have an Employee record in BambooHR (because they are not an employee), we store the name in a custom text field original_ats_hiring_manager__c and flag it for manual reconciliation.

Candidate Manager

Staffing Agency Submission

maps to

BambooHR

Custom text field on Applicant

lossy
Fully supported

Agencies submitting candidates through Candidate Manager's staffing portal are tracked as submission sources with agency name and submission ID. BambooHR has no native staffing agency field. We create custom fields original_ats_agency_name__c and original_ats_submission_id__c on the Applicant record and populate them from Candidate Manager's submission source data. Agency-specific notes attached to submissions migrate to original_ats_agency_notes__c.

Candidate Manager

Onboarding Task Record

maps to

BambooHR

Employee Onboarding Task (BambooHR) or custom fields

1:1
Fully supported

Candidate Manager extends into onboarding for hired candidates, storing task completion status and document references. BambooHR's onboarding module handles new hire tasks with its own task schema. We migrate onboarding task status as custom fields on the BambooHR Employee record (e.g., original_ats_onboarding_completed__c as a checkbox) and document references as notes or file attachments via BambooHR's employee file API. E-signature status does not transfer cleanly from Candidate Manager since that data is not exported in a structured format.

Candidate Manager

Reporting Data (Hiring Funnel)

maps to

BambooHR

Custom Report (BambooHR) or supplementary export

lossy
Fully supported

Candidate Manager's reporting module generates aggregate hiring funnel exports. These do not map to a native BambooHR object because BambooHR's reporting module uses its own data model built on employee records. We deliver the historical hiring funnel data as a supplementary CSV that the customer can import into BambooHR as a custom report or store as an archived reference. BambooHR does not support aggregate ATS funnel reporting natively.

Candidate Manager

Candidate Custom Fields (candidate-level)

maps to

BambooHR

Custom fields (Employee or Applicant)

lossy
Fully supported

Custom fields at the candidate level in Candidate Manager are not documented in a machine-readable schema and must be discovered during the scoping call. We map each to a BambooHR custom field with a matching data type (text, number, date, dropdown). BambooHR custom fields are fetched per account via GET /v1/meta/fields and are referenced by numeric field ID in API calls. Custom field creation happens in BambooHR before data load begins.

Candidate Manager

Job Order Custom Fields (requisition-level)

maps to

BambooHR

Custom fields (Job record)

lossy
Fully supported

Custom fields at the job order level in Candidate Manager (e.g., approved salary range, headcount approved, employment type) map to custom fields on the BambooHR Job record. We create these during BambooHR schema setup, matching data types. BambooHR Job custom fields use the same custom field ID pattern as Employee custom fields and are discovered via the same /v1/meta/fields endpoint.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Candidate Manager logo

Candidate Manager gotchas

High

No public API for incremental sync or third-party integrations

Medium

Pipeline stages are fixed and not reconfigurable

Medium

Bespoke configurations vary tenant-to-tenant

High

EDI reporting fields are sensitive personal data with GDPR implications

BambooHR logo

BambooHR gotchas

High

Undocumented API rate limits can trigger 503 errors

High

Per-employee pricing model requires active record count verification

Medium

API credentials must be sent on every request to avoid extra round trips

Medium

Custom field schema varies per account and requires manual inventory

Low

Document and attachment exports are not covered by standard report exports

Pair-specific challenges

  • Candidate Manager has no API; extraction is file-only

    Candidate Manager does not expose a documented public REST API for bulk data extraction. All candidate records, job orders, and pipeline data must be extracted from the platform's reporting module as CSV or structured file exports. File encoding, delimiter consistency, and null-value representation vary across export runs and must be normalized before mapping. We handle this normalization as part of the extraction step, but the customer must coordinate with Candidate Manager support if the reporting module does not expose all required fields in the standard export.

  • BambooHR is an HRIS, not an ATS; pipeline stages have no native home

    BambooHR's ATS module stores applicants as sub-records on employee profiles and does not expose a pipeline stage model. Candidate Manager's pipeline stages (Applied, Under Consideration, Interviewing, Hired) cannot map to a native BambooHR object. We preserve the original stage label as a custom text field on the Applicant record, but this means the stage history does not drive any automation in BambooHR without additional configuration. Teams relying on stage-triggered actions in Candidate Manager will need to rebuild those triggers as BambooHR workflow rules or accept manual status management.

  • BambooHR API requires field-request model and rate-limit handling

    BambooHR's API uses a field-request model: you must specify which fields to return rather than receiving all fields by default. Custom field IDs are numeric and account-specific, fetched via GET /v1/meta/fields. The rate limit is approximately 100 requests per minute per API key, and BambooHR returns a 503 (not a standard 429) when exceeded. We implement exponential backoff on 503 responses and use BambooHR's Custom Report endpoint (POST /v1/reports/custom) to batch field requests for multiple employees in a single call, reducing the request count against the rate ceiling.

  • Hiring manager attribution may have no corresponding BambooHR user

    Candidate Manager's hiring manager portal tracks owner attribution on candidate and job order records. BambooHR requires a formal Employee record for any user referenced as a supervisor or approver. If the hiring manager is not employed at the company (e.g., an external recruiter or a contractor), there is no Employee record to reference. We store the attribution name in a custom field and flag it for the customer's admin to resolve post-migration. This is a common reconciliation item in ATS-to-HRIS migrations.

  • Pre-hire onboarding data does not transfer cleanly for e-signature status

    Candidate Manager stores onboarding task completion status and document references for hired candidates, but e-signature completion status is not exported in a structured format. We migrate task status as custom fields and document references as file attachments, but BambooHR's onboarding module will treat all migrated employees as starting from a fresh onboarding state. The customer's admin should use BambooHR's onboarding task templates to re-trigger required document collection rather than relying on transferred e-signature status.

Migration approach

Six steps for a successful Candidate Manager to BambooHR data migration

  1. File extraction and data audit

    We coordinate with the customer's Candidate Manager account to run the platform's CSV and structured file exports for candidates, job orders, pipeline stages, hiring manager attribution, agency submissions, onboarding records, and reporting data. We validate record counts and field completeness against the customer's expected migration scope. Any fields not available in the standard export are escalated to Candidate Manager support. We also request a sample export run from the customer to validate encoding and delimiter format before the full extraction.

  2. BambooHR API authentication and field discovery

    We obtain a BambooHR API key from the customer's account (HTTP Basic Auth with the API key as the username). We call GET /v1/meta/fields to retrieve the complete list of standard and custom field IDs for the Employee, Applicant, and Job objects. Any custom fields the customer wants on the BambooHR side are created before data load begins. We validate that the migration user has sufficient BambooHR permissions (typically Full Admin or a dedicated service account with equivalent access) to create records and write custom fields.

  3. Schema mapping design and custom field provisioning

    We design the mapping between Candidate Manager's data model and BambooHR's schema. This includes mapping candidate fields to Employee and Applicant records, mapping job order fields to BambooHR Job records, defining custom fields for stage labels, ranking scores, agency attribution, hiring manager names, and onboarding status, and resolving the hired-candidate-to-employee mapping (which candidates get Employee records versus Applicant-only records). Custom fields are provisioned in BambooHR via API before any data load. The mapping design document is reviewed and signed off by the customer's admin before extraction begins.

  4. Normalization, transform, and deduplication

    We normalize the Candidate Manager CSV exports: standardize date formats to ISO 8601, resolve encoding issues (UTF-8 BOM markers, ANSI special characters), deduplicate candidate records (by email as the primary key), and split records into hired and non-hired populations for the Employee versus Applicant routing. We apply the stage-label custom field transformation, map numeric ranking and profiling scores to their target custom fields, and flag any records with missing required fields (first name, last name, email) for the customer's admin to resolve before load.

  5. BambooHR load in dependency order

    We load data into BambooHR in dependency order: Employee records (for hired candidates, with hireDate and employmentStatus set), Job records (for job orders), Applicant records (for all candidates with stage preserved as a custom field), custom field values on Employee and Applicant records, and file attachments for onboarding documents. We use BambooHR's employee creation endpoint (POST /v1/employees) for individual records and the custom report endpoint for batch population of custom fields. Rate limiting is handled with exponential backoff on 503 responses. Each phase emits a row-count reconciliation report.

  6. Cutover, validation, and post-migration handoff

    We run a delta migration to capture any records modified or added during the load window, then hand off BambooHR as the system of record. We deliver a reconciliation report comparing Candidate Manager source record counts against BambooHR destination record counts. We provide a written inventory of any records that could not be loaded with the reason (missing required field, rate-limit drop, missing BambooHR user for supervisor reference). We do not rebuild Candidate Manager workflows or staffing portal configurations in BambooHR; those are documented as a separate rebuild scope for the customer's admin team.

Platform deep dives

Context on both ends of the pair

Candidate Manager logo

Candidate Manager

Source

Strengths

  • Built-in GDPR consent, data retention, and privacy policy enforcement.
  • 600+ job board posting reach from a single workflow.
  • EDI reporting with customised Equal Opportunities forms.
  • Configurable to a bespoke recruitment workflow with vendor support.
  • Multi-region presence (Ireland, UK, USA) with named enterprise references.

Weaknesses

  • Effectively zero independent review footprint on Capterra and other public review sites.
  • Opaque pricing — one source cites €2,000/user one-time, which is hard to compare to subscription-based competitors.
  • No public API or developer documentation; integrations require vendor mediation.
  • Account setup takes up to 5 days versus self-serve competitors.
  • Limited public product detail makes pre-purchase due diligence difficult.
BambooHR logo

BambooHR

Destination

Strengths

  • Single platform consolidating ATS, onboarding, HR records, payroll, and time-off reduces system sprawl for SMBs.
  • Fast implementation — BambooHR reports four to six weeks from kickoff to go-live for most customers.
  • Per-employee pricing with automatic volume discounts makes cost predictable as headcount grows.
  • Strong customer support reputation (Support Heroes) cited consistently across G2, Capterra, and direct testimonials.
  • Well-documented API with UTF-8 encoding, clear field types, and HTTPS-only access.

Weaknesses

  • Mobile application is significantly limited compared to the desktop experience, frustrating remote and field workers.
  • Companies above 150–200 employees frequently outgrow the platform's feature depth and customization surface.
  • Limited advanced reporting and analytics compared to enterprise HR platforms — custom report building is the ceiling.
  • PTO and profile customization are pain points — non-standard accrual policies and complex org structures require workarounds.
  • Document management and attachment handling lack the granularity of dedicated document-centric HR systems.

Complexity grading

How hard is this migration?

Standard HRMS migration. 1 of 7 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Candidate Manager and BambooHR.

  • Object compatibility

    B

    1 of 7 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    7-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Candidate Manager: Not publicly documented.

  • Data volume sensitivity

    B

    Candidate Manager doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Candidate Manager to BambooHR migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Candidate Manager to BambooHR data migrations

Answers to the questions buyers ask most during Candidate Manager to BambooHR migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Candidate Manager to BambooHR migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between three and five weeks for straightforward scopes under 2,500 candidates and 500 job orders with no complex custom field sets. Migrations with onboarding task records, agency submission histories, hiring manager attribution requiring user provisioning, or multi-level custom fields at both the candidate and job order level move to six to ten weeks. The BambooHR-side employee data import handled by BambooHR's own implementation team is a separate timeline that runs in parallel.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Candidate Manager.
Land in BambooHR, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day