HRMS migration
Field-level mapping, validation, and rollback between ADP Workforce Now and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
ADP Workforce Now
Source
Bullhorn ATS & CRM
Destination
Compatibility
10 of 12
objects map 1:1 between ADP Workforce Now and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
ADP Workforce Now and Bullhorn serve different primary functions: ADP is a full HCM suite centred on employment records, payroll compliance, and benefits administration, while Bullhorn is an ATS and CRM built for staffing and recruiting agencies managing candidates, job orders, placements, and client relationships. The migration from ADP to Bullhorn is not a like-for-like HCM replacement — it is a scope reduction to recruiting and talent operations. We extract Workers, org structure, and payroll history from ADP and map them into Bullhorn's Candidate and Client objects, but Bullhorn has no native payroll, benefits administration, or garnishment processing. We flag these gaps explicitly and provide manual reconciliation checklists for HR administrators to close them in Bullhorn or retain them in a separate payroll system. Workflows, approval chains, and the ADP Talent Management module do not migrate; we deliver a written inventory of every active workflow and automation for the customer's admin to rebuild in Bullhorn's workflow builder or via Bullhorn Automation Engine.
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 ADP Workforce Now 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.
ADP Workforce Now
Worker
Bullhorn ATS & CRM
Candidate
1:1ADP Worker records map to Bullhorn Candidate records as the primary migration object. We map WorkerID as Bullhorn candidateID for audit, legalName fields to name fields, preferred communication preferences to Bullhorn email/phone fields, and Worker status (active, terminated, on leave) to Bullhorn employment status. Address data migrates to Candidate address fields. Note that Bullhorn Candidates do not carry employment contract terms natively — pay rate, employment type, and start date from ADP require mapping to Bullhorn's custom fields or to the Candidate Work History object if the staffing agency tracks assignment history. Historical job assignments within ADP may require mapping to Bullhorn Placements if the agency tracks prior placements.
ADP Workforce Now
Worker Custom Fields
Bullhorn ATS & CRM
Candidate Custom Fields
lossyADP supports 8 types of Worker Custom Fields (amount, code, date, indicator, number, percentage, string, telephone) at both the Worker and Worker Person levels. However, the ADP Workforce Now API does not expose a read endpoint for custom field values — they are write-only. We document which custom fields are in use during scoping, request a reference file of current values from the customer, and recreate them as Bullhorn Candidate custom fields before migration. Bullhorn's custom field creation requires admin access and is scoped to the Candidate record type.
ADP Workforce Now
Payroll Deduction Instructions (voluntary)
Bullhorn ATS & CRM
Candidate Billing / Custom Fields
1:1ADP voluntary deduction instructions (health benefits, retirement contributions, voluntary benefits) map partially to Bullhorn. Bullhorn has no native deduction object — we map deduction types, amounts, and frequency to Candidate custom fields or to a billing setup record. Garnishment orders and involuntary withholding orders are explicitly excluded from the ADP Deduction Instruction API and will not transfer via API. We flag all active garnishment orders during scoping and provide a manual reconciliation checklist for the customer's HR admin to recreate in their chosen payroll system post-migration.
ADP Workforce Now
Benefit Plans and Enrolments
Bullhorn ATS & CRM
Candidate Custom Fields or External System
1:1ADP benefit enrolments and coverage elections are accessible via ADP's Benefits API (Beneficiaries, Benefit Dependents, External Benefit Plans). Bullhorn has no standard benefits object. We map benefit plan names, coverage levels, and enrolment dates to Candidate custom fields. Plan configurations are employer-specific in ADP and do not map as structured Bullhorn data — we document the benefit plan inventory during scoping for the customer to recreate manually in Bullhorn or retain in a benefits administration system separate from Bullhorn.
ADP Workforce Now
Time Off and Leave Records
Bullhorn ATS & CRM
Not Supported Natively / Bullhorn Add-on
1:1ADP Time Off history, current balances, and leave event records are accessible via the ADP Time Off Requests API. Bullhorn has no native time-off or leave management object. We map current accrued balances to Candidate custom fields as a snapshot record, but Bullhorn's standard ATS and CRM does not track leave balances or run leave approval workflows. If the customer needs time-off management in Bullhorn, this requires a Bullhorn Marketplace add-on or a separate time-off system. Leave plan configurations and accrual rules do not migrate and must be rebuilt.
ADP Workforce Now
Payroll History and Pay Data
Bullhorn ATS & CRM
Candidate Custom Fields (reference only)
1:1ADP payroll run history, pay stubs, and tax withholding records are accessible via the ADP Payroll API. Bullhorn has no payroll module. We map the most recent pay rate, pay frequency, and standard hours to Candidate custom fields for reference during recruiting and placement activity. Full payroll history (pay stubs, YTD earnings, tax withholding) does not migrate structurally — it is flagged for manual reconciliation or for import into the customer's chosen payroll system if Bullhorn is not the payroll system of record.
ADP Workforce Now
Locations and Departments
Bullhorn ATS & CRM
Corporate Department and Branch
1:1ADP Locations and Departments map to Bullhorn Corporate Departments and Branches respectively. Bullhorn's Corporate Department object stores department-level information for client corporations; the Branch object represents staffing office or location-level entities. ADP validation table values for Locations and Departments migrate as Bullhorn reference records. We resolve the ADP Location-to-Bullhorn Branch mapping during scoping, as staffing agencies often have multiple branch offices that need distinct Bullhorn Branch records.
ADP Workforce Now
Job Titles (Validation Tables)
Bullhorn ATS & CRM
Job Order Title / Candidate Skills
1:1ADP Job Titles from validation tables map to Bullhorn Job Order titles and Candidate skill descriptors. Bullhorn Job Orders store the position title, description, and requirements for open roles; Candidates store skills and work history including prior job titles. We map ADP job title values to Bullhorn Job Order titles and to Candidate skills where the staffing workflow references candidate qualifications against job requirements.
ADP Workforce Now
Cost Numbers
Bullhorn ATS & CRM
Custom Fields on Candidate or Job Order
lossyADP Cost Numbers are used by project-based and construction companies to track labour distribution against projects or cost centres. Bullhorn has no native cost number or labour distribution object. If the customer relies on ADP cost numbers for billing or project tracking, we map them to Bullhorn custom fields on Candidate or Job Order. This mapping is scoped during discovery — Bullhorn does not support the multi-level cost breakdown model that ADP provides without custom field configuration.
ADP Workforce Now
Worker Termination Records
Bullhorn ATS & CRM
Candidate Employment History / Placement History
1:1ADP termination records (termination date, termination reason, rehire eligibility) map to Bullhorn Candidate employment history entries. Bullhorn's Placement record tracks assignments and their end dates; termination reason and rehire eligibility are stored as custom fields on the Candidate. We map ADP terminationReason and terminationDate to Bullhorn Candidate termination fields and set the rehireEligible flag accordingly.
ADP Workforce Now
Talent Management (Performance Reviews, Goals, Learning)
Bullhorn ATS & CRM
Not Supported
1:1ADP Workforce Now's Talent Management module — covering performance reviews, goal setting, compensation planning, and learning — is not accessible via the ADP Workforce Now public API. It uses a separate proprietary interface. Bullhorn has no native performance management or learning object. Neither platform supports this data via API for migration. We document the Talent Management module configuration and record types during scoping as a reference for the customer's HR admin to evaluate whether Bullhorn Marketplace add-ons or a separate performance management system is appropriate post-migration.
ADP Workforce Now
Event Notifications and Webhooks
Bullhorn ATS & CRM
Bullhorn Webhooks / Automation Engine
1:1ADP exposes event notification webhooks for worker lifecycle events (hire, termination, pay rate change, location change). Bullhorn has its own webhook system for recruitment events. During migration, we configure ADP webhooks to capture any changes during the delta sync window. Bullhorn Automation Engine is the destination equivalent for triggering actions on candidate and job events. The migration does not transfer ADP webhook configurations — we document the ADP event types in use and recommend Bullhorn equivalents for the customer's admin to configure post-migration.
| ADP Workforce Now | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Worker | Candidate1:1 | Fully supported | |
| Worker Custom Fields | Candidate Custom Fieldslossy | Mapping required | |
| Payroll Deduction Instructions (voluntary) | Candidate Billing / Custom Fields1:1 | Fully supported | |
| Benefit Plans and Enrolments | Candidate Custom Fields or External System1:1 | Mapping required | |
| Time Off and Leave Records | Not Supported Natively / Bullhorn Add-on1:1 | Mapping required | |
| Payroll History and Pay Data | Candidate Custom Fields (reference only)1:1 | Mapping required | |
| Locations and Departments | Corporate Department and Branch1:1 | Fully supported | |
| Job Titles (Validation Tables) | Job Order Title / Candidate Skills1:1 | Fully supported | |
| Cost Numbers | Custom Fields on Candidate or Job Orderlossy | Fully supported | |
| Worker Termination Records | Candidate Employment History / Placement History1:1 | Fully supported | |
| Talent Management (Performance Reviews, Goals, Learning) | Not Supported1:1 | Fully supported | |
| Event Notifications and Webhooks | Bullhorn Webhooks / Automation Engine1:1 | 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.
ADP Workforce Now gotchas
ADP API access requires a signed developer agreement
API rate limits are per-client and not publicly documented
Worker Custom Fields are write-only via the ADP API
Reports-based ADP integrations have known sync reliability issues
Involuntary Withholding Orders and Company Loans are not supported in the API
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
ADP developer agreement and API scoping
We begin by confirming that the customer has established a developer agreement with ADP and obtained Client ID and Client Secret credentials. Without this, no API-based export is possible. We then run a scoping read against ADP's Worker Management API to enumerate all active Workers, custom fields in use, Locations, Departments, Job Titles, and deduction instructions. We request a manual export of ADP Worker Custom Field values from the customer's HR admin as a reference file, since these cannot be read via API. We also request a list of active garnishment orders and benefit enrolments for the manual reconciliation scope. The scoping output is a written migration specification covering record counts, field inventory, and any known ADP API constraints.
Bullhorn schema design and custom field creation
We design the Bullhorn destination schema before any data loads. This includes provisioning Bullhorn Candidate custom fields to receive ADP compensation data (current pay rate, pay frequency, employment type), deduction reference fields, benefit plan snapshot fields, termination fields, and any ADP Cost Number or custom labour distribution values. We also create Bullhorn Corporate Department records and Branch records mapped from ADP Locations and Departments. Bullhorn custom field creation requires admin access and must complete before the migration window opens. We coordinate with the customer's Bullhorn admin to create all required fields and validate the schema in Bullhorn's settings before data entry begins.
Sandbox migration and reconciliation
We run a full migration into Bullhorn's sandbox or a parallel test environment using production-like data volume. The customer's Bullhorn admin and HR lead reconcile record counts (Workers in, Candidates created, custom fields populated), spot-check 25-50 candidate records against the ADP source, and validate that Locations and Departments resolved correctly to Bullhorn Branches and Corporate Departments. Any mapping corrections — incorrect field type assignments, missing custom fields, incorrect org unit mapping — are identified and corrected before production migration begins. This step is the last opportunity to adjust the mapping without touching production data.
Bullhorn User provisioning and Owner mapping
We extract every distinct ADP Worker with a user account or manager role and match by email address against Bullhorn User accounts. Bullhorn Users represent recruiters, sales staff, and system administrators who will own Candidates, Jobs, and Placements. Any ADP Worker without a matching Bullhorn User goes to a reconciliation queue for the customer's Bullhorn admin to provision. Bullhorn requires active User accounts for assignment ownership on Candidate and Job records — migration cannot proceed past User provisioning without this step resolved.
Production migration in dependency order
We run production migration in record-dependency order: Bullhorn Users (validated from step 4), Branches and Corporate Departments (from ADP Locations and Departments), Candidates (from ADP Workers with ADP custom field values injected from the reference file), termination records and rehire eligibility flags, compensation reference data in custom fields, benefit plan snapshots, and time-off balance snapshots. Each phase emits a row-count reconciliation report before the next phase begins. Garnishment orders are not in scope for API migration — they appear on the manual reconciliation checklist delivered to the HR admin.
Cutover, delta sync, and workflow rebuild handoff
We freeze ADP writes during cutover, run a final delta migration of any Worker records modified during the migration window, then enable Bullhorn as the recruiting system of record. We deliver the ADP workflow inventory document — listing every active ADP workflow with its trigger events, conditions, actions, and approvers — to the customer's Bullhorn admin for rebuild in Bullhorn Automation Engine. We support a one-week hypercare window to resolve any data quality issues raised by the Bullhorn team. We do not rebuild ADP workflows as Bullhorn Automation Engine workflows inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
ADP Workforce Now
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between ADP Workforce Now and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across ADP Workforce Now and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between ADP Workforce Now 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
ADP Workforce Now: Per-client rate limits and concurrency limits — specific thresholds not publicly documented.
Data volume sensitivity
ADP Workforce Now 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 ADP Workforce Now to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your ADP Workforce Now 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 ADP Workforce Now
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.