HRMS migration
Field-level mapping, validation, and rollback between AgileATS and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
AgileATS
Source
Bullhorn ATS & CRM
Destination
Compatibility
10 of 12
objects map 1:1 between AgileATS and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
AgileATS and Bullhorn serve different corners of the recruiting market, and the structural differences between them shape the entire migration. AgileATS is purpose-built for government contractors with no public REST API — all data leaves as structured file exports — while Bullhorn provides full REST API access with a combined ATS and CRM model. The highest-signal migration work is clearance data mapping, compliance field remapping, and partner user reconciliation because AgileATS partner accounts have no direct Bullhorn equivalent. We validate export completeness from AgileATS, map every clearance and EEO field to Bullhorn custom fields, configure pipeline stages against Bullhorn's record type and sales process model, and ingest via Bullhorn's REST API with batch chunking and parent-record resolution. Bullhorn editions cap custom objects at 10 per entity on Front Office Growth and Enterprise, which we audit before migration. Workflows, sequences, and Agile Recruiting framework structures 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.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a AgileATS 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.
AgileATS
Candidate
Bullhorn ATS & CRM
Candidate
1:1AgileATS Candidate records map directly to Bullhorn Candidate. We map firstName, lastName, email, phone, address, status, and clearanceLevel to Bullhorn standard fields and Bullhorn custom fields respectively. Custom fields on AgileATS candidates (clearance types, partner assignments, EEO flags) map to Bullhorn custom fields on the Candidate entity, subject to Bullhorn's custom field cap per entity per edition. Candidate ownership from AgileATS maps to Bullhorn Candidate ownerId by email-matched User lookup. Attachments (resumes, certifications, background forms) export from AgileATS alongside record data and re-attach to the Bullhorn Candidate record using Bullhorn's ContentDocumentLink structure.
AgileATS
Job
Bullhorn ATS & CRM
Job Order
1:1AgileATS Job records (title, location, clearance requirements, description, status) map to Bullhorn JobOrder. Job title maps to title, location maps to address, and any clearance requirement flags on the AgileATS job map to Bullhorn custom fields on the JobOrder. Job-to-Candidate associations (which candidates are pipeline-assigned to which jobs) map to Bullhorn JobSubmission records created during the candidate import phase, preserving the candidate-to-job relationship. We flag any jobs with status set to Closed or On Hold in AgileATS for Bullhorn status mapping review.
AgileATS
Pipeline Stage
Bullhorn ATS & CRM
Record Type + Sales Process (Opportunity)
lossyAgileATS uses a structured Agile Recruiting framework with configurable pipeline stage names and counts that vary by customer configuration. Bullhorn maps recruiting pipelines to Opportunity record types and Sales Processes. We map each AgileATS stage name to a Bullhorn Opportunity stage value and create new stages as needed within the Bullhorn Sales Process. Stage ordering and probability percentages transfer from AgileATS to Bullhorn StageProbability values. If the customer uses multiple AgileATS pipelines, each maps to a separate Bullhorn Record Type on Opportunity.
AgileATS
Offer
Bullhorn ATS & CRM
Placement
1:1AgileATS Offer records carry compensation details, start date, and offer status. Bullhorn represents an accepted offer as a Placement record. We map AgileATS offer compensation to Bullhorn Placement's payRate or billRate custom fields (depending on whether the offer is candidate-facing or client-facing), map startDate to dateBegin, and preserve offer status as a Placement custom field. The offer-to-candidate relationship maps through the JobSubmission created during the candidate and job import phase.
AgileATS
Custom Field (clearance, partner, EEO)
Bullhorn ATS & CRM
Custom Field on Candidate or JobOrder
lossyAgileATS uses custom fields heavily for clearance types (e.g., Secret, Top Secret, SCI), partner assignments, and EEO flagging. We extract all custom field definitions during scoping, map each to a Bullhorn custom field on the appropriate entity (Candidate or JobOrder), and flag any that exceed Bullhorn's field cap per entity per edition (Front Office Growth/Enterprise: 55 fields per custom object, capped at 10 custom objects per entity). Bullhorn ATS tier allows 2 custom objects; ATS Growth allows 0. Clearance type values migrate as picklist values in the Bullhorn custom field.
AgileATS
Compliance Reports
Bullhorn ATS & CRM
Candidate Custom Fields + Written Field Inventory
1:1AgileATS OFCCP, DoL, and EEO reports are generated exports rather than structured data objects. We migrate the underlying candidate fields (EEO flags, hire dates, job categories, pay ranges, clearance levels) to Bullhorn custom fields on the Candidate record. Compliance reports themselves do not migrate because they are report definitions, not record data. We deliver a written field inventory mapping each AgileATS compliance field to the corresponding Bullhorn custom field and specifying which Bullhorn field feeds each compliance report line item, so the customer's compliance team can validate output post-migration.
AgileATS
User / Recruiter
Bullhorn ATS & CRM
User
1:1AgileATS full Recruiter seats map to Bullhorn standard User records by email match. We extract every distinct user referenced on candidate, job, and offer records, match by email against the Bullhorn destination User table, and provision any missing Users in the reconciliation queue before the production migration begins. AgileATS Partner Users are a distinct user class with limited permissions; they map to Bullhorn Client User or standard User with restricted access, and we flag any partner assignments on candidate records for the customer's Bullhorn admin to review and configure post-migration.
AgileATS
Partner / Subcontractor
Bullhorn ATS & CRM
Client User + Custom Field Flag
1:1AgileATS Partner Users are tracked as a separate user class with distinct permissions and billing ($20/month each). Bullhorn does not have a direct partner-tier user equivalent. We preserve partner assignments as a custom flag field (e.g., isPartnerUser__c) on the candidate record and flag the candidate records where a Partner User is the assigned owner for review in Bullhorn. We also flag any active partners that may lose access granularity if remapped to a standard Bullhorn User role, so the customer's admin can configure appropriate permissions before cutover.
AgileATS
Clearance Data
Bullhorn ATS & CRM
Custom Fields on Candidate
1:1Security clearance level (e.g., NACI, MBI, CI, Polygraph) and clearance status (Active, Expired, Pending) are stored as structured fields on AgileATS candidate records. We preserve clearance values in Bullhorn custom fields on the Candidate entity (clearanceLevel__c, clearanceStatus__c, clearanceExpirationDate__c). We flag any candidates whose clearance status may have expired or requires renewal based on the AgileATS clearance expiration date, and we flag candidates pending reinvestigation for compliance review. Clearance type values map to Bullhorn picklist values in the custom field definition.
AgileATS
Notes and Activity History
Bullhorn ATS & CRM
Note + Task
1:1AgileATS recruiter notes and activity timestamps export from the structured file output and map to Bullhorn Note records linked via ContentDocumentLink to the parent Candidate record. Activity type (call, email, meeting) maps to Bullhorn Task records with TaskSubtype set appropriately. Activity ordering is preserved by setting ActivityDate to the original AgileATS timestamp. Note body migrates as plain text. Bullhorn's Notes support rich text; we convert AgileATS note formatting where present in the export.
AgileATS
Attachment (resume, certification, background form)
Bullhorn ATS & CRM
ContentDocument / Resume on Candidate
1:1AgileATS stores candidate attachments (resumes, certifications, security clearance forms, background check documents) in a separate file store from record data. We export attachments alongside record data, map file names to the Bullhorn Candidate's primary resume field, and re-attach supporting documents as ContentDocument records linked via ContentDocumentLink to the candidate. We flag any file types that may exceed Bullhorn's supported attachment size limits or unsupported formats before import.
AgileATS
AgileATS Organization Settings
Bullhorn ATS & CRM
Bullhorn Admin Configuration
1:1AgileATS organization-level settings (org name, federal contractor identification, DCAA audit configuration) have no direct Bullhorn equivalent and do not migrate as structured records. We deliver a written inventory of all organization settings in AgileATS with recommended Bullhorn equivalents (e.g., Bullhorn Admin settings, corporate branding, user role configuration), so the customer's Bullhorn admin can configure these post-migration. This inventory is delivered alongside the field mapping document during the handoff phase.
| AgileATS | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Candidate | Candidate1:1 | Fully supported | |
| Job | Job Order1:1 | Fully supported | |
| Pipeline Stage | Record Type + Sales Process (Opportunity)lossy | Fully supported | |
| Offer | Placement1:1 | Fully supported | |
| Custom Field (clearance, partner, EEO) | Custom Field on Candidate or JobOrderlossy | Fully supported | |
| Compliance Reports | Candidate Custom Fields + Written Field Inventory1:1 | Mapping required | |
| User / Recruiter | User1:1 | Fully supported | |
| Partner / Subcontractor | Client User + Custom Field Flag1:1 | Fully supported | |
| Clearance Data | Custom Fields on Candidate1:1 | Mapping required | |
| Notes and Activity History | Note + Task1:1 | Mapping required | |
| Attachment (resume, certification, background form) | ContentDocument / Resume on Candidate1:1 | Fully supported | |
| AgileATS Organization Settings | Bullhorn Admin Configuration1: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.
AgileATS gotchas
No public API requires structured file-based migration
Candidate storage caps differ by tier and are enforced
Compliance report data lives in exports, not structured records
Partner users are a distinct billing class
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
Export validation and schema audit
We request structured file exports from the customer's AgileATS instance covering all candidate records, job records, pipeline stage definitions, offer records, user accounts, partner assignments, and attachment metadata. We validate schema completeness against the customer's reported candidate count and field inventory, flag any truncated exports or missing fields, and alert the customer to request a fresh export before ingestion begins. We also extract AgileATS custom field definitions for clearance types, partner assignments, and EEO flags at this stage.
Field mapping design and clearance field creation
We design the Bullhorn custom field schema for all AgileATS clearance, partner, and compliance fields that have no native Bullhorn equivalent. Each AgileATS clearance type becomes a Bullhorn picklist value in a clearanceLevel__c custom field on Candidate. Partner assignments become a flag in isPartnerUser__c. EEO flags map to Bullhorn custom fields on Candidate with documented OFCCP report line item mappings. We check the customer's Bullhorn edition against the field count and flag any that exceed edition limits. Bullhorn custom fields are deployed to the destination org before any record import begins.
Sandbox migration and reconciliation
We run a full migration into a Bullhorn Sandbox environment using production-like data volumes. The customer's operations lead reconciles record counts (candidates in, jobs in, placements in, notes in), spot-checks 25-50 random candidate records against the AgileATS source data, and validates that clearance fields, partner flags, and EEO data landed correctly in Bullhorn. Pipeline stage mapping and record type configuration are validated at this stage. Any field mapping corrections happen in sandbox before production migration begins.
User reconciliation and Bullhorn User provisioning
We extract every distinct AgileATS user referenced on candidate, job, and offer records and match by email against the Bullhorn destination User table. AgileATS Partner Users without a matching Bullhorn User go to a reconciliation queue. The customer's Bullhorn admin provisions missing Users (active for current recruiters, inactive for departed users with candidate ownership records to preserve). Migration cannot proceed past this step because ownerId references on Bullhorn records require a valid User lookup.
Production migration in dependency order
We run production migration in record-dependency order using Bullhorn's REST API with batch chunking and rate-limit handling. Users are validated first. Accounts (from AgileATS client records if present) import next. Candidates import with ownerId resolved to Bullhorn User, clearance fields populated, partner flag set, and attachments re-attached. Jobs import with clearance requirement flags mapped to Bullhorn JobOrder custom fields. JobSubmission records are created to preserve candidate-to-job pipeline assignments. Placements import from AgileATS Offers. Activity history (notes, calls, meetings) imports as Bullhorn Note and Task records with timestamps preserved. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and handoff documentation
We freeze AgileATS 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 the migration manifest: field mapping document, compliance field inventory, pipeline stage mapping, partner user flagging report, and any organization settings that require manual Bullhorn admin configuration. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's recruiting team. We do not rebuild AgileATS workflows or Agile Recruiting framework structures as Bullhorn automations inside the migration scope; that is a separate engagement.
Platform deep dives
AgileATS
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 AgileATS 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
AgileATS: Not publicly documented.
Data volume sensitivity
AgileATS 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 AgileATS to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your AgileATS 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 AgileATS
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.