HRMS migration
Field-level mapping, validation, and rollback between CIPHR and Recruit CRM & ATS. We move data and schema; workflows are rebuilt natively in Recruit CRM & ATS.
CIPHR
Source
Recruit CRM & ATS
Destination
Compatibility
5 of 12
objects map 1:1 between CIPHR and Recruit CRM & ATS.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from CIPHR to Recruit CRM is a domain shift from a mid-market HR and payroll platform to a specialist recruitment ATS and CRM. CIPHR stores employee records, absence balances, payroll histories, and recruitment data across tightly integrated modules; Recruit CRM is built around candidates, jobs, clients, and placements. We extract recruitment data from CIPHR iRecruit (vacancies, applications, candidate profiles), map employee records to Recruit CRM candidates where the employee is also a past applicant, and flag HR data that has no equivalent in Recruit CRM (absence balances, benefits, performance appraisals, payroll) for the customer's admin to archive or recreate. We do not migrate workflows, onboarding task lists, or learning management records as these require manual configuration in Recruit CRM.
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 CIPHR 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.
CIPHR
Employee / Candidate Record
Recruit CRM & ATS
Candidate
1:1CIPHR iRecruit stores candidate records as part of its recruitment module. These map directly to Recruit CRM Candidates. We extract first name, last name, email, phone, current employer, CV/resume content, application date, and any custom candidate properties. CIPHR's candidate status stages (custom pipelines) map to Recruit CRM job-specific pipeline stages. Employee records that were never part of the CIPHR recruitment module do not automatically become Recruit CRM Candidates; the customer identifies the overlap during scoping.
CIPHR
Job Vacancy / Job Posting
Recruit CRM & ATS
Job
1:1CIPHR iRecruit vacancies map to Recruit CRM Job records. We extract job title, department, location, employment type, salary range, job description, and board posting history. CIPHR's multi-board posting configuration (which job boards each vacancy was published to) is stored as a text list and mapped to the Recruit CRM job board field; the customer re-publishes from Recruit CRM's integrations post-migration.
CIPHR
Application / Candidate-to-Job
Recruit CRM & ATS
Candidate Job Association
1:1The CIPHR application record (which links a candidate to a vacancy with a specific status and date) maps to Recruit CRM's candidate-job association. We preserve the application date, current stage, source channel, and any interviewer assignments. Recruit CRM's associated_fields endpoint (POST /v1/candidates/associated-field/{candidate}/{job}) handles custom fields on the candidate-job relationship.
CIPHR
Custom Properties (Recruitment)
Recruit CRM & ATS
Custom Fields
lossyCIPHR custom candidate properties and custom vacancy properties map to Recruit CRM custom fields on Candidate and Job respectively. Recruit CRM exposes custom fields through its API as typed fields (text, number, date, dropdown). We pre-create the destination custom field schema before import and map CIPHR property values by name and data type. Any CIPHR custom property with no Recruit CRM equivalent is flagged for manual field creation.
CIPHR
Employee Records (from HR module)
Recruit CRM & ATS
Candidate (optional, customer-defined)
1:1For customers who used CIPHR's recruitment module alongside its HR module, the employee record and the candidate record may be separate CIPHR objects. We identify the overlap during scoping and offer a merge-by-email strategy where an employee record and a candidate record with the same email address are combined into a single Recruit CRM Candidate. This requires the customer to define the merge rule and confirm which CIPHR source (iRecruit vs HR module) takes precedence for each field.
CIPHR
Users and System Access
Recruit CRM & ATS
Users
1:1CIPHR user accounts with name, email, role, and permissions map to Recruit CRM Users. We extract the CIPHR role name and map it to Recruit CRM's permission structure (Admin, Recruiter, Hiring Manager, Read-only). Any CIPHR user who only had HR access (no recruitment access) is flagged as a candidate record rather than a user in Recruit CRM unless the customer specifies otherwise.
CIPHR
Absence and Leave
Recruit CRM & ATS
Not supported
lossyCIPHR absence balances (holiday, sickness, other leave) and accrual histories have no equivalent object in Recruit CRM. Recruit CRM is a recruitment ATS and CRM; leave management is outside its scope. We extract absence records for the customer's HR team to review, and flag this data for manual archiving or for import into a separate HR system if one is deployed alongside Recruit CRM.
CIPHR
Payroll Records
Recruit CRM & ATS
Not supported
lossyHistorical payroll data, tax codes, pension contributions, and year-to-date earnings in CIPHR have no equivalent in Recruit CRM. If the customer is also switching payroll providers, payroll history must be migrated separately into the new payroll system. For CIPHR payroll bureau clients, RTI submission records and P60/P45 documents must be retrieved from HMRC independently of the Recruit CRM migration.
CIPHR
Documents (Employee)
Recruit CRM & ATS
Not supported
lossyCIPHR stores employee contracts, policies, and ID documents as employee-linked files. Recruit CRM does not have a native document storage object equivalent for employee records. We extract document metadata (filename, type, associated employee, upload date) as a structured list. The customer decides whether to re-upload documents to a linked cloud storage system or recreate them in Recruit CRM's notes on the candidate record.
CIPHR
Learning / Training Records
Recruit CRM & ATS
Not supported
lossyCIPHR LMS tracks course completions, quiz results, and training assignments. Recruit CRM does not include an LMS module. Training history migrates as a written record (employee name, course name, completion date, result) in CSV format for the customer's admin to review. We do not import training data as Recruit CRM records because there is no target object.
CIPHR
Performance Appraisals
Recruit CRM & ATS
Not supported
lossyAppraisal records, ratings, and 360 feedback stored in CIPHR have no equivalent in Recruit CRM. We extract appraisal cycle names, employee ratings, and reviewer comments as a structured CSV for the customer's HR team to archive separately. Custom appraisal templates require manual rebuild in the destination HR system.
CIPHR
Benefits Enrolment
Recruit CRM & ATS
Not supported
lossyCIPHR benefits module holds enrolment records, flexible benefit selections, and contribution amounts. Recruit CRM does not support benefits administration. We extract the benefit plan names, employee enrolments, and contribution amounts as a structured record set for the customer's HR team to handle outside the Recruit CRM migration scope.
| CIPHR | Recruit CRM & ATS | Compatibility | |
|---|---|---|---|
| Employee / Candidate Record | Candidate1:1 | Fully supported | |
| Job Vacancy / Job Posting | Job1:1 | Fully supported | |
| Application / Candidate-to-Job | Candidate Job Association1:1 | Fully supported | |
| Custom Properties (Recruitment) | Custom Fieldslossy | Mapping required | |
| Employee Records (from HR module) | Candidate (optional, customer-defined)1:1 | Fully supported | |
| Users and System Access | Users1:1 | Mapping required | |
| Absence and Leave | Not supportedlossy | Fully supported | |
| Payroll Records | Not supportedlossy | Mapping required | |
| Documents (Employee) | Not supportedlossy | Fully supported | |
| Learning / Training Records | Not supportedlossy | Mapping required | |
| Performance Appraisals | Not supportedlossy | Mapping required | |
| Benefits Enrolment | Not supportedlossy | 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.
CIPHR gotchas
No public pricing means migration budget estimates are harder to pin down
Payroll bureau clients face higher migration complexity
Absence balance recalculation at the destination can cause accrual discrepancies
Custom onboarding templates require manual pre-mapping
Recruit CRM & ATS gotchas
API rate limits are license-scaled and can throttle bulk migration
Custom field schemas vary per organization and require field-level mapping
Files and email attachments require separate extraction and re-upload
Email sequences and automation logic do not transfer between platforms
Pair-specific challenges
Migration approach
Discovery and data audit
We audit the source CIPHR environment across modules (HR core, iRecruit, payroll, LMS, benefits) to identify which records are candidates versus employees versus both. We extract vacancy records, candidate profiles, application histories, and any custom CIPHR pipeline stages. We flag HR data (absence, benefits, payroll, performance) that has no Recruit CRM equivalent and present it as a structured CSV export. The discovery output is a written migration scope document that the customer signs off on before we begin schema design.
Schema design and Recruit CRM configuration
We configure the destination Recruit CRM account. This includes creating custom fields to match CIPHR custom properties on Candidate and Job objects, configuring pipeline stages to match CIPHR iRecruit stages (or nearest equivalents), setting up user accounts with roles mapped from CIPHR permissions, and enabling GDPR-compliant field settings. We configure the Recruit CRM sandbox or trial account first for validation before any production data moves.
Data extraction and transformation
We extract CIPHR iRecruit data (candidates, vacancies, applications) via the CIPHR API or structured export, depending on what the CIPHR environment exposes. We transform the data using the mapping table: CIPHR candidate fields map to Recruit CRM Candidate fields; CIPHR vacancy fields map to Recruit CRM Job fields; CIPHR application records map to candidate-job associations. Custom field values are transformed to match Recruit CRM's field types (text, number, date, dropdown). Any CIPHR field with no Recruit CRM target is flagged in the transformation report.
Sandbox validation and customer sign-off
We load transformed data into the customer's Recruit CRM sandbox or staging account. The customer's recruitment lead reconciles record counts (candidates in, jobs in, applications in), spot-checks 25-50 records against CIPHR source data, and verifies that custom fields populated correctly. We resolve any mapping errors identified during validation before production migration begins. This step typically takes two to three business days for review and sign-off.
Production migration in dependency order
We run the production migration in record-dependency order: Users (provisioned from CIPHR user list), Jobs (created first because candidates reference job associations), Candidates (with custom fields resolved), Candidate-Job associations (linking candidates to jobs with stage and date preserved), and custom fields on both Candidate and Job. Each phase emits a row-count reconciliation report. We use the Recruit CRM REST API with rate-limit handling and exponential backoff for all inserts.
Cutover, validation, and handoff
We freeze CIPHR writes during the cutover window, run a final delta migration of any records created or modified after the initial export, then mark Recruit CRM as the system of record. We deliver the full HR data CSV exports (absence, benefits, payroll, performance, documents) to the customer's HR team with a written index of what each file contains. We do not rebuild onboarding workflows, learning modules, or HR automations inside Recruit CRM; these are documented separately for the customer's admin to configure. We support a five-business-day post-cutover window to resolve any data quality issues raised by the recruitment team.
Platform deep dives
CIPHR
Source
Strengths
Weaknesses
Recruit CRM & ATS
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. 2 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 CIPHR and Recruit CRM & ATS.
Object compatibility
2 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
CIPHR: Not publicly documented by CIPHR directly.
Data volume sensitivity
CIPHR 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 CIPHR to Recruit CRM & ATS migration scoping. Not seeing yours? Book a call.
Walk through your CIPHR to Recruit CRM & ATS migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave CIPHR
Other ways to arrive at Recruit CRM & ATS
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.