HRMS migration
Field-level mapping, validation, and rollback between Sage People and Recruit CRM & ATS. We move data and schema; workflows are rebuilt natively in Recruit CRM & ATS.
Sage People
Source
Recruit CRM & ATS
Destination
Compatibility
11 of 12
objects map 1:1 between Sage People and Recruit CRM & ATS.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from Sage People to Recruit CRM is a category pivot, not a like-for-like replacement. Sage People is a Salesforce-backed HRIS that includes a Recruitment add-on module for vacancy and candidate management; Recruit CRM is a dedicated ATS and recruitment CRM purpose-built for staffing and executive search firms. We migrate the talent acquisition data (Candidates, Vacancies, Applications, and their relationships) directly, translate Employee records into Recruit CRM Candidates using contact and employment fields, and preserve engagement history (notes, emails, tasks) linked to the correct candidate record. Sage People workflows, approval rules, and Enhanced Objectives are not API-exportable; we document every active configuration for the customer's admin to rebuild in Recruit CRM's workflow builder. The migration runs through Sage People's Salesforce REST API at up to 180 requests per minute, with pre-fetching of document attachment URLs to avoid the two-minute expiry window, and inserts into Recruit CRM via their bulk import endpoint with field-level validation.
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 Sage People 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.
Sage People
Employee
Recruit CRM & ATS
Candidate
1:1Sage People Employee records map to Recruit CRM Candidate records. We extract standard fields including name, email, phone, address, department, job title, employment dates, and manager reference. Custom fields with UD_ or UDF_ prefixes are inventoried against Recruit CRM's available candidate fields and mapped to custom fields where the destination schema supports them; non-standard fields without equivalents are flagged for explicit customer decision during scoping. The Sage People manager hierarchy is preserved as a reference field on the Candidate record for reporting and org-chart reconstruction.
Sage People
Vacancy
Recruit CRM & ATS
Job
1:1Sage People Vacancy records map to Recruit CRM Job records. We map vacancy title, description, requirements, compensation band, location, and status. Vacancy status (Draft, Open, On Hold, Filled, Cancelled) maps to Recruit CRM's job status equivalents. Sage People compensation bands migrate as custom fields if Recruit CRM's standard salary range fields do not accommodate the granularity of the source data.
Sage People
Application (Candidate-Vacancy link)
Recruit CRM & ATS
Candidate-Job Association
1:1Sage People creates application records linking Candidates to Vacancies. In Recruit CRM, this relationship is represented through the candidate record's associated job applications. We migrate the application status, submission date, source channel, and any interview stage history as activity log entries or custom fields on the candidate record. The migration resolves the candidate ID and job ID independently before establishing the association to avoid orphaned application records.
Sage People
Candidate (Recruitment module)
Recruit CRM & ATS
Candidate
1:1If the source Sage People org has the Recruitment module active, candidate records from that module map directly to Recruit CRM Candidates. The mapping includes name, contact information, resume content (as a document attachment), skills, and source attribution. We flag any candidate records with duplicate email addresses against the Employee-to-Candidate mapping to prevent double-creation during the final load.
Sage People
Department
Recruit CRM & ATS
Organization or Tag
1:1Sage People Department records map to Recruit CRM Organizations if the destination org uses the Organizations feature for company-level candidate context, or to Tags if the organization prefers a flat tag-based taxonomy. We preserve parent-child department hierarchy as a custom field or tag hierarchy depending on the customer's preference set during scoping. Cost center codes migrate as a custom field on the Organization or as a tag value.
Sage People
Job (template)
Recruit CRM & ATS
Job Template
1:1Sage People stores Job Templates as reusable position definitions separate from filled Position records. We map job template fields including title, grade, department, location, and description to Recruit CRM Job records with a template flag set. If the destination org does not use Recruit CRM's template feature, the templates migrate as standard Job records and the customer decides which to activate as open positions post-migration.
Sage People
Absence and Leave Record
Recruit CRM & ATS
Candidate Notes or Custom Fields
1:1Absence records and leave balances from Sage People map to Candidate Notes entries or custom fields on the Candidate record depending on whether the absence history is relevant to the recruiting context. Leave records that indicate planned availability dates are mapped to candidate availability fields where Recruit CRM supports them. This mapping is most relevant when Sage People is used for internal mobility tracking and the candidate pool includes internal applicants.
Sage People
Compensation History
Recruit CRM & ATS
Custom Fields on Candidate
1:1Effective-dated compensation records (salary, bonus, equity) from Sage People migrate as a custom field group on the Candidate record. We serialize the compensation history as a JSON-formatted custom field or as multiple dated custom fields depending on the customer's reporting needs. Custom compensation components (allowances, car values, commission structures) require explicit value mapping and are flagged for customer review before load.
Sage People
Document (attachment)
Recruit CRM & ATS
Candidate Document
1:1Employee documents (contracts, certifications, resumes) stored as Salesforce attachments in Sage People are exported as binary blobs with metadata including document type, upload date, and related record reference. We pre-fetch all attachment URLs in a batch queue immediately before insertion to avoid Sage People's two-minute URL expiry window. Documents are re-associated in Recruit CRM by candidate ID mapping and stored against the corresponding Candidate record. PDF and DOCX formats are preserved; unsupported formats are flagged for manual delivery.
Sage People
Objective and Performance Review
Recruit CRM & ATS
Candidate Notes
1:1Enhanced Objectives and performance review records from Sage People migrate as formatted Notes entries on the Candidate record. The objective text, key results, and review status are preserved as structured note content. Due to Sage People's known state-machine issues with draft versus active review states, we flag any objectives with ambiguous status for manual review before migration and document them in the reconciliation report rather than silently loading ambiguous state records.
Sage People
Custom Fields (UD_, UDF_ prefixes)
Recruit CRM & ATS
Custom Fields
lossySage People organizations frequently add custom fields with UD_, UDF_, or IM_ prefixes. We inventory all custom fields during discovery, compare the live schema against Sage People's standard field reference, and flag any fields that lack a direct Recruit CRM equivalent. Custom picklist values are mapped as explicit value translations. Custom fields without prefixes are detected by comparing the live schema against the standard reference and flagged for explicit review before mapping decisions are finalized.
Sage People
Workflow and Approval Rules
Recruit CRM & ATS
Configuration Documentation (no migration)
1:1Sage People does not expose workflow definitions or approval routing rules through its Salesforce API. We capture every active workflow during discovery as a written configuration inventory document covering trigger conditions, approval stages, escalation paths, and field updates. The customer receives this document at migration close and uses it to rebuild workflows in Recruit CRM's visual workflow builder. This documentation step is the only migration pathway for automation logic and is included as a standard deliverable rather than an optional add-on.
| Sage People | Recruit CRM & ATS | Compatibility | |
|---|---|---|---|
| Employee | Candidate1:1 | Fully supported | |
| Vacancy | Job1:1 | Fully supported | |
| Application (Candidate-Vacancy link) | Candidate-Job Association1:1 | Fully supported | |
| Candidate (Recruitment module) | Candidate1:1 | Fully supported | |
| Department | Organization or Tag1:1 | Fully supported | |
| Job (template) | Job Template1:1 | Fully supported | |
| Absence and Leave Record | Candidate Notes or Custom Fields1:1 | Fully supported | |
| Compensation History | Custom Fields on Candidate1:1 | Mapping required | |
| Document (attachment) | Candidate Document1:1 | Fully supported | |
| Objective and Performance Review | Candidate Notes1:1 | Fully supported | |
| Custom Fields (UD_, UDF_ prefixes) | Custom Fieldslossy | Mapping required | |
| Workflow and Approval Rules | Configuration Documentation (no migration)1: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.
Sage People gotchas
Sandbox environments block all data exports
Attachment links expire after approximately two minutes
Workflows and approval rules are not API-exportable
Rate limit of 180 requests per minute with 10 calls per second burst
Custom fields use inconsistent naming prefixes across orgs
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 quality assessment
We connect to the Sage People production org via read-only Salesforce API access and audit all objects including Employees, Departments, Jobs, Vacancies, Candidate records, Absence records, Documents, and Custom Fields. We run a duplicate detection pass on candidate and employee email addresses, flag records older than a configurable age threshold, and identify custom fields by comparing the live schema against a standard Sage People field reference. The discovery output is a written scope document with record counts per object, data quality findings, and a cleanup recommendation report that the customer uses to reduce migration scope and cost before we begin.
Schema comparison and mapping design
We design the mapping between Sage People's HRIS object model and Recruit CRM's ATS schema. This includes mapping Employee fields to Candidate fields, Vacancy fields to Job fields, and designing the Application-to-Candidate-Job association strategy. We also define the custom field translation table for UD_ and UDF_ prefixed fields, decide on picklist value mappings, and design the document attachment pipeline with URL pre-fetch scheduling. The mapping document is reviewed by the customer's admin before any data moves.
Document attachment pre-fetch pipeline
We extract all Salesforce attachment URLs for Employee and Candidate documents in a prioritized batch sequence. Each batch of URLs is processed immediately—no longer than 90 seconds after generation—to download the document binary before the Sage People two-minute URL expiry. Downloaded documents are stored in a temporary migration blob store with a filename schema that maps to the target candidate ID. This step runs as a separate pipeline phase before any record data migration begins.
Parent record migration and ID resolution
We migrate records in dependency order: Departments and Organizations first (since they are referenced by Employees and Jobs), then Employees (mapped to Candidates), then Vacancies (mapped to Jobs), then Application relationships, then Documents (linked via candidate ID). Each phase produces a reconciliation report showing the number of records inserted, the number skipped due to missing parent references, and the number held in a quarantine queue for manual resolution. Parent ID resolution is the most common source of migration failures and is handled proactively at each phase rather than retroactively at the end.
Sandbox validation and customer sign-off
We run a full migration into Recruit CRM's sandbox environment using production-like data volume. The customer's recruiting operations lead reviews a random sample of migrated records against the Sage People source (we recommend 30-50 records per major object), confirms that candidate-Vacancy associations are correct, and validates that document attachments are accessible and correctly named. Any mapping corrections are made to the migration scripts and re-run in sandbox before production migration begins. Customer sign-off on the sandbox reconciliation report is required before we proceed to production.
Production migration, cutover, and workflow handoff
We freeze Sage People writes during the production cutover window and run a final delta migration to capture any records modified since the sandbox migration. We load records in dependency order into Recruit CRM production, execute the document attachment pipeline, and run a final reconciliation comparing total record counts between Sage People and Recruit CRM for each object type. We deliver the workflow and approval rule inventory document to the customer's admin team for rebuild in Recruit CRM's workflow builder. We support a five-business-day hypercare window where we resolve any data issues raised by the recruiting team and do not begin any new migration project until the current project's hypercare is closed.
Platform deep dives
Sage People
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 Sage People 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
Sage People: 180 requests per minute with a maximum burst of 10 calls per second.
Data volume sensitivity
Sage People 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 Sage People to Recruit CRM & ATS migration scoping. Not seeing yours? Book a call.
Walk through your Sage People 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 Sage People
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.