HRMS migration
Field-level mapping, validation, and rollback between Breathe and Recruit CRM & ATS. We move data and schema; workflows are rebuilt natively in Recruit CRM & ATS.
Breathe
Source
Recruit CRM & ATS
Destination
Compatibility
12 of 12
objects map 1:1 between Breathe and Recruit CRM & ATS.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Breathe HRMS and Recruit CRM serve different operational models. Breathe organises its data around employees within an HRIS paradigm: People records, absence balances, sickness entries, performance reviews, and company documents. Recruit CRM is a recruitment ATS and CRM built around Candidates, Job Orders, Clients, and Placements. Migrating between them requires a conceptual transformation, not a direct field copy: employee records become candidate profiles, employment history becomes the candidate's work experience, and absence records require careful placement as notes, custom fields, or compliance documentation. We do not migrate Breathe Workflows, onboarding task definitions, Breathe Learn completion records, or any automation logic, because these have no structural equivalent in Recruit CRM. We deliver a written inventory of every automation and workflow that requires rebuilding in Recruit CRM's settings post-migration.
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 Breathe 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.
Breathe
Employee (People)
Recruit CRM & ATS
Candidate
1:1Breathe Employee records map to Recruit CRM Candidate profiles. Name, email, phone, address, start date, and employment status transfer directly. The Breathe employment status (active, leaver, on leave) maps to Candidate status. Custom fields on the Employee record migrate to Recruit CRM custom fields on the Candidate object, with field types matched (text to text, date to date, picklist to dropdown). Department and job role from Breathe become tags or custom fields on the Candidate record.
Breathe
Department
Recruit CRM & ATS
Candidate Tags or Custom Field
1:1Breathe Department records map to Candidate Tags in Recruit CRM for departmental classification. If the customer uses departmental cost-centre codes, these migrate as a custom text field on the Candidate record. Departments are not standalone objects in Recruit CRM, so no lookup resolution is required.
Breathe
Job Role
Recruit CRM & ATS
Current Position (Candidate field)
1:1Breathe job role titles migrate to the Candidate's Current Job Title field. If the customer maintains a structured job-role taxonomy in Breathe, we map it to Recruit CRM's Industry or Function fields for reporting consistency.
Breathe
Absence / Leave records
Recruit CRM & ATS
Candidate Notes or Custom Fields
1:1Breathe absence entries (annual leave, sick leave, other) have no direct equivalent in Recruit CRM. We extract full absence history including leave type, dates, duration, and approval status from Breathe Reports and store it as structured notes on the Candidate record or as custom fields if the customer requires absence data in searchable form. Leave balance carry-forward figures require independent verification against entitlement settings and approval records before migration, as Breathe calculates balances internally and the pre-calculated fields may not reflect a point-in-time snapshot.
Breathe
Sickness records
Recruit CRM & ATS
Candidate Notes
1:1Breathe sickness entries are a distinct record type with dates, reasons, and Fit Note references. Sickness history migrates as structured notes on the Candidate record with date, type, and outcome preserved. Fit Note references are included as text in the note body. There is no native sickness object in Recruit CRM, so this data does not appear as a separate list view.
Breathe
Performance reviews
Recruit CRM & ATS
Candidate Notes
1:1Breathe Performance Review records (available on Professional and Enterprise tiers) map to notes on the Candidate record. Review cycle, overall rating, and individual competency scores transfer as structured note content. Recruit CRM has no native performance review module, so review history appears as chronological notes rather than a formal review object. Review templates themselves do not migrate as templates; we document the template structure in the handoff inventory.
Breathe
Remuneration / Payroll data
Recruit CRM & ATS
Candidate Custom Fields or Notes
1:1Breathe Remuneration Report (salary, additional payments, benefits, auto-enrolment) and Payroll exports are available via Reports. We extract these as structured records and load them to Recruit CRM Candidate custom fields or as salary/notice-period notes. Compensation data is sensitive; we apply encrypted handling throughout the migration and do not store it in staging environments beyond validation.
Breathe
Onboarding tasks
Recruit CRM & ATS
Written inventory (not migrated)
1:1Breathe onboarding records track new-hire tasks, pending documents, and workflow steps. Onboarding task definitions and workflow logic do not migrate because Recruit CRM's onboarding model is different. We extract the task list and completion status for each employee as notes on the Candidate record and deliver a written onboarding task inventory to the customer's admin for rebuild in Recruit CRM or a separate onboarding tool.
Breathe
Breathe Learn completion records
Recruit CRM & ATS
Candidate Notes
1:1Breathe Learn (available on Professional and Enterprise tiers) tracks compliance training completion. Completion records migrate as structured notes on the Candidate record showing course name, completion date, and status. Course definitions and learning paths do not migrate as content; we deliver a written list of active Breathe Learn courses for the customer's L&D admin to recreate or replace.
Breathe
Custom Fields (Employee)
Recruit CRM & ATS
Candidate Custom Fields
1:1Breathe custom fields on the Employee record map to Recruit CRM custom fields on the Candidate object. We extract field names and values from the People Data Export, match field types to Recruit CRM field types (text, date, number, dropdown), and create the destination fields before migration. Any bespoke custom fields created outside Breathe's standard framework are flagged during the pre-migration audit and handled on a case-by-case basis.
Breathe
Documents (Company and Employee)
Recruit CRM & ATS
Manual migration required
1:1Breathe stores Company documents (policies, handbooks) and Employee documents (contracts, IDs) in two separate silos with no bulk export API. Documents must be downloaded individually from the Breathe UI. We flag this as a mandatory manual step, provide a guided download checklist covering Company > Company documents and Profile > More > Documents, and advise beginning document archiving at the scoping stage. Upload into Recruit CRM is performed by the customer's admin after migration using Recruit CRM's file attachment interface.
Breathe
Owner (HR admin)
Recruit CRM & ATS
Recruit CRM User
1:1Breathe users who are assigned as record owners or approvers map to Recruit CRM User accounts. We match by email address. Any Breathe user without a matching Recruit CRM account enters a reconciliation queue for the customer's admin to provision before the production migration phase begins.
| Breathe | Recruit CRM & ATS | Compatibility | |
|---|---|---|---|
| Employee (People) | Candidate1:1 | Fully supported | |
| Department | Candidate Tags or Custom Field1:1 | Fully supported | |
| Job Role | Current Position (Candidate field)1:1 | Fully supported | |
| Absence / Leave records | Candidate Notes or Custom Fields1:1 | Fully supported | |
| Sickness records | Candidate Notes1:1 | Fully supported | |
| Performance reviews | Candidate Notes1:1 | Mapping required | |
| Remuneration / Payroll data | Candidate Custom Fields or Notes1:1 | Mapping required | |
| Onboarding tasks | Written inventory (not migrated)1:1 | Fully supported | |
| Breathe Learn completion records | Candidate Notes1:1 | Fully supported | |
| Custom Fields (Employee) | Candidate Custom Fields1:1 | Fully supported | |
| Documents (Company and Employee) | Manual migration required1:1 | Not supported | |
| Owner (HR admin) | Recruit CRM User1: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.
Breathe gotchas
No bulk document export — manual download required
No direct migration path between Breathe accounts
People Data Export may omit data in non-standard modules
Leave balance carry-forward requires manual verification
Tier-gated features may limit export coverage
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 module audit
We audit the source Breathe account across tier (Starter, Professional, Enterprise), active modules (Absence, Sickness, Performance, Breathe Learn, Onboarding), custom field count, document volume, and employee record count. We confirm which modules are tier-gated and request exports from the appropriate licensed sections. The discovery output is a written migration scope, a data audit report listing every object to be migrated, a document download checklist, and a confirmed timeline for the pre-migration document archiving window.
Schema design and field mapping
We design the Recruit CRM destination schema based on the audit findings. Candidate custom fields are created to match Breathe's Employee custom field names and types. Leave history, sickness records, and performance review data are mapped to either custom fields or structured note templates depending on the customer's preference for searchability versus preservation of format. Any absence of a native equivalent (onboarding workflows, Breathe Learn) is documented in the handoff inventory rather than forced into a mismatched field.
Sandbox migration and reconciliation
We run a full migration into a Recruit CRM staging environment using production-like data volume. The customer's HR lead or Recruit CRM admin reconciles record counts against the source Breathe export, spot-checks 25-50 random candidate records for field accuracy, and validates that absence history and custom fields are present in the expected format. Any mapping corrections occur in this phase. No production records are touched until the sandbox sign-off is received.
Document archiving guidance
We provide the customer with a structured document download checklist covering Breathe Company documents and Employee documents. We advise beginning this step at the scoping meeting, as it is a manual UI-only task that cannot be automated. We do not include document download or Recruit CRM upload in the standard migration scope, but we can provide a separate statement of work for managed document migration if the customer requires it.
Production migration in dependency order
We run production migration in this order: Candidate records first (with department tags, job role, and employment status), then employment history as structured notes, absence history and sickness records, performance review notes, remuneration data as custom fields or notes, and Breathe Learn completion records last. Custom fields are created in Recruit CRM before any data loads. Owner resolution (matching Breathe users to Recruit CRM users by email) completes before candidate import to ensure every record has an assigned owner. Each phase emits a row-count reconciliation report.
Cutover, validation, and workflow handoff
We freeze writes to Breathe during the cutover window, run a final delta migration of any records modified during the migration window, then mark Recruit CRM as the system of record. We deliver the Workflow and Automation Inventory document, the Onboarding Task Inventory, and the Breathe Learn Course List to the customer's admin. We support a one-week post-go-live window for reconciliation issues. We do not rebuild Breathe workflows as Recruit CRM automations inside the migration scope; that work requires a separate scoping engagement with the customer's Recruit CRM admin.
Platform deep dives
Breathe
Source
Strengths
Weaknesses
Recruit CRM & ATS
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 Breathe and Recruit CRM & ATS.
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
Breathe: Not publicly documented.
Data volume sensitivity
Breathe 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 Breathe to Recruit CRM & ATS migration scoping. Not seeing yours? Book a call.
Walk through your Breathe 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 Breathe
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.