HRMS migration

Migrate from eRecruiter to Bullhorn ATS & CRM

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

eRecruiter logo

eRecruiter

Source

Bullhorn ATS & CRM

Destination

Bullhorn ATS & CRM logo

Compatibility

50%

6 of 12

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

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from eRecruiter to Bullhorn is a transition from a Polish-market ATS focused on candidate tracking and GDPR compliance to a global staffing and recruitment CRM that combines ATS and sales pipeline management in one platform. The most significant structural difference is that eRecruiter models each candidate-to-job pair as a single Application record, while Bullhorn uses JobOrder (job), Candidate (person), and JobSubmission (the relationship between them) as three distinct entities. We resolve that 1:N split during transformation, creating one JobSubmission per eRecruiter Application row against the resolved Candidate and JobOrder references in Bullhorn. Bullhorn's custom object limits are edition-gated (ATS Growth: none, Bullhorn ATS: 2, Front Office Growth/Enterprise: 10) and must be confirmed before migration scope is finalized. Workflows and automation logic in eRecruiter do not migrate; we deliver a written inventory of every active rule for the customer's Bullhorn admin to rebuild in Bullhorn Automation or Herefish.

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

eRecruiter logo

eRecruiter

What's pushing teams away

  • Reporting granularity does not support job-level breakdowns — users cannot slice recruitment metrics by seniority or job level, only by department and location.
  • Pricing is not publicly published, requiring a sales contact for every budget estimate, which slows down procurement and comparison shopping.
  • Limited bulk export options — the platform lacks a native CSV export for all candidate records, making data portability dependent on API workarounds.
  • Some users report that the platform lacks certain ATS features expected at scale, prompting migration to more comprehensive solutions like Greenhouse or Lever.
  • The Polish-market focus means limited documentation and community resources in English, creating friction for international HR teams.

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

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

eRecruiter

Candidate

maps to

Bullhorn ATS & CRM

Candidate

1:1
Fully supported

eRecruiter Candidates map directly to Bullhorn Candidate records via the Bullhorn REST API. We use email as the primary dedupe key, falling back to a composite of firstName + lastName + phone when email is absent. Contact info, skills, employment history, and answers to application questions transfer to Bullhorn Candidate fields. eRecruiter CV Parsing output stored as candidate profile fields migrates as Bullhorn custom fields or custom object entries depending on the destination edition. GDPR consent flags transfer to Bullhorn's compliance fields (GDPRConsentDate, GDPRConsentSource) if configured in the destination org.

eRecruiter

Application

maps to

Bullhorn ATS & CRM

JobSubmission

1:many
Fully supported

Each eRecruiter Application row generates one Bullhorn JobSubmission record linking an existing Candidate to an existing JobOrder. The eRecruiter applicationStatus (e.g., applied, screening, interview, rejected, hired) maps to the corresponding Bullhorn JobSubmission status value. If one eRecruiter Candidate has applied to multiple Jobs, each application generates a separate JobSubmission. The mapping requires that both Candidate and JobOrder are migrated and their Bullhorn IDs are resolved before JobSubmission records are inserted. We use the ExternalId from eRecruiter to track the original application reference in a custom field on the JobSubmission.

eRecruiter

Job

maps to

Bullhorn ATS & CRM

JobOrder

1:1
Fully supported

eRecruiter Jobs map to Bullhorn JobOrder records. Title, description (HTML preserved), location (city, region, country), employment type, and department transfer directly. The eRecruiter publication status (published, draft, closed) maps to JobOrder status. JobOrder.address, JobOrder.city, JobOrder.state, and JobOrder.country populate from eRecruiter location fields. If eRecruiter Jobs have associated custom fields, those map to JobOrder custom fields or custom object entries. We flag any eRecruiter Jobs with status 'closed' or 'cancelled' and discuss with the customer whether to migrate them as archived JobOrders or exclude them from the active Bullhorn instance.

eRecruiter

Company

maps to

Bullhorn ATS & CRM

ClientCorporation

1:1
Fully supported

eRecruiter Company entities map to Bullhorn ClientCorporation records. We use the Company Import API endpoint in Bullhorn (which supports ExternalId matching) for bulk company creation and updates. Company name becomes ClientCorporation.name, and the company website domain assists with deduplication. If eRecruiter Companies have associated custom fields, those map to ClientCorporation custom fields within the applicable edition limit. Address and industry data transfers to the corresponding ClientCorporation address and business sector fields.

eRecruiter

User

maps to

Bullhorn ATS & CRM

User

1:1
Fully supported

eRecruiter User records (name, email, role, department) map to Bullhorn User records by email match. Role naming differs between platforms, so we capture the eRecruiter role name in a custom User field for the customer's admin to remap during Bullhorn setup. Users without a matching Bullhorn User account are held in a reconciliation queue; the customer's Bullhorn admin provisions any missing accounts before production migration. Inactive eRecruiter Users may be migrated as inactive Bullhorn Users to preserve historical assignment data.

eRecruiter

Department

maps to

Bullhorn ATS & CRM

Team

lossy
Fully supported

eRecruiter Departments map to Bullhorn Teams. Bullhorn Teams are a grouping mechanism for User membership rather than a hierarchical org chart. We migrate the department name as the Team name and note that team membership assignment is a post-migration admin task because Bullhorn does not automatically associate Users to Teams based on department metadata from an external source.

eRecruiter

Attachment

maps to

Bullhorn ATS & CRM

ContentDocumentLink

1:1
Fully supported

Candidate and Application attachments in eRecruiter are identified by DocumentTypeName, Filename, and the parent record's ID. Bullhorn does not have a standalone document download endpoint without parent context. We transfer binary attachments only after the parent Candidate and JobOrder records are present in Bullhorn, using the Bullhorn REST API to create ContentDocument and ContentDocumentLink records linked to the migrated Candidate or JobSubmission. We flag any eRecruiter attachments where the parent Application or Candidate is absent; those documents are held in a reconciliation report for the customer to resolve before migration resumes.

eRecruiter

Scorecard / Rating

maps to

Bullhorn ATS & CRM

Custom Object or Note

lossy
Fully supported

eRecruiter structured evaluation ratings stored on Applications map to Bullhorn custom object entries on the corresponding JobSubmission. On Front Office Growth and Enterprise editions, up to 10 custom objects with 55 fields each are available. On Bullhorn ATS (2 custom objects) and ATS Growth (none), rating data migrates as structured Note records or Bulletins linked to the JobSubmission. The mapping type depends on the customer's active Bullhorn edition, which we confirm during scoping.

eRecruiter

Custom Field (Candidate)

maps to

Bullhorn ATS & CRM

Custom Field or Custom Object

lossy
Fully supported

eRecruiter custom fields on Candidates map to Bullhorn Candidate custom fields (customObject1-10 or typed custom fields via Admin > Field Mappings). Bullhorn editions determine how many custom objects are available. We pre-create the destination custom field schema during the sandbox phase, deploy it via Bullhorn Support ticket, and validate that all migrated custom field values land in the correct Bullhorn fields. eRecruiter CV Parsing output is treated as custom field data and follows the same mapping path, with field names validated against the destination schema before migration.

eRecruiter

Custom Field (Application)

maps to

Bullhorn ATS & CRM

Custom Field or Custom Object on JobSubmission

lossy
Fully supported

eRecruiter custom fields on Applications map to Bullhorn JobSubmission custom fields or custom object entries. The Bullhorn custom field creation workflow requires an Admin > Field Mappings setup per entity. Bullhorn ATS is limited to 2 custom objects, Front Office Growth/Enterprise supports 10. For migrations requiring more custom objects than the edition supports, we prioritize the highest-impact fields for migration and document the remainder for post-migration admin configuration. Bullhorn Support must create custom objects before data can be written to them via API.

eRecruiter

Location

maps to

Bullhorn ATS & CRM

JobOrder address fields

1:1
Fully supported

eRecruiter location data (city, region, country) on Jobs transfers to Bullhorn JobOrder.city, JobOrder.state, JobOrder.country, and JobOrder.address. If eRecruiter Jobs support multiple location values, each location generates a separate JobOrder with the same title and description, which is the standard Bullhorn pattern for multi-location job postings.

eRecruiter

GDPR / Consent Data

maps to

Bullhorn ATS & CRM

GDPR fields on Candidate

lossy
Fully supported

eRecruiter's native GDPR and RODO compliance features including consent tracking, data retention metadata, and candidate rights management transfer to Bullhorn's GDPR compliance fields on the Candidate record. GDPRConsentDate and GDPRConsentSource populate from eRecruiter consent date and consent type fields. If the customer requires CCPA compliance for U.S. operations, we map eRecruiter consent data to Bullhorn's CCPA fields (HasOptedOutOfEmail, HasOptedOutOfPhone) alongside the GDPR fields.

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.

eRecruiter logo

eRecruiter gotchas

High

No native bulk candidate export endpoint

Medium

Documents require linked parent records

Medium

CV Parsing output requires field mapping

Low

Pricing requires direct sales contact

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

  • eRecruiter Application maps to three Bullhorn entities

    eRecruiter's single Application object (linking Candidate to Job) has no direct Bullhorn equivalent. Bullhorn models this as three separate entities: JobOrder (the job), Candidate (the person), and JobSubmission (the relationship). We resolve this by migrating JobOrders first, then Candidates, then splitting each eRecruiter Application row into a JobSubmission with resolved foreign keys to both the Candidate and JobOrder. The 1:N transformation multiplies the application record count and must be computed before any JobSubmission inserts. Migrations that skip this split and attempt to insert Application data directly into a single Bullhorn object produce orphaned records with broken Candidate-to-Job relationships.

  • No bulk export from eRecruiter requires concurrent API reads

    eRecruiter exposes no bulk CSV or JSON export endpoint. All candidate, application, job, and company data must be read via per-record REST API calls with pagination. For large datasets (thousands of records), this extends extraction timelines and requires concurrent API reads with exponential backoff to stay within eRecruiter's rate limits. We scope the record count during discovery, calibrate chunk sizing based on response times, and run parallel extraction workers to minimize the extraction window. Migration timeline estimates for eRecruiter sources must account for this per-record read overhead, which does not apply to platforms with native bulk export.

  • Bullhorn custom objects require Support ticket setup

    Bullhorn custom objects cannot be created via the standard REST API; they must be requested through Bullhorn Support using the Custom Object Setup Sheet spreadsheet. Bullhorn ATS editions allow 2 custom objects, Front Office Growth/Enterprise allows 10, each with up to 55 fields. For migrations requiring custom object slots beyond the edition limit, we either prioritize the highest-value fields for migration and document the remainder, or recommend an edition upgrade before migration begins. We coordinate the Support ticket during the sandbox phase so that custom object schemas are validated before production data moves.

  • eRecruiter attachments depend on parent record migration order

    Candidate and Application attachments in eRecruiter are identified by DocumentTypeName, Filename, and the parent record's ID. Bullhorn's ContentDocumentLink requires the parent record (Candidate or JobSubmission) to exist before the link can be created. We migrate Candidates and JobOrders first, then JobSubmissions, then run attachment migration as a final phase. Any eRecruiter attachment where the parent record is absent from the migration (e.g., a candidate record excluded by date filter or a deleted application) is logged in a reconciliation report. Orphaned documents without a valid parent reference cannot be reliably transferred to Bullhorn.

  • eRecruiter CV Parsing fields lack a stable schema

    eRecruiter's CV Parsing extracts structured data from resumes into candidate profile fields, but field names and structures vary by CV template and parsing version. We treat all parsed CV fields as custom fields during migration and validate the Bullhorn destination schema before writing. If the customer's eRecruiter CV Parsing configuration uses non-standard field names, we map them to the most semantically equivalent Bullhorn candidate fields (e.g., experience duration to customNumber fields, language proficiency to customText dropdowns) and document the mapping in the reconciliation report for the customer's admin to verify.

Migration approach

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

  1. Discovery and migration scope definition

    We audit the source eRecruiter instance via REST API to enumerate Candidates, Applications, Jobs, Companies, Users, custom field schemas, and attachment counts. We confirm the Bullhorn destination edition (ATS Growth, Bullhorn ATS, or Front Office Growth/Enterprise) because it directly determines the custom object budget available for migration. We discuss GDPR consent migration requirements, decide whether closed or cancelled eRecruiter Jobs migrate as archived JobOrders, and define the record date filters if the customer chooses to exclude historical data. The discovery output is a written migration scope document covering record counts per entity, custom field inventory, and a Bullhorn edition recommendation if the customer's custom object needs exceed the current edition limit.

  2. Schema design and custom object provisioning

    We design the Bullhorn destination schema: Bullhorn Support creates custom objects (up to the edition limit) via the Custom Object Setup Sheet ticket. We configure standard Bullhorn Candidate, JobOrder, JobSubmission, ClientCorporation, and User fields to receive mapped data. For eRecruiter CV Parsing fields and scorecard data that exceed the custom object budget, we agree on a fallback mapping to Bullhorn Note records or fields on the parent entity. The schema design is deployed to a Bullhorn sandbox for validation before any production data moves. We also confirm whether the customer's Bullhorn instance is on Salesforce (requiring SFDC OAuth) or standalone Bullhorn to set the correct API authentication path.

  3. Sandbox migration and reconciliation

    We run a full migration into a Bullhorn sandbox using a representative sample of production data. The customer's recruitment operations lead reviews 30-50 randomly sampled records per entity type against the source eRecruiter data, checking field-level accuracy and verifying that application status values map correctly to Bullhorn JobSubmission status. The sandbox run validates the Application-to-JobSubmission split logic, confirms custom object field visibility, and produces a row-count reconciliation report. Any mapping corrections are made before production migration begins. We also test the attachment migration phase in sandbox to confirm that parent-record dependencies resolve correctly.

  4. Source extraction with concurrent API reads

    We extract all entities from eRecruiter via REST API using concurrent reads with exponential backoff to handle rate-limit responses. We paginate through the API using eRecruiter's documented cursor or offset parameters and log each record's external ID for traceability. Application records are extracted last and stored with their parent Candidate and Job references so the JobSubmission split can be computed as a transformation step before Bullhorn insert. We also extract GDPR consent metadata, CV Parsing field values, and custom field data as part of the candidate record payload. The extraction phase produces structured JSON or CSV files organized by entity type in the migration staging environment.

  5. Transformation and Application split

    We transform eRecruiter data into Bullhorn schema in dependency order: ClientCorporation records first (from eRecruiter Companies), then JobOrder records (from eRecruiter Jobs), then Candidate records, then JobSubmission records (one per eRecruiter Application row, with resolved Candidate and JobOrder IDs). Custom field values are mapped to their Bullhorn field equivalents, with CV Parsing fields handled per the agreed schema. GDPR consent data populates the corresponding Bullhorn compliance fields. We resolve eRecruiter User IDs to Bullhorn User IDs by email match; any unresolved owners go to a reconciliation queue for the customer's admin to provision before production insert. The transformation output is a set of Bullhorn API-ready payloads per entity type.

  6. Production migration in dependency order

    We run production migration into Bullhorn in strict dependency order: ClientCorporation (Companies), JobOrder (Jobs), User validation, Candidate, JobSubmission (split Applications), then attachments (ContentDocument + ContentDocumentLink). Each phase emits a row-count reconciliation report before the next phase begins. We use Bullhorn's REST API with batch insert where supported, and handle Bullhorn API rate limits with exponential backoff. Validation rules and required-field constraints in Bullhorn are temporarily relaxed or extended with a migration-context bypass during insert, then restored by the customer's Bullhorn admin after migration. Attachment migration is the final phase, running only after all parent Candidate and JobSubmission records are confirmed present in Bullhorn.

  7. Cutover, validation, and automation inventory handoff

    We freeze eRecruiter 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 perform a post-migration reconciliation comparing record counts in Bullhorn against the source extraction totals and flag any discrepancy exceeding 0.5 percent for investigation. We deliver a written inventory of every active eRecruiter workflow rule, automation trigger, and workflow condition to the customer's Bullhorn admin, with recommended Bullhorn Automation equivalents for each. We do not rebuild eRecruiter automations as Bullhorn Automation or Herefish workflows inside the migration scope; that is a separate engagement. We support a one-week post-cutover hypercare window for reconciliation issues.

Platform deep dives

Context on both ends of the pair

eRecruiter logo

eRecruiter

Source

Strengths

  • Market-leading ATS in Poland with strong brand recognition among Polish employers and HR teams.
  • Native GDPR and RODO compliance features including consent tracking, data retention, and candidate rights management.
  • REST API with JSON/XML support and an official .NET client library maintained on GitHub.
  • Deep Pracuj.pl integration for job board publishing and candidate sourcing within the Polish market.
  • HR Marketplace ecosystem provides access to complementary HR tools without leaving the platform.

Weaknesses

  • No publicly documented bulk export endpoint — data portability relies on per-record API reads or custom scripting.
  • Reporting does not support job-level segmentation; metrics cannot be filtered by job level or seniority tier.
  • Pricing is opaque — no public tiers, no per-user rate, requiring direct sales contact for every quote.
  • English-language documentation and community resources are limited compared to international ATS platforms.
  • Platform is strongly oriented toward the Polish market, which may limit suitability for pan-European or global HR teams.
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 eRecruiter 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

    eRecruiter: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your eRecruiter to Bullhorn ATS & CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Migrations under 10,000 candidates and 1,000 jobs with no complex custom field schema land between three and five weeks. Migrations with large application histories (over 100,000 Application records generating JobSubmission splits), multiple eRecruiter custom field sets, or high attachment volumes move to six to ten weeks because the Application split transformation, concurrent eRecruiter API extraction, and custom object provisioning coordination with Bullhorn Support all add lead time.

Adjacent paths

Related migrations to explore

Ready when you are

Move from eRecruiter.
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