HRMS migration
Field-level mapping, validation, and rollback between Smart Hire and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Smart Hire
Source
Bullhorn ATS & CRM
Destination
Compatibility
7 of 12
objects map 1:1 between Smart Hire and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Smart Hire to Bullhorn is a structured migration from a CSV-first AI screening platform to an API-first ATS and CRM built for staffing agencies. Smart Hire organizes hiring around Candidates, Job Openings, Screening Sessions, and Assessment Results, with exports delivered as CSV downloads rather than a documented REST endpoint. We automate that CSV extraction, normalize assessment scores to the destination's custom field schema, and reconstruct the candidate-to-job associations that span multiple export files. Bullhorn's Custom Objects require pre-configuration via a support ticket and schema spreadsheet before any assessment or screening data loads; we coordinate that setup during scoping. Workflows, automations, and custom career site configurations do not migrate; we deliver a written inventory of these for your admin to rebuild in Bullhorn's workflow builder.
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 Smart Hire 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.
Smart Hire
Candidate
Bullhorn ATS & CRM
Candidate
1:1Smart Hire Candidate records map to Bullhorn Candidate with name, email, phone, address, work history, education, and skills preserved. We parse the main profile CSV and any linked screening session records, then write Candidate records via Bullhorn REST API. The candidate's primary email becomes the dedupe key. Custom properties export as free-text key-value pairs in Smart Hire; we detect type mismatches (dates stored as strings, booleans as yes/no text) during profiling and apply type-coercion before insert.
Smart Hire
Job Opening
Bullhorn ATS & CRM
JobOrder
1:1Smart Hire Job Openings map to Bullhorn JobOrder with title, department, location, employment type, and description. We preserve the original job ID as a custom field for cross-reference. Pipeline stages (Applied, Screening, Interview, Offer, Hired) from Smart Hire map to Bullhorn JobOrder status values, with the stage ordering and naming preserved per job.
Smart Hire
Screening Session
Bullhorn ATS & CRM
Custom Object or Candidate custom fields
lossySmart Hire Screening Sessions link a candidate to a specific assessment round. Bullhorn has no native screening session object, so we provision a Custom Object via Bullhorn Support ticket if the customer is on Bullhorn ATS or Enterprise tier (ATS Growth does not support Custom Objects). Each screening session becomes a Custom Object instance linked to the Candidate record, capturing session date, assessment type, and status. If the edition does not support Custom Objects, we attach session metadata as custom fields on the Candidate record.
Smart Hire
Psychometric Assessment
Bullhorn ATS & CRM
Custom Object fields
1:1Smart Hire stores assessment scores and competency rankings in internal scale format. Bullhorn does not have a native psychometric store; we map raw scores, percentile ranks, and competency ratings to Bullhorn Custom Object fields. Score normalization requires us to validate score ranges during pre-migration profiling because Smart Hire's scale may not match any standardized benchmark. We preserve the raw numeric value and the scale label as separate fields rather than converting to a non-equivalent Bullhorn scale.
Smart Hire
Candidate-Application association
Bullhorn ATS & CRM
JobSubmission
1:1Smart Hire stores candidate-to-job associations as foreign key IDs in the candidate and job export files. When these span multiple CSV files, the association can fragment. We reconstruct the link by matching candidate IDs to application records during the transformation phase, then write Bullhorn JobSubmission records that link the Candidate and JobOrder. A reconciliation step confirms every migrated candidate is attached to at least one job opening before cutover.
Smart Hire
Attachment (resume, documents)
Bullhorn ATS & CRM
Candidate.attachments or ContentDocument
1:1Smart Hire resumes and supporting documents export as downloadable files linked to candidate records. We export these as binary assets, map file type and content to Bullhorn's attachment handling, and attach them to the corresponding Candidate record via ContentDocumentLink. If the resume content was parsed into Smart Hire's structured fields (rather than stored as a file), we ensure that parsed data is reflected in the Candidate's description or skills fields.
Smart Hire
User (hiring manager, recruiter)
Bullhorn ATS & CRM
User
1:1Smart Hire user accounts with role assignments map to Bullhorn User records. We resolve users by email match against the Bullhorn destination org. Any Smart Hire user without a matching Bullhorn User goes to a reconciliation queue for your admin to provision before record import resumes. Role terminology differs between platforms; Smart Hire's recruiter role maps to Bullhorn's internal recruiter assignment field.
Smart Hire
Pipeline Stage configuration
Bullhorn ATS & CRM
JobOrder status configuration
lossySmart Hire's per-job pipeline stages (Applied, Screening, Interview, Offer, Hired) map to Bullhorn JobOrder status values. We extract the full stage configuration from Smart Hire including stage names, ordering, and any custom stage definitions, then configure matching status values in Bullhorn. If Smart Hire has stages not present in Bullhorn's standard list, we create custom status values.
Smart Hire
Custom Properties (candidate)
Bullhorn ATS & CRM
Candidate custom fields or Custom Object fields
lossySmart Hire custom fields on candidate records export as free-text key-value pairs. During profiling we detect type mismatches (dates stored as strings, numeric IDs stored as text) and apply coercion. Custom fields are mapped to Bullhorn Candidate custom fields if the destination supports them, or to Custom Object fields on the Candidate entity. Field names from Smart Hire are preserved as labels with API-safe names generated for Bullhorn.
Smart Hire
Custom Properties (job)
Bullhorn ATS & CRM
JobOrder custom fields
lossySmart Hire custom fields on job openings (such as internal requisition codes, department-specific attributes, or compensation bands) map to Bullhorn JobOrder custom fields. We read the full custom property schema during profiling, map each field to an equivalent Bullhorn field or create a custom field, and validate that required fields on Bullhorn JobOrder are populated.
Smart Hire
Talent Pool (candidate pool)
Bullhorn ATS & CRM
Candidate with Tag or List membership
lossySmart Hire's talent pipeline management stores candidates in pools for future openings. We map talent pool membership to Bullhorn Candidate records with Tag or List membership. If the destination Bullhorn instance has Bullhorn Pro or Enterprise with automation, we map pool membership to a Bullhorn List or Tag that the customer's team can use to filter for future job submissions.
Smart Hire
Career Site configuration
Bullhorn ATS & CRM
Not migrated
1:1Smart Hire's custom career sites and white-label branding are platform-specific and cannot be exported as structured data. We document the career site URL, page structure, and any embedded Smart Hire job board references so your Bullhorn admin can configure Bullhorn Career Portal or a third-party career site builder post-migration. This is a manual rebuild item outside data migration scope.
| Smart Hire | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Candidate | Candidate1:1 | Fully supported | |
| Job Opening | JobOrder1:1 | Fully supported | |
| Screening Session | Custom Object or Candidate custom fieldslossy | Fully supported | |
| Psychometric Assessment | Custom Object fields1:1 | Fully supported | |
| Candidate-Application association | JobSubmission1:1 | Fully supported | |
| Attachment (resume, documents) | Candidate.attachments or ContentDocument1:1 | Fully supported | |
| User (hiring manager, recruiter) | User1:1 | Fully supported | |
| Pipeline Stage configuration | JobOrder status configurationlossy | Fully supported | |
| Custom Properties (candidate) | Candidate custom fields or Custom Object fieldslossy | Fully supported | |
| Custom Properties (job) | JobOrder custom fieldslossy | Fully supported | |
| Talent Pool (candidate pool) | Candidate with Tag or List membershiplossy | Fully supported | |
| Career Site configuration | Not migrated1: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.
Smart Hire gotchas
Export mechanism is CSV-based, not REST API
Assessment score normalization requires field mapping
Custom fields may be untyped in CSV exports
Candidate-to-job associations can split during multi-file exports
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 export automation scoping
We audit the Smart Hire instance across custom properties, assessment types, screening session volume, job opening count, and candidate pool membership. We automate the CSV export flow via authenticated session scraping, iterating through all candidate pages, job pages, and screening session exports. We document the full custom property schema and assess whether Bullhorn's standard fields cover the schema or whether Custom Objects are needed. The discovery output is a written migration scope and a Bullhorn edition recommendation if Custom Object limits are a constraint.
Bullhorn Custom Object provisioning coordination
If the migration scope requires Bullhorn Custom Objects for assessment or screening data, we open a Support ticket with Bullhorn using the Custom Object Setup Spreadsheet template. We complete the spreadsheet with field names, types, required flags, and edit types derived from Smart Hire's custom property schema. We coordinate with the customer's Bullhorn admin to submit the ticket, then validate the provisioned schema against our migration mapping before any data loads. This step runs in parallel with export automation development.
Schema design and field mapping
We design the destination Bullhorn schema including standard field mappings for Candidate, JobOrder, JobSubmission, and User, plus any Custom Object schemas for assessment and screening session data. We define the candidate-to-job association rules and the assessment score normalization strategy. Bullhorn field types are matched to Smart Hire source types (string, date, integer, boolean, picklist), with type-coercion rules documented for any mismatches found during profiling.
Sandbox migration and reconciliation
We run a full migration into a Bullhorn sandbox using production-like data volume. The customer's recruiting operations lead reconciles record counts (candidates in, jobs in, submissions in, assessments in), spot-checks 25-50 random records against the Smart Hire source, and validates that candidate-to-job associations are intact. Any mapping corrections or Bullhorn field type adjustments happen here, not in production. The sandbox sign-off gates production migration.
Production migration in dependency order
We run production migration in record-dependency order: Users (manual provisioning, validated first), JobOrders (foundational for submissions), Candidates (with assessment data), JobSubmissions (linking candidates to jobs), Attachments (linked to Candidates), and Custom Object instances (last because they reference Candidates and JobOrders). Each phase emits a row-count reconciliation report before the next phase begins. Bullhorn REST API handles standard object writes; we use batch chunking for large volumes.
Cutover, validation, and workflow rebuild handoff
We freeze Smart Hire writes during cutover, run a final delta migration of any records modified during the migration window, then enable Bullhorn as the system of record. We deliver a written inventory of Smart Hire workflows, automations, and career site configurations that require manual rebuild in Bullhorn. We support a one-week hypercare window where we resolve any reconciliation issues. We do not rebuild Smart Hire automations as Bullhorn workflows inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
Smart Hire
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between Smart Hire and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Smart Hire and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between Smart Hire 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
Smart Hire: Not publicly documented.
Data volume sensitivity
Smart Hire 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 Smart Hire to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Smart Hire 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 Smart Hire
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.