HRMS migration
Field-level mapping, validation, and rollback between flair.hr and Crelate. We move data and schema; workflows are rebuilt natively in Crelate.
flair.hr
Source
Crelate
Destination
Compatibility
6 of 14
objects map 1:1 between flair.hr and Crelate.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from flair.hr to Crelate is a structural migration from a full HRIS into a recruiting-focused ATS and CRM. flair.hr stores all people data on Salesforce custom objects with deep employment, absence, performance, and payroll context. Crelate is an ATS and Recruiting CRM built for executive search, direct placement, and in-house talent teams — it does not natively cover payroll, performance reviews, engagement surveys, or absence management. We migrate the recruiting layer (Candidates, Positions, Employee records as Contacts, Documents, and engagement history) via Crelate's REST API and documented CSV import paths, and we deliver a written boundary document flagging every HRIS module that requires manual rebuild or a separate replacement tool. We do not migrate Salesforce Flows, approval chains, or workflow step logic as code; we flatten final workflow states into target records and inventory the automation surface for the customer's admin to rebuild in Crelate.
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 Crelate, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
flair.hr
Employee (Contact)
Crelate
Contact
1:1flair Employee records live on Salesforce Contact with custom flair fields for employment details, start dates, manager relationships, and department assignments. We migrate all standard Contact fields plus flair custom fields that map to Crelate Contact fields. Employment status, job title, department, and manager hierarchy transfer as Crelate custom fields on Contact. Flair's manager relationship (lookup to another Contact) maps to a custom Crelate Contact field rather than a native hierarchy, since Crelate does not enforce a Contact-to-Contact manager relationship model.
flair.hr
Candidate (Lead or JobApplication)
Crelate
Contact
1:manyflair Candidates are stored as Salesforce Leads or custom JobApplication objects depending on the configuration. We inspect the org's object model during discovery to determine which object holds candidate data. Leads with a source of recruiting map to Crelate Contact. Any candidate records with an active application status on a Position map to Crelate Contact linked to the corresponding Job record in Crelate. The original flair candidate source, stage, and rating migrate as Crelate custom Contact fields.
flair.hr
Position
Crelate
Job
1:1flair Positions are custom objects representing job openings linked to Departments and Locations. We map each Position to a Crelate Job record, preserving the job title, description (as the Job description field), status (open/closed), department assignment, and location. Crelate's Job object does not enforce a department hierarchy the same way flair does, so we create a Crelate custom field for department provenance and link the Job to a Crelate Company representing the hiring organization.
flair.hr
Department
Crelate
Company or Custom Field
1:1flair Departments are Salesforce custom objects or the standard Department object, with a full organizational hierarchy. Crelate's object model does not have a native organizational unit object. We handle this as a lookup mapping: top-level departments migrate as Crelate Companies (representing internal cost centers if the organization uses Crelate for internal hiring), and sub-departments migrate as custom field values on the Job record. For organizations using Crelate primarily for external candidate tracking, we consolidate department data into a multi-select Crelate custom field on Contact.
flair.hr
Location
Crelate
Custom Field on Job / Contact
1:1flair Locations are custom objects with address, country, timezone, and cost-center assignments. Crelate has a location field on Job records but no dedicated Location object. We map flair Location address data to the Job's location field, country to a Crelate custom Contact field, and timezone to a custom field for reference. Cost-center assignments on Location do not have a Crelate equivalent and are preserved in a custom text field.
flair.hr
Absence
Crelate
Not migrated (out of scope)
lossyCrelate has no absence management module. Absence records from flair are out of scope for this migration. We document the absence types, entitlement balances, and pending absence requests in a written handoff report so that the customer's HR admin can re-enter balances in a dedicated absence management tool or a supplemental Crelate integration.
flair.hr
Time Entry
Crelate
Not migrated (out of scope)
lossyflair uses either a custom TimeEntry object or standard Salesforce Event/Task records for time tracking depending on the deployment version. Crelate does not have a native time tracking module. Time entry data is out of scope. We detect which flair time tracking model is active during schema inspection and document any hours, project codes, or cost-center assignments that the customer may need to re-enter in their payroll or timekeeping system.
flair.hr
Document (Salesforce Files)
Crelate
Contact Attachment
1:1Document storage in flair uses Salesforce Files (ContentDocument) attached to Employees, Candidates, or Positions via ContentDocumentLink. We migrate binary file attachments and preserve the linking relationships to the corresponding Crelate Contact or Job record. Large document volumes may require chunked migration to avoid API timeout. Resume files are linked to the Contact record as primary; any additional supporting documents are attached to the same Contact.
flair.hr
Performance Review
Crelate
Not migrated (out of scope)
lossyflair Performance Review cycles, goals, OKRs, and feedback records are custom objects linked to Employees. Crelate has no native performance management module. We do not migrate performance data. We deliver a written inventory of the review templates, historical ratings, goal progress, and review cycle records for the customer's HR admin to re-enter in a dedicated performance management tool.
flair.hr
Engagement Survey
Crelate
Not migrated (out of scope)
lossyflair Engagement Survey questions, response sets, and aggregate eNPS scores are custom objects. Crelate has no survey or engagement module. We do not migrate survey data. We document the survey structure, question sets, and aggregate response history in a written handoff for the customer's HR admin.
flair.hr
Workflow (Salesforce Flow)
Crelate
Written inventory only
lossyflair Workflows are Salesforce Flow-based step sequences for onboarding, performance reviews, and approvals. We do not migrate Flows as code. We inspect the active Flows in the flair Salesforce org during discovery, document the step sequence, trigger conditions, approval logic, and expected outcomes, and deliver this as a written rebuild guide. The customer's admin or a Crelate implementation partner rebuilds these in Crelate's automation model (activity templates and pipeline automation) post-migration.
flair.hr
Custom Objects
Crelate
Custom Fields on Contact, Job, or Activity
1:1flair's extensibility model uses Salesforce custom objects and fields for industry-specific or customer-defined data structures. We inspect the org's custom object definitions during discovery via Salesforce schema describe. Any custom object linked to an Employee or Candidate migrates to Crelate custom fields on the Contact or Job record. Any custom object representing a standalone entity without a Crelate equivalent is documented as a written schema map for manual re-creation in Crelate.
flair.hr
Payroll Records
Crelate
Not migrated (out of scope)
lossyflair payroll data is linked to Employees via custom payroll objects that may integrate with DATEV, Sage, or AFAS. Crelate has no payroll module. We do not migrate active payroll runs, payroll summary records, or effective-dated compensation history. We deliver a written handoff of historical payroll summary records as read-only reference data for the customer's payroll team to re-enter in the destination payroll system.
flair.hr
Job Posting / Career Portal
Crelate
Job records with posting metadata
lossyActive job postings are custom flair objects linked to Positions. We migrate posting content, location assignments, and segment associations to Crelate Job records with the job description, requirements, and location preserved. The branded career portal pages themselves do not migrate; Crelate's career page and job board distribution tools (Indeed, LinkedIn, Glassdoor, and others via Crelate's integrations) replace the flair career portal. URL preservation requires manual reconfiguration in Crelate's job board settings.
| flair.hr | Crelate | Compatibility | |
|---|---|---|---|
| Employee (Contact) | Contact1:1 | Fully supported | |
| Candidate (Lead or JobApplication) | Contact1:many | Fully supported | |
| Position | Job1:1 | Fully supported | |
| Department | Company or Custom Field1:1 | Fully supported | |
| Location | Custom Field on Job / Contact1:1 | Fully supported | |
| Absence | Not migrated (out of scope)lossy | Fully supported | |
| Time Entry | Not migrated (out of scope)lossy | Fully supported | |
| Document (Salesforce Files) | Contact Attachment1:1 | Fully supported | |
| Performance Review | Not migrated (out of scope)lossy | Fully supported | |
| Engagement Survey | Not migrated (out of scope)lossy | Fully supported | |
| Workflow (Salesforce Flow) | Written inventory onlylossy | Fully supported | |
| Custom Objects | Custom Fields on Contact, Job, or Activity1:1 | Mapping required | |
| Payroll Records | Not migrated (out of scope)lossy | Mapping required | |
| Job Posting / Career Portal | Job records with posting metadatalossy | 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
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 scoping
We audit the source flair Salesforce org across custom objects, custom fields, the active candidate object model (Lead or JobApplication), active Flows, document volumes, and engagement history size. We simultaneously map Crelate's entity model (Contact, Company, Job, Activity) to the flair schema and identify every object that has, lacks, or partially overlaps a Crelate equivalent. The discovery output is a written migration scope with a full object list, out-of-scope boundary document, and Crelate custom field requirements sheet.
Schema design and custom field provisioning
We design the destination schema in Crelate. This includes provisioning custom Contact fields for employment metadata (start date, department, manager, employment status), custom Job fields for position context (department provenance, cost center, flair Position ID), and any custom fields required for the custom flair object mapping. Crelate field types (text, date, picklist, multi-select, number) are matched to the source Salesforce field types. Custom fields are created in Crelate before any data import begins.
Data extraction from flair Salesforce org
We extract data from the flair Salesforce org using the Salesforce REST API via the connected app credentials scoped to the flair package namespace. We pull Contacts (Employees), Leads or JobApplication records (Candidates), Positions, Departments, Locations, ContentDocument records (Documents), and engagement history (Tasks, Events, Notes). Custom object records are extracted based on the schema describe output from Step 1. All extracts are written to staging CSV files with column headers matching the Salesforce field API names for traceability.
Transform and deduplication
We transform the extracted data to match Crelate's field conventions. Candidate deduplication uses email as the primary key. Employee records are deduplicated against existing Crelate Contacts by email. Position records map to Crelate Job records with status preserved. Department and Location hierarchies are flattened into custom field values where no native Crelate object exists. Any custom flair objects with no Crelate equivalent are written to a supplemental CSV for manual re-creation. The transform phase emits a row-count report showing source record count, transformed record count, and any records held in a reconciliation queue.
Crelate import and API write
We write data to Crelate using Crelate's REST API for programmatic imports and CSV upload for bulk record creation. Companies (for client-side organizations) are imported first, then Jobs, then Contacts, then Activity history. Document attachments are uploaded and linked to the parent Contact record after the Contact record exists. Each phase emits a Crelate-side row-count reconciliation against the transform report. Any API rate-limit responses from Crelate are handled with exponential backoff and batch chunking.
Cutover, validation, and out-of-scope handoff
We freeze writes to the flair org during the cutover window, run a final delta migration of any records modified during the migration window, and then enable Crelate as the system of record for recruiting operations. We deliver the out-of-scope boundary document covering absence balances, performance review records, engagement survey data, payroll history, time entries, and active Flows. We support a one-week hypercare window for reconciliation issues. We do not rebuild flair Flows as Crelate automations inside the migration scope; the automation rebuild guide is delivered to the customer's admin for post-migration rebuild.
Platform deep dives
flair.hr
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 flair.hr 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
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 Crelate migration scoping. Not seeing yours? Book a call.
Walk through your flair.hr 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 flair.hr
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.