HRMS migration

Migrate from Keka to Bullhorn ATS & CRM

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 logo

Keka

Source

Bullhorn ATS & CRM

Destination

Bullhorn ATS & CRM logo

Compatibility

83%

10 of 12

objects map 1:1 between Keka and Bullhorn ATS & CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Keka logo

Keka

What's pushing teams away

  • Onboarding and implementation after signing up is cited as a friction point — initial setup and configuration require significant effort before the product delivers value.
  • Limited customization options frustrate organizations with unique workflows or industry-specific requirements that cannot be accommodated within Keka's opinionated module structure.
  • Slower performance during login or peak usage periods, particularly for large user bases or organizations with high concurrent activity, noted in professional services automation contexts.
  • Feature gaps in PSA billing — particularly around retainer invoicing and credit note workflows — cause professional services teams to seek alternatives with more mature finance tooling.

Choosing

Bullhorn ATS & CRM logo

Bullhorn ATS & CRM

What's pulling them in

  • Agencies choose Bullhorn because it combines ATS and CRM in one platform, eliminating the need to switch between separate tools for candidate management and client relationship tracking.
  • The resume parser extracts contact details, work history, and skills into structured, searchable candidate profiles automatically without manual data entry, reportedly driving 24% more placements per recruiter.
  • Bullhorn's placement and split-billing model natively supports contract staffing workflows, handling start/end dates, overtime rules, and multi-party pay/charge rates in a single record.
  • The platform offers extensive third-party integrations through its Recruitment Cloud Marketplace, connecting with back-office, onboarding, and payroll systems used by staffing agencies.
  • 72% of Bullhorn customers are teams with fewer than 10 users, and Bullhorn's implementation team handles setup and data migration for small agencies going live within weeks.

Object mapping

How Keka objects map to Bullhorn ATS & CRM

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

maps to

Bullhorn ATS & CRM

Candidate and/or User

1:1
Fully supported

Keka 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

maps to

Bullhorn ATS & CRM

ClientCorporation (address fields and custom fields)

many:1
Fully supported

Keka'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

maps to

Bullhorn ATS & CRM

Custom Object (LeaveBalance)

1:1
Fully supported

Bullhorn 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

maps to

Bullhorn ATS & CRM

Custom Object (AttendanceLog) or CSV export

1:1
Fully supported

Keka'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

maps to

Bullhorn ATS & CRM

Custom Object (PayrollHistory) or CSV export

1:1
Mapping required

Keka 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)

maps to

Bullhorn ATS & CRM

Custom Object (PerformanceReview) or CSV export

1:1
Fully supported

Keka'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

maps to

Bullhorn ATS & CRM

JobOrder

1:1
Fully supported

Keka 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

maps to

Bullhorn ATS & CRM

Candidate

1:1
Fully supported

Keka 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

maps to

Bullhorn ATS & CRM

Custom Object (InterviewFeedback)

1:1
Fully supported

Keka'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

maps to

Bullhorn ATS & CRM

Attachment and ContentDocument on Candidate/JobOrder

1:1
Mapping required

Keka 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

maps to

Bullhorn ATS & CRM

CSV export or third-party billing tool

lossy
Fully supported

Keka 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

maps to

Bullhorn ATS & CRM

Not migrated — written inventory delivered

1:1
Fully supported

Keka 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.

Gotchas + challenges

What specifically takes care here

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 logo

Keka gotchas

High

Effective-dated compensation and payroll history sequencing

Medium

Organizational hierarchy decomposition required

Medium

PSA billing model translation

Low

Performance review band label customisation

Bullhorn ATS & CRM logo

Bullhorn ATS & CRM gotchas

High

ATS Growth edition has no API access

High

Attachments excluded from CSV bulk exports

Medium

Custom Object limits vary sharply by edition

Medium

Opportunity pipeline stages are recruitment-specific

Low

Resume parse quality varies by document format

Pair-specific challenges

  • Bullhorn has no payroll, attendance, or time-off object

    Keka's payroll module (salary components, statutory deductions, pay runs), attendance tracking (check-in/out, shifts, overtime), and leave management (accruals, approvals, balances) have no Bullhorn ATS equivalent. Bullhorn editions vary in Custom Object support: Front Office Growth/Enterprise supports up to 10 Custom Objects with 55 fields each; Bullhorn ATS supports 2; ATS Growth supports none. We create Custom Objects where available to preserve payroll and leave data, and deliver these modules as structured CSVs with field mapping documentation where they are not. The customer's admin rebuilds leave and attendance workflows in Bullhorn Automation or a third-party time-tracking tool.

  • Four-tier org hierarchy must be flattened into Bullhorn's flat org model

    Keka enforces a hierarchy of Legal Entity → Business Unit → Department → Location. Bullhorn's org model is flat: ClientCorporation holds company-level data with address fields but no multi-tier hierarchy. We capture all four Keka tiers as custom fields on each record (Employee/Candidate/ClientCorporation) so the customer can reassign them post-migration. A flat Department field and a concatenated org path field are the standard Bullhorn workaround. If the customer needs to preserve the full hierarchy, we can model it as multiple Custom Objects with lookup relationships, but this requires Bullhorn Front Office Growth or Enterprise.

  • Keka candidates must be deduplicated by email before Bullhorn insert

    Bullhorn enforces a single Candidate record per email address. Keka Hire may have candidate records created at different pipeline stages (application, screening, offer) as separate records or with duplicate contact information. We resolve candidates by email address before Bullhorn insert, merging Keka candidate stage histories into a single Bullhorn Candidate record with a timeline of all application statuses preserved in a custom field. Unresolved duplicates (candidates with no email) are held in a reconciliation queue for the customer's admin to resolve manually.

  • Bullhorn Custom Objects require Bullhorn Support to create and have edition limits

    Custom Objects in Bullhorn (required for payroll history, leave balances, attendance logs, and performance reviews) must be initially configured by Bullhorn Support via a submitted setup sheet. The edition limits are: Front Office Growth/Enterprise up to 10 Custom Objects (55 fields each), Bullhorn ATS up to 2, ATS Growth none. We coordinate the Custom Object setup ticket with Bullhorn Support as a pre-migration step, providing the field names, types, and labels for each object. Custom Objects created as part of marketplace integrations or compliance functionality do not count toward these limits.

  • Keka PSA billing models have no Bullhorn equivalent

    Keka PSA supports time-based billing (billable hours tracked per resource) and retainer billing (fixed invoicing at intervals) with credit note workflows. Bullhorn has no native project management or billing module. We export Keka PSA project assignments, time entries, and billing records as a structured CSV export with metadata identifying the billing model. For organizations with active PSA use, we recommend Bullhorn Billing (if licensed) or a third-party back-office integration. Retainer billing and credit notes are flagged explicitly in the export for the customer's billing admin to address.

Migration approach

Six steps for a successful Keka to Bullhorn ATS & CRM data migration

  1. 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.

  2. 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.

  3. 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).

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

Keka logo

Keka

Source

Strengths

  • Unified platform combining Core HR, payroll, attendance, performance, and hiring modules in one product.
  • Employee-centric UI design with strong mobile app experience rated highly across G2 reviews.
  • Automated payroll processing with statutory compliance support (PF, TDS, ESI for India).
  • Configurable approval workflows for leave, onboarding, and hiring requisitions.
  • Position-based hiring tracking introduced in late 2024 for structured workforce planning.

Weaknesses

  • Onboarding and post-signup implementation is cited as a friction point in multiple reviews.
  • Limited customization restricts adaptability for organizations with non-standard HR workflows.
  • Performance degrades during peak usage or large concurrent user sessions.
  • API capabilities and rate limits are not publicly documented, complicating programmatic extraction.
  • Enterprise-level feature depth lags behind larger HCM suites for complex multi-entity or multi-country scenarios.
Bullhorn ATS & CRM logo

Bullhorn ATS & CRM

Destination

Strengths

  • Unified ATS and CRM on one platform purpose-built for staffing agencies, eliminating separate tools for candidates and clients.
  • Automated resume parsing extracts structured candidate data—contact details, work history, skills—into searchable profiles instantly.
  • Native placement and split-billing model handles contract staffing workflows including start/end dates and overtime rules.
  • Bullhorn Recruitment Cloud Marketplace offers 100+ pre-validated third-party integrations spanning the full recruiting lifecycle.
  • 24/7 global support coverage from 350+ support staff with dedicated account management included at all tiers.

Weaknesses

  • Widely regarded as old and bloated with an unintuitive interface and steep learning curve for new recruiters.
  • Slow page loads and performance lag cited in over 200 verified G2 reviews during high-volume recruiting periods.
  • Pricing is opaque—custom-negotiated per organization with significant upfront implementation fees that vary by deal.
  • ATS Growth edition excludes API access entirely, preventing automated data export without upgrading first.

Complexity grading

How hard is this migration?

Standard HRMS migration. All 7 core objects map 1:1 between Keka and Bullhorn ATS & CRM.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Keka and Bullhorn ATS & CRM.

  • Object compatibility

    A

    All 7 core objects map 1:1 between Keka and Bullhorn ATS & CRM.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    7-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Keka: Not publicly documented.

  • Data volume sensitivity

    B

    Keka doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Keka to Bullhorn ATS & CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Keka to Bullhorn ATS & CRM data migrations

Answers to the questions buyers ask most during Keka to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most migrations land between three and five weeks for Keka Core HR employee data (under 2,000 records) with no PSA or performance history in scope. Migrations that include Keka Hire candidate and job order data, multi-tier org structures, payroll history, or PSA time entries move to eight to fourteen weeks because of Bullhorn Custom Object setup, dedupe resolution, and the Bullhorn API rate-limit handling required for large record sets. The Bullhorn Custom Object creation process (submitted via Bullhorn Support) typically adds three to five business days to the pre-migration phase.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Keka.
Land in Bullhorn ATS & CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day