HRMS migration
Field-level mapping, validation, and rollback between Teamdoor and Zoho Recruit. We move data and schema; workflows are rebuilt natively in Zoho Recruit.
Teamdoor
Source
Zoho Recruit
Destination
Compatibility
8 of 14
objects map 1:1 between Teamdoor and Zoho Recruit.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from TeamDoor to Zoho Recruit is a transition from a per-job Kanban ATS to a modular ATS-plus-CRM platform with deep customization and Blueprint workflow automation. TeamDoor treats each Job Opening as a root container with its own custom stage sequence. Zoho Recruit uses fixed modules (Candidates, Job Openings, Clients, Contacts, Departments) with field-level customization, hiring-stage workflows defined via Blueprint, and a CSV-driven Data Migration tool that maps source columns to destination modules. We extract from TeamDoor via CSV on Standard or via the open API on Pro, transform per-job stages into a Zoho Recruit Hiring Pipeline configured via Blueprint, derive Client records from client mentions on Job Openings (because TeamDoor has no Client object), and import via Zoho Recruit's Data Migration tool with field-mapping sign-off. Last Name is a mandatory field in Zoho Recruit Candidates; we resolve missing values to 'not provided' per Zoho's documented guidance. Workflows, Blueprint automations, and Zia AI tuning do not migrate as code; we deliver a written inventory for the customer's admin to 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 Teamdoor 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.
Teamdoor
Job Opening
Zoho Recruit
Job Opening
1:1TeamDoor Job Openings map directly to Zoho Recruit Job Openings (same module name). Title, employment type, location, posting date, and owner move directly. Zoho Recruit Job Openings link to a Client; we derive Client from client mentions on the TeamDoor Job Opening. Job status maps from TeamDoor's active/closed boolean to Zoho Recruit Job Status. The original TeamDoor job_id is preserved on a Zoho Recruit custom field. Closed Job Openings import as Closed status with original close date.
Teamdoor
(derived) Client name
Zoho Recruit
Client
1:manyTeamDoor has no Client object. Client identity lives as free-text on Job Opening title or description. During scoping we extract distinct client mentions, present a canonical list to the customer's operations lead, and create one Zoho Recruit Client per approved client. Jobs without identifiable client text link to a placeholder Client called 'Internal' for post-cutover reclassification. Client address, industry, and ownership are not in TeamDoor; the customer enriches via Zoho Recruit's manual entry, Zia AI enrichment, or an integrated data source.
Teamdoor
(derived) Hiring manager
Zoho Recruit
Contact
1:1TeamDoor hiring-manager email per Job Opening maps to a Zoho Recruit Contact (client-side person) linked to the parent Client via the standard lookup. We resolve duplicates on email. firstName and lastName parse from the email's local part when no name is recorded; Last Name resolves to 'not provided' per Zoho's documented guidance if the local part isn't reasonable. Multiple Job Openings link to the same Contact when the same hiring manager appears across roles.
Teamdoor
Candidate
Zoho Recruit
Candidate
1:1TeamDoor Candidates map to Zoho Recruit Candidates. Email is the dedupe key. firstName, lastName, email, phone, currentTitle, and city move directly. Zoho Recruit enforces Last Name as mandatory; we resolve missing Last Name to 'not provided' per Zoho's own data migration documentation, with a flag in a custom field so the customer's recruiters can clean these up post-cutover. The original TeamDoor candidate_id is preserved on a Zoho Recruit custom field for audit.
Teamdoor
Talent Pool entry
Zoho Recruit
Candidate with status = Inactive
many:1TeamDoor Talent Pool entries map to Zoho Recruit Candidates with Candidate Status = Inactive and a custom field 'Source Type' set to 'Talent Pool'. Dedup runs on email and phone fingerprint against active Candidate records. lastContactedDate from the Talent Pool entry maps to a Zoho Recruit custom date field. The customer's recruiters can re-activate Talent Pool Candidates by changing status when they re-engage.
Teamdoor
Recruiting Pipeline Stage (per job)
Zoho Recruit
Hiring Stage (via Blueprint)
many:1TeamDoor allows per-job custom stage sequences. Zoho Recruit uses Hiring Stages configured via Blueprint at the Candidate module level. We build a stage-normalization matrix during scoping that maps every distinct TeamDoor stage across every job onto a single Zoho Recruit Blueprint. The customer's admin signs off the Blueprint before bulk import. Original TeamDoor stage name is preserved on each Candidate-Job association in a custom field.
Teamdoor
Stage Transition (Candidate-in-Job)
Zoho Recruit
Hiring Stage update on Candidate
1:manyEach TeamDoor Candidate-in-Job stage transition becomes a Zoho Recruit Hiring Stage update for that Candidate against the linked Job Opening. We replay status transitions in chronological order via the API. Each transition posts with the original TeamDoor timestamp where Zoho Recruit's API permits backdating; otherwise the timestamp lives in a Note on the Candidate. Blueprint stage-transition rules (required fields, validation) fire on insert and we configure the Blueprint to permit migration-context inserts to avoid validation failures.
Teamdoor
Tags
Zoho Recruit
Tags (Candidate)
1:1TeamDoor tags on candidates map to Zoho Recruit Candidate Tags. Tag names transfer verbatim with whitespace trimmed and case normalized. Skill-flavored tags also flow to the Skill Set field where Zia AI can use them for candidate matching. Zoho Recruit tags are module-wide; we flag any tag names that collide with different meaning across jobs for the customer to rename during scoping.
Teamdoor
Interview Notes
Zoho Recruit
Notes
1:1TeamDoor interview notes migrate to Zoho Recruit Notes attached to the Candidate. Original author email is preserved in the Note body because Zoho Recruit sets the API user as Note creator. dateAdded preserves the original TeamDoor timestamp. Long-form notes over Zoho Recruit's Note body cap split across multiple Notes with a continuation marker so nothing truncates.
Teamdoor
Email Templates
Zoho Recruit
Email Templates
1:1TeamDoor email templates migrate to Zoho Recruit Email Templates. Merge-field syntax rewrites from TeamDoor's {{candidate.name}} to Zoho Recruit's {{candidate.firstName}} {{candidate.lastName}}. Stage-trigger automation behavior does not migrate as code; Zoho Recruit's automation lives in Workflows and Blueprint actions, which the customer's admin configures after migration. We deliver a written automation inventory for that rebuild.
Teamdoor
Resume Attachment
Zoho Recruit
Candidate Attachment
1:1TeamDoor resumes (URL references) are fetched within the first 48 hours of the migration window, validated, and re-uploaded via Zoho Recruit's attachment endpoint linked to the matching Candidate. Resume parsing runs on upload via Zoho's built-in parser and populates Experience, Education, and Skill Set fields where possible. Files exceeding per-file caps or returning 403/404 from TeamDoor land in the pre-flight report. Third-party LinkedIn or Facebook URLs are often unreachable.
Teamdoor
Job Listing Channels
Zoho Recruit
Source (Candidate)
lossyTeamDoor's multi-channel array per Job Opening maps to the per-Candidate Source field in Zoho Recruit. The full channel array per Job is preserved as a custom note on the Job Opening for audit. Zoho Recruit's Source picklist is configured at the module level by the admin; we align TeamDoor channel names to the destination picklist during scoping and add any missing source values via the Setup interface before candidate insert.
Teamdoor
Team Member (TeamDoor user)
Zoho Recruit
User
1:1TeamDoor users map to Zoho Recruit Users with a Profile (Standard, Administrator, Recruiter) and Role assigned by the customer's admin. Resolution is by email. Per Zoho's documented migration guidance, the workspace needs at least two users provisioned before migration begins (Setup > Users & Control > Users). Users with separate Zoho Recruit accounts on different orgs must close those accounts before they can join the customer's workspace, per Zoho's KB.
Teamdoor
Custom Fields (any added in TeamDoor)
Zoho Recruit
Custom Fields (per module)
lossyAny custom fields the customer added in TeamDoor map to Zoho Recruit custom fields per module, subject to per-tier field-type limits (Standard has fewer field types; Professional and Enterprise add Lookup and Formula). The Zoho Data Migration UI prompts to create new fields for unmapped source columns, which we use to materialize the destination schema. Text Area Large fields cannot be used as criteria for filters, per Zoho documentation.
| Teamdoor | Zoho Recruit | Compatibility | |
|---|---|---|---|
| Job Opening | Job Opening1:1 | Fully supported | |
| (derived) Client name | Client1:many | Fully supported | |
| (derived) Hiring manager | Contact1:1 | Fully supported | |
| Candidate | Candidate1:1 | Fully supported | |
| Talent Pool entry | Candidate with status = Inactivemany:1 | Fully supported | |
| Recruiting Pipeline Stage (per job) | Hiring Stage (via Blueprint)many:1 | Fully supported | |
| Stage Transition (Candidate-in-Job) | Hiring Stage update on Candidate1:many | Fully supported | |
| Tags | Tags (Candidate)1:1 | Fully supported | |
| Interview Notes | Notes1:1 | Mapping required | |
| Email Templates | Email Templates1:1 | Mapping required | |
| Resume Attachment | Candidate Attachment1:1 | Fully supported | |
| Job Listing Channels | Source (Candidate)lossy | Mapping required | |
| Team Member (TeamDoor user) | User1:1 | Fully supported | |
| Custom Fields (any added in TeamDoor) | Custom Fields (per module)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.
Teamdoor gotchas
API access requires Pro tier or higher
Talent Pool OCR limits vary by plan
Pipeline stage schemas differ per job opening
Resume attachments are URL-referenced, not embedded
Employer branding pages cannot be migrated
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, tier check, and Client list derivation
We audit the source TeamDoor account (tier, Job count, Candidate count, Talent Pool size against tier cap, user list, per-job stage schemas) and extract every distinct client name referenced in Job Openings. The customer's operations lead approves the canonical Client list. We propose a Zoho Recruit Blueprint that absorbs every distinct TeamDoor stage. If the source is on Basic tier, we require an upgrade to Standard or Pro before scoping proceeds because Basic has no export pathway.
Zoho Recruit workspace configuration and Blueprint setup
We configure the destination Zoho Recruit workspace: at least two Users provisioned per Zoho's migration prerequisites (Setup > Users & Control > Users), the approved Client list created, custom fields added per module (teamdoor_id, original_stage, last_talent_pool_contact, name_quality_flag, original_source_channels), Blueprint built with stages chosen to absorb the TeamDoor stage taxonomy, and Source picklist values added to match TeamDoor channels. The customer's admin signs off schema and Blueprint before bulk load.
Extract from TeamDoor
Pro-tier source: extract via TeamDoor's open API with API-key authentication, pulling Job Openings, Candidates, Talent Pool entries, stage histories, tags, interview notes, email templates, and attachment URLs. Standard-tier source: extract via CSV per module and re-link rows by candidate ID. Resume attachments are downloaded within 48 hours of extraction to minimize URL expiry. Extracted data lands in a staging database where Client derivation, stage normalization, Last Name resolution, and dedup run before any Zoho Recruit writes.
Transform, dedupe, resolve mandatory fields, name CSVs per module
We materialize Client records from the approved canonical list, link Job Openings to Clients, merge Talent Pool entries with active Candidates by email-and-phone fingerprint, and resolve missing Last Name to 'not provided' per Zoho's documented guidance with a quality flag. Tags case-normalize and align with Zoho Recruit Skill Set field. Email template merge syntax rewrites from TeamDoor's {{candidate.name}} to Zoho's {{candidate.firstName}}. Output CSVs are named to align with Zoho Recruit module names (Candidates.csv, Job_Openings.csv, Clients.csv, Contacts.csv, Notes.csv).
Import via Zoho Data Migration tool and API
We use Zoho Recruit's Data Migration tool (Setup > Data Administration > Data Migration) for bulk module imports, completing module-file mapping and field mapping in the UI based on the pre-built mapping spreadsheet. Smaller-grain operations (Hiring Stage history replay, attachment uploads) run via Zoho Recruit's REST API with rate-aware chunking. Blueprint validation rules are temporarily relaxed for migration-context inserts so backdated records do not fail validation. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, Workflow rebuild handoff, and Zia warmup
We freeze TeamDoor writes during the final delta window, run one last extract for any candidates moved during migration, then enable Zoho Recruit as the system of record. We deliver the inventory of what did not migrate (career pages, multi-channel inbox routing, analytics dashboards, stage-trigger automations) so the customer's admin can rebuild Workflows, Blueprint actions, and reports. Zia AI candidate matching typically needs two to four weeks of post-migration activity before recommendations stabilize. We support a one-week hypercare window for reconciliation issues raised by the customer's recruiters.
Platform deep dives
Teamdoor
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 Teamdoor 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
Teamdoor: Not publicly documented.
Data volume sensitivity
Teamdoor 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 Teamdoor to Zoho Recruit migration scoping. Not seeing yours? Book a call.
Walk through your Teamdoor 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 Teamdoor
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.