HRMS migration
Field-level mapping, validation, and rollback between Occupop and Crelate. We move data and schema; workflows are rebuilt natively in Crelate.
Occupop
Source
Crelate
Destination
Compatibility
8 of 12
objects map 1:1 between Occupop and Crelate.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Occupop to Crelate is a migration between two SMB-focused ATS platforms with meaningful structural differences. Occupop organizes hiring around Jobs containing Candidates moving through configurable Workflow Stages, with AI screening scores attached to each Candidate record. Crelate uses a Contact-based CRM model where Candidates land as People records attached to Companies, with a configurable Job (Position) pipeline. The primary migration challenges are the Cezanne HR acquisition boundary (which separates Offer and Onboarding data from the Occupop ATS export scope), the unlimited-seat pricing model on Occupop versus Crelate's per-user minimums, and the preservation of AI screening scores as custom fields in Crelate since Crelate does not have a native AI candidate scoring object. We sequence the migration by resolving Users first (accounting for the per-seat minimum), then Jobs, then Candidates with CV attachments and AI scores, and finally interview feedback as Notes. Workflow automations do not migrate; we deliver a written inventory of active Occupop workflow configurations for the customer's Crelate admin to rebuild using Crelate's workflow builder.
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 Crelate, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Occupop
Job
Crelate
Job (Position)
1:1Occupop Jobs map to Crelate Position records. Each Job carries its title, description, department, location, and active/closed status. We preserve the original Occupop Job ID as a Crelate custom field for audit traceability. Board distribution history (Indeed, LinkedIn, Reed, etc.) is exported as a structured list and surfaced post-migration for manual re-posting since Crelate does not track board distribution natively.
Occupop
Candidate
Crelate
Person (Contact)
1:1Occupop Candidates map to Crelate Person records. We preserve name, email, phone, address, stage history, and the original Occupop Candidate ID. Each Candidate is linked to the corresponding Crelate Position via a Job Application relationship. Stage history (Applied, Screening, Interview, Offer) migrates as structured data mapped to Crelate's stage configuration.
Occupop
AI Screening Score
Crelate
Custom Field (numeric)
lossyOccupop's AI screening score is a numeric value computed from CV-to-job-description matching. Crelate has no native AI scoring object, so we create a custom numeric field on the Person (Contact) record before migration. The score migrates as a whole number with the original Occupop rank preserved as a secondary custom field. This allows the customer's team to re-evaluate scores using Crelate's own AI tools post-migration.
Occupop
CV and Attachment
Crelate
Document Attachment
1:1CV files are exported as raw binary files with the candidate's email as the filename key. We import each CV as an attachment on the corresponding Crelate Person record. Crelate's document storage supports PDF and common office formats. We validate file integrity post-migration by spot-checking attachment presence against the source export manifest.
Occupop
Workflow Stage
Crelate
Pipeline Stage
lossyOccupop's stage sequence per Job (e.g. Applied, Phone Screen, Interview, Offer) maps to Crelate's Pipeline stage configuration. We read the ordered stage list from each Occupop Job, create the corresponding stages in Crelate's Pipeline settings, and map candidate movement records to stage entries with timestamps. Customers choose whether to preserve historical stage-entry timestamps or use the migration date.
Occupop
User
Crelate
User
1:1Occupop Users (Admin, Hiring Manager, Recruiter, Viewer) map to Crelate Users by email match. We flag any Occupop role with no Crelate equivalent (e.g. Viewer in Occupop) and recommend the closest Crelate role during scoping. Occupop's unlimited-seat model means large hiring teams may have more users than the Crelate 5-seat minimum; we reconcile this with the customer before migration to avoid provisioning users that will not be activated.
Occupop
Interview Feedback
Crelate
Note
1:1Interview scorecard responses and free-text feedback from Occupop migrate to Crelate Notes attached to the Person record. We preserve the feedback author, date, and score values as structured Note metadata fields. Crelate does not have a native interview-feedback object; Notes provide the closest equivalent for maintaining evaluation history.
Occupop
Custom Field
Crelate
Custom Field
lossyOccupop Custom Fields are arbitrary key-value pairs defined per tenant. We detect all custom field definitions during export, map them to Crelate custom fields on the Person record (as Text, Numeric, Date, or Picklist types per the data), and pre-create them in Crelate before any data loads. Occupop's unlimited custom fields per Candidate may exceed typical Crelate usage; we flag any field that requires a non-standard type mapping.
Occupop
Job Posting Distribution
Crelate
Structured Export (sidecar)
1:1Occupop tracks which job boards a Job was distributed to and the posting date. This board-distribution data is not a standard field in Crelate. We export it as a structured sidecar JSON file per Job and deliver it alongside the migration so the customer's admin can re-create distributions manually in Crelate's job posting tool or via API.
Occupop
Score and Ranking
Crelate
Custom Field
lossyThe AI screening rank (where the Candidate sits within the Job's candidate pool) migrates as a custom numeric field alongside the raw score. Both score and rank are non-destructive: they preserve the Occupop evaluation context without requiring the customer's team to re-score manually in Crelate.
Occupop
Offer and Onboarding
Crelate
Not migrated
1:1Offer 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 API. We explicitly exclude these from migration scope and direct customers to export them directly from Cezanne HR before initiating any data migration. This is a platform boundary, not a data loss gap.
Occupop
Workflow Automation
Crelate
Written inventory (no code migration)
1:1Occupop stage-triggered workflow configurations do not migrate as automation code. Crelate's workflow builder uses a different trigger-and-action model. We audit every active Occupop workflow configuration and deliver a written inventory with each workflow's trigger, conditions, actions, and the recommended Crelate equivalent. The customer's Crelate admin rebuilds these post-migration.
| Occupop | Crelate | Compatibility | |
|---|---|---|---|
| Job | Job (Position)1:1 | Fully supported | |
| Candidate | Person (Contact)1:1 | Fully supported | |
| AI Screening Score | Custom Field (numeric)lossy | Fully supported | |
| CV and Attachment | Document Attachment1:1 | Fully supported | |
| Workflow Stage | Pipeline Stagelossy | Fully supported | |
| User | User1:1 | Fully supported | |
| Interview Feedback | Note1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| Job Posting Distribution | Structured Export (sidecar)1:1 | Fully supported | |
| Score and Ranking | Custom Fieldlossy | Fully supported | |
| Offer and Onboarding | Not migrated1:1 | Fully supported | |
| Workflow Automation | Written inventory (no code migration)1: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.
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
Crelate gotchas
120 req/min API rate limit throttles bulk migrations
20 custom field per-entity cap forces data model decisions
15,000-record export ceiling on single operations
Sequences and automation workflows do not migrate
API key is a querystring parameter, not a header
Pair-specific challenges
Migration approach
Discovery and Cezanne HR boundary check
We audit the source Occupop tenant for record counts (Jobs, Candidates, CV files, users, custom field definitions), active stage configurations, AI scoring data volume, and board-distribution history. We explicitly confirm with the customer whether Offer and Onboarding data exists in Cezanne HR rather than Occupop, and direct them to export it separately. We also identify any Occupop workflow configurations requiring a rebuild inventory. The discovery output is a written migration scope with record counts, a Cezanne HR data handoff checklist, and a custom field mapping table draft.
Crelate schema preparation
We provision the Crelate destination environment by creating the necessary Pipelines with stages matching Occupop's workflow configurations, creating custom fields on the Person record for AI scores, ranks, and any Occupop custom field mappings, and setting up User roles mapped from Occupop's role set. Crelate custom fields must be created before any Person record import; we handle this via the Crelate API or admin UI before data migration begins.
User reconciliation and Crelate provisioning
We extract every Occupop User by email and role, and match against Crelate's existing User table. We flag any Occupop user count exceeding the customer's Crelate seat plan and provide a provisioning list. The customer's Crelate admin provisions the agreed User set before record migration. OwnerId references on all records require resolved User IDs, so this step gates the record import phases.
Job and Position import with board-distribution export
We import Occupop Jobs as Crelate Positions in dependency order, preserving title, description, department, location, and active/closed status. Board-distribution history is extracted as a structured sidecar JSON file per Position. AI screening scores and ranks for Candidates attached to each Position are held for the Candidate import phase. Positions are imported before Candidates so that Position IDs are available for the Candidate-to-Position lookup.
Candidate and CV import with AI score preservation
We import Occupop Candidates as Crelate Person records, linked to the corresponding Position via the Job Application relationship. CV files are imported as binary attachments on each Person record. AI screening scores and ranks land in the pre-created custom numeric fields. Stage history is written as structured entries against the Crelate Pipeline. We run row-count reconciliation after Candidate import and spot-check 25-50 records against the Occupop source.
Interview feedback and notes migration
Interview scorecard responses and free-text feedback migrate as Crelate Notes attached to the relevant Person record, with the author, date, and score values preserved as structured metadata. We batch Note creation to avoid Crelate's API rate limits and log each Note's source reference for reconciliation.
Cutover, validation, and workflow rebuild handoff
We freeze Occupop writes during cutover, run a final delta migration of any records modified during the migration window, then enable Crelate as the system of record. We deliver the board-distribution sidecar files and the workflow rebuild inventory document to the customer's Crelate admin. We support a one-week hypercare window for reconciliation issues. Workflow automations, sequences, and forms do not migrate as code; the rebuild handoff document provides the starting point for the admin's rebuild work.
Platform deep dives
Occupop
Source
Strengths
Weaknesses
Crelate
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 Crelate.
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 Crelate migration scoping. Not seeing yours? Book a call.
Walk through your Occupop to Crelate 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 Crelate
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.