HRMS migration

Migrate from In-recruiting to Bullhorn ATS & CRM

Field-level mapping, validation, and rollback between In-recruiting and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.

In-recruiting logo

In-recruiting

Source

Bullhorn ATS & CRM

Destination

Bullhorn ATS & CRM logo

Compatibility

77%

10 of 13

objects map 1:1 between In-recruiting and Bullhorn ATS & CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from In-recruiting to Bullhorn is a cross-platform ATS migration for European recruitment agencies stepping into Bullhorn's enterprise staffing ecosystem. In-recruiting stores the candidate lifecycle in a flat relational structure (Candidates linked to Jobs via Applications with pipeline stage history), while Bullhorn models the same data across separate Candidate, JobOrder, JobSubmission, and Placement entities with a different stage taxonomy. We extract from In-recruiting via CSV export and REST API, resolve the stage taxonomy gap (In-recruiting's custom stage labels map to Bullhorn's opportunityStage values or Placement status), and import into Bullhorn through the REST API with Bullhorn's documented field character limits enforced (some fields cap at 100 characters). We do not migrate workflows, automation rules, or email sequences as code; we deliver a written inventory of every In-recruiting automation for the customer's Bullhorn admin to rebuild 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

In-recruiting logo

In-recruiting

What's pushing teams away

  • Pricing structure is complex — four named tiers plus custom Enterprise plus add-ons make it hard to estimate total cost without sales engagement.
  • Reviewer feedback notes the application form usability and statistical/reporting depth need improvement compared to modern competitors.
  • Entry-level cost (€49–54/month) is higher than some flat-rate annual alternatives that target the same SMB segment.
  • No anti-cheating features for assessments are documented, limiting suitability for high-volume technical screening at scale.
  • Public API capability is not documented in reviewer write-ups, suggesting either limited or sales-gated developer access.

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 In-recruiting objects map to Bullhorn ATS & CRM

Each row shows how a In-recruiting 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.

In-recruiting

Candidate

maps to

Bullhorn ATS & CRM

Candidate

1:1
Fully supported

In-recruiting Candidate records map to Bullhorn Candidate. The In-recruiting candidateID becomes Bullhorn's candidateID; firstName, lastName, email, phone, and address fields map directly. We flag any In-recruiting custom fields on Candidate (for example, availability windows, source channel, or salary expectations) that need to map to Bullhorn Candidate custom fields. Bullhorn's Candidate entity supports custom fields and Custom Object associations per record.

In-recruiting

Job

maps to

Bullhorn ATS & CRM

JobOrder

1:1
Fully supported

In-recruiting Job records map to Bullhorn JobOrder. The job title, description, address, employmentType, and payRate fields map directly. In-recruiting's jobStatus (Active/Paused/Closed) maps to Bullhorn's JobOrder status. JobOwner (the assigned recruiter) maps to Bullhorn's JobOrder ownerId via User lookup by email.

In-recruiting

Application

maps to

Bullhorn ATS & CRM

JobSubmission

1:1
Fully supported

In-recruiting Application records (the join entity between Candidate and Job) map to Bullhorn JobSubmission. The applicationDate and currentStage map to JobSubmission dateSubmitted and the assigned opportunityStage. We preserve the full application history (stage transitions with timestamps) as Bullhorn JobSubmission status-change records or as Note attachments on the JobSubmission if the stage history is not representable through standard status values.

In-recruiting

Pipeline Stage

maps to

Bullhorn ATS & CRM

opportunityStage

lossy
Fully supported

In-recruiting's custom pipeline stages (for example, 'Phone Screen', 'Technical Interview', 'Offer', 'Rejected') map to Bullhorn opportunityStage values on the corresponding JobSubmission. Bullhorn predefines standard stage values; custom stage names require Bullhorn Support or an admin with stage-configuration access to add values to the opportunityStage picklist before migration. We validate the picklist during scoping and configure any missing values as part of the destination schema setup.

In-recruiting

Interview

maps to

Bullhorn ATS & CRM

Appointment

1:1
Fully supported

In-recruiting Interview records map to Bullhorn Appointment. The interviewDate, interviewer (linked User), interviewType, and outcome map to Bullhorn Appointment's startDateTime, endDateTime, userID (interviewer), type, and outcome fields. Candidate and JobOrder associations map to Bullhorn's candidateID and jobOrderID on the Appointment. Interview scorecards or feedback notes migrate as Note attachments to the Appointment.

In-recruiting

Client

maps to

Bullhorn ATS & CRM

ClientCorporation

1:1
Fully supported

In-recruiting Client records map to Bullhorn ClientCorporation. The company name, address, industry, website, and billingContact fields map directly. In-recruiting client records that include both organizational and contact-level data require a split: the company-level fields go to ClientCorporation and any primary contact fields go to a corresponding ClientContact record linked to the ClientCorporation.

In-recruiting

Client Contact

maps to

Bullhorn ATS & CRM

ClientContact

1:1
Fully supported

In-recruiting contact records associated with a Client map to Bullhorn ClientContact. The contact name, email, phone, title, and department map directly. ClientContact is linked to ClientCorporation via the clientCorporationID foreign key, which we resolve at migration time after ClientCorporation records are created.

In-recruiting

Placement

maps to

Bullhorn ATS & CRM

Placement

1:1
Fully supported

In-recruiting Placement records (candidates successfully placed in jobs) map to Bullhorn Placement. The candidateID, jobOrderID, startDate, endDate, payRate, billRate, and placementStatus map to Bullhorn Placement fields. In-recruiting's placement history preserves as Bullhorn Placement records with their original start dates, enabling reporting on historical placement data in Bullhorn.

In-recruiting

User/Recruiter

maps to

Bullhorn ATS & CRM

User

1:1
Fully supported

In-recruiting User records (recruiters, admins, hiring managers) map to Bullhorn User. We resolve by email match across both systems. Any In-recruiting User without a matching Bullhorn User goes to a reconciliation queue for the customer's Bullhorn admin to provision before record import resumes. OwnerId references on JobOrder, JobSubmission, and Placement require a valid Bullhorn User at migration time.

In-recruiting

Note

maps to

Bullhorn ATS & CRM

Note

1:1
Fully supported

In-recruiting Notes attached to Candidates, Jobs, Applications, or Clients map to Bullhorn Note. The note text, author, and creation date migrate. Bullhorn Note is linked via ContentDocumentLink to the parent entity (Candidate, JobOrder, JobSubmission, ClientCorporation, ClientContact, or Placement). Rich-text formatting in In-recruiting Notes converts to plain text or HTML depending on Bullhorn's Note body field support.

In-recruiting

Activity/Engagement

maps to

Bullhorn ATS & CRM

Task

1:1
Fully supported

In-recruiting engagement records (calls, emails, tasks logged against Candidates or Applications) map to Bullhorn Task. The activity type, date, duration, outcome, and description map to Bullhorn Task fields. Call activities migrate as Task with taskSubtype=Call and duration preserved. Email activities migrate as Task with type=Email and the body preserved. We resolve the target entity (candidateID, jobSubmissionID) at migration time via lookup.

In-recruiting

Custom Field (Candidate/Job/Application)

maps to

Bullhorn ATS & CRM

Custom Object

lossy
Fully supported

In-recruiting custom fields that do not map to standard Bullhorn fields migrate to Bullhorn Custom Objects or custom fields on the standard entity. Bullhorn Front Office Growth and Enterprise editions support up to 10 Custom Objects with 55 fields each; ATS Growth supports 2; standard ATS Growth entry has none. We design the Custom Object schema during scoping, submit the Custom Object Setup Sheet to Bullhorn Support before migration, and map In-recruiting field values into the configured Custom Object fields during data load.

In-recruiting

Tag/Label

maps to

Bullhorn ATS & CRM

Multi-select Picklist or Topic

lossy
Fully supported

In-recruiting tags or labels applied to Candidates, Jobs, or Applications migrate to Bullhorn custom multi-select picklist fields on the relevant entity. We identify the full tag vocabulary during scoping and configure Bullhorn multi-select picklist values to match before migration. Tags used for candidate segmentation migrate to Bullhorn Topics with TopicAssignment records if the customer uses Bullhorn's topic taxonomy.

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.

In-recruiting logo

In-recruiting gotchas

High

Public API details are not surfaced in reviewer documentation

Medium

Tier structure couples user count, active jobs, and feature flags

Medium

Multiposting integrations are tier-gated and per-board configured

Low

Reporting/statistics weakness flagged by reviewers

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

  • In-recruiting stage taxonomy does not map directly to Bullhorn opportunityStage

    In-recruiting allows agencies to define arbitrary pipeline stage names per job or globally, while Bullhorn uses a fixed opportunityStage picklist that requires Bullhorn Support to extend. Migrations that skip this step attempt to write In-recruiting stage values into Bullhorn and silently reject records or default them to the first stage value. We audit the full In-recruiting stage vocabulary during scoping, submit the missing opportunityStage values to Bullhorn Support before migration begins, and validate that every In-recruiting application stage has a corresponding Bullhorn value before any JobSubmission import runs.

  • Bullhorn character limits on text fields can truncate In-recruiting data

    Bullhorn's standard fields enforce character limits: some fields cap at 100 characters, others at 255, 500, or unlimited depending on field type. In-recruiting custom fields with longer text values (for example, long-form interview notes, rich-text candidate profiles, or detailed job descriptions) may exceed Bullhorn's limit and get silently truncated on import. We audit all In-recruiting text fields against Bullhorn's field metadata during scoping, flag fields that exceed Bullhorn limits, and either configure longer field types or store overflow content in attached Notes before migration begins.

  • Client vs ClientCorporation and ClientContact split requires design

    In-recruiting stores client organizations and client contacts within a single Client record type, while Bullhorn separates ClientCorporation (the company) from ClientContact (the person). If In-recruiting Client records contain both company-level data and primary-contact data in one record, a manual split decision is required before migration: which fields belong to ClientCorporation and which belong to ClientContact. We document the split during scoping, create both entities in Bullhorn, and link ClientContact to ClientCorporation via the clientCorporationID foreign key. Migrations that skip this step end up with orphaned ClientContact records or duplicate company entries.

  • In-recruiting Workflows and email sequences do not migrate to Bullhorn

    In-recruiting automation rules (workflows triggered by stage changes, time-based actions, or field updates) and email sequences (cadence-based outreach) are platform-specific and do not export in a transferable format. Bullhorn Automation (formerly Herefish) is a separate product with a different automation model. We do not migrate automations as code. We deliver a written inventory of every active In-recruiting Workflow and Sequence with its trigger, conditions, actions, and a recommended Bullhorn equivalent (Bullhorn Automation, Bullhorn Tasks, or Bullhorn Workflows). The customer's Bullhorn admin or a Bullhorn partner rebuilds them post-migration.

  • Bullhorn Back Office and Pay & Bill require separate configuration post-migration

    If the customer uses In-recruiting for billing or timesheet data alongside ATS data, Bullhorn's Back Office and Pay & Bill modules require separate configuration after migration. Placement records migrate as historical data, but active contractor payroll, timesheet processing, and invoicing workflows do not migrate automatically. We flag any In-recruiting billing or timesheet data during discovery and deliver it as structured CSV alongside the Bullhorn ATS migration so that the customer's Bullhorn implementation team can configure Back Office import templates.

Migration approach

Six steps for a successful In-recruiting to Bullhorn ATS & CRM data migration

  1. Discovery and stage taxonomy audit

    We audit the source In-recruiting instance across all entity types (Candidates, Jobs, Applications, Interviews, Clients, Client Contacts, Placements, Notes, Activities, and Custom Fields), the full pipeline stage vocabulary, and any active In-recruiting Workflows or Sequences. We pair this with a Bullhorn edition assessment: ATS Growth covers basic migration with up to 2 Custom Objects; Front Office Growth or Enterprise is required for more than 2 Custom Objects; Bullhorn One adds Back Office and Pay & Bill if the customer manages contractor billing. The discovery output is a written migration scope with the Bullhorn edition recommendation and a complete list of missing Bullhorn opportunityStage values requiring Bullhorn Support submission.

  2. Schema design and Client split design

    We design the Bullhorn destination schema during a sandbox or validation run. This includes configuring missing opportunityStage values via Bullhorn Support, designing the ClientCorporation and ClientContact split for every In-recruiting Client record, creating Custom Objects (with field-level configuration per the Custom Object Setup Sheet) if the In-recruiting custom field count exceeds 2, and mapping In-recruiting field types to Bullhorn field types (text length validation, picklist creation for multi-select values, date format normalisation). Schema design is validated in a Bullhorn sandbox before production migration begins.

  3. Sandbox migration and reconciliation

    We run a full migration into a Bullhorn sandbox environment using production-like data volume. The customer's Bullhorn admin reconciles record counts (Candidates in, Jobs in, JobSubmissions in, Placements in, Notes in), spot-checks 25-50 records against the In-recruiting source, and signs off the schema and mapping before production migration begins. Any field-length truncations, stage-mapping corrections, or Client split decisions are resolved here. Bullhorn Support is engaged during this phase for any opportunityStage picklist additions.

  4. Owner reconciliation and User provisioning

    We extract every distinct In-recruiting User referenced on Job, Application, Interview, or Placement records and match by email against the Bullhorn destination org's User table. Any In-recruiting User without a matching Bullhorn User goes to a reconciliation queue. The customer's Bullhorn admin provisions missing Users (active or inactive depending on whether the original In-recruiting user is still employed). Migration cannot proceed past JobOrder and JobSubmission import because ownerId references are required on both.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Users (manual provisioning validated), ClientCorporations (from In-recruiting Client records with company-level fields), ClientContacts (from In-recruiting Client records with contact-level fields linked to ClientCorporation), Candidates, JobOrders, JobSubmissions (with opportunityStage resolved), Appointments (linked to Candidate and JobOrder), Placements (linked to Candidate and JobOrder), Notes (linked via ContentDocumentLink), Activities (Tasks via Bullhorn REST API), and Custom Objects (last, because they often have lookups to standard entities). Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, validation, and Automation rebuild handoff

    We freeze In-recruiting 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 In-recruiting Workflow and Sequence inventory document to the customer's Bullhorn admin team with a recommended Bullhorn Automation or Bullhorn Workflow equivalent for each. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's recruiting team. We do not rebuild In-recruiting Workflows or Sequences 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

In-recruiting logo

In-recruiting

Source

Strengths

  • 11-language platform with strong European footprint and localisation.
  • Full-lifecycle ATS covering career pages, multiposting, screening, interviews, and reporting.
  • Named enterprise references (McDonald's, Burger King, Renault Trucks, DHL Express).
  • Tiered plans accommodating SMB through Enterprise.
  • 15+ years of product tenure (founded 2009 under Intervieweb).

Weaknesses

  • Complex pricing with four named tiers plus add-ons and custom Enterprise.
  • Reporting and application form usability flagged for improvement in reviews.
  • Public API documentation not surfaced via review aggregators.
  • No anti-cheating assessment features documented.
  • Higher entry price than some flat-fee annual SMB alternatives.
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. 1 of 7 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

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

  • Object compatibility

    B

    1 of 7 objects need a mapping; the rest are 1:1.

  • 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

    In-recruiting: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your In-recruiting 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 In-recruiting to Bullhorn ATS & CRM data migrations

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

Can't find your answer?

Walk through your In-recruiting 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 accounts under 10,000 Candidates and 2,000 active Jobs with no Custom Objects and a straightforward pipeline stage vocabulary. Migrations with Custom Objects, large historical placement records (over 50,000 Placements), multi-branch deployment, or Bullhorn Back Office and Pay & Bill configuration move to eight to twelve weeks because of Custom Object schema setup via Bullhorn Support, ClientCorporation-ClientContact split design, and opportunityStage picklist configuration.

Adjacent paths

Related migrations to explore

Ready when you are

Move from In-recruiting.
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