HRMS migration
Field-level mapping, validation, and rollback between ELMO Software and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
ELMO Software
Source
Bullhorn ATS & CRM
Destination
Compatibility
8 of 13
objects map 1:1 between ELMO Software and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from ELMO Software to Bullhorn is an HRMS-to-ATS migration that requires translating a people-and-payroll data model into a recruitment-and-placement CRM structure. ELMO organises around Employees, Positions, Legal Entities, and a payroll calendar tied to Australian STP and New Zealand KiwiSaver compliance. Bullhorn centres on Candidates, Jobs, Placements, and client Accounts without a native HRMS layer. We extract employee profiles and employment histories from ELMO HR Core, map them into Bullhorn's Candidate and Contact objects, and attach employment metadata as structured notes and custom fields. Leave balances, legal entities, and custom configurable fields from ELMO require pre-import schema design in Bullhorn because Bullhorn has no equivalent leave-tracking or payroll-calendar object — we document the gap and provide a custom object or note strategy. Bullhorn automations, saved searches, and integrations do not migrate as code; we deliver a written inventory for the customer's admin to rebuild. Bullhorn's API access requires no Account Manager sign-off (unlike ELMO), making post-migration data hygiene more tractable.
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 ELMO Software 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.
ELMO Software
Employee
Bullhorn ATS & CRM
Candidate
1:1ELMO employee records map to Bullhorn Candidate profiles. The ELMO user name, contact details, email, and phone migrate to Candidate firstName, lastName, email, and phone. Employment type (full-time/part-time/casual), start date, and position migrate as custom fields on the Candidate record. Bullhorn's Candidate does not store payroll frequency or superannuation details natively; we create custom text or date fields to carry these for HR reference.
ELMO Software
Employee
Bullhorn ATS & CRM
Contact
1:1ELMO employee records also map to Bullhorn Contact if the organisation uses Bullhorn for internal staffing or contractor relationship tracking. Contact firstName, lastName, email, and phone copy directly. Department and position from ELMO map to Bullhorn Contact custom fields. The customer chooses whether to use Candidate, Contact, or both during scoping based on whether the Bullhorn instance serves external candidates, internal candidates, or both.
ELMO Software
Position
Bullhorn ATS & CRM
Candidate custom field or JobOrder custom field
lossyELMO positions (GET /positions) define role titles and reporting lines. We map position title to Bullhorn Candidate.customText1 or a dedicated jobtitle custom field. If Bullhorn Jobs are in scope, the position also maps to JobOrder custom fields to preserve the original position hierarchy. Bullhorn does not have an organisational hierarchy object; we document the hierarchy as a note or structured field for admin reference.
ELMO Software
Department
Bullhorn ATS & CRM
Candidate/Contact custom field or ClientCorporation
1:1ELMO department records (GET /departments) map to Bullhorn custom fields on Candidate and Contact. For staffing firms tracking candidate placement by department, we create a custom picklist field mapped to the ELMO department name. If departments correspond to client organisations, we map them to ClientCorporation records. We preserve the full department tree in a structured reference document.
ELMO Software
Location
Bullhorn ATS & CRM
Candidate/Contact address fields or JobOrder location
1:1ELMO location records (GET /locations) contain physical address and timezone. Bullhorn Candidate has address fields (address, city, state, zip) and JobOrder has a location field. We map ELMO location address to Bullhorn Candidate address and timezone to a custom field. Multi-location organisations with distinct compliance jurisdictions (AU vs NZ vs SG) require separate location records and corresponding Bullhorn custom fields.
ELMO Software
Legal Entity
Bullhorn ATS & CRM
ClientCorporation (Account)
1:1ELMO legal entities (GET /legal-entities) define ABN/ACN-level employer records for AU/NZ payroll. Bullhorn ClientCorporation serves as the Account counterpart but is not payroll-linked. We map legal entity name to ClientCorporation name, ABN/ACN to a custom field, and address to the ClientCorporation address. If the organisation operates multiple legal entities, each becomes a separate ClientCorporation in Bullhorn. Bullhorn does not support payroll calendar configuration; legal entity metadata migrates as structured fields only.
ELMO Software
Employment Details
Bullhorn ATS & CRM
Candidate custom fields
1:1ELMO employment details (GET /employment-details) include start date, employment type, pay frequency, and superannuation fund. We map these to Bullhorn Candidate custom fields: employmentStartDate (date), employmentType (picklist), payFrequency (picklist), superannuationFund (text). Employment type values (full-time, part-time, casual, fixed-term) map to Bullhorn picklist values that we define during schema design. Superannuation fund name migrates as text but is not linked to any Bullhorn payroll feature.
ELMO Software
Leave Balance
Bullhorn ATS & CRM
Candidate custom fields or Note
1:1ELMO leave balances (GET /leave-requests BETA endpoint) contain current entitlement, accrued, and taken values per leave type. Because Bullhorn has no leave management object, we create custom numeric fields per leave type (annualLeaveBalance, sickLeaveBalance, parentalLeaveBalance) on the Candidate record, or attach a structured Note with all leave data serialised. We cross-validate against payroll reports exported from ELMO's UI before finalising the import.
ELMO Software
Leave Type
Bullhorn ATS & CRM
Candidate custom picklist fields
lossyELMO configurable leave types (annual, sick, parental, long service, etc.) map to Bullhorn custom picklist fields on Candidate. We extract the full leave type schema from GET /configurable-fields-meta during scoping and create matching picklist values in Bullhorn. Leave type entitlement rules (accrual rates, carry-over limits) do not migrate as executable logic; we document them in the migration handoff notes for the customer's HR admin to reconfigure.
ELMO Software
Payroll Calendar
Bullhorn ATS & CRM
Note or custom object (documentation only)
lossyELMO payroll calendars define pay periods, pay run dates, and STP reporting cycles. Bullhorn has no payroll calendar object. We export the calendar definition as a structured Note attached to the primary ClientCorporation or as a Bullhorn Custom Object named PayrollCalendar with fields for payPeriodStart, payPeriodEnd, and payRunDate. The customer uses this as reference data; Bullhorn does not execute payroll scheduling.
ELMO Software
Group
Bullhorn ATS & CRM
User role or Team (Bullhorn Nova)
lossyELMO groups (GET /groups) define organisational units for access control and reporting. Bullhorn uses User roles and, in Nova (S-Release), Teams to manage access. We map ELMO group membership to Bullhorn role assignments and document the mapping. Bullhorn Nova Teams do not map directly to ELMO groups; we flag any structural mismatch during scoping.
ELMO Software
Custom Configurable Fields
Bullhorn ATS & CRM
Custom fields on Candidate, Contact, or ClientCorporation
1:1ELMO organisations define custom metadata fields via GET /configurable-fields-meta. We extract field definitions (label, type, picklist values) and create matching Bullhorn custom fields before import. Bullhorn entity limits on custom fields vary by object and edition; we check limits during scoping and recommend Custom Objects for field counts exceeding entity limits. Field-level data migrates directly as values once the Bullhorn schema is deployed.
ELMO Software
Payroll Data (pay runs, superannuation, PAYG)
Bullhorn ATS & CRM
Not migrated
lossyELMO payroll data (pay runs, PAYG withholdings, superannuation contributions) does not migrate to Bullhorn. Bullhorn is a recruitment ATS and CRM, not a payroll system, and has no equivalent payroll execution object. We export payroll summaries as PDF or CSV from ELMO for the customer's finance team to retain for audit purposes. The payroll calendar metadata migrates as documentation only (see Leave Type entry).
| ELMO Software | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Employee | Candidate1:1 | Fully supported | |
| Employee | Contact1:1 | Fully supported | |
| Position | Candidate custom field or JobOrder custom fieldlossy | Fully supported | |
| Department | Candidate/Contact custom field or ClientCorporation1:1 | Fully supported | |
| Location | Candidate/Contact address fields or JobOrder location1:1 | Fully supported | |
| Legal Entity | ClientCorporation (Account)1:1 | Fully supported | |
| Employment Details | Candidate custom fields1:1 | Mapping required | |
| Leave Balance | Candidate custom fields or Note1:1 | Fully supported | |
| Leave Type | Candidate custom picklist fieldslossy | Fully supported | |
| Payroll Calendar | Note or custom object (documentation only)lossy | Mapping required | |
| Group | User role or Team (Bullhorn Nova)lossy | Fully supported | |
| Custom Configurable Fields | Custom fields on Candidate, Contact, or ClientCorporation1:1 | Mapping required | |
| Payroll Data (pay runs, superannuation, PAYG) | Not migratedlossy | 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.
ELMO Software gotchas
API access requires Account Manager sign-off
Leave request endpoint is marked BETA
Module subscriptions must be mapped individually
Legacy Elmo32 import limitations are documented
Rate limits are not publicly documented
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 ELMO module audit
We audit the source ELMO instance across active modules (HR Core, Payroll, Recruitment, Onboarding, Performance, Learning), API subscription status, and custom configurable field definitions. We extract the full schema from GET /configurable-fields-meta and map each field to a Bullhorn custom field, custom object, or Note strategy. We also audit leave type configurations, employment detail schemas, and legal entity hierarchies. This step produces a written migration scope document covering record counts, schema gaps, and any module-gated data that will not migrate.
Bullhorn schema design and sandbox setup
We design the Bullhorn destination schema in a Sandbox environment before production migration begins. This includes creating custom fields on Candidate, Contact, and ClientCorporation for employment metadata, leave balances, and legal entity data; defining custom picklist values mapped to ELMO employment types and leave categories; and designing any Custom Objects required for complex HR data that exceeds Bullhorn's per-entity field limits. We validate the schema with a trial import of a representative 50-record sample before scaling to full volume.
ELMO data extraction and transformation
We extract data from ELMO using the User API v1 (GET /users, /positions, /departments, /locations, /legal-entities, /employment-details, /groups) and CSV/Bulk exports where the API is unavailable or gated. Leave data from the BETA leave endpoints is cross-validated against payroll report exports from the ELMO UI. We transform ELMO employment records into Bullhorn Candidate and Contact records, map employment type and start date to custom fields, and serialise leave balances into structured fields or Notes. Legal entities map to ClientCorporation records with ABN/ACN stored in custom fields.
Sandbox migration and reconciliation
We run a full migration into the Bullhorn Sandbox using production-like data volume. The customer's HR and recruitment leads reconcile record counts across ELMO and Bullhorn, spot-check 25-50 random Candidate records against the ELMO source, and verify that employment metadata and leave balances are correctly represented in Bullhorn custom fields. The customer signs off the sandbox validation before we proceed to production migration.
Production migration in dependency order
We run production migration in dependency order: ClientCorporation records (from Legal Entities) first; then Candidate and Contact records with custom fields resolved; then employment details as linked custom field updates. Leave balances and payroll calendar metadata migrate as final-phase updates to existing Candidate records. Each phase emits a row-count reconciliation report before the next phase begins. We freeze ELMO writes during the final 48 hours and run a delta import to capture any records modified during the migration window.
Cutover, validation, and automation rebuild handoff
We enable Bullhorn as the system of record after the delta import is complete and validated. We deliver a written inventory of ELMO module configurations, active workflows, leave entitlement rules, and payroll calendar definitions for the customer's admin to rebuild in Bullhorn or a separate payroll system. Bullhorn automations, saved searches, and integrations require separate rebuild scope and are not included in the migration deliverable. We support a one-week post-cutover hypercare window for reconciliation issues raised by the customer's team.
Platform deep dives
ELMO Software
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between ELMO Software and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across ELMO Software and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between ELMO Software 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
ELMO Software: Not publicly documented — differs between sandbox and production environments.
Data volume sensitivity
ELMO Software 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 ELMO Software to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your ELMO Software 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 ELMO Software
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.