HRMS migration
Field-level mapping, validation, and rollback between X0PA AI and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
X0PA AI
Source
Bullhorn ATS & CRM
Destination
Compatibility
8 of 13
objects map 1:1 between X0PA AI and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Migrating from X0PA AI to Bullhorn requires navigating a source platform with no documented public API and a destination platform with a fully documented REST API and tiered custom object model. X0PA AI's core differentiator — its proprietary AI scoring model that ranks candidates per requisition — generates data that cannot be reconstructed in any external system. We flag every AI-score field as reference-only during scoping so customers understand what is transferable versus what is platform-locked. Interview recordings from X0PA Room are infrastructure-bound with no export mechanism, and customers requiring archived media must request it from X0PA support directly before migration completes. Bullhorn's custom object limits vary by edition (ATS Growth: none, Bullhorn ATS: 2, Front Office Growth/Enterprise: 10 with 55 fields each), which shapes how we map X0PA's Persona™ assessments and RPO client billing data. Workflows, sequences, and RPO routing rules do not migrate; we deliver a written inventory for the customer's admin to rebuild in Bullhorn. CSV export coordination with X0PA support is required because the platform does not expose a developer API with published authentication or bulk endpoints.
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 X0PA AI 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.
X0PA AI
Jobs/Requisitions
Bullhorn ATS & CRM
JobOrder
1:1X0PA job records map directly to Bullhorn JobOrder. Job Title, Description, Location (city/state/country split), Department, Employment Type (mapped to JobOrder employmentType picklist), and open/closed status migrate as standard fields. X0PA workflow stage configuration per job maps to Bullhorn JobOrder status (Open/Closed/On Hold) and a custom JobStatus stage field if the customer requires granular stage tracking beyond Bullhorn's native status. We coordinate with X0PA support to generate the CSV export covering all active and closed jobs within a defined date range.
X0PA AI
Candidates
Bullhorn ATS & CRM
Candidate
1:1X0PA Candidate records map to Bullhorn Candidate with all standard contact fields (name, email, phone, address, LinkedIn URL) preserved. X0PA's candidate-specific fields including candidate type (active/passive/prospective), source channel, and talent pool membership migrate to Bullhorn Candidate custom fields. The X0PA masked/prospective candidate flag maps to a custom Candidate_IsProspective__c boolean. We preserve the original X0PA candidate ID in a custom field x0pa_candidate_id__c for reconciliation.
X0PA AI
Persona™ Behavioral Assessments
Bullhorn ATS & CRM
Custom Object on Candidate (customObject1-10)
lossyX0PA's Persona™ behavioral assessment module stores structured assessment scores per candidate per requisition. Bullhorn does not have a native behavioral assessment object, so we provision a Custom Object on the Candidate entity (customObject1 through customObject10 depending on the customer's Bullhorn edition tier) to store Persona™ scores, completion status, assessment type, and date taken. The Front Office Growth/Enterprise tier supports up to 10 custom objects with 55 fields each; Bullhorn ATS supports 2 custom objects. We coordinate with the customer during scoping to confirm which Bullhorn edition they hold and which custom object slot to use.
X0PA AI
AI Scores (CV relevance, predictive performance, predictive loyalty)
Bullhorn ATS & CRM
Custom read-only fields on Candidate or JobOrder
lossyX0PA's proprietary AI scores (CV relevance, predictive performance, predictive loyalty) are computed by X0PA's gradient boosting model and are platform-locked. We migrate these values as custom read-only fields on the Bullhorn Candidate record (x0pa_cv_relevance_score__c, x0pa_predictive_performance_score__c, x0pa_predictive_loyalty_score__c) with field-level security set to read-only for all roles. We clearly label these as reference-only data during scoping so customers understand they cannot be regenerated or recalculated in Bullhorn. Any hiring logic that relies on these scores requires rebuilding using Bullhorn's native filters and reporting.
X0PA AI
Interviews (scheduling data)
Bullhorn ATS & CRM
Event + Candidate
1:1Interview records from X0PA — including scheduled datetime, interviewer assignment (mapped to Bullhorn User), interview type, candidate association, and interview stage — map to Bullhorn Event records linked via EventRelation to the Candidate. Automated scheduling status migrates as a custom Event field event_scheduling_status__c. Interview notes and feedback fields migrate as Note records attached to the Event. Bullhorn Event does not natively support interview score or rating fields, so structured feedback from X0PA interview evaluations maps to a custom Event field or a custom object on Event if the customer's Bullhorn edition supports it.
X0PA AI
Interview Recordings (X0PA Room)
Bullhorn ATS & CRM
Not migrated — reference-only
lossyX0PA Room stores interview recordings, analysis, and transcription in X0PA's own infrastructure with no documented export capability or public API endpoint. We do not attempt to migrate interview recordings as no export mechanism is evidenced. We flag X0PA Room media files as a migration gap in the scoping document and recommend the customer request their X0PA Room export directly from X0PA support before migration cutover. If the customer requires archived recordings post-migration, they must be retrieved from X0PA and stored externally.
X0PA AI
Offers
Bullhorn ATS & CRM
Opportunity
1:1X0PA Offer records map to Bullhorn Opportunity. Offer status, compensation details (salary, bonus, equity if stored), start date, and candidate association migrate as Opportunity fields. X0PA offer history and versioned changes (if the customer used offer versioning) migrate as a custom text area field offer_history__c holding a structured summary of prior offer versions. We create the Opportunity under the Candidate's associated JobOrder to preserve the offer-to-requisition relationship.
X0PA AI
Users/Hiring Managers
Bullhorn ATS & CRM
User + Bullhorn_BGC__c (optional)
1:1X0PA user accounts (Recruiter, Hiring Manager, Admin, RPO Client roles) map to Bullhorn User records by email match. Role mapping requires a mapping matrix: X0PA Recruiter maps to Bullhorn Recruiter role, X0PA Hiring Manager maps to Bullhorn Hiring Manager role, and X0PA Admin maps to Bullhorn Admin. Active/inactive status migrates. RPO Client users who are external to the organization map to Bullhorn ClientContact records under the corresponding ClientCorporation rather than User records. We resolve owners by email match; any X0PA user without a matching Bullhorn User goes to a reconciliation queue for the customer's admin to provision before record import resumes.
X0PA AI
RPO Client Records
Bullhorn ATS & CRM
ClientCorporation + ClientContact
1:1X0PA RPO tier includes multi-client dashboard and client relationship tools with client name, billing contact, and contract status. These map to Bullhorn ClientCorporation (company-level) and ClientContact (billing contact, primary RPO client relationship manager) records. We apply a custom tag RPO_Client__c on ClientCorporation to distinguish RPO client records from standard Bullhorn client corporations. Client billing and invoice history migrates to a custom ClientCorporation field or a custom object if the Bullhorn edition supports it and the customer requires it.
X0PA AI
RPO Pipeline/Workflow Stages
Bullhorn ATS & CRM
JobOrder status + Record Type + Custom Fields
lossyX0PA RPO supports custom workflows per job or per client with stage configurations, client-specific routing rules, and invoice/contract management. These workflow definitions have no documented export format. We reconstruct RPO pipeline stages manually by mapping from CSV exports — specifically, X0PA job stage names and ordering map to Bullhorn JobOrder status values and a custom RPO_Stage__c field that captures the original X0PA stage name. Conditional routing rules and automated stage transitions are documented in a migration scoping form and delivered as a written workflow map for the customer's admin to rebuild in Bullhorn. Bullhorn Record Types can be used to separate RPO pipeline views from standard ATS pipeline views if the customer runs both modes.
X0PA AI
Internal Talent Pool
Bullhorn ATS & CRM
Candidate Tags + Candidate List
lossyX0PA maintains a searchable internal talent pool for sourcing and retargeting, with candidate pool membership as tags. We export pool membership and map it to Bullhorn Candidate Tags (comma-separated or multi-select custom field depending on the customer's Bullhorn edition). For organizations that use X0PA's talent pool retargeting feature heavily, we also recommend Bullhorn Candidate Lists as a destination for group-based sourcing campaigns. The 250M+ external profile database that X0PA uses for candidate sourcing is X0PA's own infrastructure and does not migrate.
X0PA AI
Candidate Applications (per job per candidate)
Bullhorn ATS & CRM
JobSubmission
1:1X0PA stores candidate applications as the association between a Candidate and a Job with status and stage. Bullhorn models this as JobSubmission — a join record between Candidate and JobOrder with status, date submitted, and current stage. We map X0PA application status (applied, screening, shortlisted, interviewed, offered, hired, rejected) to Bullhorn JobSubmission status values. X0PA application date and last-modified date map to Bullhorn dateAdd and dateLastModified fields on JobSubmission.
X0PA AI
Candidate Source Tracking
Bullhorn ATS & CRM
Candidate customSource fields
1:1X0PA tracks candidate source channels including job board postings, career site applications, resume database searches, and employee referrals. Source channel, source campaign, and UTM data migrate as custom Candidate fields (candidate_source_channel__c, candidate_source_campaign__c, candidate_source_utm__c) to preserve attribution data for reporting in Bullhorn.
| X0PA AI | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Jobs/Requisitions | JobOrder1:1 | Fully supported | |
| Candidates | Candidate1:1 | Fully supported | |
| Persona™ Behavioral Assessments | Custom Object on Candidate (customObject1-10)lossy | Fully supported | |
| AI Scores (CV relevance, predictive performance, predictive loyalty) | Custom read-only fields on Candidate or JobOrderlossy | Fully supported | |
| Interviews (scheduling data) | Event + Candidate1:1 | Fully supported | |
| Interview Recordings (X0PA Room) | Not migrated — reference-onlylossy | Not supported | |
| Offers | Opportunity1:1 | Fully supported | |
| Users/Hiring Managers | User + Bullhorn_BGC__c (optional)1:1 | Mapping required | |
| RPO Client Records | ClientCorporation + ClientContact1:1 | Mapping required | |
| RPO Pipeline/Workflow Stages | JobOrder status + Record Type + Custom Fieldslossy | Fully supported | |
| Internal Talent Pool | Candidate Tags + Candidate Listlossy | Mapping required | |
| Candidate Applications (per job per candidate) | JobSubmission1:1 | Fully supported | |
| Candidate Source Tracking | Candidate customSource fields1: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.
X0PA AI gotchas
No documented public API with published auth or bulk export
AI scoring data is platform-locked and non-portable
X0PA Room interview recordings are infrastructure-bound
Enterprise pricing is opaque and requires sales negotiation
Custom RPO workflows require manual mapping to destination pipeline schema
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
CSV export coordination with X0PA AI
We initiate the data extraction by coordinating with X0PA support to generate CSV exports covering Jobs, Candidates, Assessments, Interviews, Offers, Users, RPO Client Records, and Internal Talent Pool membership. Because X0PA AI does not expose a developer API, the customer must request exports through X0PA support or use X0PA's native export function if available on their tier. We provide the customer with a detailed export specification listing every required field, date range, and file format before the export request is submitted. We also recommend the customer request X0PA Room media exports at this stage if archived recordings are required.
Bullhorn edition verification and schema pre-provisioning
We verify the customer's Bullhorn edition (ATS Growth, Bullhorn ATS, or Front Office Growth/Enterprise) to confirm the available custom object slots and field limits. We pre-provision the custom objects, custom fields, Record Types, and page layouts required for the migration in a Bullhorn Sandbox org before any production data moves. This includes Persona™ assessment custom objects, RPO client tag fields, X0PA AI score read-only fields, and any source-tracking custom fields. Bullhorn Support assists with custom object creation via a support ticket with a completed Custom Object Setup Spreadsheet.
Sandbox migration and record reconciliation
We run a full migration into a Bullhorn Sandbox using the exported CSV files. Data is staged in a structured format, mapped to Bullhorn object schemas, and ingested via Bullhorn REST API (for real-time inserts and updates) and bulk CSV import (for high-volume Candidate and JobOrder records). The customer's Bullhorn admin and recruitment leads reconcile record counts, spot-check 25-50 records per object against the X0PA source, and sign off the mapping before production migration begins. Any missing fields, incorrect type mappings, or dedupe conflicts are resolved in Sandbox.
Owner reconciliation and User provisioning
We extract every distinct X0PA user (Recruiter, Hiring Manager, Admin, RPO Client) and match by email against the Bullhorn destination org's User table. Users without a matching Bullhorn User go to a reconciliation queue. The customer's Bullhorn admin provisions any missing Users (active or inactive depending on whether the original X0PA user is still employed). RPO Client users who are external to the organization are provisioned as ClientContact records under ClientCorporation rather than User records. OwnerId references must be resolved before record import resumes because Bullhorn requires OwnerId on most standard objects.
Production migration in dependency order
We run production migration in record-dependency order: ClientCorporation (from X0PA RPO Client Records), then Users (validated), then JobOrder (from X0PA Jobs), then Candidate (with custom source fields and talent pool tags), then JobSubmission (candidate-to-job association), then Event (interview scheduling records), then Opportunity (from X0PA Offers), then Custom Object records (Persona™ assessments and any RPO-specific custom objects). Persona™ AI score fields are imported as read-only custom fields on Candidate. Each phase emits a row-count reconciliation report before the next phase begins. X0PA Room media files are flagged as not migrated with a handoff note requesting the customer retrieve them from X0PA support.
Cutover, validation, and RPO workflow handoff
We freeze X0PA write access during cutover, run a final delta migration of any records modified during the migration window, then designate Bullhorn as the system of record. We deliver a written RPO workflow inventory documenting the original X0PA pipeline stages, client routing rules, and conditional logic for the customer's Bullhorn admin to rebuild using Bullhorn Record Types, Sales Processes, and Bullhorn Automation (if available on the customer's tier). We do not rebuild X0PA automations, RPO sequences, or Persona™ assessment logic as Bullhorn workflows inside the migration scope; those are separate configuration tasks. We support a one-week post-cutover hypercare window for reconciliation issues.
Platform deep dives
X0PA AI
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between X0PA AI and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across X0PA AI and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between X0PA AI 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
X0PA AI: Not publicly documented.
Data volume sensitivity
X0PA AI doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during X0PA AI to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your X0PA AI 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 X0PA AI
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.