HRMS migration

Migrate from 100Hires to Bullhorn ATS & CRM

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

100Hires logo

100Hires

Source

Bullhorn ATS & CRM

Destination

Bullhorn ATS & CRM logo

Compatibility

100%

14 of 14

objects map 1:1 between 100Hires and Bullhorn ATS & CRM.

Complexity

BStandard

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from 100Hires to Bullhorn is a migration from a small-team ATS with a generous free tier to an enterprise recruitment CRM built for agencies and staffing firms managing 11 or more users across multiple offices. The data model shift is significant: 100Hires treats Companies as sub-objects under Candidates, while Bullhorn separates ClientCorporation (account), Candidate, and Job into three distinct entities with independent REST endpoints. We resolve this schema dependency during scoping, creating Bullhorn ClientCorporation records first so that Candidate.clientCorporation can be populated before import. 100Hires custom evaluation scorecards, in-flight nurture campaigns, and the career site URL require explicit handling because they do not have direct Bullhorn equivalents. Bullhorn's open data model supports integrations with finance systems and custom reporting stacks, which is a primary driver for teams moving off 100Hires onto Bullhorn for multi-office data sharing. We do not migrate workflows, automation rules, or career site configurations; we deliver a written inventory of these for the customer's Bullhorn admin to rebuild.

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

100Hires logo

100Hires

What's pushing teams away

  • Limited customization for reporting and workflow configurations frustrates teams that need tailored pipelines or advanced analytics beyond default views.
  • Users in G2 reviews mention the color scheme and UI aesthetics feel dated compared to newer ATS competitors with modern design.
  • Teams scaling beyond 100 candidates/month outgrow the free tier quickly, and pricing for higher volumes is opaque without a sales conversation.
  • Some review mentions of occasional performance slowdowns when managing large candidate pools or running multiple simultaneous job campaigns.
  • Absence of a public enterprise pricing tier forces mid-market companies into sales cycles that delay purchasing decisions.

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

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

100Hires

Job

maps to

Bullhorn ATS & CRM

Job

1:1
Fully supported

100Hires Jobs migrate directly to Bullhorn Job records. We preserve job title, description, employment type, pay rate, and status. Bullhorn Job requires a ClientCorporation reference, so we create or look up the ClientCorporation first and attach it before job insert. Job publishing status (active/paused/closed) maps to Bullhorn's status field; any job board distribution settings in 100Hires are documented for manual re-configuration in Bullhorn JobAd Distribution.

100Hires

Candidate

maps to

Bullhorn ATS & CRM

Candidate

1:1
Fully supported

100Hires Candidates map to Bullhorn Candidate records. The primary email is the dedupe key. Bullhorn Candidate requires a clientCorporation reference (unlike 100Hires where Company is a sub-object), so we create a default ClientCorporation placeholder or map to an existing Bullhorn ClientCorporation if a company-level record exists. Candidate name, phone, address, and custom properties migrate as typed fields. We run email-based deduplication before insert to resolve records imported via 100Hires Chrome extension that may duplicate manually entered profiles.

100Hires

Company

maps to

Bullhorn ATS & CRM

ClientCorporation

1:1
Fully supported

100Hires Company records (stored as sub-objects on Candidate) are extracted as distinct rows and mapped to Bullhorn ClientCorporation. We use company name as the primary field and populate address, industry, and phone from 100Hires. ClientCorporation is inserted before Candidate import so that Candidate.clientCorporationID is satisfied at the moment of Candidate insert. If 100Hires candidates share a company without a formal Company record, we aggregate by domain or company name string before insert.

100Hires

Application

maps to

Bullhorn ATS & CRM

CandidateJobOrder (JobSubmission)

1:1
Fully supported

100Hires Application records (linking Candidate to Job with pipeline stage, timestamps, and rejection reasons) map to Bullhorn CandidateJobOrder (JobSubmission). We preserve the full pipeline stage history as CandidateJobOrder status changes with timestamps, and migration reason from 100Hires becomes a custom field on CandidateJobOrder. The CandidateID and JobID references are resolved from the preceding migration phases.

100Hires

Interview

maps to

Bullhorn ATS & CRM

CandidateInterview

1:1
Fully supported

100Hires Interviews (scheduled dates, times, interviewers, interview types, calendar integration status) map to Bullhorn CandidateInterview records linked to the CandidateJobOrder. We preserve interview type, scheduled date and time, interviewer user references (resolved via User mapping), and the G Suite calendar integration status as a custom field noting re-authentication is required in Bullhorn.

100Hires

Evaluation

maps to

Bullhorn ATS & CRM

CandidateReference (or custom object)

1:1
Fully supported

100Hires custom evaluation scorecards (with custom criteria and submitted scores) are exported with their form definitions. Bullhorn's standard reference check feature does not cover general interview evaluations, so we either populate custom fields on CandidateInterview (if criteria count is low) or create a Bullhorn custom object for evaluations with a lookup to Candidate. The scoring rubric (e.g., 1-5 scale vs pass/fail) must be explicitly mapped; we flag any unresolvable custom criteria in the pre-migration audit and document them for Bullhorn admin reconfiguration.

100Hires

Note

maps to

Bullhorn ATS & CRM

Note

1:1
Fully supported

100Hires Notes attached to Candidates or Applications migrate to Bullhorn Note records linked via BULLHORN entity associations. Note body, author (resolved to Bullhorn User by email), and creation timestamp are preserved. Bullhorn Note uses a body field and a commentCount field; we map the original author as a custom field if the Bullhorn Note author attribution behavior differs from the source.

100Hires

Message

maps to

Bullhorn ATS & CRM

Note (with type flag)

1:1
Fully supported

100Hires email conversations (Message objects tied to Candidates or Applications) migrate to Bullhorn Note records with a message-type indicator. Email subject, body, sender, and recipient are preserved. External email threads that originated in Gmail or LinkedIn and were imported into 100Hires via Chrome extension may require thread-context reconciliation; we flag these in the audit report.

100Hires

User

maps to

Bullhorn ATS & CRM

User

1:1
Fully supported

100Hires Users (recruiters and team members) map to Bullhorn User records by email address. Role and permission assignments in 100Hires do not map directly to Bullhorn role-based access control because Bullhorn permissions are structured around Bullhorn-specific permission sets. We document the 100Hires role assignments for the customer's Bullhorn admin to reconfigure permissions post-migration.

100Hires

Attachment

maps to

Bullhorn ATS & CRM

CandidateAttachment (or ContentDocument)

1:1
Fully supported

100Hires Attachments (resumes, cover letters, portfolio files) linked to Candidates or Applications migrate to Bullhorn CandidateAttachment records. We download binary files from 100Hires, preserve filenames and parent record associations, and re-upload to Bullhorn with the appropriate entity reference. Large portfolio files are chunked for re-upload if the Bullhorn attachment API enforces size limits.

100Hires

Taxonomy: Skills

maps to

Bullhorn ATS & CRM

Skill

1:1
Fully supported

100Hires Skills taxonomy is exported as a flat list and mapped to Bullhorn Skill records. Bullhorn Skill is a standard object linked to Candidate via CandidateSkill. We deduplicate skill names during export (normalizing case and removing duplicates) before bulk-inserting into Bullhorn. Skills with no exact match are flagged for admin review.

100Hires

Taxonomy: Departments

maps to

Bullhorn ATS & CRM

Custom field or Category

1:1
Fully supported

100Hires Departments taxonomy maps to a Bullhorn custom picklist field on Job (or to a Category object if the Bullhorn edition supports it). We export department names as distinct values and populate the destination field during job import. If no equivalent exists, we document the department list for Bullhorn admin to configure as a custom field.

100Hires

Taxonomy: Locations

maps to

Bullhorn ATS & CRM

Custom field or address components

1:1
Fully supported

100Hires Locations taxonomy is exported and mapped to Bullhorn Job location fields (city, state, country) or a custom location field. We parse the 100Hires location string and split into structured address components for Bullhorn's address model.

100Hires

Email Template

maps to

Bullhorn ATS & CRM

Bullhorn Email Template

1:1
Fully supported

100Hires Email Templates (body content, subject lines, placeholder tokens) migrate as Bullhorn EmailTemplate records. We export templates as raw text with token syntax preserved and document the placeholder format differences between 100Hires and Bullhorn token syntax so the customer's Bullhorn admin can update template tokens post-migration.

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.

100Hires logo

100Hires gotchas

Medium

Free tier candidate cap resets monthly and limits pipeline stages

Medium

Email nurture campaigns cannot be exported mid-flight

Low

Custom evaluation forms require manual schema alignment

Low

Chrome extension imports may duplicate Candidate records

Low

Career Site public URL is not transferable across accounts

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 separates ClientCorporation from Candidate unlike 100Hires

    100Hires stores Company as a sub-object on Candidate; Bullhorn requires ClientCorporation as an independent entity with its own REST endpoint. Migrating Candidates before ClientCorporation records are present results in foreign key violations and rejected records. We extract 100Hires Company records as a distinct set, create or look up Bullhorn ClientCorporation rows first, then populate Candidate.clientCorporationID before Candidate insert. This dependency ordering is validated in the sandbox phase before production migration begins.

  • Chrome extension imports create duplicate Candidate records in 100Hires

    100Hires Chrome extension imports from LinkedIn, Gmail, and AngelList profiles can duplicate a Candidate if the same person was also added manually. We run a pre-export deduplication pass on Candidate email addresses, merging matching records in 100Hires before extracting. Without this step, duplicate Candidate records inflate migration volume and create confusing duplicate profiles in Bullhorn that require manual merge operations.

  • In-flight nurture campaigns cannot migrate mid-sequence

    100Hires Nurture Campaigns in active sequence cannot be safely migrated because recipient opt-out states and delivery timestamps are tied to 100Hires' email infrastructure. We export campaign definitions and paused campaign state. The customer must confirm email consent records (HasOptedOutOfEmail in Bullhorn) before re-activating sequences. Bullhorn Automation or a third-party sales engagement tool (Salesloft, Outreach) handles cadence rebuild; we deliver a written campaign inventory with step definitions for the admin to reconstruct.

  • Custom evaluation scorecards require manual rubric alignment

    100Hires allows custom evaluation forms per interview type with arbitrary scoring rubrics (1-5 numeric, pass/fail, weighted criteria). Bullhorn's standard CandidateInterview record does not have a native evaluation form structure. We export all submitted evaluation scores with their form definitions, then map to Bullhorn custom fields on CandidateInterview or a custom evaluation object. Unmapped custom criteria are flagged in the pre-migration audit with the original rubric documentation so the Bullhorn admin can configure equivalent fields.

  • 100Hires lacks documented bulk export API for large migrations

    100Hires does not publish detailed REST API documentation covering bulk export endpoints, pagination behavior, or rate limits. We work around this by combining API paginated exports with UI-assisted data extraction where necessary. The customer may need to temporarily activate a paid tier during the export window to lift any candidate cap that would otherwise truncate historical data. We flag any truncation risk during discovery and coordinate a temporary tier activation before export begins.

Migration approach

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

  1. Discovery and export window coordination

    We audit the 100Hires account for total record counts across Jobs, Candidates, Applications, Interviews, Evaluations, Notes, Attachments, and taxonomy objects. We confirm the candidate cap status (free tier limit of 100/month) and arrange a temporary paid tier activation to lift the cap for the export window. We identify any Chrome-extension-imported candidates that may have duplicates and document the 100Hires API access credentials. The discovery output is a written migration scope with record counts per object, a deduplication report, and a confirmed export window date.

  2. ClientCorporation extraction and deduplication

    We extract 100Hires Company records as distinct rows from Candidate sub-objects, normalizing company name strings and deduplicating by exact name match. We identify shared companies across candidates and aggregate to a single ClientCorporation per unique company name. This phase must complete before Candidate export begins because Bullhorn Candidate requires a valid ClientCorporationID at insert time.

  3. Bullhorn schema pre-configuration

    We configure the Bullhorn destination: custom fields on Candidate and CandidateJobOrder matching 100Hires custom properties, custom picklist values for Department and Location, custom evaluation object (if required), and taxonomy Skill records. We deploy these to a Bullhorn Sandbox org for validation before any data moves. Bullhorn User provisioning is confirmed by email match against 100Hires Users; any unmatched 100Hires owners go to a reconciliation queue for admin provisioning.

  4. Sandbox migration and reconciliation

    We run a full migration into Bullhorn Sandbox using production data volumes. The customer's Bullhorn admin reviews record counts, spot-checks 25-50 Candidate and Application records against the 100Hires source, and validates that ClientCorporation links are correct. Any missing custom field mappings, taxonomy gaps, or evaluation schema issues are corrected in this phase. Sandbox sign-off gates production migration.

  5. Production migration in dependency order

    We run production migration in strict dependency order: ClientCorporation records first, then Candidates (with ClientCorporationID resolved), Jobs (with ClientCorporationID resolved), CandidateJobOrder (Applications) with CandidateID and JobID resolved, CandidateInterview records, Evaluation data mapped to custom fields, Notes, Attachments, Skills via Bullhorn bulk insert, and Email Templates last. Each phase emits a row-count reconciliation report before the next phase begins. The Bullhorn Bulk API handles large record batches with rate-limit handling and retry logic.

  6. Cutover, validation, and automation rebuild handoff

    We freeze 100Hires writes during cutover, run a final delta migration for any records modified during the migration window, then enable Bullhorn as the system of record. We deliver the Nurture Campaign inventory document, the Evaluation Form rubric mapping notes, and the workflow automation inventory for Bullhorn admin to rebuild using Bullhorn Automation. We support a one-week hypercare window for reconciliation issues. We do not rebuild 100Hires automations as Bullhorn Automation inside the migration scope; that is a separate engagement.

Platform deep dives

Context on both ends of the pair

100Hires logo

100Hires

Source

Strengths

  • Free tier with no credit card required and generous candidate limits for small teams to get started.
  • G Suite integration for calendar-based interview scheduling without leaving the platform.
  • Job board auto-posting to LinkedIn, ZipRecruiter, and Indeed with one click.
  • Chrome extension enables direct resume import from LinkedIn, Gmail, and AngelList profiles.
  • AI screening and candidate matching reduce manual resume review time for active job reqs.

Weaknesses

  • Limited customization for reporting, pipelines, and workflow configurations beyond defaults.
  • UI aesthetics and color options flagged as dated by multiple reviewers on G2 and Capterra.
  • Advanced AI features gated behind the Advanced paid tier with opaque pricing.
  • Rate limits on free tier: 5 emails/day, 3 interviews/day cap restrict migration scope.
  • No public REST API documentation detail on bulk export endpoints or pagination behavior.
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 100Hires and Bullhorn ATS & CRM.

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

    All 7 core objects map 1:1 between 100Hires 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

    100Hires: Not publicly documented on the official API reference page.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your 100Hires 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 four and six weeks for accounts under 15,000 Candidates and 500 Jobs with no custom evaluation forms. Migrations with multi-office consolidation, large interview histories, custom evaluation scorecards requiring rubric re-alignment, or in-flight nurture campaigns requiring consent-based re-activation move to ten to sixteen weeks because of ClientCorporation dependency resolution, taxonomy mapping, and evaluation form re-configuration.

Adjacent paths

Related migrations to explore

Ready when you are

Move from 100Hires.
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