HRMS migration
Field-level mapping, validation, and rollback between Workforce Analytics and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Workforce Analytics
Source
Bullhorn ATS & CRM
Destination
Compatibility
7 of 12
objects map 1:1 between Workforce Analytics and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Migrating from Workforce Analytics to Bullhorn is a domain shift from a general workforce analytics platform to a recruiting-specific ATS and CRM. Workforce Analytics stores employee records with tenure history, performance metrics, compensation bands, and reporting hierarchy; Bullhorn stores Candidates, JobOrders, Placements, and ClientCorporations with native fields designed for the recruiting workflow. We map Employees to Candidates, organizational units to ClientCorporations, and positions to JobOrders, then use Bullhorn custom fields and custom objects to carry performance ratings, compensation data, and flight-risk indicators that have no native Bullhorn equivalent. The manager reporting chain is reconstructed via a custom Manager lookup field on the ClientContact record. We do not migrate Bullhorn native workflows, automation rules, or Canvas analytics dashboards as code; we deliver a written inventory of these for the customer's admin team to rebuild.
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 Workforce Analytics 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.
Workforce Analytics
Employee
Bullhorn ATS & CRM
Candidate
1:1Workforce Analytics Employee records map to Bullhorn Candidate. We extract firstName, lastName, email, phone, jobTitle, and hireDate into Bullhorn Candidate fields. The source employee ID is stored in a Bullhorn custom text field as a reference key for downstream lookups. Active employees in the recruiting pipeline become Bullhorn Candidates; former employees are migrated as Candidates with status set accordingly.
Workforce Analytics
Employee (internal contact)
Bullhorn ATS & CRM
ClientContact
1:1Workforce Analytics employees who also function as internal contacts, HR liaisons, or approvers within the Bullhorn system map to ClientContact. The mapping uses the same employee fields but targets the ClientContact entity so that Bullhorn can track relationships with internal stakeholders separate from external candidate and client records.
Workforce Analytics
Department / Business Unit
Bullhorn ATS & CRM
ClientCorporation
1:1Workforce Analytics organizational units and departments map to Bullhorn ClientCorporation. The department name becomes the ClientCorporation name, and the business sector becomes the industry classification. Department headcount and division hierarchy are stored in Bullhorn custom fields. A custom text field holds the parent department identifier for hierarchy reconstruction.
Workforce Analytics
Position / Role
Bullhorn ATS & CRM
JobOrder
1:1Workforce Analytics positions map to Bullhorn JobOrder. The position title becomes the jobTitle, the employment type (full-time, contract, part-time) maps to employmentType, and the jobDescription field carries the position summary. If the customer uses Bullhorn for both internal staffing and external candidate placement, each Workforce Analytics position becomes a JobOrder with status reflecting its current filling state.
Workforce Analytics
Reporting Hierarchy / Manager
Bullhorn ATS & CRM
ClientContact (Manager lookup)
lossyThe Workforce Analytics manager-employee relationship is mapped by adding a custom Candidate or ClientContact text field (managerName__c) and optionally a Manager ID lookup field. After migration, Bullhorn's hierarchy is reconstructed by matching manager IDs from the source to Bullhorn user or contact records. Bullhorn does not have a native employee org chart; this configuration enables reporting queries by manager name.
Workforce Analytics
Employment Status
Bullhorn ATS & CRM
Candidate custom picklist field
lossyWorkforce Analytics employmentStatus (active, on-leave, terminated, suspended) has no native Bullhorn equivalent. We create a Bullhorn Candidate custom picklist field (employmentStatus__c) with values matching the source status vocabulary. A workflow or Bullhorn Automation rule can be configured by the customer's admin to set Candidate status (active, archived) based on employmentStatus__c after migration.
Workforce Analytics
Employment History (time-slice records)
Bullhorn ATS & CRM
Candidate Work History
1:manyEach Workforce Analytics effective-dated employment change (position change, status change, compensation adjustment, promotion) is stored as a separate time-slice record. We map these to Bullhorn Candidate WorkHistory entries with the effective date as startDate, the next slice date minus one day as endDate, and the position title as jobTitleName. Bullhorn WorkHistory is designed for recruiting resumes, not HRMS time-slices; we migrate the data as-is and store the original effective date in a custom field for audit fidelity.
Workforce Analytics
Compensation / Pay Data
Bullhorn ATS & CRM
Candidate custom fields
lossyWorkforce Analytics compensation fields (salary, hourlyRate, payFrequency, bonus) map to Bullhorn Candidate custom fields. We use numeric field types for salary and hourly rate rather than text to preserve analytical capability. A Bullhorn custom text field holds the original payFrequency value for reference. Bullhorn edition determines whether these are simple custom fields or custom object entries; we recommend simple custom fields on the Candidate entity for compensation data to avoid consuming custom object capacity.
Workforce Analytics
Performance Rating
Bullhorn ATS & CRM
Custom Object (Performance Review)
1:1Workforce Analytics performance ratings (ratings, scores, review dates, review cycle) map to a Bullhorn Custom Object linked to the Candidate record. Bullhorn custom objects support up to 10 on Front Office Growth and Enterprise editions, but only 2 on standard Bullhorn ATS and none on ATS Growth. We create this custom object only where the customer's Bullhorn edition supports it and note the constraint during scoping. Performance review scores are stored as numeric fields; review dates use Bullhorn date field type.
Workforce Analytics
Retention / Flight Risk
Bullhorn ATS & CRM
Custom Object (Retention Indicators)
1:1Workforce Analytics retention signals such as flight risk, tenure, engagement score, and last review date map to a Bullhorn Custom Object linked to the Candidate. Tenure is computed from originalHireDate in Workforce Analytics and stored as a numeric field in Bullhorn. Bullhorn has no native engagement scoring; this custom object carries the source signals so that the customer retains the data even if the scoring model is rebuilt in Bullhorn Automation post-migration. Subject to the same Bullhorn edition limits as the Performance Review custom object.
Workforce Analytics
Candidate (sourced externally)
Bullhorn ATS & CRM
Candidate (no split)
1:1Candidates sourced externally to Workforce Analytics and tracked as external recruits map directly to Bullhorn Candidate without transformation. Email, phone, skills, and work history migrate via the same Candidate work history mapping described above. The source system of record identifier is preserved in a custom Bullhorn field so that record lineage is traceable post-migration.
Workforce Analytics
Custom HRMS Fields
Bullhorn ATS & CRM
Bullhorn Custom Fields or Custom Objects
lossyWorkforce Analytics custom HRMS fields that do not map to standard Bullhorn Candidate or JobOrder fields are evaluated during discovery. Fields with simple data types (text, number, date, picklist) become Bullhorn Candidate or JobOrder custom fields. Fields with complex structures or that reference other HRMS entities become Bullhorn Custom Objects. The customer chooses which custom fields to prioritize; Bullhorn's 55-field limit per custom object and the 2-10 custom object cap by edition may require the customer to defer some low-priority fields to post-migration.
| Workforce Analytics | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Employee | Candidate1:1 | Fully supported | |
| Employee (internal contact) | ClientContact1:1 | Fully supported | |
| Department / Business Unit | ClientCorporation1:1 | Fully supported | |
| Position / Role | JobOrder1:1 | Fully supported | |
| Reporting Hierarchy / Manager | ClientContact (Manager lookup)lossy | Fully supported | |
| Employment Status | Candidate custom picklist fieldlossy | Fully supported | |
| Employment History (time-slice records) | Candidate Work History1:many | Fully supported | |
| Compensation / Pay Data | Candidate custom fieldslossy | Fully supported | |
| Performance Rating | Custom Object (Performance Review)1:1 | Fully supported | |
| Retention / Flight Risk | Custom Object (Retention Indicators)1:1 | Fully supported | |
| Candidate (sourced externally) | Candidate (no split)1:1 | Fully supported | |
| Custom HRMS Fields | Bullhorn Custom Fields or Custom Objectslossy | 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.
Workforce Analytics gotchas
Award/EBA-encoded pay calculations are platform-specific
Roster optimization is project-output, not transactional data
Audit-pack PDFs have legal retention implications
Engagement-led rather than self-serve subscription
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 scoping
We audit the Workforce Analytics data model: total employee records, org unit count and nesting depth, employment history volume (number of effective-dated time-slice records), custom HRMS fields, performance and compensation data structures, and the manager reporting chain. We pair this with a Bullhorn edition assessment: Starter ($99/user), Core ($165/user), or Pro. We determine which employees will be migrated as Bullhorn Candidates versus held as inactive records, which Bullhorn edition supports the required custom object count, and whether Bullhorn Back Office or Onboarding modules are in scope. Discovery output is a written migration scope with object inventory, edition recommendation, and a flag on any custom objects that exceed Bullhorn ATS limits.
Schema design and custom field provisioning
We design the Bullhorn destination schema before any data moves. This includes creating Bullhorn custom fields on the Candidate entity for employmentStatus, originalHireDate, and compensation fields (salary, hourlyRate, payFrequency, bonus). We create the Bullhorn custom objects for performance reviews and retention indicators only where the Bullhorn edition supports them (minimum Front Office Growth for more than 2 custom objects). We configure the Candidate WorkHistory template so that the field labels match the source vocabulary. We add the manager lookup field and confirm the department-to-ClientCorporation mapping. Bullhorn's REST API meta endpoint is called to confirm field availability before provisioning.
Sandbox migration and record reconciliation
We run a full migration into Bullhorn Sandbox using a representative data sample. The customer's HR lead or system administrator reviews 50-100 migrated records, spot-checking candidate fields, work history entries, compensation custom fields, and manager assignments against the Workforce Analytics source. We reconcile record counts for employees, departments, positions, and work history slices. Any field type mismatches (date fields stored as text, picklist values that differ between source and destination) are corrected in the schema design before production migration begins. The customer signs off on the sandbox output before we proceed.
Production migration: core entities in dependency order
We run production migration in Bullhorn in dependency order: ClientCorporation (departments first so that AccountId is resolved on Candidate), Candidate (with custom fields and originalHireDate resolved), JobOrder (positions linked to ClientCorporation), and ClientContact (for internal HR contacts). We use Bullhorn REST API with batch chunking and exponential backoff on rate limit responses. Bullhorn's REST API supports bulk create and update; for large volumes we process in batches of 500-1,000 records and reconcile row counts after each batch. A Bullhorn custom field stores the source Workforce Analytics employee ID as a permanent reference key.
Production migration: work history and performance records
Workforce Analytics employment time-slice records are processed as separate WorkHistory inserts against each Candidate. Each slice's effective date becomes the WorkHistory startDate; the endDate is computed as one day before the next slice's effective date. Performance ratings and retention indicators are inserted into the Bullhorn custom objects with a link to the parent Candidate record. If the Bullhorn edition does not support the required custom object count, we fall back to custom fields on the Candidate record and note the constraint in the migration report. A custom field on each record flags whether performance data was migrated as a custom object or a custom field for downstream reporting clarity.
Cutover, delta sync, and workflow rebuild handoff
We freeze Workforce Analytics 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 any Bullhorn workflows, automation rules, and Bullhorn Automation cadences that require rebuild, with a recommended equivalent for each. Bullhorn Canvas dashboards do not migrate; we recommend the customer review Bullhorn Analytics options during the post-migration onboarding with Bullhorn Learning. We provide a one-week hypercare window to resolve any record reconciliation issues. We do not rebuild Bullhorn workflows or provide post-migration admin training as standard scope; these are separate engagements.
Platform deep dives
Workforce Analytics
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. 2 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 Workforce Analytics and Bullhorn ATS & CRM.
Object compatibility
2 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
Workforce Analytics: Not publicly documented — typical SaaS limits assumed and confirmed during scoping..
Data volume sensitivity
Workforce Analytics 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 Workforce Analytics to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Workforce Analytics 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 Workforce Analytics
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.