HRMS migration
Field-level mapping, validation, and rollback between ChartHop and Recruit CRM & ATS. We move data and schema; workflows are rebuilt natively in Recruit CRM & ATS.
ChartHop
Source
Recruit CRM & ATS
Destination
Compatibility
7 of 11
objects map 1:1 between ChartHop and Recruit CRM & ATS.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from ChartHop to Recruit CRM is a platform-category migration: ChartHop is a visual-first people operations and headcount planning suite, while Recruit CRM is a recruitment agency ATS and candidate relationship platform. The migration path centers on ChartHop's People (employee records that become candidates), Jobs (positions that become Recruit CRM vacancies), and department hierarchy. Headcount planning scenarios, which are sandboxed planning objects inside ChartHop, are not accessible via public API and cannot be migrated programmatically; we flag their existence during scoping so the customer can export them as reference documents or re-create them manually. We audit every active ATS connector (Jobvite, Greenhouse) to identify which job requisitions, candidate associations, and hiring statuses sync cleanly to Recruit CRM vacancies versus which require manual re-entry. Matrix team structures, engagement survey results, and goal hierarchies do not map to standard Recruit CRM objects and are flagged for admin review. We do not migrate workflows, sequences, or automations as code; we deliver a written map of every automation requiring rebuild.
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 ChartHop 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.
ChartHop
People (Employees)
Recruit CRM & ATS
Candidate
1:1ChartHop People records map to Recruit CRM Candidates. Core fields (name, email, phone, job title, department) migrate 1:1. Reporting manager relationships do not map natively to Recruit CRM's candidate model since Recruit CRM does not store employee hierarchy; we preserve the manager reference as a custom text field manager_name__c. Compensation fields (base, variable, equity) migrate as custom fields on the Candidate record. Active employment status maps to candidate availability status in Recruit CRM.
ChartHop
Jobs (Positions)
Recruit CRM & ATS
Vacancy / Job
1:1ChartHop Jobs (open or filled positions) map to Recruit CRM Vacancies. Job title, department, job level, and compensation band migrate. Job status (active, closed, on-hold) maps to Recruit CRM vacancy status. Headcount planning scenario data attached to a Job (proposed hires, budget impacts) cannot migrate because ChartHop does not expose scenario data via API; we flag active scenarios during scoping for manual re-creation.
ChartHop
Departments
Recruit CRM & ATS
Organization / Custom Field
1:1ChartHop department hierarchy (parent-child relationships) maps to Recruit CRM organizational structure as a custom Department field on Candidate and Vacancy. We reconstruct the full department tree as a flat list plus parent references. Matrix team affiliations (cross-functional reporting) do not map to Recruit CRM's standard schema and are flagged for admin review.
ChartHop
ATS Requisitions (Jobvite)
Recruit CRM & ATS
Vacancy
lossyJobvite requisitions synced to ChartHop migrate to Recruit CRM Vacancies with job requisition ID preserved. Status (open, filled, cancelled) maps to vacancy status. Internal transfers synced from Jobvite to ChartHop are NOT supported by ChartHop and will not appear in the export; we flag internal transfer records for manual re-entry. Email matching between ChartHop and Jobvite (required by ChartHop's connector) is audited during pre-migration validation.
ChartHop
ATS Requisitions (Greenhouse)
Recruit CRM & ATS
Vacancy
lossyGreenhouse job data synced to ChartHop migrates to Recruit CRM Vacancies. Greenhouse custom fields require custom field mapper setup in ChartHop before export; we audit whether custom field mappers are configured and whether they follow ChartHop's required endpoint-prefixed naming convention (e.g., job.custom_fields.greenhouse_field). Missing or misconfigured mappers result in data gaps that we surface before migration.
ChartHop
Compensation Data
Recruit CRM & ATS
Custom Fields on Candidate
1:manyChartHop compensation fields (base compensation, cash compensation, variable pay, equity, total compensation, compensation band) migrate as custom fields on the Recruit CRM Candidate record. Each compensation component maps to a separate custom field (base_comp__c, variable_comp__c, equity__c, compensation_band__c). Compensation cycle configurations (merit, promotion) are planning data and do not migrate; we export a snapshot of the most recent cycle values as reference documents.
ChartHop
Custom Fields
Recruit CRM & ATS
Custom Fields on Candidate/Vacancy
lossyChartHop unlimited custom fields require a governance audit before migration because the platform enforces no naming conventions or deduplication. We identify duplicate or near-duplicate custom fields (e.g., 'Comp Band' vs 'Compensation Band') and surface them for customer review. Each validated custom field maps to an equivalent Recruit CRM custom field with appropriate data type (text, date, picklist, number). Field-level access controls from ChartHop do not transfer.
ChartHop
Documents and Files
Recruit CRM & ATS
Attachments on Candidate
1:1ChartHop file attachments per employee profile (miscellaneous or field-linked) migrate to Recruit CRM candidate attachments. All files must be under 100MB per ChartHop's limit. We use ChartHop's file export mechanism to retrieve documents and attach them to the corresponding Candidate record. File type categorization does not map to Recruit CRM categories and is preserved as a note or custom text field.
ChartHop
Time Off and PTO Balances
Recruit CRM & ATS
Custom Fields or Reference Documents
1:1Current PTO balances as of the migration snapshot migrate as custom fields on the Candidate record (pto_balance__c). Historical accrual logs are available via a separate ChartHop export pass but Recruit CRM does not have a native accrual tracking model; we recommend exporting accrual history as a reference spreadsheet for the customer's HR admin to maintain separately if needed.
ChartHop
Performance Reviews
Recruit CRM & ATS
Not Supported (Flag for Manual)
1:1Performance review cycles, review forms, and submitted responses stored in ChartHop's Performance module do not map to Recruit CRM objects. Recruit CRM is a recruitment ATS, not a performance management system. We export review metadata (cycle names, form structures) and anonymized response aggregates as reference documents. Review templates with custom question types are flagged for manual re-creation if needed at the destination HRMS.
ChartHop
Goals
Recruit CRM & ATS
Not Supported (Flag for Manual)
1:1ChartHop Goals (company, team, and individual objectives with progress tracking) do not map to Recruit CRM objects. Recruit CRM does not have a goals or OKR module. We export goal hierarchies and progress values as a reference document. Cascading goal dependencies (where child goals roll up to parent goals) cannot be preserved and are flagged for manual re-creation if needed at the destination platform.
| ChartHop | Recruit CRM & ATS | Compatibility | |
|---|---|---|---|
| People (Employees) | Candidate1:1 | Fully supported | |
| Jobs (Positions) | Vacancy / Job1:1 | Fully supported | |
| Departments | Organization / Custom Field1:1 | Fully supported | |
| ATS Requisitions (Jobvite) | Vacancylossy | Fully supported | |
| ATS Requisitions (Greenhouse) | Vacancylossy | Fully supported | |
| Compensation Data | Custom Fields on Candidate1:many | Mapping required | |
| Custom Fields | Custom Fields on Candidate/Vacancylossy | Mapping required | |
| Documents and Files | Attachments on Candidate1:1 | Mapping required | |
| Time Off and PTO Balances | Custom Fields or Reference Documents1:1 | Mapping required | |
| Performance Reviews | Not Supported (Flag for Manual)1:1 | Mapping required | |
| Goals | Not Supported (Flag for Manual)1:1 | Mapping required |
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.
ChartHop gotchas
Headcount planning scenarios are not accessible via API
Spreadsheet imports require XLSX format and strict formatting rules
ATS integration with Jobvite requires exact email matching
Internal transfers are not supported in ATS sync
Custom fields proliferate without governance by default
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 ATS connector audit
We audit the customer's ChartHop instance across modules in use (Core, Headcount Planning, HRIS, Compensation, Performance, Engagement), active ATS connectors (Jobvite, Greenhouse, Lever), record counts for People, Jobs, Departments, and file attachments, and any active headcount planning scenarios. We also audit whether ChartHop-to-ATS field mappers are configured and whether internal transfer workflows exist. The discovery output is a written migration scope that explicitly calls out what migrates, what requires manual re-entry, and what cannot migrate at all.
Data hygiene pass on custom fields
ChartHop allows unlimited custom fields without naming governance, leading to duplicate or near-duplicate fields over time. We run a custom field deduplication pass: identifying fields with similar names (e.g., 'Comp Band' vs 'Compensation Band'), consolidating logically equivalent fields, and surfacing a decision matrix for the customer's HR admin to approve or revise before field mapping. This step prevents redundant custom fields from entering Recruit CRM and clogging the candidate schema.
Schema design and custom field creation in Recruit CRM
We design the Recruit CRM destination schema: custom fields on Candidate (compensation fields, manager reference, department as structured picklist), custom fields on Vacancy (job level, compensation band, source ATS), and organizational structure mapping. We pre-create all custom fields with correct data types before any data import. Matrix team data and headcount scenario references are not created as Recruit CRM objects; we document them as reference exports instead.
ATS requisition extraction and field mapper validation
We extract job requisition data from each active ATS connector (Jobvite, Greenhouse). For Greenhouse, we audit whether custom field mappers follow ChartHop's required endpoint-prefixed naming convention and flag any misconfigured mappings. We extract candidate-to-job associations and hiring statuses. Internal transfer records are flagged separately for manual re-entry since ChartHop does not expose them via ATS sync.
Production migration in dependency order
We run production migration in record-dependency order: Vacancies first (since Candidates link to them), then Candidates (with ATS source references and compensation data in custom fields), then file attachments linked to Candidates. Department hierarchy is delivered as a structured reference document. Each phase emits a row-count reconciliation report. Any ATS requisition records with missing custom field mapper data are flagged for manual completion.
Cutover, validation, and workflow inventory handoff
We freeze ChartHop writes during cutover, run a final delta migration of any records modified during the window, then enable Recruit CRM as the system of record. We deliver a written workflow inventory documenting every ChartHop automation (headcount approval workflows, onboarding task sequences, time-off request flows) requiring rebuild in Recruit CRM's workflow builder. We do not rebuild workflows as code inside the migration scope. We support a one-week post-cutover window for data reconciliation issues.
Platform deep dives
ChartHop
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 ChartHop 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
ChartHop: Not publicly documented.
Data volume sensitivity
ChartHop 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 ChartHop to Recruit CRM & ATS migration scoping. Not seeing yours? Book a call.
Walk through your ChartHop 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 ChartHop
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.