HRMS migration
Field-level mapping, validation, and rollback between Factorial and Recruit CRM & ATS. We move data and schema; workflows are rebuilt natively in Recruit CRM & ATS.
Factorial
Source
Recruit CRM & ATS
Destination
Compatibility
7 of 10
objects map 1:1 between Factorial and Recruit CRM & ATS.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from Factorial to Recruit CRM is a cross-category migration from an HRMS to an ATS/CRM, not a like-for-like replacement. Factorial stores the employee lifecycle: profiles, contracts, compensation history, absence balances, and time entries tied to an employment relationship. Recruit CRM is purpose-built for candidate relationship management and placement tracking, with a data model centered on Candidates, Clients, Jobs, and Pipeline stages. We migrate what fits: employee profiles map to candidate records, department structures map as organizational lookups, and documents migrate as candidate attachments. We do not migrate Factorial absence records, payroll runs, compensation history, or time entries because Recruit CRM has no equivalent object. We do not migrate Factorial workflow automations, approval chains, or payroll configurations. We deliver a written inventory of these unmigratable records so the customer's admin can decide whether to archive, export to a separate HRIS, or rebuild post-cutover.
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 Factorial 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.
Factorial
Employee
Recruit CRM & ATS
Candidate
1:1Factorial employee records map to Recruit CRM candidate records. We map name, email, phone, address, and employee status fields to their candidate equivalents. The employment status (active, on leave, terminated) does not map directly — we preserve it in a custom field original_employment_status__c on the candidate record. Department reference resolves to the Recruit CRM candidate's assigned team or department field via the department lookup. Start date and termination date map to candidate registration_date and status_change_date fields where supported, or to custom date fields.
Factorial
Department
Recruit CRM & ATS
Department (lookup)
1:1Factorial departments and cost centers export as flat or nested organizational units. We preserve the parent-child hierarchy and map to Recruit CRM department records as lookup values. Any employee department assignment references the department lookup in Recruit CRM. We validate that no orphaned department references exist after import by running a referential integrity check against the employee-to-department mapping table.
Factorial
Document
Recruit CRM & ATS
Document (Candidate attachment)
1:manyFactorial documents attached to employees (contracts, policies, onboarding forms, payslips) migrate as files attached to the corresponding Recruit CRM candidate record. Factorial does not expose a bulk document download API, so we paginate the document list via the API and download each file individually before uploading to Recruit CRM. We flag document-heavy migrations during scoping (over 5,000 files) and set expectations for transfer time accordingly. File type and original filename are preserved in the Recruit CRM document record.
Factorial
Contract
Recruit CRM & ATS
Candidate (custom fields)
lossyFactorial employment contracts include contract type, working hours, probation period, and legal entity reference. Recruit CRM has no native contract object, so we extract contract metadata (type, start date, end date, hours per week, probation status) and store it as custom fields on the candidate record. Country-specific legally required fields that cannot map directly are flagged for manual review during reconciliation.
Factorial
Custom Fields (Employees)
Recruit CRM & ATS
Custom Fields (Candidates)
lossyFactorial allows arbitrary custom fields on employee profiles with no schema discovery API. We enumerate all active custom fields by querying the employee and contract endpoints during scoping discovery. Each custom field maps to a Recruit CRM candidate custom field of the matching type (text, number, date, picklist, or checkbox). Custom fields that have no Recruit CRM equivalent are flagged as unmapped and included in the handoff document for admin review.
Factorial
Absence Records
Recruit CRM & ATS
None (no equivalent)
1:1Factorial absence records track balance, accrual rules, and approved leave per employee. Recruit CRM has no absence management module and no equivalent object for leave balances or accrual tracking. We do not migrate absence records. We export the absence data as a structured CSV inventory (employee, absence type, balance at migration date, accrual rule) and deliver it alongside the migration for the customer's HR admin to archive or import into a standalone HRIS if required.
Factorial
Time Entries
Recruit CRM & ATS
None (no equivalent)
1:1Factorial time entries store clock-in/out timestamps, timesheets, and project or cost-center tags per employee. Recruit CRM has no time-tracking object and does not record employee work hours. We do not migrate time entries. We export a chronological CSV of historical time data (employee, date, hours, project tag, cost center) as a separate data artifact for payroll or billing reference if needed.
Factorial
Payroll Runs
Recruit CRM & ATS
None (no equivalent)
1:1Factorial payroll runs are tied to country legal entity configurations and include gross salary, deductions, supplements, and net pay. Recruit CRM has no payroll module. We do not migrate payroll records. We export payroll data as structured CSV files (employee, pay period, gross, deductions, net, currency) for the customer's finance team or external payroll processor to recompute against local tax rules in the destination system.
Factorial
Compensation History
Recruit CRM & ATS
Candidate (custom fields)
1:1Factorial compensation history tracks effective-dated salary changes, bonuses, and equity grants per employee. Recruit CRM has no native compensation history object, but we can store current compensation data (most recent salary, currency, bonus target) as custom fields on the candidate record if the agency uses this for internal placements or基准 salary tracking. Full historical compensation timelines export as CSV for reference.
Factorial
Workflows and Approvals
Recruit CRM & ATS
None (no equivalent)
1:1Factorial approval chains for time-off, expenses, and document workflows are stored as platform-specific automation objects. These have no export representation and no Recruit CRM equivalent because Recruit CRM's automation model (AI agents, workflow triggers, Kanban actions) is architecturally different. We document the existing workflow structure during discovery and deliver it as a written inventory so the customer's admin can rebuild equivalent automations in Recruit CRM's no-code workflow builder post-migration.
| Factorial | Recruit CRM & ATS | Compatibility | |
|---|---|---|---|
| Employee | Candidate1:1 | Fully supported | |
| Department | Department (lookup)1:1 | Fully supported | |
| Document | Document (Candidate attachment)1:many | Fully supported | |
| Contract | Candidate (custom fields)lossy | Fully supported | |
| Custom Fields (Employees) | Custom Fields (Candidates)lossy | Mapping required | |
| Absence Records | None (no equivalent)1:1 | Fully supported | |
| Time Entries | None (no equivalent)1:1 | Fully supported | |
| Payroll Runs | None (no equivalent)1:1 | Mapping required | |
| Compensation History | Candidate (custom fields)1:1 | Mapping required | |
| Workflows and Approvals | None (no equivalent)1: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.
Factorial gotchas
No public bulk export API for documents
Custom fields are not discoverable via a schema endpoint
Payroll data is country-locked to the legal entity
Workflow automation does not export
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 custom field enumeration
We audit the Factorial account via API: employee records, department hierarchy, document count per employee, contract metadata, and any active custom fields discovered by querying employee and contract endpoints. We separate migratable objects (employees, departments, documents, contracts, custom fields) from non-migratable objects (absence records, time entries, payroll runs, compensation history, workflows) and produce a written migration scope with record counts and document volume estimates. We flag document-heavy migrations (over 5,000 files) and set expectations for the per-file download timeline.
Recruit CRM sandbox setup and candidate schema design
We provision a Recruit CRM trial or sandbox environment for migration testing. We design the candidate record schema: standard fields mapped from Factorial employee fields, custom fields created to match enumerated Factorial custom fields, and department lookups pre-populated from the Factorial department export. We validate that all required fields in Recruit CRM have values before import design begins. Contract metadata and current compensation data are designed as custom fields on the candidate record rather than native objects.
Department hierarchy and lookup resolution
We export the Factorial department structure as a flat or nested list, preserve parent-child relationships, and import into Recruit CRM as department records. We run a referential integrity check: every employee department reference in the source must resolve to a valid Recruit CRM department ID before the employee-to-candidate import begins. Orphaned department references (employees pointing to deleted Factorial departments) are held in a reconciliation queue for the customer's admin to resolve.
Document download and attachment preparation
We paginate the Factorial document list via the API and download each file individually, preserving original filenames, MIME types, and the employee record reference. Files are organized into folders keyed by candidate record (derived from the employee mapping). For large archives, we process in batches of 200 files and provide a progress report. Upload to Recruit CRM occurs after candidate records are created, using the Recruit CRM bulk import API with file attachment references resolved.
Candidate record import and document attachment
We import employee records as Recruit CRM candidates using the mapping design from step 2. Each candidate record receives its resolved department lookup, custom field values, and contract metadata fields. After candidate records are confirmed in Recruit CRM, we attach the prepared document files to each candidate record. We run row-count reconciliation against the source employee count and spot-check 25-50 records for field-level accuracy before production cutover.
Cutover, handoff documentation, and non-migratable artifact delivery
We freeze Factorial writes during the cutover window, run a delta migration of any records modified since the initial extract, then deliver the non-migratable data as structured CSV artifacts: absence records, time entries, payroll runs, compensation history, and workflow inventory. We deliver a written migration summary with record counts, unmapped field notes, and a candidate data quality report. We do not rebuild Factorial workflows in Recruit CRM; the workflow inventory document is the handoff for the customer's admin to rebuild in Recruit CRM's no-code automation builder.
Platform deep dives
Factorial
Source
Strengths
Weaknesses
Recruit CRM & ATS
Destination
Strengths
Weaknesses
Complexity grading
Moderate HRMS migration. 1 of 7 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Factorial 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
Factorial: 200 requests per minute for POST requests per Factorial's published API docs. GET-side limits are not separately enumerated; we tune extraction concurrency conservatively against the customer's tenant during scoping..
Data volume sensitivity
Factorial 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 Factorial to Recruit CRM & ATS migration scoping. Not seeing yours? Book a call.
Walk through your Factorial 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 Factorial
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.