HRMS migration
Field-level mapping, validation, and rollback between IceHrm and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
IceHrm
Source
Bullhorn ATS & CRM
Destination
Compatibility
7 of 12
objects map 1:1 between IceHrm and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
4-7 weeks
Overview
Moving from IceHrm to Bullhorn is a cross-domain migration: IceHrm is a general-purpose HRMS with modules spanning payroll, leave, attendance, training, and performance reviews, while Bullhorn is a purpose-built ATS and CRM for staffing and recruitment agencies. The structural mismatch means the Employee object maps cleanly to Bullhorn Candidate, but IceHrm leave balances, time entries, performance reviews, and payroll runs have no native Bullhorn equivalents and migrate to Bullhorn custom objects or are flagged as requiring a separate HRMS for ongoing management. We audit the deployed IceHrm schema during scoping, discover per-module custom fields, and resolve Bullhorn edition constraints on custom object counts (2 on Bullhorn ATS, 10 on Front Office Growth/Enterprise) before any data moves. Bullhorn does not support workflow migrations; we deliver a written inventory of IceHrm module configurations that the customer's admin rebuilds in Bullhorn or a companion system.
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 IceHrm 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.
IceHrm
Employee
Bullhorn ATS & CRM
Candidate
1:1IceHrm Employee records map to Bullhorn Candidate. We map firstName, lastName, dateOfBirth, gender, maritalStatus, bloodGroup, photo, privateEmail, workEmail, and address fields to Bullhorn Candidate standard fields. The IceHrm employment_start_date maps to dateAvailable; jobTitle maps to occupation. IceHrm custom fields added to the Employee module migrate to Bullhorn Candidate custom fields (first available custom field slot). If the customer uses IceHrm for internal employees who will be placed as contractors, we discuss the candidate sourcing strategy during scoping because internal employees and external applicants may need separate data flows in Bullhorn.
IceHrm
Employee
Bullhorn ATS & CRM
User (for internal recruiters)
1:1IceHrm Employee records marked as admin or manager roles map to Bullhorn User (internal recruiter) records if they will use Bullhorn. We resolve by email match against Bullhorn User. User provisioning is a manual step coordinated with the Bullhorn admin before migration; we provide a mapping table identifying which IceHrm employees should become Bullhorn Users and which remain Candidate-only records.
IceHrm
Organization / Department Structure
Bullhorn ATS & CRM
Corporation + Department (custom field)
1:1IceHrm Departments, branches, and offices map to Bullhorn Corporation (for client organizations) and a custom Department picklist on the Candidate record for internal org structure. IceHrm company-level settings migrate as Bullhorn Corporation if the customer is a staffing agency managing multiple client accounts. Internal department hierarchy (HR, Engineering, Sales) maps to a custom Candidate field or Candidate Custom Object tracking internal org assignment.
IceHrm
Recruitment / Job Postings
Bullhorn ATS & CRM
JobOrder
1:1IceHrm Job Posting records (title, description, requirements, status, branch) map to Bullhorn JobOrder. The IceHrm job_status field maps to Bullhorn status (Open, Closed, Completed). jobType maps to employmentType; salaryStart and salaryEnd map to payRate or salaryRange custom fields. We map branches and locations to Bullhorn JobOrder address and location fields. Custom job posting fields in IceHrm migrate to JobOrder custom fields up to the Bullhorn field limit.
IceHrm
Recruitment / Applicant Tracking
Bullhorn ATS & CRM
JobSubmission (Candidate + JobOrder link)
1:1IceHrm Application records (applicant linked to job posting with stage, interview notes, rating) map to Bullhorn JobSubmission. The IceHrm application_status maps to Bullhorn status (New, Interview, Offer, Hired, Rejected). We preserve interview dates, ratings, and notes as submission history. If IceHrm stores multiple interview rounds, each maps to a separate note or activity record on the JobSubmission. Custom application-stage fields migrate to JobSubmission custom fields.
IceHrm
Employee Documents
Bullhorn ATS & CRM
Candidate attachments (ContentDocumentLink)
1:1IceHrm employee documents (contracts, certifications, ID scans, resumes) linked to Employee records migrate as Bullhorn Candidate attachments via ContentDocumentLink. We extract files individually, preserve the original file name and MIME type, and link each document to the Candidate record. Bullhorn's resume parsing processes the attached resume into structured Candidate fields (skills, employment history, education) after migration. File upload is sequential per record with MIME type validation to avoid Bullhorn's rejection of malformed attachments.
IceHrm
Leave / Time-off
Bullhorn ATS & CRM
Custom Object (Leave Balance Tracker)
1:manyIceHrm Leave module stores leave types (Annual, Sick, Personal), accrual balances, and approved requests. Bullhorn has no native leave balance tracking. We create a Bullhorn Candidate Custom Object (LeaveBalances) with fields per leave type (leaveType, balanceDays, accrualRate, lastAccrualDate) and link each record to the Candidate. Leave request history migrates as a second Custom Object (LeaveRequests) with date range, leave type, status, and approver. Bullhorn ATS editions are limited to 2 custom objects; we discuss with the customer whether leave tracking is migration-critical or handled by a separate HRMS post-migration.
IceHrm
Time & Attendance
Bullhorn ATS & CRM
Custom Object (TimeEntry History)
1:manyIceHrm Time & Attendance stores punch-in/out timestamps, timesheets, and overtime entries per employee. Bullhorn has no native attendance module. If historical attendance records are migration-critical, we create a Bullhorn Candidate Custom Object (TimeEntries) with date, clockIn, clockOut, hoursWorked, overtimeHours, and status fields linked to the Candidate. Bullhorn ATS's 2-custom-object limit constrains this; we recommend the customer evaluate Bullhorn Time & Expense or a dedicated time-tracking integration for ongoing needs and treat historical data as an audit archive rather than a live-functional migration.
IceHrm
Payroll / Salary Data
Bullhorn ATS & CRM
Custom Object (Payroll Summary)
1:1IceHrm Payroll stores salary components, pay schedules, and payroll run history. Bullhorn's native payroll (Bullhorn Connexys, Bullhorn Onboarding) handles time tracking and onboarding billing but is not a full payroll engine. We migrate the most recent payroll run summary (current salary, payFrequency, payGrade, lastPayDate) to a Bullhorn Candidate Custom Object (PayrollSummary) for audit and record continuity. Detailed payroll run history (per-pay-period earnings, deductions, tax withholdings) requires a separate payroll system and is documented as out-of-scope for Bullhorn migration; we recommend HRIS integrations like Gusto, ADP, or Paychex for ongoing payroll management.
IceHrm
Performance Reviews
Bullhorn ATS & CRM
Custom Object (Review History)
1:manyIceHrm Performance Reviews store review cycles, templates, ratings, and peer feedback per employee. Bullhorn has no native performance review module. We create a Bullhorn Candidate Custom Object (PerformanceReviews) with reviewDate, reviewerName, overallRating, strengths, areasForImprovement, and status fields. Peer review comments migrate as long-text fields within the Review record. IceHrm custom review templates map to a templateName field; the structured template criteria migrate as separate custom fields. If the customer uses IceHrm for annual performance management, we recommend Bullhorn's partner ecosystem (Lattice, BambooHR, Culture Amp) for ongoing performance tracking post-migration.
IceHrm
Training / Learning Management
Bullhorn ATS & CRM
Custom Object (Training History)
1:manyIceHrm Training tracks courses, enrollments, completion dates, and learning paths per employee. Bullhorn has no native LMS. We create a Bullhorn Candidate Custom Object (TrainingRecords) with courseName, enrollmentDate, completionDate, status (Enrolled, In Progress, Completed, Failed), and certificationExpiry fields. Learning path associations migrate as a text field or link to a separate TrainingPrograms Custom Object if Bullhorn's custom object budget permits. The customer should evaluate Bullhorn's integrations with LMS platforms or dedicated training systems for ongoing learning management.
IceHrm
Custom Fields (per module)
Bullhorn ATS & CRM
Custom Fields (per entity)
lossyIceHrm allows custom fields per module independently, meaning the Employee module and Recruitment module may have different custom field schemas. We discover all IceHrm custom fields during the pre-migration audit, map each to the corresponding Bullhorn entity (Candidate, JobOrder, JobSubmission) custom field slot, and resolve data type compatibility (IceHrm picklist maps to Bullhorn drop-down; IceHrm text maps to Bullhorn text). Bullhorn's custom field limits per entity are published in the Bullhorn KB; we verify slot availability during scoping and flag any fields that exceed the limit for customer decision on exclusion or custom object fallback.
| IceHrm | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Employee | Candidate1:1 | Fully supported | |
| Employee | User (for internal recruiters)1:1 | Fully supported | |
| Organization / Department Structure | Corporation + Department (custom field)1:1 | Fully supported | |
| Recruitment / Job Postings | JobOrder1:1 | Fully supported | |
| Recruitment / Applicant Tracking | JobSubmission (Candidate + JobOrder link)1:1 | Fully supported | |
| Employee Documents | Candidate attachments (ContentDocumentLink)1:1 | Fully supported | |
| Leave / Time-off | Custom Object (Leave Balance Tracker)1:many | Fully supported | |
| Time & Attendance | Custom Object (TimeEntry History)1:many | Fully supported | |
| Payroll / Salary Data | Custom Object (Payroll Summary)1:1 | Fully supported | |
| Performance Reviews | Custom Object (Review History)1:many | Fully supported | |
| Training / Learning Management | Custom Object (Training History)1:many | Fully supported | |
| Custom Fields (per module) | Custom Fields (per entity)lossy | 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.
IceHrm gotchas
Self-hosted schema modifications cause migration surprises
Employee count billing model on IceHrm Cloud
Custom fields per module require manual field-level discovery
Document attachment export requires file-by-file handling
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 schema audit
We audit the source IceHrm instance across all active modules, identifying standard and custom fields per module (Employees, Leave, Time, Payroll, Recruitment, Performance, Training, Documents, Organization). For cloud instances, we use the Admin export and API access; for self-hosted, we query the MySQL schema directly. We document the deployed schema versus the upstream IceHrm release, identify custom field counts per module, and flag any non-standard field types. We pair this with a Bullhorn edition assessment (ATS at 2 custom objects vs Front Office Growth/Enterprise at 10) and a migration-priority ranking for the five IceHrm modules without native Bullhorn equivalents.
Custom object planning and Bullhorn schema setup
We design the Bullhorn destination schema based on the custom object priority ranking. For each IceHrm module assigned a custom object slot, we define the object name, fields (data type, required/optional, picklist values), and relationship to the Candidate record. Bullhorn custom object setup requires a support ticket with a completed Custom Object Setup Spreadsheet; we prepare this spreadsheet and coordinate with the customer's Bullhorn admin to submit it. Standard Bullhorn fields receive the IceHrm field mappings. The schema deploys to a Bullhorn Sandbox first for validation before any data moves.
Sandbox migration and record reconciliation
We run a full migration into Bullhorn Sandbox using representative data volume. The customer reconciles record counts across all objects (Candidate, JobOrder, JobSubmission, custom objects), spot-checks 25-50 randomly selected records against the IceHrm source for field-level accuracy, and validates that Bullhorn's resume parsing correctly populates Candidate structured fields from uploaded resumes. We correct any mapping errors identified in sandbox before production migration begins. Sandbox sign-off is a required gate.
File extraction and document preparation
We extract all employee documents from IceHrm individually, preserving file name, MIME type, upload date, and the linked Employee record ID. For self-hosted instances, we access the file storage directory directly; for cloud instances, we use the web interface export. We organize documents by Employee ID, validate MIME types against Bullhorn's accepted list, and prepare a mapping table linking each file to the destination Candidate record. Large document volumes (over 5,000 files) extend the timeline by one to two weeks for file handling alone.
Production migration in dependency order
We run production migration in sequence: Bullhorn Users (manually provisioned, validated by customer), Candidate records (with Employee data mapped and custom fields populated), JobOrder records (job postings from IceHrm Recruitment), JobSubmission records (applications linked to JobOrder and Candidate), custom object records (leave, time, payroll, performance, training history in priority order), and documents (attached via ContentDocumentLink). Each phase emits a row-count reconciliation report before the next phase begins. Bullhorn API rate limits are respected with exponential backoff and batch chunking.
Cutover, validation, and workflow handoff
We freeze IceHrm writes during cutover, run a final delta migration of any records modified during the window, then enable Bullhorn as the system of record for candidate and recruitment data. We deliver the IceHrm workflow and module configuration inventory to the customer's Bullhorn admin for rebuild planning. We support a one-week hypercare window for reconciliation issues. We do not rebuild IceHrm module configurations as Bullhorn workflows or Bullhorn Automation inside the migration scope; those are documented for the customer's admin to rebuild or for a separate Bullhorn Automation engagement.
Platform deep dives
IceHrm
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 IceHrm 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
IceHrm: Not publicly documented.
Data volume sensitivity
IceHrm 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 IceHrm to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your IceHrm 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 IceHrm
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.