HRMS migration
Field-level mapping, validation, and rollback between Occupop and BambooHR. We move data and schema; workflows are rebuilt natively in BambooHR.
Occupop
Source
BambooHR
Destination
Compatibility
8 of 10
objects map 1:1 between Occupop and BambooHR.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Occupop to BambooHR is a platform-category shift from a dedicated ATS to an HRIS that bundles recruiting as a standard module. Occupop's data model is organized around Jobs and Candidates in pipeline stages; BambooHR's ATS organizes hiring around Job Openings and Job Applications attached to Employee records. We resolve this structural difference during scoping by mapping Occupop Jobs to BambooHR Job Openings (which require the ATS module at the appropriate tier), mapping Candidates to Applications, and resolving the stage-to-status mapping. Occupop's AI screening scores and board-distribution history do not have native equivalents in BambooHR; we preserve them as structured data attached to the application record. Custom fields from Occupop Candidate records map to BambooHR's Employee custom fields, subject to BambooHR's per-record field ceiling. We exclude offer letters, employment contracts, and onboarding workflow state, which Occupop hands to Cezanne HR post-acquisition and which are not accessible via the ATS export API.
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 Occupop 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.
Occupop
Job
BambooHR
Job Opening
1:1Occupop Jobs map directly to BambooHR Job Openings, which require the ATS module to be enabled on the customer's BambooHR tier (5 openings on Core, 25 on Pro, 50 on Elite). We export Job title, description, department, location, and status (active/closed). The BambooHR Job Opening is created first so that subsequent Candidate-to-Application mapping can reference it as the parent. The original Occupop Job ID is preserved in a custom field on the Job Opening for audit traceability.
Occupop
Candidate
BambooHR
Job Application
1:1Occupop Candidates map to BambooHR Job Applications, which are linked to both a Job Opening and an Employee record. When the Candidate has no corresponding Employee in BambooHR yet (common for early-stage applicants), we create a minimal Employee record as a placeholder so that the Application has a valid parent. The Candidate's name, email, phone, and stage history migrate to the Application. If the BambooHR tier does not include the ATS module, Applications cannot be created; we flag this at scoping and confirm the customer's tier selection before migration.
Occupop
Workflow Stage
BambooHR
Application Status
lossyOccupop Workflow Stages (Applied, Screening, Interview, Offer, etc.) per Job map to BambooHR Application Status values. We build a stage-name mapping table during scoping, preserving the stage order from Occupop. Not all Occupop stage types have BambooHR equivalents; where no match exists we map to the nearest BambooHR status (e.g., Offer stage maps to Hired, or a custom Rejected status for pipeline stages beyond the standard). The mapping is applied consistently across all Jobs at import time.
Occupop
User
BambooHR
Employee
1:1Occupop Users (Hiring Managers, Recruiters, Admins) map to BambooHR Employee records. We export name, email, and role assignment. Role mapping is configuration-only in BambooHR; permissions live in BambooHR's permission system rather than named recruiter/hiring-manager roles. We map Occupop Admin to BambooHR Full Admin permission and Occupop Hiring Manager/Recruiter to BambooHR Standard User with recruiting-specific access granted via the ATS module permissions. Users who are purely ATS users with no corresponding employee record in the HRIS get a placeholder Employee record with the ATS permission flag set.
Occupop
CV and Attachment
BambooHR
File Attachment
1:1Occupop CV file references and attachments map to BambooHR File Attachments linked to the Employee record or Job Application. We export raw CV files alongside the record mapping and deliver them as a file package. BambooHR's file attachment API supports PDF, DOC, and DOCX; we convert any non-standard format during export and flag any files that cannot be converted. The original file name is preserved in the BambooHR attachment record.
Occupop
Interview Feedback and Notes
BambooHR
Note
1:1Occupop interview notes, scorecard responses, and written feedback per Candidate per stage migrate to BambooHR Notes linked to the Application or Employee record. We preserve the stage context by including the stage name in the Note title. Score values from scorecards migrate as structured text within the Note body; they do not populate a native numeric field in BambooHR since BambooHR does not have a native interview-scorecard object.
Occupop
AI Screening Score
BambooHR
Custom Field or Note
lossyOccupop AI screening scores (0-100 values computed from CV-to-JD matching) do not have a native equivalent in BambooHR. We handle this by either creating a BambooHR Employee custom field of numeric type (if the customer's BambooHR plan supports custom fields and the field ceiling has not been reached) or by attaching a structured Note to the Application record containing the score value, rank within the candidate pool, and scoring rationale. The customer chooses the strategy at scoping. We flag that BambooHR's API has a documented per-record field ceiling that may limit the number of custom numeric fields on the Employee object.
Occupop
Custom Fields (Candidate)
BambooHR
Custom Fields (Employee)
1:1Occupop's per-tenant custom key-value pairs on Candidate records map to BambooHR Employee custom fields. We inspect the source tenant's custom field definitions during scoping, build a field map, and apply it at import time. Field type mapping is direct for string, number, and date types. Occupop multi-select or tag-style custom fields map to BambooHR multiselect custom fields. We flag any custom fields that exceed the BambooHR API field ceiling (approximately 400 fields per Employee record) and fall back to storing them as structured JSON in a single text field or as attached notes for those records.
Occupop
Job Board Distribution History
BambooHR
Note (Post-Migration Reference)
1:1Occupop tracks which job boards a Job was distributed to (Indeed, LinkedIn, Reed, Glassdoor, niche boards) and the posting date. BambooHR has no native board-distribution tracking field. We export this as a structured list per Job and attach it as a Note to the Job Opening. We deliver a board-distribution summary sheet post-migration listing each Job, its original distribution channels, and dates so that the customer's recruiting team can manually re-create postings in BambooHR's job board distribution UI or via each board's native posting tool.
Occupop
Offer and Onboarding Records
BambooHR
None
1:1Offer letters, employment contracts, and onboarding workflow state are not accessible via Occupop's ATS export. Post-acquisition these records live in Cezanne HR's broader suite, not in Occupop's ATS data model. We explicitly exclude offer and onboarding records from migration scope and direct the customer to export them from Cezanne HR directly before initiating the migration. If the customer does not have Cezanne HR access, we recommend they contact Occupop support to retrieve offer and onboarding data before the migration window closes.
| Occupop | BambooHR | Compatibility | |
|---|---|---|---|
| Job | Job Opening1:1 | Fully supported | |
| Candidate | Job Application1:1 | Fully supported | |
| Workflow Stage | Application Statuslossy | Fully supported | |
| User | Employee1:1 | Fully supported | |
| CV and Attachment | File Attachment1:1 | Fully supported | |
| Interview Feedback and Notes | Note1:1 | Mapping required | |
| AI Screening Score | Custom Field or Notelossy | Fully supported | |
| Custom Fields (Candidate) | Custom Fields (Employee)1:1 | Fully supported | |
| Job Board Distribution History | Note (Post-Migration Reference)1:1 | Fully supported | |
| Offer and Onboarding Records | None1:1 | Not 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.
Occupop gotchas
Cezanne HR acquisition may change data residency and contract terms
Offer and onboarding data lives outside Occupop's ATS scope
Custom Fields schema varies by tenant and may require mapping
Job posting board-distribution history does not map to standard ATS fields
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 tier confirmation
We audit the source Occupop tenant across active and closed Jobs, total Candidates, User accounts with role assignments, custom field definitions, Workflow stage configurations, CV file count and format distribution, and AI screening score availability. We pair this with a BambooHR tier review: Core ($10/employee/month, 5 Job Openings) covers most migrations with fewer than 5 active hiring pipelines; Pro ($17) covers up to 25 openings; Elite ($25) covers up to 50. We confirm the customer's BambooHR tier, verify that the ATS module is enabled, and identify any tier-upgrade requirements before scoping proceeds.
Schema design and field mapping
We design the field mapping table during a dedicated mapping session. Occupop Candidate fields map to BambooHR Employee custom fields where native equivalents do not exist; Occupop Job fields map to BambooHR Job Opening fields; Occupop stage names map to BambooHR Application Status values via a name-matching table. AI screening scores and board-distribution history are flagged for structured-note or custom-field storage based on the customer's BambooHR plan. Custom field type mapping handles Occupop string, numeric, date, and multi-select types against BambooHR's supported custom field types. The mapping table is validated against a sample of 20-50 records from the source before full export begins.
CV and attachment export
We export all CV files from Occupop as a file package with filename mapping back to the source Candidate record ID. We verify file format compatibility with BambooHR's supported types (PDF, DOC, DOCX) and convert any unsupported formats (ODT, TXT, RTF) to PDF during export. The file package is delivered alongside the record CSV for bulk attachment during import. This step runs in parallel with the record export to reduce total migration time.
Sandbox or pilot migration
We run a pilot migration into the customer's BambooHR account using a subset of 50-100 records (10-20 Jobs and their associated Candidates) to validate the field mapping, verify Job Opening and Application creation, confirm permission and role mapping, and check CV attachment success. The customer's HR admin spot-checks 20-25 records against the source Occupop tenant and signs off the mapping before the full migration begins. Any field mapping corrections, stage name adjustments, or custom field type changes happen here.
Full production migration in dependency order
We run the full migration in record-dependency order: Job Openings first (as the parent for Applications), then Employees and Users (as the recipient for ATS User records), then Job Applications (with Job Opening and Employee references resolved), then Interview Notes and Feedback, then CV file attachments. AI screening scores land as custom fields or structured Notes depending on the chosen strategy. Board-distribution history is exported as a separate structured reference file attached to each Job Opening Note. Each phase emits a row-count reconciliation report before the next phase begins. We use BambooHR's API with rate-limit handling and exponential backoff for all inserts.
Cutover, validation, and Cezanne HR data handoff
We freeze Occupop writes during cutover, run a final delta migration of any records modified during the migration window, then confirm BambooHR as the system of record for all migrated data. We deliver the board-distribution reference sheet, the custom field consolidation summary (if any fields were stored as JSON due to API field ceiling), and the stage mapping legend. We exclude offer letters and onboarding records from the deliverable and remind the customer to retrieve these from Cezanne HR directly. We support a five-business-day post-cutover window for reconciliation issues raised by the recruiting team.
Platform deep dives
Occupop
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 Occupop 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
Occupop: Not publicly documented.
Data volume sensitivity
Occupop 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 Occupop to BambooHR migration scoping. Not seeing yours? Book a call.
Walk through your Occupop 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 Occupop
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.