HRMS migration

Migrate from Personio to Bullhorn ATS & CRM

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

Personio logo

Personio

Source

Bullhorn ATS & CRM

Destination

Bullhorn ATS & CRM logo

Compatibility

42%

5 of 12

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

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Personio and Bullhorn serve fundamentally different buyers. Personio is an all-in-one HRIS for European SMEs managing internal employees, payroll, and light recruiting. Bullhorn is a purpose-built ATS and CRM for staffing and recruitment agencies managing external candidates across client job orders. The migration from Personio to Bullhorn is a recruiting-focused data move, not a full HRIS replacement. We extract active recruiting Positions, their associated Applications, and Candidate records from Personio, then map them into Bullhorn's Candidate, ClientCorporation, and JobOrder entities. Employee records that represent internal staff (not recruiting pipeline) do not have a direct Bullhorn equivalent and are flagged for manual entry or a separate HRIS implementation. Absence records, performance reviews, goals, and compensation history from Personio are evaluated individually against Bullhorn's data model; most have no standard Bullhorn object and are noted in the written inventory for the customer to handle separately. Bullhorn's Custom Objects are supported via the REST API but must be pre-provisioned through Bullhorn Support before migration begins. Workflows, approval chains, absence request automations, and custom application form attributes not exposed by the Personio API do not migrate; we deliver a written inventory for the customer's Bullhorn admin to 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

Personio logo

Personio

What's pushing teams away

  • Report customization is severely limited — users cannot copy reports between views or apply advanced filters, forcing repeated manual work that outgrows the platform over time.
  • Limited customisation of workflows and fields frustrates companies with non-standard HR processes, complex org structures, or multiple contract types that do not fit Personio's templates.
  • Performance management and feedback tools are considered thin — absence of robust 360-degree review cycles, competency frameworks, and development planning drives churn for HR teams with mature performance cultures.
  • Navigation becomes a friction point at scale — users report difficulty locating documents, nested settings, and specific configuration panels, especially for non-standard HR scenarios.
  • Recruiting analytics contain discrepancies — multiple reviews cite incorrect figures in recruiting reports, undermining data-driven hiring decisions.

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

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

Personio

Recruiting Position

maps to

Bullhorn ATS & CRM

JobOrder

1:1
Fully supported

Personio Recruiting Positions map to Bullhorn JobOrder. The position's title, department, location, status (open/closed/hired), and hiring manager map to Bullhorn's title, clientCorporation (created from the company's own ClientCorporation record or a designated internal client), address, status, and assignedUser fields. We flag any Personio position that represents an internal role (not a client engagement) as requiring a separate Bullhorn client structure or manual categorization. JobOrder custom fields are available via Bullhorn REST API for any Personio custom position attributes.

Personio

Application

maps to

Bullhorn ATS & CRM

Candidate

1:1
Fully supported

Personio Applications map to Bullhorn Candidate records. Each application is a distinct Candidate record with its own application history (status, applied date, interview notes). The Personio candidate's name, email, phone, and resume link map to Bullhorn Candidate fields. We link each Candidate to the target JobOrder via a JobSubmission record. Active applications migrate as Candidates with a current JobSubmission; historical applications migrate as Candidates with a closed JobSubmission preserving the original outcome.

Personio

Employee

maps to

Bullhorn ATS & CRM

Candidate or User (split by use case)

1:many
Fully supported

Personio Employees do not map 1:1 to Bullhorn Candidates because Personio manages internal staff and Bullhorn manages external candidates. If the migration scope includes existing employees who will be placed by the agency, we create Bullhorn Candidate records with an internal-employee flag (via customObject1 or a custom field). If the agency's own staff records need to exist in Bullhorn for system administration or internal recruiter tracking, we create Bullhorn User records and link them as assignedUser on JobOrder. We define the split rule during scoping based on whether the agency uses Bullhorn to manage its own headcount or only external candidate pipelines.

Personio

Employee Document (Contract, Certificate, ID)

maps to

Bullhorn ATS & CRM

Candidate Attachment via ContentDocumentLink

lossy
Fully supported

Personio employee documents (contracts, certificates, ID scans) retrieve via the Personio API as binary blobs or download URLs. We download each document, rename it with a consistent convention (CandidateName_DocumentType_Date), and upload to Bullhorn as a ContentDocument linked via ContentDocumentLink to the associated Candidate record. Document naming and folder structures in Personio vary by company configuration, so we flatten them into a flat list with descriptive filenames at the destination. Resume files map to the Candidate's primary resume field in Bullhorn.

Personio

Absence Record

maps to

Bullhorn ATS & CRM

Note or Custom Object

1:1
Fully supported

Personio absence records (vacation, sick leave, other absence types) have no native equivalent in Bullhorn ATS. Bullhorn does not include an absence management module. We evaluate each absence type during scoping: if absence data is relevant to the staffing context (e.g., a candidate's availability or a contractor's leave history), we map it to a Bullhorn Custom Object (customObject1) with fields for absence type, start date, end date, and status. If absence data is internal HR data unrelated to the staffing pipeline, we exclude it from the migration scope and note it in the written inventory for the customer's HR admin.

Personio

Performance Review

maps to

Bullhorn ATS & CRM

Note or Custom Object

1:1
Fully supported

Personio performance review records (review cycle, ratings, scores, status) have no standard Bullhorn equivalent. Bullhorn is not an HR performance management platform. We map performance review status and overall rating to a Bullhorn Custom Object attached to the Candidate record if the agency needs to preserve historical performance data for placement decisions. Review form question text and competency ratings that require free-text storage are noted as out-of-scope for migration and documented for manual re-entry or a separate performance tool implementation.

Personio

Payroll Record

maps to

Bullhorn ATS & CRM

Not Migrated

lossy
Fully supported

Personio payroll records (salary, bonus, compensation, effective-dated pay changes) are out of scope for Bullhorn migration. Bullhorn ATS does not include payroll functionality and is not a replacement for a payroll system. If the agency needs to track pay rate information for contractors or placed candidates, we map the most recent pay rate to a Bullhorn Custom Object field (customObject1 payRate or billingRate) rather than a full payroll history. Full payroll records remain in Personio or migrate to a dedicated payroll platform separately.

Personio

Goal and OKR

maps to

Bullhorn ATS & CRM

Not Migrated

lossy
Fully supported

Personio company-level goals and individual employee OKRs have no Bullhorn equivalent and are not migrated. Bullhorn does not include a goal-management or OKR module. If the agency's recruiting team uses goals and objectives as part of recruiter performance tracking, we document the existing goal structure in the written inventory for manual reconfiguration in Bullhorn or a separate performance management tool. Goal alignment hierarchies from Personio are noted as not transferable.

Personio

Department and Org Structure

maps to

Bullhorn ATS & CRM

ClientCorporation or Note

1:1
Fully supported

Personio organizational departments and sub-departments map to Bullhorn ClientCorporation records if they represent external client organizations in the staffing pipeline. If the department structure represents the agency's internal org chart (internal recruiters, sales teams), we document it separately rather than importing it as Bullhorn ClientCorporations, since those records are semantically reserved for external recruiting clients.

Personio

Custom Attributes (Recruiting Position)

maps to

Bullhorn ATS & CRM

Custom Fields on JobOrder

lossy
Fully supported

Personio custom attributes on Recruiting Positions migrate to Bullhorn JobOrder custom fields. Bullhorn supports custom fields on JobOrder via the REST API (fields such as customText1, customText2, customDate1). We pre-create the field mapping during scoping by querying the Personio Position schema for custom attributes and matching them to Bullhorn field types (text, date, number, dropdown). Bullhorn custom fields on standard entities are client-configurable without Support involvement.

Personio

Custom Attributes (Application Form)

maps to

Bullhorn ATS & CRM

Custom Object or Custom Fields on Candidate

lossy
Fully supported

Personio custom_attributes on job application forms cannot be retrieved via any documented Personio API endpoint according to community reports. During migration scoping, we explicitly ask the customer to provide the complete list of custom application form fields and their data values. We map these to Bullhorn Custom Object fields attached to the Candidate record or to Candidate custom fields if the number of attributes is small. Without this step, custom candidate data will be missed and not transferred. This is one of the highest-severity pair-specific gotchas for the migration.

Personio

Benefit Enrollment

maps to

Bullhorn ATS & CRM

Not Migrated

lossy
Fully supported

Personio employee benefit enrollments (health insurance, pension, company benefits) are out of scope for Bullhorn migration. Bullhorn ATS does not include a benefits administration module. If the agency manages benefits information for contractors (e.g., health insurance tier for W-2 contractors), we map the most recent benefit type and coverage level to a Bullhorn Custom Object. Full benefits history and carrier-specific details require a separate HRIS or benefits administration platform.

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.

Personio logo

Personio gotchas

High

GET Employees API rate limit of 300 req/min

High

Custom attributes on recruiting application forms not in API

Medium

Domain migration from .de to .com but API stays on .de

Medium

Date and number format inconsistencies by locale

Low

Recruiting report figures are not always accurate

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

  • Personio custom application form attributes are not in the API

    The Personio community has documented that custom_attributes configured on job application forms cannot be retrieved via any documented API endpoint. During migration scoping, we explicitly ask the customer to provide the complete list of custom application form fields and their data values so we can map them manually to Bullhorn Custom Objects. Without this step, any custom candidate data captured on application forms will be missed entirely. This is the highest-risk data-loss vector in a Personio-to-Bullhorn migration and must be addressed before migration begins.

  • Bullhorn Custom Objects require Support pre-provisioning before API access

    Bullhorn Custom Objects (customObject1 through customObject10) must be initially requested through Bullhorn Support using the Custom Object Setup Sheet. They are not self-service via the admin UI. For migrations where performance reviews, absence records, pay rate history, or custom candidate attributes need to land in Bullhorn Custom Objects, we must submit the provisioning request early in the project — Bullhorn's support SLA for Custom Object creation is typically 3-5 business days but can extend during high-volume periods. We include this as a blocking dependency in the migration schedule and begin the Support ticket process at project kickoff.

  • Bullhorn Custom Component Fields are integration-only and not for general migration use

    Bullhorn's Custom Component Fields (distinct from Custom Objects and Custom Fields) are reserved for use in integrations and automations where data needs to connect in a tightly controlled way. Bullhorn's own documentation explicitly states they are not supported for general client configuration and that using them incorrectly can cause data visibility, reporting accuracy, and system stability issues. We use Bullhorn Custom Fields and Custom Objects only. Any migration plan that relies on Custom Component Fields for Personio absence or performance data is flagged and redesigned before migration begins.

  • Personio date and number format inconsistencies cause import failures in Bullhorn

    Multiple Capterra reviewers note that Personio records dates and numbers inconsistently depending on the account's locale setting — the same field may store a date as 24/12/2019 or 24.12.2019. Overwriting a salary field can append an extra zero. Bullhorn's API rejects malformed dates on required fields and validates numeric ranges on custom fields. We normalize all dates to ISO 8601 during extraction from Personio and validate numeric fields against expected ranges before loading into Bullhorn. Any records failing Bullhorn validation rules are held in a remediation queue and flagged to the customer before re-import.

  • Personio workflows, approval chains, and automations do not migrate to Bullhorn

    Personio automates approval chains for absence requests, onboarding steps, and document signing. Bullhorn does not include a native workflow or approval chain engine for ATS data — Bullhorn Automation (formerly Herefish) or a third-party automation tool handles this at the agency level. Workflow definitions are not exposed in a migration-ready format by the Personio API. We do not migrate them. We deliver a written inventory of every active Personio workflow, absence approval chain, and onboarding step with its trigger, conditions, and actions for the customer's Bullhorn admin to rebuild in Bullhorn Automation or document manually.

Migration approach

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

  1. Scoping and data inventory

    We audit the source Personio account across modules in scope (Recruiting, Employee Records, Absences, Documents). We extract a full list of Recruiting Positions, Applications, and Employee records with their current status and modification timestamps. We specifically enumerate custom_attributes on application forms by asking the customer to provide the form field list. We review Bullhorn destination edition (Bullhorn ATS, Growth, or Enterprise) and confirm Custom Object entitlements per the edition. The scoping output is a written migration scope document listing every object to be migrated, excluded, or handled manually.

  2. Custom Object pre-provisioning and schema design

    We submit the Bullhorn Custom Object Setup Sheet to Bullhorn Support for any Custom Objects required for absence, performance, pay rate, or custom application data. This step begins at project kickoff because provisioning takes 3-5 business days. In parallel, we design the destination Bullhorn schema: JobOrder fields (standard plus any custom fields for position attributes), Candidate fields (standard plus any custom fields for application data), and Custom Object field definitions. Bullhorn custom fields on standard entities (JobOrder, Candidate) are self-service via Admin > Field Mappings and do not require Support.

  3. Sandbox migration and reconciliation

    We run a full migration into a Bullhorn Sandbox environment using production-like data volume. The customer's Bullhorn admin reconciles record counts (Candidates in, JobOrders in, JobSubmissions in), spot-checks 25-50 randomly selected records against the Personio source, and verifies that custom field values, application statuses, and document attachments are correctly placed. Any mapping corrections — particularly the Employee-to-Candidate or Employee-to-User split rule — are validated here before production migration begins.

  4. Document extraction and attachment preparation

    We download all employee documents from Personio (contracts, resumes, ID scans, certificates) via the Personio API document endpoints. Each file is renamed with a FlitStack AI-standard convention (CandidateName_DocumentType_Date.ext) and mapped to a Bullhorn ContentDocument record linked via ContentDocumentLink to the target Candidate. Resume files are mapped to the Candidate's primary resume field. Any document that cannot be retrieved (access-restricted files, deleted records) is logged in the exclusion report.

  5. Production migration in dependency order

    We run production migration in record-dependency order: ClientCorporation records (for external client job orders if applicable), JobOrder records (from Personio Recruiting Positions), Candidate records (from Personio Applications and Employees), JobSubmission records (linking Candidates to JobOrders), then custom attribute data into Bullhorn Custom Objects. Documents are uploaded in parallel with record migration. Each phase emits a row-count reconciliation report. We use Bullhorn's REST API with exponential backoff and batch chunking to stay within Bullhorn's rate limits and avoid 429 errors.

  6. Cutover, validation, and workflow rebuild handoff

    We freeze Personio recruiting 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 written workflow and automation inventory to the customer's Bullhorn admin team along with the custom application form attributes exclusion report. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's recruiting team. Workflow rebuilds, Bullhorn Automation setup, and absence management configuration are outside standard migration scope and are flagged as separate engagements.

Platform deep dives

Context on both ends of the pair

Personio logo

Personio

Source

Strengths

  • All-in-one HR coverage from a single vendor reduces tool fragmentation for SMEs
  • European-headquartered with strong GDPR compliance and multi-country employment law support
  • Fast implementation: four-week average time-to-live from contract signing
  • Competitive entry pricing at $5 per employee per month for base HR functionality
  • Intuitive employee and manager self-service portal reduces HR admin burden

Weaknesses

  • Report builder lacks copy, filter, and export capabilities that power users need
  • Performance management module is shallow compared to dedicated performance tools
  • Customisation is constrained — complex org structures and non-standard contract types require workarounds
  • Recruiting analytics contain data discrepancies that undermine reporting accuracy
  • Document storage and retrieval interface is difficult to navigate for non-standard HR files
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 Personio 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

    Personio: 300 requests per minute on GET Employees endpoint; 15 req/s burst.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most recruiting-focused migrations land between three and five weeks for organizations with under 5,000 active applications, 500 job positions, and clean custom attribute documentation. Migrations with high-volume application histories (over 20,000 records), extensive document attachment sets, or multiple Custom Object schemas move to eight to twelve weeks because of API pagination cycles, Bullhorn Support provisioning lead times for Custom Objects, and document download-upload processing. Bullhorn's own implementation timeline (two to six weeks per their documentation) runs parallel to but does not overlap with our data migration scope.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Personio.
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