HRMS migration
Field-level mapping, validation, and rollback between HR-ON and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
HR-ON
Source
Bullhorn ATS & CRM
Destination
Compatibility
6 of 12
objects map 1:1 between HR-ON and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
HR-ON and Bullhorn serve fundamentally different markets. HR-ON is a Danish-market HRMS focused on employee records, document workflows, and onboarding for small German-speaking organizations. Bullhorn is a recruitment ATS and CRM built for staffing agencies managing candidates, clients, jobs, and placements. A migration between them requires not just record transfer but a conceptual remap: HR-ON employee records become Bullhorn Candidate records, HR-ON organizational structure (stored in systemFields on employees) must be reconstructed as Bullhorn departments or custom fields, and HR-ON document templates attach to the wrong Bullhorn entity type without relinking. We do not migrate workflows or automations because HR-ON's onboarding workflows have no Bullhorn equivalent. We deliver a written inventory of every Bullhorn workflow trigger, condition, and action requiring rebuild by the customer's admin post-migration. Timeline ranges from two to four weeks for straightforward employee record migration to four to eight weeks when custom objects, large document inventories, or multi-department org structures are in scope.
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 HR-ON 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.
HR-ON
Employee
Bullhorn ATS & CRM
Candidate
1:1HR-ON Employee records map to Bullhorn Candidate. The core employee properties (firstName, lastName, email, jobTitle, department, startDate) map directly to Bullhorn Candidate fields (firstName, lastName, email, title, department, dateAdded). We resolve HR-ON systemFields by parsing org metadata (such as location, manager, employment type) and either mapping them to standard Bullhorn Candidate fields or flagging them for Bullhorn Custom Object creation. HR-ON custom properties migrate as custom Candidate fields. The Candidate entity is the Bullhorn ATS core; all other entities reference it.
HR-ON
Employee
Bullhorn ATS & CRM
User
1:1HR-ON user accounts map to Bullhorn User records when the HR-ON user represents a recruiter or staffing consultant who will log into Bullhorn. We match by email address. HR-ON systemFields indicating admin roles, department ownership, or approval authority map to Bullhorn User permissions and department assignments. Note that Bullhorn ATS Growth does not include API access; User record creation and role assignment may require Bullhorn support coordination depending on edition.
HR-ON
Organizational Structure
Bullhorn ATS & CRM
Department (or Custom Object)
lossyHR-ON stores org structure (departments, reporting lines, cost centers) within systemFields on Employee records rather than as separate objects. We parse these systemFields and reconstruct them as Bullhorn Department records or as a Bullhorn Custom Object with department assignments attached to User and Candidate. If the customer uses Bullhorn ATS Growth (which lacks Custom Objects), we map department data to a custom text field on User and note the limitation. This decision is made during scoping based on the destination Bullhorn edition.
HR-ON
Document Template
Bullhorn ATS & CRM
ContentDocument or Job Template
lossyHR-ON document templates with name, description, documentType, dateFormat, and language metadata (da_DK, en_US) do not have a direct Bullhorn equivalent. Bullhorn stores documents as ContentDocument records attached to the relevant entity (Candidate, ClientContact, JobOrder). We export the template metadata as a JSON manifest with the original language and dateFormat preserved, and we note each template that requires manual re-creation in Bullhorn or replacement with Bullhorn's document generation (if the Bullhorn edition supports it). Document templates themselves do not migrate as reusable templates.
HR-ON
Document (generated from template)
Bullhorn ATS & CRM
ContentDocument
1:1HR-ON generated documents (binary blobs or PDF links) attached to Employee records migrate as Bullhorn ContentDocument records linked via ContentDocumentLink to the corresponding Bullhorn Candidate. The original document language (da_DK or en_US) and dateFormat metadata are stored in a Bullhorn Custom Object field or as notes on the ContentDocument for post-migration reassignment if the document attaches to the wrong Bullhorn template. We flag any document over 25 MB for customer review because Bullhorn's file size limits may require chunking.
HR-ON
Custom Properties (Employee)
Bullhorn ATS & CRM
Custom Fields or Custom Object Fields
lossyHR-ON supports custom properties on Employee records beyond systemFields. We extract all non-systemFields and assess data type compatibility with Bullhorn's field type options (text, number, date, picklist, checkbox, multi-select picklist). Bullhorn ATS Growth allows 2 Custom Objects with 55 fields each; Bullhorn Front Office Growth/Enterprise allows 10. Multi-select picklist values from HR-ON map to Bullhorn multi-select picklist fields with the same option set. We pre-create the destination fields in a Bullhorn Sandbox before production migration.
HR-ON
Date Metadata (multiple formats)
Bullhorn ATS & CRM
Date Fields (ISO 8601)
lossyHR-ON stores dates in four formats depending on locale and template settings: DD-MM-YYYY, DD/MM/YYYY, YYYY-MM-DD, or written form. Bullhorn expects ISO 8601 (YYYY-MM-DD) for all date fields. We normalize every date value from HR-ON to ISO 8601 during the extraction phase, validate against the destination Bullhorn field requirements, and flag any dates outside the range 1900-01-01 to 2100-12-31 for manual review. The original HR-ON dateFormat metadata is preserved in a custom field for audit.
HR-ON
Language Preferences
Bullhorn ATS & CRM
Candidate fields or Custom Fields
1:1HR-ON stores language preferences per template and employee at da_DK (Danish) and en_US (English). We carry this through as Bullhorn Candidate custom fields (candidateLanguage and templateLanguage) so that localized content rendering is preserved. Bullhorn does not have native multi-language template support, so the language field serves informational purposes and is used by the customer to manually reassign document templates post-migration.
HR-ON
HR-ON systemFields
Bullhorn ATS & CRM
Candidate Custom Fields or Custom Object
lossyHR-ON systemFields on Employee records (such as employeeStatus, employmentType, costCenter, location, managerId, terminationDate) are parsed and mapped. Standard-compatible fields map directly to Bullhorn Candidate. Fields without a Bullhorn equivalent (such as custom HR-ON cost codes or approval chains) require Bullhorn Custom Object fields, which must be created by Bullhorn Support before migration. We include these in the Custom Object Setup Sheet and coordinate the support ticket as part of the migration approach.
HR-ON
HR-ON role and permission structure
Bullhorn ATS & CRM
Bullhorn User Role
lossyHR-ON user roles (Admin, Manager, Employee) map to Bullhorn User roles with different permission models. Bullhorn's role-based access control operates at the entity and field level. We map default HR-ON roles to the nearest Bullhorn equivalents (Standard User, Admin) and flag any HR-ON-specific permissions (such as payroll access or approval authority) that have no Bullhorn User Role equivalent. These are noted for the customer's Bullhorn admin to configure post-migration.
HR-ON
Users
Bullhorn ATS & CRM
User
1:1HR-ON user accounts map to Bullhorn User records by email address match. Any HR-ON user without a corresponding Bullhorn User goes to a reconciliation queue where the customer's Bullhorn admin provisions the missing account. Bullhorn User records are required before Candidate records with assigned owners can be imported because OwnerId references must be satisfied at insert time. We validate User existence before record migration begins.
HR-ON
Employee historical timestamps
Bullhorn ATS & CRM
Candidate custom date fields
1:1HR-ON stores hireDate, terminationDate, and other employment timestamps. We map these to Bullhorn Candidate date fields (dateAdded for hire, custom terminationDate field if needed). Historical employment dates before Bullhorn's earliest supported range are stored as text fields to avoid validation errors. We flag records with termination dates for Bullhorn admin review because Bullhorn ATS treats inactive candidates differently from HR-ON's active/inactive employee model.
| HR-ON | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Employee | Candidate1:1 | Fully supported | |
| Employee | User1:1 | Fully supported | |
| Organizational Structure | Department (or Custom Object)lossy | Mapping required | |
| Document Template | ContentDocument or Job Templatelossy | Fully supported | |
| Document (generated from template) | ContentDocument1:1 | Fully supported | |
| Custom Properties (Employee) | Custom Fields or Custom Object Fieldslossy | Fully supported | |
| Date Metadata (multiple formats) | Date Fields (ISO 8601)lossy | Fully supported | |
| Language Preferences | Candidate fields or Custom Fields1:1 | Fully supported | |
| HR-ON systemFields | Candidate Custom Fields or Custom Objectlossy | Fully supported | |
| HR-ON role and permission structure | Bullhorn User Rolelossy | Fully supported | |
| Users | User1:1 | Mapping required | |
| Employee historical timestamps | Candidate custom date 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.
HR-ON gotchas
No bulk export endpoint forces sequential reads
Date format normalization required before import
Language-specific document types may not map directly
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 review
We audit the source HR-ON portal across API endpoint availability, JWT credentials, employee record count, systemFields usage, custom property definitions, document template inventory, and date format distribution. We pair this with a Bullhorn edition review: ATS Growth covers 2 Custom Objects and is API-accessible; Front Office Growth/Enterprise covers up to 10 Custom Objects with 55 fields each. We identify which Bullhorn edition the customer currently holds or needs, and we confirm whether Bullhorn Support ticket submission for Custom Object creation has been or will be initiated. The discovery output is a written migration scope with object mapping, a Bullhorn edition gap analysis, and the Custom Object Setup Sheet ready for support submission.
Bullhorn Custom Object provisioning coordination
For migrations requiring Bullhorn Custom Objects (to hold org structure data, HR-ON systemFields, or language metadata), we coordinate the Bullhorn Support ticket. The customer submits the completed Custom Object Setup Sheet to Bullhorn Support, which typically takes 3-5 business days to provision. We confirm the Custom Object names and field definitions in the destination Bullhorn Sandbox before any data migration. If the customer is on a Bullhorn edition that does not support Custom Objects, we document the limitation and map incompatible fields to text or picklist fields on the standard Candidate entity.
Sandbox migration and reconciliation
We run a full migration into a Bullhorn Sandbox using a representative subset of production data (typically 10-20% of total records). The customer's Bullhorn admin reconciles record counts (Candidates imported, Documents attached, Custom Object instances created), spot-checks field mappings against 25-50 random HR-ON records, and validates date normalization output. We resolve any mapping corrections in the sandbox before production migration begins. Sandbox migration typically takes one to three days depending on record count and Bullhorn API responsiveness.
Date normalization and document metadata extraction
We run the date normalization phase as a pre-processing step before any Bullhorn load. Every HR-ON date field is parsed, validated, and converted to ISO 8601. Written-form dates (July 20, 2021) are parsed using locale-aware logic; any parsing failures are flagged in a reconciliation report for the customer's review. Simultaneously, we extract document template metadata and generate a document manifest listing each file, its associated HR-ON employee, language variant, and dateFormat. This manifest is used post-migration to reassign documents to the correct Bullhorn templates.
Production migration in dependency order
We run production migration in record-dependency order: Bullhorn Users (validated first because OwnerId references are required), Candidate records (with date-normalized fields and systemFields mapped to standard or Custom Object fields), Document ContentDocument attachments (linked to Candidates via ContentDocumentLink), and Custom Object instances (last because they often reference Candidates or Users). Bullhorn REST API pagination and rate limit handling use exponential backoff. Each phase emits a row-count reconciliation report before the next phase begins. Any HR-ON date values that failed normalization appear in a flagged report for the customer's Bullhorn admin to correct manually.
Cutover, validation, and document relink handoff
We freeze HR-ON as the system of record during cutover and run a final delta migration of any HR-ON records modified during the migration window. We deliver the document manifest to the customer's Bullhorn admin for manual template relinking. We do not rebuild HR-ON workflows or automations because HR-ON's onboarding document workflows have no Bullhorn equivalent; we deliver a written inventory of every HR-ON automation requiring rebuild in Bullhorn's workflow builder or Bullhorn Automation (if licensed). We support a one-week hypercare window where we resolve any record linkage issues or field mapping discrepancies raised by the customer's team.
Platform deep dives
HR-ON
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. 1 of 7 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across HR-ON and Bullhorn ATS & CRM.
Object compatibility
1 of 7 objects need a mapping; the rest are 1:1.
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
HR-ON: Not publicly documented..
Data volume sensitivity
HR-ON 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 HR-ON to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your HR-ON 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 HR-ON
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.