HRMS migration
Field-level mapping, validation, and rollback between AgileATS and Zoho Recruit. We move data and schema; workflows are rebuilt natively in Zoho Recruit.
AgileATS
Source
Zoho Recruit
Destination
Compatibility
8 of 12
objects map 1:1 between AgileATS and Zoho Recruit.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from AgileATS to Zoho Recruit is a lateral-functional move for teams leaving GovCon-specific ATS tooling for a general-purpose recruiting platform. AgileATS has no public REST API, so every migration runs through structured file exports (CSV or JSON dumps) that we validate for schema completeness before ingestion. We map AgileATS Candidates to Zoho Recruit Candidates, AgileATS Jobs to Zoho Recruit Job Openings, and preserve clearance-level fields as Zoho Recruit custom fields. Pipeline stages are reconstructed in Zoho Recruit's visual pipeline builder. Partner users (a separate billing class in AgileATS at $20 per seat) require explicit remapping because Zoho Recruit does not have a native partner-user concept. Workflows, compliance report generation, and ClearanceJobs integration do not migrate; we deliver written inventories for the customer's admin to configure post-migration. Offer records and candidate attachments migrate fully, and activity notes transfer to Zoho Recruit's Notes module.
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 AgileATS 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.
AgileATS
Candidate
Zoho Recruit
Candidate
1:1AgileATS Candidates map directly to Zoho Recruit Candidates. We preserve first name, last name, email, phone, address, status, and clearance level as typed fields. Zoho Recruit requires Last Name as a mandatory field — candidates with no last name in the AgileATS export are flagged and assigned 'Not Provided' as a placeholder value per Zoho Recruit's import specification. Clearance level migrates as a custom picklist field (clearance_level__c) on the Candidate module because Zoho Recruit does not have a native clearance field.
AgileATS
Job
Zoho Recruit
Job Opening
1:1AgileATS Job records (requisition title, location, clearance requirements, job category) map to Zoho Recruit Job Openings. The AgileATS job status (Open, On Hold, Closed, Filled) maps to Zoho Recruit's Opening Status field. Active jobs are migrated first; closed or filled jobs can be migrated as inactive records per customer preference.
AgileATS
Pipeline Stage
Zoho Recruit
Pipeline Stage
lossyAgileATS structured Agile Recruiting stages are reconstructed in Zoho Recruit's visual pipeline builder. Stage names and sequence are extracted from the AgileATS export during scoping, mapped to Zoho Recruit pipeline stages, and the ordering is preserved. If the customer uses non-standard stage counts per job, we create multiple Zoho Recruit pipelines with per-job assignments.
AgileATS
Offer
Zoho Recruit
Candidate (Offer sub-record)
1:1AgileATS Offer records (compensation details, start date, offer status) migrate as a linked sub-section under the candidate record. We preserve the offer-to-candidate relationship by matching on candidate email as the dedupe key. Offer status (Accepted, Declined, Pending, Withdrawn) migrates to a custom picklist field offer_status__c on the candidate record.
AgileATS
Custom Field (clearance types, EEO flags, partner assignments)
Zoho Recruit
Custom Field
lossyAgileATS custom fields are extracted during scoping and mapped to Zoho Recruit custom fields. Zoho Recruit requires the data type to be chosen at field creation — we flag any AgileATS custom fields where the implied type (picklist, date, currency, text) is ambiguous from the source data and resolve with the customer before field creation. Zoho Recruit does not allow custom fields in the Call module; any AgileATS call-related custom fields are stored on the parent Candidate record instead.
AgileATS
Attachment (resume, certification, background form)
Zoho Recruit
Attachment
1:1AgileATS candidate attachments (resumes, certifications, security clearance documents, background forms) are exported from the file store alongside record data. We re-associate attachments to the corresponding Zoho Recruit Candidate record during import. Large attachment volumes require file size validation — Zoho Recruit enforces attachment size limits per the account tier. We flag any files exceeding limits before ingestion.
AgileATS
Compliance Report (OFCCP, DoL, EEO underlying data)
Zoho Recruit
Candidate custom fields + external reporting
1:1AgileATS OFCCP, DoL, and EEO reports are generated exports rather than stored data objects. The underlying candidate fields used to generate these reports (EEO flag values, hire dates, job categories, pay ranges) migrate as Zoho Recruit custom fields on Candidate records. Compliance report reconstruction is outside migration scope — we document which migrated fields correspond to which report line items so the customer's compliance team can validate output in Zoho Recruit's reporting module or a third-party compliance tool.
AgileATS
User / Recruiter
Zoho Recruit
User
1:1AgileATS User records (recruiter seats, role, org assignment) map to Zoho Recruit Users. Resolution is by email match. If a migrating User already has an active Zoho Recruit account, Zoho Recruit's import documentation requires closing that account before the user can be imported into the organization's Recruit instance. We flag any pre-existing Zoho Recruit accounts during scoping and coordinate closure before the user migration phase.
AgileATS
Partner User
Zoho Recruit
User (with permission review)
lossyAgileATS Partner Users are a separate billing class at $20 per seat with restricted permissions. Zoho Recruit does not have a native partner-user concept. We migrate Partner Users as standard Zoho Recruit Users and flag them for permission review during the handoff — the customer's admin sets access levels appropriate to the partner role (limited candidate visibility, read-only access, or client-portal access depending on Zoho Recruit plan tier). Partner assignment on candidate records is preserved as a custom picklist field.
AgileATS
Clearance Data
Zoho Recruit
Custom picklist field (clearance_level__c)
1:1Security clearance level and status stored as structured fields on AgileATS candidate records migrate to a Zoho Recruit custom picklist field. We preserve clearance level (Confidential, Secret, Top Secret, TS/SCI, or none) and clearance status (Active, Expired, Pending) explicitly. Expired or pending clearance values are flagged for the customer to review post-migration because Zoho Recruit does not enforce clearance expiration logic natively.
AgileATS
Notes and Activity History
Zoho Recruit
Notes / Tasks
1:1AgileATS recruiter notes and activity timestamps are exported and mapped to Zoho Recruit Notes (free-text notes attached to Candidate records) and Tasks (recruiter activity log entries). Activity ordering is preserved where the destination supports timestamp-based sorting. Call and meeting activity from AgileATS maps to Zoho Recruit Tasks with Call or Meeting subtypes where applicable.
AgileATS
Job-to-Candidate Association
Zoho Recruit
Job Opening (linked to Candidate via Apply link or custom association)
lossyAgileATS tracks which candidates applied to which jobs as part of the candidate record. In Zoho Recruit, candidate-to-job associations are tracked via the Candidate sub-form on the Job Opening or via the Apply link tracking module. We map the source job association to the destination Job Opening using job title and location as the matching key, reconstructing the candidate pipeline for each active job.
| AgileATS | Zoho Recruit | Compatibility | |
|---|---|---|---|
| Candidate | Candidate1:1 | Fully supported | |
| Job | Job Opening1:1 | Fully supported | |
| Pipeline Stage | Pipeline Stagelossy | Fully supported | |
| Offer | Candidate (Offer sub-record)1:1 | Fully supported | |
| Custom Field (clearance types, EEO flags, partner assignments) | Custom Fieldlossy | Fully supported | |
| Attachment (resume, certification, background form) | Attachment1:1 | Fully supported | |
| Compliance Report (OFCCP, DoL, EEO underlying data) | Candidate custom fields + external reporting1:1 | Fully supported | |
| User / Recruiter | User1:1 | Fully supported | |
| Partner User | User (with permission review)lossy | Fully supported | |
| Clearance Data | Custom picklist field (clearance_level__c)1:1 | Mapping required | |
| Notes and Activity History | Notes / Tasks1:1 | Mapping required | |
| Job-to-Candidate Association | Job Opening (linked to Candidate via Apply link or custom association)lossy | 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.
AgileATS gotchas
No public API requires structured file-based migration
Candidate storage caps differ by tier and are enforced
Compliance report data lives in exports, not structured records
Partner users are a distinct billing class
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 export request
We audit the AgileATS instance for candidate record count, job count, pipeline stage configuration, custom field inventory, active Partner User count, and attachment volume. We request a structured export file directly from the customer's AgileATS instance during this phase. We validate the export against the customer's reported counts and flag any discrepancy indicating a storage cap purge. The discovery output is a written migration scope document covering record volumes, custom field list, pipeline map, and any identified export gaps.
Zoho Recruit field creation and schema design
We design the Zoho Recruit schema before any record import. This includes creating all custom fields (clearance_level__c, clearance_status__c, partner_assignment__c, offer_status__c, EEO flag fields, and any AgileATS-specific custom fields mapped to Zoho Recruit equivalents) with appropriate data types locked in. We configure the candidate pipeline stages in Zoho Recruit's visual pipeline builder to match the AgileATS Agile Recruiting stage sequence. Job Opening page layouts are configured per Zoho Recruit plan tier. Field-level permissions are set to allow the migration user full write access during import.
User provisioning and pre-existing Zoho Recruit account resolution
We extract every distinct AgileATS User (Recruiter and Partner) referenced on candidate and job records and match by email against the Zoho Recruit destination. Any User with a pre-existing Zoho Recruit account is flagged — Zoho Recruit's import process requires closing that account before the user can be imported under the organization's Recruit instance. The customer's admin resolves pre-existing accounts before the user migration phase begins. Missing Users are provisioned in Zoho Recruit by the customer's admin before record import resumes.
Candidate, job, and offer migration
We migrate records in dependency order: Job Openings first (so candidate-to-job associations can resolve), then Candidates (with Last Name reconciliation for all missing values), then Offer records linked to Candidates by email match. Each phase emits a row-count reconciliation report before the next phase begins. Candidate attachments are processed separately and re-associated to the migrated Zoho Recruit Candidate records after the primary record import completes.
Activity notes and compliance field migration
We migrate AgileATS recruiter notes to Zoho Recruit Notes attached to the corresponding Candidate record. Activity timestamps are preserved as Task records with appropriate subtypes (Call, Meeting, General) where the AgileATS export supports activity type classification. The underlying OFCCP, DoL, and EEO compliance data fields are confirmed as mapped to the custom Zoho Recruit fields designated during schema design, and a compliance field mapping document is delivered to the customer's compliance team.
Cutover, validation, and handoff
We freeze AgileATS writes during cutover, run a final delta migration of any records modified during the migration window, then enable Zoho Recruit as the system of record. We deliver the workflow inventory (automations in AgileATS requiring rebuild in Zoho Recruit's Workflow module), the compliance field mapping document, and the partner-user permission review checklist to the customer's admin team. We support a one-week hypercare window for reconciliation issues raised by the recruiting team. Workflow rebuild, compliance report reconstruction, and ClearanceJobs integration reconfiguration are outside standard migration scope and are handled by the customer's admin or a separate engagement.
Platform deep dives
AgileATS
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 AgileATS 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
AgileATS: Not publicly documented.
Data volume sensitivity
AgileATS 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 AgileATS to Zoho Recruit migration scoping. Not seeing yours? Book a call.
Walk through your AgileATS 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 AgileATS
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.