HRMS migration
Field-level mapping, validation, and rollback between CATS and BambooHR. We move data and schema; workflows are rebuilt natively in BambooHR.
CATS
Source
BambooHR
Destination
Compatibility
7 of 10
objects map 1:1 between CATS and BambooHR.
Complexity
BStandard
Timeline
4-6 weeks
Overview
CATS is an applicant tracking system built around recruiting workflows, while BambooHR is a full HRIS that spans employee onboarding through performance management and payroll. Migrating between them means moving from an ATS data model to an HRIS data model: candidate records from CATS map to BambooHR Applicants and new-hire Employee records, Job Orders map to BambooHR Jobs, and CATS pipeline stages map to BambooHR Status values. CATS has no public real-time API for bulk export; we work around this by automating the built-in CSV export, parsing the resulting file, and pushing data into BambooHR via its REST API with batch chunking. Workflows, custom automation rules, and reporting snapshots do not migrate as code or data. We deliver a written workflow inventory so your admin rebuilds routing rules in BambooHR's automation layer.
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 CATS 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.
CATS
Candidate
BambooHR
Applicant and Employee
1:manyCATS Candidate records split into two BambooHR objects: the applicant record (for candidates still in the hiring pipeline) and the Employee record (for candidates who reached Hired status). We extract hire_date from the CATS candidate status change timestamp and use it as the BambooHR Employee hire_date field. Contact information (name, email, phone, address) migrates directly. Source attribution, tags, and custom fields transfer as applicant metadata. Candidates with Rejected status are preserved as archived Applicants with disposition notes from CATS' last pipeline stage.
CATS
Job Order
BambooHR
Job
1:1CATS Job Orders map directly to BambooHR Jobs. The CATS job title, description, department, and location fields align with BambooHR Job fields. We map CATS pipeline stages to BambooHR job Status values (Open, Closed, On Hold, Draft). If CATS has multiple job pipelines, we use the CATS pipeline name as a BambooHR Job custom field rather than creating multiple job boards, since BambooHR uses a single job listing structure per department.
CATS
Pipeline Stage
BambooHR
Job Status
lossyCATS pipeline stages (New, Screening, Interview, Offer, Hired, Rejected, and any custom stages) map to BambooHR job Status values. Each CATS stage gets a status assignment during migration. If BambooHR's default status set does not include a CATS stage name, we document it as a custom status requirement for the customer's admin to add in BambooHR settings before the job import runs.
CATS
Activity (calls, emails, notes, interviews)
BambooHR
Application Note and Event
1:1CATS Activities linked to Candidates migrate to BambooHR Application Notes. Interview events with timestamps, interviewer names, and ratings migrate as Application Event records if BambooHR's ATS module supports them, or as structured Application Notes with a type flag. Activity timestamps preserve the original CATS creation date. Owner attribution migrates by resolving the CATS user email to the BambooHR Employee record of the recruiter or hiring manager.
CATS
Custom Field (Candidate and Job Order)
BambooHR
Custom Field
lossyCATS custom fields on Candidates and Job Orders migrate to BambooHR custom fields on the corresponding object. Text, number, date, and dropdown field types map directly. Checkbox fields map to BambooHR's Yes/No field type. Multi-select dropdown in CATS maps to a text field in BambooHR with comma-separated values unless a multi-select configuration exists in the destination. We export the full custom field schema from CATS during discovery and create the matching fields in BambooHR before importing any data.
CATS
User / Hiring Team
BambooHR
Employee
1:1CATS user accounts (name, email, role, department) map to BambooHR Employee records for active recruiters. We use email as the dedupe key. Inactive CATS users who have no applicant or activity attribution migrate as inactive BambooHR Employees or are excluded based on scope during discovery. Owner IDs on Candidate and Job Order records are resolved to Employee IDs in BambooHR during the import phase.
CATS
Department
BambooHR
Department
1:1CATS Departments export as a flat list and map directly to BambooHR Departments. Department is a required reference for Job Orders in CATS, so we import Departments before Jobs to satisfy the foreign key. If CATS has nested department structures, we flatten them into BambooHR's single-level department model and add a parent_department custom field if hierarchical context is required.
CATS
Tag / Label
BambooHR
Tag
1:1CATS free-text and pre-defined tags on Candidates migrate as Tags on the corresponding BambooHR Applicant. Tags export as comma-separated values from CATS and split into individual Tag records in BambooHR. If the customer's recruiting team uses tags for source tracking (LinkedIn, Referral, Job Board), we map them to BambooHR's Applicant Source field instead and preserve the original tag string in a custom field for audit.
CATS
Attachment (resume, cover letter)
BambooHR
Employee File
1:1CATS file attachments on Candidates migrate as Employee Files in BambooHR. We pull the file binary via CATS export or API, preserve the original filename and MIME type, and upload to BambooHR linked to the corresponding Applicant or Employee record. Resume files map to BambooHR's designated resume field where available, or to a custom file field. Multiple attachments per candidate migrate as separate file records.
CATS
Source
BambooHR
Applicant Source
1:1CATS Candidate Source field (LinkedIn, Referral, Job Board, etc.) maps directly to BambooHR's Applicant Source field on the Job Application. If CATS uses a source taxonomy that does not match BambooHR's built-in options, we document the mismatch and either map to the closest BambooHR default or add the source value as a custom field on the Application object.
| CATS | BambooHR | Compatibility | |
|---|---|---|---|
| Candidate | Applicant and Employee1:many | Fully supported | |
| Job Order | Job1:1 | Fully supported | |
| Pipeline Stage | Job Statuslossy | Fully supported | |
| Activity (calls, emails, notes, interviews) | Application Note and Event1:1 | Fully supported | |
| Custom Field (Candidate and Job Order) | Custom Fieldlossy | Fully supported | |
| User / Hiring Team | Employee1:1 | Fully supported | |
| Department | Department1:1 | Fully supported | |
| Tag / Label | Tag1:1 | Fully supported | |
| Attachment (resume, cover letter) | Employee File1:1 | Fully supported | |
| Source | Applicant Source1: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.
CATS gotchas
CATS exports are batch-based, not real-time API
Workflow automation does not transfer between systems
Per-seat licensing means imported candidates add no cost, but active users do
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 export assessment
We audit the CATS instance for candidate volume, job order count, custom field schema, active pipeline stages, attachment file count and size distribution, and user roster. We assess whether the CATS instance has API access enabled and test the batch export tool's output format. We pair this with a BambooHR account audit to confirm ATS module availability, existing custom field configuration, and department structure. The discovery output is a written migration scope with record counts per object, a custom field mapping table, and an export method recommendation (API pull vs batch CSV).
Custom field schema creation in BambooHR
Before any data moves, we create the matching custom field schema in BambooHR. We create custom fields on Applicant and Employee objects for every CATS custom field that has no direct BambooHR equivalent. We add a CATS candidate ID custom field to preserve the source record reference. We configure job Status values to match the CATS pipeline stages, adding any non-standard stage names as custom status options in BambooHR settings. This step requires BambooHR admin credentials and runs in a staging window before production migration begins.
CATS data export and parse
We trigger the CATS batch export for Candidates and Job Orders, download the generated file, and parse it into a normalized intermediate format. We extract attachments separately via the CATS API or file export tool. We run a record count validation against the CATS UI totals and flag any discrepancy. If the export requires manual generation per batch (common in older CATS instances), we coordinate with the customer's CATS admin to run exports in sequence. The parsed output is a set of CSV files ready for BambooHR API ingestion.
Owner and department reconciliation
We extract every distinct CATS user referenced as an owner on Candidate, Activity, and Job Order records and match by email against the BambooHR Employee table. Any CATS user without a matching BambooHR Employee record goes to a reconciliation queue for the customer to provision before the import resumes. We also validate that all CATS Departments have a corresponding BambooHR Department; missing departments are created before Job Orders are imported so that the department reference is satisfied on insert.
Production import in dependency order
We run production import in record-dependency order: Departments first, then Employees (for active recruiters), then Jobs (with status mapped), then Applicants (with hire_date set for Hired candidates and source attribution preserved), then Application Notes and Events (with ActivityDate set to the original CATS timestamp), then Employee Files (attachments with original filenames preserved). Each phase emits a row-count reconciliation report before the next phase begins. We use BambooHR's REST API with batch endpoints and rate-limit handling for bulk inserts.
Cutover, validation, and workflow handoff
We freeze CATS writes during cutover, run a final delta migration of any records modified during the migration window, then mark BambooHR as the system of record. We validate a random sample of 25-50 applicant and employee records against the CATS source data and provide the customer with a full reconciliation report. We deliver the workflow inventory document to the customer's BambooHR admin team. We support a one-week hypercare window for reconciliation issues. We do not rebuild CATS workflows in BambooHR as part of the migration scope.
Platform deep dives
CATS
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 CATS 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
CATS: Not publicly documented.
Data volume sensitivity
CATS 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 CATS to BambooHR migration scoping. Not seeing yours? Book a call.
Walk through your CATS 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 CATS
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.