HRMS migration
Field-level mapping, validation, and rollback between ApplicantStack and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
ApplicantStack
Source
Bullhorn ATS & CRM
Destination
Compatibility
8 of 12
objects map 1:1 between ApplicantStack and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
ApplicantStack and Bullhorn serve different segments of the recruitment market. ApplicantStack targets small to mid-sized teams with a flat-rate budget ATS; Bullhorn is purpose-built for staffing and recruitment agencies with a combined ATS and CRM, deeper pipeline management, and a marketplace of agency-specific integrations. The migration gap is structural: ApplicantStack has no public API and relies on CSV exports via its built-in Reports builder, while Bullhorn exposes a REST API with per-edition field limits, Custom Object constraints, and Bullhorn Automation workflows that do not carry forward. We extract from ApplicantStack Reports as structured CSVs, parse flat-file candidate records, run deduplication against email and phone, then load into Bullhorn via the REST API with parent-record lookup resolution. Bullhorn editions govern Custom Object limits (10 for Enterprise, 2 for ATS Growth, none for standard ATS), and Bullhorn Automation sequences cannot be migrated—these are documented for rebuild by the customer's admin post-migration.
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 ApplicantStack 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.
ApplicantStack
Position/Job
Bullhorn ATS & CRM
JobOrder
1:1ApplicantStack Positions map to Bullhorn JobOrder records. Job title, description, status (Open/Closed), and opening count transfer directly. Bullhorn JobOrder also capturesClientCorporation (the staffing firm's client account), which ApplicantStack does not model; we create a placeholder ClientCorporation record during migration or map to an existing Bullhorn client if the customer has already onboarded their account structure.
ApplicantStack
Candidate
Bullhorn ATS & CRM
Candidate
1:1ApplicantStack Candidate records (name, email, phone, application date, source, status, resume file) map to Bullhorn Candidate. We run deduplication during transformation by email address, normalized phone number, and name string to flag likely duplicates for customer review before final import. Resume files migrate as Candidate document attachments. The applicant's original source field maps to Bullhorn's candidateSource field. Application date migrates as a date field; Bullhorn does not preserve a full application timeline audit in the standard Candidate object, so stage-history records migrate separately.
ApplicantStack
Hiring Pipeline Stage
Bullhorn ATS & CRM
JobSubmission (with JobOrder pipeline)
1:1ApplicantStack's configurable pipeline stages (Applied, Screening, Interview, Offer, Hired, Rejected) map to Bullhorn JobSubmission records tied to a JobOrder. Bullhorn's pipeline is controlled by the JobOrder's workflow, not a separate pipeline object. We export the full stage history per candidate and replay it as a sequence of JobSubmission status changes with timestamps, preserving the candidate's progression through the hiring process. Closed dates and disposition reasons map to the JobSubmission record.
ApplicantStack
Custom Questionnaire/Form Responses
Bullhorn ATS & CRM
Candidate Custom Fields or Custom Object
lossyApplicantStack Custom Questionnaires store field-value pairs tied to the candidate record. We map these to Bullhorn Candidate custom fields (up to the Bullhorn edition limit) or to a Bullhorn Custom Object if the questionnaire data is structured (multiple sections, repeated entries). The decision between custom fields and a Custom Object is made during scoping based on data complexity. Bullhorn Custom Objects require pre-provisioning via the Custom Object Setup Sheet; we create these before candidate import. Each field-value pair migrates with its original field label preserved as the Bullhorn field display name.
ApplicantStack
User Accounts (Recruiters/Hiring Managers/Admins)
Bullhorn ATS & CRM
BullhornUser
1:1ApplicantStack user roles (Administrator, Recruiter, Hiring Manager) map to Bullhorn User records. We match users by email address. Bullhorn User records require provisioning by the customer's Bullhorn admin before migration; we provide a user reconciliation report listing every ApplicantStack user with their intended Bullhorn role assignment so the admin can provision matching accounts in advance. Any user without a Bullhorn account created before migration holds the corresponding records in a reconciliation queue.
ApplicantStack
Candidate Tags/Labels
Bullhorn ATS & CRM
Candidate Tags or Custom Multi-Select Field
lossyApplicantStack candidate tags migrate as Bullhorn tags on the Candidate record. Bullhorn supports free-text tagging; we preserve all original tags. If the customer requires structured tag-based segmentation (e.g., skill tags, certification tags), we map these to a multi-select custom field on Candidate to enable filtered search and reporting in Bullhorn. Tag consolidation (identical tags under different casing) happens during transformation.
ApplicantStack
Resume and Cover Letter Attachments
Bullhorn ATS & CRM
Candidate Document Attachments
1:1Resume files, cover letters, and uploaded documents extract as binary blobs from ApplicantStack candidate records. We preserve original file names and attach them to the corresponding Bullhorn Candidate record via Bullhorn's document attachment API. File type (PDF, DOCX, RTF) is preserved. Bullhorn's attachment limit per record and file size limits are checked during transformation; files exceeding Bullhorn's limit are flagged for the customer's admin to handle manually.
ApplicantStack
New Hire Records (from ApplicantStack Onboard)
Bullhorn ATS & CRM
Candidate + Onboarding Workflow
1:1If the customer uses ApplicantStack Onboard separately, I-9 data, tax form records, and onboarding document packets extract as structured records with separate document blobs. These migrate to Bullhorn Candidate records with onboarding documents attached. Bullhorn's Talent Platform (formerly Able) handles onboarding workflows post-migration; we document the onboarding data mapping for the customer's Bullhorn admin to configure Talent Platform packages after migration. I-9 and tax form data migrate as document attachments rather than structured form fields because Bullhorn does not have native I-9 storage in the core ATS.
ApplicantStack
Email Templates (content only)
Bullhorn ATS & CRM
Bullhorn Email Templates
1:1ApplicantStack email template content migrates as Bullhorn Email Template records. Bullhorn uses a different variable/tag syntax than ApplicantStack (e.g., {Candidate.FirstName} versus ApplicantStack's equivalent). We map the template content and flag variable placeholders that require updating to Bullhorn's syntax post-migration. Automated send triggers and sequence logic do not migrate; these are documented in the automation inventory delivered to the customer's admin.
ApplicantStack
Job Board Distribution Settings
Bullhorn ATS & CRM
Not Migrated
1:1ApplicantStack job board distribution settings (Indeed sponsored jobs, JobTarget, custom branded boards) are platform-specific configuration that do not carry forward to Bullhorn. The job posting content migrates as JobOrder records; the distribution settings are documented as a configuration checklist for the customer's Bullhorn admin to rebuild in Bullhorn's job distribution settings. This is not a data gap—it is a standard rebuild item.
ApplicantStack
Reports/Exports
Bullhorn ATS & CRM
Bullhorn Report Configuration Documentation
lossyApplicantStack's custom Reports exports are the source data for migration; they do not have a Bullhorn equivalent to migrate. We document every ApplicantStack Report the customer has configured (report name, fields, filters, schedule) as a configuration handoff so the Bullhorn admin can rebuild equivalent reports using Bullhorn's reporting module. Bullhorn Analytics (Canvas) is a separate add-on at $40-$60 per user per month.
ApplicantStack
Custom Properties (Employer-Defined Fields)
Bullhorn ATS & CRM
Custom Fields on Candidate/JobOrder
lossyApplicantStack custom properties added to Candidates or Jobs beyond the standard schema migrate as Bullhorn custom fields. We create the destination custom fields during the schema provisioning phase using Bullhorn's Admin Field Mappings tool. Bullhorn has edition-gated limits on custom fields per entity (Candidate, JobOrder, ClientCorporation, etc.); we confirm the Bullhorn edition during scoping to ensure the custom field count fits within the contracted limit.
| ApplicantStack | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Position/Job | JobOrder1:1 | Fully supported | |
| Candidate | Candidate1:1 | Fully supported | |
| Hiring Pipeline Stage | JobSubmission (with JobOrder pipeline)1:1 | Fully supported | |
| Custom Questionnaire/Form Responses | Candidate Custom Fields or Custom Objectlossy | Fully supported | |
| User Accounts (Recruiters/Hiring Managers/Admins) | BullhornUser1:1 | Mapping required | |
| Candidate Tags/Labels | Candidate Tags or Custom Multi-Select Fieldlossy | Fully supported | |
| Resume and Cover Letter Attachments | Candidate Document Attachments1:1 | Fully supported | |
| New Hire Records (from ApplicantStack Onboard) | Candidate + Onboarding Workflow1:1 | Fully supported | |
| Email Templates (content only) | Bullhorn Email Templates1:1 | Fully supported | |
| Job Board Distribution Settings | Not Migrated1:1 | Fully supported | |
| Reports/Exports | Bullhorn Report Configuration Documentationlossy | Mapping required | |
| Custom Properties (Employer-Defined Fields) | Custom Fields on Candidate/JobOrderlossy | Mapping required |
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.
ApplicantStack gotchas
Trial limits visibility to first 100 candidates
Pricing is per-user including all roles
Export is report-based, not a live database query
Duplicate detection gaps create record overlap
Onboarding module is a separate product SKU
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 edition confirmation
We audit the source ApplicantStack account across modules (Recruit only, Onboard only, or bundled), active job count, total candidate records, custom questionnaire count, user roles, and pipeline stage configuration. We confirm the target Bullhorn edition (ATS Growth, Front Office Growth, or Enterprise) and verify Custom Object limits. We review the customer's Bullhorn quote and confirm add-ons (Bullhorn Automation, Bullhorn Analytics) in scope. The discovery output is a written migration scope, Bullhorn edition recommendation, and a Bullhorn Custom Object Setup Sheet queued for submission to Bullhorn Support if the scope requires custom objects.
ApplicantStack report generation and export
We work with the customer's ApplicantStack administrator to generate the necessary Reports exports. This includes a candidates report (all fields), a jobs report, a pipeline stages history report, a custom questionnaire responses report, a user accounts report, and an attachments export. If the Reports builder is missing required fields, we guide the admin through adding them. The CSV exports serve as the migration data source. We validate the export row counts against the discovery audit to confirm no records are silently omitted, particularly for accounts that have exceeded the candidate visibility cap noted in ApplicantStack's trial limitations.
Schema provisioning in Bullhorn Sandbox
We set up Bullhorn field mappings, custom fields, and Custom Objects (if applicable) in a Bullhorn Sandbox using the metadata API. This includes creating custom fields on Candidate and JobOrder, configuring Bullhorn's Candidate custom field settings (required vs. optional, hidden, allow multiple values), provisioning Custom Objects via the Custom Object Setup Sheet, and configuring JobOrder Record Types and pipeline workflows if multiple pipelines are in scope. Schema validation runs in Sandbox before production provisioning.
Data profiling, deduplication, and transformation
We parse ApplicantStack CSV exports, normalize flat-file structures into object records, and run deduplication logic against email, phone, and normalized name strings. Candidate duplicates are flagged in a report for customer review. We apply the Bullhorn field type mapping (text, textarea, drop-down, multi-select) to every source field, flag character-length risks, and resolve lookups (Candidate to JobOrder, User to Owner) before the API import phase. Custom questionnaire responses are reshaped into either custom fields or Custom Object records depending on the schema design.
Sandbox migration and reconciliation
We run a full migration into a Bullhorn Sandbox using the confirmed data volume. The customer's Bullhorn admin reconciles record counts (Candidates in, Jobs in, Pipeline history in), spot-checks 25-50 random records against the source exports, and reviews the deduplication report. Any mapping corrections, field-type adjustments, or Bullhorn schema changes happen in Sandbox before production migration begins. Bullhorn Custom Object provisioning is validated at this stage if Bullhorn Support has responded to the setup sheet.
Production migration in dependency order
We run production migration in record-dependency order: Bullhorn Users (manually provisioned and validated first), JobOrders (with ClientCorporation lookups resolved), Candidates (with dedupe applied, attachments loaded in parallel), JobSubmissions (with status history timestamps replayed), custom field data, Custom Object records (if applicable), and email templates (content only). Each phase emits a row-count reconciliation report. We use Bullhorn's REST API with rate-limit handling and exponential backoff for standard inserts; large-volume activity records use the Bulk API.
Cutover, validation, and automation rebuild handoff
We freeze ApplicantStack writes during cutover, run a final delta migration of records modified during the migration window, then enable Bullhorn as the system of record. We deliver the automation and sequence inventory document to the customer's Bullhorn admin for rebuild in Bullhorn Automation (if licensed) and the email template variable update guide for Bullhorn syntax. We support a one-week hypercare window for reconciliation issues. Bullhorn Automation rebuilds, Talent Platform onboarding workflow configuration, and Bullhorn Analytics dashboard setup are outside standard migration scope and are separate engagements.
Platform deep dives
ApplicantStack
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between ApplicantStack and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across ApplicantStack and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between ApplicantStack 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
ApplicantStack: Not publicly documented.
Data volume sensitivity
ApplicantStack 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 ApplicantStack to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your ApplicantStack 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 ApplicantStack
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.