HRMS migration
Field-level mapping, validation, and rollback between flair.hr and Recruit CRM & ATS. We move data and schema; workflows are rebuilt natively in Recruit CRM & ATS.
flair.hr
Source
Recruit CRM & ATS
Destination
Compatibility
8 of 11
objects map 1:1 between flair.hr and Recruit CRM & ATS.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from flair.hr to Recruit CRM is a platform-category transition, not a direct replacement swap. flair.hr is a full HCM suite built on Salesforce that spans recruiting, onboarding, time tracking, absence management, performance reviews, and payroll across the entire employee lifecycle. Recruit CRM is a purpose-built ATS and CRM for recruitment agencies, managing candidates, clients, jobs, and placements with strong pipeline automation but no native employee, absence, performance-review, or payroll module. We migrate the recruiting-layer data — Candidates, Positions, Departments, Absences, Documents — using flair's Salesforce REST API and Recruit CRM's standard REST API. We do not migrate flair's employee records as internal Contacts because Recruit CRM's data model is built for external talent, not HR administration. We do not migrate flair Workflows, payroll integrations, or Salesforce Flow-based approval chains; we deliver a written inventory of these for the customer's admin to rebuild in Recruit CRM's native 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 flair.hr 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.
flair.hr
Candidate
Recruit CRM & ATS
Candidate
1:1flair Candidates are stored as Salesforce Leads or custom JobApplication objects depending on the flair configuration. Recruit CRM uses a standard Candidate object for all talent records. We inspect the flair org's object model during discovery to determine whether Candidates map to Leads or to a custom object, then apply the matching mapping. Candidate name, email, phone, address, current company, current title, LinkedIn URL, source, and tags migrate directly. Status and stage values are translated to Recruit CRM's pipeline status equivalents based on a mapping table agreed during scoping.
flair.hr
Position
Recruit CRM & ATS
Job
1:1flair Positions are custom Salesforce objects representing job openings, linked to Departments and Locations with headcount and reporting relationships. Recruit CRM Jobs hold the job title, description, requirements, salary range, location, and status. We preserve the position hierarchy and reporting structure in Recruit CRM's Job object fields, mapping the flair department assignment to a custom field or the job's department tag. Active posting status migrates as the Recruit CRM Job status.
flair.hr
Department
Recruit CRM & ATS
Custom Field on Candidate / Job
1:manyflair Departments represent the organizational unit structure with hierarchy and cost-center assignments. Recruit CRM has no native Department or organizational unit object; departments exist as organizational metadata attached to Jobs and Candidates. We migrate department names as a custom multi-select picklist or tag field on the Job and Candidate records, preserving the full department list from flair for the customer's admin to organize into Recruit CRM's tagging or custom field structure.
flair.hr
Location
Recruit CRM & ATS
Custom Field on Job / Candidate
1:1flair Locations are custom objects representing physical or legal entity work sites with address, country, timezone, and cost-center assignments. Recruit CRM has a location field on Jobs and a candidate availability field, but no dedicated location object. We map the primary location address, country, and timezone to Recruit CRM's location field and preserve timezone as a custom field for jobs with scheduling requirements.
flair.hr
Absence
Recruit CRM & ATS
Custom Table or Custom Fields on Candidate / Contact
1:1flair Absence records track leave types, start and end dates, approval status, and linked employee lookups across the full absence history. Recruit CRM has no native absence management module. We migrate absence history as a custom Absence object in Recruit CRM with fields for leave type, start date, end date, status, and the linked candidate or contact reference. If the customer uses Recruit CRM primarily for external candidates, absence records are stored as read-only historical entries in a custom object rather than active absence management.
flair.hr
Document
Recruit CRM & ATS
Candidate Attachment / Custom Field
1:1flair Document storage uses Salesforce Files and ContentDocumentLink, linking resumes, cover letters, certifications, and offer letters to Employee or Position records. Recruit CRM supports file attachments on Candidate records (CV, cover letter, portfolio) and on Job records. We migrate document binaries as attachments on the corresponding Recruit CRM Candidate or Job record, preserving the linking relationship. Large document volumes (over 10,000 files) require batched migration with volume-aware chunking to avoid timeout errors.
flair.hr
Employee
Recruit CRM & ATS
Contact (external-facing)
1:manyflair Employee records are internal HR records with employment details, start dates, manager relationships, compensation, and department assignments stored on Salesforce Contacts with flair custom fields. Recruit CRM is built for external candidates and clients, not internal HR administration. We migrate the subset of flair Employee records that represent external contractors, consultants, or talent-pool candidates as Recruit CRM Candidate records with basic contact details preserved. Internal employee data (compensation, manager relationships, HR-specific fields) is documented as a gap — Recruit CRM has no native internal employee object — and the customer determines whether to use a separate HR system for this data post-migration.
flair.hr
Performance Review
Recruit CRM & ATS
Custom Object
1:1flair Performance Reviews are custom objects tracking review cycles, goals, OKRs, ratings, and feedback linked to Employees. Recruit CRM has no native performance review or OKR module. We migrate review cycle names, review period dates, and aggregate rating scores as records in a Recruit CRM custom Performance_Review object. Individual goal and objective details migrate as line items under the review record. Review workflow step status from flair's Salesforce Flow-based approval sequences is documented as a written inventory for the customer's admin to rebuild in Recruit CRM's workflow builder.
flair.hr
Workflow
Recruit CRM & ATS
Recruit CRM Workflow Builder (documentation only)
lossyflair Workflows are Salesforce Flow-based step sequences for onboarding journeys, performance review approval chains, and absence escalation. Recruit CRM has its own workflow automation builder for candidate stage progression, email triggers, and task creation. We do not migrate flair Workflows as code because Salesforce Flow and Recruit CRM Workflows are architecturally different. We deliver a written inventory of every active flair Workflow with its trigger conditions, step sequence, and actions, plus a recommended Recruit CRM Workflow equivalent. The customer's admin rebuilds the workflows in Recruit CRM's native builder post-migration.
flair.hr
Time Entry
Recruit CRM & ATS
Candidate Submission / Custom Field
1:1flair Time Entries use either custom TimeEntry objects or standard Salesforce Event/Task records depending on the deployment version. Recruit CRM does not have a native time tracking module. We detect the underlying flair time tracking model during discovery schema inspection, then map time entry data — hours, date, project code, cost center — to Recruit CRM's Candidate Submission object if the customer uses submissions for contractor billing, or to a custom Time_Entry object we provision during migration. Active time tracking workflows from flair are documented for rebuild in Recruit CRM's workflow builder.
flair.hr
Custom Object
Recruit CRM & ATS
Custom Object
1:1flair's extensibility model uses Salesforce custom objects and fields (accessed via the flair__Extra_Form_Field__mdt and flair__Extra_Table_Field__mdt metadata types) for industry-specific or company-defined data structures. We run a Salesforce schema describe call at the start of every migration to enumerate all custom objects and fields in the customer's flair org. We then pre-create equivalent custom objects in Recruit CRM, including all custom fields, field types, and lookup relationships, before importing any data. Custom object naming follows Recruit CRM's field naming conventions and field type constraints.
| flair.hr | Recruit CRM & ATS | Compatibility | |
|---|---|---|---|
| Candidate | Candidate1:1 | Fully supported | |
| Position | Job1:1 | Fully supported | |
| Department | Custom Field on Candidate / Job1:many | Fully supported | |
| Location | Custom Field on Job / Candidate1:1 | Fully supported | |
| Absence | Custom Table or Custom Fields on Candidate / Contact1:1 | Fully supported | |
| Document | Candidate Attachment / Custom Field1:1 | Fully supported | |
| Employee | Contact (external-facing)1:many | Fully supported | |
| Performance Review | Custom Object1:1 | Fully supported | |
| Workflow | Recruit CRM Workflow Builder (documentation only)lossy | Fully supported | |
| Time Entry | Candidate Submission / Custom Field1:1 | Fully supported | |
| Custom Object | Custom Object1: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.
flair.hr gotchas
Career portal migration requires manual flair support intervention
Time tracking data model varies by flair version
Custom objects and fields require schema inspection before mapping
Payroll data migration does not include live payroll runs
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 schema audit
We audit the source flair org via the Salesforce REST API to enumerate the active object model, detect whether time tracking uses the custom TimeEntry object or standard Event/Task model, and identify all custom fields via a schema describe call. We also extract a full record count for Candidates, Positions, Departments, Absences, Documents, Time Entries, Employees, and any custom objects. This output is a written discovery document with a preliminary object mapping, a custom field inventory, and a migration scope recommendation.
Recruit CRM target schema design
We design the destination schema in Recruit CRM before any data is written. This includes provisioning any custom objects required for absence history, performance review records, department tags, and time entries. We configure custom fields on the standard Candidate and Job objects to receive migrated flair data. We map flair pipeline stages to Recruit CRM candidate status values and confirm the mapping table with the customer's recruiting lead before proceeding.
Sandbox migration and reconciliation
We run a full migration into a Recruit CRM sandbox environment using production-like data volume. The customer reconciles record counts (Candidates in, Jobs in, Absences in, Documents in), spot-checks 25-50 random records against the flair source, and confirms field mapping accuracy before production migration begins. Any mapping corrections happen in sandbox, not in production.
Document and workflow inventory
We inventory all active flair Workflows (Salesforce Flow-based step sequences), approval chains, and automation rules, and deliver them as a written document for the customer's admin to rebuild in Recruit CRM's native workflow builder. We also document the flair payroll integration configuration (DATEV, Sage, or AFAS) as a reference for the customer's payroll team to re-establish in their destination payroll system, since active payroll runs do not migrate.
Production migration in dependency order
We run production migration in record-dependency order: Jobs first (no dependencies), then Candidates (with Job lookups resolved), then custom absence and performance review records, then Documents as attachments on the respective records, then Time Entries. Each phase emits a row-count reconciliation report before the next phase begins. We use Recruit CRM's REST API with rate-limit handling and exponential backoff for bulk operations.
Cutover, validation, and handoff
We freeze flair writes during cutover, run a final delta migration of any records modified during the migration window, then enable Recruit CRM as the system of record for recruiting data. We deliver the Workflow inventory document and the custom field mapping spreadsheet to the customer's recruiting operations lead. We support a one-week hypercare window to resolve reconciliation issues. We do not rebuild flair Workflows or payroll integrations as part of the migration scope; those are separate engagements.
Platform deep dives
flair.hr
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 flair.hr 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
flair.hr: Salesforce API limits apply — not publicly documented by flair separately from standard Salesforce platform limits.
Data volume sensitivity
flair.hr exposes a bulk API — large-volume migrations stream efficiently.
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 flair.hr to Recruit CRM & ATS migration scoping. Not seeing yours? Book a call.
Walk through your flair.hr 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 flair.hr
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.