HRMS migration

Migrate from PeopleForce to Bullhorn ATS & CRM

Field-level mapping, validation, and rollback between PeopleForce and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.

PeopleForce logo

PeopleForce

Source

Bullhorn ATS & CRM

Destination

Bullhorn ATS & CRM logo

Compatibility

64%

9 of 14

objects map 1:1 between PeopleForce and Bullhorn ATS & CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Migrating from PeopleForce to Bullhorn is a category shift as much as a platform switch. PeopleForce is an all-in-one SMB HRMS covering the full employee lifecycle, compensation, performance reviews, and recruitment. Bullhorn is a recruitment-focused ATS and CRM built for staffing agencies and recruiting teams, with no native HRIS layer for benefits, leave balances, or payroll. We map the overlap — Employee records become Bullhorn Candidates and Contacts, open Vacancies become Jobs, and application history becomes Placement records — but we flag that HR-adjacent data (leave policies, review scores, compensation history, onboarding checklists) has no direct Bullhorn equivalent and gets migrated as structured supplemental data in a dedicated section of the Bullhorn instance, or is documented for admin rebuild. Bullhorn's edition limits on custom objects (2 on Bullhorn ATS, 10 on Growth/Enterprise) constrain how much supplemental HR data can land as structured records versus a migration inventory document. We handle the PeopleForce API extraction at the 300 req/min IP rate limit, batch the load into Bullhorn via REST, and resolve Candidate-to-Contact linking before the final reconciliation pass.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

PeopleForce logo

PeopleForce

What's pushing teams away

  • Limited reporting and analytics features with insufficient data visualization options frustrate HR teams that need deeper workforce insights, cited in 7 separate reviews.
  • No native payroll calculation module forces teams to maintain a separate payroll system and accept integration complexity or manual re-entry.
  • Data export requires administrator rights — standard users cannot export employee data to Excel without elevated access, blocking self-service reporting.
  • Rigid feature design and visual UI bugs, particularly on input fields, create friction for HR teams with non-standard processes, especially for companies migrating from BambooHR.
  • Minimal mobile app functionality forces employees and managers to rely on desktop for most HR tasks, reducing adoption in field or remote-heavy teams.

Choosing

Bullhorn ATS & CRM logo

Bullhorn ATS & CRM

What's pulling them in

  • Agencies choose Bullhorn because it combines ATS and CRM in one platform, eliminating the need to switch between separate tools for candidate management and client relationship tracking.
  • The resume parser extracts contact details, work history, and skills into structured, searchable candidate profiles automatically without manual data entry, reportedly driving 24% more placements per recruiter.
  • Bullhorn's placement and split-billing model natively supports contract staffing workflows, handling start/end dates, overtime rules, and multi-party pay/charge rates in a single record.
  • The platform offers extensive third-party integrations through its Recruitment Cloud Marketplace, connecting with back-office, onboarding, and payroll systems used by staffing agencies.
  • 72% of Bullhorn customers are teams with fewer than 10 users, and Bullhorn's implementation team handles setup and data migration for small agencies going live within weeks.

Object mapping

How PeopleForce objects map to Bullhorn ATS & CRM

Each row shows how a PeopleForce 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.

PeopleForce

Employee

maps to

Bullhorn ATS & CRM

Candidate

1:1
Fully supported

PeopleForce Employee records map directly to Bullhorn Candidate records. Name, email, phone, address, employment status, start date, and employee type transfer to Bullhorn Candidate fields. We use the Candidate email address as the dedupe key during import. Active and inactive employment status maps to Bullhorn Candidate status values. Employee type (full-time, part-time, contractor) maps to Bullhorn's employmentType field. The PeopleForce employee ID is preserved in a custom field peopleforce_id__c for audit and reconciliation.

PeopleForce

Employee

maps to

Bullhorn ATS & CRM

Contact

1:1
Fully supported

PeopleForce Employee records that represent hiring managers, team leads, or approvers who should exist as business contacts in Bullhorn's CRM layer are mapped to Contact records in parallel with the Candidate mapping. The decision on which Employees map to Candidate versus Contact is made during scoping based on whether the Person is a job seeker or a client/contact in the Bullhorn context. Both mappings use the same source Employee record; the destination depends on the employee's role in the recruiting workflow.

PeopleForce

Position (Job Title)

maps to

Bullhorn ATS & CRM

Job (JobOrder)

lossy
Fully supported

PeopleForce Positions capture job title, department, employment type, and effective dates. Open positions in PeopleForce that represent recruiting needs map to Bullhorn Job records. The PeopleForce job title maps to the Bullhorn Job title; department maps to a Bullhorn custom field or Category. We configure the Job status, employment type, and salary range fields at migration time using the position's effective dates to set the Job startDate. Bullhorn Job has a much richer schema (skill requirements, qualifications, client corporation linking) that the position data populates partially.

PeopleForce

Recruitment / Vacancies

maps to

Bullhorn ATS & CRM

Job + CandidateProcess

1:1
Mapping required

PeopleForce PeopleRecruit vacancy records (job postings, application history, pipeline stages) map to Bullhorn Job records with candidate submissions tracked as submissions or CandidateProcess records. Open, closed, and draft vacancy status maps to Bullhorn Job status (Open, Closed, Hired). Application history migrates as Bullhorn submission records attached to the Job, preserving the candidate's application date and stage progression. Job board multiposting settings do not transfer; we document the configuration for admin rebuild in Bullhorn.

PeopleForce

Employee Profile (skills, bio, emergency contacts)

maps to

Bullhorn ATS & CRM

Candidate (custom fields or Custom Object)

lossy
Fully supported

PeopleForce profile photos, bio data, emergency contacts, and skills are stored as structured sub-objects on Employee. Bullhorn Candidate supports custom fields and Custom Objects for extended data. Skills migrate as Bullhorn Candidate custom fields (skillText fields or a skills Custom Object). Emergency contacts and profile metadata migrate to a Bullhorn Candidate Custom Object. Bullhorn ATS edition limits 2 Custom Objects per entity; Growth/Enterprise allows 10. We configure the Custom Object schema during migration scoping and validate against the customer's Bullhorn edition.

PeopleForce

Leave Policies and Requests

maps to

Bullhorn ATS & CRM

Custom Object (Leave Records)

1:1
Mapping required

PeopleForce leave balances and request history have no native Bullhorn equivalent because Bullhorn is a recruiting ATS, not an HRIS. Leave data migrates as a Bullhorn Custom Object (LeaveRecord) attached to the Candidate or Contact. We preserve leave type, balance, accrual date, and approval status as Custom Object fields. Policy definitions themselves are not migratable as code; we deliver a written policy inventory document for the admin to reconfigure in Bullhorn's policy settings if supported by their Bullhorn edition.

PeopleForce

Performance Reviews

maps to

Bullhorn ATS & CRM

Custom Object (Review Records)

1:1
Mapping required

PeopleForce performance review cycles, submitted review forms, and scores are migrated as a Bullhorn Custom Object (PerformanceReview) linked to the Candidate or Contact. Completed review scores and dates transfer; the review form builder configurations (questions, rating scales, weighting) do not migrate as code. Bullhorn's form builder is used to recreate review templates. The review Custom Object stores the submitted score, reviewer name, review period, and any free-text feedback as historical records.

PeopleForce

Documents (contracts, ID copies, certifications)

maps to

Bullhorn ATS & CRM

ContentDocument (linked to Candidate/Contact/Job)

1:1
Fully supported

PeopleForce employee documents (contracts, ID copies, certifications) migrate as Bullhorn ContentDocument records attached via ContentDocumentLink to the corresponding Candidate or Contact record. We extract document metadata (filename, upload date, document type) and content from PeopleForce's API. Bullhorn supports document storage per record; the customer's Bullhorn storage allocation applies to migrated documents.

PeopleForce

Kudos / Recognition

maps to

Bullhorn ATS & CRM

Custom Object (Recognition Records)

1:1
Mapping required

PeopleForce Kudos and Recognition records are migrated as a Bullhorn Custom Object (Recognition) linked to the Employee (Candidate/Contact). Bullhorn does not have a native recognition module. We preserve the giver, recipient, message, and timestamp as Custom Object fields. Bullhorn ATS edition limits 2 Custom Objects per entity; we coordinate the Recognition Custom Object placement during scoping to avoid conflicting with other custom object assignments.

PeopleForce

Onboarding and Offboarding Checklists

maps to

Bullhorn ATS & CRM

Task (checklist items) + Custom Object

1:1
Mapping required

PeopleForce onboarding and offboarding checklist task completion status and history migrate as Bullhorn Task records attached to the Candidate. Each checklist item becomes a Task with a status matching the completion state in PeopleForce. The checklist templates themselves are platform-specific and do not migrate; we document the checklist structure in a written handoff so the Bullhorn admin can rebuild onboarding task templates in Bullhorn Tasks or a custom onboarding workflow.

PeopleForce

Custom Fields (Employee object)

maps to

Bullhorn ATS & CRM

Custom Fields on Candidate/Contact/Job

lossy
Fully supported

PeopleForce custom fields on the Employee object are inventoried during discovery, typed (text, number, date, dropdown), and mapped to Bullhorn equivalent custom fields on the destination entity (Candidate, Contact, or Job). Bullhorn enforces a finite set of custom field edit types (free text, dropdown, checkbox, mini picker, and others per Bullhorn field options). We map PeopleForce data types to the nearest Bullhorn field type and flag any type conversions (e.g., PeopleForce multi-select dropdowns to Bullhorn multi-select picklist).

PeopleForce

Custom Fields (Position, Leave, Review objects)

maps to

Bullhorn ATS & CRM

Custom Object Fields

lossy
Fully supported

PeopleForce custom fields on Position, Leave, Performance Review, and other HR objects map to fields within Bullhorn Custom Objects created for each HR module. We pre-create the Custom Object schema in Bullhorn during the sandbox validation phase, including all custom field definitions, before importing any HR data. Bullhorn Growth and Enterprise editions allow 10 Custom Objects per entity with 55 fields each; Bullhorn ATS limits 2 Custom Objects per entity. We validate the destination edition against the migration scope before production load.

PeopleForce

Employment History

maps to

Bullhorn ATS & CRM

Candidate (employment records as custom fields or Custom Object)

1:1
Fully supported

PeopleForce employment history (prior positions, tenure, compensation changes) stored across linked records is consolidated into a Bullhorn Candidate employment section. We flatten prior position records into Bullhorn Candidate workHistory custom fields or a WorkHistory Custom Object per candidate. Compensation history is migrated as a separate Custom Object (CompensationHistory) attached to the Candidate, as Bullhorn does not have a native compensation tracking field on Candidate. The customer should confirm whether their Bullhorn edition supports the required number of custom objects before committing to a full compensation history migration.

PeopleForce

Workflows

maps to

Bullhorn ATS & CRM

None (written inventory only)

lossy
Mapping required

PeopleForce Workflows built on attribute-based triggers (e.g., trigger an onboarding task when a new hire start date arrives) do not migrate as automation code. Bullhorn's workflow engine uses a different trigger and action model. We deliver a written workflow inventory documenting every active PeopleForce workflow: its trigger, conditions, actions, and the recommended Bullhorn equivalent (Bullhorn Tasks + Automation rules or a Bullhorn partner workflow tool). The customer's Bullhorn admin or a Bullhorn implementation partner rebuilds them post-migration.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

PeopleForce logo

PeopleForce gotchas

High

Administrator-only data export gate

Medium

No native payroll module

Medium

300 req/min API rate limit on IP

Bullhorn ATS & CRM logo

Bullhorn ATS & CRM gotchas

High

ATS Growth edition has no API access

High

Attachments excluded from CSV bulk exports

Medium

Custom Object limits vary sharply by edition

Medium

Opportunity pipeline stages are recruitment-specific

Low

Resume parse quality varies by document format

Pair-specific challenges

  • Bullhorn has no native HRIS — HR data lacks a standard landing zone

    Bullhorn is an ATS and CRM, not an HRMS. Leave balances, performance review scores, compensation history, and onboarding checklists have no standard Bullhorn object equivalent. These records require custom objects, which are limited to 2 per entity on Bullhorn ATS and 10 per entity on Growth/Enterprise editions. We inventory all HR data during scoping, design a custom object schema that fits within the edition limit, and migrate HR data as structured custom object records where possible. If the migration scope exceeds the custom object limit, we deliver the overflow as a written data inventory for manual entry or future system integration.

  • PeopleForce admin-only data export gates migration scoping

    PeopleForce requires administrator rights to export employee data to Excel from the UI, which blocks standard HR managers from self-serve data pulls during migration UAT. Our extraction uses the PeopleForce API, which does not require admin rights, but any manual verification the customer attempts against the UI will fail for non-admin users. We identify which PeopleForce users need admin elevation during migration validation and coordinate with the customer's PeopleForce admin to grant temporary elevated access for the migration window.

  • PeopleForce 300 req/min API rate limit requires careful pacing

    The PeopleForce API enforces a 300 request-per-minute limit calculated per requesting IP address, returning HTTP 429 with a Retry-After header on limit breach. Large employee bases (500+ records with linked sub-objects) can exhaust this limit during a single full sync. We implement exponential backoff on 429 responses, batch requests in groups of 200 with a 10-second pause between batches, and track cumulative request count against the limit across the migration run. For accounts with large engagement histories (performance reviews, leave requests), we split extraction into object-specific batches to stay within rate limits.

  • Bullhorn custom object limits are edition-gated and require Bullhorn Support to create

    Bullhorn Custom Objects must be requested via a support ticket using a Custom Object Setup Spreadsheet (per Bullhorn KB documentation). Bullhorn ATS edition is limited to 2 custom objects per entity; Growth/Enterprise editions allow up to 10. Each Custom Object supports up to 55 fields across edit types (text, dropdown, checkbox, mini picker, and others). We cannot self-serve custom object creation in Bullhorn; the customer must submit the request and Bullhorn Support must provision the objects before we can begin the data load for HR supplemental data. This adds a 3-5 business day lead time to the migration schedule.

  • Resume parsing quality and candidate data completeness vary by source

    PeopleForce stores candidate data as structured Employee and Vacancy records, not parsed resume files. Bullhorn's resume parsing is designed for raw CV uploads and extracts structured fields from free-form documents. When PeopleForce candidate data is flattened into Bullhorn Candidate records, the structured PeopleForce fields (skills, experience, education) map to Bullhorn custom fields, but any unstructured notes or free-text profile fields in PeopleForce may not map cleanly to Bullhorn's parsed resume schema. We flag any unstructured data during discovery and either map it to Bullhorn Notes or document it as a manual review item for the Bullhorn admin.

Migration approach

Six steps for a successful PeopleForce to Bullhorn ATS & CRM data migration

  1. Discovery and edition gap analysis

    We audit the PeopleForce instance across all modules in scope: Employees, Profiles, Positions, Vacancies, Leave, Performance Reviews, Documents, Kudos, Onboarding/Offboarding checklists, and custom fields. We pair this with a Bullhorn edition assessment: Bullhorn Starter ($99/user) covers basic ATS functionality; Core ($165/user) adds custom fields, workflows, and integrations; Pro adds AI matching, automation, and real-time analytics. The discovery output is a written gap analysis identifying every PeopleForce object that has no standard Bullhorn equivalent, the required custom object count, and a Bullhorn edition recommendation that fits the migration scope.

  2. Bullhorn custom object provisioning

    We submit the Bullhorn Custom Object Setup Spreadsheet to Bullhorn Support for all HR data objects that have no standard Bullhorn equivalent (leave records, performance reviews, compensation history, recognition, onboarding tasks). Bullhorn Support provisions the custom objects within 3-5 business days. While awaiting provisioning, we build the Bullhorn sandbox environment, configure standard custom fields on Candidate, Contact, and Job, and design the field mapping for all structured PeopleForce data. All custom object schema is validated in Sandbox before production deployment.

  3. Data extraction under PeopleForce API rate limit

    We extract all PeopleForce data via API using the 300 req/min IP rate limit. Extraction runs in object-specific batches: Employees first (base records), then sub-objects (Profiles, Documents, Positions) as linked records, then HR module data (Leave, Reviews, Kudos, Checklists). We implement request pacing with a 200-record batch size and a 10-second pause between batches, and exponential backoff on 429 responses. We flag any PeopleForce records that require admin rights to access via API and coordinate temporary elevation with the customer's PeopleForce admin before extraction begins.

  4. Sandbox migration and reconciliation

    We run a full migration into the Bullhorn Sandbox using production-like data volume. The customer's Bullhorn admin reconciles record counts (Candidates, Contacts, Jobs, Placements, custom object records), spot-checks 25-50 random records against PeopleForce source data, and validates that custom object fields populated correctly. Any field mapping corrections, custom object schema adjustments, or data type conversion issues are resolved in Sandbox before production migration begins.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Custom Object schema deployed (via Bullhorn Support ticket), then Candidate records (with peopleforce_id__c preserved), then Contact records (for non-candidate employees), then Job records (from PeopleForce vacancies), then Placement records (from PeopleForce application history), then HR supplemental custom objects (Leave, Reviews, Compensation, Recognition, Onboarding), then Document attachments. Each phase emits a row-count reconciliation report. Bullhorn Support validates the final custom object count against the provisioned schema before we close the migration.

  6. Cutover, validation, and workflow handoff

    We freeze PeopleForce 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 PeopleForce Workflow inventory document, the Bullhorn custom object schema reference, and the HR data inventory (for any HR records that exceeded the custom object limit and were delivered as a written document). We support a one-week hypercare window for reconciliation issues. We do not rebuild PeopleForce workflows as Bullhorn automation rules inside the migration scope; that is a separate engagement or an internal Bullhorn admin task.

Platform deep dives

Context on both ends of the pair

PeopleForce logo

PeopleForce

Source

Strengths

  • Full employee lifecycle covered in one platform from hiring through offboarding.
  • Configurable workflow engine with attribute-based triggers not found in all SMB HRMS options.
  • Clean, structured employee directory with profile photos and searchable attributes.
  • Competitive pricing for small and mid-sized teams under 50 employees.
  • Multilingual support and localization for international teams.

Weaknesses

  • No native payroll module — requires a separate payroll system integration.
  • Reporting and analytics are limited, with insufficient visualization options for workforce insights.
  • Standard users cannot self-serve data exports; administrator rights are required for Excel exports.
  • Mobile app functionality is minimal compared to desktop, reducing remote employee engagement.
  • Workflow templates and review forms are not portable across HRMS platforms.
Bullhorn ATS & CRM logo

Bullhorn ATS & CRM

Destination

Strengths

  • Unified ATS and CRM on one platform purpose-built for staffing agencies, eliminating separate tools for candidates and clients.
  • Automated resume parsing extracts structured candidate data—contact details, work history, skills—into searchable profiles instantly.
  • Native placement and split-billing model handles contract staffing workflows including start/end dates and overtime rules.
  • Bullhorn Recruitment Cloud Marketplace offers 100+ pre-validated third-party integrations spanning the full recruiting lifecycle.
  • 24/7 global support coverage from 350+ support staff with dedicated account management included at all tiers.

Weaknesses

  • Widely regarded as old and bloated with an unintuitive interface and steep learning curve for new recruiters.
  • Slow page loads and performance lag cited in over 200 verified G2 reviews during high-volume recruiting periods.
  • Pricing is opaque—custom-negotiated per organization with significant upfront implementation fees that vary by deal.
  • ATS Growth edition excludes API access entirely, preventing automated data export without upgrading first.

Complexity grading

How hard is this migration?

Standard HRMS migration. 1 of 7 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across PeopleForce and Bullhorn ATS & CRM.

  • Object compatibility

    B

    1 of 7 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    7-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    PeopleForce: 300 requests per minute per requesting IP address.

  • Data volume sensitivity

    B

    PeopleForce doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your PeopleForce to Bullhorn ATS & CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about PeopleForce to Bullhorn ATS & CRM data migrations

Answers to the questions buyers ask most during PeopleForce to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your PeopleForce to Bullhorn ATS & CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between three and five weeks for accounts under 2,000 employees, no more than 5,000 vacancy/application records, and no HR supplemental custom object build. Migrations with large recruitment pipelines (10,000+ application records), full compensation history, performance review records, and Bullhorn custom object provisioning (3-5 business days via Bullhorn Support) move to eight to twelve weeks. The Bullhorn custom object provisioning lead time is outside our control and is the primary schedule variable for HR-heavy migrations.

Adjacent paths

Related migrations to explore

Ready when you are

Move from PeopleForce.
Land in Bullhorn ATS & CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day