HRMS migration
Field-level mapping, validation, and rollback between ELMO Software and Recruit CRM & ATS. We move data and schema; workflows are rebuilt natively in Recruit CRM & ATS.
ELMO Software
Source
Recruit CRM & ATS
Destination
Compatibility
7 of 10
objects map 1:1 between ELMO Software and Recruit CRM & ATS.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from ELMO Software to Recruit CRM is a domain-shift migration: ELMO is a full HRMS built around Employees, Positions, Payroll Calendars, Leave Balances and Learning modules; Recruit CRM is an ATS and recruitment CRM built around Candidates, Jobs, Clients and a pipeline activity timeline. There is no direct equivalent in Recruit CRM for ELMO payroll configuration, Single Touch Payroll compliance objects, leave entitlement rules, or the Learning module. We scope the migration to the objects that do have counterparts — employee profiles become Candidates, departments become tagging fields on Candidates, and leave balance snapshots become custom fields — and we deliver a written inventory of the ELMO modules and records that cannot map to Recruit CRM so your team knows exactly what requires manual reconstruction or an alternative system after cutover. We sequence the migration to preserve employee effective-dated continuity and flag any payroll period gaps before final export.
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 Recruit CRM & ATS, 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
Recruit CRM & ATS
Candidate
1:1ELMO employee profiles (GET /users, GET /users/{id}) map to Recruit CRM Candidates. The ELMO name, email, phone, address, and employment metadata fields map to the Candidate standard fields. Employment type (full-time/part-time/casual) from ELMO's employment-details becomes a custom Candidate field for filtering. Employee status (active/terminated) maps to Candidate status in Recruit CRM. We extract the ELMO employee_id for cross-reference during reconciliation and store it as a custom external_id field on the Candidate.
ELMO Software
Position
Recruit CRM & ATS
Candidate (Title field) + Job (Title field)
1:manyELMO positions (GET /positions) define job titles and organisational role assignments. Where an employee holds an active position that corresponds to a hiring need in Recruit CRM, we create a Job record with the position title. The employee's current position becomes a Candidate field (current_title or similar) and a tag on the Candidate record. This is a 1:N split because one ELMO position can appear on many Candidate records and may spawn multiple Job openings.
ELMO Software
Department
Recruit CRM & ATS
Candidate (Custom Field) + Job (Custom Field)
1:1ELMO departments (GET /departments) migrate as a custom picklist field on both Candidate and Job in Recruit CRM. The full department tree is preserved as a flat list with the hierarchy captured in a parent_department reference field. We map each ELMO employee to their primary department for tagging during migration.
ELMO Software
Location
Recruit CRM & ATS
Job (Location field)
1:1ELMO locations (GET /locations) with physical address and timezone migrate to the Location field on Recruit CRM Job records. For Candidates, the location preference is stored as a Candidate custom field sourced from the employee's primary work location in ELMO.
ELMO Software
Legal Entity
Recruit CRM & ATS
Client (Custom Field)
1:1ELMO Legal Entity records (GET /legal-entities) define ABN/ACN-level employer records for AU and NZ payroll compliance. In Recruit CRM, there is no native Legal Entity object. We store the ELMO Legal Entity as a custom Client field (legal_entity_name) and ABN/ACN as a custom Client field so that staffing agency clients linked to specific entities are traceable after migration. This is a lookup resolution because Legal Entity must exist as a Client record before Candidate assignments referencing it are imported.
ELMO Software
Employment Details
Recruit CRM & ATS
Candidate (Custom Fields)
1:1ELMO employment details (GET /employment-details) — start date, employment type, pay frequency, superannuation fund — migrate as custom fields on the Candidate record in Recruit CRM. Effective start date maps to a custom date field; employment type becomes a picklist. Pay frequency and superannuation details have no native Recruit CRM equivalent and are stored as text or picklist custom fields. These fields are flagged as informational and do not drive any Recruit CRM workflow logic.
ELMO Software
Leave Request / Leave Balance
Recruit CRM & ATS
Candidate (Custom Fields)
1:1ELMO leave requests and leave balances (GET /leave-requests, BETA endpoint) are migrated as a static snapshot in custom fields on the Candidate record: annual_leave_balance, sick_leave_balance, parental_leave_balance, and leave_balance_as_of_date. Leave entitlement rules and accrual logic do not migrate because Recruit CRM has no native leave management. We cross-validate balances against the final payroll report exported from ELMO's UI before writing them. The BETA endpoint status means we treat leave data as best-effort and apply manual reconciliation where API responses are incomplete.
ELMO Software
Payroll Calendar
Recruit CRM & ATS
Client or Job (Custom Field)
lossyELMO payroll calendars define pay periods, pay run dates and STP reporting cycles at the organisation level. Recruit CRM has no payroll calendar object. We export the calendar definition as a structured JSON configuration file delivered alongside the migration, and store the last pay run date and next pay run date as custom fields on the relevant Client or Job record for reference. Payroll calendar logic requires manual reconstruction in the customer's finance system post-migration.
ELMO Software
Groups
Recruit CRM & ATS
Candidate (Tag or Custom Field)
1:1ELMO groups (GET /groups) represent organisational units for access control and reporting. We migrate group membership as Candidate tags in Recruit CRM, allowing recruiters to filter candidates by the ELMO group they belonged to. Group hierarchy is flattened into the tag label. Access-control semantics from ELMO do not map to Recruit CRM's role-based model and are documented separately for the customer's admin.
ELMO Software
Custom Configurable Fields
Recruit CRM & ATS
Candidate (Custom Fields)
lossyELMO configurable metadata fields (GET /configurable-fields-meta) are organisation-specific and vary per customer. We extract the full custom field schema during discovery, create equivalent custom fields in Recruit CRM (text, date, number, picklist, or checkbox), and migrate the values per Candidate record. The destination custom field type is chosen by FlitStack AI based on the source field's data type. If the destination field does not exist, we create it before the relevant Candidate batch is imported.
| ELMO Software | Recruit CRM & ATS | Compatibility | |
|---|---|---|---|
| Employee | Candidate1:1 | Fully supported | |
| Position | Candidate (Title field) + Job (Title field)1:many | Fully supported | |
| Department | Candidate (Custom Field) + Job (Custom Field)1:1 | Fully supported | |
| Location | Job (Location field)1:1 | Fully supported | |
| Legal Entity | Client (Custom Field)1:1 | Fully supported | |
| Employment Details | Candidate (Custom Fields)1:1 | Mapping required | |
| Leave Request / Leave Balance | Candidate (Custom Fields)1:1 | Fully supported | |
| Payroll Calendar | Client or Job (Custom Field)lossy | Mapping required | |
| Groups | Candidate (Tag or Custom Field)1:1 | Mapping required | |
| Custom Configurable Fields | Candidate (Custom Fields)lossy | Mapping required |
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
Recruit CRM & ATS gotchas
API rate limits are license-scaled and can throttle bulk migration
Custom field schemas vary per organization and require field-level mapping
Files and email attachments require separate extraction and re-upload
Email sequences and automation logic do not transfer between platforms
Pair-specific challenges
Migration approach
Discovery and module scope audit
We audit the customer's ELMO environment across every active module (HR Core, Payroll, Recruitment, Onboarding, Performance, Learning), API credential availability, custom configurable field schema, and data volume per object. We identify which ELMO modules have a Recruit CRM equivalent and which do not, and we document the latter in a written scope note. We also request CSV or bulk exports from the ELMO UI alongside API access to ensure we have a fallback if API access is unavailable or rate-limited. The discovery output is a written migration scope document listing every object in scope, every object out of scope, and the reasoning for each decision.
Schema design and custom field creation
We design the destination Recruit CRM schema based on the scoped ELMO modules. We create all required custom fields on Candidate, Job, and Client before any data import begins, using the source field names and data types as the reference. For the Employee-to-Candidate split, we define the status mapping rule (active employees become active Candidates; terminated employees become inactive Candidates with a departure date custom field). For Legal Entity, we design the Client custom fields that store ABN/ACN and entity name. For leave balances, we define the custom fields and validate the source field names from the BETA leave request endpoint against the payroll UI export.
Test migration and reconciliation
We run a full migration into a Recruit CRM sandbox or staging environment using production-like data volume. The customer's HR and recruiting leads reconcile record counts, spot-check 25-50 random candidate records against the ELMO source, and verify that department tags, location fields, and employment metadata are correctly populated. Any mapping corrections — wrong field assignments, missing picklist values, truncated text — happen in this phase and are reflected in the final production mapping document before cutover.
Production migration in dependency order
We run production migration in dependency order: Client records first (to resolve Legal Entity lookups), then Candidate records (with Employee data mapped, external ID preserved, and status mapping applied), then Job records (with department and location fields resolved), then activity history and engagement records where applicable. Leave balance snapshots are imported last, after cross-validation against the final payroll UI export. Each phase emits a row-count reconciliation report and a sample record quality check before the next phase begins.
Cutover and out-of-scope inventory delivery
We freeze ELMO writes during the cutover window, run a final delta migration of any records modified during the migration, then enable Recruit CRM as the system of record. We deliver the written inventory of out-of-scope ELMO modules (Payroll, Learning, Performance, STP/KiwiSaver compliance data) with recommendations for how to preserve or reconstruct each dataset. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild ELMO workflows, automations, or payroll configurations in Recruit CRM; those are documented separately for the customer's admin to address.
Platform deep dives
ELMO Software
Source
Strengths
Weaknesses
Recruit CRM & ATS
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 ELMO Software and Recruit CRM & ATS.
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
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 Recruit CRM & ATS migration scoping. Not seeing yours? Book a call.
Walk through your ELMO Software to Recruit CRM & ATS 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 Recruit CRM & ATS
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.