HRMS migration

Migrate from Sage People to Bullhorn ATS & CRM

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

Sage People logo

Sage People

Source

Bullhorn ATS & CRM

Destination

Bullhorn ATS & CRM logo

Compatibility

83%

10 of 12

objects map 1:1 between Sage People and Bullhorn ATS & CRM.

Complexity

CModerate

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Sage People and Bullhorn serve fundamentally different functions in an organization's stack. Sage People is a cloud HRIS built on Salesforce for mid-size organizations managing the full employee lifecycle: onboarding, absence tracking, compensation history, and performance reviews. Bullhorn is an ATS and CRM designed for staffing and recruiting agencies, where the primary record is the Candidate and the primary workflow is the placement lifecycle. Migrating between them requires translating a Human Resources data model into a Talent Acquisition data model. We map Sage People Employees to Bullhorn Candidate records with an employee-status custom field, preserve department hierarchies as custom fields on ClientCorporation or as a custom object, and store compensation history and performance objectives as Bullhorn custom objects. Bullhorn ATS enforces custom object limits by edition (none on ATS Growth, two on ATS, ten on Enterprise), which shapes the schema design. Workflows, approval chains, and onboarding automation are not exportable from Sage People via API and must be rebuilt in Bullhorn using Bullhorn Automation or documented for admin rebuild post-migration.

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

Sage People logo

Sage People

What's pushing teams away

  • Steep initial configuration burden—every workflow, approval rule, and custom field must be set up manually, which delays time-to-value.
  • Non-intuitive UI for complex features like Enhanced Objectives and shift scheduling, leading to ongoing training costs.
  • Known issues with attachment link expiration (~2 minutes) and MFA/SSO edge cases frustrate end users in production.
  • The system does not export workflows or approval rules via API, forcing organizations to manually rebuild processes when switching platforms.
  • Implementation timelines stretch to months even for mid-sized organizations due to the configuration-first approach.

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 Sage People objects map to Bullhorn ATS & CRM

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

Sage People

Employee

maps to

Bullhorn ATS & CRM

Candidate

1:1
Fully supported

Sage People Employee records map to Bullhorn Candidate records. The core fields (first name, last name, email, phone, address, employment dates, job title, department) map directly to Bullhorn Candidate fields. We add a custom field employee_status__c set to true to distinguish migrated employees from pure recruiting candidates. The Bullhorn Candidate record is the parent record for all subsequent HR data in Bullhorn.

Sage People

Employee

maps to

Bullhorn ATS & CRM

Contact (on ClientCorporation)

1:1
Fully supported

For organizations that use Bullhorn to track internal employees as contacts on a ClientCorporation representing the employer entity, we create a ClientCorporation for the organization itself and attach Employee records as Contact records with a custom employment_status field. The customer's Bullhorn admin chooses this pattern during scoping based on whether Bullhorn is the sole HR record or dual-system with another HRIS.

Sage People

Department

maps to

Bullhorn ATS & CRM

ClientCorporation or custom object

lossy
Fully supported

Sage People Departments with parent-child hierarchies have no direct Bullhorn equivalent. We create a departments__c custom object (or use custom fields on ClientCorporation) with name, cost_center_code, and parent_department__c lookup. If the organization uses Bullhorn to track staffing clients, ClientCorporation is reserved for external clients and internal org structure uses the custom object. The customer decides during scoping.

Sage People

Absence and Leave Records

maps to

Bullhorn ATS & CRM

customObject1 (absence_records__c)

1:1
Fully supported

Leave balances, absence types, and accrual histories migrate to a Bullhorn custom object (customObject1s) linked to the Candidate record. Fields include absence_type__c (text), start_date__c, end_date__c, hours_taken__c, accrual_balance__c, and carryover__c. Bullhorn ATS Growth edition does not include custom objects—absence data is documented in a written inventory for manual re-entry. Custom objects require Bullhorn Support to provision before migration data load.

Sage People

Compensation History

maps to

Bullhorn ATS & CRM

customObject2 (compensation_history__c)

1:1
Mapping required

Effective-dated compensation records migrate as Bullhorn custom object instances (customObject2s) linked to the Candidate. Each record carries effective_date__c, base_salary__c, bonus_amount__c, currency__c, and change_reason__c. Custom compensation components (allowances, equity, commissions) migrate as additional custom fields on the compensation object. The customer confirms which compensation fields exist in their Sage People schema during discovery.

Sage People

Jobs and Positions

maps to

Bullhorn ATS & CRM

JobOrder

1:many
Fully supported

Sage People separates Job templates from filled Position records. Filled positions map to Bullhorn JobOrder records representing active or historical job openings. Job templates that do not have a corresponding vacancy are stored as a jobs_template__c custom object or documented in the handoff inventory. The mapping preserves the relationship between a position and its assigned Employee (Candidate) as a custom field on JobOrder.

Sage People

Objectives and Performance Reviews

maps to

Bullhorn ATS & CRM

customObject3 (performance_records__c)

1:1
Mapping required

Enhanced Objectives and performance review records migrate to Bullhorn customObject3s linked to the Candidate. We map objective_text__c, metrics__c, review_status__c, review_date__c, and overall_rating__c. Draft-state objectives with known Sage People state-machine issues are flagged in the mapping notes for admin review before insert. Bullhorn ATS Growth and ATS editions have limited custom object capacity—performance data may require a staged migration or written inventory approach.

Sage People

Documents

maps to

Bullhorn ATS & CRM

ContentDocument + ContentDocumentLink

1:1
Mapping required

Employee documents (contracts, certifications, ID copies) export from Sage People as Salesforce attachments with time-limited URLs that expire in approximately two minutes. We pre-fetch all document binary blobs in a batch queue immediately before Bullhorn insert, avoiding the URL expiry window entirely. Each document uploads to Bullhorn as ContentDocument, associated to the Candidate via ContentDocumentLink. File names and MIME types are preserved for admin reference.

Sage People

Candidate and Vacancy Records (Recruitment module)

maps to

Bullhorn ATS & CRM

Candidate + JobOrder

1:1
Fully supported

If the Sage People organization uses the Recruitment add-on module, candidate applications and vacancy postings migrate to Bullhorn Candidate and JobOrder records. Vacancy requirements and compensation bands stored as custom fields on the vacancy object map to equivalent custom fields on JobOrder. The Sage People candidate record maps directly to Bullhorn Candidate with application status preserved in a custom field.

Sage People

Time and Attendance (Timesheets module)

maps to

Bullhorn ATS & CRM

customObject4 (timesheet_entries__c)

1:1
Fully supported

Timesheet entries from Sage People Timesheets module migrate to Bullhorn customObject4s linked to the Candidate. Shift schedules and recurring patterns are not fully mappable if the destination does not use a shift management module—we document shift patterns as a written schedule reference for the admin to reconfigure in Bullhorn or a separate time-tracking tool. Shift patterns with complex recurring rules are not automated in this migration scope.

Sage People

Workflows and Approval Rules

maps to

Bullhorn ATS & CRM

Not migrated

1:1
Not supported

Sage People workflows and approval rules are Salesforce configuration objects that are not exposed via API. We cannot export them as data. During discovery we document every active workflow (leave approval chains, manager escalation paths, onboarding automation) as a written configuration inventory. Bullhorn Automation (formerly Herefish) or manual workflow setup in Bullhorn replaces these. The inventory document is delivered before cutover.

Sage People

Reports and Dashboards

maps to

Bullhorn ATS & CRM

Not migrated

1:1
Not supported

Sage People reports and dashboards are built on the Salesforce reporting engine and are not portable across platforms. We do not migrate them. We deliver a written index of every Sage People report with its name, object dependency, filters, and scheduling as reference for the customer's admin to rebuild in Bullhorn reporting or a third-party BI tool.

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.

Sage People logo

Sage People gotchas

High

Sandbox environments block all data exports

Medium

Attachment links expire after approximately two minutes

High

Workflows and approval rules are not API-exportable

Medium

Rate limit of 180 requests per minute with 10 calls per second burst

Low

Custom fields use inconsistent naming prefixes across orgs

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 ATS Growth has no custom objects

    Bullhorn ATS Growth edition does not support custom objects. If the destination is ATS Growth, we cannot store absence records, compensation history, or performance reviews as separate objects in Bullhorn. We handle this by mapping absence and compensation data to custom fields on the Candidate record where the field count allows, or by delivering a written data inventory for manual re-entry. Organizations needing full HR data migration must select Bullhorn ATS (two custom objects) or Enterprise (ten custom objects). We confirm the edition and custom object allocation during scoping before designing the schema.

  • Sage People attachment URLs expire in approximately two minutes

    Sage People generates time-limited URLs for document attachments stored in Salesforce. If the migration job processes records slower than this window, attachment URLs become invalid mid-migration and the document download fails. We pre-fetch all document URLs in a batch queue and download the binary blobs immediately before inserting into Bullhorn as ContentDocument records, avoiding the two-minute window entirely. We validate document count against source during dry-run to ensure no documents are skipped.

  • Sage People workflows and approval rules are not API-exportable

    Sage People does not expose workflow definitions or approval routing rules through its Salesforce API. Leave approval chains, manager escalation paths, and onboarding workflows cannot be transferred automatically. We document every active workflow during discovery as a configuration export with its trigger, conditions, actions, and assigned approvers. Bullhorn Automation (or the customer's admin configuring manually) rebuilds these post-migration. We do not automate the rebuild as part of the migration scope.

  • Bullhorn custom objects require Support to provision before data load

    Bullhorn custom objects must be initially configured by Bullhorn Support via a support ticket before they can accept data via the REST API. The Custom Object Setup Sheet with field names, types, and edit types must be completed and submitted before migration data load begins. We coordinate this provisioning step with the customer's Bullhorn admin during the setup phase. Migrations that skip this step hit API errors on first custom object insert.

  • Sage People sandbox environments block all data exports

    Sage People disables data export functionality in sandbox environments by design. We cannot run migration dry-runs or validate data mappings against a sandbox—we must connect to the production Salesforce org for all migration work. We scope the migration with read-only API access and coordinate a maintenance window for the final cutover export to minimize business disruption during the data read phase.

Migration approach

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

  1. Discovery and Bullhorn edition selection

    We audit the Sage People Salesforce org across all active modules (Core HR, Timesheets, Performance Management, Recruitment if present), custom fields (UD_, UDF_, IM_ prefixes), active workflows, document volume, and employee record count. We pair this with a Bullhorn edition assessment: ATS Growth (no custom objects) covers simple employee record migration; ATS ($99/user) supports two custom objects for absence and compensation; Enterprise supports ten custom objects for full HR data. The discovery output is a written migration scope, custom object allocation plan, and Bullhorn edition recommendation if the current edition constrains the migration.

  2. Custom object provisioning and schema design

    We coordinate with the customer's Bullhorn admin to submit the Custom Object Setup Sheet to Bullhorn Support, requesting the required custom objects (absence_records__c, compensation_history__c, performance_records__c, timesheet_entries__c) with their field definitions. Once Bullhorn Support confirms provisioning, we design the field-level schema in Bullhorn: data types, required fields, picklist values, and lookup relationships to the Candidate entity. Schema validation happens in the Bullhorn test environment before production data load.

  3. Sandbox migration and reconciliation

    We run a full migration into a Bullhorn test environment using production-like data volume. The customer's HR operations lead reconciles record counts (Employees in vs Candidates in, custom object instances in vs absence and compensation records sourced), spot-checks 25-50 random records against the Sage People source, and reviews document associations. Any mapping corrections, custom field type mismatches, or custom object field limit issues are resolved here before production cutover.

  4. Document pre-fetch and binary download

    We extract all Sage People document attachment URLs in a single batch job and download the binary blobs immediately before Bullhorn insert. This pre-fetch runs in a dedicated queue with a two-minute maximum window from URL generation to download completion. Each downloaded file is associated to the correct Candidate record in Bullhorn via ContentDocument and ContentDocumentLink on the same migration transaction.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Candidate base records (from Employees) first, then ClientCorporation or custom org structure, then custom object instances (absence records, compensation history, performance reviews, timesheet entries) linked to Candidates by ID map, then documents, then JobOrder records from Sage People vacancies. Each phase emits a row-count reconciliation report before the next phase begins. We throttle to Sage People's 180 req/min API limit with 10 calls/second burst cap throughout.

  6. Cutover, validation, and workflow rebuild handoff

    We freeze Sage People writes during the cutover window, run a final delta migration of any records modified during the window, then enable Bullhorn as the system of record for recruiting and HR data. We deliver the workflow configuration inventory document to the customer's admin team. We support a one-week hypercare window where we resolve any reconciliation issues. We do not rebuild Sage People workflows as Bullhorn Automation inside the migration scope; that is a separate engagement or an internal admin task.

Platform deep dives

Context on both ends of the pair

Sage People logo

Sage People

Source

Strengths

  • Salesforce-backed platform delivers enterprise-grade security, availability, and global data center redundancy.
  • Highly flexible object model supports deep customization for complex HR structures and multi-country compliance.
  • Modular add-on architecture lets organizations pay only for Performance Management, Recruitment, or Expenses when needed.
  • Self-service employee and manager portals reduce HR administrative workload for leave requests and approvals.

Weaknesses

  • Every feature requires manual configuration—out-of-the-box workflows are minimal and approval rules must be built from scratch.
  • Workflows and approval rules cannot be exported via API, creating significant re-implementation effort when migrating away.
  • Known production bugs (attachment link expiry, MFA/SSO prompts, German translation errors) remain unfixed across multiple release cycles.
  • UI complexity for advanced features demands ongoing training investment that smaller HR teams may not budget for.
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?

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

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Sage People 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

    C

    Sage People: 180 requests per minute with a maximum burst of 10 calls per second.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Sage People 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 Sage People to Bullhorn ATS & CRM data migrations

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

Can't find your answer?

Walk through your Sage People 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 organizations under 2,000 Employees with no custom object requirements. Migrations with compensation history, multi-tier department hierarchies, document archives over 5,000 files, or Performance Management module data move to eight to fourteen weeks because of custom object provisioning, document pre-fetch and re-association work, and multi-phased validation. Bullhorn's own onboarding team runs parallel to our migration work, which can compress the total time to operational go-live.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Sage People.
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