HRMS migration
Field-level mapping, validation, and rollback between Bullhorn ATS & CRM and Zoho Recruit. We move data and schema; workflows are rebuilt natively in Zoho Recruit.
Bullhorn ATS & CRM
Source
Zoho Recruit
Destination
Compatibility
9 of 13
objects map 1:1 between Bullhorn ATS & CRM and Zoho Recruit.
Complexity
BStandard
Timeline
2-4 weeks
Try the reverse
Overview
Moving from Bullhorn ATS & CRM to Zoho Recruit is a structural migration for staffing agencies seeking lower per-seat costs and a lighter interface. Bullhorn's recruitment-centric data model—Candidates, JobOrders, Clients, Placements, and CandidateList submissions—requires careful remapping to Zoho Recruit's module structure, particularly around the Candidate versus Contact distinction and Bullhorn's recruiting-specific opportunity stages. Bullhorn's standard CSV export does not include resume attachments; we use the REST API file-reference endpoints to retrieve originals and store them in Zoho's document management layer. Placement billing details, including pay/charge rates for contract placements, migrate as custom fields because Zoho Recruit's standard placement object uses a simpler billing model. Bullhorn's ATS Growth edition excludes API access entirely, requiring CSV-based export with a known gap for attachments; we flag this at scoping and confirm the customer's Bullhorn edition before designing the extraction strategy. Workflows, Bullhorn Recruitment Cloud automations, and marketplace integration configurations 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.
Source platform
Bullhorn ATS & CRM platform overview
Scorecard, SWOT, gotchas, and pricing for Bullhorn ATS & CRM.
Destination platform
Zoho Recruit platform overview
Scorecard, SWOT, gotchas, and pricing for Zoho Recruit.
Data migration guide
The complete Zoho Recruit migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Source platform guide
Bullhorn migration guide
Understand the data you're exporting from Bullhorn ATS & CRM before mapping it.
Destination checklist
Zoho Recruit migration checklist
Pre- and post-cutover tasks for moving onto Zoho Recruit.
Source checklist
Bullhorn migration checklist
Exit checklist for unwinding your Bullhorn ATS & CRM 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 Bullhorn ATS & CRM 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.
Bullhorn ATS & CRM
Candidate
Zoho Recruit
Candidate
1:1Bullhorn Candidate records map directly to Zoho Recruit Candidates. The Candidate's parsed resume data—contact information, employment history, skills, education—migrates as typed Zoho Recruit fields. Bullhorn's candidate status (Active, Passive, Interviewing, etc.) maps to Zoho Recruit's Candidate Status picklist. We flag records with missing Last Name because Zoho Recruit requires this field; for records without a last name in Bullhorn, we populate Last Name as 'Not Provided' per Zoho's migration guide before import. If the Bullhorn instance is on ATS Growth edition with no API access, Candidates export via CSV and we supplement resume files using Bullhorn's file-reference API endpoints.
Bullhorn ATS & CRM
Client (ClientCorporation)
Zoho Recruit
Client Corporation
1:1Bullhorn Client records map to Zoho Recruit Client Corporations. Company name, address, industry, revenue, and website fields migrate directly. The primary business contact within the Client record migrates as a linked Contact entity in Zoho. We deduplicate by Client name during import to avoid creating duplicate company records when multiple Bullhorn Contacts share the same Client.
Bullhorn ATS & CRM
Contact
Zoho Recruit
Contact
1:1Bullhorn Contact records—representing both client-side business contacts and candidate references—map to Zoho Recruit Contacts. We separate Contacts by their Bullhorn entity type to avoid contaminating the candidate contact list with client contacts. Contact name, email, phone, title, and client association migrate as standard fields. One Reddit thread noted Zoho Recruit's inability to distinguish candidates from clients as a pain point; we address this by ensuring the module-to-module mapping is explicit and the customer understands the Zoho module separation before cutover.
Bullhorn ATS & CRM
JobOrder
Zoho Recruit
Job
1:1Bullhorn JobOrder records map to Zoho Recruit Jobs. Job title, requirements, status, location, salary range, and owner assignment migrate as standard fields. Bullhorn's JobOrder requirements (formatted text) migrate to Zoho's Job Description field. We map Bullhorn job status (Open, On Hold, Closed Won, Closed Lost) to Zoho's Job Status picklist, with a custom field preserving the original Bullhorn status value for audit.
Bullhorn ATS & CRM
CandidateList (Job Submission)
Zoho Recruit
Candidates (tab within Job)
1:1Bullhorn CandidateList records represent a Candidate's submission to a specific JobOrder, storing the submission status within the recruitment pipeline (e.g., New Submission, Interview, Shortlisted, Rejected). Zoho Recruit manages candidate submissions within the Job record's Candidates tab. We migrate submission status as a custom field on the Job record (e.g., cand_list_status__c) linked back to the Candidate, preserving the per-job pipeline position for each candidate. This requires a join table migration: Candidate ID, Job ID, and submission status migrated together.
Bullhorn ATS & CRM
Placement
Zoho Recruit
Candidate (with custom fields)
lossyBullhorn Placements are the transactional hire records linking Candidate, JobOrder, and Client with pay rate, charge rate, start date, end date, and overtime rules. Zoho Recruit does not have a native placement object with the same billing depth. We migrate Placement records as Candidate records enhanced with custom fields: placement_start_date__c, placement_end_date__c, pay_rate__c, charge_rate__c, overtime_rate__c, and placement_status__c. Split-billing configurations are stored as text in a custom field for admin reference. Contract placement overtime rules are documented separately for manual configuration in Zoho Recruit's billing module post-migration.
Bullhorn ATS & CRM
Opportunity
Zoho Recruit
Job (CRM side) or Custom Pipeline Module
1:1Bullhorn Opportunities represent CRM-level pipeline deals tied to Clients with recruiting-specific stages. Zoho Recruit's Job module handles the recruitment pipeline; however, Bullhorn Opportunities used for business development (non-placement CRM deals) map to a custom Zoho Recruit module we create during schema setup, preserving opportunity name, amount, stage, probability, and close date. We document the customer's Bullhorn opportunity stage names and build a stage remapping table before import, as Bullhorn stages (Interview, Offer, Extended) differ from Zoho's standard ATS pipeline stages.
Bullhorn ATS & CRM
User (Recruiter/Owner)
Zoho Recruit
Staff
1:1Bullhorn User records (recruiters, sales staff, administrators) map to Zoho Recruit Staff. We match by email address during import. Any Bullhorn User without a matching Zoho Staff account is held in a reconciliation queue for the customer's admin to provision before record import resumes. Role and department assignments from Bullhorn migrate as Zoho Staff role assignments. Bullhorn ATS Growth edition caps API subscriptions at 50, which may truncate User list retrieval on large deployments; we chunk and paginate to handle this.
Bullhorn ATS & CRM
Task
Zoho Recruit
Task
1:1Bullhorn Task records map directly to Zoho Recruit Tasks. Task type, subject, due date, status, and owner assignment migrate as standard fields. Tasks are migrated after Users are provisioned in Zoho Recruit to ensure OwnerId references resolve correctly. ATS Growth edition API subscription limits may affect bulk Task retrieval; we paginate and chunk requests accordingly.
Bullhorn ATS & CRM
Attachment (Resume File)
Zoho Recruit
Resume (uploaded document)
1:1Bullhorn resume files, parsed documents, and uploaded communications are stored as separate Attachment entity objects. Bullhorn's standard CSV bulk export does not include attachment references. We retrieve all resume file references via Bullhorn's REST API file endpoints and upload them to Zoho Recruit's document management layer, associating each file with the corresponding Candidate record. If the source Bullhorn instance is on ATS Growth edition with no API access, attachment migration is not possible through automated means; we flag this gap during scoping and provide a manual retrieval checklist for the customer.
Bullhorn ATS & CRM
Custom Object (up to 10 on Front Office; 2 on ATS)
Zoho Recruit
Custom Fields (Standard/Professional) or Custom Modules (Enterprise)
lossyBullhorn Custom Objects extend core entities with up to 55 fields each. ATS editions are limited to 2 searchable custom objects per entity; Front Office Growth and Enterprise allow 10. We audit custom object usage during scoping and rationalize field-heavy custom objects before migration. Bullhorn custom object data migrates to Zoho Recruit custom fields (Standard and Professional tiers support up to 100 custom fields per module) or Zoho Recruit custom modules (Enterprise). Each custom object field is type-mapped to the nearest Zoho field type (text, date, picklist, number, etc.) before import.
Bullhorn ATS & CRM
Candidate (parsed resume fields)
Zoho Recruit
Candidate (structured fields)
lossyBullhorn's resume parser extracts contact details, work history, and skills into structured Candidate fields. Parse quality varies by resume format—non-standard layouts, scanned PDFs, and non-English documents frequently produce incomplete or mis-assigned fields. We run post-migration validation against the parsed fields, flag records with low field-completion rates, and restore data from the original resume file reference where parse data is missing. The original parsed field values are preserved alongside the source resume file so that incomplete parses can be corrected manually.
Bullhorn ATS & CRM
Placement (split-billing configuration)
Zoho Recruit
Candidate (billing fields) or custom Billing module
lossyBullhorn's split-billing model natively supports multi-party pay and charge rate configurations for contract staffing. Zoho Recruit's standard placement model does not include native split-billing. We migrate split-billing configuration as a structured text block in a custom field (split_billing_config__c) on the Candidate record, and separately document the split-party names, rates, and percentage allocations for admin-side manual entry into Zoho's billing or invoicing module. This documentation is delivered as part of the post-migration handoff.
| Bullhorn ATS & CRM | Zoho Recruit | Compatibility | |
|---|---|---|---|
| Candidate | Candidate1:1 | Fully supported | |
| Client (ClientCorporation) | Client Corporation1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| JobOrder | Job1:1 | Fully supported | |
| CandidateList (Job Submission) | Candidates (tab within Job)1:1 | Fully supported | |
| Placement | Candidate (with custom fields)lossy | Fully supported | |
| Opportunity | Job (CRM side) or Custom Pipeline Module1:1 | Fully supported | |
| User (Recruiter/Owner) | Staff1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Attachment (Resume File) | Resume (uploaded document)1:1 | Fully supported | |
| Custom Object (up to 10 on Front Office; 2 on ATS) | Custom Fields (Standard/Professional) or Custom Modules (Enterprise)lossy | Fully supported | |
| Candidate (parsed resume fields) | Candidate (structured fields)lossy | Fully supported | |
| Placement (split-billing configuration) | Candidate (billing fields) or custom Billing 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.
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
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
Edition and scoping audit
We audit the source Bullhorn instance to confirm the edition tier (ATS Growth, ATS, Corporate, Front Office), the available API surface, and the full object inventory including Candidates, JobOrders, Clients, Contacts, Opportunities, Placements, CandidateLists, Tasks, and any active custom objects. We identify which Bullhorn objects have API access versus which require CSV extraction, and we document the attachment gap for each extraction method. This audit output is a written migration scope document covering record counts per object, custom field inventory, and an explicit list of any objects that will require manual intervention or a known data gap at Zoho Recruit.
Schema design and mandatory field prep
We design the destination Zoho Recruit schema before any data moves. This includes creating any custom fields needed for placement billing data, candidate submission status, and Bullhorn stage history. We apply Zoho's mandatory Last Name requirement by auditing all Candidate records for name completeness and populating placeholder values where last names are absent. We set up the custom Zoho modules for Bullhorn Opportunity equivalents and configure custom fields for split-billing documentation. All schema work is validated in Zoho's sandbox or trial environment before production import begins.
Attachment retrieval and file preparation
We retrieve all Bullhorn attachment file references via the Bullhorn REST API file endpoints. Each attachment is associated with its parent entity (Candidate, Client, JobOrder, Placement) and stored locally for re-association during Zoho import. Bullhorn ATS Growth editions are flagged during scoping; for these instances, we provide a manual attachment retrieval checklist because no API path exists for automated file retrieval. For all other editions, we verify file integrity (format, size, encoding) before upload to Zoho Recruit's document layer.
Staging migration and reconciliation
We run a full migration into a Zoho Recruit staging environment using production-like record volumes. The customer reconciles record counts (Candidates in, Clients in, Jobs in, Placements in), spot-checks 25-50 random records against the Bullhorn source for field-level accuracy, and reviews the attachment association on a sample of Candidate records. Stage mapping accuracy for Bullhorn Opportunities is verified against the stage remapping table. Any mapping corrections, missing fields, or data quality issues are resolved at this stage before the production migration begins.
Production migration in dependency order
We run production migration in the correct dependency sequence. Users (Staff) are validated first to ensure all OwnerId references resolve. Client Corporations are imported before Contacts so that the client association is satisfied at import time. Candidates are imported with Last Name placeholders applied. JobOrders (Jobs) are imported next with owner assignment. CandidateList submission status records are migrated as join-table entries linking Candidate to Job with the per-submission status. Placements migrate as Candidate records with billing custom fields. Opportunities and Bullhorn custom object data follow. Attachments are uploaded and associated last, once all parent records have stable Zoho IDs.
Cutover, validation, and workflow rebuild handoff
We freeze Bullhorn writes during the cutover window, run a final delta migration for any records modified during the migration period, then enable Zoho Recruit as the system of record. We deliver a written inventory of Bullhorn workflows, Recruitment Cloud automations, and marketplace integration configurations that require manual rebuild in Zoho Recruit Blueprint and workflow rules. Placement split-billing configurations are documented separately. We support a one-week post-cutover window for reconciliation of any data issues reported by the recruiting team. We do not rebuild Bullhorn workflows as Zoho Blueprint rules inside the migration scope; that is a separate engagement.
Platform deep dives
Bullhorn ATS & CRM
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 Bullhorn ATS & CRM 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
Bullhorn ATS & CRM: 1,500 req/min, 100,000 calls/month, 50 concurrent sessions, 50 subscriptions; ATS Growth edition has NO API access.
Data volume sensitivity
Bullhorn ATS & CRM 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 Bullhorn ATS & CRM to Zoho Recruit migration scoping. Not seeing yours? Book a call.
Walk through your Bullhorn ATS & CRM 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 Bullhorn ATS & CRM
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.