HRMS migration
Field-level mapping, validation, and rollback between Jobtoolz and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Jobtoolz
Source
Bullhorn ATS & CRM
Destination
Compatibility
8 of 12
objects map 1:1 between Jobtoolz and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Jobtoolz does not expose its core ATS objects (Candidates, Applications, Vacancies) through a public REST API — only employer branding content is API-accessible. This fundamentally shapes the migration approach: we work from the built-in CSV export function on the candidate list view, coordinate chunked exports by date range or pipeline stage for large candidate pools, and cross-reference record counts against the in-app dashboard before mapping begins. Vacancy-to-JobOrder and Application-to-JobSubmission relationships resolve at import time in Bullhorn. Custom pipeline stages from Jobtoolz are tenant-specific and require an explicit stage mapping table approved by the customer before data lands. We do not migrate Bullhorn automations, saved searches, or employer branding templates as code — these are documented for the customer's admin to rebuild. Bullhorn's Custom Import tool supports English characters only, which we enforce on all transformed CSV payloads.
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 Jobtoolz 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.
Jobtoolz
Candidate
Bullhorn ATS & CRM
Candidate
1:1Jobtoolz Candidate records export to CSV via the built-in list view export function. We map standard fields (name, email, phone, location, current_title, current_company) to Bullhorn Candidate entity fields. Custom candidate fields in Jobtoolz map to Bullhorn custom fields on the Candidate entity, with type mapping applied (text to text, date to date, picklist to picklist). Bullhorn requires the migration user to have Candidate-level access; any field that exceeds Bullhorn's character limits is truncated and flagged in the reconciliation report.
Jobtoolz
Candidate (for sourcing/leads)
Bullhorn ATS & CRM
Lead
1:1Candidates that originated from job board applications or cold sourcing in Jobtoolz may be better represented as Bullhorn Leads rather than Candidates if the organization uses Bullhorn's Lead-to-Candidate conversion workflow. We preserve the original source (job_board, referral, linkedin, direct) in Bullhorn's LeadSource field and recommend the split during scoping based on the customer's intake process. If all candidates are sourced applicants, Lead mapping is skipped and all records land as Bullhorn Candidates.
Jobtoolz
Application
Bullhorn ATS & CRM
JobSubmission
1:1Jobtoolz Application records link a Candidate to a Vacancy and store stage history and submission date. We map Application status to the Bullhorn JobSubmission status (New, Forwarded, Interview, Offer, Placement, Rejected), with the original Jobtoolz stage name preserved in a custom field jtz_original_stage__c. JobSubmission requires a parent JobOrder (from the Vacancy mapping) and a parent Candidate, so Vacancy records must import before Applications to satisfy the foreign key.
Jobtoolz
Vacancy
Bullhorn ATS & CRM
JobOrder
1:1Jobtoolz Vacancy objects map to Bullhorn JobOrder. Standard fields (title, department, location, employment_type, description, salary_min, salary_max) map to Bullhorn JobOrder equivalents. The Vacancy status (active, paused, closed, draft) maps to JobOrder status with Bullhorn's published status values (Active, On Hold, Cancelled, Closed). Custom vacancy fields in Jobtoolz map to Bullhorn custom fields on JobOrder, configured during the Bullhorn schema setup phase.
Jobtoolz
Pipeline Stage
Bullhorn ATS & CRM
Custom Field or Stage Configuration
lossyJobtoolz allows fully custom stage names and counts per vacancy or globally, with no enforced schema. We capture the complete stage sequence during scoping, document it in a stage mapping table, and reconstruct it in Bullhorn as either a custom Candidate status picklist (for global stages) or as stage values on the JobSubmission workflow (for vacancy-specific stages). Bullhorn's standard JobSubmission workflow has fixed status values; custom stages that exceed Bullhorn's allowed count are collapsed into the nearest equivalent and flagged in the mapping documentation for customer approval.
Jobtoolz
Custom Candidate Field
Bullhorn ATS & CRM
Custom Field
lossyJobtoolz supports custom fields on candidate records. We export the full custom field schema (field name, type, values) during discovery and recreate equivalent custom fields on Bullhorn Candidate using Admin > Field Mappings. Bullhorn imposes a finite limit on standard custom fields per entity; if the customer's custom field count approaches this limit, we recommend migrating to Bullhorn Custom Objects (2 on ATS Growth, 10 on Front Office/Enterprise) before field-heavy migrations proceed.
Jobtoolz
Document and Attachment
Bullhorn ATS & CRM
ContentDocument
1:1Resume files, cover letters, and attachments exported from Jobtoolz via the authenticated session are re-attached to the corresponding Bullhorn Candidate record via ContentDocument and ContentDocumentLink. We preserve the original file name and MIME type. Bullhorn's inline resume display renders common formats (PDF, DOC, DOCX) directly in the candidate slideout. Attachments are linked at the Candidate level; if a document is associated with both a Candidate and a Vacancy in Jobtoolz, it is attached to the Candidate record with the JobSubmission relationship noted in the file description field.
Jobtoolz
User / Team Member
Bullhorn ATS & CRM
User
1:1Jobtoolz team member accounts map to Bullhorn User records. We match by email address. Any Jobtoolz user without a corresponding Bullhorn User goes into a reconciliation queue for the customer's Bullhorn admin to provision. Role and permission structures differ significantly — Jobtoolz's role model maps to Bullhorn's permission set and profile model, and we assign default recruiter permissions with a documented list of any accounts requiring elevated Bullhorn access (admin, billing, reporting) for manual review.
Jobtoolz
Employer Branding Content
Bullhorn ATS & CRM
JobOrder Description and Career Portal
lossyJobtoolz's careers site content and employer branding assets are accessed via the Jobtoolz Content API (the only fully authenticated API endpoint available). We export careers page text, job ad templates, and company branding as structured content. Bullhorn's career portal and JobOrder description fields are the destination for this content. Full careers site migration (URL redirects, branded templates) is out of scope for the ATS migration; we deliver the content package and a separate careers site migration handoff document.
Jobtoolz
Vacancy Department
Bullhorn ATS & CRM
JobOrder Business Sector
1:1Jobtoolz department assignments on Vacancies map to Bullhorn JobOrder BusinessSector field or a custom picklist field depending on the department count. Departments that do not map to Bullhorn standard values become custom picklist entries created during the schema setup phase.
Jobtoolz
Application Source
Bullhorn ATS & CRM
LeadSource or Custom Source Field
1:1Jobtoolz tracks how each Application entered the system (job board, careers site, referral, direct). We map the source to Bullhorn's standard LeadSource picklist values where a direct equivalent exists. Non-standard source values in Jobtoolz migrate to a custom text or picklist field on JobSubmission for reporting continuity.
Jobtoolz
Vacancy Location
Bullhorn ATS & CRM
JobOrder City / State / Country
lossyJobtoolz stores vacancy location as free text or structured fields depending on configuration. We parse the location into Bullhorn's JobOrder address components (address city, address state, address country) for each JobOrder. Locations that cannot be cleanly parsed become free-text JobOrder City entries with a flag for manual review. Bullhorn's geo-mapping and map-based search features rely on structured address fields, so accurate parsing directly affects these feature functions.
| Jobtoolz | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Candidate | Candidate1:1 | Fully supported | |
| Candidate (for sourcing/leads) | Lead1:1 | Fully supported | |
| Application | JobSubmission1:1 | Fully supported | |
| Vacancy | JobOrder1:1 | Fully supported | |
| Pipeline Stage | Custom Field or Stage Configurationlossy | Fully supported | |
| Custom Candidate Field | Custom Fieldlossy | Fully supported | |
| Document and Attachment | ContentDocument1:1 | Fully supported | |
| User / Team Member | User1:1 | Fully supported | |
| Employer Branding Content | JobOrder Description and Career Portallossy | Fully supported | |
| Vacancy Department | JobOrder Business Sector1:1 | Fully supported | |
| Application Source | LeadSource or Custom Source Field1:1 | Fully supported | |
| Vacancy Location | JobOrder City / State / Countrylossy | 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.
Jobtoolz gotchas
No bulk ATS data API forces manual CSV exports for migration scoping
Custom pipeline stages lack a standard schema for destination mapping
HireHive acquisition may introduce schema divergence in future
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 CSV export coordination
We audit the Jobtoolz portal with the customer present to capture candidate record counts by date range and pipeline stage, identify all active Vacancies and their custom field sets, enumerate custom candidate fields, and confirm the number of team member accounts. Because Jobtoolz has no bulk ATS API, we coordinate the first CSV export with the customer's Jobtoolz admin on a discovery call, verify the export matches the in-app candidate count, and agree on a chunking strategy (by date range or stage) for large candidate pools before the full export plan is finalized. We also confirm the customer's Bullhorn edition, available API access, and existing custom field capacity.
Schema design and stage mapping documentation
We design the Bullhorn destination schema based on the discovered Jobtoolz field inventory. This includes creating custom fields on Bullhorn Candidate, JobOrder, and JobSubmission entities (within the edition's limits), building the pipeline stage mapping table for customer approval, and documenting any Vacancy fields that exceed Bullhorn's allowed field count per entity. The stage mapping table is the critical deliverable before the migration runs: it explicitly documents which Jobtoolz stages collapse into which Bullhorn stages and why, so the customer can approve or adjust before data lands.
Sandbox migration and reconciliation
We run a full migration into a Bullhorn Sandbox (Full Copy or Partial Copy) using the actual exported data volume. The customer's staffing operations lead reconciles record counts (Candidates in, JobOrders in, JobSubmissions in), spot-checks 25-50 records against the Jobtoolz source, and reviews the stage mapping output. Any field mismatches, missing values, or stage collapses identified in sandbox are corrected in the transformation scripts before production migration begins. No production data moves until sandbox sign-off is received.
Full CSV export and transform
We coordinate the complete CSV export from Jobtoolz in production, applying the chunking strategy agreed in discovery. Each export file is validated for record count, character encoding (ASCII cleaning for Bullhorn compatibility), and required field presence. We transform the data in the staging environment: Vacancy fields map to JobOrder, Application records attach to their parent Vacancy by Jobtoolz vacancy ID, and Candidate records link to JobSubmissions via the Application mapping. Custom field values are type-checked against Bullhorn field types and any format mismatches are flagged in a pre-import report.
Production migration in dependency order
Production migration runs in record-dependency order: JobOrders (from Vacancies) import first because JobSubmissions require a parent Job reference; Candidates import second; JobSubmissions import third with Candidate ID and JobOrder ID resolved; Documents and attachments import last and are linked via ContentDocumentLink to the parent Candidate record. Each phase emits a row-count reconciliation report showing records inserted, updated, skipped, and rejected. Bullhorn's import job throttling is respected with batch sizes that avoid timeout errors on large record sets.
Cutover, validation, and automation handoff
We freeze Jobtoolz writes during cutover, run a final delta migration of any records added or modified during the migration window, then enable Bullhorn as the system of record. We deliver the stage mapping documentation, the automation and workflow inventory (for the customer's Bullhorn admin to rebuild in Bullhorn Automation), and a CSV of any records that were excluded with reasons. We support a five-business-day hypercare window to resolve reconciliation issues raised by the customer's recruiting team. We do not rebuild Jobtoolz workflows or automations inside the migration scope; those are documented separately for the customer's Bullhorn admin.
Platform deep dives
Jobtoolz
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between Jobtoolz and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Jobtoolz and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between Jobtoolz and Bullhorn ATS & CRM.
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
Jobtoolz: Not publicly documented.
Data volume sensitivity
Jobtoolz 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 Jobtoolz to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Jobtoolz 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 Jobtoolz
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.