HRMS migration
Field-level mapping, validation, and rollback between ZenHR and Zoho Recruit. We move data and schema; workflows are rebuilt natively in Zoho Recruit.
ZenHR
Source
Zoho Recruit
Destination
Compatibility
7 of 12
objects map 1:1 between ZenHR and Zoho Recruit.
Complexity
BStandard
Timeline
3-5 weeks
Overview
ZenHR is a full-cycle HRMS with an embedded ATS module (ZenATS), while Zoho Recruit is a dedicated applicant tracking system. This migration is scoped to the ATS layer: ZenATS candidates, vacancies, and interview pipeline history transfer to Zoho Recruit's Candidate, Job Opening, and Interview modules. We resolve Zoho Recruit's mandatory Last Name requirement against ZenHR's single-name field during field mapping. Hired candidates can be converted to Zoho People employees through Zoho's native integration — but custom field carry-over across that integration is partial, and organizations should scope which employee data matters post-hire. ZenHR HRMS records (payroll runs, timeoff balances, loans, overtime, EOSB settlements, org structure, attendance) have no direct Zoho Recruit equivalent and are flagged in the inventory document for the customer's admin to handle in Zoho People or a separate HRMS implementation. Workflows, custom automation rules, and HR letter templates do not migrate as code.
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 ZenHR object lands in Zoho Recruit, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
ZenHR
ZenATS Candidate
Zoho Recruit
Candidate
1:1ZenATS Candidates transfer to Zoho Recruit Candidate records. We map ZenATS first_name and last_name fields to Zoho Recruit's First Name and Last Name; if ZenATS stores full name in a single field, we split on the last space or flag records requiring manual name resolution. Candidate email, phone, current_position, and current_company map to their Zoho Recruit equivalents. Source attribution (candidate origin channel) maps to Zoho Recruit's Source field. Any ZenATS custom candidate fields map to Zoho Recruit custom fields created before migration — but custom field carry-over via the Zoho Recruit-to-Zoho People integration is partial, so we scope which fields matter post-hire.
ZenHR
ZenATS Vacancy / Job Opening
Zoho Recruit
Job Opening
1:1ZenATS Vacancies map to Zoho Recruit Job Opening records. The ZenATS vacancy title maps to Job Opening Title; vacancy status (Draft, Published, Closed, On Hold) maps to Zoho Recruit's status picklist. Assigned recruiters from ZenATS map to Zoho Recruit Hiring Team members via email matching. Job Requirements, Desired Skills, and Experience from ZenATS map to custom fields or the Description/Requirements text area in Zoho Recruit. If ZenATS has multiple job opening records per vacancy (internal and external), these map to separate Zoho Recruit Job Opening records with distinct workflow assignments.
ZenHR
ZenATS Candidate Stage / Pipeline
Zoho Recruit
Job Opening Stage
lossyZenATS pipeline stages (e.g., Application Received, Screening, First Interview, Second Interview, Offer, Hired, Rejected) map to Zoho Recruit Job Opening Custom Status values. We pre-create the status workflow in Zoho Recruit before migration so that candidate records land in the correct stage. Stage history (timestamps and stage change records) transfers as candidate activity notes or as a custom multi-line field if the destination org supports it — native stage history audit trail is limited in Zoho Recruit's standard import process.
ZenHR
ZenATS Interview Record
Zoho Recruit
Interview
1:1ZenATS interview records (scheduled date, interviewer, interview type, outcome, feedback) map to Zoho Recruit Interview records linked to the Candidate and Job Opening. Interviewer names resolve to Zoho Recruit Users via email match. Interview type and feedback scores map to custom Interview fields if not covered by Zoho Recruit's standard Interview Feedback form. Interview scheduling metadata (calendar invite status, meeting link) does not transfer as calendar events — it migrates as note text for the recruiting team's reference.
ZenHR
Employee (Hired Candidate)
Zoho Recruit
Zoho People Employee (via Convert to Employee)
1:1ZenHR Employees who were hired from ZenATS map to Zoho People Employee records through Zoho Recruit's Convert-to-Employee action. The native integration pushes candidate data (name, email, phone, position) into Zoho People automatically. However, the Reddit-sourced evidence on r/Zoho confirms that a lot of fields do not carry over through the Zoho Recruit-to-Zoho People connection — banking information, custom fields, and HRMS-specific data require manual re-entry in Zoho People. We flag all employee fields that the customer wants preserved post-conversion and advise manual entry or a secondary data pass into Zoho People after the ATS migration completes.
ZenHR
ZenHR Custom Fields (Employee Profile)
Zoho Recruit
Zoho Recruit Custom Fields
1:1ZenHR tenant-specific custom fields on employee profiles and requests require a pre-migration field discovery audit because every ZenHR install has unique field configurations. We enumerate every active standard and custom field with its type and mandatory/optional flag, then pre-create matching custom fields in Zoho Recruit before migration. Custom fields are available on all paid Zoho Recruit tiers (Standard: 50/module, Professional: 300/module, Enterprise: unlimited) but not the Free edition. Lookup fields require Professional or Enterprise. Formula fields also require Professional or Enterprise. We scope the destination edition during discovery and create only supported field types.
ZenHR
ZenATS Candidate Attachment / Resume
Zoho Recruit
Candidate Attachments
1:1ZenATS candidate attachments (resumes, cover letters, portfolio files) transfer as Zoho Recruit Candidate Attachments linked to the migrated Candidate record. Binary file transfers are handled via Zoho Recruit's file upload API with the original filename and MIME type preserved. We extract resume text for candidates where ZenATS stores a parsed resume to populate the Skills and Work Experience sections in Zoho Recruit's structured candidate profile. File size limits are respected per Zoho Recruit's attachment constraints.
ZenHR
ZenATS Active Job Status
Zoho Recruit
Job Opening Status
lossyZenATS vacancy statuses (Active, On Hold, Closed) map directly to Zoho Recruit Job Opening status values. We run a status audit before migration to identify any ZenATS statuses that have no Zoho Recruit equivalent and map them to the closest standard value, documenting the decision in the mapping spec. Closed vacancies transfer with their historical data but are set to Closed status in Zoho Recruit so they do not appear in active recruiter queues.
ZenHR
ZenATS Candidate Communication Metadata
Zoho Recruit
Candidate Activity Notes
lossyZenATS candidate communication logs (email and SMS metadata — timestamps, template names, recipient addresses) transfer as Zoho Recruit Candidate Activity records or Notes. The email and SMS body content is not exposed via the ZenHR standard API and does not transfer automatically. We flag this gap during scoping: if the customer requires full candidate communication history, we recommend a manual export from ZenATS before migration. Only metadata (send timestamp, template name, recipient) migrates as a candidate note for the recruiting team's audit trail.
ZenHR
ZenATS Users / Recruiters
Zoho Recruit
Zoho Recruit Users
1:1ZenATS Users (recruiters, hiring managers) map to Zoho Recruit Users. Resolution is by email address match. A Zoho Recruit constraint applies: users who already have a separate Zoho Recruit organization account cannot be imported into the destination company account until that separate account is closed. We audit the ZenATS user list against existing Zoho Recruit accounts before migration and flag any conflicts for the customer's admin to resolve. Active versus inactive status maps to Zoho Recruit's active/deactivated user state.
ZenHR
ZenATS Job Board Posting Configuration
Zoho Recruit
Job Opening Job Board Status
lossyZenATS job board posting configurations (which boards a vacancy is posted to, posting dates, status per board) transfer as Zoho Recruit Job Opening job board distribution records or as custom fields tracking posting status. We map active board postings to Zoho Recruit's native job board integration configuration post-migration. Historical posting data (board names, original posting URLs) migrates as a note on the Job Opening record.
ZenHR
ZenATS Offer Letter Record
Zoho Recruit
Candidate Offer / Custom Module
lossyZenATS offer letter records (offer date, proposed compensation, offer status) map to Zoho Recruit's candidate Offer object if the destination Zoho Recruit edition supports it (Professional and above), or to a custom Offer module we create during schema setup. Offer details migrate as structured records linked to the Candidate, preserving offer amount, start date, and status (Accepted, Rejected, Pending). Historical offer data is migrated even for closed vacancies to support reporting on offer-to-acceptance ratios.
| ZenHR | Zoho Recruit | Compatibility | |
|---|---|---|---|
| ZenATS Candidate | Candidate1:1 | Fully supported | |
| ZenATS Vacancy / Job Opening | Job Opening1:1 | Fully supported | |
| ZenATS Candidate Stage / Pipeline | Job Opening Stagelossy | Fully supported | |
| ZenATS Interview Record | Interview1:1 | Fully supported | |
| Employee (Hired Candidate) | Zoho People Employee (via Convert to Employee)1:1 | Fully supported | |
| ZenHR Custom Fields (Employee Profile) | Zoho Recruit Custom Fields1:1 | Fully supported | |
| ZenATS Candidate Attachment / Resume | Candidate Attachments1:1 | Fully supported | |
| ZenATS Active Job Status | Job Opening Statuslossy | Fully supported | |
| ZenATS Candidate Communication Metadata | Candidate Activity Noteslossy | Fully supported | |
| ZenATS Users / Recruiters | Zoho Recruit Users1:1 | Fully supported | |
| ZenATS Job Board Posting Configuration | Job Opening Job Board Statuslossy | Fully supported | |
| ZenATS Offer Letter Record | Candidate Offer / Custom Modulelossy | 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.
ZenHR gotchas
ZenATS candidates and SMS/email communication logs are not fully exportable via API
Custom fields are tenant-specific and require a pre-migration field audit
Attendance raw data volume can overwhelm bulk exports without pagination controls
Terminations require effective-date sequencing to preserve EOSB and leave balance calculations
Zoho Recruit gotchas
Daily API rate limits are tier-gated and per-user capped
User import hard cap of 2,000 records
Attachment folder hierarchy must be preserved exactly
Resume parsing quota varies by plan and resets daily
Custom fields unavailable in Free and Standard editions
Pair-specific challenges
Migration approach
Discovery and source audit
We audit the source ZenHR tenant via API for ZenATS modules: Candidate records (with stage history and attachment metadata), Vacancy records, Interview records, Offer records, and User/Recruiter assignments. We enumerate all active custom fields on ZenATS objects and their types. We extract a candidate name field sample to identify single-name records and records with missing last name values. We audit ZenATS user accounts against existing Zoho Recruit organization memberships to identify account conflict blockers. The discovery output is a written migration scope document covering record counts per module, custom field inventory, stage pipeline mapping, and any data gaps (communication bodies, banking data) requiring manual export or customer acknowledgment.
Destination Zoho Recruit setup and schema preparation
We configure the destination Zoho Recruit account: provisioning the correct edition (Standard, Professional, or Enterprise based on custom field requirements and lookup field needs), creating Job Opening status values matching the ZenATS pipeline stages, creating any required custom modules (Offer module on Professional tier), and pre-creating custom fields on Candidate and Job Opening modules to match the ZenATS custom field inventory. We verify that User accounts exist in Zoho Recruit for each recruiter being migrated, and escalate any missing accounts or account conflict blockers to the customer's admin before proceeding.
Name field resolution and data cleansing
We process the ZenATS candidate name data to resolve the Zoho Recruit mandatory Last Name requirement. For records with a full Western-format name, we split on the last whitespace. For records with a single-name format or Arabic names without a patronymic, we use the available name component as First Name and substitute 'Not Provided' for Last Name, documenting each substitution in the mapping log. We also deduplicate candidate records by email address, flagging duplicates for the customer's recruiter admin to resolve before import (Zoho Recruit does not automatically merge duplicate candidate records).
Sandbox migration and reconciliation
We run a full migration into a Zoho Recruit Sandbox (a separate trial or development account) using production-like data volume. The customer's HR and recruiting leads reconcile record counts: Candidates in ZenATS versus Candidates in Zoho Recruit, Vacancies versus Job Openings, Interview records, and Offer records. We spot-check 25-50 candidate records against the ZenATS source for field-level accuracy, verify attachment integrity, and confirm stage pipeline assignment. The customer signs off the sandbox validation before production migration begins. Any mapping corrections are applied in this phase.
Production migration in dependency order
We run production migration in this order: Users (validated, no conflicts), Job Openings (as parent records for candidate assignments), Candidates (with name resolution applied and stage assignment resolved against the pre-created status workflow), Interview records (linked to Candidate and Job Opening), Offer records (linked to Candidate), and Attachments (linked to their parent Candidate). Each phase emits a row-count reconciliation report. Any records rejected due to missing mandatory fields are captured in an error log and retried after customer admin resolution.
Zoho People conversion scope and handoff
We activate the Zoho Recruit-to-Zoho People Convert-to-Employee integration for candidates who have been marked as hired. We document which fields carry over through the native integration and which require manual re-entry in Zoho People (banking details, benefits, custom HRMS fields). The customer's HR admin receives the employee conversion field map and a manual entry checklist for fields that did not transfer. We do not migrate ZenHR's payroll, timeoff, loan, overtime, org structure, EOSB, or attendance records into Zoho Recruit — these objects have no equivalent in the ATS and are flagged in the handoff document for the customer to implement in Zoho People or a separate HRMS platform. Workflows, automations, and HR letter templates are not migrated as code.
Platform deep dives
ZenHR
Source
Strengths
Weaknesses
Zoho Recruit
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 ZenHR and Zoho Recruit.
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
ZenHR: Not publicly documented — requires direct inquiry to ZenHR support to determine safe request-pacing thresholds.
Data volume sensitivity
ZenHR 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 ZenHR to Zoho Recruit migration scoping. Not seeing yours? Book a call.
Walk through your ZenHR to Zoho Recruit migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave ZenHR
Other ways to arrive at Zoho Recruit
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.