HRMS migration
Field-level mapping, validation, and rollback between Zoho Recruit and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Zoho Recruit
Source
Bullhorn ATS & CRM
Destination
Compatibility
11 of 14
objects map 1:1 between Zoho Recruit and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
5-8 weeks
Try the reverse
Overview
Moving from Zoho Recruit to Bullhorn is a migration from a candidate-centric ATS built for both agencies and corporate HR into Bullhorn's recruitment-CRM architecture designed specifically for staffing agencies. Zoho Recruit stores employment history, education, and interview rounds as subforms inside the Candidate record; Bullhorn separates these as candidate custom fields, candidate notes, or as part of the JobSubmission and Placement objects. We flatten Zoho subforms during the transform phase, creating matching custom fields in Bullhorn and linking subform rows to the parent Candidate via structured notes where Bullhorn's schema does not support a native equivalent. Zoho's daily API rate limit of 30,000 requests per org (capped at 1,000 per user per day on Enterprise) requires chunked batch processing, and the attachment folder hierarchy must be reconstructed under Bullhorn's /documents/Candidate/ and /documents/JobOrder/ paths before re-association. Workflows, assignment rules, Blueprint automation, and career site configuration do not migrate; we deliver a written inventory for the customer's admin to rebuild in Bullhorn.
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.
Source platform
Zoho Recruit platform overview
Scorecard, SWOT, gotchas, and pricing for Zoho Recruit.
Destination platform
Bullhorn ATS & CRM platform overview
Scorecard, SWOT, gotchas, and pricing for Bullhorn ATS & CRM.
Data migration guide
The complete Bullhorn migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Source platform guide
Zoho Recruit migration guide
Understand the data you're exporting from Zoho Recruit before mapping it.
Destination checklist
Bullhorn migration checklist
Pre- and post-cutover tasks for moving onto Bullhorn ATS & CRM.
Source checklist
Zoho Recruit migration checklist
Exit checklist for unwinding your Zoho Recruit setup cleanly.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Zoho Recruit object lands in Bullhorn ATS & CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Zoho Recruit
Candidate
Bullhorn ATS & CRM
Candidate
1:1Zoho Recruit Candidates map directly to Bullhorn Candidate records. Standard fields (First Name, Last Name, Email, Phone, Skills, Status) translate to Bullhorn's firstName, lastName, email, phone, skillIDs, and status. Zoho Candidate Status values (New, Active, On Hold, Dead, Joined) map to Bullhorn's Candidate status enumerations. Zoho's subforms—Employment History, Education, Certifications—are the primary transformation challenge: we flatten these into Bullhorn custom fields on the Candidate object or attach them as structured Candidate Note records during the transform phase. Custom fields require a Professional or Enterprise Bullhorn tier; we provision matching custom fields before candidate import.
Zoho Recruit
Client (Staffing Agencies)
Bullhorn ATS & CRM
ClientCorporation
1:1Zoho Recruit's Clients module (agency-specific) maps to Bullhorn's ClientCorporation entity. Standard fields including Client Name, Website, Industry, and Address map to ClientCorporation fields directly. Client-specific custom fields (fee structures, preferred categories, tier classifications) migrate to Bullhorn custom fields on ClientCorporation. We create the ClientCorporation records first in the dependency order so that Candidate-to-Client lookup relationships can be resolved at insert time rather than through a separate update pass.
Zoho Recruit
Contact
Bullhorn ATS & CRM
Contact
1:1Zoho Recruit Contacts (hiring managers, client representatives) map to Bullhorn Contact records linked to the corresponding ClientCorporation. First Name, Last Name, Email, Phone, Title, and Department migrate directly. The Zoho Contact-to-Client lookup relationship maps to Bullhorn's Contact.ClientCorporationId reference. Custom fields on Zoho Contacts (Extended certifications, Preferred communication method) migrate to Bullhorn Contact custom fields. Any Zoho Contact without a corresponding ClientCorporation is created as a standalone Contact; we flag these during scoping for customer review.
Zoho Recruit
Job Opening
Bullhorn ATS & CRM
JobOrder
1:1Zoho Recruit Job Openings map to Bullhorn JobOrder records. Title, Description, Employment Type, and Address map to JobOrder fields directly. Zoho pipeline stages map to Bullhorn JobOrder status values (Open, Pending, Closed, Cancelled). We configure Bullhorn JobOrder status values before migration so that the stage translation is deterministic. Job Order custom fields migrate to Bullhorn JobOrder custom fields. Zoho's job board posting history does not migrate; we document the posting URLs and boards for the customer to reconfigure in Bullhorn's job distribution settings.
Zoho Recruit
Interview
Bullhorn ATS & CRM
JobSubmission + Candidate Note
1:manyZoho Recruit Interviews are subforms within the Candidate record with scheduled time, interview type, interviewer, and feedback fields. Bullhorn separates interview history into the JobSubmission object (which tracks a candidate's journey through a specific job order) and candidate notes for qualitative feedback. We transform each Zoho interview subform row into a Bullhorn JobSubmission record for the associated JobOrder, then attach interview feedback as a Candidate Note linked to the submission. Interviewer name and interview type (Phone Screen, Technical, Onsite, Panel) map to JobSubmission custom fields or note content.
Zoho Recruit
Note
Bullhorn ATS & CRM
Note
1:1Zoho Recruit Notes attached to Candidates, Job Openings, Clients, and Contacts migrate to Bullhorn Note records linked via ContentDocumentLink to the corresponding Bullhorn entity. Plain-text notes migrate as-is. Rich-text notes preserve HTML formatting where the destination Bullhorn instance supports it. We preserve the original note author and creation timestamp in Bullhorn note metadata. Notes attached to Zoho subforms (Employment History, Education) that we flatten into candidate custom fields are linked back to the candidate via structured note content referencing the flattened field data.
Zoho Recruit
Task
Bullhorn ATS & CRM
Task
1:1Zoho Recruit Tasks map to Bullhorn Task records with Status, Priority, Subject, Due Date, and assigned Owner preserved. Task type discriminator (General, Screening, Submission Follow-up) maps to Bullhorn Task custom fields or category tags. Zoho's assignment rules are not migrated; we preserve the task owner by resolving Zoho Owner email to Bullhorn User ID during the Owner reconciliation phase. Tasks without a matching Bullhorn User are assigned to the migration admin for manual reassignment.
Zoho Recruit
Event
Bullhorn ATS & CRM
Event
1:1Zoho Recruit Events (calendar-based meetings and interviews) map to Bullhorn Event records. Start Date/Time, End Date/Time, Location, Description, and attendees migrate directly. We link Bullhorn Events to the corresponding Candidate and JobOrder via the WhatId reference. Events without a parent JobOrder (general recruitment meetings) are created without a WhatId and linked to the primary recruiter's User record. All-day event flags and event series (recurring meetings) are not preserved; we migrate individual event instances only.
Zoho Recruit
Call Log
Bullhorn ATS & CRM
Task (Call subtype)
1:1Zoho Recruit Call Logs map to Bullhorn Task records with TaskSubtype = Call. Call duration, disposition, phone number dialed, and caller type (Inbound/Outbound) migrate to Bullhorn Task custom fields. Call recording URLs stored in Zoho are preserved as Bullhorn ContentDocument records linked via ContentDocumentLink to the Task. Call log timestamps are preserved in the Activity Date field to maintain the candidate engagement timeline order.
Zoho Recruit
Attachment
Bullhorn ATS & CRM
ContentDocument
1:1Zoho Recruit attachments require exact folder hierarchy preservation: /Attachments/Candidates/[candidate_id]/, /Attachments/JobOpenings/[job_id]/, /Attachments/Clients/[client_id]/. Bullhorn uses ContentDocument with ContentDocumentLink to the parent entity. We reconstruct the Zoho folder tree under Bullhorn's document storage path during pre-flight preparation, then map each file to the corresponding Bullhorn Candidate, JobOrder, ClientCorporation, or Contact record. Any attachment with an unresolvable parent record is held in a reconciliation queue. Resume files attached to Candidates are prioritized and mapped to the Candidate resume field where Bullhorn's data model supports it.
Zoho Recruit
User
Bullhorn ATS & CRM
User
1:1Zoho Recruit Users (recruiters, admins, hiring managers) map to Bullhorn User records. We match by email address as the dedupe key. Zoho's 2,000-record User import cap applies to Zoho's native migration tool; FlitStack AI handles larger user counts by migrating the primary Owner records (those actively assigned to Candidates, Jobs, and Clients) as Bullhorn Users and associating any remaining historical assignees as Candidate custom field values or Contact associations, preserving the attribution chain without triggering any cap. Role and profile assignments require Professional or Enterprise Bullhorn and are mapped from Zoho's role structure.
Zoho Recruit
Campaign
Bullhorn ATS & CRM
JobOrder / Candidate Tag
1:manyZoho Recruit Campaigns (sourcing initiatives linked to job boards or specific job openings) map to Bullhorn JobOrder records when the campaign has a direct job focus, or to Candidate tags for sourcing-wide campaigns. Campaign fields (Name, Type, Start Date, Budget) that have no Bullhorn native equivalent are stored as custom fields on the associated JobOrder or as a Campaign custom field on Candidate. The customer's Bullhorn admin reviews the campaign mapping during sandbox validation and can create a Campaign custom object in Bullhorn CRM if reporting by sourcing initiative is required.
Zoho Recruit
Custom Field
Bullhorn ATS & CRM
Custom Field
lossyZoho Recruit custom fields (available in Professional and Enterprise tiers only) are not available in Free or Standard editions, which means some records may have no custom field data to migrate. We inspect the source account's Zoho edition during discovery. For paid-tier accounts with custom fields, we create matching Bullhorn custom fields on the appropriate entity before importing records, using the Zoho field type to determine the Bullhorn field type (text, picklist, number, date, checkbox). Lookup fields in Zoho require a separate migration phase to resolve the referenced record ID to the Bullhorn equivalent ID at migration time.
Zoho Recruit
Assessment
Bullhorn ATS & CRM
Candidate Note / Custom Field
1:1Zoho Recruit Assessment results attached to Candidates (pre-screening scores, skills assessments, psychometric results) do not have a direct Bullhorn native equivalent. We migrate assessment results as structured Candidate Note records with the assessment name, date, score, and evaluator in a consistent format, or to Bullhorn custom fields on the Candidate object if the assessment output is a numeric score or pass/fail flag. Assessment question banks and scoring rubrics require manual recreation in Bullhorn; we document the assessment schema from Zoho for the customer's Bullhorn admin to reference.
| Zoho Recruit | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Candidate | Candidate1:1 | Fully supported | |
| Client (Staffing Agencies) | ClientCorporation1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Job Opening | JobOrder1:1 | Fully supported | |
| Interview | JobSubmission + Candidate Note1:many | Fully supported | |
| Note | Note1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Event | Event1:1 | Fully supported | |
| Call Log | Task (Call subtype)1:1 | Fully supported | |
| Attachment | ContentDocument1:1 | Fully supported | |
| User | User1:1 | Fully supported | |
| Campaign | JobOrder / Candidate Tag1:many | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| Assessment | Candidate Note / Custom Field1: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.
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
Bullhorn ATS & CRM gotchas
ATS Growth edition has no API access
Attachments excluded from CSV bulk exports
Custom Object limits vary sharply by edition
Opportunity pipeline stages are recruitment-specific
Resume parse quality varies by document format
Pair-specific challenges
Migration approach
Discovery and scoping
We audit the source Zoho Recruit account across edition (Free/Standard/Professional/Enterprise), module usage, custom field inventory, subform structures (Employment History, Education, Certifications per Candidate), attachment count and folder depth, pipeline stage definitions, and active workflow and Blueprint rules. We pair this with a Bullhorn tier review (Growth, Pro, Premium) and document the Bullhorn custom field schema required to hold Zoho subform data. The discovery output is a written migration scope, a subform flattening specification, and a Bullhorn edition recommendation.
Schema design and custom field provisioning
We design the destination Bullhorn schema before any data moves. This includes provisioning custom fields on Candidate, JobOrder, ClientCorporation, and Contact entities to hold Zoho subform data and any Zoho custom fields from paid tiers. For each subform type, we define whether it becomes Bullhorn custom fields (structured data) or linked Note records (narrative data). We configure JobOrder status values to match Zoho pipeline stages. Bullhorn custom field provisioning is deployed to a Sandbox org first for validation before production configuration.
Sandbox migration and reconciliation
We run a full migration into a Bullhorn Sandbox using production-like data volume and sample subform records. The customer's recruiting operations lead reviews record counts, spot-checks 25-50 random candidate records against the Zoho source (verifying name, email, employment history custom fields, and interview notes), and validates attachment re-association by opening 5-10 files per entity type. Any mapping corrections—particularly subform flattening decisions and custom field type assignments—happen in Sandbox, not in production.
Owner reconciliation and User provisioning
We extract every distinct Zoho User referenced as an Owner on Candidate, JobOpening, Interview, and Note records and match by email against the Bullhorn destination org's User table. Any Zoho User without a matching Bullhorn User is placed in a reconciliation queue. The customer's Bullhorn admin provisions missing Users (active or inactive based on whether the original Zoho user is still active). Migration cannot proceed past the User step because OwnerId references on Bullhorn records must be satisfied at insert time.
Production migration in dependency order
We run production migration in dependency sequence: ClientCorporation records first (from Zoho Clients), then Contact records with ClientCorporationId resolved, then JobOrder records (from Zoho Job Openings), then Candidate records with subform data flattened into Bullhorn custom fields and structured notes, then JobSubmission records (from Zoho Interview subforms), then Notes, Tasks, Events, and Calls, then Attachments with folder hierarchy reconstructed under Bullhorn's document model, then Campaign records, then Assessment results as custom fields or structured notes. Each phase emits a row-count reconciliation report before the next begins.
Cutover, validation, and automation rebuild handoff
We freeze writes in Zoho Recruit during cutover and run a final delta migration for any records modified during the production migration window. We then enable Bullhorn as the system of record and perform a post-migration reconciliation comparing record counts and attachment linkage rates against the Zoho source. We deliver a written automation inventory documenting every Zoho Workflow, Blueprint rule, and Assignment Rule with its trigger, conditions, actions, and recommended Bullhorn Automation equivalent. We support a one-week hypercare window for reconciliation issues. We do not rebuild Zoho Workflows or automations as Bullhorn Automation inside the migration scope.
Platform deep dives
Zoho Recruit
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
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 Zoho Recruit and Bullhorn ATS & CRM.
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
Zoho Recruit: 500–30,000 requests/day by org edition; per-user ceiling of 250–1,000 requests/day (whichever is lower).
Data volume sensitivity
Zoho Recruit 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 Zoho Recruit to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Zoho Recruit to Bullhorn ATS & CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Zoho Recruit
Other ways to arrive at Bullhorn ATS & CRM
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.