HRMS migration
Field-level mapping, validation, and rollback between People First and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
People First
Source
Bullhorn ATS & CRM
Destination
Compatibility
5 of 12
objects map 1:1 between People First and Bullhorn ATS & CRM.
Complexity
CModerate
Timeline
6-8 weeks
Overview
Moving from People First to Bullhorn crosses two fundamentally different product categories. People First is a niche HRMS positioned around workplace conflict resolution and employee experience for small UK teams at a flat £6/month. Bullhorn is a staffing-industry ATS and CRM used by recruitment agencies and staffing firms globally, with per-user licensing from $99-$315/month and a REST API built for high-volume candidate and placement data. The migration is constrained by People First's absence of a documented public API, which means we work from CSV exports extracted by the customer and validated against any discovered schema. We map People First employee records to Bullhorn Candidate profiles, preserve departmental structures in Bullhorn Corporate custom objects or native fields, migrate recognition and engagement data to Bullhorn Notes and Tasks, and flag Benefits and PTO balances as requiring Bullhorn Custom Object configuration. Bullhorn's tier-based Custom Object limits (ATS Growth: none, Bullhorn ATS: 2, Front Office Growth/Enterprise: 10) constrain how many employer-specific fields can migrate natively versus requiring manual post-migration re-entry. We do not migrate People First workflows or automations as code; 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 People First 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.
People First
Employee
Bullhorn ATS & CRM
Candidate
1:1People First employee records map to Bullhorn Candidate profiles. We extract name fields (firstName, lastName), job title, department reference, start date (dateOfHire), email, and phone. The Bullhorn Candidate record is the primary person record in Bullhorn's staffing data model. We resolve the target Candidate corporate ownership (the Bullhorn user or entity that owns the candidate record) from the migration user context. Custom employer-specific employee properties require field-by-field validation against any discovered People First export schema before migration.
People First
Employee
Bullhorn ATS & CRM
User (for People First admin users)
1:1People First user accounts (admin and end-user) with active status map to Bullhorn User records. We match by email address as the dedupe key. People First role assignments (admin, manager, employee) map to Bullhorn UserType and associated Bullhorn permission profiles. Users without an active Bullhorn license assignment are provisioned as inactive User records for reconciliation.
People First
Department
Bullhorn ATS & CRM
Custom Object (Department) or Text Field on Candidate
lossyOrganisational structure from People First maps to Bullhorn via a custom Department object (Front Office Growth/Enterprise) or as a text field on Candidate if the Bullhorn edition does not support Custom Objects (ATS Growth has zero custom objects, Bullhorn ATS has 2). We request the customer's Bullhorn edition during scoping and design the department mapping accordingly. Parent-child department hierarchy is preserved in custom fields or a separate Department lookup object.
People First
Benefits
Bullhorn ATS & CRM
Custom Object (Benefit) on Candidate
lossyBenefits data from People First (health, dental, retirement plans) requires Bullhorn Custom Object configuration because Bullhorn does not have a native Benefits object. We design a Benefit custom object with fields for plan type, provider, enrollment date, and coverage level, attached to the Candidate record. ATS Growth editions without custom object support flag Benefits for manual post-migration re-entry. We request the customer provides the specific benefit plan inventory during discovery.
People First
PTO Balance
Bullhorn ATS & CRM
Custom Object (TimeOffBalance) on Candidate
lossyPTO or time-off balance data maps to a Bullhorn Custom Object (TimeOffBalance) on Candidate with fields for leave type, accrued balance, used balance, and year-to-date accrual. Accrual history truncation risk applies if the People First export only provides current balances without historical accrual records. We validate the export against a sample of 10-20 employee records during discovery to confirm data completeness.
People First
Recognition or Engagement Data
Bullhorn ATS & CRM
Note + Task (with custom fields)
1:1People First recognition and employee engagement records map to Bullhorn Note records (for recognition awards, kudos, and milestone acknowledgments) and Task records (for engagement surveys and pulse check activities). Recognition type, date, and issuer map to custom fields on the Note. We preserve the original People First timestamp as the Note body or ActivityDate on the Task. Value-level terminology mapping (People First recognition categories to Bullhorn-compatible labels) is resolved during the transformation phase with customer validation.
People First
Employee Custom Fields
Bullhorn ATS & CRM
Custom Object Fields on Candidate or Separate Custom Object
lossyPeople First custom employer-specific employee fields have no publicly documented schema. We request the customer provides a field inventory during scoping (field names, data types, picklist values). Custom fields map to Bullhorn custom object fields on Candidate (customObject1s-customObject10s depending on edition) or as direct custom fields on the Candidate entity if the Bullhorn edition supports custom Candidate fields. ATS Growth: no custom objects available. Bullhorn ATS: 2 custom objects maximum. Front Office Growth/Enterprise: 10 custom objects with up to 55 fields each.
People First
User Role and Permission Data
Bullhorn ATS & CRM
Bullhorn User Profile + Custom Field
1:1People First role assignments (admin, HR manager, employee tier) map to Bullhorn User profile assignments and a custom text field role_source__c preserving the original People First role name. Bullhorn's standard profile model (Standard, Recruiter, Sales, API Only, Read Only) requires the customer to confirm the target role mapping during scoping. Role hierarchies in People First that do not map directly to Bullhorn profiles are documented in the handoff summary.
People First
Document (Contract, Policy)
Bullhorn ATS & CRM
ContentDocument + ContentVersion
lossyEmployee documents (employment contracts, policy acknowledgements) stored in People First require file-level extraction from the customer's export. We ingest documents as Bullhorn ContentVersion records and link them via ContentDocumentLink to the corresponding Candidate record. The file naming convention from People First export must include or be mappable to a Candidate identifier (email or employee ID) for linking. Documents without a resolvable candidate reference go to a reconciliation queue.
People First
Conflict Resolution Record
Bullhorn ATS & CRM
Custom Object (ConflictCase) or Note
lossyPeople First conflict resolution case records (mediation requests, grievance filings, resolution outcomes) are a core People First object with no direct Bullhorn equivalent. We map these to a Bullhorn Custom Object (ConflictCase) with fields for case type, parties involved (linked via Candidate lookups), filing date, status, and resolution summary. Bullhorn ATS and ATS Growth editions may lack custom object capacity; in those cases, conflict records are mapped to Note records with a custom type field for classification, and the customer is advised on the limitation.
People First
Org-Wide Settings
Bullhorn ATS & CRM
Bullhorn Corporate Settings
lossyPeople First organisational settings (company name, address, HR policy configurations) map to Bullhorn Corporate (ClientCorporation) settings and org-level configuration. The primary ClientCorporation record in Bullhorn holds the company-level data. Bullhorn's Corporate settings include industry classification, address, and billing contact fields that cover the standard org-wide configuration scope.
People First
Activity History (Calls, Meetings, Tasks)
Bullhorn ATS & CRM
Task + Event
1:1People First engagement activity records (if exported from the platform) map to Bullhorn Task records for discrete actions and Event records for scheduled meetings. Task records use TaskSubtype (Call, Email, Task) to classify the activity type. We preserve the original People First timestamp as ActivityDate on Task or StartDateTime on Event. Bullhorn's REST API is used for activity ingestion with batch chunking and rate-limit handling. Any People First activity data not captured in the export is noted as a gap in the migration report.
| People First | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Employee | Candidate1:1 | Fully supported | |
| Employee | User (for People First admin users)1:1 | Fully supported | |
| Department | Custom Object (Department) or Text Field on Candidatelossy | Fully supported | |
| Benefits | Custom Object (Benefit) on Candidatelossy | Mapping required | |
| PTO Balance | Custom Object (TimeOffBalance) on Candidatelossy | Fully supported | |
| Recognition or Engagement Data | Note + Task (with custom fields)1:1 | Fully supported | |
| Employee Custom Fields | Custom Object Fields on Candidate or Separate Custom Objectlossy | Fully supported | |
| User Role and Permission Data | Bullhorn User Profile + Custom Field1:1 | Fully supported | |
| Document (Contract, Policy) | ContentDocument + ContentVersionlossy | Fully supported | |
| Conflict Resolution Record | Custom Object (ConflictCase) or Notelossy | Fully supported | |
| Org-Wide Settings | Bullhorn Corporate Settingslossy | Fully supported | |
| Activity History (Calls, Meetings, Tasks) | Task + Event1: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.
People First gotchas
No publicly documented API confirmed in research
Extremely limited review corpus for migration planning
Custom field schema not publicly documented
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 People First export audit
We conduct a structured discovery session with the customer covering record counts (employees, departments, recognition entries, benefit enrollments, PTO balances), any known custom fields, existing integrations, and People First admin portal access. We request the customer to extract all available CSV exports from the admin portal and provide screenshots of any custom field configurations. We validate the export completeness against a sample of 20-30 employee records to confirm that identifiers, dates, and custom fields are present. This phase produces a written data inventory and flags any export gaps before migration design begins.
Bullhorn edition confirmation and destination schema design
We confirm the customer's Bullhorn edition (ATS Growth, Bullhorn ATS, or Front Office Growth/Enterprise) to determine the custom object budget. We design the Bullhorn destination schema: Candidate fields mapped from People First employee records, Custom Objects for Benefits, PTO, and conflict resolution (subject to edition limits), Department mapping as custom object or text field, and Document handling via ContentDocument/ContentVersion. Bullhorn Custom Objects must be requested through Bullhorn Support using the Custom Object Setup Spreadsheet; we prepare this spreadsheet as part of the migration preparation.
Transformation logic development and sandbox trial
We build the transformation pipeline that maps People First CSV fields to Bullhorn REST API payloads. This includes field-type mapping (People First date formats to Bullhorn ISO 8601 timestamps, People First picklist values to Bullhorn CustomObject text fields), Candidate dedupe logic using email as the primary key, and custom object field resolution (customObject1s.text1 through customObject10s fields). We run a trial migration into a Bullhorn Sandbox using production-like data volume to validate record counts, identify validation rule failures, and confirm that Bullhorn field-level security is bypassed for the migration user. The customer reviews sandbox results and signs off before production migration.
Production migration in dependency order
We run production migration in record-dependency order. Corporate/ClientCorporation (org-level settings) first. Users next (with role mapping validated). Candidate records with all standard and custom fields third. Activities (Notes, Tasks, Events) via Bullhorn REST API with batch chunking and rate-limit handling. Documents (ContentVersion then ContentDocumentLink) last. Each phase emits a reconciliation report (record count, error count, validation failure detail) before the next phase begins. The customer freezes People First writes during the production migration window to prevent delta records from being missed.
Cutover, validation, and Workflow rebuild handoff
We perform a final delta migration of any records created or modified in People First during the cutover window. We deliver a reconciliation summary comparing People First source record counts against Bullhorn destination record counts with a gap list. We deliver a written Workflow and Automation Inventory document listing any identified People First workflows, automations, or scheduling rules that do not migrate to Bullhorn. We do not rebuild People First automations as Bullhorn automations inside the migration scope; the inventory is the handoff for the customer's Bullhorn admin or implementation partner.
Platform deep dives
People First
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate HRMS migration. 1 of 7 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across People First and Bullhorn ATS & CRM.
Object compatibility
1 of 7 objects need a manual workaround.
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
People First: Not publicly documented.
Data volume sensitivity
People First 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 People First to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your People First 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 People First
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.