HRMS migration

Migrate from Occupop to Recruit CRM & ATS

Field-level mapping, validation, and rollback between Occupop and Recruit CRM & ATS. We move data and schema; workflows are rebuilt natively in Recruit CRM & ATS.

Occupop logo

Occupop

Source

Recruit CRM & ATS

Destination

Recruit CRM & ATS logo

Compatibility

80%

8 of 10

objects map 1:1 between Occupop and Recruit CRM & ATS.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Occupop to Recruit CRM is a migration between two ATS platforms built for different primary audiences: Occupop for SMB hiring teams, Recruit CRM for recruitment agencies and executive search firms. Recruit CRM's strength is its ATS-plus-CRM design with AI resume parsing, candidate matching, and a kanban view for both candidates and deals, but its custom field ceiling (15 on Pro, 150 on Business and Enterprise) is the first constraint to verify against your Occupop tenant's field count. We extract Occupop's Jobs, Candidate profiles, stage sequences, and user accounts through Occupop's export capabilities, transform custom fields and stage names during a scoping phase, and land records into Recruit CRM via its REST API with parent-lookup resolution. Workflow configurations, automation rules, and offer/onboarding state do not migrate; we deliver a written inventory of these for your admin to rebuild in Recruit CRM.

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

Occupop logo

Occupop

What's pushing teams away

  • Advanced reporting and deep analytics lag behind enterprise HCM platforms, frustrating People teams that need custom dashboards or cross-pipeline trend analysis.
  • Occupop's feature set narrows as hiring needs scale beyond mid-market volume, pushing fast-growing companies toward platforms like Greenhouse, Lever, or Workday ATS.
  • Integration catalogue is smaller than competitors — teams with established HRIS, payroll, or background-check tools may face manual re-entry or custom integration work.
  • The acquisition by Cezanne HR (March 2025) introduces uncertainty about roadmap direction, pricing continuity, and long-term product independence, prompting some customers to evaluate alternatives proactively.

Choosing

Recruit CRM & ATS logo

Recruit CRM & ATS

What's pulling them in

  • Agencies choose Recruit CRM for its full customizability — pipelines, stages, and fields can be tailored to any recruitment workflow without developer involvement.
  • Small teams value the built-in CRM and ATS combined in one subscription, eliminating the need to purchase and sync separate systems.
  • The Chrome extension for one-click LinkedIn profile collection streamlines candidate sourcing and reduces manual data entry for recruiters.
  • Responsive customer support with fast issue resolution is consistently cited as a reason teams stick with the platform long-term.
  • Automation options including email sequences and workflow triggers allow recruitment agencies to reduce repetitive manual outreach tasks.

Object mapping

How Occupop objects map to Recruit CRM & ATS

Each row shows how a Occupop object lands in Recruit CRM & ATS, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

Occupop

Job (Position)

maps to

Recruit CRM & ATS

Position

1:1
Fully supported

Occupop Jobs map to Recruit CRM Positions. Each Job carries title, description, department, location, and status (active/closed). We preserve the original Occupop Job ID as source_job_id__c for audit traceability. Active Jobs are imported with their status; closed Jobs are imported with a Closed status flag and excluded from the active pipeline count. Board-distribution history (Indeed, LinkedIn, Reed, etc.) is exported as a structured JSON list per Job and surfaced as a separate sidecar file post-migration for your team to re-create postings in Recruit CRM's multi-posting interface.

Occupop

Candidate (Applicant)

maps to

Recruit CRM & ATS

Candidate

1:1
Fully supported

Occupop Candidate records map to Recruit CRM Candidates. Standard fields (name, email, phone, current company, current title, LinkedIn URL, source) migrate directly. The AI screening score and rank within the Job's candidate pool migrate as numeric fields to Recruit CRM's candidate rating or custom score fields. Candidates are linked to their destination Position during import using the Job slug-to-position-id lookup resolved at migration time.

Occupop

Workflow Stage

maps to

Recruit CRM & ATS

Pipeline Stage

lossy
Fully supported

Each Occupop Job defines an ordered stage sequence (e.g. Applied, Screening, Interview, Offer). We export the full stage sequence per Job and map stage names to Recruit CRM pipeline stages. If Recruit CRM's default stage set does not match the customer's naming convention, we configure custom stages during the schema design phase. Stage probabilities are preserved if stored in Occupop and mapped to Recruit CRM stage weight fields.

Occupop

User (Hiring Team Member)

maps to

Recruit CRM & ATS

Team Member

1:1
Fully supported

Occupop Users with Admin, Hiring Manager, Recruiter, and Viewer roles map to Recruit CRM Team Members. We export by email match and flag any Occupop role with no direct Recruit CRM equivalent. The customer's admin provisions the matching user accounts in Recruit CRM before migration so that OwnerId references are satisfied at import time. Inactive Occupop users are mapped to inactive Recruit CRM users to preserve historical assignment.

Occupop

CV and Attachment

maps to

Recruit CRM & ATS

Resume / File Attachment

1:1
Fully supported

CV files linked to Occupop Candidates are exported as raw files alongside the candidate mapping. We re-attach each CV to the corresponding Recruit CRM Candidate record using the candidate slug resolved at migration time. File naming uses the convention candidate_[id]_cv.[ext] for traceability. If Occupop stores multiple attachments per Candidate, each is mapped individually to the Candidate record.

Occupop

Interview Feedback and Scorecard

maps to

Recruit CRM & ATS

Notes

1:1
Fully supported

Occupop interview notes and scorecard responses are stored per Candidate per stage. Recruit CRM does not expose a native interview-feedback object; we land the full feedback text and numeric scores as Notes on the Candidate record with a note type field indicating the stage (e.g. Interview - Screening, Interview - Final Round). The original interviewer name and date are preserved in the note body for audit purposes.

Occupop

Custom Fields

maps to

Recruit CRM & ATS

Custom Fields

lossy
Mapping required

Occupop Custom Fields are arbitrary tenant-defined key-value pairs on Candidate records. We inspect the source tenant's custom field definitions during scoping, count them against the target Recruit CRM plan limit (15 on Pro, 150 on Business and Enterprise), and flag any overage before migration begins. If the count exceeds Pro's limit, the customer upgrades to Business or Enterprise. We map each Occupop custom field to an equivalent Recruit CRM custom field by type (text, number, date, picklist), preserving field labels as configured in Recruit CRM.

Occupop

Score and Ranking Data

maps to

Recruit CRM & ATS

Candidate Rating / Custom Score Field

1:1
Fully supported

Occupop's AI screening score (0-100) and candidate rank within a Job's pool migrate as structured fields on the Recruit CRM Candidate record. The score lands in a numeric custom field (e.g. ai_screening_score__c), and the rank lands as candidate_rank__c. If Recruit CRM's native rating field (1-5 stars) is preferred, we normalise the score to the 1-5 scale using the customer's agreed conversion formula during the transform phase.

Occupop

Offer and Onboarding Records

maps to

Recruit CRM & ATS

(Not migrated)

1:1
Not supported

Offer letters, employment contracts, and onboarding workflow state live in Cezanne HR's broader suite post-acquisition and are not accessible via Occupop's ATS export. We do not migrate offer or onboarding records. The customer exports these directly from Cezanne HR before migration begins. This exclusion is documented in the migration scope and signed off before data extraction starts.

Occupop

Job Board Distribution History

maps to

Recruit CRM & ATS

Sidecar JSON / Structured Notes

1:1
Fully supported

Occupop tracks which job boards each Job was distributed to (Indeed, LinkedIn, Reed, Glassdoor, etc.) and the posting date. Recruit CRM does not natively store board-distribution history per job. We export this as a structured JSON sidecar file keyed by Job ID and also append it as a formatted note on the Position record so recruiters can re-create distributions manually in Recruit CRM's multi-posting channel without losing the original board list.

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.

Occupop logo

Occupop gotchas

Medium

Cezanne HR acquisition may change data residency and contract terms

Medium

Offer and onboarding data lives outside Occupop's ATS scope

Low

Custom Fields schema varies by tenant and may require mapping

Low

Job posting board-distribution history does not map to standard ATS fields

Recruit CRM & ATS logo

Recruit CRM & ATS gotchas

High

API rate limits are license-scaled and can throttle bulk migration

Medium

Custom field schemas vary per organization and require field-level mapping

Medium

Files and email attachments require separate extraction and re-upload

Low

Email sequences and automation logic do not transfer between platforms

Pair-specific challenges

  • Recruit CRM Pro caps custom fields at 15 — verify against your Occupop tenant

    Occupop allows each tenant to define arbitrary custom fields on Candidate records with no published ceiling. Recruit CRM limits custom fields to 15 on the Pro plan ($100/user/month) and 150 on Business and Enterprise. If your Occupop tenant uses more than 15 custom fields, the Pro plan cannot accommodate them without flattening or dropping fields. We audit the source tenant's custom field count during scoping, flag the overage, and recommend the appropriate Recruit CRM plan before migration begins. Skipping this step results in a partial import where fields are silently dropped or truncated on the Pro tier.

  • Occupop's offer and onboarding data is not in the ATS export

    Post-acquisition, offer letters, employment contracts, and onboarding workflow state live in Cezanne HR's broader suite, not in Occupop's ATS. Occupop's export API does not expose these records. We explicitly exclude them from migration scope and direct customers to export offer and onboarding data from Cezanne HR directly before migration begins. If the customer does not have direct Cezanne HR access, we flag this gap during discovery and note it in the scope document. Continuing without this step means offer history is permanently unavailable in the destination system.

  • Deleted Google Calendar meetings do not sync back from Recruit CRM

    Recruit CRM supports two-way email and calendar sync, but users on Reddit report that deleted meetings in Google Calendar do not propagate back to Recruit CRM, creating stale calendar entries. This is a known limitation of Recruit CRM's Google Calendar integration and not specific to the migration. During migration, calendar events migrated from Occupop are historical records; ongoing sync behavior is a Recruit CRM configuration decision your team manages post-migration. We do not rebuild or re-engineer the calendar sync as part of migration scope.

  • Occupop board-distribution history has no native Recruit CRM equivalent

    Occupop tracks which job boards each Job was posted to (Indeed, LinkedIn, Reed, etc.) and when. Recruit CRM's multi-posting feature publishes to 5,000+ channels but does not maintain a per-board history log for each Position. Board-distribution history is not a standard ATS field in Recruit CRM. We export it as a structured sidecar and append it as a note on the Position, but the customer must manually re-create distributions after migration using Recruit CRM's built-in job board connectors. This is documented in the migration handoff.

  • Custom field schema varies by Occupop tenant — inspect before mapping

    Occupop's Custom Fields are tenant-defined key-value pairs with no fixed schema. Each Occupop customer has a different set of custom field names, types, and validation rules. During scoping we inspect the source tenant's field definitions, classify each by Recruit CRM's supported types (text, number, date, picklist), and build a one-to-one mapping table. Where an Occupop field type has no Recruit CRM equivalent, we fall back to a text field and note the limitation. This inspection step adds one to two days to scoping but prevents silent data loss at import.

Migration approach

Six steps for a successful Occupop to Recruit CRM & ATS data migration

  1. Discovery and custom field audit

    We audit the source Occupop tenant across Jobs, Candidates, stage sequences, custom field definitions, user accounts, CV file inventory, and interview feedback volume. We count every custom field definition and compare against Recruit CRM plan limits (15 on Pro, 150 on Business and Enterprise). If the field count exceeds Pro's ceiling, we recommend the Business or Enterprise plan and update the scope accordingly. We also identify any Cezanne HR offer/onboarding data that requires separate export. The discovery output is a written migration scope document with record counts, field map draft, and plan recommendation signed off by the customer before data extraction begins.

  2. Schema design and field mapping

    We design the destination schema in Recruit CRM. This includes provisioning custom fields (matched to Occupop field names and types), configuring pipeline stages (mapped from Occupop stage sequences per Job), and setting up the team member structure. We build the field mapping table that governs every import run: Occupop field name, data type, transformation rule (direct map, normalisation, or fallback), and the corresponding Recruit CRM field. The field map is validated against a sample of 50-100 records before any full-scale import to catch type mismatches or truncation risks.

  3. CV file export and staging

    We extract all CV files from Occupop linked to Candidate records, verify file integrity (format, size, naming), and stage them alongside the candidate mapping CSV. Each CV is associated with its candidate ID for re-attachment in Recruit CRM. Large CV libraries (over 2 GB combined) are chunked for import in batches to avoid timeout during the file attachment phase. We flag any corrupted or missing CV files and report them to the customer for manual recovery before the final import run.

  4. Sandbox migration and reconciliation

    We run a full migration into Recruit CRM using a test environment or a subset of production data (typically 10-20% of records selected by the customer). The customer reconciles record counts (Positions, Candidates, Notes, attachments), spot-checks 25-50 candidate records for field accuracy, and validates that stage names, custom field values, and CV attachments appear correctly. Any mapping corrections are applied to the field map and the sandbox run is repeated until reconciliation passes. Sign-off on sandbox results is required before production migration begins.

  5. Owner and user provisioning

    We extract every distinct Occupop user referenced on Candidate, Job, and feedback records and match by email against Recruit CRM team member accounts. The customer's Recruit CRM admin provisions any missing accounts before production migration so that OwnerId references are satisfied. Inactive Occupop users are mapped to inactive Recruit CRM users to preserve historical assignment without licensing implications. Migration cannot proceed past this step if OwnerId lookups remain unresolved.

  6. Production migration in dependency order

    We run production migration in record-dependency order: Positions (Jobs) first, then Candidates (with Position slug resolved to Recruit CRM Position ID), then Notes (interview feedback and board-distribution history), then file attachments (CVs re-linked to Candidate records). Each phase emits a row-count reconciliation report. Board-distribution history is delivered as a structured JSON sidecar and appended as formatted notes on each Position. Custom fields are imported last after standard fields are validated. After all phases complete, we run a final delta scan to capture any records modified during the migration window.

  7. Cutover, validation, and automation handoff

    We freeze Occupop writes during cutover and run a final delta migration of any records modified during the window. We validate the production import: candidate count matches, CV attachment rate above 95%, custom field values present for all mapped fields. We deliver the automation and workflow inventory document listing every Occupop Workflow or stage-configuration rule that requires rebuilding in Recruit CRM. We support a one-week hypercare window for reconciliation issues. We do not rebuild Occupop Workflows as Recruit CRM automations inside migration scope; that is a separate engagement or an internal admin task.

Platform deep dives

Context on both ends of the pair

Occupop logo

Occupop

Source

Strengths

  • Unlimited user seats regardless of plan, eliminating per-seat cost surprises for growing hiring teams.
  • AI screening scores and ranks candidates against job descriptions, reducing manual CV triage for high-volume roles.
  • 1-click multi-channel job posting consolidates distribution to Indeed, LinkedIn, Glassdoor, and niche boards in a single action.
  • Clean, centralized dashboard surfaces every step of each open role's pipeline without switching views.
  • 2-week free trial with no credit card lowers evaluation friction for SMB buyers.

Weaknesses

  • Reporting and analytics lack the depth needed by People teams accustomed to custom BI dashboards or cross-pipeline trend views.
  • Smaller integration catalogue than enterprise competitors; customers on niche HRIS or background-check tools may need custom workarounds.
  • Advanced features (custom workflows, advanced analytics, some API capabilities) are gated behind higher tiers or future roadmap items.
  • Post-acquisition roadmap uncertainty may concern customers who need long-term product stability guarantees.
Recruit CRM & ATS logo

Recruit CRM & ATS

Destination

Strengths

  • Fully customizable pipelines, stages, and fields without requiring developer involvement
  • Combines recruitment CRM and ATS in one subscription for staffing agencies and small teams
  • Built-in email sequences and automation reduce manual outreach work
  • Chrome extension enables one-click LinkedIn profile collection directly into the CRM
  • Responsive customer support cited across multiple reviews with fast resolution times

Weaknesses

  • Several features are gated as paid add-ons rather than included in the base subscription
  • Email functionality has been reported as unreliable by multiple users
  • Interface occasionally lags during high-activity periods in large pipelines
  • Pricing is considered higher than comparable recruitment CRMs by some customers
  • Limited native reporting — users request pre-made report exports rather than manual data pulls

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 Occupop and Recruit CRM & ATS.

  • 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

    Occupop: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Occupop to Recruit CRM & ATS 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 Occupop to Recruit CRM & ATS data migrations

Answers to the questions buyers ask most during Occupop to Recruit CRM & ATS migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Occupop to Recruit CRM & ATS 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 accounts under 3,000 candidates with fewer than 15 custom fields and no large CV file library. Migrations with 50+ custom fields, multiple active Job pipelines, extensive interview feedback histories, or large CV volumes (over 2 GB of files) move to six to ten weeks because of field reconciliation against Recruit CRM's plan limits, file handling, and multi-phase import validation. A sandbox reconciliation pass before production migration adds three to five days to the schedule but prevents data quality issues that are expensive to fix post-cutover.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Occupop.
Land in Recruit CRM & ATS, 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