HRMS migration

Migrate from OpenCATS to BambooHR

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

OpenCATS logo

OpenCATS

Source

BambooHR

Destination

BambooHR logo

Compatibility

60%

6 of 10

objects map 1:1 between OpenCATS and BambooHR.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

OpenCATS is a self-hosted ATS built for recruiting firms and HR teams that need full data ownership without a vendor relationship. BambooHR is a cloud HRIS with an ATS module — its data model is an HR-centric employee record rather than a recruiting-centric candidate record, which is the core schema difference to resolve during this migration. OpenCATS has no REST API; we connect directly to the customer's MariaDB instance to extract Candidates, Job Orders, Companies, Contacts, Activities, and Saved Lists. We map Skills as tags, preserve Activity timestamps, and flag resume file paths for separate SFTP transfer. BambooHR's 409 Conflict on duplicate employee emails and its per-employee pricing model are the two biggest operational gotchas for teams migrating from OpenCATS's zero-cost infrastructure. We do not migrate OpenCATS Report definitions, Workflow automations, or the OpenCATS Cold Call List structure as records — these require manual rebuild in BambooHR.

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

OpenCATS logo

OpenCATS

What's pushing teams away

  • Missing modern ATS essentials — no built-in interview scheduling, candidate assessments, or background-check integrations.
  • Security concerns: MD5 password hashing is a documented vulnerability that fails modern security audits.
  • Steep installation and admin learning curve — non-technical teams struggle to stand it up without IT or DevOps help.
  • No bulk-recruiting features — high-volume teams find the per-record workflow prohibitive at scale.
  • No native calendar integration — OpenCATS cannot sync with Google Calendar, Outlook, or any external calendar system, forcing manual coordination outside the tool.

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 OpenCATS objects map to BambooHR

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

OpenCATS

Candidate

maps to

BambooHR

Employee or Applicant

1:many
Fully supported

OpenCATS Candidates are the primary ATS record and include resume file paths, Skills tags, and source information. In BambooHR's ATS module, a candidate becomes an Applicant tied to a specific Job posting; in the HRIS module, the same person becomes an Employee record. We preserve the OpenCATS candidate_name, email, phone, address, source, and date_added fields and map Skills to BambooHR tags on the Applicant record. If the customer uses BambooHR's ATS module only, candidates map to Applicants; if HRIS is in scope, we create both Applicant and Employee records and link them post-hire using the shared email address as the dedupe key.

OpenCATS

Job Order

maps to

BambooHR

Job

1:1
Fully supported

OpenCATS Job Orders map directly to BambooHR Job postings within the ATS module. The job_order_title maps to jobTitle, job_order_description maps to jobDescription, and status maps to BambooHR's open/closed Job status. The OpenCATS assigned Recruiter field maps to the BambooHR Hiring Manager field on the Job. We preserve the OpenCATS job_order_id as an external reference field for reconciliation. If BambooHR's ATS module is not in the customer's subscription, Job Orders do not have a direct native object and require the customer to decide whether to recreate them manually or use BambooHR's HRIS with a custom field workaround.

OpenCATS

Company

maps to

BambooHR

External Editor (Organization name on Job)

1:1
Fully supported

OpenCATS Companies are client organizations tracked independently from Job Orders, with multiple Contacts per Company record. BambooHR does not have a native Company or client-organization object in the HRIS core; hiring company names are stored as a plain-text field on the Job record only. We flag this schema difference during scoping. Options include: (1) using the BambooHR Company Directory add-on if available, (2) storing client company data in a custom Employee field or a custom ATS field, or (3) accepting that the hierarchical Company-Contact relationship flattens to individual Employee records. The customer chooses the strategy before migration begins.

OpenCATS

Contact

maps to

BambooHR

Employee

1:1
Fully supported

OpenCATS Contacts (hiring managers and client representatives) map to BambooHR Employee records with a role designation. The contact_first_name, contact_last_name, contact_email, contact_phone, and contact_title fields map to the corresponding BambooHR Employee fields. We set the Employee status to Active for hiring managers and flag the record type in a custom field so the customer can distinguish them from actual employees post-migration.

OpenCATS

Skill

maps to

BambooHR

Tag

lossy
Fully supported

OpenCATS Skill tags are stored as a comma-separated field on the Candidate record. We extract each distinct Skill value, create a corresponding BambooHR Tag, and associate the Tag with the mapped Applicant record. BambooHR's tag system uses a flat list rather than a hierarchy, so multi-level skill taxonomies from OpenCATS are flattened. Tags created during migration are prefixed with opencats_ to distinguish them from any manually created BambooHR tags.

OpenCATS

Activity

maps to

BambooHR

Employee File (Note)

1:1
Fully supported

OpenCATS Activity records (calls, emails, notes, status changes) attached to Candidates and Job Orders map to BambooHR Employee File entries on the corresponding Applicant record. The activity_type, activity_date, and activity_notes fields migrate as a BambooHR Note entry. The full activity timeline is preserved in date order, though OpenCATS activity subtypes (cold call, interview, offer) are stored as plain-text tags in BambooHR rather than structured fields. If the candidate is also an Employee record in BambooHR HRIS, Activity records attach to the Employee File for that record.

OpenCATS

Saved List

maps to

BambooHR

Tag (group)

lossy
Fully supported

OpenCATS Saved Lists are user-curated Candidate collections used for pipeline segmentation and outreach. BambooHR has no Saved List equivalent. We extract the list membership (Candidate ID plus list name) and recreate the grouping as a Tag on each Applicant record, prefixed with the list name. List ordering and ranking within a list do not transfer — BambooHR tags are unordered sets. If the customer relies heavily on Saved Lists for workflow segmentation, we document the list names and member counts during scoping and recommend a BambooHR tag-based alternative.

OpenCATS

User / Recruiter

maps to

BambooHR

User

1:1
Fully supported

OpenCATS Users and Recruiters map to BambooHR Users by email match. The opencats user_first_name, user_last_name, and user_email fields map to the BambooHR user name and email. OpenCATS role assignments (Admin, Recruiter, Limited) are preserved in a custom field opencats_role__c on the BambooHR User for reference. Owner assignments on OpenCATS Candidate and Job Order records resolve to the matching BambooHR User by email lookup. Users without a match enter a reconciliation queue for the customer's admin to provision in BambooHR before record import continues.

OpenCATS

Resume File

maps to

BambooHR

Employee File Attachment

lossy
Fully supported

OpenCATS stores resume files as file paths on the server filesystem (PDF, DOC, RTF), not as BLOBs in the database. We flag the file path for each Candidate record and provide a separate SFTP or file-share transfer step to move resume files to BambooHR. Post-transfer, we relink each resume file to the corresponding Applicant record in BambooHR using the Employee Files feature. The customer must ensure the file path structure is preserved when copying and that BambooHR's file size limits (typically 20 MB per attachment) are not exceeded.

OpenCATS

Calendar Event

maps to

BambooHR

Time Off Request or Employee Note

1:1
Fully supported

OpenCATS Calendar Events (interview schedules, internal meetings) map partially to BambooHR. If the event is an interview linked to a Candidate and a Job Order, we create a Note on the Applicant record with the event title, date, and location. If the event is an internal company event (all-hands, HR deadline), it maps to a BambooHR Time Off Request with a custom note. Recurrence patterns and meeting attendee lists from OpenCATS do not transfer — these require manual recreation in BambooHR's calendar or scheduling tool.

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.

OpenCATS logo

OpenCATS gotchas

High

No REST API forces database-direct migration

Medium

Resume files are filesystem references, not embedded blobs

Low

One-week import review delay in OpenCATS native imports

Medium

MySQL is unsupported — MariaDB is required

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

  • OpenCATS has no REST API — database credentials required

    OpenCATS exposes no documented REST or GraphQL API. All data resides in a MariaDB database on the customer's self-hosted server. We connect directly to that database to extract Candidates, Job Orders, Companies, Contacts, Activities, and Saved Lists. The customer must provide database credentials with read access, confirm port 3306 (or custom) accessibility from our migration environment, and verify that the server is running MariaDB 10.6 or compatible (OpenCATS does not support MySQL). If the server is on a private network or behind a VPN, additional secure tunneling configuration is required before migration scoping begins.

  • Companies and Contacts have no native destination object

    BambooHR HRIS does not include a client Company or Contact object separate from Employee records. OpenCATS Companies (client organizations with multiple Contact records) and the OpenCATS Cold Call List have no direct equivalent in BambooHR. The hiring company name is only stored as a text field on the Job record. Teams that rely on Company-level tracking for client relationship management must accept a schema change or use a custom Employee field workaround. We flag this during scoping and let the customer decide on the approach before migration begins.

  • Duplicate employee email causes 409 import rejection

    BambooHR's API returns a 409 Conflict when attempting to create an Employee or Applicant record with an email address already present in the destination account. OpenCATS may have candidate email addresses that overlap with existing BambooHR employee emails (e.g., the same person was both a candidate in OpenCATS and is now an employee in BambooHR). We run an email dedupe scan against the destination before migration and flag overlaps. The customer's admin resolves the conflict — either by merging the records or by skipping the duplicate — before the migration batch runs.

  • Resume files must transfer separately via SFTP

    OpenCATS stores resume files as file paths on the server filesystem, not as database BLOBs. We extract all text fields and map them cleanly, but the actual resume files (PDF, DOC, RTF) must be transferred separately. We flag the file locations for each Candidate record and coordinate an SFTP or managed file transfer. The customer must ensure file path structure is preserved during the copy and verify that BambooHR's attachment size limits do not block re-upload. If resume files total more than a few GB, the file transfer step extends the migration timeline.

  • OpenCATS Saved Lists do not migrate as ordered collections

    BambooHR has no Saved List equivalent. We convert OpenCATS Saved List membership to Tags on Applicant records, but the ordered ranking within a list and the list hierarchy (sub-lists, shared lists, private lists) do not transfer. Teams that rely on Saved Lists for segmentation, outreach cadence, or pipeline tracking must rebuild the logic in BambooHR using Tags, BambooHR's ATS pipeline stages, or a manual tagging convention. We document the complete list membership and member counts during scoping as a reference for the rebuild.

Migration approach

Six steps for a successful OpenCATS to BambooHR data migration

  1. Discovery and database accessibility check

    We audit the OpenCATS MariaDB instance for table counts, record volumes per object (Candidates, Job Orders, Companies, Contacts, Activities, Saved Lists), and any custom fields added via OpenCATS community modules. We confirm database engine version (MariaDB 10.6+ required), test read connectivity from our migration environment, and collect the file system paths for all resume attachments. The customer provides a read-only database user and confirms SFTP access to the OpenCATS server. We also review the target BambooHR account for current plan tier, ATS module inclusion, existing employee records, and any active BambooHR tags that may conflict with our migration prefixes.

  2. Schema design and mapping specification

    We produce a written mapping specification covering all source objects and their destination equivalents. This includes the Company-to-organization workaround decision, the Skill-to-tag naming convention (opencats_ prefix), the Activity-to-Employee File mapping, the Saved List-to-tag conversion, and the User/Recruiter-to-BambooHR-User email matching rule. For any OpenCATS custom fields not represented in the standard mapping, we document them as custom fields to create in BambooHR before migration begins. The specification also includes the duplicate email reconciliation queue process and the resume file transfer checklist.

  3. Sandbox migration and reconciliation

    We run a full migration into a BambooHR sandbox or the production account using representative data volume. The customer's HR admin reconciles record counts against the OpenCATS source (Candidates in, Applicants in; Job Orders in, Jobs in; Activities in, Notes in). We spot-check 25-50 random Applicant records against the source data for field-level accuracy, verify that Skill tags appear correctly, and confirm that resume file paths are flagged for each record. Any mapping corrections — particularly the Company/Contact schema workaround decision — are resolved here, not in production. The customer signs off the mapping specification before the production migration date is set.

  4. User provisioning and email dedupe resolution

    We extract every distinct OpenCATS User and Recruiter and match by email against the BambooHR destination User list. Any OpenCATS Owner referenced on a Candidate or Job Order without a matching BambooHR User enters the reconciliation queue. The customer's BambooHR admin provisions missing Users (active or inactive based on whether the original OpenCATS user is still active). We also run the email dedupe scan against the full BambooHR employee and applicant directory to identify any records that exist in both systems under the same email address. The admin resolves each conflict before the production migration batch runs.

  5. Production migration in dependency order

    We run production migration in the following dependency order: BambooHR Users first (manually provisioned, verified), then Companies (if the custom organization workaround is active), then Contacts (as Employee records), then Candidates (as Applicant records with Skills as tags), then Job Orders (as Jobs), then Activity histories (as Employee File notes via API), then Saved Lists (as Tags). Each phase emits a row-count reconciliation report before the next phase begins. After all data records complete, we run the resume file transfer via SFTP and relink each file to the corresponding Applicant record in BambooHR.

  6. Cutover, validation, and handoff

    We freeze OpenCATS writes during the final cutover window, run a delta migration of any records modified during the migration window, then enable BambooHR as the system of record. We deliver the Workflow and automation rebuild inventory (if the customer was using any OpenCATS community automation modules) and the Saved List rebuild reference document. We support a one-week post-migration window to resolve any data quality issues raised by the HR or recruiting team. We do not configure BambooHR onboarding workflows, ATS pipeline stages, or payroll setup as part of the standard migration scope — these are separate configuration engagements.

Platform deep dives

Context on both ends of the pair

OpenCATS logo

OpenCATS

Source

Strengths

  • Zero-cost, zero-vendor-commitment ATS for teams validating recruiting workflows
  • Full database schema is self-hosted — you own all data with no extraction fees
  • Customizable branding, modules, and company logo for client-facing job boards
  • Skill tagging and list-building replace the deprecated resume parser for candidate categorization
  • Community forum and GitHub repository for self-service troubleshooting and code customization

Weaknesses

  • No official API — migrations require direct MariaDB access or CSV list exports, not real-time sync
  • MySQL is explicitly unsupported; MariaDB is required, which complicates some hosting environments
  • Resume parsing was removed from the core product; users rely on manual skill tagging instead
  • Self-administered hosting means you own security patching, backups, and server maintenance
  • Community-supported only — no SLA, no dedicated support tier, no guaranteed response times
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. All 7 core objects map 1:1 between OpenCATS and BambooHR.

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

    All 7 core objects map 1:1 between OpenCATS and BambooHR.

  • 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

    OpenCATS: Not applicable — no public API.

  • Data volume sensitivity

    B

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

Estimator

Estimate your OpenCATS 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 OpenCATS to BambooHR data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most OpenCATS to BambooHR migrations complete in three to five weeks for accounts with fewer than 5,000 Candidate records, no complex custom field structures, and a clean Company-Contact schema decision. Migrations with large Activity histories, multiple Saved Lists, active custom community modules, or simultaneous ATS plus HRIS configuration in BambooHR extend to seven to eleven weeks. The resume file transfer step adds one to three days depending on total file volume. Timeline assumes the customer has resolved the BambooHR subscription tier and ATS module inclusion before scoping begins.

Adjacent paths

Related migrations to explore

Ready when you are

Move from OpenCATS.
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