HRMS migration
Field-level mapping, validation, and rollback between Keka and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Keka
Source
Bullhorn ATS & CRM
Destination
Compatibility
10 of 12
objects map 1:1 between Keka and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Keka to Bullhorn is a platform-class migration: Keka is a broad HRMS spanning Core HR, payroll, time tracking, performance, and hiring, while Bullhorn is an ATS and CRM purpose-built for staffing and recruiting agencies. The structural gap is wide — Bullhorn has no payroll, no attendance tracking, no statutory compliance fields, and no PSA billing model. We migrate what maps cleanly: Employee records become Bullhorn Candidates or Users (depending on whether the team is staffing-active or internal-HR), Keka Hire job requisitions and positions map to Bullhorn JobOrders, and Keka's multi-tier org hierarchy (Legal Entity, Business Unit, Department, Location) collapses into Bullhorn's flatter organizational model with the hierarchy preserved as custom fields on each record. Payroll history, PSA time entries, performance review bands, and Keka workflow automations have no Bullhorn equivalent — we document each one for the customer's admin to address post-migration.
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 Keka 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.
Keka
Employee
Bullhorn ATS & CRM
Candidate and/or User
1:1Keka Employee records map to Bullhorn Candidate for organizations with active recruiting operations. Contact fields (name, email, phone, address) map directly. Employment details (title, hire date, employment status) migrate to Candidate custom fields or Bullhorn Custom Objects if the Bullhorn edition supports them. Keka's org assignments (Legal Entity, Business Unit, Department, Location) are stored as custom text fields on the Candidate record. For internal HR use cases where Bullhorn is used for employee record-keeping without active recruiting, Keka Employees may map to Bullhorn User records with a configuration decision required during scoping. Bullhorn editions with Bullhorn CRM include Candidate and Contact as separate objects — Keka Employees typically map to Candidate when staffing is in scope.
Keka
Legal Entity
Bullhorn ATS & CRM
ClientCorporation (address fields and custom fields)
many:1Keka's four-tier org hierarchy (Legal Entity → Business Unit → Department → Location) has no direct Bullhorn equivalent. Bullhorn ClientCorporation represents a company or client but does not model a legal entity hierarchy. We collapse all four tiers into a flat structure: Legal Entity maps to ClientCorporation name or a custom field; Business Unit and Department map to custom text fields (e.g., customText1, customText2); Location maps to ClientCorporation address fields (city, state, country). The original four-tier structure is preserved as a concatenated custom field on each record for post-migration reconstruction.
Keka
Time Off / Leave Requests
Bullhorn ATS & CRM
Custom Object (LeaveBalance)
1:1Bullhorn has no native leave management or time-off accrual object. We create Bullhorn Custom Objects (where the Bullhorn edition supports them: up to 10 Custom Objects with 55 fields each on Front Office Growth/Enterprise; 2 on Bullhorn ATS; none on ATS Growth) to preserve Keka leave balances, accrual rules, leave types, and approval statuses. Each employee's leave balance becomes a Custom Object record linked to the Candidate. Leave type labels (e.g., Sick, Vacation, LOP) are stored as custom picklist values. If the Bullhorn edition does not support Custom Objects, leave data is delivered as a CSV export with a field mapping table for the customer to rebuild in their preferred tool.
Keka
Attendance Records
Bullhorn ATS & CRM
Custom Object (AttendanceLog) or CSV export
1:1Keka's gamified attendance system captures check-in/check-out timestamps, shift assignments, and overtime. Bullhorn has no attendance tracking object. We export raw attendance logs with timestamps, shift patterns, and overtime flags as Custom Object records (where supported) linked to the Candidate. If Custom Objects are not available in the target Bullhorn edition, attendance data is delivered as a structured CSV export with field mapping documentation for the customer's HR admin to import into a dedicated time-tracking tool post-migration.
Keka
Payroll History and Pay Components
Bullhorn ATS & CRM
Custom Object (PayrollHistory) or CSV export
1:1Keka payroll records include salary components, statutory deductions (PF, TDS, ESI), reimbursements, and effective-dated pay run records. Bullhorn ATS does not model payroll or compensation history. We export all payroll runs ordered by effective date to preserve sequencing, map pay component labels to a Custom Object schema (where supported), and deliver compensation data as a structured record set. Indian statutory fields (PF account number, ESI number, TAN) map to custom fields on the PayrollHistory Custom Object. If Custom Objects are unavailable, payroll history is delivered as a CSV with a mapping table and an explicit note that Bullhorn does not process payroll natively.
Keka
Performance Reviews (Perform module)
Bullhorn ATS & CRM
Custom Object (PerformanceReview) or CSV export
1:1Keka's Perform module manages review cycles, review instances, employee groups, and configurable performance band names (e.g., Exceeds, Meets, Needs Improvement). Bullhorn has no native appraisal or performance management object. We export each review cycle as a Custom Object record (where supported) with the review date, reviewer, reviewee, and original band label preserved in a text field. Band labels are mapped to the closest numeric equivalent (e.g., Exceeds = 5, Meets = 3, Needs Improvement = 1) using a configurable mapping table the customer reviews before migration. If Custom Objects are unavailable, performance data is delivered as a CSV with field mapping documentation.
Keka
Keka Hire: Requisitions and Positions
Bullhorn ATS & CRM
JobOrder
1:1Keka Hire requisitions and position-level job data map to Bullhorn JobOrder. Keka's job title, job description, number of positions, employment type (full-time, part-time, contract), and requisition status map directly to Bullhorn JobOrder fields (title, description, numOpenings, employmentType, status). Keka's position-based hiring tracking (multiple positions per job, introduced late 2024) maps to Bullhorn JobOrder with multiple JobSubmission records created per placement if applicable. We preserve Keka's requisition ID as a custom field on the JobOrder for audit trail.
Keka
Keka Hire: Candidates
Bullhorn ATS & CRM
Candidate
1:1Keka Hire candidate records map to Bullhorn Candidate with email as the primary dedupe key. Candidate fields (name, email, phone, resume/CV, source, status) migrate directly. Keka's candidate scorecards and interview feedback (rating, comments, interviewer, date) map to Bullhorn Candidate custom fields or to a Custom Object (InterviewFeedback) if the edition supports it. Candidate submission history from Keka Hire maps to Bullhorn JobSubmission records linked to the Candidate and JobOrder. We resolve Candidate deduplication by email before insert to avoid creating duplicate candidate profiles in Bullhorn.
Keka
Keka Hire: Scorecards and Interview Feedback
Bullhorn ATS & CRM
Custom Object (InterviewFeedback)
1:1Keka's structured interview scorecards with configurable rating criteria and free-text feedback do not have a native Bullhorn equivalent. Interview feedback is stored in a Custom Object (InterviewFeedback) with fields for the candidate (CandidateID), job order (JobOrderID), interviewer name, interview date, rating score, and comments. If Custom Objects are unavailable in the target Bullhorn edition, feedback is delivered as a CSV export linked by candidate email and job order ID.
Keka
Documents and Custom Document Fields
Bullhorn ATS & CRM
Attachment and ContentDocument on Candidate/JobOrder
1:1Keka document storage (offer letters, contracts, ID proofs, policy acknowledgements) and custom document fields attached to employee profiles migrate to Bullhorn as ContentDocument records linked via ContentDocumentLink to the parent Candidate, JobOrder, or ClientCorporation record. We export the binary file, the original filename, the document type label from Keka's custom field, and the upload date. Bullhorn's file size limits and supported file types apply. Documents without a clear Bullhorn parent entity are attached to the Candidate record by default.
Keka
Keka PSA: Projects and Time Entries
Bullhorn ATS & CRM
CSV export or third-party billing tool
lossyKeka PSA covers projects, billable and non-billable time entries, retainer invoicing, and credit notes. Bullhorn ATS has no native PSA or project billing module. We export Keka PSA project assignments, time entries, and billing records as a structured CSV with metadata identifying the billing model (time-based or retainer) and invoice status. The customer maps these records to Bullhorn Invoice (if Bullhorn Billing is licensed) or to their preferred third-party billing tool post-migration.
Keka
Keka Workflow Automations
Bullhorn ATS & CRM
Not migrated — written inventory delivered
1:1Keka workflow automations (Job Workflows and Global Workflows tied to hiring pipeline events) are platform-native configuration objects. Bullhorn workflows (Bullhorn Automation, formerly Herefish) use a different automation model. We do not migrate workflow definitions as code. We audit every active Keka workflow, document its trigger conditions, actions, and recipients in a written inventory, and deliver the handoff to the customer's Bullhorn admin for rebuild in Bullhorn Automation or via Bullhorn's workflow builder.
| Keka | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Employee | Candidate and/or User1:1 | Fully supported | |
| Legal Entity | ClientCorporation (address fields and custom fields)many:1 | Fully supported | |
| Time Off / Leave Requests | Custom Object (LeaveBalance)1:1 | Fully supported | |
| Attendance Records | Custom Object (AttendanceLog) or CSV export1:1 | Fully supported | |
| Payroll History and Pay Components | Custom Object (PayrollHistory) or CSV export1:1 | Mapping required | |
| Performance Reviews (Perform module) | Custom Object (PerformanceReview) or CSV export1:1 | Fully supported | |
| Keka Hire: Requisitions and Positions | JobOrder1:1 | Fully supported | |
| Keka Hire: Candidates | Candidate1:1 | Fully supported | |
| Keka Hire: Scorecards and Interview Feedback | Custom Object (InterviewFeedback)1:1 | Fully supported | |
| Documents and Custom Document Fields | Attachment and ContentDocument on Candidate/JobOrder1:1 | Mapping required | |
| Keka PSA: Projects and Time Entries | CSV export or third-party billing toollossy | Fully supported | |
| Keka Workflow Automations | Not migrated — written inventory delivered1: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.
Keka gotchas
Effective-dated compensation and payroll history sequencing
Organizational hierarchy decomposition required
PSA billing model translation
Performance review band label customisation
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 Bullhorn edition assessment
We audit the source Keka account across modules in scope (Core HR, Payroll, Perform, Hire, PSA), employee and candidate record counts, the Keka org hierarchy depth in use, active workflow definitions, and the Keka PSA billing model. We pair this with a Bullhorn edition assessment: ATS Growth (lowest cost, no Custom Objects) suits organizations migrating Candidate and JobOrder data only; Bullhorn ATS (2 Custom Objects) supports basic leave or payroll history preservation; Front Office Growth or Enterprise (up to 10 Custom Objects) is required for full payroll history, performance reviews, and multi-tier org hierarchy preservation. The discovery output is a written migration scope and Bullhorn edition recommendation.
Bullhorn Custom Object setup coordination
We submit the Bullhorn Custom Object Setup Sheet to Bullhorn Support for each required Custom Object (PayrollHistory, LeaveBalance, AttendanceLog, PerformanceReview, InterviewFeedback). Bullhorn Support configures the object schema and returns the custom field API names. We also coordinate with the customer's Bullhorn admin to provision any missing Bullhorn Users (by email match to Keka Owner records) and to grant the migration user field-level access to all standard and custom objects before import begins.
Schema design and field mapping documentation
We design the destination Bullhorn schema: standard fields (Candidate, JobOrder, ClientCorporation, JobSubmission) mapped from Keka equivalents, custom fields for Keka org hierarchy tiers (legalEntity, businessUnit, department, location as customText fields), and Custom Object schemas for payroll, leave, attendance, and performance. We produce a written field mapping document that the customer's Bullhorn admin reviews and approves before migration. This document includes the Bullhorn field API names, data types, and any transformation logic (e.g., Keka band labels to numeric ratings).
Sandbox migration and reconciliation
We run a full migration into a Bullhorn Sandbox (or a dry-run in production with a data freeze window) using production-like data volume. The customer's Bullhorn admin reconciles record counts (Candidates in, JobOrders in, Custom Object records in), spot-checks 25-50 records against the Keka source, and verifies the org hierarchy custom fields and Custom Object data. Any mapping corrections, dedupe rule adjustments, or Custom Object schema changes happen in the sandbox before production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: Bullhorn Users (validated against Keka Owners by email), ClientCorporations (from Keka Legal Entities and Locations), Candidates (from Keka Employees and Keka Hire candidates with email dedupe resolved), JobOrders (from Keka Hire requisitions), JobSubmissions (from Keka Hire candidate-to-job associations), Custom Objects for payroll, leave, attendance, and performance (last, with lookup IDs resolved to parent Candidates). Bullhorn API rate limits (1,500 requests per minute) are managed with chunking and exponential backoff. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and workflow rebuild handoff
We freeze Keka writes during cutover, run a final delta migration of any records modified during the migration window, then enable Bullhorn as the system of record. We deliver the Keka workflow automation inventory document to the customer's Bullhorn admin for rebuild in Bullhorn Automation. We deliver the Keka PSA CSV export with billing model metadata for the customer's billing admin to import into their preferred tool. We support a one-week hypercare window for reconciliation issues. We do not rebuild Keka workflows as Bullhorn Automation inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
Keka
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between Keka and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Keka and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between Keka 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
Keka: Not publicly documented.
Data volume sensitivity
Keka 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 Keka to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Keka 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 Keka
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.