HRMS migration
Field-level mapping, validation, and rollback between greytHR and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
greytHR
Source
Bullhorn ATS & CRM
Destination
Compatibility
3 of 12
objects map 1:1 between greytHR and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
greytHR and Bullhorn serve fundamentally different markets, which makes this migration a domain-crossing data project. greytHR is a full-suite Indian HRMS covering the complete employee lifecycle with built-in PF, ESI, TDS, and state labor-code compliance. Bullhorn is a cloud ATS and CRM built for staffing agencies, with a data model oriented around Candidates, Job Orders, Placements, and Client Corporations. The migration maps greytHR Employees to Bullhorn Candidate or ClientContact records, preserves leave balances and attendance history in Bullhorn Custom Objects, and transfers statutory fields (UAN, PAN, PF, ESI) into custom fields that Bullhorn's admin must explicitly configure. Bullhorn has no native payroll engine; payslip history and salary structures must be re-established via Bullhorn's partner ecosystem or manual configuration post-migration. Workflows, approval chains, and leave carry-forward rules do not migrate as code. We deliver a written inventory of every greytHR workflow and leave policy requiring rebuild at the destination.
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 greytHR 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.
greytHR
Employee
Bullhorn ATS & CRM
Candidate and ClientContact
1:manygreytHR Employee records split across two Bullhorn entities based on role context. Internal employees (HR, finance, operations staff) map to Bullhorn ClientContact attached to a ClientCorporation record representing the company. Candidates from greytHR's own hiring pipeline map to Bullhorn Candidate records. We preserve greytHR demographic fields (name, DOB, gender, mobile, email, address), employment fields (department, designation, grade, date of joining, employment type), and statutory fields (UAN, PAN, PF number, ESI number, TDS section) as Bullhorn standard or custom fields. The split is determined during scoping: if the customer was using greytHR to track job applicants, those records become Candidates; administrative staff become ClientContacts.
greytHR
Statutory Compliance (UAN, PF, ESI, PAN, TDS)
Bullhorn ATS & CRM
Custom Fields on Candidate and ClientContact
lossygreytHR's structured statutory fields (UAN, PF account number, ESI number, PAN, TDS deduction section) have no native Bullhorn equivalent because Bullhorn is not an Indian payroll platform. We map each statutory field to a Bullhorn Custom Field on the Candidate and ClientContact entities. Bullhorn's Growth and Enterprise editions support up to 10 Custom Objects per entity with 55 fields each; we use standard custom fields first and reserve Custom Objects for compound or multi-value statutory data. These custom fields must be configured by Bullhorn Support or an admin with field mapping access before migration begins. We recommend downloading official PF and ESI slips from the greytHR government portal as a supplementary offline record.
greytHR
Leave Management
Bullhorn ATS & CRM
Custom Object: Leave Balance
lossygreytHR stores leave entitlements, accrual history, current balances, carry-forward amounts, and encashment records per employee. Bullhorn has no native leave management module. We map current leave balances at migration cutoff to a Bullhorn Custom Object (customObject1s: Leave Balance) with fields for leave type, balance, accrual date, carry-forward, and encashment amount. The leave carry-forward logic, accrual rate, and policy-level rules do not migrate as data because greytHR applies them as policy definitions rather than stored formulas. We document the current leave policy settings during scoping so the customer's Bullhorn admin can configure equivalent rules manually or via Bullhorn Onboarding (formerly Able). In-progress accrual cycles are migrated as balance snapshots with a flag indicating the cycle was mid-run at cutover.
greytHR
Attendance Records
Bullhorn ATS & CRM
Custom Object: Attendance Record
lossygreytHR stores raw swipe logs with timestamps, shift schedule assignments, overtime entries, and regularization status per employee. Bullhorn does not have an attendance data model. We map swipe logs to a Bullhorn Custom Object (customObject2s: Attendance Record) with fields for employee reference (linked to ClientContact), date, in-time, out-time, shift, overtime hours, and regularization status. Note that greytHR attendance records with regularization requirements may reflect swipe visibility issues reported in greytHR reviews; we export both the raw swipe log and the regularization status and flag records where the two contradict, so the customer's admin can verify attendance before the migration cutoff.
greytHR
Payroll Runs (Payslip data)
Bullhorn ATS & CRM
Custom Object: Payslip Record
lossygreytHR payroll runs produce payslip records with gross salary, component-wise deductions (PF employee share, ESI employee share, TDS, professional tax), employer contributions (PF employer, ESI employer), and net pay. Bullhorn has no native payroll engine; the Bullhorn Time & Expense module and Bullhorn Onboarding handle timesheet-based billing for placed contractors, not payroll computation. We map greytHR payslip rows to a Bullhorn Custom Object (customObject3s: Payslip Record) linked to the ClientContact employee record. The salary computation rules (grade-based salary structures, deduction formulas, variable pay rules) are greytHR policy logic and do not export; we document the current salary structure and deduction setup for the customer to re-enter in their chosen payroll platform. We recommend a supplemental manual export of payroll reports from the greytHR UI for audit trail completeness.
greytHR
Position History
Bullhorn ATS & CRM
Bullhorn Custom Fields on ClientContact
lossygreytHR tracks department transfers, designation changes, grade promotions, and location reassignments with effective dates as a position history timeline. Bullhorn's ClientContact model stores the current position and does not natively maintain a historical timeline. We map the most recent position assignment as the live ClientContact fields (title, business sector, department custom field) and preserve the full effective-dated history as a custom text field or a related Custom Object, depending on the volume of position changes. If the customer requires a clean position timeline for compliance or audit purposes, we document the complete history separately for manual entry or BI reporting.
greytHR
Claims and Expense Records
Bullhorn ATS & CRM
Custom Object: Expense Claim
lossygreytHR stores expense claims with category, amount, approval status, reimbursement date, and linked employee. Bullhorn has no native expense claim module for internal employees. We map approved and pending expense claims to a Bullhorn Custom Object (customObject4s: Expense Claim) linked to the ClientContact employee. Claim status (approved, rejected, pending) and reimbursement details transfer. Custom expense categories defined in greytHR map to a Bullhorn custom picklist field on the Expense Claim custom object; if the destination Bullhorn edition does not support enough custom fields, we prioritize the most-used categories and document the remainder for manual categorization post-migration.
greytHR
Documents (Employee files)
Bullhorn ATS & CRM
Bullhorn Document Storage on Candidate and ClientContact
1:1greytHR stores employee documents (offer letters, ID proofs, contracts, joining letters, promotion letters) in its document module. Bullhorn's ContentDocument and ContentVersion model handles document attachments on any entity. We export document metadata (filename, document type, upload date, related employee) from greytHR and link binary files to the corresponding Bullhorn Candidate or ClientContact record via ContentDocumentLink. Bullhorn's storage limits vary by edition; we flag total document volume during scoping to confirm the destination org has sufficient capacity. Some greytHR document access requires admin API credentials beyond standard user tokens; we request elevated read access during discovery.
greytHR
Performance Reviews
Bullhorn ATS & CRM
Custom Object: Performance Review
lossygreytHR PMS stores review cycles, rating scores, goals, and free-text feedback per employee. Bullhorn has no native performance management module. We map completed review records to a Bullhorn Custom Object (customObject5s: Performance Review) linked to the ClientContact employee, with fields for review period, rating score, goal text, and feedback. In-progress review cycles migrate as-is with a status flag; finalization must be completed in the destination system after cutover. Review cycle definitions and rating templates do not migrate as configuration data.
greytHR
Users and Roles
Bullhorn ATS & CRM
Bullhorn User provisioning
1:1greytHR Users are HR admins, managers, and employees with role-based access. Bullhorn Users are recruiters, sales staff, and administrators with a UserType (Admin, Regular, Portal). We extract the greytHR user list, map HR admin roles to Bullhorn Admin users and manager roles to Bullhorn Regular users with appropriate object and field permissions. Role definitions (permission sets, approval authority, data access scope) are greytHR platform logic and do not export; we document the current role hierarchy for the customer's Bullhorn admin to rebuild using Bullhorn's role and permission tooling.
greytHR
Audit Logs
Bullhorn ATS & CRM
Supplementary export package
1:1greytHR maintains a tamper-evident audit trail covering payroll, leave, and employee data changes. Bullhorn's own audit log tracks user actions within the ATS. We export the greytHR audit log records for the most recent 12 months as a supplementary compliance package delivered alongside the migration, stored as a CSV or JSON archive. This does not replace Bullhorn's native audit trail; it supplements it for the period prior to cutover. Audit log volume is typically manageable (a few hundred to a few thousand records per month depending on company activity).
greytHR
Custom Fields and Picklists
Bullhorn ATS & CRM
Bullhorn Custom Fields and Field Mappings
lossygreytHR custom fields on Employee records and its List of Values (LOV) picklist definitions map to Bullhorn custom fields and dropdown values. We export both the custom field values stored on each employee and the LOV definitions (display label, API value, sort order). Bullhorn custom fields are created via Admin > Field Mappings, and picklist values are entered in the field's value list. Bullhorn editions limit the number of custom fields per entity (Growth supports a defined set; Enterprise supports more). We prioritize migration of custom fields that contain statutory data, compensation data, or custom status fields, and document remaining custom fields for post-migration manual entry.
| greytHR | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Employee | Candidate and ClientContact1:many | Fully supported | |
| Statutory Compliance (UAN, PF, ESI, PAN, TDS) | Custom Fields on Candidate and ClientContactlossy | Fully supported | |
| Leave Management | Custom Object: Leave Balancelossy | Fully supported | |
| Attendance Records | Custom Object: Attendance Recordlossy | Fully supported | |
| Payroll Runs (Payslip data) | Custom Object: Payslip Recordlossy | Fully supported | |
| Position History | Bullhorn Custom Fields on ClientContactlossy | Mapping required | |
| Claims and Expense Records | Custom Object: Expense Claimlossy | Mapping required | |
| Documents (Employee files) | Bullhorn Document Storage on Candidate and ClientContact1:1 | Fully supported | |
| Performance Reviews | Custom Object: Performance Reviewlossy | Mapping required | |
| Users and Roles | Bullhorn User provisioning1:1 | Mapping required | |
| Audit Logs | Supplementary export package1:1 | Fully supported | |
| Custom Fields and Picklists | Bullhorn Custom Fields and Field Mappingslossy | 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.
greytHR gotchas
Statutory field data quality directly impacts government filings
Attendance regularization status does not always reflect true swipe data
Leave carry-forward and encashment rules are policy-specific, not record-specific
API lacks documented bulk export endpoint for historical payroll data
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 verification
We audit the greytHR tenant for employee count, active and inactive records, leave balance volume, attendance record count and retention period, payroll run history depth, custom field count, and statutory field completeness. We simultaneously verify the customer's Bullhorn edition (ATS, ATS Growth, Growth, or Enterprise) to confirm Custom Object availability and field limits. If the destination is ATS or ATS Growth, we scope the migration to Bullhorn-supported standard fields and Custom Objects, and flag the remainder as out-of-scope pending edition upgrade. We also capture greytHR user roles, approval workflows, and leave policy definitions as documentation for the post-migration rebuild phase.
Data quality audit and statutory field validation
greytHR community posts confirm that Indian HRMS data frequently contains inconsistencies in statutory fields: duplicate employee records, malformed PAN numbers (10-character alphanumeric), missing UAN values, and incorrect ESI numbers. We run a pre-migration audit against PF/ESI/PAN format rules, flag each invalid or missing statutory field, and present a remediation report to the customer. PF and ESI contribution data must be verified against government portal records before migration to ensure continuity of filing. Leave balances are audited for negative balances, future-dated accruals, and records with regularization flags that contradict raw swipe data. We do not write records with known invalid statutory values to Bullhorn without explicit customer sign-off.
Bullhorn schema configuration and Custom Object setup
We configure Bullhorn Custom Fields and Custom Objects to receive the mapped greytHR data before any records are written. This includes creating custom fields for UAN, PF, ESI, PAN, and TDS on Candidate and ClientContact; creating the Leave Balance, Attendance Record, Payslip Record, Expense Claim, and Performance Review Custom Objects with their required fields; configuring picklist values from greytHR LOV definitions; and setting up ContentDocument storage for document attachments. Bullhorn requires Custom Objects to be requested via a Support ticket (using Bullhorn's Custom Object Setup Spreadsheet) or configured by an admin with field mapping access. Bullhorn editions with lower Custom Object limits are flagged during discovery so the customer can plan an edition upgrade or accept a reduced data scope.
Sandbox migration and reconciliation
We run a full migration into the customer's Bullhorn Sandbox using production-like data volume to validate the schema, field mapping, and Custom Object configuration before production cutover. The customer's Bullhorn admin reconciles record counts (Candidates in, ClientContacts in, Custom Object records in), spot-checks 25-50 random records against the greytHR source for field accuracy and completeness, and reviews the statutory field values for government-portal compliance. Any mapping corrections, missing picklist values, or Custom Object field adjustments happen in the Sandbox phase, not in production. The customer signs off the Sandbox validation report before production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: Custom Object schema deployed first, then ClientContact records for internal employees (with statutory fields populated from greytHR Employee records), then Candidate records for greytHR hiring pipeline applicants, then Custom Object records for leave balances, attendance, payroll, expense claims, and performance reviews linked to their parent ClientContact or Candidate records. Documents are uploaded last via Bullhorn's ContentDocument API. Each phase emits a row-count reconciliation report; no phase proceeds until the previous phase's reconciliation passes. greytHR write access is suspended during the production migration window to prevent new records from being created on the source.
Cutover, validation, and automation rebuild handoff
We freeze greytHR writes at cutover, run a final delta migration of any records modified during the migration window, then enable Bullhorn as the system of record. We deliver a written inventory of greytHR approval workflows, leave policy rules, role definitions, and payroll computation settings requiring manual rebuild in Bullhorn or a third-party HRIS integration. Bullhorn Onboarding (formerly Able) is the native Bullhorn path for employee document collection and onboarding workflows. We support a one-week hypercare window where we resolve any reconciliation issues identified by the customer's HR and recruiting teams. Workflow rebuild, leave policy configuration, and payroll integration setup are outside standard migration scope and are documented as separate tasks for the customer's Bullhorn admin or implementation partner.
Platform deep dives
greytHR
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between greytHR and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across greytHR and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between greytHR 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
greytHR: Not publicly documented.
Data volume sensitivity
greytHR 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 greytHR to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your greytHR 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 greytHR
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.