HRMS migration
Field-level mapping, validation, and rollback between CatalystOne and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
CatalystOne
Source
Bullhorn ATS & CRM
Destination
Compatibility
6 of 12
objects map 1:1 between CatalystOne and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
4-8 weeks
Overview
CatalystOne is a Scandinavian full-lifecycle HCM platform centred on the Person object, with positions, competencies, succession plans, org hierarchy, and payroll integration all linked to the employee record. Bullhorn is a cloud ATS and CRM centred on the Candidate object, with JobOrder, ClientCorporation, Placement, and Custom Objects as the primary entities. These platforms have fundamentally different data models, which means migration is a schema redesign, not a field-to-field copy. We start with a schema-discovery pass against the customer's specific CatalystOne tenant to enumerate available fields, then design the Bullhorn target schema before any data moves. Bullhorn editions limit Custom Objects from zero (ATS Growth) to two (Bullhorn ATS) to ten (Front Office Growth/Enterprise), which we confirm during scoping before committing to a competency and succession plan mapping strategy. Workflows, automation rules, and payroll integration logic are not API-accessible in CatalystOne and are documented separately for the customer's admin to rebuild.
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 CatalystOne 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.
CatalystOne
Person (Employee)
Bullhorn ATS & CRM
Candidate
1:1CatalystOne Person records map to Bullhorn Candidate records. Core fields (firstName, lastName, email, phone, employmentStatus, startDate, endDate, department, manager reference) migrate directly. The manager relationship resolves to a Bullhorn User lookup after User provisioning. Employment status maps to Candidate status (active to active/open, terminated to placed/archived). Work email and personal contact fields merge into Bullhorn's Candidate contact fields. Custom properties on the Person object (industry-specific or company-specific fields discovered during schema pass) map to Candidate custom fields or Candidate Custom Objects depending on field count. We preserve the original CatalystOne personId as a custom field cata_person_id__c for reconciliation.
CatalystOne
Position
Bullhorn ATS & CRM
JobOrder
1:1CatalystOne's position-based data model maps to Bullhorn JobOrder. Position title becomes JobOrder title, department maps to JobOrder department, and position-specific competency requirements migrate to JobOrder requirements or to a Candidate Custom Object linking competency to the job. The position hierarchy (reportsTo, positionType) maps to JobOrder field values and a parent-child JobOrder relationship where applicable. Effective dates on position records (hiring date, end date, effectiveFrom, effectiveTo) are flattened into a single JobOrder with startDate and expectedEndDate since Bullhorn does not natively support effective-dated position history.
CatalystOne
Competencies
Bullhorn ATS & CRM
Custom Object or Candidate fields
1:manyCatalystOne competency records (many-to-many person-to-competency with rating, expiry, and acquisition date) require a Custom Object in Bullhorn since Bullhorn has no native competency or skills-object. We design a competency custom object with fields for competencyName, rating, expiryDate, and acquisitionDate, linked to the Candidate record. Edition constraint: ATS Growth has zero Custom Object capacity, Bullhorn ATS supports 2, and Front Office Growth and Enterprise support 10. We confirm the customer's Bullhorn edition during scoping and cap the competency custom object design accordingly. For up to 5 key competencies, we use Candidate custom fields directly; for fuller competency profiles we reserve a dedicated custom object.
CatalystOne
Succession Plans
Bullhorn ATS & CRM
Custom Object
lossyCatalystOne succession plans store a structured relationship between a Position and one or more candidate Persons with readiness ratings. Bullhorn has no native succession planning object, so we create a SuccessionPlan custom object linked to the JobOrder (representing the position) and to Candidate records (representing the succession candidates). Readiness rating, readinessDate, and notes migrate as custom object fields. This requires the customer's Bullhorn edition to support at least one custom object. We flag this during scoping if the customer is on ATS Growth (zero custom objects) so the succession plan mapping strategy is defined before migration begins.
CatalystOne
Performance Reviews
Bullhorn ATS & CRM
Custom Object or Candidate fields
1:manyCatalystOne performance review records carry effective dates, reviewer assignments, ratings, and comments against a Person or Position. We map these to a PerformanceReview custom object linked to the Candidate record, with fields for reviewDate, reviewerUser (lookup to Bullhorn User), overallRating, and structured comment sections. Custom review templates mean the field set varies per customer, which is why a pre-migration schema discovery pass against the customer's specific CatalystOne tenant is required. We enumerate all active review fields and map them to Bullhorn custom object fields during the schema design phase, not at migration time.
CatalystOne
Org Structure (Departments/Cost Centres)
Bullhorn ATS & CRM
ClientCorporation hierarchy
1:manyCatalystOne department hierarchy (departments with parent-child relationships and cost-centre assignments) maps to Bullhorn ClientCorporation records in a matching parent-child hierarchy. We create one ClientCorporation per department or cost centre, preserving the parentId reference. Effective-date changes to org structure in CatalystOne (structural changes over time) are not natively supported in Bullhorn; we capture the current active structure and document the historical changes separately for the customer's HR team to store as reference. Cost-centre codes migrate as ClientCorporation fields for finance reconciliation.
CatalystOne
Documents
Bullhorn ATS & CRM
Candidate file attachments
1:manyCatalystOne employee documents (employment contracts, certifications, policies) are binary files with type and date metadata. We export each document with its type classification, upload date, and owner reference, then attach them to the corresponding Candidate record in Bullhorn using Bullhorn's file attachment API. Document type maps to a Bullhorn Candidate field (e.g., certificationType or documentCategory) for filtering. Contract documents may alternatively route through Bullhorn's E-Signature integrations (DocuSign or AdobeSign via Bullhorn Marketplace) post-migration if the customer adopts electronic signing.
CatalystOne
Identity and Access Records
Bullhorn ATS & CRM
User provisioning reference export
1:1CatalystOne AD and SSO provisioning data linked from the HR master record is exported as a reference dataset (employee name, role, department, manager, AD group membership snapshot) rather than migrated into Bullhorn, because Bullhorn's User object represents system access users, not HR employee identity records. We deliver this as a structured CSV for the customer's IT team to use during Bullhorn User provisioning and Active Directory or SSO integration setup. The mapping does not create Bullhorn User records directly because User provisioning is an administrative act that requires the customer's Bullhorn admin to assign roles and validate access.
CatalystOne
Payroll Integration Mappings
Bullhorn ATS & CRM
Not applicable to Bullhorn ATS/CRM
lossyCatalystOne's managed Azure-hosted payroll integrations (field-to-field mappings to Visma, SAP, and regional Nordic payroll providers) are CatalystOne's intellectual property and are not exposed via API. The integration configuration is not handed over on exit. We export the current payroll data snapshot (employee payroll identifiers, compensation fields, pay grades) as a structured reference export for the customer's IT or payroll team to use when reconfiguring integrations in their chosen payroll destination (Bullhorn Middle Office or an independent payroll system). Bullhorn Middle Office handles time, expense, and back-office payroll for staffing firms but is not a direct CatalystOne payroll equivalent for Nordic employers.
CatalystOne
Custom Workflow Configurations
Bullhorn ATS & CRM
Not migrated
1:1CatalystOne approval workflows, automated triggers, and HR process rules are configured within the application and are not exposed via API. We do not migrate workflow logic. We document all active workflow configurations during the discovery phase (approvals, triggers, escalation rules, task automation) as a written inventory with screenshots and rule descriptions so the customer's HR admin can plan the rebuild in Bullhorn's workflow builder or engage a Bullhorn implementation partner for automation reconfiguration.
CatalystOne
Time and Attendance Records
Bullhorn ATS & CRM
Not migrated
1:1CatalystOne's time-tracking module (if used) exports timesheet records and accrual balances, but Bullhorn's ATS and CRM does not natively store time and attendance data. Bullhorn Time & Expense (part of Bullhorn Middle Office) handles time capture for placed contractors and back-office payroll for staffing firms but is a separate product and licensing tier. We scope time and attendance records out of the standard migration unless Bullhorn Middle Office is included in the destination scope. Employee records and org structure migrate regardless of whether time data exists in CatalystOne.
CatalystOne
Compensation History
Bullhorn ATS & CRM
Candidate custom fields or Custom Object
1:1CatalystOne stores compensation records as effective-dated entries (salary, bonus, equity, allowances) against a Person record. Bullhorn has no native compensation object. For active employees being placed, we map the most recent compensation snapshot to Candidate custom fields (currentSalary, currentBonus). For organisations requiring full compensation history (for audit, reporting, or payroll reconciliation), we design a CompensationHistory custom object with effectiveDate, salaryAmount, currency, bonusAmount, and equityDetails fields linked to the Candidate. This requires at least one Custom Object slot on the destination Bullhorn edition.
| CatalystOne | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Person (Employee) | Candidate1:1 | Fully supported | |
| Position | JobOrder1:1 | Fully supported | |
| Competencies | Custom Object or Candidate fields1:many | Mapping required | |
| Succession Plans | Custom Objectlossy | Mapping required | |
| Performance Reviews | Custom Object or Candidate fields1:many | Mapping required | |
| Org Structure (Departments/Cost Centres) | ClientCorporation hierarchy1:many | Fully supported | |
| Documents | Candidate file attachments1:many | Mapping required | |
| Identity and Access Records | User provisioning reference export1:1 | Fully supported | |
| Payroll Integration Mappings | Not applicable to Bullhorn ATS/CRMlossy | Mapping required | |
| Custom Workflow Configurations | Not migrated1:1 | Not supported | |
| Time and Attendance Records | Not migrated1:1 | Fully supported | |
| Compensation History | Candidate custom fields or Custom Object1: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.
CatalystOne gotchas
No public API documentation or schema reference
Workflow and automation rules are not API-accessible
No public pricing model requires sales engagement
Custom fields vary per customer and require schema discovery
Managed integration services tie data flows to CatalystOne operations
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
Schema discovery and Bullhorn edition confirmation
We engage the customer's CatalystOne technical contact to obtain API key access and enumerate the full available field surface for this specific tenant. We run a discovery pass against Persons, Positions, Competencies, Succession Plans, Org Units, and Documents to list every standard and custom field active in the system. We confirm the destination Bullhorn edition (ATS Growth, Bullhorn ATS, Front Office Growth, or Enterprise) to determine the Custom Object slot budget. We deliver a written discovery report listing all source objects, field names, field types, and custom property flags, plus a Custom Object allocation plan given the edition constraint. This step gates all subsequent design work.
Bullhorn target schema design
We design the Bullhorn destination schema based on the discovery report. This includes creating the ClientCorporation hierarchy from CatalystOne departments, defining JobOrder fields for position data, designing the Competency custom object (or candidate fields) with rating and expiry fields, designing the SuccessionPlan and PerformanceReview custom objects, and allocating Custom Object slots by priority if the edition cap is lower than the number of record types. We configure Candidate custom fields for employment status, start date, department, manager, and current compensation. Schema is deployed into a Bullhorn Sandbox via the REST API for validation before any production migration begins.
Sandbox migration and reconciliation
We run a full migration into the Bullhorn Sandbox environment using production-equivalent record volume. The customer's HR lead and Bullhorn admin review the migrated records for data accuracy: department hierarchy depth and naming, competency ratings and expiry dates, candidate contact completeness, and document attachment integrity. We reconcile record counts against the CatalystOne source export and flag any schema mismatches. The customer signs off the Sandbox validation before production migration is scheduled. Any custom field additions or Custom Object redesigns happen in this phase.
PII audit and data cleansing
We run a structured PII audit against the identified CatalystOne source fields. National ID numbers, salary details, health fields, disciplinary records, and other sensitive personal data are flagged for review. We either remove, mask, or pseudonymise these fields in the migration dataset depending on the customer's data governance policy and GDPR legal basis. Candidate consent status is reviewed and applied to the Bullhorn Candidate record. The customer's legal or HR compliance team authorises the data cleansing decisions in writing before the production migration executes.
Production migration in dependency order
We execute the production migration in record-dependency sequence: ClientCorporations first (establishing the org hierarchy), then JobOrders (position data linked to ClientCorporations), then Candidates (employee records mapped from Persons, with manager User lookup resolved), then Custom Objects (Competencies, SuccessionPlans, PerformanceReviews, CompensationHistory), then file attachments. We use the Bullhorn REST API with rate-limit handling, exponential backoff, and batch chunking. Each phase emits a row-count reconciliation report. Workflow configurations, payroll mappings, and time records are excluded as documented and handed off separately.
Cutover, validation, and workflow inventory handoff
We freeze new CatalystOne writes during a defined cutover window, run a final delta migration of any records modified during the window, validate candidate counts and org hierarchy completeness in Bullhorn, and switch the system of record. We deliver the written workflow and automation inventory document to the customer's HR admin for rebuild planning. We provide a one-week hypercare window to resolve reconciliation issues raised by the HR or recruitment team. We do not rebuild CatalystOne workflows in Bullhorn, configure Bullhorn Onboarding, or integrate payroll providers as part of the standard migration scope.
Platform deep dives
CatalystOne
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between CatalystOne and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across CatalystOne and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between CatalystOne 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
CatalystOne: Not publicly documented — typical SaaS limits assumed and confirmed during scoping.
Data volume sensitivity
CatalystOne 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 CatalystOne to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your CatalystOne 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 CatalystOne
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.