HRMS migration
Field-level mapping, validation, and rollback between SAP SuccessFactors and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
SAP SuccessFactors
Source
Bullhorn ATS & CRM
Destination
Compatibility
10 of 12
objects map 1:1 between SAP SuccessFactors and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
8-12 weeks
Overview
Moving from SAP SuccessFactors to Bullhorn is a domain shift from enterprise HCM to staffing-specific ATS-CRM. SuccessFactors stores the full employee lifecycle as PerPerson, PerEmployment, and MDF records; Bullhorn stores candidates, jobs, and placements as separate entities with a CRM layer for client relationships. We split the SuccessFactors PerPerson record into a Bullhorn Candidate (for active job-seekers) and a Contact (for placed or passive records), preserving employment dates, compensation components, and manager relationships in Bullhorn custom fields and placement history. The SuccessFactors Foundation Object hierarchy (corporate structure, cost centers, locations) maps to Bullhorn's corporate structure as nested Companies and Divisions. Bullhorn's Front Office editions limit custom objects to 10 (with 55 fields each on Enterprise); we scope custom MDF objects against that ceiling before migration. Workflows, performance forms, learning enrollments, and approval histories do not migrate; we deliver a written inventory for the customer's admin to rebuild in Bullhorn's automation framework.
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 SAP SuccessFactors 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.
SAP SuccessFactors
PerPerson / PerPersonal (Employee Central)
Bullhorn ATS & CRM
Candidate
1:1SAP SuccessFactors PerPerson records (the core HRIS element) map to Bullhorn Candidate records. We extract name, email, phone, address, and nationality from PerPersonal and map them to Bullhorn's Candidate firstName, lastName, email, phone, and address fields. The SuccessFactors personIdExternal becomes a custom Bullhorn field ssf_person_id__c for dedupe and reconciliation. Active job-seekers (identified by a targetJobApplication status in the recruiting module) are prioritized as Candidate records; we preserve employment status and current title in Bullhorn custom fields rather than native fields since Bullhorn's Candidate model is ATS-centric.
SAP SuccessFactors
PerPerson / PerPersonal
Bullhorn ATS & CRM
Contact
1:1SuccessFactors employees who will not be active candidates in the Bullhorn ATS (past employees, passive talent in the pipeline, or contractor records) migrate as Bullhorn Contact records. We map the same PerPersonal fields to Bullhorn Contact, with ssf_person_id__c carrying the original identifier. Contact records do not enter the ATS pipeline but are available for CRM workflows and candidate pools.
SAP SuccessFactors
PerEmployment (Employment Details)
Bullhorn ATS & CRM
Placement
1:1SuccessFactors PerEmployment records carry job title, manager relationship, employment type (full-time, part-time, contractor), start date, and probation end date. We map these to Bullhorn Placement records attached to the Candidate, with employment type mapped to Bullhorn's empType field and manager chain preserved as a text custom field (since Bullhorn does not have a native manager hierarchy on Placement). Compensation components from MDF-based pay structures migrate as custom fields on the Placement record or as separate custom objects if the customer licenses Bullhorn Enterprise.
SAP SuccessFactors
JobCode / JobProfileLoc (Job Definitions)
Bullhorn ATS & CRM
Job Order
1:1SAP SuccessFactors Recruiting Management job requisitions (jobReqNumber, jobReqTitle, jobReqStatus, hiringManager) map to Bullhorn JobOrder records. We extract the job title, description (rich text), requirements, and status from SuccessFactors Job Requisition OData endpoints and map them to Bullhorn JobOrder title, description, requirements, and status. The SuccessFactors jobReqId becomes jobOrderID for reconciliation. Open, on-hold, and filled statuses map directly to Bullhorn's JobOrder status values.
SAP SuccessFactors
Foundation Objects: Locations
Bullhorn ATS & CRM
Branch
1:1SuccessFactors Foundation Object Locations (address, city, state, country, locationCode) map to Bullhorn Branch records. Bullhorn Branch stores office or branch location for staffing operations. We extract the location tree from Employee Central Foundation Object OData and reconstruct it as Bullhorn Branch records with address fields mapped 1:1. Multiple SuccessFactors locations map to one Branch if the customer consolidates offices.
SAP SuccessFactors
Foundation Objects: Divisions, Departments, Cost Centers
Bullhorn ATS & CRM
Company (corporate structure)
1:manySuccessFactors corporate structure (BU-POD-Division-Department hierarchy from Foundation Objects) maps to Bullhorn Company records representing the customer's own corporate entities. We extract the full org tree from Foundation Object OData endpoints, preserve the parent-child hierarchy as Bullhorn Company records with a parentCompanyId reference, and store costCenterCode and divisionId as custom fields. This is a structural mapping, not a candidate-company mapping, and is scoped separately from external client Companies in Bullhorn.
SAP SuccessFactors
Custom MDF Objects
Bullhorn ATS & CRM
Custom Object
lossySuccessFactors MDF (Managed Framework) objects are customer-defined entities with custom fields, picklists, and effective-dating behavior. We perform schema discovery against the SuccessFactors generic-object metadata endpoint to enumerate all active MDF objects, then map them to Bullhorn custom objects. Bullhorn Enterprise editions allow up to 10 custom objects with 55 fields each (Front Office Growth/Enterprise) or 2 custom objects on ATS Growth. We audit the customer's MDF field count against this ceiling before migration and flag any overflow to the customer's Bullhorn admin for consolidation or archival. Custom field types (picklist, text, number, date) map to equivalent Bullhorn field edit types per the Bullhorn field type reference.
SAP SuccessFactors
Learning Assignments / Enrollments
Bullhorn ATS & CRM
Certification (on Candidate)
1:1SAP SuccessFactors Learning course completions and certifications map to Bullhorn CandidateCertification records. We extract course title, completion date, expiration date, and certification status from the SuccessFactors Learning OData API (which operates under separate stricter rate limits from the main HXM Suite). Bullhorn CandidateCertification records are linked to the Candidate by candidateID. Active course enrollments (not yet completed) are optionally mapped to a custom field on Candidate if the customer requires in-progress training visibility; we scope this decision during discovery.
SAP SuccessFactors
Competency / Skill Profiles
Bullhorn ATS & CRM
Skill (on Candidate)
1:1SuccessFactors Talent Intelligence Hub competency libraries and skill profiles (including translations across language packs) map to Bullhorn CandidateSkill records. We deduplicate the competency library before migration (SAP TIH migration is documented to produce duplicate competencies in target systems per SAP KB), flag inactive job-to-competency associations for customer review, and map competency names to Bullhorn CandidateSkill skillName. Proficiency level maps to Bullhorn skillLevel if populated in SuccessFactors.
SAP SuccessFactors
Time Off / Absence Records
Bullhorn ATS & CRM
Custom Object or Note
1:1SuccessFactors time-off balances and absence records (entitlements, accrual rates, taken/pending balances) depend on the Time Off module being licensed. We export entitlement rows and balance data from Employee Central OData and map them to Bullhorn custom objects (if Bullhorn Enterprise with available custom object slots) or as formatted Note records attached to the Candidate. Approval history and comment threads are not exposed via standard OData and do not migrate. The customer's Bullhorn admin configures time-off tracking in Bullhorn or a paired payroll system post-migration.
SAP SuccessFactors
Compensation Information (MDF Pay Components)
Bullhorn ATS & CRM
Custom Fields on Placement or Custom Object
1:1SuccessFactors compensation records (base salary, bonus, allowances, stock, pay frequency, currency) are stored in MDF-based pay structures with value types (fixed, percent, lump-sum) that require field-level mapping. We extract payComponent, payCompFixedAmount, currency, frequency, and effectiveDate from the SuccessFactors Compensation Information OData export and map them to Bullhorn custom fields on Placement (salary, bonusAmount, currency) or to a Compensation custom object. Effective-dated history (multiple compensation records over time) is stored as separate rows in Bullhorn with periodDate marking the effective period.
SAP SuccessFactors
Document Attachments (Employee Central)
Bullhorn ATS & CRM
Content Document Link (on Candidate)
1:1Employee document attachments (offer letters, contracts, performance reviews stored in Employee Central) export via SuccessFactors Integration Center attachment outbound integrations. We route binary files to an SFTP target for Bullhorn to ingest, then link them to the corresponding Candidate record via Bullhorn's ContentDocumentLink mechanism. Only documents linked to the Candidate record (not org-level documents) migrate. The customer's Bullhorn admin configures the document storage repository before migration.
| SAP SuccessFactors | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| PerPerson / PerPersonal (Employee Central) | Candidate1:1 | Fully supported | |
| PerPerson / PerPersonal | Contact1:1 | Fully supported | |
| PerEmployment (Employment Details) | Placement1:1 | Fully supported | |
| JobCode / JobProfileLoc (Job Definitions) | Job Order1:1 | Fully supported | |
| Foundation Objects: Locations | Branch1:1 | Fully supported | |
| Foundation Objects: Divisions, Departments, Cost Centers | Company (corporate structure)1:many | Fully supported | |
| Custom MDF Objects | Custom Objectlossy | Mapping required | |
| Learning Assignments / Enrollments | Certification (on Candidate)1:1 | Fully supported | |
| Competency / Skill Profiles | Skill (on Candidate)1:1 | Fully supported | |
| Time Off / Absence Records | Custom Object or Note1:1 | Fully supported | |
| Compensation Information (MDF Pay Components) | Custom Fields on Placement or Custom Object1:1 | Fully supported | |
| Document Attachments (Employee Central) | Content Document Link (on Candidate)1: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.
SAP SuccessFactors gotchas
Hard 1000-record API transfer ceiling
Default 1000 records per request causes timeout on heavy entities
Talent Intelligence Hub migration produces duplicate competencies
Learning module API has independent rate limits
Custom MDF objects require schema inspection before migration
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 edition alignment
We audit the source SAP SuccessFactors tenant across licensed modules (Employee Central, Recruiting Management, Learning, Talent Management), headcount (PerPerson record count), org-structure depth (Foundation Object node count), active custom MDF object definitions, compensation data volume, and learning transcript count. We pair this with a Bullhorn edition assessment: Front Office Enterprise ($200/user/month) covers most migrations with up to 10 custom objects and 55 fields each; ATS Growth covers smaller migrations with 2 custom objects. The discovery output is a written migration scope, a custom object field-count reconciliation against the Bullhorn edition ceiling, and a recommendation for any Bullhorn edition upgrade needed before migration begins.
Schema design and employee-to-candidate split rule
We design the Bullhorn destination schema: custom objects (provisioned via Bullhorn admin, max 10 on Enterprise with 55 fields each), custom fields on Candidate and Placement (typed per Bullhorn field edit types), Branch records from SuccessFactors locations, and Company records for the corporate org structure. We define the employee-to-candidate split rule: employees with active job applications in SuccessFactors Recruiting map to Bullhorn Candidate; all others map to Bullhorn Contact. The rule is validated against sample data during this phase and adjusted before any production migration begins.
SuccessFactors OData extraction with chunking
We extract employee data from SAP SuccessFactors using the Compound Employee API and Foundation Object OData endpoints. PerPerson, PerEmployment, and PerPersonal records are extracted in sequential $top=1000 batches with checkpoint state tracked between runs to handle the hard 1000-record ceiling. Compensation data, learning enrollments, and competency profiles are extracted separately under their respective API rate limits. Any MDF entities use the generic-object metadata endpoint for schema discovery before field extraction. All extraction runs against a named read-only API user with minimal required permissions.
Transformation and field mapping
We transform the SuccessFactors extraction into Bullhorn-compatible payloads: PerPerson splits into Candidate or Contact records per the discovery rule; PerEmployment maps to Placement records with manager relationship stored as custom text; compensation pay components map to custom fields on Placement or a Compensation custom object; Foundation Object tree reconstructs as Bullhorn Company hierarchy; competencies deduplicate and map to CandidateSkill; learning completions map to CandidateCertification. All SuccessFactors IDs are preserved as custom fields (ssf_person_id__c, ssf_jobreq_id__c) for reconciliation after load. Language-pack translations on competencies and job profiles are carried as a secondary language field in Bullhorn.
Bullhorn sandbox migration and reconciliation
We run a full migration into Bullhorn's sandbox environment using production-like data volume. The customer's Bullhorn admin reconciles record counts (Candidates in, Contacts in, Placements in, Companies in, JobOrders in, Certifications in), spot-checks 25-50 random Candidate records against the SuccessFactors source, and validates the org-structure hierarchy in Bullhorn Companies. Any mapping corrections happen in sandbox before production migration. Bullhorn edition field limits are re-checked against the actual custom field count before production load.
Production migration in dependency order
We run production migration in record-dependency order: Companies (corporate structure from Foundation Objects), Branches (locations), JobOrders (from SuccessFactors job requisitions), Candidates (with employee-to-contact split applied), Contacts (for non-candidate employees), Placements (with Compensation custom fields), CandidateSkill (competency deduplication applied), CandidateCertification (learning completions), and any custom object records last (after confirming Bullhorn edition ceiling is not exceeded). Each phase emits a row-count reconciliation report before the next phase begins. SuccessFactors API calls use exponential backoff on 429 responses; Bullhorn API calls use standard retry with the documented rate limit.
Cutover, validation, and handoff
We freeze SuccessFactors 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 all SuccessFactors workflows, approval chains, performance forms, and learning modules that do not migrate (Bullhorn does not have equivalent objects for these), with recommended rebuild steps in Bullhorn Automation or manual reconfiguration. We support a one-week hypercare window for reconciliation issues. Post-migration admin support, Bullhorn training, and automation rebuild are outside standard scope and require a separate engagement.
Platform deep dives
SAP SuccessFactors
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between SAP SuccessFactors and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across SAP SuccessFactors and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between SAP SuccessFactors and Bullhorn ATS & CRM.
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
SAP SuccessFactors: 40 req/sec for OData APIs, 20 req/sec for SFAPIs; Learning OData APIs have separate stricter limits.
Data volume sensitivity
SAP SuccessFactors exposes a bulk API — large-volume migrations stream efficiently.
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 SAP SuccessFactors to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your SAP SuccessFactors 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 SAP SuccessFactors
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.